FC2ブログ
04-<< 12345678910111213141516171819202122232425262728293031>>06-

Google Homeで水槽のステータスを喋らせる

2018-03-18
APEX FUSIONにログインしないと外出先で水槽のステータスが判らないので、喋って教えてくれるようにしました。あと文字で見たいときはSlackのログを見れば判ります。

まずは喋らせるためのスクリプト bin/say.jsを用意します
Google Homeの喋らせ方」にありますので作成してください。
ただしそのままだとエラーが発生したりするので、「google-home-notifierの「Error: getaddrinfo -3008」に対処する」のとおり、browser.jsを修正してください。{families:[4]}にするのがポイントのようですね

とりあえずテストはこんな感じでやってみてください
bin/say.js "こんにちは"

そうすると喋ることができる装置が表示され、全て反応します。複数のGoogle HomeとChromecastまで喋ります
Device "Google-Home-b413…" at 192.168.1.37:8009
Device "Google-Home-d0b68…" at 192.168.1.26:8009
Device "Chromecast-1b129…" at 192.168.1.22:8009

うちでは、Google-Home-d0bがリビングに置いてあるのでそこで喋らせるようにします

あとはbin配下にシェルスクリプトを作ります。ここでは、cgi-bin/status.xmlから情報を取得します。
※2018/3/19 タグがうまく表示されていなかったので修正しました
#!/bin/sh
curl --fail --silent --show-error --user admin:PASSWORD http://APEX_LOCAL_IP:APEX_PORT/cgi-bin/status.xml | grep -i "<name>$1</name> " | grep '<value>' | cut -f4 -d'>' | sed 's/ //g' | cut -f1 -d '<'
exit 0


※PASSWORD、APEX_LOCAL_IP:APEX_PORTは書き換えてください。

そしてステータスを喋るためのスクリプトを作ります。ここではパラメータで喋ることを切り替えられる作りにしていますので、好きに変えてください。あと/home/myhubot/binは環境に合わせて書き換えてください
#!/bin/sh
#リビングのGoogle Homeで水槽のステータスを喋る

#水温だけしゃべる
if   [ "$1" = "1" ]; then
	/home/myhubot/bin/say.js \
	"水槽の水温は"`/home/myhubot/bin/apexstat.sh Temp`"度です" \
	ja Google-Home-d0b
else
#ひととおり喋る
	/home/myhubot/bin/say.js \
"水槽の水温は"`/home/myhubot/bin/apexstat.sh Temp`"度、"\
"塩分濃度は"`/home/myhubot/bin/apexstat.sh Cond`"パーミル、"\
"ORPは"`/home/myhubot/bin/apexstat.sh ORP`"ミリボルト、"\
"ペーハーは"`/home/myhubot/bin/apexstat.sh pH`"、"\
"リアクターペーハーは"`/home/myhubot/bin/apexstat.sh pHCR`"、"\
"メインポンプ流量は"`/home/myhubot/bin/apexstat.sh FlowMP`"リットル毎時、"\
"サブポンプ流量は"`/home/myhubot/bin/apexstat.sh FlowSB`"リットル毎時、"\
"アンペアは"`/home/myhubot/bin/apexstat.sh Amp_3`"、"\
""`/home/myhubot/bin/apexstat.sh Amp_4`"、"\
""`/home/myhubot/bin/apexstat.sh Amp_7`""\
"です "\
	 ja Google-Home-d0b
fi


Temp、pH等はAPEXのセンサーの名前です。どんな名前か判らなくなったら、cgi-bin/status.xmlをブラウザで開いてみて、それに合わせてください。
Google-Home-d0bの部分は、喋らせたいGoogle Homeを区別するために使います。

できたら実行権限をつけておきます
chmod 755 bin/*.sh

そのあとはhubotにコマンドを認識させます
sudo systemctl stop homebot
npm install hubot-broadlink-rm@latest
bin/hubot

homebot command apex:stat bin/sayapexstat.sh "#"

exit
redis-cli save

sudo systemctl restart homebot

あとはIFTTTに登録します。
20180318_010.jpg

「水槽のステータス」と喋れば、水温他を教えてくれます。違うことを喋らせる時は send apex:stat(1) とかにしてください

関連記事
スポンサーサイト





B!
★Neptune Apex★ | コメント:(2) | トラックバック:(0)
コメント:
No title
待ってました!
多分できるだろうなぁと、思いつつもスキル不足で実現できていませんでした💦

さすがネコさん!
ありがたく使わせていただきます🎶m(_ _)m
ムコタマさんへ
こんにちは。
まぁ応用ですね
この方法も掲示板に書いてありましたね。XMLの値にスペースが入るところがあったのでそこだけハマりました…
APEXへの接続は一本化したかったのですが、別々のシェルになってしまいましたね

管理者のみに表示

FC2 Blog Ranking Related Posts Plugin for WordPress, Blogger...