LoginSignup
14

More than 5 years have passed since last update.

Amazon Echoから赤外線リモコン機器(テレビ、照明など)をコントロールする(ラズベリー・パイ専用 学習リモコン基板 ADRSIRを使って)

Last updated at Posted at 2018-01-19

ラズベリー・パイ専用 学習リモコン基板 ADRSIRとは

  • http://bit-trade-one.co.jp/product/module/adrsir/
  • この学習リモコン基板を導入して、Alexaからリモコンを自由に制御できるようになって、シーリングライトの制御や、テレビ、アンプの制御など、リモコンを探すことなく、ハンズフリーでコントロールできるようになって非常に便利になりました!!

事前準備

http://bit-trade-one.co.jp/support/download/ から「■USB接続 ラズベリー・パイ専用学習リモコン基板」または「ADRSIR」で検索して、
1. リモコンコードリスト(CSV)
2. ソフトウェア3種
をダウンロードしておく

Raspberry Piの設定

  1. http://hatobus.hatenablog.jp/entry/2017/08/02/215135 を参考に、i2c-toolsとsmbusをインストール
  2. 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に登録したリモコンコードが送出される キャプチャ.PNG

コントロールしたいコマンドが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連携

Alexa+Node-RED

pythonコードのバグ

  • IR-remocon02-commandline.py
202:-           write_command(memo_no,block2)
202:+           trans_command(block2)

私の環境

  • 定形アクション
    • 1つのアクションには1つの言葉しか設定できないようなので、同じアクションを複数の言葉で登録していることもあって20個以上ある…アプリだけじゃなくWebでも編集できればいいのに…
    • Screenshot_20180121-173041.png
  • https://alexa-node-red.bm.hardill.me.uk で設定したデバイス
    • キャプチャ3.PNG
  • Node-REDのフロー
    • キャプチャ2.PNG
  • コード
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

  • 管理用Excel キャプチャ4.PNG

その他

ケース

  • 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」を検索して、
1. リモコンコードリスト(CSV)
2. ソフトウェア3種
をダウンロードしておく

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14