ベッドにはテンキー
qiita.com
おうちハック Advent Calendar 2016 10日目です。
言いたいこと
ワイヤレステンキーをリモコンとして配置しておくと便利
背景
なるべく堕落した環境を求めてたまにいろいろ部屋をいじるのがちょっとした趣味の一つみたいになっている。
その一つとして、部屋の主要な装置はキーボードに集約して手元で一通り動かせるようにしたりした。
ホットキーから叩けるのでキーボードで完結しており結構便利に使えている。
ただ、いくら快適にしても慣れるとさらに上を求めたくなるもので、「ベッドを後傾した状態でキーボードまで手を伸ばすのがめんどい」とか「手を机の高さまで上げるのがだるい」「手も布団から出たくない」といった課題が無限に出てくる。
こういう状態だとキーボードまでがちょっと遠い。(届きはするけど)
装置
そういうわけで、ベッド用に操作パネルを付けた。
キーボード、マウス、ゲームパッド、Bluetoothリモコン、学習リモコン、端末からのブラウザ操作、車載用のメディアコントローラ、などいろいろ試した結果、最終的にテンキーがベストだった。
- 薄くて省スペース
- 電池持ちに優れる
- 十分なボタン数(16キー前後)
- 単純なキーの集合なので設定が楽
- 配置が分かりやすく手元見ずに操作可
あたりが主な理由になる。
とりあえず無線のテンキーであればなんでもよい。
機能
以下を割り当てている。
- 方向キー(上下左右)
- Space/Enter
- 介護ベッド起こす/倒す/足元調整
- 電動デスク高さ上げる/下げる
- エアコン起動/停止
- 起動マクロ/停止マクロ
起動マクロは、照明点灯+液晶電源ON+エアコン起動+介護ベッドの座位への変形+電動デスクの高さ調整 をワンボタンで行えるようにしている。(停止マクロはその逆)
マクロの実行自体も基本的に自動化はしていて、外出を検出した場合(wifiで判定)と一定時間放置した場合には停止マクロが、帰宅を検出した場合と平日の指定時間に起動マクロがそれぞれ勝手に動くようにはしている。
ただこれでカバーできない場合があって、起動マクロは休日に目覚めた時、停止マクロは寝る時にそれぞれ手動で呼ぶので、ベッド横から即座に叩けるようになることで結構便利になる。
方向キーとSpaceキーは地味ながら万能で、特に動画プレイヤーの操作や電子書籍のページ送りに役立つ。
設定
機能のアサインにはAutohotkeyを使っている。
テンキーのボタンとしてのキーコードをそれぞれ持っているので、そのまま単に割り当てるだけで設定できた。
Numpad7::bedup() Numpad8::bedlegdown() Numpad9::deskstand() Numpad4::beddown() Numpad5::Up Numpad6::desksit() ...
個々の操作については以下に書いた
配置
サイドレールに取り付けると腕の動きが少なくて済むのでよかった。
直接テープで貼ったり、3Dプリンタでレール取り付け用パーツを作ってみたりもしたが、テンキー背面にマグネット(100均で売ってる普通の磁石)を貼る方法に落ち着いた。
単純にマグネット2つを雑に背面にテープ止めするだけ。
電子機器に磁石くっつけることに少し抵抗があったものの、実際はこの程度では(今のところ)特に影響は無かった。
磁気をメインで使ってるようなものでなければ割と大丈夫なのかもしれない。
マグネット式の良い所は、ちゃんと固定ができつつ移動や着脱も容易なことだと思う。
ベッド横に付けた時点で肘から手前動かさなくても届くようになるが、さらにレールから分離し、布団の中に手突っ込んでの操作も手軽に出来るようになってしまうので、もうワンランク上(下?)の駄目な感じになれる。
マグネットの便利さに目覚めてしまったので、MicroUSBの充電ケーブルや端末スタンドもマグネットにした。
電気毛布のリモコンはもともと手元にあり、集約する意味も薄いのでそのまま使っている。
テンキーのリモコンとしての利用自体は五年前くらいに一度やっていたのだけど、介護ベッド導入で普通のキーボード使えるようになり、テンキーはしばらく押入れ行きとなっていた。
多少の機能の拡張や配置方法の工夫はあるものの、試行錯誤の末結局もとに戻ってきてしまった形になる。変に手の込んだものより結局地味なやつのほうが良いことは結構よくある気がする。
おわり
部屋いじり結構楽しいのでもっとみんなもやるといいです。
関連
使っているもの
マイクロソフト ブルートゥース テンキー Bluetooth Number Pad CYD-00004
- 発売日: 2009/10/16
- メディア: Personal Computers
HKW microUSB マグネットケーブル スマートタイプ Galaxy s5 s6 edge Xperia z4 スマートフォン タブレット対応 (ゴールド)
- メディア: Wireless Phone Accessory
ねんどろいど情報処理部の設計と構築 (ゆゆ式 Advent Calendar 2016)
ゆゆ式 Advent Calendar 2016 四日目。
今日のテーマ:フィギュア
ゆゆ式のフィギュアが一向に出ないので世界の損失が発生している。
知っている限りでは、グラフィグやガシャポンを除くと、立体物は今のところ以下の一種類しかない。
なぜか制服ではないという点はとりあえず脇に置いておくとしても、3人揃わないのは片手落ちも良いところだと思う。
水着にしてもこんな感じのをもう二人分何とかならなかったんだろうか。
無ければ作るほかないので作ることにした。
方法
しかし、私にはせいぜいガンプラ素組みするくらいの技術しかなくこの方面に完全に素人であるため、作るにあたって超えないといけないハードルは想像以上に多そうだった。自力で全部作るのは到底一朝一夕には出来そうにもない。
手間を掛けて邪神を生み出しても仕方ないし、せっかく作るならある程度ちゃんとした物が欲しいので、要求レベルが低くかつそこそこの結果が見込めるような、いー感じシステムを探した。
最終的に、ねんどろいどシリーズの既存パーツの組み合わせで作る方法をとることにした。
- デフォルメされているのでディティールのごまかしが効く
- 規格が統一されておりシリーズ間でパーツの交換ができる
- かなりの数(600種類以上)が既に売られている
- 改造例も豊富に見つかる
といった具合に、この方式は都合のよい条件がいろいろと揃っている。
ちょうどこういうコマもあることだし。
技術の不足は手段でカバーしないといけない。手を入れれば入れるほどクオリティが下がることは技術的に確実なので、修正箇所と工数は最小限に抑え、難しい工程はなるべく回避する方針とした。
設計
既存の製品全種類を片っ端から探した結果、幸いにもそこそこ近い材料が全員分揃っていた。パーツの使い回しなども考慮し以下を選んだ。
数カ所の差分修正と塗装だけで作れる。
素材 | 削除 | 追加 | |
---|---|---|---|
制服 | 橘万里花 | タイを一本に | - |
唯 | 橘万里花 | 髪飾り おさげ先端 |
髪のハネ(兼:髪飾りの穴埋め) おさげ断面の補完 |
縁 | 山田葵 | 前髪中央付近カット | - |
ゆずこ | 美樹さやか | 前髪の出っ張り | アホ毛 |
体はネクタイ部分をどうにか処理出来る腕があるなら他の制服のもので済みそうな気がする。
また、万里花はプレミアが付いていて定価より高いので、技術的に回避できるなら他の素体を使ったほうがよさそう。逆に山田とさやかは投げ売りされてるので1000円台で手に入る。
ちなみに、一通り作り終わった後で知ったんだけど、ねんどろいどとは別にキューポッシュというものがあったらしい。等身が若干高く可動域も広くなるのが違いで、頭部にはねんどろいどのパーツも使えるとのこと。
第六駆逐隊のパーツがぴったり使えそうなので、万里花でなくこちらを使ったほうが良かったかもしれない。
道具
色々道具を用意したが大体は結果的にあんまり役に立たなかった。結局必要だったのはこんなもんだった。
下四つだけ追加で買った。
成形
特徴だけ抑えて大規模な変更は回避する。
不要箇所をカットし、追加箇所にエポパテを盛った。そのままではパテと素材の継ぎ目の線が目立つので、しばらく放置して固ってからヤスリをかけて処理した。
ゆずこのアホ毛は最初パテで自力で作ったが、完成度がいまいちだったので既存のパーツを移植することにした。三次元的に全方向から破綻のないアホ毛の造形って結構難しい。
移植元は末永みらいを使った。それっぽい形状であることに加えて付属の顔パーツの汎用性も高く、縁用にぴったりのパーツも含んでいるので都合が良かった。これも中古屋で安く買えた。
体の塗装
筆、皿、塗料、スプーンが揃った筆塗りスターターセット的なものを買ったんだけど、上手く使いこなせなかったので最終的には使うのを止めた。
結局、腕に合わせてレベルを下げ、ペン(ガンダムマーカー)で塗ることにした。
以下を塗り替えた。
変更元 | 変更後 | 追加 | |
---|---|---|---|
襟内側 | 黒 | 白 | - |
襟 | 黒 | 青 | 外周に白線 |
袖 | 黒 | 青 | 中央に白線 |
スカート | 黒 | 青 | - |
ネクタイ結び目 | 黒 | 黄 | - |
靴下(ゆずこ以外) | 白 | 黒 | - |
腿(縁のみ) | 肌 | 黒 | - |
襟と袖には白線を入れる必要があるが、1mm程度の猶予しかないので塗るのはかなり難易度が高かった。シール印刷用の用紙を使い、何も印刷せずに細く切って貼ることで回避した。
ちなみに、山田の腕を使うことで夏服っぽくできる。(塗装不要)
髪の塗装
縁は切断面だけ塗装した。全体をもう少し明るめにしても良さそうな気もしたが、許容範囲の配色でもあったので余計な手を入れるのは止めておいた。唯とゆずこはベースが茶色と青色なのですべて塗り直す必要があった。
まず筆で塗ってみたが出来がイマイチだった。こういうのを綺麗に作るには、どうやらエアブラシをつかってグラデーションをかけるのが定石らしい。しかし、使いこなすのに慣れが要る(らしい)上に場所的にも機材的にも導入のハードルが高そうだったので、スプレー塗りで妥協した。
スプレーは以下の色を使った。パテの色とベースの色で差分があるので、まず一旦全体を白く塗ってから目的の色を塗った。
色 | |
---|---|
唯 | タミヤ マスタードイエロー |
縁 | - |
ゆずこ | Mrカラー キャラクターフレッシュ2 |
スプレーに切り替えたことで筆よりは大分ましにはなった。ただ、色がのっぺりしていたり表面が若干凸凹になってしまっていたりと、完璧な出来にはまだだいぶ遠く、改善の余地がある。素直にエアブラシ買ったほうがよさそう。
とはいえ、近寄ってちゃんと見ないとあんまり分からないレベルにはなっているので、これで妥協する。
顔の選択
以上でとりあえず完成。
顔パーツについては目を開けてないパーツなら何でも使えるし、万里花を唯に、さやかを縁に、山田か万里花をゆずこに入れ替えればそれっぽい感じになる。
...と、当初はそれで終わらせるつもりだったのだけれど、せっかくなのでより合うパーツをやっぱり探すことにした。
目を開けているパーツを使う場合は色と形を考慮しないとならない。しかし自力で描けるような腕もない。
仕方ないのでこれも既存のラインナップを片っ端から探した。結果そこそこ近いものにたどり着いた。
顔パーツ | |
---|---|
唯 | ヒナギク |
縁 | みゆき |
ゆずこ | まどか |
古いモデルでは顔パーツの形状が若干違うようで、みゆきは一部をニッパーでカットしてやらないとはまってくれなかった。
これも全部かなり安く手に入った。人気や出荷量で変わってくるんだろうけど、ねんどろいどの値段は高いか安いかの両極端な気がする。結局、定価以上払ったパーツは万里花くらいだった。
ヤフオクで数百円でパーツ単品売りされていることもあるので、見つかればそちらで入手したほうが良さそう。まどかフェイスは300円くらいで単品で買えた。
今日のまとめ
ねんどろいどのフォーマットは流石なかなか優秀で、そこそこの品質のものを割と簡単な作業で作る事ができた。存在するパーツのバリエーションも膨大なので、体パーツさえある程度流用できるデザインのキャラであれば、同様に大体何でも作れそうな気がする。
跳べなそうなハードルはあらかじめ全部蹴って倒した甲斐もあって、めんどうくさいという魔物の出現は塗装の時くらいしかなかった。最初に構成が決まればもうほぼ完成したようなものだったし、一から全部自力で三人分つくる手間を考えれば0みたいな労力だと思う。
これを部屋に置くだけで幸せ成分が得られ、運気は好転し年収が増え風邪は治り心が豊かになるのでおすすめです。
参考
【艦これ】ねんぷち翔鶴・メイキングその1 - かたまり(キャッシュ)
元ページ
※作っている時は見れていたが今は非公開になってしまった模様
ねんどろいど野々原ゆずこちゃん出来ました
— じょぶじゅん。 (@JoveJun) 2016年2月18日
その1 pic.twitter.com/KRqXtUkgD1
髪:さやか、体:小咲 っぽい
なんだかんだありましたが、ねんどろいど改造野々原ゆずこ(らしきもの)と丈槍由紀(らしきもの)が完成しました。 pic.twitter.com/ToCijxbFJN
— ゆるJALサンシャイン!!@メーデー民 (@yryrow) 2016年1月9日
全部自作?
関連
使った材料
素体
ねんどろいど ニセコイ 橘万里花 ノンスケール ABS&ATBC-PVC製 塗装済み可動フィギュア
- 発売日: 2015/05/28
- メディア: おもちゃ&ホビー
WORKING!! ねんどろいど 山田葵 (ノンスケール ABS&PVC製塗装済み可動フィギュア)
- 発売日: 2012/07/31
- メディア: おもちゃ&ホビー
魔法少女まどか☆マギカ ねんどろいど美樹さやか (ノンスケール ABS&PVC塗装済み可動フィギュア)
- 発売日: 2012/04/24
- メディア: おもちゃ&ホビー
道具
セメダイン 穴うめ・成形 エポキシパテ プラ用 45g ブリスター HC-117
- メディア: Tools & Hardware
GSIクレオス Mr.カラー スプレー S112 キャラクターフレッシュ2
- メディア: おもちゃ&ホビー
タミヤ ポリカーボネートスプレー No.56 PS-56 マスタードイエロー 86056
- 発売日: 2008/09/17
- メディア: おもちゃ&ホビー
GSIクレオス ガンダムマーカー GMS105 ベーシックセット
- 発売日: 1999/11/19
- メディア: おもちゃ&ホビー
顔入手
カルチャージャパン ねんどろいど 末永みらい (ノンスケール ABS&PVC塗装済み可動フィギュア)
- 発売日: 2013/01/12
- メディア: 付属品
魔法少女まどか☆マギカ ねんどろいど 鹿目まどか (ノンスケール ABS&PVC塗装済み可動フィギュア)
- 発売日: 2011/08/27
- メディア: おもちゃ&ホビー
ハヤテのごとく!! ねんどろいど 桂ヒナギク (ABS&PVC塗装済み可動フィギュア)
- 発売日: 2010/12/28
- メディア: おもちゃ&ホビー
ねんどろいど TVアニメ らき☆すた 高良みゆき 通常Ver (ノンスケールABS/PVC塗装済み可動フィギュア)
- 発売日: 2009/03/12
- メディア: おもちゃ&ホビー
PC TV with nasneとニコニコ実況の時刻合わせを半自動化する
背景
TV録画にnasneを使っている。
PCからはPC TV with nasneで視聴しているが、torneにあるような実況連動機能がない。
素直にtorneを使えば済むことではあるのだけれど、コントローラに持ち替え、映像出力を切り替え、PSとtorneの起動を待ち...という動作が都度発生するのも面倒に思える。
Androidエミュレータでtorne mobileを動かすことも考えたが、どれもnasneの認識がうまくいかなかった。
課題
現実的な方法としては、ニコニコ実況アプリ起動して再生画面に重ねる方法がある。
しかし、過去ログを参照する場合は、以下のようなフォームで6箇所も手動で正しい値を都度合わせる必要があり、時刻合わせがかなり面倒だった。これを常用しようとは思えない。
過去ログはおまけ機能であって基本はリアルタイムで使えということなのかもしれないけど、番組表から選択するとか時刻ピッカー的な物付けるとかもうちょっと何とかならなかったんだろうか。
ニコニコ実況の仕様
まずフォームを調べてみた。
過去ログ呼び出しは上記のフォームから時刻指定してpostすると、以下のURLスキームが返され、それをローカルで叩くことで実況アプリが起動するようだった。わかりやすい。
nicojk:jk【チャンネルID】&start_time=【指定時刻のunix時間】&end_time=【指定時刻+1h後のunix時間】 例 nicojk:jk7&start_time=1477326840&end_time=1477328640
nasneのapi
nasneにはapiが用意されており各種情報が拾えるようになっているらしい。仕様自体は非公開ではあるものの、自力で調べた人達のおかげで主要なところは判明してるようだ。
参考
github.com
再生中情報
"/status/dtcpipClientListGet" を叩いたら再生中の動画IDが拾えた。なお何も再生していない場合は何も帰ってこない。
$ curl -s "http://192.168.1.2:64210/status/dtcpipClientListGet" | jq -M '.' { "errorcode": 0, "number": 1, "client": [ { "id": 871, "macAddr": "BC:5F:F4:xx:xx:xx", "ipAddr": "192.168.1.1", "name": "PC TV Plus", "purpose": 2, "content": { "id": "14772275870000000213" ←再生中の動画ID }, "encryptType": 1 } ] }
動画情報
"/recorded/titleListGet"から録画済みのデータが参照できた。上記で取得したIDで検索すると再生中の各種動画情報が得られた。
$ curl -s 'http://192.168.1.2:64220/recorded/titleListGet?searchCriteria=0&filter=0&startingIndex=0&requestedCount=0&sortCriteria=0&withDescriptionLong=0&withUserData=0' \ | jq -M '.item[] | select(.id == "14772275870000000213" )' { "id": "14772275870000000213", "title": "SHOW BY ROCK!!#", "description": "#4「ドキィッ!?がーるずだらけのふわっふわ水泳大会!ですぞ?ポ(以下略)」", "startDateTime": "2016-10-23T21:59:47+09:00", ←使う箇所1 "duration": 1696, "conditionId": "w7", "quality": 101, "channelName": "TOKYO MX1", ←使う箇所2 "channelNumber": 90910, "broadcastingType": 2, "serviceId": 23608, "eventId": 51728, "genre": [ { "id": 28927, "type": 2 } ], "audioInfo": [ { "componentTag": 16, "componentType": 3 } ], "captionInfo": 0, "componentType": 179, "protectFlag": 0, "newFlag": 0, "playCount": 5, "creatorId": 133072, "storageId": 0, "recordingFlag": 0, "copyControl": 1, "copyCount": 10, "parentalRating": 0, "resumePosition": 278212, "containerSize": { "main": 1479377904, "mobile": 387858480, "thumb": 19703308 }, "bitrateMobile": 0 }
完成
channelNameとstartDateTimeが動画情報に有るので、抽出してこれを元に整形すれば呼び出し用のURLスキームが作れる。
#!/bin/bash NASNEADDR=192.168.1.2 #再生中の動画ID取得 CONTENTID=\ `curl -s "http://$NASNEADDR:64210/status/dtcpipClientListGet" \ | jq '.client[0].content.id'` if [[ "$CONTENTID" == "null" ]];then exit 1 fi #動画情報取得 CONTENTINFO=\ `curl -s "http://$NASNEADDR:64220/recorded/titleListGet?searchCriteria=0&filter=0&startingIndex=0&requestedCount=0&sortCriteria=0&withDescriptionLong=0&withUserData=0" \ | jq -M ".item[] | select(.id == $CONTENTID )" ` CHANNELNAME=`echo $CONTENTINFO | jq -r -M '.channelName'` # IDに変換 ( ref: http://jk.nicovideo.jp/rankings ) case "$CHANNELNAME" in *NHK* ) CHANNELID=1;; *Eテレ* ) CHANNELID=2;; *日テレ* ) CHANNELID=4;; *ビ朝日* ) CHANNELID=5;; *TBS* ) CHANNELID=6;; *ビ東京* ) CHANNELID=7;; *フジテ* ) CHANNELID=8;; *MX* ) CHANNELID=9;; *テレ玉* ) CHANNELID=10;; *TVK* ) CHANNELID=11;; *チバテ* ) CHANNELID=12;; esac # 時刻変換 DATETIME=`echo $CONTENTINFO | jq -r -M '.startDateTime'` STARTTIME=`date -d "$DATETIME" +%s` ENDTIME=`date -d "$DATETIME 1 hour" +%s` # URLスキーム生成 echo "nicojk:jk${CHANNELID}&start_time=${STARTTIME}&end_time=${ENDTIME}"
Windowsから叩けるようにしたら完成。
バッククォートが使えないことはbatの最低ポイントの一つであると思う。
@echo off cd %~dp0 set ADDR=192.168.xx.yy set KEY=ubuntu_privatekey.ppk set USR=root for /f %%a in ('ssh %USR%@%ADDR% -i %KEY% nasne2nico.sh') do start %%a
PC TV~ で動画を再生しbatを実行すると、時刻合わせされたニコニコ実況アプリが起動する。
制約
- batは再生開始後に手動で叩く必要がある (ここ自動化するのは結構手間かかりそうなので妥協する)
- 開始時刻しか拾えないのでリジュームは使えない
- 停止や早送り巻き戻しもずれるので使えない
おわり
公式に機能をつけてくれ頼む
上下昇降デスクをホットキーから操作する
前回の続き。
経緯
オカムラの電動デスクを使っており、それと互換性のあるLinakのUSBケーブルを入手してPCと連携した。
そこまでは良かったんだけれど、付属のツールが自分の用途と微妙に合っておらず、キーボード操作できない点と、必要もないアラートを定期的にポップアップしてくるのが不満だった。
導入
メインがWin機なので当然そのままは使えない。
そのためだけのraspiを買ったりはしたくなかったので、Win上に最小構成の制御用のUbuntu仮想マシンを立てた。
ハイパーバイザのUSBデバイス共有で「USB Control Link」を共有すると、ゲスト上で制御用USBケーブルが認識できた。
ツールの導入は、ソースと依存パッケージを単純に引っ張ってくるだけで使えた。
apt-get install g++ libusb-1.0-0-dev
git clone https://github.com/ranma1988/usb2lin06-HID-in-linux-for-LINAK-Desk-Control-Cable.git
cd usb2lin06-HID-in-linux-for-LINAK-Desk-Control-Cable
make
相対位置調整できるようにする
高さの数値を引数に渡すと、その高さまで調整してくれる。
./example-moveTo 6000
これだけでかなり便利ではあるのだけれど、絶対位置での指定しかできないので、相対位置の調整も出来るようにした。
adjust.sh
#!/bin/sh cd `dirname $0` height=`./example-getStatus 1 | sed -e "s/^.*height: *//g" | sed -e "s/ = .*//g"` ./example-moveTo `expr $height + $1`
Winから叩けるようにする
操作のたびいちいちゲストに入ってられないので、batを作ってWinから一発で叩けるようにした。
move.bat
@echo off cd %~dp0 set ADDR=192.168.254.128 set KEY=ubuntu_privatekey.ppk set USR=root ssh %USR%@%ADDR% -i %KEY% /root/usb2lin06-HID-in-linux-for-LINAK-Desk-Control-Cable/example-moveTo %1
adjust.bat
@echo off cd %~dp0 set ADDR=192.168.254.128 set KEY=ubuntu_privatekey.ppk set USR=root ssh %USR%@%ADDR% -i %KEY% /root/usb2lin06-HID-in-linux-for-LINAK-Desk-Control-Cable/adjust.sh %1
ホットキー化する
キーボードから一発で呼べるように、Autohotkeyに組み込んだら完成。
それぞれの値は適当に調整して決め打ちしている。
desksit(){ run,D:\datas\program\swift\move.bat 0 } deskstand(){ run,D:\datas\program\swift\move.bat 4000 } deskmax(){ run,D:\datas\program\swift\move.bat 10000 } deskup(){ run,D:\datas\program\swift\adjust.bat 1000 } deskdown(){ run,D:\datas\program\swift\adjust.bat -1000 } >+Delete::deskmax() >+PGUP::deskstand() >+PGDN::desksit() >^PGUP::deskup() >^PGDN::deskdown()
おわり
物理ボタンでの操作や付属のソフトウェアでの操作時は、指定した高さになるまでボタンを押し続ける必要があった。
移動し切るまで押したまま待つ必要も無くなり、一回呼べば勝手に指定位置まで動かしてくれるので、ちょっと楽になった。
これでデスクもベッドなどと同様に、ホットキーで一発で操作できるようになったので満足した。
関連
上下昇降デスクをPCと連携する (オカムラ swift + USB2LIN06 + LINAK Desk Control)
デスクに岡村製作所の電動昇降デスクのswiftを使っている。
周りの家電の操作をなるべくPCに集約するようにしており、過去に介護ベッドなんかはUSBリレーに接続してPCから制御できるようにしたりもした。
swiftも同様の手段をとりたい所だったんだけれど、コントローラの破壊が必要そうなのと、予備の入手が出来ないので保留としていた。
博報堂とオカムラが制御用のアプリのリリースを2016春に予定している、というリリースも昨年末にあったが、一向に出る気配がない。
www.i-studio.co.jp
待ってても仕方なさそうだったので、どうにかする手段を探した。
swiftの構成
まず部品を調べた。swiftは以下のパーツで構成されていた。
- 足
- コントローラ
- 操作パネル
ほぼ全部LINAK社のパーツであり、オカムラで作っているのはどうも天板だけのように見える。
制御用オプション
LINAK社のデスク用製品は、Desklineというシリーズとして各種パーツが組み替えられる仕様になっているらしい。
コントローラを制御する手段として、ボタン式の操作パネルとは別に、USB接続やBluetooth接続にも対応した製品が存在していた。
購入
LINAKのパーツ群は基本的に個人向けに単品で売られているものではなさそうだった。
単品売りしておりかつ日本への発送の出来る店はないか探しまわった結果、一件だけ見つかった。
オーストラリアの健康器具ショップらしい。
商品68ドル+送料27ドルの計$95で買えた。
オーストラリアからの発送で、注文から6日で届いた。結構速いと思う。
商品
ビニール袋詰めだけされた状態で小さめの箱に詰まって単品で届いた。マニュアル類も入ってない。
物理コントローラとの共存
コントロールボックスには操作パネル接続ポートが2ポート付いているので、既存の操作パネルを殺さずに両方接続できた。
デスクの高さ情報はてっきり各操作パネル自体が保持しているんだろうと予想していたのだけれど、コントロールボックスがちゃんと情報を持っているようだ。物理ボタンで操作した際にちゃんとUSB側の高さ情報も連動して変わってくれた。(もちろん逆の場合も連動する)
LINAK Desk Control Software
制御用のソフトウェアが公式サイトからダウンロードできる。
デスクの上げ下げとプリセット3つの操作が出来る。日本語表示に対応していてちょっと驚いた。
おまけ機能として(もしかしてこっちがメインなのかもしれないけど)、高さ変更をおすすめするアラートを出してくれる機能が付いている。
時間もしくは消費カロリーを設定すると、それに応じて適当なタイミングでアラートダイアログが表示される。
履歴も取ってるらしい。
ただ、アラートは別に必要ないので正直邪魔だと思っている。
制御ソフトの制御
学習リモコンやベッド制御の操作は、Autohotkeyを使用してキーボードショートカットにしていた。
これも同じ要領で簡単に出来るだろうと思っていたのだけれど、ウィンドウの作りが特殊なようで、controlclickで操作ボタンに直接メッセージをうまいこと送ることが出来なかった。
仕方ないので、ウィンドウをアクティブにして、ボタンの座標でマウスをクリックさせるという雑すぎる力技でとりあえず諦めた。
;デスク操作共通 deskmove(x,y){ winactivate, LINAK Desk Control Click, L, D, %x%, %y% Sleep 7000 Click, L, U } ;座位プリセット desksit(){ deskmove(80,370) } ;立位プリセット deskstand(){ deskmove(190,370) } ;プリセット3(最大高設定) deskmax(){ deskmove(300,370) }
他の人達によるその他の手段について
操作パネルへの接続はよくあるRJ45の三芯で、UP/DOWN/GNDの単純なものらしいので自力で作れるらしい。ただ、だとすると高さ情報はどうやってやり取りしてるのか謎がある。
blog.nortal.com
Linux用の制御ソフトを自作した人も見つかった。
github.com
おわり
そもそも机をPCからいじれるようにして何が嬉しいのかかというと、ベッドからの利用時に机まで手をのばす必要がなくなることにある。
机の前に居る時は物理ボタン押せば済むのだけど、ベッド側から利用する場合、机の高さを調整するのにボタンまで手をのばす必要があった。
PCから制御出来るようになったので、上のような状態を切り替える際に体を起こす必要がなくなった。
ただ、制御ソフトの制御のやり方にかなりの妥協があるので、何かしら改善策が思いついたらどうにかしたい。
※追記
どうにかした。
関連
3Dプリンタでフィギュア台座を省スペースに圧縮する
まとめ
やたらかさばるフィギュア台は3Dプリンタで簡単に代替品を自作できるので置き換えるとよい
背景
「フィギュアは一体買うと自動的に増える」という説は本当だった。部屋にはあまり物を増やしたくなかったはずだったのに、一体目買ってからあっという間に壁が埋まった。
余計な家具を部屋に増やすことまではしたくなかったので、壁掛けの棚を使っている。ただ、各棚のスペースがあまり広くないため、配置には結構な制約があった。特に台座が本体以上にやたら面積を食うせいで、棚からはみ出したりそもそも置けなかったりしていた。
3Dプリンタ買った
CADの経験もないし大した目的もなかったんだけれど、Amazonアウトレットで3万だったので、多少高めのおもちゃ感覚で無計画にポチってしまった。
基本的な使い方は半日もあればすぐ覚えられたし、実用的な小物も作れたりして割と楽しく遊べている。
(そういえば一時期やたら持ち上げられてたこともあったけど最近めっきり聞かなくなったね3Dプリンタの話)
フィギュア台座の多くは単に板の上に数本の棒が立っているだけの物体だった。自分のような素人でも十分作れる単純な作りだったので試しに自作してみたところ、結果的に割と上手くいった。
誰か他の人のやり方を真似て作ろうとしたのだけど、3Dプリンタの例は見つからなかったので記しておくことにします。
結果
はみ出さずちゃんと綺麗に収まるようになった。やったね。
1. 軸の位置を決める
実物の寸法を定規で測り、各ポイント間の距離と軸の直径をスケッチに起こす。
角度は測らなくても距離関係だけ決めれば上手いこと調整してくれるので、かなり楽に書けた。
2. サンプルを作る
安物だからか3Dプリンタの精度はあまり高くない。実際の寸法は結構平気で数字とずれる。測り方も雑にやっているので、1発ではまず成功しない。
最初は一気に完成させようとしてフィラメントと時間を結構無駄にしてしまったが無謀だった。
軸を伸ばし薄く土台をつけて一回プリントする。10分くらいで完成する。
3. 微調整する
サンプルを本体に実際に当てがってみると、位置が微妙にずれてるとか軸のサイズが合わないとかいった問題が見えてくるので、スケッチの寸法を微調整する。
なお軸は多少ズレてても成形後にヤスリで削って調整するって手段が残されているので、迷ったら細すぎるよりは太すぎるほうがよい。
重心を適当に考慮して台座をくっつける。
厚さ2.5mmもあればかなりかっちりした台座になる。安定しているものであれば1mmで十分だった。
直径は物にもよるが10cmもあれば大きすぎるくらいだと思う。
4. 印刷する
印刷して本体にくっつけたら完成。1時間~2時間程度で出てくる。
今回は特に必要なかったのでやらなかったけど、いくらでも作れるので、必要に応じてテープ貼ったり穴開けたりネジ止めしたりのような雑な固定法も遠慮なくできる。
完成例
このようにかなりコンパクトになる。左にあるのが元の台座。
2体で対になるデザインなのに台座がでかすぎるせいであまり寄せられないという謎な作りだったんだけど、そういった問題もついでに解決する。
(グリフォン 香霖堂魔理沙/霊夢)
逆に軸を台座側に挿すタイプの台座でもいける。
(GFF ディープストライカー)
特殊形状な軸でもだいたい何とかなる。
ちなみにこれは一番台座が大きかったのでかなり効果が高かった。直径21cm→10cm角になった。
(グッスマ タマ)
課題
単に平面に棒が立ってるのではなく足裏の形状に合わせた曲面の上に本体を乗せるタイプの台座がある。
横から写真を撮って3Dモデルに起こす方法を試してみたがあまり上手くいかなかった。
大雑把にだいたいの形が合っていれば良いだろうと考えていたが、軸が途中で折れてしまった。ぴったりハマらないと軸に結構負荷がかかるっぽい。(物にもよるんだろうけど)
また、軸が細めなことや、この本体が大量のフリルのおかげでやたら重量があることなんかも関係してそうな気がする。
(ちなみに、穴の中に折れて残ってしまった軸の残骸は、熱すればまた柔らかくなるのでハンダごて突っ込めば取り除けた)
理屈上出来ないってことはないはずので、単に私の作図能力の問題だと思う。そこまで巨大な台座ではなかったのでとりあえずそのまま妥協しているが、そのうちリトライしたい。
おわり
フィギュアの置き場所の問題は解決したが3Dプリンタの置き場所がないという問題が新たに出てきたので困った。
IIDX/SDVXのスコアデータcsv提供が始まったので覗いてみた(ついでに超簡易ビューア作った)
スコアデータのCSV提供が始まった
コナミが「e-AMUSEMENT プレミアムコース」なるサービスを始めるようだ。
その中のサービスの一つとして、音ゲーのスコアリザルトをcsv形式で提供する機能が付いていた。
p.eagate.573.jp
音ゲー界隈はなぜか他のゲームジャンルに比べて異常に自作ツール類が豊富に作られており、たとえばIIDX用だけでもざっと思いつくだけで2桁はある。主要な音ゲーはほぼ何かしら作られていると思ってよい。
やたら作られる理由はよくわからないけれど、ユーザが意欲的なのか公式の機能が不十分であるのか、多分そのあたりな気がする。
de0.hatenablog.com
自分も前に作ったことがあるが、たしか公式の機能がショボすぎるので仕方ないから作るかという動機だったと思う。
管理系のツールは大抵収集用にbookmarkletかアドオンが用意されており、公式サイトからページを1枚一枚開いてはスクレイピングしていく形式が主流だった。
サーバにパスワード預けるタイプや、サーバから自動収集するタイプのツールも過去にあったけれど、コナミから警告を受けて消滅したと記憶している。
これから公式にデータが提供されることでそんな七面倒臭い手順が不要になるので、なかなか画期的な試みだと思う。
(ただ、公式に機能拡張していくやる気は対して無いのであとは勝手に作れというメッセージにも読める)
ビューア作った
内容の解読ついでに、せっかくなので自分用にささっと軽く作ってみた。
csv読んで個人的に必要な集計を出するだけのかなり簡易的なものだけれど一応置いておく。
(何かプログラム書いたわけでもなく単なるexcelシートを作っただけ)
dropboxからシートダウンロードすれば多分使えます。
データ(SDVX)
csvに含まれるデータは以下だった。
- 楽曲名
- 難易度
- 楽曲レベル
- クリアランク
- スコアグレード
- ハイスコア
- プレー回数
- クリア回数
- ULTIMATE CHAIN
- PERFECT
バージョン、作曲者、譜面作者、トータルチェインあたりは入っていなかったが、必要な情報としては十分そうに見える。
未解禁の曲のデータは含まれていなかった。
データ(IIDX)
- バージョン
- タイトル
- ジャンル
- アーティスト
- プレー回数
- NORMAL 難易度
- NORMAL EXスコア
- NORMAL PGreat
- NORMAL Great
- NORMAL ミスカウント
- NORMAL クリアタイプ
- HYPER 難易度
- HYPER EXスコア
- HYPER PGreat
- HYPER Great
- HYPER ミスカウント
- HYPER クリアタイプ
- ANOTHER 難易度
- ANOTHER EXスコア
- ANOTHER PGreat
- ANOTHER Great
- ANOTHER ミスカウント
- ANOTHER クリアタイプ
- 最終プレー日時
曲名のカンマは全角にエスケープされていた。
過去バージョンでプレイしたが今作未プレイの曲はミスカウントが「-1」となっていた。
存在しない難易度の欄は難易度が「0」となっていた。
こちらも未解禁の曲は含まれていなかった。
課題
IIDXのcsvにはトータルノート数もクリアランクも含まれていない。スコアの重みはトータルノート数で変動するので、EXスコアだけ表示されてもそれだけでは無意味な数字になってしまっている。
他のサイトからノート数情報を拾って突き合わせないとスコア管理用途では全く使いものにならないので、その辺りは今後改善して欲しいところではある。
また、現状自分のデータしか取れないので、他人のデータも拾えると比較や統計が取れて面白そうなのにと思う。(プレミアム機能なので望みは薄そう)
おわりに
もっとちゃんとしたツールはそのうちこれから誰かが作ってくれることと思う。
この調子で他機種や他社もどんどんデータ提供していく流れになると色々と面白そうなので期待したい。