はじめに
うちはIKEAのスマート電球を使って、キッチンの照明をスマホやAlexaで操作できるようにしています。ただ、IKEAのスマート電球を使う時には、イケアのアプリを起動して、スマートリモコンを操作する時には、スマートリモコンのアプリを起動して、、、と個別のアプリを使う必要がありました💦
家の中にいろいろなスマート家電が増えてくると、メーカが違うと連携して操作できないってことが多いと思います。そこで今回は、IKEAのスマート電球をNode-redから操作できるようにしてみたので、ご紹介します。Node-redで集中管理できるようにすれば、他メーカの機器と連動して動作するなんてこともできます‼️
なお、TRADFRI Gatewayにスマート電球がペアリングされている前提で記載しますので、まだの人は説明書などを読んで設定しておいて下さいね。
用意するもの
①Raspberry PI
まずは、今回のZigbee HubのメインとなるRaspberry Piが必要です。今回は、最近新しく買ったRaspberry Pi 4Bを使います。性能は必要ないので、Raspberry Pi Zeroでも大丈夫です。
②TRADFRI電球・リモコン・Gatewayセット
私が購入したのは、TRADFRIの電球×2個、リモコン、Gatewayがセットになったものです。
用意するものは、この2点(4点)だけです。
設定方法
必要なものが揃ったら、さっそく設定していきます。
Node-redのインストール
ここからは、Raspberry PiにNode-redをインストールしていきます。なお、Raspberry PiへのRaspberry Pi OS(旧Raspbian)のインストール手順は、あちこちに情報があるので省略します。今回は、Raspberry Pi OS (32-bit) with desktopの2020-05-27を利用しました。
①Node-redのインストール
N1ode-redのインストールは簡単で、「bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)」のコマンドを実行するだけです。これで必要なモジュールとNode-redがダウンロードされインストールされます。インストールには、大体10分ぐらいかかるので、トイレ休憩にしましょう🚻
pi@raspberrypi:~ $ bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Are you really sure you want to do this ? [y/N] ? y <--yを入力
Would you like to install the Pi-specific nodes ? [y/N] ? y <--yを入力
Running Node-RED install for user pi at /home/pi on raspbian
This can take 20-30 minutes on the slower Pi versions - please wait.
Stop Node-RED ✔
Remove old version of Node-RED ✔
Remove old version of Node.js ✔
Install Node.js LTS ✔ Node v12.18.3 Npm 6.14.7
Clean npm cache ✔
Install Node-RED core ✔ 1.1.2
Move global nodes to local -
Install extra Pi nodes ✔
Npm rebuild existing nodes -
Add shortcut commands ✔
Update systemd script ✔
Any errors will be logged to /var/log/nodered-install.log
All done.
You can now start Node-RED with the command node-red-start
or using the icon under Menu / Programming / Node-RED
Then point your browser to localhost:1880 or http://{your_pi_ip-address}:1880
Started 2020年 7月 24日 金曜日 16:33:58 JST - Finished 2020年 7月 24日 金曜日 16:45:08 JST
②自動起動の設定
インストールが完了したら、Raspberry Piの起動時にNode-redが自動起動するように、Systemdに登録しておきます。
pi@raspberrypi:~ $ sudo systemctl enable nodered.service
Created symlink /etc/systemd/system/multi-user.target.wants/nodered.service → /lib/systemd/system/nodered.service.
③Node-redの起動
それでは、Node-redを起動しましょう。
pi@raspberrypi:~ $ sudo systemctl start nodered.service
pi@raspberrypi:~ $
④Node-redの確認
次に「http://<Raspberry PiのIPアドレス>:1880/」にアクセスしてみましょう。以下のように、おなじみのNode-redの画面が表示されればOKです。
これでNode-redのインストールは完了です。
node-red-contrib-ikea-home-smartのインストール
次に、Node-redからIKEA Gateway経由でスマート電球を操作するために必要な、node-red-contrib-ikea-home-smartをNode-redにインストールしていきます。
①パレットの管理
画面右上の「三」アイコンからメニューを表示し、「パレットの管理」を選択します。
②ノードの追加
画面左側にある「パレット」を選択し、次に「ノードを追加」タブを選択します。
③node-red-contrib-ikea-home-smartのインストール
検索欄に「tradfri」と入力して検索し、検索結果に出てきた「node-red-contrib-ikea-home-smart」の「ノードを追加」ボタンをクリックします。
なお、IKEAのスマート電球を操作するパレットは色々ありますが、「node-red-contrib-ikea-home-smart」が最も新しく、シンプルで使いやすそうでした!!
確認画面が出たら「追加」をクリックします。
しばらく待つと、以下のようにノード追加完了のメッセージが表示されます。
④追加ノードの確認
左側パレットに「ikea homesmart」というノードが追加されている事を確認します、
以上で、node-red-contrib-ikea-home-smartのインストールは完了です。
スマート電球の情報を取得する
ここからは、Node-redにノードを追加して、スマート電球の情報(明るさ、色など)を取得していきます。
①ikea homesmartノードの追加
左側パレットから、「ikea homesmart」ノードをフローにドラッグして追加します。追加したら、ノードをダブルクリックして設定画面を表示します。
②ikea-connectionの追加
設定画面の「connection」欄の右にある鉛筆アイコンをクリックします。
③ikea-connectionの設定
「Address」欄にTRADFRI GatewayのIPアドレスを、「Security Code」欄にTRADFRI Gatewayの裏側に貼ってあるシールに記載のセキュリティーコードを入力して、「追加」ボタンをクリックします。
④設定の完了
ikea-homesmartの設定画面に戻ったら、他の箇所は何も入力せずに「完了」ボタンをクリックします。一度、設定を完了しTRADFRI Gatewayに接続することで、TRADFRI Gatewayに接続されている機器情報を取得できます。
⑤デプロイ
画面右上の「デプロイ」ボタンをクリックし、ノードをデブロイします。
確認メッセージが出ますが、「デプロイの確認」ボタンをクリックします。
⑥ノードの設定
デプロイが完了したら、ノードの設定画面をもう一度開きます。ノードの設定画面で「Device Type」欄で「Light」、「Device」欄で情報を取得したいスマート電球を選択します。
⑦functionノードの追加
次に、TRADFRI Gateway に状態取得のコマンドを投げるために、functionノードをフローに追加します。ノードを追加したら、設定画面を表示し、以下のように1行目に「msg.payload=”status”」と入力します。このように設定することで、スマート電球の状態(status)を取得できます。
⑧Debugノードの追加
次に、取得した情報を表示するために、debugノードをフローに追加します。ノードを追加したら、設定画面を表示し、対象を「msgオブジェクト全体」に変更します。
⑨Injectノードの追加
次に、Inhectノードをフローに追加し、以下のようにノードを線で結びます。
⑩デプロイ
フローが完成したら「デプロイ」ボタンをクリックしましょう!
11.デバッグウィンドウの表示
Debugノードで取得した情報を画面に表示するために、デバッグウィンドウを表示させます。まず、左上の「三」メニューから「表示」→「サイドバーを表示」を選択します。
サイドバーが表示されたら、虫アイコンをクリックしデバッグウィンドウを表示します。
12.動作確認
それでは、Injectノードの左側のボタンを押してみましょう‼️デバッグウィンドウに、以下のように情報が表示されればOKです。特に「payload」→「ligtlist」→「0」のonOffの値や、dimmer(明るさ)の値を確認しましょう。
※これを確認するためには、スマート電球をつけておいて下さいね。
以上で、スマート電球の情報取得は完了です。
スマート電球を操作する
ここからは、スマート電球をNode-redから操作していきます。
①ノードのコピー
上で作成した、4つのノードをコピーして複製します。ノードをコピーするためには、ノードを選択して「Ctrl+c」キーを押し、「Ctrl+v」キーを押すと簡単にコピーできます。
②functionノードの編集
コピーしたfunctionノードの設定画面を開き、1行目の内容を「msg.payload={onOff:false}」と書き換えましょう。このように設定することで、電球をOffにできます。
③デプロイ
設定は以上でOKですので、「デプロイ」ボタンをクリックしましょう。
④動作確認
それでは、コピーしたInjectノードの左のボタンを押してみましょう‼️スマート電球が消えればOKです💡
⑤その他の設定
電球をOffにする設定と考え方は同じですが、電球をOnにしたり、明るさ変更、電球色を変更したりもできます。参考までに、スクリーンショットを貼っておきます。
・電球をOnにする
・電球の明るさを暗く(20%)する
・電球を明るく(100%)する
・電球色を白色にする
・電球色を赤色にする
おわりに
今回は、Raspberry PiにインストールしたNode-redを使って、IKEAのスマート電球をTRADFRI Gateway経由で操作することをやってみました。node-red-contrib-ikea-home-smartを利用することで簡単に操作できました。
コメント