Home Assistant を介して PLCnext コントローラをスマート ホーム デバイスとして使用する
この小さなデモ プロジェクトでは、オープンソースのホーム オートメーション ソフトウェア Home Assistant で、REST API と Modbus TCP を介して PLCnext コントローラーをスマート ホーム デバイスとして簡単に使用する方法を示します。 PLCnext コントローラーを使用すると、自動化で Axioline コンポーネントを使用して、Raspberry Pi の GPIO ピン、Pt100 などの温度センサー、DALI などのバス システムの後に、より強力な出力を簡単に追加できます。必要なのは、動作する Home Assistant のインストールと、小さいながらも実行可能な PLCnext プロジェクトを含む PLCnext コントローラーだけです。
前提条件
- ホーム アシスタント コア 2021.1.5
- バレナ
- PLCnext エンジニア 2020.6
- AXC F 2152FW 2020.0 LTS
- Raspberry Pi 2 イメージ (起動には 1 時間かかる場合があります。)
ライブラリ:
- PLCnext Engineer 用 Modbus_TCP (ビルド 8)
ホーム アシスタント サービス:
- 電報
- SMTP
機能の説明
PLCnext コントローラをスマート ホーム デバイスとして使用する可能性の概要を簡単に説明すると、リレーで供給電圧を制御することで他のデバイスをハード リセットできる PLCnext プロジェクトがあります。リセットは、再起動が開始されたという情報を含む電子メールが送信される前に、テレグラム ボットに送信されるコマンドによってトリガーされます。この例では、PLCnext コントローラーをホーム アシスタント環境に接続する 2 つの異なる方法を示します。
建築
Modbus TCP 経由の接続
Modbus TCP 接続から始めて、Modbus TCPl ライブラリを使用して Modbus サーバーが PLCnext プロジェクトに追加されます。構成はライブラリの例と同じです。適切な Modbus レジスタの選択は、データの種類とその使用方法によって異なります。この場合、変数はコイル レジスタにマップされます。
Modbus サーバーは同時に複数の接続をサポートしていないことに注意してください。そのため、接続のテスト中に残念ながら接続が正しく終了しない場合、サーバーはエラー状態になり、手動で再起動する必要があります。これを回避するには、PLCnext プロジェクトで Modbus サーバーの自動再起動をプログラムすることをお勧めします。
Modbus クライアントの場合、Home Assistant には主に 2 つの可能性があり、お気に入りを選択するのはあなた次第です。 1 つ目は、Node-RED アドオンとそこで利用可能な Modbus ライブラリの 1 つを使用することです。より直感的な方法は、 configuration.yaml
でエンティティを構成することです Home Assistant 環境の詳細 (詳細)。以下に示すように、変数を設定またはリセットするための turn_on/turn_off 機能が実装されているため、ブール変数を操作する一般的な方法である標準のスイッチ サービスが使用されます。
modbus:
type: tcp # using Modbus TCP
host: YOUR_SERVER_IP # fill the server ip address
port: 502
name: hub1 # could be changed
switch:
- platform: modbus
coils:
- name: restartMB # could be changed
hub: hub1
slave: 1
coil: 13 # the register position of the variable
Node-RED の可能性を選択する場合は、通常、Modbus TCP を使用して読み取りと書き込みのために異なる接続を開始するため、Modbus サーバーが上記のようにエラー状態になることに注意してください。これを回避するには、PLCnext プロジェクトで Modbus UDP または 2 つの Modbus サーバー (1 つは読み取り用、もう 1 つは書き込み用) を使用できます。
REST API 経由の接続
接続の 2 つ目の可能性は、PLCnext REST データ インターフェイスです。このインターフェースは PLCnext HMI に関連しているため、REST API を使用できるようにするためには、空であっても PLCnext プロジェクトに少なくとも 1 つの HMI ページが必要です。さらに、変数は HMI フラグで署名する必要があります。詳細については、PLCnext Info Center をご覧ください。
この場合、Node-RED アドオンを使用して Home Assistant 側で HTTP リクエストを生成します。アドオンのインストールは、こちらとこちらの手順に従ってください。続行する前に、両方の手順を完了していることを確認してください。
PLCnext プロジェクトで HMI ユーザー認証が有効になっている場合、Node-RED での認証は次のようになります:
フローは認証を実行し、アクセス トークンを保存して、後のリクエストで使用します。 HTTP リクエストの正確な構造については、PLCnext Info Center のドキュメントも確認してください。
Node-RED でホーム アシスタント環境のデータにアクセスするには、Node-RED アドオンにいくつかのノードが付属しています。次の図の下部にある短いフローは、Home Assistant に新しいエンティティを作成し、上のフローでは、このエンティティの変更がチェックされます。エンティティが true に設定されている場合、PLCnext コントローラーの変数も true に設定され、リセットがトリガーされます。リセット後に PLCnext プロジェクトの再起動変数が自動的に false に設定されるため、Home Assistant のエンティティも 5 秒の遅延後に false に設定されます。
電報ボット
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 のコマンドで PLC をハード リセットする (Modbus レジスタのボタンを押す) という別のタスクを取得します。コマンド「/MBrestartPLC」がボットに送信され、Home Assistant で自動化スクリプトが開始されます。これにより、最終的に Modbus コイル レジスタ値が変更され、「/RESTrestartPLC」は REST API を使用して同じことを行います。
SMTP
Home Assistant では、Simple Mail Transfer Protocol (SMTP) を使用して、ホーム オートメーションで利用可能なデータを選択して電子メールを送信できます。 configuration.yaml
に次のコードを追加することで、サービスを実装できます。 :
notify:
- name: SMTP_MESSENGER # could be changed
platform: smtp
server: SMTP_SERVER # e.g. smtp.gmail.com
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 # could be changed
Home Assistant の SMTP サービスの詳細については、ここをクリックしてください。
自動化
すべてのサービスとライブラリが実装されて準備されている場合、それらを組み合わせる必要があります。これは、automations.yaml
でプログラムされた自動化によって行われます。 ホーム アシスタント環境の。自動化の構造は、下の表に示すように非常に単純です。エイリアスは、Home Assistant の自動化の名前です。トリガーは、この場合に使用される特定のテレグラム コマンドのように、自動化を実行するために true でなければならない条件であり、アクションは、この場合、変数を true に設定して電子メールを送信するなどのタスクです。
Modbus TCP | REST API |
- id: '1' alias: 'Trigger a reset of a controller via modbus' trigger: platform: event event_type: telegram_command event_data: command: '/MBrestartPLC' action: - service: switch.turn_on entity_id: switch.restartMB - service: notify.SMTP_MESSENGER data: title: 'PLC message' message: 'PLC restart initiated via modbus!' | - id: '2' alias: 'Trigger a reset of a controller via rest api' trigger: platform: event event_type: telegram_command event_data: command: '/RESTrestartPLC' action: - service: switch.turn_on entity_id: switch.restartREST - service: notify.SMTP_MESSENGER data: title: 'PLC message' message: 'PLC restart initiated via rest!' |
結論
この小さなデモ プロジェクトは、ホーム オートメーションに PLCnext コントローラを統合するのが非常に簡単であることを証明しています。 Home Assistant ですべての PLC データを利用できるようになったことで、この例よりもはるかに強力なアプリケーションへの道が開かれました。 Home Assistant で利用可能な天候やその他のデータに応じて制御および監視できる、より複雑な PLC プログラムについて考えてみてください。
産業技術
- デバイス管理:何百万ものスマートメーターについていく
- ホームオートメーションのアプリケーション
- オープンソースのIIoTゲートウェイを使用してModbusデバイスの統合を高速化
- スマートホームでのワイヤレス試運転
- SensorflareとRaspberryPiを備えた433MHzスマートホームコントローラー
- スマートホームスキルのギャップ
- パッドでVIAを使用する利点
- 自宅での金属切削に手頃な価格の CNC マシンを使用する
- grpcurl を使用したリモート gRPC
- SNMP経由でPLCnext Controlデバイスを管理する
- PLCnextにapt(-get)パッケージマネージャーをインストール