ラズベリー・パイ専用 学習リモコン基板 ADRSIRとは
- http://bit-trade-one.co.jp/product/module/adrsir/
- この学習リモコン基板を導入して、Alexaからリモコンを自由に制御できるようになって、シーリングライトの制御や、テレビ、アンプの制御など、リモコンを探すことなく、ハンズフリーでコントロールできるようになって非常に便利になりました!!
事前準備
http://bit-trade-one.co.jp/support/download/ から「■USB接続 ラズベリー・パイ専用学習リモコン基板」または「ADRSIR」で検索して、
- リモコンコードリスト(CSV)
- ソフトウェア3種
をダウンロードしておく
Raspberry Piの設定
- http://hatobus.hatenablog.jp/entry/2017/08/02/215135 を参考に、i2c-toolsとsmbusをインストール
- Raspberry Pi 3 Model B+RaspbianのPython 2.7だとIR-remocon02-commandline.pyはシンタックスエラーが出るので、エラー行をとりあえずコメントアウト(まずは動かすのを優先^^;)
コマンドの意味
- w : 基板にリモコンデータを書き込み
- r : 基板からリモコンデータを読み込み
- t : リモコンデータの送信(
IR-remocon02-commandline.pyではうまく動かなかった→tコマンドでtrans_commandではなく、write_commandを呼び出しているため)
Node-RED連携
以下はコントロールしたいコマンドが10個でいい場合(⇒事前に10個のボタンにコードを"w"しておいて、ボタン指定でコード送信)
- ソフトウェア3種のZIPに入っている、nod-red-program20171213.json を、Node-REDのフローエディタのメニュー-読み込み-クリップボードに貼り付け
- そうすると、サブフロー(パレットの一番上)にリモコン1から10が追加される
- リモコン1から10は、基板上のボタン1から10に対応し、またpythonで実行する際のmemo_no(メモリ番号?)の0から9に対応する
- injectノードなどでリモコン1を実行すると、基板上のボタン1を押下したのと同じように、memo_no=0に登録したリモコンコードが送出される
コントロールしたいコマンドが10個以上ある場合(⇒"t"コマンドで動的にリモコンコードを送信する)
- IR-remocon02-commandline.pyでリモコンコードが記載されたファイルを引数にして、送信できるように修正する
- IR-remocon01-commandbase.py から、ファイル名を受け取って送信できるtrans_commandをIR-remocon02-commandline.pyにコピペして、trans_command2のように関数名を変更する
- コマンドtでwrite_command(上でtrans_commandに修正した場合はtrans_command)をtrans_command2(block2)に変更する
-
IR-remocon01-commandbase.py t ファイル名
IR-remocon02-commandline.py t ファイル名
で指定したファイルのリモコンコードが送信される - functionノードで、msg.payloadにファイル名を指定する
- execノードで、
"IR-remocon01-commandbase.py t ""IR-remocon02-commandline.py t "でコマンドを実行する
Alexa連携
-
Node-RED Alexa Home Skill Bridge にアカウントを登録する
-
Node-RED Alexa Home Skill Bridge でデバイスを追加する
-
2018/01/21現在、日本語版AlexaはOn/Offと%指定ぐらいしか設定できないようなので、OnとOffのデバイスを必要な数だけ作っておく
-
AlexaアプリでNode-REDスキルを有効にして、Node-RED Alexa Home Skill Bridge
とアカウント連携しておく -
Alexaアプリのスマートホームからデバイスの追加で、 Node-RED Alexa Home Skill Bridge で追加したデバイスを追加する
-
Aleaxアプリから定形アクションで、アクションにデバイスのOn/Offアクションを追加する
-
Node-RED Alexa Home Skill Bridgeは個人でサーバを立てていらっしゃるようです。感謝の意をこめて、 https://alexa-node-red.bm.hardill.me.uk/about のリンクからビールをおごりましょう!!
Alexa+Node-RED
- Node-REDでパレットの管理からノードの追加でnode-red-contrib-alexa-home-skillを追加する
- alexa homeノードをフローに追加して、アカウントに https://alexa-node-red.bm.hardill.me.ukのアカウント、デバイスを設定する
-
https://alexa-node-red.bm.hardill.me.uk からは、msg.deviceにデバイス名、msg.commandに
TurnOnRequest
/TurnOffRequest
が渡ってくるので、SwitchノードやFunctionノードで、振り分けてリモコンxノードやexecノードでIR-remocon02-commandline.pyを指定して、リモコンコードを送信する
pythonコードのバグ
- IR-remocon02-commandline.py
202:- write_command(memo_no,block2)
202:+ trans_command(block2)
私の環境
- 定形アクション
- 1つのアクションには1つの言葉しか設定できないようなので、同じアクションを複数の言葉で登録していることもあって20個以上ある…アプリだけじゃなくWebでも編集できればいいのに…
- https://alexa-node-red.bm.hardill.me.uk で設定したデバイス
- Node-REDのフロー
- コード
var arrFile = []
arrFile['LivingLight-TurnOnRequest']='~/I2C0x52-IR/living/ch0.data'
arrFile['LivingLight-TurnOffRequest']='~/I2C0x52-IR/living/ch1.data'
arrFile['LivingLight2-TurnOnRequest']='~/I2C0x52-IR/living/ch2.data'
arrFile['LivingLight2-TurnOffRequest']='~/I2C0x52-IR/living/ch3.data'
arrFile['LivingLight3-TurnOnRequest']='~/I2C0x52-IR/living/ch4.data'
arrFile['LivingLight3-TurnOffRequest']='~/I2C0x52-IR/living/ch5.data'
arrFile['LivingLight4-TurnOnRequest']='~/I2C0x52-IR/living/ch6.data'
arrFile['LivingLight4-TurnOffRequest']='~/I2C0x52-IR/living/ch7.data'
arrFile['Amp-TurnOnRequest']='~/I2C0x52-IR/amp/ch0.data'
arrFile['Amp-TurnOffRequest']='~/I2C0x52-IR/amp/ch1.data'
arrFile['Amp2-TurnOnRequest']='~/I2C0x52-IR/amp/ch2.data'
arrFile['Amp2-TurnOffRequest']='~/I2C0x52-IR/amp/ch3.data'
arrFile['Amp3-TurnOnRequest']='~/I2C0x52-IR/amp/ch4.data'
arrFile['Amp3-TurnOffRequest']='~/I2C0x52-IR/amp/ch5.data'
arrFile['Amp4-TurnOnRequest']='~/I2C0x52-IR/amp/ch6.data'
arrFile['Amp4-TurnOffRequest']='~/I2C0x52-IR/amp/ch7.data'
arrFile['Recorder-TurnOnRequest']='~/I2C0x52-IR/recorder/ch0.data'
arrFile['Recorder-TurnOffRequest']='~/I2C0x52-IR/recorder/ch1.data'
arrFile['Recorder2-TurnOnRequest']='~/I2C0x52-IR/recorder/ch2.data'
arrFile['Recorder2-TurnOffRequest']='~/I2C0x52-IR/recorder/ch3.data'
arrFile['Recorder3-TurnOnRequest']='~/I2C0x52-IR/recorder/ch4.data'
arrFile['Recorder3-TurnOffRequest']='~/I2C0x52-IR/recorder/ch5.data'
arrFile['Recorder4-TurnOnRequest']='~/I2C0x52-IR/recorder/ch6.data'
arrFile['TV-TurnOnRequest']='~/I2C0x52-IR/tv/ch0.data'
arrFile['TV-TurnOffRequest']='~/I2C0x52-IR/tv/ch1.data'
arrFile['TV2-TurnOnRequest']='~/I2C0x52-IR/tv/ch2.data'
arrFile['TV2-TurnOffRequest']='~/I2C0x52-IR/tv/ch3.data'
arrFile['TV3-TurnOnRequest']='~/I2C0x52-IR/tv/ch4.data'
arrFile['TV3-TurnOffRequest']='~/I2C0x52-IR/tv/ch5.data'
arrFile['TV4-TurnOnRequest']='~/I2C0x52-IR/tv/ch6.data'
arrFile['TV4-TurnOffRequest']='~/I2C0x52-IR/tv/ch7.data'
arrFile['TV5-TurnOnRequest']='~/I2C0x52-IR/tv/ch8.data'
arrFile['TV5-TurnOffRequest']='~/I2C0x52-IR/tv/ch9.data'
arrFile['TV6-TurnOnRequest']='~/I2C0x52-IR/tv2/ch0.data'
arrFile['TV6-TurnOffRequest']='~/I2C0x52-IR/tv2/ch1.data'
arrFile['TV7-TurnOnRequest']='~/I2C0x52-IR/tv2/ch2.data'
arrFile['TV7-TurnOffRequest']='~/I2C0x52-IR/tv2/ch3.data'
msg.payload = arrFile[msg.name + "-" + msg.command]?arrFile[msg.name + "-" + msg.command]:null
その他
ケース
- RSコンポーネンツ製ケース http://ssci.to/2648 には残念ながら入らない
- オフィシャルケースには入る
リモコンコードを学習させる
- 基板上のスライドスイッチをlearnにすると、LEDが青色に点灯
- 学習させるボタンを押下
- 基板にリモコンを向けて学習させたいボタンを押す
- IR-remocon01-commandbase.pyまたはIR-remocon02-commandline.pyでr/rdして、ファイルに落とす
- IR-remocon01-commandbase.pyでディレクトリを作成、切り替えながら10個ずつファイルに落とすと楽かも。
ソースコード
http://bit-trade-one.co.jp/support/download/ から「■USB接続 ラズベリー・パイ専用学習リモコン基板」または「ADRSIR」を検索して、
- リモコンコードリスト(CSV)
- ソフトウェア3種
をダウンロードしておく