PLCnextコントローラをHome Assistantと連携しスマートホーム制御を実現
このデモプロジェクトでは、PLCnextコントローラをオープンソースのホームオートメーションソフトウェア「Home Assistant」でスマートホームデバイスとして利用する方法を紹介します。接続にはREST APIとModbus TCPを使用します。PLCnextコントローラを使えば、Axiolineコンポーネントを自動化に組み込み、Raspberry PiのGPIOピンより強力な出力、Pt100などの温度センサー、DALIなどのバスシステムを簡単に追加できます。必要なのは、動作中のHome Assistantインストール環境と、小規模だが実行可能なPLCnextプロジェクトを搭載したPLCnextコントローラだけです。
前提条件
- Home Assistant Core 2021.1.5
- Balena
- PLCnext Engineer 2020.6
- AXC F 2152FW 2020.0 LTS
- Raspberry Pi 2イメージ(起動に約1時間かかる場合があります)
ライブラリ:
- Modbus_TCP(Build 8) for PLCnext Engineer
Home Assistantサービス:
- Telegram
- SMTP
機能概要
PLCnextコントローラをスマートホームデバイスとして使用する可能性を示すため、リレーで機器の電源電圧を制御し、他のデバイスをハードリセットするPLCnextプロジェクトを用意しました。リセットはTelegram Botへのコマンドでトリガーされ、実行前にメールで通知が送信されます。この例では、PLCnextコントローラをHome Assistant環境に接続する2つの異なる方法を紹介します。
アーキテクチャ

Modbus TCPによる接続
Modbus TCP接続では、Modbus TCPライブラリを使用してPLCnextプロジェクトにModbusサーバーを追加します。設定はライブラリの例と同じです。適切なModbusレジスタの選択は、データの種類と用途によって異なります。ここでは変数をコイルレジスタにマッピングしています。
注意: Modbusサーバーは同時に1接続しかサポートしません。テスト中に接続が正しく終了しないと、サーバーがエラー状態になり手動再起動が必要です。これを防ぐには、PLCnextプロジェクト側でModbusサーバーの自動再起動をプログラムすることを推奨します。
Home Assistant側のModbusクライアントには主に2つの選択肢があります。1つはNode-REDアドオンとそこで利用可能なModbusライブラリを使う方法、もう1つはHome Assistantのconfiguration.yamlでエンティティを設定する方法です(詳細はこちら)。以下に示すように、標準のスイッチサービスを使用します。これはブーリアン変数の操作に一般的で、turn_on/turn_off機能が実装されているためです。
modbus:
type: tcp
host: YOUR_SERVER_IP
port: 502
name: hub1
switch:
- platform: modbus
coils:
- name: restartMB
hub: hub1
slave: 1
coil: 13
Node-REDを選ぶ場合、読み取りと書き込みで別々のModbus TCP接続を張ることが多く、前述のエラー状態を招きやすいです。回避策としてModbus UDPを使うか、PLCnext側で読み取り用と書き込み用の2つのModbusサーバーを立てる方法があります。
REST APIによる接続
2つ目の方法はPLCnext RESTデータインターフェースを使用します。このインターフェースはPLCnext HMIに関連しているため、PLCnextプロジェクトに最低1つのHMIページ(空でも可)が必要です。また、変数にはHMIフラグを設定する必要があります。詳細についてはPLCnext Info Centerを参照してください。
ここではHome Assistant側でNode-REDアドオンを使用し、HTTPリクエストを生成します。アドオンのインストールはこちらとこちらの手順に従ってください。両方完了してから進めてください。
PLCnextプロジェクトでHMIユーザー認証が有効な場合、Node-RED側の認証は以下のようになります。

このフローでは認証を実行し、アクセストークンを保存して後続のリクエストで使用します。HTTPリクエストの正確な構造については、PLCnext Info Centerのドキュメントも確認してください。
Home AssistantのデータにNode-REDからアクセスするには、Node-REDアドオンに付属のいくつかのノードを使用します。下図の下部にある短いフローでHome Assistantに新しいエンティティを作成し、上部のフローでそのエンティティの変更を監視します。エンティティがtrueになると、PLCnextコントローラの変数もtrueに設定されリセットがトリガーされます。PLCnext側のリセット変数はリセット後に自動的にfalseに戻るため、Home Assistant側のエンティティも5秒の遅延後にfalseに設定されます。

Telegram Bot
Home Assistantとの通信にはTelegram Bot APIを使用します。使用するには、こちらの手順に従って新しいボットを登録してください。
telegram_bot:
- platform: polling
api_key: YOUR_API_TOKEN
allowed_chat_ids:
- YOUR_CHAT_ID_1
- YOUR_CHAT_ID_2
チャットIDを確認する最も簡単な方法は、ボットにメッセージを送信した後、以下のHTTPリクエストを実行することです:
https://api.telegram.org/botYOUR_API_TOKEN/getUpdates
Telegram Botの活用例として、毎朝その日の天気を通知して服装の参考にするといった用途があります。このプロジェクトでは、TelegramコマンドでPLCをハードリセット(Modbusレジスタのボタンを押す)するタスクを追加しました。「/MBrestartPLC」コマンドでModbus経由、「/RESTrestartPLC」コマンドでREST API経由でリセットを実行します。
SMTP
Home AssistantではSMTP(Simple Mail Transfer Protocol)を使用して、ホームオートメーションで利用可能なデータをメールで送信できます。configuration.yamlに以下を追加して実装します:
notify:
- name: SMTP_MESSENGER
platform: smtp
server: SMTP_SERVER
port: 587
timeout: 15
sender: YOUR_EMAIL_ADRESS
encryption: starttls
username: YOUR_USERNAME
password: YOUR_PASSWORD
recipient:
- EMAIL_ADRESS_OF_THE_RECIPIENT
sender_name: My Home Assistant
Home AssistantのSMTPサービスについてさらに詳しくはこちらを参照してください。
オートメーション
すべてのサービスとライブラリの準備ができたら、それらを組み合わせます。これはHome Assistant環境のautomations.yamlでプログラムされるオートメーションによって行われます。オートメーションの構造は非常にシンプルで、以下の表のようになります。aliasはHome Assistant上でのオートメーション名です。triggerはオートメーションを実行する条件(ここでは特定のTelegramコマンド)、actionは実行するタスク(変数をtrueに設定し、メールを送信)です。
| Modbus TCP | REST API |
|---|---|
|
|
結論
このデモプロジェクトは、PLCnextコントローラをホームオートメーションに統合することが非常に簡単であることを証明しています。PLCのすべてのデータがHome Assistantで利用可能になることで、この例よりもはるかに強力なアプリケーションへの道が開かれます。天気やHome Assistantで利用可能なその他のデータに応じて制御・監視される、より複雑なPLCプログラムを考えてみてください。
産業技術
- SensorflareとRaspberry Piで433MHzスマートホームコントローラーを構築
- デバイス管理:スマートメーターを数百万台規模で展開
- VIAインパッドがPCB性能を高める理由:主なメリット
- 家庭用卓上CNCマシンで金属加工を始める:選び方・できること・材料調達ガイド
- PLCnextデバイスでgrpcurlを用いた安全なリモートgRPCアクセス
- SNMPでPLCnext Controlデバイスを最適化:実践ガイド
- PLCnext LinuxにAPTパッケージマネージャをインストール:ステップバイステップガイド
- スマートホームテクノロジーが日常生活をどう変えるか
- オープンソースIIoTエッジゲートウェイでModbusデバイス統合を加速
- スマートホーム向けシームレスなワイヤレス コミッショニング:開封からセキュアなリモート セットアップまで
- スマートホームのスキルギャップを埋める:なぜ英国は欧州に後れを取るのか