0

WEB+DB PRESS vol.81でIRKitについて書いた、そして連載

WEB+DB PRESS Vol.81
WEB+DB PRESS Vol.81
posted with amazlet at 14.06.17
長嶋 享 藤 吾郎 八木 俊広 日高 一明 滝口 健太郎 田中 慎司 泉水 翔吾 海野 弘成 佐藤 太一 吉村 総一郎 伊藤 直也 川上 大喜 こしば としあき 舘野 祐一 中島 聡 橋本 翔 渡邊 恵太 はまちや2 竹原 川添 貴生 沢渡 真雪
技術評論社
売り上げランキング: 1,655


6月24日発売の81号から「hack the real world」というタイトルの連載をします。第一回目はIRKitについて書きました。

最近まともなAPIがついてるガジェットが色々と出てきてるので、そういうのを使って便利っぽい実世界コンピューティングを作ります。

APIついてるガジェットというと、一昔前までは専用のスマホアプリで操作できます!程度のが多かったけど、最近はHTTPとJSONで操作できたり、OAuthで認証しておいたらガジェットがwebhookでサーバープッシュしてきたりとか面白い。


これから夏で暑いので、家に帰る前にIRKitでエアコンつけるといいと思います。

0

IRKitファームウェアv2.0.1が出ている

けど、IRKitのファームウェアを改造して温度センサーを追加したで解説したセンサー追加のためのファームウェア変更はそのまま使えます。試した。

最新のmasterにgit rebaseで追従したので、tempe_sensorブランチsensors_jsonブランチはv2.0.1にセンサー読み取り機能を追加した物になった。

v1.3.5からの変更点はモールス信号関係のコードの削除なので、あまり差は無かった。

0

IRKitで一番2ch実況が盛り上がってるテレビチャンネルを追跡する

IRKitと、10行ぐらいのRubyでこんなに簡単にテレビ視聴が自動化できる。
見たい番組とか考えなくていいじゃないかみんなが実況してる番組は多分面白い。

手順

必要なgemをインストールし
% gem install irkit httparty nokogiri


irkitコマンドで各テレビ局の名前で赤外線データを学習しておいて
% irkit -get テレビ東京
% irkit -get NHK総合
% irkit -get NHK教育


実況勢い観測 – 現在の勢いからスクレイピングしてきて、一番盛り上がってるチャンネルに合わせる。

irkit-2ch-tv.rb
require 'irkit'
require 'nokogiri'
require 'httparty'

page = Nokogiri.parse HTTParty.get("http://bc2ch.net/").body

td = page.xpath('//table[@class="sitetotal"]//td[@class="station"]')
channels = td.map{|i| i.text }
ch = channels.first # 一番盛り上がってるチャンネル

irkit = IRKit::Device.find.first
ir_data = IRKit::App::Data["IR"][ch] # 局名に対応した赤外線データ

irkit.post_messages ir_data # 赤外線発射

このスクリプトをcrontabとかに追加して、5分ごととか定期的に実行すれば自動的に一番盛り上がってる番組を追える。

% crontab -e
*/10 * * * * cd /path/to/irkit-2ch-tv/ && bundle exec ruby irkit-2ch-tv.rb > /dev/null 2>&1


若干エラーハンドリングなどを追加したバージョンをgithubに置いておいた。
https://github.com/shokai/irkit-2ch-tv

あとはテレビを買うだけだ・・・(大学にはある)

0

赤外線リモコンコンセントをIRKitで操作する

これ買った。ふつうにIRKitで操作できた。千石本店の入り口でも売ってる。

リモコンコンセントOCR-05 07-0155
オーム電機
売り上げランキング: 1,692

これはコンセントの間に入れる機器で、リモコンでONにしたりOFFにしたりできる。

扇風機とか、電気スタンドとか程度なら操作できる。炊飯器や洗濯機みたいな、コンセントいれた後にボタン押さなければいけない機器は操作できない。


複数使いたい

これを複数使うとしたらちゃんとリモコンを識別してくれるんだろうか?
うちのIRKitで取れた赤外線データを貼っておくので、だれか持ってる人おればコレでON/OFFできてしまうか試してみて欲しい

→ 同じ信号で動いちゃったとのこと(1,2

ON
{"format":"raw","freq":38,"data":[5049,5049,1622,1622,1622,1622,1622,3704,1622,3704,1622,3704,1622,3704,1622,1622,1622,1622,1622,65535,0,42612,5049,5049,1622,1622,1622,1622,1622,3704,1622,3704,1622,3704,1622,3704,1622,1622,1622,1622,1622,65535,0,42612,5049,5049,1622,1622,1622,1622,1622,3834,1622,3834,1622,3834,1622,3834,1622,1622,1622,1622,1622,65535,0,42612,5049,5049,1622,1622,1622,1622,1622,3834,1622,3834,1622,3834,1622,3834,1622,1622,1622,1622,1622,65535,0,42612,5049,5049,1567,1738,1567,1738,1567,3834,1622,3834,1622,3834,1622,3834,1622,1622,1622,1622,1622]}

OFF
{"format":"raw","freq":38,"data":[5049,5049,1622,1622,1622,3834,1622,1622,1622,1622,1622,3834,1622,1622,1622,3834,1622,3834,1622,65535,0,42612,5049,5049,1622,1622,1622,3834,1622,1622,1622,1622,1622,3834,1622,1622,1622,3834,1622,3834,1622,65535,0,42612,5049,5049,1567,1738,1567,3834,1622,1622,1622,1622,1622,3834,1622,1622,1622,3834,1622,3834,1622]}

0

IRKitのファームウェアを改造して温度センサーを追加した

前:IRKitのファームウェアを改造してセンサー読めるようにする

/tempeにHTTP-GETすると温度が返ってくるファームウェア


https://github.com/shokai/irkit-device/compare/master…tempe_sensor



センサーはLM35DZを使っている。電圧から摂氏温度に変換してjsonで返す。今23度だってわかる。

新しいrouteを追加するのに、GS_MAX_ROUTESの数を増やさねばならない事にしばらく気づかなかった。

LM35DZ+IRKit

analog 0〜4を全部読んで、jsonで返してくるファームウェア

/sensorsにHTTP-GETするとアナログピン全部読んで返す。
https://github.com/shokai/irkit-device/compare/master…sensors_json


なお現在のIRKitだと、この2つを同時に実装するとプログラムメモリの容量を超えてブートローダーを破壊してしまう。それぐらい容量カツカツなので、モールスWiFiセットアップを削ったのわかる。

関連:IRKitのブートローダーを破壊したので直した