ラズパイとスマートホームコントローラ sRemo-R3

ラズパイとスマートホームコントローラ 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

リモコン番号

なら

 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 自動
風向き両方なら

温度を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 で得られるので
今後の課題は
シェルスクリプトで定期的にセンサーで取得し
温湿度に合わせて自動でエアコンを動作させること

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です