Raspberry PiとNode-redで、Hueブリッジ(Zigbee Hub)を作ってみた(スマホ&Alexa操作対応)[2/3]

スマートホーム
スポンサーリンク
このエントリーをはてなブックマークに追加

はじめに

前回は、CC2531のファームウェアを書き換え、Raspberry PiにNode-redとMosquittoをインストールしました。今回は、Raspberry Piにzigbee2mqttサーバをインストールして、zigbee機器を制御できるようにしていきます。

 ■実現に向けた連載
  第1回:CC2531とRaspberry PIの準備
  第2回:zigbee2mqttサーバのインストールとzigbee機器の接続  <–この記事
  第3回:スマホ&Alexaインタフェースの実装

第2回:zigbee2mqttサーバのインストールとzigbee機器の接続

zigbee2mqttサーバのインストール

今回は、zigbee機器と通信するためにzigbee2mqttを利用します。zigbee2mqttは、メーカを問わず多くのzigbee機器をサポートしているので、異なるメーカのzigbee機器を接続して相互に運用することができます。

ちなみに、zigbee2mqttがサポートしているzigbee機器の一覧はここにリストがあります。2020年6月時点で、144メーカ、821機器をサポートしているようです‼️すごい‼️

①zigbee2mqttサーバのインストール

まずは、zigbee2mqttのソースコードをクローンして、piユーザが書き込めるようにパーミッションを変更します。

②必要なモジュールのインストール

次に、zigbee2mqttに必要なモジュールを「npm ci」コマンドでインストールします。インストールには5〜8分ぐらいかかるので、気長に待ちましょう😊

④zigbee2mqttの起動

必要モジュールがインストールされたら、「npm start」コマンドを入力して、zigbee2mqttサーバを起動してみましょう。起動すると前回インストールしたmosquittoに接続して、zigbee機器のペアリング待ち状態になります。

これで、zigbee2mqttサーバのインストールは完了です。

zigbee機器のペアリング

ここからは、zigbee機器をRaspberry Piにペアリングしていきます。今回は、手元にあったIKEAのスマート電球「LED1732G11」と調光用リモコン「E1524」をペアリングしたいと思います。

①リモコンのペアリング

リモコンをペアリングするには、リモコンとCC2531を5cm以内に置き、リモコンの裏側の蓋を開けたところにある、ペアリングのスイッチを5秒以内に4回押します。

うまくいくと、コンソールに以下のように表示され、リモコンがペアリングされます。

②リモコンからのイベント送信

試しに、リモコンの前面ボタンを押してみましょう。すると、コンソールに以下のように表示され、リモコンのボタン押下イベントがzigbee2mqttに通知されている事が分かります。

③スマート電球のペアリング

次に、IKEAのスマート電球をペアリングします。ただ、スマート電球のペアリングは少々コツがいります。まず、スマート電球を点けた状態にしてRaspberry Piとなるべく近くにしておきます。次に、家の壁のスイッチで「スイッチを消して、点けて」を6回繰り返します。一応、IKEAの公式手順のビデオはここにあります。ただ、私はこの通りにやっても、できませんでした😭

コツは、点けている時間を極力短くすることです。(少し長く)消して→点けて→(すぐに)消す、とすると良いようです。うまくいくと、電球が一回強く光って、以降は暗くなったり明るくなったりを繰り返します。強く光らず、暗くなったり明るくなったりを繰り返している場合は失敗です。

スマート電球のペアリングがうまくいくと、コンソールには以下のように表示されます。

これで、Raspberry Piとzigbee機器のペアリングは完了です。

④ペアリングモードの解除

全てのzigbee機器をペアリングしたら、zigbee2mqttののペアリングモードを解除します。ペアリングモードのままでも使えますが、セキュリティ上、新しい機器が勝手にzigbeeネットワークに参加してしまうのは危険なので、解除することをお勧めします。

ペアリングモードを解除するには「/opt/zigbee2mqtt/data/」にある「configuration.yaml」の「permit_join」をfalseに書き換えます。

⑤自動起動の設定

また、zigbee2mqttもraspberry Pi起動時に自動起動するようにsystemdに登録しておきます。「/etc/systemd/system/」に「zigbee2mqtt.service」ファイルを作成します。

zigbee2mqtt.serviceファイルの中身は、以下のようにします。

ファイルを作成したら、以下のようにしてsystemdに登録して、zigbee2mqttサーバを起動しておきます。

node-redからzigbee機器を操作する

ここからは、ペアリングしたzigbee機器をnode-redから扱えるようにしていきます。node-redからzigbee機器を操作するには、node-red-contrib-zigbee2mqttを使います。

①node-red-contrib-zigbee2mqttのインストール

PCのWebブラウザでNode-redの画面を開き、右上の「三」メニューから「パレットの管理」を選択します。

次に「ノードを追加」タブを開き、検索欄に「zigbee2mqtt」と入力します。すると、node-red-contrib-zigbee2mqttが出てきますので「ノードを追加」をクリックします。

正常にインストールが完了すると、以下のように4つのノードがパレットに追加されます。インストールには、だいたい5分程度かかりました。

②bridgeノードの追加

次に、左側パレットの「bridge」ノードをドラッグして追加します。「bridge」ノードが追加できたら、ダブルクリックして編集画面を開き、Server欄にある鉛筆アイコンをクリックします。

③zigbee2mqttサーバ設定

zigbee2mqttサーバの設定画面で「Host」欄に「localhost」と入力し「追加」ボタンをクリックします。この設定で、上でインストールしたzigbee2mqttサーバと接続されます。

「bridge」ノードの編集画面に戻ったら「完了」ボタンをクリックします。

④デプロイ

ノードを有効化するために、画面右上の「デプロイ」ボタンをクリックします。

⑤zigbee機器の確認

デプロイが完了すると「bridge」ノードの下に「online」と表示されます。またノードをダブルクリックして編集画面を開き、「Devices」タブを開くと、上でペアリングした機器が表示されます。

⑥Friendly nameの設定

初期設定では、Friendly nameは機器のMACアドレスになっているので、分かりやすい名前に変更しましょう。各機器のFriendly nameの欄を変更して、右側の「set」のボタンをクリックすればOKです。

⑦ボタンイベントの受信

次に、リモコンのボタンが押された時に、node-redでそのイベントを受信できるようにします。まず、左側のパレットからzigbee2mqttの「in」ノードをフローに追加し、編集画面のDevice欄でリモコンのデバイスを選択します。

次に「debug」ノードをフローに追加して、先ほど追加した「in」ノードと以下のように接続します。そして「デプロイ」ボタンをクリックします。

デプロイが完了したら、リモコンの前面ボタンを押してみましょう。以下の画面のように「in」ノードの下にOKと表示され、デバックウィンドウにメッセージが表示されればOKです‼️

⑦電球の操作

次に、node-redから電球を点けたり、消したりできるようにしてみます。まずzigbee2mqttの「out」ノードを追加し、編集画面で以下のように設定します。

 ・Device:電球
 ・Payload:種類で「文字列」を選択し、値に「toggle」と入力

次に「inject」ノードを追加し、「out」ノードと接続して「デプロイ」ボタンをクリックします。

デプロイが完了したら、電球に通電(家の壁スイッチON)しておき、Node-redの「inject」ノードのボタンを押してみましょう。ボタンを押すごとに、電球が点いたり、消えたりすればOKです‼️

おわりに

今回は、Raspberry Piにzigbee2mqttサーバをインストールしてzigbee機器とペアリングし、それをNode-redから操作できるようにしてみました。当然、リモコンのノードと電球のノードを接続すれば、リモコンのボタンを押すと電球が点いたり、消えたりするようにできます。

また、今回は手元にあった、IKEAのリモコンと電球を例に説明しましたが、他のメーカのセンサーや機器でもzigbee2mqttを使って制御することが可能です。そして、異なるメーカの機器どうしもNode-redで線を引くだけで連携して動作させることが可能です‼️

次回は、連載の最後、zigbee機器をスマホやAmazon Alexaから操作できるようにしてみたいと思います。

 ■実現に向けた連載
  第1回:CC2531とRaspberry PIの準備
  第2回:zigbee2mqttサーバのインストールとzigbee機器の接続
  第3回:スマホ&Alexaインタフェースの実装  <–次はこれ

関連記事

記事が参考になったら、ブログランキングに協力(クリック)して貰えると嬉しいです。
スポンサーリンク
naka-kazz

昼間はIT企業に勤めてますが、プライベートでは「育児×家事×IoT」をテーマに家のスマートホーム化に取り組んでいます。Androidアプリも作っているので使って下さい。質問・コメントは、↓のコメント蘭でもFacebookメッセンジャーでもどちらでも大丈夫です。
E-mail:naka.kazz.d@gmail.com

naka-kazzをフォローする
スマートホーム 開発者向け
naka-kazzをフォローする
育児×家事×IoT

コメント

タイトルとURLをコピーしました