LoginSignup
6
6

More than 5 years have passed since last update.

Amazon Echoから家電を制御 2 ~テレビを我が手中に収めてやった 基本操作編~

Last updated at Posted at 2018-07-30

テレビの基本的なことを制御するフロー

テレビの基本的なこと=テレビのon/offとボリュウムの上げ下げを制御します。
スクリーンショット 2018-07-30 11.25.50.png
node-red-contrib-alexa-localノードにテレビという名前を与えました。
各switchノードではmsg.on、msg.on_off_command、msg.bri、msg.i、msg.change_directionの値で分岐しています。

msg.に持ってる値

掛け声とそれに対応する各プロパティの値です。

msg. on on_off_command bri change_direction
つけて true true 不定 0
けして false true 0 0
大きくして true false 74 1
低くして true false 39 0

「つけて」のmsg.briは直前のmsg.saved_briに左右されるので不定とします。

switchノード msg.on

"true"または"fales"が渡されます。

"true"が渡されたら"is true"に接続されたswitchノードに流れます。
後の分岐のために、ここではまだtv.shに接続しません。

"false"が渡されたら"is fales"に接続されたtv.shに流れます。
同時にmsg.payloadには"off"が入っていますので、tv.shに"off"を渡して無条件でテレビを消します。

switchノード msg.on_off_command

"true"または"fales"が渡されます。

"true"が渡されたら、いよいよtv.shにmsg.payload="on"とともに流れます。

"fales"が渡されたら後のswitchノードに流れます。

switchノード msg.bri

数値が入っています。
brightの略なのか。たぶん。
連れてきたmsg.briによって分岐します。
「大きくして」で"74"と「低くして」で"34"が渡されたら後のfunctionノードに流れます。
その他の値が渡されたら別のフロー"ch"にlinkノードで流れます。

templateノード msg.i

こちらの記事を参考にさせていただき、while処理をします。
i=0で初期化し、functionノードでインクリメントするそうです。インクリメントって何ですか。
後のswitchノードi<5で5回まで繰り返し処理をします。

switchノード msg.change_direction

"true"または"fales"が渡されます。

「alexa、テレビを大きくして」で"1"が渡されます。
後のchangeノードでmsg.briを受けてmsg.payload="volup"に変換?移動しtv.shに渡します。

「alexa、テレビを低くして」で"0"が渡されます。
後のchangeノードでやはり、msg.briを受けてmsg.payload="voldown"に変換?移動しtv.shに渡します。

I have!!

フロー全体を貼り付けたつもりでしたが、貼り付けできていませんでした。

[{"id":"d1282316.7ea6","type":"tab","label":"TV","disabled":false,"info":""},{"id":"2409d274.be2e0e","type":"alexa-local","z":"d1282316.7ea6","devicename":"テレビ","inputtrigger":false,"x":90,"y":260,"wires":[["43a02821.004c6","254e6aca.729066"]]},{"id":"de708dcf.653d3","type":"exec","z":"d1282316.7ea6","command":"/home/hoge/python-broadlink/cli/tv.sh","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"tv.sh","x":750,"y":260,"wires":[["1269d67c.8bd222"],[],[]]},{"id":"4e6d9d71.94566c","type":"switch","z":"d1282316.7ea6","name":"on_off_command","property":"on_off_command","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":510,"y":200,"wires":[["de708dcf.653d3"],["6d87a273.ebb5bc"]]},{"id":"68e68646.22a8f","type":"switch","z":"d1282316.7ea6","name":"change_direction","property":"change_direction","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":830,"y":480,"wires":[["d2da2aea.e0d198"],["fa4c93dd.5650b8"]]},{"id":"37e0d436.fd85d4","type":"switch","z":"d1282316.7ea6","name":"i<5","property":"i","propertyType":"msg","rules":[{"t":"lt","v":"5","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":670,"y":480,"wires":[["68e68646.22a8f"],[]]},{"id":"b2dc766e.a0bfd8","type":"template","z":"d1282316.7ea6","name":"i=0","field":"i","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"0","output":"str","x":530,"y":480,"wires":[["37e0d436.fd85d4"]]},{"id":"1269d67c.8bd222","type":"function","z":"d1282316.7ea6","name":"i++","func":"msg.i++;\n\nreturn msg;","outputs":1,"noerr":0,"x":530,"y":440,"wires":[["37e0d436.fd85d4"]]},{"id":"d2da2aea.e0d198","type":"change","z":"d1282316.7ea6","name":"volup","rules":[{"t":"set","p":"payload","pt":"msg","to":"volup","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":990,"y":460,"wires":[["de708dcf.653d3"]]},{"id":"fa4c93dd.5650b8","type":"change","z":"d1282316.7ea6","name":"voldown","rules":[{"t":"set","p":"payload","pt":"msg","to":"voldown","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1000,"y":500,"wires":[["de708dcf.653d3"]]},{"id":"6d87a273.ebb5bc","type":"switch","z":"d1282316.7ea6","name":"bri","property":"bri","propertyType":"msg","rules":[{"t":"eq","v":"74","vt":"num"},{"t":"eq","v":"39","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":390,"y":500,"wires":[["b2dc766e.a0bfd8"],["b2dc766e.a0bfd8"],["a80096a5.8428a8"]]},{"id":"a80096a5.8428a8","type":"link out","z":"d1282316.7ea6","name":"->CH","links":["470b1eb8.4d67e"],"x":495,"y":520,"wires":[]},{"id":"43a02821.004c6","type":"switch","z":"d1282316.7ea6","name":"on","property":"on","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":270,"y":260,"wires":[["4e6d9d71.94566c"],["de708dcf.653d3"]]},{"id":"254e6aca.729066","type":"debug","z":"d1282316.7ea6","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":270,"y":140,"wires":[]}]

他の家電は

同じようなことをして制御しています。
必要に応じ、msg.briとmsg.change_directionの順番を変えてフローを書きます。
ここにたどり着くまでに結構な時間がかかりました。
相当のスキルをお持ちの方は鼻で笑うような試行錯誤かと思いますが、かなり楽しい時間を過ごせました。
この記事によって、一人でも多くの方がnode-redとAmazon Echoに興味を持っていただけたら、この界隈が賑やかになり、明日の私が幸せになることでしょう。

投稿の数日後、増築しました

要塞感溢れるフローですが、要塞の増築をしました。
amazon Echoは全く経由しませんが、iPhoneやMac、windowsのwebブラウザから家電を制御します。
node-red-dashboardでwebリモコンを作ってみた
コードを書かないでなんとかする。という理念の元、実現できました。

Amazon Echoで遊ぼう

前提環境

大凡1.5hで構築するraspberry pi + node-red + samba

Amazon Echoから家電を制御シリーズ

Amazon Echoから家電を制御 0 ~RMmini3 + python-broadlinkで学習~
Amazon Echoから家電を制御 1 ~node-red-contrib-alexa-local~
Amazon Echoから家電を制御 1.25 ~node-red-contrib-alexa-localの日本語の情報が少ないのでもう少し調べてみる~
Amazon Echoから家電を制御 2 ~テレビを我が手中に収めてやった 基本操作編~
Amazon Echoから家電を制御 3 ~テレビを我が手中に収めてやった ch操作編~
node-red-dashboardでwebリモコンを作ってみた

6
6
0

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
6
6