taiyoh's memorandum

@ttaiyoh が、技術ネタで気づいたことを書き溜めておきます。

lirc_webを使ってどこからでも赤外線リモコンの操作ができるようにする

 335先生から「早く書け」とプレッシャーが来てるのでメモっておく。

  • 用意するもの
    • こちらのブログに書いてある部品一式
      • ブレッドボードあると楽ですね
    • lirc (これはapt-getでインストールできる。上記ブログ参照)
    • lirc_web

 特に回路図の載っているこちらのブログは、やることの根幹部分を成しているので、まず書かれていることは全部実行して、動作確認をしておいてほしい。ただ、一つだけ変えたところがあって、この人とほぼ同じ抵抗で設定すると、出力が弱くて肝心のレシーバまで信号が届かなかったので、赤外線LEDの前に置く抵抗は、確か4.7Ωか10Ωくらいに下げている。こうすれば、LEDにより電圧がかかるので、出力は増す。赤外線LEDも、「高輝度」と謳ってるものにしておくとより確実。

 そうして組み上がった回路とRaspberry Piはこんな感じになる(一例です)

DSC02953

 ブレッドボード上の右側の素子が赤外線受光素子で、ここにリモコンの信号をガンガンぶつけて学習させる。

 回路が組めて、ターミナル上から実際にリモコン操作ができることが確認できれば、もう8割以上やることは終わっている。あとは、「lirc_web」というnode.js製のツールを使って、ブラウザから操作できるようにする。lirc_webは元々Raspberry Pi上で動かすことを想定していて、APIにリクエストを投げると、パスからコマンドを解釈して、lirc_webプロセスからlircコマンドを投げてくれる。ただ、それだと家のネットワーク内からしか使えないので、認証はかけつつどこからでも操作できるようにしたいなぁ、と思ったので、app.jsのパス指定を以下の様に変更した。

 /api/streamというパスを新たに用意し、ここにつなぎっぱにしたプロセスに対し、APIのリクエスト情報をごっそり送るという変更を加えた。これをVPSで立ち上げた上で、以下のスクリプトを用意する。

 今度はこれをRaspberry Pi上から実行し、予めVPSに立てておいたlirc_webのシステムに対してアクセスし、つなぎっぱなしにしておく。これができれば、NAT越えの問題は楽々突破できるし、lirc_webのシステムに認証さえつけておけば、便宜上ある程度のセキュリティは保たれる筈。VPSに立てたlirc_webのシステムにブラウザからアクセスすると、こんな感じになる。

f:id:sun-basix:20130524002717p:plain

 因みに、今のところ上記の通り、ダイニングの明かりしか操作できてません。。。!とはいえ、ちょっとbasic認証がうざいけど、この存在は相当ライフチェンジングになってて、今までは帰って扉開けた瞬間だと真っ暗で、手探りで部屋のスイッチを探さないといけなかったけど、今は先にスマホから上記のコントロールページを出しておいて、鍵開けて扉開けた瞬間にスイッチ操作して明かりを点けられるので、それだけでもストレスがだいぶ減ってる。なお、そのダイニングの明かりは、後付けでリモコンで操作できるようになる機器をつけてある。

天井照明器具専用 リモコンスイッチOCR-04 07-0154

天井照明器具専用 リモコンスイッチOCR-04 07-0154

 最近、ソフトウェアだけで完結できるものじゃなくて、こうやって現実世界に反映される何かを組むのがすごく楽しいと思えるようになってきた。と言っても、まだ実質これしかできてないけど。