OpenHABから、IKEA TRADFRIスマート電球を操作する(直接ペアリング編)[2/2]

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

はじめに

第1回目の記事では、Raspberry PiにOpenHABをインストールし、MQTTのアドオンをインストールして準備を行いました。今回は、zigbee機器をペアリングし、実際にOpenHABから操作してみたいと思います。

 第1回:OpenHABとアドオンのインストールと設定 
 第2回:IKEAスマート電球のペアリングと操作  <–この記事

第2回:IKEAスマート電球のペアリングと操作 

CC2531 USBスティックの接続

まずは、CC2531 USBスティックをRaspberry Piに接続し、動作確認を行います。

①USBスティックの接続

Raspberry PiのUSBポートにCC2531 USBスティックを差し込みます。USB 2.0のポートでもUSB 3.0のポートでもどちらでも大丈夫です。USBスティックを差し込むと、USBスティックのLEDが緑色に光ります。

②dmesgの確認

SSHログインしたコンソールで以下のコマンドを入力して、dmesgを確認します。「Product: TI CC2531 USB CDC」という行があれば、正しく認識できています。

③USB接続状況の確認

次に、lsusbコマンドで確認します。ここでは「Texas Instruments, Inc.」の行が表示されていれば、正しく認識できています。

④シリアルポートの確認

次に、以下のようにしてシリアルポート用のファイルディスクリプタがあるか確認します。「/dev/ttyACM0」が存在していればOKです。

以上で、CC2531 USBスティックの接続は完了です。

zigbee2MQTTのインストール

次に、Zigbee機器を制御するためにzigbee2MQTTをインストールします。zigbee2MQTTはアドオンでは提供されていないので、手動でインストールします。

①zigbee2MQTTのダウンロード

以下のコマンドを入力して、zigbee2MQTTをダウンロードします。また、ダウンロードしたファイルのオーナを「openhabian」に変更します。

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

次にダウンロードフォルダに移動して、「npm ci」コマンドを入力し、zigbee2MQTTに必要なモジュールをインストールします。

⑤zigbee2MQTTの動作確認

必要なモジュールのインストールが完了したら、「npm start」と入力してzigbee2MQTTを起動します。

ここでの確認ポイントは、USBスティックに正しく接続できていることを示す「zigbee-herdsman started」と、MQTT Brokerに正しく接続できている事を示す「Connected to MQTT server」の2行が表示されている点です。

以上で、zigbee2MQTTのインストールは完了です。

zigbee機器のペアリング

次に、IKEAのリモコンとスマート電球をペアリングしていきます。

①リモコンのペアリング

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

ペアリングがうまくいくと、zigbee2MQTTの画面に以下のように表示されます。ログからも「E1524/E1810」として正しく認識されたことが確認できます。

ここで、表示される「0x680ae2fffe19472a」というデバイス名は後で使うので、テキストエディタなどにメモしておきましょう。

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

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

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

うまくいくと、zigbee2MQTTの画面に以下のように表示されます。ログからも「IKEA TRADFRI LED bulb E27 1000」として正しく認識されたことが確認できます。

ここでもデバイス名をメモしておきます。

③systemdの設定

ペアリングができたら、zigbee2MQTTを起動しているコンソールで「ctrl+c」を押して、zigbee2MQTTを一旦終了させます。そして、OpenHAB起動時にzigbee2MQTTが自動起動するようにsystemdに登録します。

まずは「/etc/systemd/system/」にsystemd用の設定ファイル「zigbee2mqtt.service」を作成します。

zigbee2mqtt.serviceの内容は以下の通りです。

設定ファイルが作成できたら、以下のコマンドを入力して、systemdに登録します。また、systemdを使って、zigbee2MQTTを起動させます。

また、以下のコマンドで、zigbee2MQTTが正しく起動できている事を確認します。「Active: active」となっていればOKです。

以上で、zigbee機器のペアリングは完了です。

Thingsの登録

次に、ペアリングしたzigbee機器をOpenHABにThingsとして登録します。Thingsへの登録はOpenHABのPaperUIからも可能ですが、細かいところに手が届かないので今回は設定ファイルを記載する方法で行います。

特にMQTT機器のChannelをDimmerとして設定できず、今回のようにスマート電球を利用したい場合には、GUIでは設定できません。やり方知っている方居たら、教えて下さい🙏

①Things設定ファイルの作成

Thingsをファイルで設定する場合には「/etc/openhab2/things/」フォルダに「.things」の拡張子を持つファイルを作成します。

今回の場合には、「ikea.things」というファイルを以下のように作成します。

ikea.thingsの内容は、以下の通りです。なお、「0xec1bbdfffef84420」は、上でメモしたスマート電球のデバイス名、「0x680ae2fffe19472a」はリモコンのデバイス名にそれぞれ置換して下さい。

このファイルが、今回の肝になる部分なので、記載内容を解説していきます。

まず、1行目でMQTT BrokerのThingを指定します。今回はアドオンでインストールしたMQTT Brokerを利用するので「mqtt:systemBroker:embedded-mqtt-broker」となります。

5行目〜11行目でスマート電球のThingを定義しています。5行目では、topic(MQTT)型のThingとして、ThingID「0xec1bbdfffef84420」のThingを定義し、表示ラベルとして「IKEA Light」、設置場所として「IKEA Light」を設定しています。設置場所は「リビング」などとしても良いですが、これはPaperUIのタブにあたるものなので、今回は上のようにしてみました。

次に、7〜9行目で、スマート電球のチャネルを定義しています。7行目では、スマート電球をOn/Offするチャネルとして、switch型のチャネルを定義しています。「IKEA_Light_Switch」はチャネルID、「IKEA_Light_Switch」は表示ラベルになります。また、その後の「commandTopic=”zigbee2mqtt/0xec1bbdfffef84420/set”」はOpenHAB上のスイッチを操作した時に、送信するMQTTメッセージのトピック、「formatBeforePublish=”toggle”」は送信するメッセージ内容となります。この記述により、OpenHAB上のスイッチが操作されると「zigbee2mqtt/0xec1bbdfffef84420/set」に「toggle」のメッセージが送信されるという具合になります。同様に、明るさ調節のチャネル、電球色のチャネルを定義しています。

その後、14〜18行目で、リモコンのThingを定義しています。特筆すべきは16行目のチャネル定義かと思います。ここでは「stateTopic=”zigbee2mqtt/0x680ae2fffe19472a”」の値が変更になったら、イベントを発行するように設定しています。つまり、リモコンのボタンが押されたらOpenHAB上でイベントが発生し、そのイベントを受けてスマート電球を動作させるという形になります。

②Thingsの確認

設定ファイルを記述し、保存したら、OpenHAB画面の左メニューのThingsをクリックしてThingsの画面を表示します。すると、以下のように設定ファイルで記述した2つのThingsが追加されていることが確認できます。

なお、追加したThingsが出てこない場合は、設定ファイルの誤りが原因だと思われますので「/var/log/openhab/openhab.log」を確認し、エラー原因を特定しましょう。

また、OpenHABでは設定ファイルで追加したThingsをGUI画面上で変更することはできませんので、変更する場合には設定ファイルを編集する必要があります。

以上で、Thingsの追加は完了です。

Itemsの追加

ここからは、Thingsに紐づくItemsを追加していきます。

①Thingの選択

まずは、「IKEA_Light」の左のアイコンをクリックします。

②Linkの追加

次に、IKEA_Light_Switchの右にある矢印のアイコンをクリックすると表示される「Linked Items」の「+」ボタンをクリックします。

③Itemの追加

Link channelの画面が表示されたら、「Please select the item to link」欄の下向き矢印をクリックします。

「+Create new item」の表示が出たら、これをクリックします。

さらにLinkの設定画面が表示されるので「LINK」をクリックします。

④Linkの確認

Thingの画面に戻ると、「Linked Items」の下にItemが追加されています。

⑤他のItemsの追加

IKEA_Light_Switchと同様に「IKEA_Light_Brightness」と「IKEA_Light_ColorTemp」についてもLinkを追加します。追加が完了すると、以下のようになります。

⑥Itemsの確認

3つのLinkが追加できたら、左メニューから「Items」を選択してみましょう。以下のように3つのItemsが追加されていることが確認できます。

①スマート電球の動作確認

それでは、スマート電球をOpenHABから操作してみましょう。左メニューから「Control」を選択します。

すると、以下の画面のように、スマート電球のスイッチ、明るさ調整のスライドバー、電球色変更のスライドバーが表示されるので、これを操作してみます。どうですか?ちゃんとスマート電球は動きましたか?ちなみに、スマート電球に通電しておくのをお忘れなく(笑)

ルールの作成

ここからは、リモコンのボタンが押されたらスマート電球がOn/Offするようにルールを設定していきます。

①リモコンの設定画面の表示

左メニューより「Configuration」→「Things」を選択し、Thingsの画面を表示させ「IKEA_Remote」を選択します。

②Chanell-IDの取得

IKEA_Remote_Powerのチャネルが表示されるので、そこに表示されているChanell-IDをコピーしてテキストエディタなどにメモしておきます。

③ルールの記述

コンソール画面に戻り「/etc/openhab2/rules/」に「.rules」拡張子を持つルールファイルを作成します。今回は「ikea.rules」というファイルを作成することにします。

ikea.rulesの中身は以下の通りです。「mqtt:topic:embedded-mqtt-broker:0x680ae2fffe19472a:IKEA_Remote_Power」の部分は上でメモしたChannel-IDに、「0xec1bbdfffef84420」の部分はスマート電球のデバイス名に置換して下さい。

簡単に解説すると、1行目はルール名の定義です。3行目がルールを実行する条件の記述で、リモコンのチャネルを指定することで、リモコンのボタンが押されたら動作するように設定します。5・6行目が、動作の部分であり、5行目でMQTTブローカのオブジェクトを取得し、6行目でMQTTメッセージを送信しています、今回はスマート電球のトピックに「toggle」メッセージを送信しています。

④動作確認

ルールファイルを記述し保存したら、動作確認をしましょう。リモコンの前面ボタンを押してみて下さい。スマート電球がOn/Offすれば完成です‼️

なお、ルールが実行されたかは「/var/log/openhab/event.log」に記録されるので、このファイルを確認するとルールが実行された様子が確認できます。

おわりに

今回はRaspberry PiにインストールしたOpenHABを利用して、zigbee機器をベアリングし、OpenHABにThingsとして登録し、操作することをやってみました。

スマート電球をOpenHABの画面から操作するだけではなく、リモコンとスマート電球を連携させて、リモコンの動作に応じてスマート電球を操作することも可能となりました。

OpenHABのGUI画面はまだまだ細かいところに手が届かないですが、設定ファイルから設定することでかなり細かい点まで設定でき、いろいろなことができると感じました。

 第1回:OpenHABとアドオンのインストールと設定 
 第2回:IKEAスマート電球のペアリングと操作  <–この記事

関連記事

Raspberry PiとNode-redで、Hueブリッジ(Zigbee Hub)を作ってみた(スマホ&Alexa操作対応)[1/3]
最近は、スマート電球の「Hue」や「TRADFRI」、Aqaraの温度センサーなど、様々なzigbee機器が出てきています。しかし、これらを使用するにはHueブリッジなどのZigbee Hubの購入が必要で、しかもメーカを跨って相互に接続できません。そこで、Raspberry PiとNode-redを使って、メーカに関...
Mozilla IoT WebThings GatewayからIKEA TRADFRI電球を操作してみた(TRADFRI Gateway編)
前から気になっていたMozilla IoTのWebThings GatewayをRaspberry Piにインストールし、IKEAのスマート電球をTRADFRIゲートウェイ経由で操作できるか試してみました。
Mozilla IoT WebThings GatewayからIKEA TRADFRI電球を操作してみた(直接ペアリング編)
Raspberry Piにzigbeeモジュール(CC2531)を指し、Mozilla IoTのWebThings Gatewayを使って、IKEAのスマート電球を直接操作できるか試してみました。
Home Assistantで、IKEA TRADFRIスマート電球を利用する(TRADFRI Gateway編)
Home AssistantのRaspberry Piへのインストール方法と、Home AssistantからTRADFRIスマート電球をTRADFRI Gateway経由で操作する方法をご紹介します。
Home Assistantで、IKEA TRADFRIスマート電球を利用する(直接ペアリング編)[1/2]
Raspberry PiにインストールしたHome Assistantから、IKEAのTRADFRIスマート電球を直接操作(TRADFRIゲートウェイを使わない)方法をご紹介します。この記事は第1回目として、Home AssistantのインストールとZigbee通信モジュールのファームウェアの書き換えについて紹介しま...
OpenHABで、IKEA TRADFRIスマート電球を利用する(TRADFRI Gateway編)
OpenHABのRaspberry Piへのインストール方法と、OpenHABからTRADFRIスマート電球をTRADFRI Gateway経由で操作する方法をご紹介します。
Raspberry PiとNode-redで、IKEAのスマート電球を操作する
Raspberry PiにインストールしたNode-redを使って、IKEAのスマート電球をTRADFRI Gateway経由で操作する方法をご紹介します。node-red-contrib-ikea-home-smartを利用することで、簡単に操作できます。
記事が参考になったら、ブログランキングに協力(クリック)して貰えると嬉しいです。

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

naka-kazzをフォローする
スマートホーム開発者向け
スポンサーリンク
naka-kazzをフォローする
スマートホーム×DIY

コメント

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