ラズパイとスマートホームコントローラ sRemo-R3
Raspberry PiとNode-redで、リビングに飾れる美しい「スマートホームコントローラ」を作ってみた
を参考に実践
irMagician で赤外線センサーを実験したけど
今使われているリモコンのように多数の赤外線センサーが
あるわけではなく1つだけなので
これだと正確に向きを合わせる必要性があり断念
多方向に赤外線を飛ばすには
スマートリモコンを自作するか
もしくは
対応するパーツを購入し
センサーの代わりに代用するほうが効率的と判断
今回は
sRemo-R3 を購入し
これを赤外線でコントロールするセンサーの代わりに使う
すでに node-red はセットしてあるので
ubuntu のブラウザ
今回は firefox で
http://raspberrypi.local:1880/admin/
へアクセス
すでにログインしているなら数日間は
自動ログインできる
管理者権限でのログインになるので
ユーザを admin
パスワードは
bash nrpiadminpass.sh 任意のパスワード
で設定したパスワードを使用
これでログインできることを確認したら
次に静的 webサーバの有効化
settings.js を変更することで静的webサーバを有効化
cd .node-red/ vim settings.js
で設定ファイルを開き
104行目の
//httpRoot: '/red',
のコメントアウトを外し
109行目の
//httpStatic: '/home/nol/node-red-static/',
を
//httpStatic: '/home/nol/node-red-static/', httpStatic: '/home/pi/node-red-static/',
と元のコードを残し
パスを変えて保存
cd mkdir node-red-static cd node-red-static/ echo "<html><body>Test Page</body></html>" > index.html
でテストページを作成
あとは
node-red-restart
で node-red を再起動し
ブラウザで
http://raspberrypi.local:1880/
へアクセスすれば
テストページが表示される
次にスマートリモコンの設定
これはマニュアルをみて設定する
使用したスマートリモコンは
sRemo-R3
マニュアルについては
リモコン設定と操作(エアコン)
を参考に
次にsRemo Cloud へアクセス
https://sremo.biz/
へアクセス
Login をクリックし
初期設定のときに登録した
メルアドとパスワードでログイン
sRemo 情報をクリック
sRemo識別子を覚えておく
そして元のメニューにもどり
APIアクセストークン
をクリック
新規トークン発行をクリック
これでアクセストークンが発行される
なお1ユーザ1トークンとなるので
わからなくなったら再発行することになる
次に sRemoWebAPI の操作
curl -H "Authorization: Bearer <APIアクセストークン>" https://<APIサーバ>/user_api/<sRemo識別子>/send_sig?sig=0-<リモコン番号>
を実行
例えば
APIアクセストークン
123456789
APIサーバ
uapi1.sremo.net
sRemo識別子
abcdefghij
リモコン番号
1
なら
curl -H "Authorization: Bearer 123456789" https://uapi1.sremo.net/user_api/abcdefghij/send_sig?sig=0-1
を実行すると
OK
となる
sCloud-API の利用方法については
sCloud-API利用方法
を参考に
温度 湿度 照度
を取得するなら
curl -H "Authorization: Bearer APIアクセストークン" https://APIサーバ/user_api/sRemo識別子/get_thl
を実行すれば
{"t":27,"h":48,"l":55}
というように
JSON形式で返答される
t が温度
h が湿度
l が照度
となる
時間の取得をするには
curl -H "Authorization: Bearer APIアクセストークン" https://APIサーバ/user_api/sRemo識別子/get_time
を実行すれば
{"t":"2020-08-08 05:47:12"}
というように現在時刻を取得できる
コマンドをコピペして実行したときに
{"error":"invalid_request","error_description":"The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed. Check the \"access token\" parameter."}
と出たが
これは ” の部分が全角になっていたため
温度や湿度、照度の取得はできたので
次にエアコンの制御
{画面番号}-a-{ON/OFF}-{モード}-{風量}-{風向}-{温度}
という書式
画面番号1、冷房ON、風量:自動、風向:両方、温度:22℃の場合
リクエストは
https://uapi1.sremo.net/user_api/abcdefghij/send_sig?sig=1-a-n-2-1-4-22
というパラメータになる
ON なら n
OFF なら f
モードは
1 自動
2 冷房
3 暖房
風量は
1 自動
風向き両方なら
4
温度を22
としているので
コマンドは
curl -H "Authorization: Bearer APIアクセストークン" https://APIサーバ/user_api/sRemo識別子/send_sig?sig=画面番号-a-n-2-1-4-22
としたらできた
エアコンの停止をするには
curl -H "Authorization: Bearer APIアクセストークン" https://APIサーバ/user_api/sRemo識別子/send_sig?sig=画面番号-a-f-2-1-4-22
というように
パラメータを 停止の f を指定して実行すればOK
次に照明
{画面番号}-{家電種別}-{制御番号}
照明 l
TV 5
DVD d
スイッチ s
が家電種別
制御番号は
消灯2
全灯3
画面番号3、TV、ミュートの場合
https://uapi1.sremo.net/user_api/abcdefghij/send_sig?sig=3-t-29
というパラメータになるので
これを参考に実践
curl -H "Authorization: Bearer APIアクセストークン" https://APIサーバ/user_api/sRemo識別子/send_sig?sig=画面番号-l-3
で全灯
curl -H "Authorization: Bearer APIアクセストークン" https://APIサーバ/user_api/sRemo識別子/send_sig?sig=画面番号-l-2
で消灯
となる
とりあえずエアコンの動作、照明のON・OFFは
コマンドから操作できるようになり
部屋の温湿度、照度も
sRemo-R3 で取得できるようになった
取得結果は JSON で得られるので
今後の課題は
シェルスクリプトで定期的にセンサーで取得し
温湿度に合わせて自動でエアコンを動作させること