上下昇降デスクをホットキーから操作する
前回の続き。
経緯
オカムラの電動デスクを使っており、それと互換性のある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スコアだけ表示されてもそれだけでは無意味な数字になってしまっている。
他のサイトからノート数情報を拾って突き合わせないとスコア管理用途では全く使いものにならないので、その辺りは今後改善して欲しいところではある。
また、現状自分のデータしか取れないので、他人のデータも拾えると比較や統計が取れて面白そうなのにと思う。(プレミアム機能なので望みは薄そう)
おわりに
もっとちゃんとしたツールはそのうちこれから誰かが作ってくれることと思う。
この調子で他機種や他社もどんどんデータ提供していく流れになると色々と面白そうなので期待したい。
伸びてるツイート104万件分を調べた
パクころというWebサービスを公開していて、250favs以上のツイートが現時点で161万収集されている。
気付いたらかなり集まっていたので、量があれば単純な集計だけでも何か見えないだろうかと思い立ったので雑に調べてみることにした。
(何で単純な集計だけかというとちゃんとした統計手法的なものを知らないからです)
条件について
集計にあたり、パクころ/@pakurares等で使用しているデータベースより、500favs以上取得しているツイートのうち104万件をサンプルとした。ちなみに161万件全部読み込むとExcelの行数の限界(1048576)を超えてるので収まるように適当な量まで絞っている。妥協。
なお、ツイート情報しか収集していないので、ユーザ情報に絡めては何も調べられていない。正直そっちの観点の方が面白そうな結果が出そうな気もするんだけど、無いものはしょうがない。
サンプルの都合上、以下の内容は全て「特定の収集条件下かつ500favs以上のツイートでは」の但し書きが付く点に注意が必要。
データ
サンプル数: 1,048,498
期間:2006/3/22~2016/2/26
データの収集開始が2014年3月からのためそれより古くなるにつれどんどん取りこぼしは大きくなる。なので、年代別的な集計は避けることにした。
RT | Fav | |
---|---|---|
平均 | 1760 | 2368 |
中央値 | 618 | 1239 |
標準偏差 | 6507 | 5738 |
最大 | 3337105 | 2130021 |
かなりばらつきがあるので、あんまりFavとRTは見ずに単純なツイート数をメインで見ることにした。
結果
先に結果だけ書いておくと、なんとなく見えた内容としては大体以下な感じだった。
- 曜日は日曜が多い、しかし極端に大きな差ではない
- ピークタイムは21時。
- 最も人が居ないのは4時。
- 画像なしのツイートは40%しかない。60%は画像を添付してる
- テキストのみのツイートは31%しかない。69%はURLを含んでいる
- クライアントは公式一強。73%を占める
曜日
土日が大きく突出するグラフが出てくるのを予想していた。
実際のところ、日曜が多いのは合っていたがそこまで大きな差ではないようだ。一番少ない火曜に比べて11%増しくらいの差しかなかった。
時間
ピークは21時頃、一番少ないのは4時頃だった。
12時頃もピークだろうと予想していたが、夕方~夜に比べるとそこまで大きな山ではないようだ。
ちなみに、収集しているツイートの対象はほぼ日本語圏です。
文字数
80文字近辺と140字ギリギリが多い。ある程度テキスト量があったほうがやっぱり伸びやすいのかもしれない。
改行の数
改行いっぱい入れているツイートほど伸びているんじゃないかと予想したが、あんまり影響してないようだ。
全体の60%は改行をしていないし、RT数の平均でもそんなに差はないように見える。
URLの有無
URLを含んでいないツイートは全体の31%しかなかった。1つ含むものは61%、2つ含むものは7%だった。3つ以上はほとんどない。
URLのドメインごとに集計したら何か見えないだろうかと思ったけど短縮URLになってて手間が掛かりそうだったのでやめた。
画像有無
69%のツイートは画像を添付している。何となく予想はしていたが予想以上に多い。
画像だと情報量が多いしクライアント上での表示面積も増えるしいろいろと有利なんだろうと思う。
URLの結果を見ても、完全にテキストのみで構築されたツイートで伸びるのは結構珍しいと思って良さそう。
Fav/RTの比率
だいたい1:3位の比率でまとまるのではないかと予想してたけど実際はかなりバラバラだった。
これはデータとかでなくなんとなくの感覚的な話だけど、favをRTで割った値は内容の傾向に応じて結構変動してくる印象がある。F/R値が大きいものは特定の集団向けの内輪度が高くなり、小さくなるほど炎上度もしくはスパム度が高くなる傾向にある気がする。
(なので、ツイートを掘り返してRTしていく@pakuraresというbotを動かす際、この値が極端に大きいまたは小さいものは排除するようにしている)
クライアント
クライアント名 | ツイート数 | 割合 |
---|---|---|
Twitter for iPhone | 455457 | 43% |
Twitter Web Client | 214136 | 20% |
Twitter for Android | 69007 | 7% |
web | 28988 | 3% |
Echofon | 27602 | 3% |
TweetDeck | 20061 | 2% |
Tweetbot for iΟS | 17805 | 2% |
Janetter | 13642 | 1% |
twittbot.net | 9739 | 1% |
9712 | 1% | |
Twitter for iPad | 8713 | 1% |
HootSuite | 7482 | 1% |
Hootsuite | 7482 | 1% |
iOS | 7470 | 1% |
EngageManager | 6589 | 1% |
Tween | 6430 | 1% |
ついっぷる | 6406 | 1% |
Buffer | 6234 | 1% |
Vine - Make a Scene | 5440 | 1% |
twicca | 5373 | 1% |
(1%未満のクライアント群は省略)
サンプルに含まれているクライアントは全部で2073種類あったが、上位数種類が大半を占めていた。
プラットフォーム合算で73%は公式クライアントによるものであり、ほぼ一人勝ちに見える。
おわりに
ということで、全部盛り込むとするなら、日曜21時に画像とURLを付けて80文字か140文字のツイートをすると伸ばすのに多少に有利になるかも、ってことになるんだろうか。
でも実際伸びるには結局かなりの割合で運によるものが大きい気がするし、小細工でどうにかなるってもんでもないと思う。
全体としてそんなに新しい発見があったという感じでは無かったけど、何となく体感している内容が値として再確認できたって点での意義はあったかもしれない。(と思いたい)
おまけ - 調べてる途中で見つけたツイート
ぶっちぎりの桁違いでRT数が一番多かったもの
If only Bradley's arm was longer. Best photo ever. #oscars pic.twitter.com/C9U5NOtGap
— Ellen DeGeneres (@TheEllenShow) March 3, 2014
アカデミー賞の記念写真らしい
「ガルパンはいいぞ」は何から普及したのか
「ガルパンはいいぞ」とだけ書いて劇場版ガールズアンドパンツァーをネタバレを回避しつつ布教するのを最近頻繁に見かけるようになった。
だいぶ広まってるようだけれども由来が良くわからないので分かる範囲で調べてみた。
契機
https://twitter.com/ikaboku/status/671879391635345409
きっかけはこれと見てほぼ間違いないと思う。
「ガルパンはいいぞ」は2012年からここまでに46ツイートしかなかったのが、このツイート以降大量に増えているのが分かる。
dic.nicovideo.jp
ちなみに、ここではマッドマックスを下敷きに「ガルパンはいいぞ」となったように書かれているけれど、そうではなく後から結果的に「マッドマックスやばい」と同じ用法になっただけな気がする。
加速
「ガルパンはいいぞ」を含む250favs以上のツイートを見ると、上記のツイートからしばらくの間が空いているのがわかる。
契機のツイートから13日の間を置いて以下のツイートがある。
https://twitter.com/NukoShonan/status/676686590517706752
https://twitter.com/NukoShonan/status/676725821256536064
連日何かしらのガルパンはいいぞツイートが星を集めるようになっているのはこれ以降の日付になるので、本格的な広まりの契機はこちらなのかもしれない。
(公開から日数が経過したことで実際見た人が増えたのも要因の一つではありそう)
テンプレ
せっかくなのでもうちょっと辿ってみる。
契機のツイートはカゲロウプロジェクトの信者の人のツイートをベースに派生した以前からあるテンプレをガルパン仕様に改変したもののようだ。
カゲプロ信者
— ちょけ"ま (@chogema11037) 2014年1月20日
「にわかがアニメを軽いノリで観るのは許せない」
「知ったかやめてほしい」
「新参は帰れ」
ダンガンロンパ信者
「新規勢はアニメを見る前にゲーム本編をしましょう!まだ間に合います!」
「まずは体験版から!」
「アニメは展開速いから原作をやった方がいい今すぐ買おう!」
元ネタ
では「ガルパンはいいぞ」の部分はどこから来たのか。
期間指定でGoogle先生に聞いてみてもざっと見た感じそれらしいページは無かった。
なので、該当ツイート以前の46ツイートのうちのどれかを元にしている可能性が高そうに思える。
映画公開から該当ツイート以前で絞ると8ツイートに絞れる。
○○はいいぞ
「○○はいいぞ」もテンプレ的にちょくちょく見かける言い回しに思う。
検索で絞れた過去の「ガルパンはいいぞ」の使い方に対して当てはまりそうな定型文では、思いつく範囲だと以下がある。
結局どれなのかははっきりしないけどベースはこの辺りのどれかな気がする。
候補2:「綾瀬さんはいいぞ。心が豊かになる」(モバマス)
候補3:「スポーツはいいぞ」 (学校であった怖い話)
候補4:「うーん、たいりょうは いいぞ。」(探偵神宮寺三郎)
うーん、たいりょうは いいぞ。 - ヒテッマンリスペクト&用語まとめ Wiki*
これから先は辿れなかったので分かったのはとりあえずここまでです。誰か詳しい人教えて。
最古のガルパンおじさん
ちなみにtwitter上で観測できる最古のガルパンおじさんは2012年12月23日。
— にとろ (@ch3ch2ona) 2012年12月23日
リプライを含まないものでは2013年3月30日。
ガルパンはいいぞ 心が洗われる
— フユ (@huyu0723) 2013年3月30日
おわりに
おまけに
あんまり良いので大洗も行った。聖地巡り的なことをするのは初めてだったんだけれどなかなか楽しめた。
ガルパンギャラリーも二店舗分くらいスペース使ってて結構なボリュームがあった。特にジオラマの出来はかなりのものなので一見の価値ある。
関連
めうめうの時と同じ要領で調べた。こういう調べ物は結構楽しい。
de0.hatenablog.com
介護ベッドのハックと部屋中の機器の自動化について
おうちハック Advent Calendar 2015 18日目です。
介護ベッドの制御の取得
PC環境用に介護ベッドを使っている。最高なのでおすすめです。
照明やエアコンなどの他の機器は既に一括して制御できるようにしており、自動化まで出来ていた。せっかくだしこのベッドも制御下に組み込めるといろいろ楽しそうだしさらに快適になるのではと考えた。
しかし、付属の有線リモコン以外には外部からの操作を受け付ける手段が存在せず、そのままではどうにもなりそうになかったので、物理的にどうにかすることにした。
結果的に、リモコンを改造することで制御を取得することに成功した。それによって、ベッドを含めた部屋全体の自動化と、寝落ち時にそのまま寝かしてくれる仕組み、100%確実に起床する目覚ましを得ることができた。
また、部屋全体の制御について、いろいろ部屋にごちゃごちゃ足しまくった末に削りまくった結果、そこそこの手間で抑えつつそこそこの汎用性とそこそこの拡張性のある、実用的な方式に落ち着いてきたので、以下その辺りについて合わせて書きます。
方法
ベッドの有線リモコンを分解してみると、ボタンを押す→ボタン内の導電性の何かが基板上の接点に接触する→回路がつながって電流が流れる→ベッドが動く、という仕組みだった。
要は指定箇所に電流が流れるかの制御を握れれば、ボタンを押したのと同じ働きが得られることになる。
最終的に、USBで制御できるリレーモジュールを買って接点に接続することで期待通りの動きになった。大体の物理ボタンは同様の方式で改造出来ると思う。
サインスマート(SainSmart) USB対応 4チャンネル リレー 5V SRD-5VDC-SL-C
- メディア: エレクトロニクス
制御セット完成品
上が介護ベッドコントローラの基板、右下がUSBハブ、左下がリレー。単に繋ぎさえすれば作れた。
最初は全部裸でバラバラにそのまま置いておいたんだけど、基盤剥き出しでベッドの下に置くのはホコリが心配なのと、移動させるときに線が外れたりしたのでまとめた。周辺機器をまとめるのに使うゴムバンドの集合体の板(名前が分からない)の上に固定して、ケーブル穴を開けた100均のA4ドキュメント箱に突っ込んでいる。板もA4なので収まりがよかった。
作る時ハマったポイント
・結線が厳しい
接点が1mm弱くらいしか無い上、反応しやすくするために対向の接点が互い違いに入り組んでおり、銅線の接続がかなり難易度高かった。
隣接する黒い線に触れてはいけないので、そのままでは左の青丸の部分(もしくは接点外周のどこか)に繋ぐしかなく、細かすぎて何度やっても失敗した。
いろいろ考えた末、思い切って赤丸の部分を切断した。そうすることで右図の黄緑線部分の当たり判定がなくなり、接続可能な範囲をかなり拡大することができた(右図青丸)。
・線が固定できない
繋ぎたい箇所が平坦なので、ハンダも導電性接着剤も上手いことちゃんと固定出来ずにすぐ外れてしまった。
両面基板なため、下手に穴開けるのも壊しそうだったので難しかった、しょうがないので、結局最終的には絶縁テープでそのまま貼り付けることで雑に解決した。
・電力供給
制御のためのUSB接続とは別に電力供給が必要なんだけれど、本体以外一切何も付属していない(マニュアルさえも付いてなかった)ので、自分で用意する必要があった。
電圧の合う適当なACアダプタを用意し、コネクタ切って線繋いでみたがうまく動作しなかったので、駄目元でUSBケーブルを分解して赤黒の線だけ繋いでバスパワー給電するようにしたら動いた。何が悪かったのかは結局良く分からない。
うちの部屋の構成
介護ベッドを制御下に加えられるようになったことで、図のような構成になった。
赤外線への集約
現状大半の家電にはリモコンが付いているので、赤外線が一般的な機器の共通規格みたいなものと強引に解釈出来なくもない。
- 赤外線に対応している → 学習リモコンに覚えさせておしまい
- 信号の届かない位置に機器が存在する → IRベンダ(要は中継器)を入れる
- 赤外線非対応機器がある → 機器の電源を赤外線で制御する
- 電源制御だけでは期待する動作とならない → リレーを物理的に組み込む
という4段構えで、世の中のほとんど全ての機器は制御を得られる。(はず)
単純だと楽
だいぶアナログ感あるけど、ほとんど既成品を連携させているだけなので、自力でどうにかするべき箇所は図中のオレンジの部分だけで済んでしまう。
機器毎に仕様を覚えたりブリッジ的なものの自作が必要となるような、面倒極まりない事は省略でき、機器が変わっても学習リモコンに信号覚えさせ直すだけで済み、ほぼ何でも追加で組み込める。
かなりシンプルで分かりやすい構成なので構築も運用も楽なことだけは少なくとも間違いない。
足入れヒーター、扇風機、電気毛布なども制御下に入れていたことも有ったが、大して便利にも不便にもならなかったので結局コントロールから外してしまった。機器自体が手の届くところにある、本体がコントローラを兼ねている、自動化させる利点が薄い、を満たすようなものは普通に使ったほうがよさそうな気がする。
そんな具合に、時々足しては引いてはを続けて今の構成に落ち着いているんだけれど、構成変更の際も実際大した手間はかからずかなり簡単に済んでいる。
ソフト部分
リレーモジュールも学習リモコンも、それぞれ公開されている規格に従ってプログラム作りこめば直接制御できるようになるが、いちいち面倒なので手を抜いている。どちらもWindows用のGUIが標準で付いているので、それを起動させておき、単にボタンのクリックを発生させることで済ませた。
方法
制御には AutoHotKey を使っている。
特定のコントロールに対し操作を送る機能が備わっているので、各操作は以下の一行をそれぞれ書いていくだけで定義が済んでしまう。
beddown(){ ControlClick,TButton9,8 Relay Board Manager }
なお、直接操作を送るのでGUIは起動さえしておけば画面に表示しておく必要もない。邪魔ならAHKで完全に非表示にさせておくことも出来る。
一度対応付けしたらあとは好きな箇所で好きなように呼ぶだけなのでかなり簡単だし、仮に装置を入れ替えたとしても最小限の変更で収まる。
数えてないが機器コントロールするための一連の記述は自動制御も含めてトータルで100行かその程度だと思う。
割当について
物理レイヤの機器の操作もキーボード操作に押し込めてしまえるので、各種リモコンを普段使いのキーボード一枚の上に集約出来る。
呼び出しについてはホットキーへの割当だけでもよいけれど、適当な使わないキー自体にそれぞれ割り当てておくとワンボタンで操作が効くようになってさらに使いやすい。ファンクションキーはスペースと数字キーの同時押しにアサインしたものを使っているので、空いている物理的なF1~F12キーを制御用に割り当てている。
(話が横道になるけど OneshotModifier_Space.ahk によるSandSの拡張みたいなスペース起点での独自キーマッピングはかなり使い勝手が良いのでおすすめ)
マクロ化
簡単に複数の操作をまとめられるという点も便利度が高いポイントだと思う。
例えば寝るとき用ボタンというものが作ってあって、ライト消してベッド倒してディスプレイ消してエアコン調整する、という一連の操作を一発で行うことができる。
それを寝る前に1回押すのと、ベッドの姿勢の調整をする以外は、基本的に制御下の機器は自動制御に任せており手動での操作は発生しない。
また、AHK上で完結しているので物理的な操作とOS上の操作を混在して書けるのも便利。
例えば起床時の処理として、ベッドを起こして照明とエアコンと画面を付けるという各種物理装置の操作に加え、iTunesの再生を開始し、RSSリーダを表示し、昨晩nasneで録画した深夜アニメのリストを表示させクリックすれば流せる状態にしておく、というような処理をスクリプト上にまとめて書けている。
うちの自動制御
各種操作の制御を得られるようになったことで、手動操作はもちろん、特定の条件下で勝手に動作させることも簡単に出来るようになる。
現状は以下のパターンで自動的に動くようにしている。
家に帰った時
条件:携帯のWifiのDHCP固定IPアドレスへのpingが疎通不可から疎通可能に遷移した時
・照明のON
・エアコンのON
・ディスプレイのON
・ベッドを起こす
朝の起床時間に
条件:タスクスケジューラにスクリプト突っ込むだけ
・エアコンのON
・照明のON
・ディスプレイのON
・ベッドを起こす
寝落ちした時
条件:夜間帯かつ一定時間無操作であった時
・照明のOFF
・エアコンのOFF
・ディスプレイのOFF
・ベッドを倒す
4パターンだけとはいえ、これだけの単純なルールでも、普段使う機器は起動停止を特に意識することなく全く何もしなくても勝手によしなに動いてくれる。よい。
(ちなみに部屋の外の玄関照明などはモーションセンサー付き照明を特に手を加えずにそのまま使うことで済ませ、制御からは外している)
絶対に寝坊しない目覚まし
起床時間にベッドが自動的に座り姿勢に変形するようにしている。これは単純ながらものすごい効果がある。確実に起きる。
だいぶ前にちょっと話題になった、JRの起床マシーンとかなり近い効果が得られていそうに思う。
別に目覚まし用途を目的に作ったわけではなく副産物だったんだけど、物理的に引き起こして座らせることで文字通り強制的に起床させるので、もしかすると効果は本家に匹敵するかもしれない。(JRのものは使ったことないけど)
http://www.eki-net.biz/shinko/g128221/
これを買うと10万弱するようだが、適当な電動ベッドとリレーさえあれば作れるので、代替として自作するのも費用面からしてもかなり有りかと。場所も取らないし。
もう最初から介護ベッド自体にタイマ標準装備でも良いのでは、と思うレベルだけど、ざっと探した感じではそんな製品は見つからなかった。メインユーザが病人とお爺ちゃんお婆ちゃんだから事故防止のために止しているんだろうか。
試したけどやめたことなど
各種制御にあたり、もっと複雑な条件(GPS、温度センサ、照度センサ、視線追跡、非接触IC、音声制御など)もいろいろ試した。しかし、複雑にすればするほど、要求される機器、端末のバッテリ消費、回避すべき誤爆ケース、調整の必要なパラメータなどなど考慮すべき項目が当然どんどん無限に膨れ上がってくる。特に、誤動作の回避と充分な精度の両立はだいたいのケースで予想以上にかなり難しい。
いろいろと装置やサービスを組み込んでみたくなるものだけれど、実際のところ、そんなにきめ細やかな制御が必要な場面はほとんどなく、実用に耐えうる精度でもなかった。
部屋に余計なものあんまり置きたくなかったということもあり、いろいろ削ったら結局は 在宅-外出 / 起床-睡眠 の条件だけになった。
携帯やWebからの操作についても、部屋に居る時は常時キーボードが目の前にある環境であることもあり、最終的にやめた。
もともと単に物理的なボタン一個押せば済んでいたような操作を、端末拾ってロックボタン押してロック解除してアプリ起動してボタン押す、みたいな流れが必要になってしまうのは無駄が多いし、面倒くさくなって使わなくなる。
また、ローカルでどうにかなることはローカルで済ませたほうが色々と利点が多いと思う。IoTのIが何だったのかはもう忘れた。
とりあえず今の環境と用途ではインターネットを必要とする操作は存在していないので、オフラインで完結している。
結局のところ、なるべく単純な構成に留めて単純な条件で動かしたほうが運用が楽だし現実的だというのが私の中の今のところの結論です。
今後について
電動デスクの制御
ちょっと前に電動デスクを買った。
どうせなのでこれも制御下に入れたかったんだけれども、コントローラの外装が接着されてるタイプであり破壊しないとうまく分解できなそうな作りだったのと、失敗した時にコントローラ単品で入手する手段がなさそうなのでまだ保留している。でもそのうちどうにかしたい。
(ちなみに介護ベッドはヤフオクで5000円位出せばコントローラ単品で買える)
寝落ち検出の改良
一定時間キーボードおよびマウスの操作がない場合に寝落ちしていると判断し、寝る時用の状態へ各機器を移行させている。
現状でも一応想定通りの動作はしており、意識を失ったらそのまま自動で寝かしつけてくれていて、気付いたら翌朝を迎えられてたことは何度かあるんだけど、方式上誤爆を防ぐためには十分な猶予時間を設ける必要があるので、発動までタイムラグがあるのが課題となっている。
精度を上げていくにあたって、ベッドが変形することで測定対象(私)のポジションが移動する都合上各種センサ類は使いづらい、人間側に何か装備させるのもあまりやりたくない、そもそもセンサ類は必要以上に増やしたくない、などと制約が結構あり、今のところ現実的な案は特にないんだけれども、何かいい方法を思いつけたら試していきたい。
おわりに
ベッドのようなでかい装置がキーボード操作で変形するのロマンがあるし、操作無しで勝手にまわりの機器が動いてくれるのも未来っぽさがある。
効率厨としても日々要求される定形操作が削れることで快感が得られるので、気分的にも実用的にもかなり具合が良い。(そして環境を試行錯誤すること自体も結構楽しい)
もっと各社のあらゆるタイプの家電が標準的な共通の制御手段を持っていて繋がるような状態を望んでいるんだけど、そういった環境が出来るには、まずはどこかが共通規格みたいなのを作って、各メーカがちゃんと乗っかってきて、一般的な家電含め機器側が共通で対応して、対応機器が普通に出回るようになって…っていうステップが要りそうに思う。
Homekitがそういった流れを作ってくれるのではと期待したが、結局各社全然やる気が見受けられない状況のままなのでとても残念な感じがある。もっとがんばれ。
当面の間はまともな環境は待っていても来そうにないし、そもそも来るのかも分からない。
仕方がないので、既存の物でいろいろと小細工しながら無理やり構築していくしかないというのが現実なんだけど、変な工夫無しでもっとこういうのが普通に組めるくらい、各社からいろいろ充実した機器が出てくる日がいつかやってくるといいなと思います。
使ってる装置
リレー
サインスマート(SainSmart) USB対応 4チャンネル リレー 5V SRD-5VDC-SL-C
- メディア: エレクトロニクス
ベッド
リモコンベンダ
Hanwha 汎用 赤外線 リモコンベンダー UMA-IRB01 [赤外線 リモコン 延長]
- メディア: エレクトロニクス
リモコンコンセント
天井照明器具専用 リモコンスイッチOCR-04 07-0154
- メディア: ホーム&キッチン