提案されたソリューション(「松葉杖」)を使用すると、この段階で最小限の手動操作を行うことができます。 センサーコントローラーはMQTTブローカーに接続し、特別なトピックで特定の形式でセンサーとデバイスについて話します。その後、スマートホームサーバー上の小さなスクリプトがこれらのセンサーに対応する構成ファイルを作成します。管理スクリプトの作成を開始します。
具体的には、このファームウェアはESP-8266(Sonoff Basic SwitchおよびSonoff Touch Wallswitchを含む)でOpenHABおよびHomeAssistantのP&Pスクリプトを使用するモジュールで動作しますが、プラグアンドプレイ情報出力方法は他のプロジェクトでも使用できます。
デバイスがMQTTブローカーに接続されると、次のトピックが作成されます(この場合、シリアル番号0023CB541のESP-8266のFLASHボタンについて)。
- / myhome / PNP / ESPX-0023CB541 /ボタン/名前-名前/説明(「フラッシュボタン」-これはWebインターフェイスに表示されます)
- / myhome / PNP / ESPX-0023CB541 / BUTTON / type-変数のタイプとそのデータフローの方向。「O:Switch」は情報を提供するセンサーを示し、たとえば「I:Dimmer」-着信ディマーチャンネル
- / myhome / PNP / ESPX-0023CB541 / BUTTON / groups-この変数がデフォルトで表示されるグループ(「スイッチの組み込みボタン」)
- / myhome / PNP / ESPX-0023CB541 / BUTTON / min-最小値(数値変数の場合、ボタンの場合は空になります)
- / myhome / PNP / ESPX-0023CB541 / BUTTON / max-最大値(同様)
サーバーで実行されているスクリプト(クラウンまたは手動で、デバイスを接続した後)-/ myhome / PNPからトピックのリストをダウンロードし、OpenHABにないデバイスを検索し、それらの構成ファイルを作成します。 そのようなデバイスの構成ファイルが既に存在する場合、P&P情報は完全に無視されますが、必要に応じてこのファイルを削除し、センサーのセットを変更してデバイスのファイルを再作成できます。
このようにシンプルで透過的な方法で-自家製のスマートホームに多数のネットワーク制御デバイスを接続する必要がある場合、かなり大きな頭痛の種を取り除きます。
ESP-8266の実際のファームウェアについてもう少し説明します。 そのソースコード(およびOpenHABとHomeAssistantのサポートスクリプト)はGithubにあります (具体的には、サポートスクリプトはこちら )。
標準のESP-8266モジュール(およびSonoff Basic SwitchおよびSonoff Touch Wallswitch)で実行され、オンザフライでファームウェアのアップグレード(ArduinoOTA)をサポートし、WiFiネットワークパラメーターの初期構成とMQTTのIPアドレスの設定のためのシンプルなWebサーバーも備えています-ブローカー。
ファームウェア構造はモジュール式であり、センサー/デバイスを非常に簡単に追加できます。 現在のリストには次のものが含まれます。
- 赤外線モーションセンサーおよびParallax Xバンドモーション検出器(モジュールあたり最大3個)
- 温度/湿度センサーDHT22または同等品
- 私の4チャンネルModbus / RS-485制御調光器
- HC-SR04ソナーおよびMaxBotixシリーズソナー
- Sonoff Basic SwitchとSonoff Touchのリレー(後者はボタンでリレー制御モードに切り替えることができ、OpenHAB / HomeAssistantを介してのみ切り替えることができます)
- 内蔵ADC、LED、フラッシュボタン(Sonoff Touch用-これはタッチボタンです)
- ファン(室内機)とコンプレッサー(室外機)を制御するための2つのリレーを備えたシンプルなサーモスタット
ESP-8266にはピンがないため、モジュールが互いに競合する可能性があります(たとえば、ピンを自分で再配布しない場合、ソナーを備えた調光器を同時に接続することはできません)。
esp-sensors.hで必要なデバイスを選択し、コンパイルおよびファームウェア-モジュールが構成モードに切り替わります-「espx-0023cb541」などの名前でWiFiネットワークを上げます。同じファイルからパスワードを使用して接続する必要があります、次に192.168.4.1に移動して、ネットワークログインとパスワード、ブローカーのIPアドレスを設定します。 これらのパラメーターはフラッシュに保存されるため、2回目はこれを行う必要はありません。 1分以内に特定のネットワークに接続できない場合、3分間再び構成モードに切り替わり、接続に成功するまでこのサイクルを繰り返します。
このファームウェアを編集する人のために、各センサー/デバイスモジュールは6つの機能に分けられていることに言及します。
- setup _ *()-ピンの構成
- loop _ *()-各プログラムサイクルでセンサーをポーリングする
- refresh _ *(forceSend)-MQTTのセンサーステータス情報を更新します(デフォルトでは200ミリ秒、2秒ごと-強制更新)
- pnp _ *()-P&P情報の送信
- 購読_ *()-必要な受信トピックへの購読
- mqtt _ *()-着信mqttメッセージの処理
これらの関数はモジュールのファイルで定義し、適切な場所esp-sensors.inoに呼び出しを追加する必要があります。