ちなみに、おおかたの期待を裏切り、今回はハードウェア工作はナシ。既製品だけ。
仕組み
「電気を消したいだけなのに複雑だ」と言われたので絵にしてみた。複雑だろうか?ちなみに、結構昔からある方法。
使った物
- 天井照明器具専用 リモコンスイッチOCR-04 (\1,500くらい)
- パソコン用学習リモコン PC-OP-RS1 (\4,500くらい)
- Debian GNU/Linuxの入った箱:今回は玄箱PRO (\不明:今ならGuruPlug (\20,000くらい)や、Raspberry Pi (\4,000くらい)がいいかも)
作り方
Step1. OCR-04を設置する
OCR-04はこんな形をしたもの。箱に書いてある通り、照明器具と天井の引っ掛けシーリングの間に受信部をセットするだけ。元々のスイッチはOnにしっぱなしにしないと使いものにならないので、ついてきたリモコンは、スイッチがあったところの隣に置いておく。Step2. Linux boxとPC-OP-RS1をつなぐ
今回はNASとして稼動していた玄箱PROを使ってしまったが、USBがついたLinuxの箱ならなんでもいいはず。LinuxからPC-OP-RS1は、USBシリアルデバイスとして認識できるが、VendorID/ProductIDが登録されていないので、指示してあげる必要がある。コマンドは以下の通り。# modprobe ftdi_sio vendor=0x0411 product=0x00b3これで/dev/ttyUSBXができたらひとまずOK。再起動しても認識される&あとで使うための権限が調整できるよう、以下の設定を行う。
まずvid/pidの設定。
/etc/modprobe.d/remosta.conf作成
alias remosta ftdi_sio options ftdi_sio vendor=0x0411 product=0x00b3
起動時にロードされるようにする。
/etc/modules追記
remosta
このデバイスが使える人のグループを作る。
# groupadd remosta
このデバイスを/dev/remostaXにし、グループを変更する。
/etc/udev/rules.d/92-remosta.rules作成(92なのは91でこのデバイスのグループ変更がされていたから)
KERNEL=="ttyUSB*", ACTION=="add", \ ATTRS{idVendor}=="0411", ATTRS{idProduct}=="00b3", \ MODE="0660", GROUP="remosta", NAME="%k", SYMLINK="remosta%n"ここの設定は間違えるとOSが起動しなくなるから注意!(一回やってHDD抜き出した…)
再起動して、以下の状態になっていればOK。
$ ls -al /dev/remosta* /dev/ttyUSB0 lrwxrwxrwx 1 root root 7 Nov 23 20:58 /dev/remosta0 -> ttyUSB0 crw-rw---- 1 root remosta 188, 0 Dec 1 22:59 /dev/ttyUSB0
Step3. コマンドラインで送受信してみる
Rubyでスクリプトを書いたので、それを使う。Ruby/serialportが必要なので、インストールしておく。
# apt-get install libserialport-ruby
あとはこのスクリプトをダウンロードして、以下の通りで動く。
受信
$ ruby remosta.rb recv Receiving. →ここでPC-OP-RS1に対して、リモコンで送ってみる fffff070000e03fc07f80f.... →受信した信号 Received.
送信
$ ruby remosta.rb send fffff070000e03fc07f80f....(信号) Sending. Sent.
これで「A」と書いてあるほうの黄色いシールがついてるLEDから信号が発信される。
Step3. Web UIをつける
凝るほどでもないので、レガシーにRuby/CGIでWebを作った。https://github.com/sunnyone/lightremo
スクリプトを/var/www/lightremoに配置したら、以下の感じで設定する。
<Directory /var/www/lightremo> AddHandler cgi-script .cgi AllowOverride None Options +ExecCGI </Directory>今回は自宅の無線LANでしか接続できないところに置いたから、CGIとしてはとくに認証もしていないけど、必要ならかける。
www-dataを"remosta"グループに所属させるのを忘れない。
Apacheの設定をリロードして、http://[SERVER]/lightremo/lightremo.cgiにアクセスすれば以下の画面がでてくるはず。
onやoffを押して実際に照明がOn/Offされたら成功!
0 件のコメント:
コメントを投稿