工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

PLCnextコントローラをHome Assistantと連携しスマートホーム制御を実現

このデモプロジェクトでは、PLCnextコントローラをオープンソースのホームオートメーションソフトウェア「Home Assistant」でスマートホームデバイスとして利用する方法を紹介します。接続にはREST APIとModbus TCPを使用します。PLCnextコントローラを使えば、Axiolineコンポーネントを自動化に組み込み、Raspberry PiのGPIOピンより強力な出力、Pt100などの温度センサー、DALIなどのバスシステムを簡単に追加できます。必要なのは、動作中のHome Assistantインストール環境と、小規模だが実行可能なPLCnextプロジェクトを搭載したPLCnextコントローラだけです。

前提条件

ライブラリ:

Home Assistantサービス:

機能概要

PLCnextコントローラをスマートホームデバイスとして使用する可能性を示すため、リレーで機器の電源電圧を制御し、他のデバイスをハードリセットするPLCnextプロジェクトを用意しました。リセットはTelegram Botへのコマンドでトリガーされ、実行前にメールで通知が送信されます。この例では、PLCnextコントローラをHome Assistant環境に接続する2つの異なる方法を紹介します。

アーキテクチャ

PLCnextコントローラをHome Assistantと連携しスマートホーム制御を実現

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側の認証は以下のようになります。

PLCnextコントローラをHome Assistantと連携しスマートホーム制御を実現

このフローでは認証を実行し、アクセストークンを保存して後続のリクエストで使用します。HTTPリクエストの正確な構造については、PLCnext Info Centerのドキュメントも確認してください。

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

PLCnextコントローラをHome Assistantと連携しスマートホーム制御を実現

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 TCPREST 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コントローラをホームオートメーションに統合することが非常に簡単であることを証明しています。PLCのすべてのデータがHome Assistantで利用可能になることで、この例よりもはるかに強力なアプリケーションへの道が開かれます。天気やHome Assistantで利用可能なその他のデータに応じて制御・監視される、より複雑なPLCプログラムを考えてみてください。

産業技術

  1. SensorflareとRaspberry Piで433MHzスマートホームコントローラーを構築
  2. デバイス管理:スマートメーターを数百万台規模で展開
  3. VIAインパッドがPCB性能を高める理由:主なメリット
  4. 家庭用卓上CNCマシンで金属加工を始める:選び方・できること・材料調達ガイド
  5. PLCnextデバイスでgrpcurlを用いた安全なリモートgRPCアクセス
  6. SNMPでPLCnext Controlデバイスを最適化:実践ガイド
  7. PLCnext LinuxにAPTパッケージマネージャをインストール:ステップバイステップガイド
  8. スマートホームテクノロジーが日常生活をどう変えるか
  9. オープンソースIIoTエッジゲートウェイでModbusデバイス統合を加速
  10. スマートホーム向けシームレスなワイヤレス コミッショニング:開封からセキュアなリモート セットアップまで
  11. スマートホームのスキルギャップを埋める:なぜ英国は欧州に後れを取るのか