タオルケット体操

サツバツいんたーねっとでゲームとかガジェットのレビューとかをします

IRKitというWifi経由で操作できる赤外線リモコンのPython製コマンドラインツールを作った

Sponsored link

2年越しの完成です。はい。

IRKitとは

HTTP APIを備えた赤外線学習リモコン。

おうちハッカーが赤外線リモコンの機器を操作する際の定番と化している(気がする)ハードです。
比較的安いこと、簡単なWEB APIを備えていること、ハードウェアを含めて全てがオープンソースであることなんかが我々の心を掴むんだとおもいます。欠点はLEDがクッソ眩しいことで、ここら辺はファームウェアを改造したり、ハードウェアに抵抗を増やしたりなどで対処している人たちがいるっぽいので僕も習おうとおもってます。
IRKitはArduinoベースなのでファームの書き換えも楽チンです。
発売されてから随分たって、競合もいくつか出てきているようですが未だにデファクトを張っているような雰囲気です。

一応、スマホから操作できるアプリが存在しているんだけども、スマホを出して、アプリを立ち上げて、目的のボタンをタップする……というのは全くもって便利じゃない。リモコンでええやん……となってしまいますね?
というわけで、ある程度以上の便利を求めるならばAPIを自分でアレコレしたい……という欲求が出てくるわけです。

リポジトリは

github.com

とりあえず赤外線の送受信 & jsonをファイルに保存と、キーの受け渡しAPIを叩くところまで作ったんですが、これで日常のユースケースの90%はまかなえるんじゃないですかね。後は僕が必要になるたびに付け加えます。

ちなみに僕がひとつしかIRKitを持っていないので、複数製品の操作には対応できてません。そのうち対応します。

2年ぶりに自分のコードを書き直して

なんかこう、頑張ってる感じのコードを書いていてカワイイなーとおもいました。
当時の自分の中ではdescriptorが面白い機能だったっぽくて、割と無理やり使ってたりするところもナイスです。そこらへんのテクニックをいじくりまわした挙句途中で飽きて投げ出しているあたりがクソ僕っぽくてナイスです。

雑なところも散見されますけど、2年ぶりに読んでも自分っぽさを感じるあたり僕は結構癖のあるコードを書いているのかもしれませんネ。

その他のツール

公式にiOS, androidのSDKが存在しています。

また、有志の方によるRuby製のツールキットも存在しています。GitHub - shokai/ruby-irkit: IRKit Client for Ruby

それと、IFTTTもmakers channelというものが追加されていて、そこからIRKitのInternet APIを叩けるっぽいですね。
ジオフェンスは正直精度がイマイチすぎてネタの領域をでないんですが、朝起きるちょっと前に電気をつけるのはIFTTTでやっちゃってます。だって楽なんだもん。

IRKitの良さと悪さ(今更)

良さ

簡単なことは簡単にできるようになっていてすごい。
最低限ながら、必要なものは全て揃っているし、弄る余地があるのでハッカー向けっぽい。

悪さ

LEDが眩しい。

そして、とにかく赤外線の登録作業がめんどくさいです。
JSONをそのまま保存すれば良い話なので、どっか既存製品のJSONを有志がまとめられるようなリポジトリがあったら便利なのでは? neosnippet-snippetみたいな感じで。

最後に、これはIRKItとは微妙に無関係なんですけども、既存の赤外線製品って電源のONとOFFがトグルになっているし、レベルを変えるのもインクリメント、デクリメントを基調としたインターフェースになっているのが普通*1なんですよね。これが自動化とすこぶる相性が悪い。
例えば、「夜中の○時になったら電気を消す」みたいな簡単なことでも、「ある日たまたま体調が悪くて早めに寝てた」というイレギュラーに対応できないため、照度センサーを取り入れてアレコレする必要がでてくるわけです。製品差もあるんでしょうけど、ココら辺のめんどくささは既存製品を使ってスマートハウスを作る際のネックになりそうですね。

今後、hueのように、スマートなAPIで操作することが基本になっている製品が増えていけば解決しそうなんですが、そうやって赤外線が廃れると今度はIRKitの出番がなくなるというジレンマw

展望

JSONリポジトリを共有できるようにして、あとはAppleのHomeKit bridge(HomeKit未対応の製品を無理やり対応させるやつ)との連携もアレしてやっていきたいですね?
あとエアコンをつけてからサーキュレーターを回す、という作業がクソだるいので複数のコマンドをまとめて送信できる機能をつけたら便利が到来しそうです。

移動に備えて、Wifiコマンドとかも便利にしておきたいんですが、自動テストがない状態でこれ以上コマンドを増やすと開発がダルくなるのは確定的に明らかなのでテスト書かないと(使命感)

まとめ

hueを注文したので明日には届くとおもいます。
僕は寝起きが最悪なので、ここら辺でうまく解決していきたいし間接照明で家をオサレにしていきたい。

Philips hue(ヒュー) スターターセット 929000259907 リテールパッケージ

Philips hue(ヒュー) スターターセット 929000259907 リテールパッケージ


追記

早速ですが、平日の朝起きる少し前には電気が自動でついて目覚めをサポートし、出勤する少し前に電気が自動でついて、エアコンがついていれば消えるように設定しました。
結果として、睡眠計との併用などはしていないのですが以前と比べて明らかに目覚めがよくなり、また自動で電気やエアコンが消えるのでついうっかり遅刻するようなことも減りました。

まだまだスマートハウスには程遠いですが、こんな簡単なことで格段にQOLが上がるのは気持ちが良いですね〜。

*1:エアコンのリモコンのように、賢いものはリモコン側が状態をトグルしてたりするのでいけたりする