1
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

スマートホームスキルとNode-redとpython-broadlinkを使ってrm mini3を音声操作するメモ

Last updated at Posted at 2018-04-23

スマートホームスキルとNode-redとpython-broadlinkを使ってrm mini3を操作するようにするメモ

参考:Amazon Echoで「○○をつけて」と言って家電を操作する - Qiita

ほとんどここの内容。rm mini3 + debian(strech)バージョン。日本語打つのが嫌なのでめっちゃ参照する。

前置き

Alexaでスマートホームを実現する方法は主に以下の方法ある。

  • カスタムスキル
  • IFTTT連携
  • スマートホームスキル

上から順に自由度が高いが、スマートホームスキル以外は依頼時に呼び出し名が必要で使い勝手が悪い。

e.g.「アレクサ、"リモコンを起動して"テレビをつけて」、「アレクサ、テレビをつけて"をトリガー"」

スマートホームスキルは現状の対応操作(ON,OFF,調光,調色)しかできないが、自然な依頼が可能である。

e.g. 「アレクサ、テレビつけて」、「アレクサ、照明を明るくして」

カスタムスキルであれスマートホームスキルであれ、スキル開発が(それなりに)面倒くさいので一番シンプルにやるならIFTTT連携が良い感じだった。

そんなある日、イギリスのおじさんがスマートホームスキルの面倒な部分を実装して必要なところだけをサービスとして提供してくれている事を知った。今回それを使って、自然な依頼でrm mini3を音声操作できるようにする。イギリスのおじさんに大いに感謝する。(paypalでビール代を送ってあげよう)

使うもの

  • ハードウエア
    • alexa
      • スマートスピーカ
    • rm mini3
      • wifi ir リモコン
    • debian(strech)
      • お家にある常時起動かつnode-red,pythonが動けば何でも良い
    • (ルータ)
  • ソフトウェア
    • Node-RED Alexa Home Skill Bridge
      • イギリスのおじさんが開発したホームスキルとnode-redを繋げる無料Webサービス
      • ビール代はこちらからpaypalで。
    • Node-red (on node.js)
      • 機能毎に用意されたノードをGUIでいじるだけでプログラムを作れるサーバ
    • python-broadlink
      • rm mini3をコマンドラインから操作するpythonで書かれたプログラム

それでは始めよう。

スマートスピーカーが成熟するとこのような工夫は不要になるでしょうが、逆にハックする楽しみを味わえるのは今ならではです。

手順.0

ぐっちゃぐちゃにする用のフォルダを作ろう

mkdir ~/smarthome-project
cd smarthome-project

手順1. Node-RED Alexa Home Skill Bridgeのセットアップ

リンク先と全く同じ

手順2. スマートホームスキル (Node-RED) とデバイスを追加する

リンク先と全く同じ

手順3. Node-redとpython-broadlinkのインストール

node-redのインストール

Debian(strech)だと普通にaptするとかなり古いしnpm入らないというクソ仕様なので、公式サイトパッケージマネージャを利用した Node.js のインストール | Node.jsに従う。

curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
sudo apt-get install -y nodejs

sudo npm install -g --unsafe-perm node-red 

node-red #起動

最近のraspberry piはこんなことしなくても標準でnode-red入ってるらいしい。

RaspberryPiでNode-REDが使えるようになった - Qiita

python-boradlinkのインストール

sudo apt install python
sudo apt install python-pip #pipが入っているならいらない。よく覚えてない

(setuptoolsがないと言われる場合)
wget http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
(ここまで)

sudo pip install broadlink

sudo apt install git
git clone https://github.com/mjg59/python-broadlink.git

cd python-broadlink/cli

# ~/smarthome-project/python-broadlink/cli

# rm mini3の認識

./broadlink_discovery
	XxXXXX xxx.xxx.xxx.xxx. xxxxxxx

# いい感じに認識してそうなら情報を保存

./broadlink_discovery > ROOM.device

# 学習(コマンドを叩いてからrm mini3に向けてリモコンを操作)

./broadlink_cli --device @ROOM.device --learnfile LIGHT.on

# 送信(学習させた内容が動作することを確認),@を忘れずに

./broadlink_cli --device @ROOM.device --send @LIGHT.on

手順4. Node-REDで家電操作のフローを作成する

execノード以外は同じ

execノードには*.shではなく送信コマンドをフルパスで入れる。むっちゃ長くなるので引数を使うと多少まし。

コマンド:/home/(ユーザ名)/smarthome-project/python-broadlink/cli/broadlink_cli

引数:--device @/home/(ユーザ名)/smarthome-project/python-broadlink/cli/ROOM.device --send @/home/(ユーザ名)/smarthome-project/python-broadlink/cli/LIGHT.on
(msg.payloadのチェックを外すこと)

あとはデバイス毎やON,OFFや照度の調整ごとにどんどフローを作っていくだけ!

こんな感じ
私はこんなかんじになった

手順5. シェルスクリプトからNature Remoを使って照明をつける

コマンドで実施済みのため必要なし。

手順6. テレビやtorneを遠隔から操作できるようにする

Braviaやtorneを連携する場合には参考に。

手順7. node-redoのservice化

全てうまくいったらnode-redをサービス化しておく。raspberry piの場合でも使えそうだけどやったことはない。

sudo nano /lib/systemd/system/nodered.service

(以下の内容で作る、パスの指定だけ見直して。)
[Unit]
Description=The NodeRed
After=syslog.target network.target

[Service]
Type=simple
User=root
Group=root
Nice=5
KillSignal=SIGINT
ExecStart=/usr/bin/node-red
Restart=on-failure
StandardOutput=syslog
WorkingDirectory=/home/(ユーザ名)/.node-red
User=root
Group=root
[Install]
WantedBy=multi-user.tar



sudo systemctl daemon-reload
sudo systemctl enable nodered.service
sudo systemctl start nodered.service

memo
Debian(strech)の正体はrock64にRelease 0.6.32: jenkins-linux-build-rock-64-210 · ayufan-rock64/linux-buildを入れてる。

SynologyでやってもよかったけどNASをいじくり回すの怖い。

1
9
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
1
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?