Pilz#PITReaderのREST APIを使ってみよう

今回の記事ではPilzのPITReaderデバイスを紹介し、Node-RedからREST APIにアクセスする手順を説明します。Node-RedはSEEED STUDIOのreComputer R1025-10を使用します。

さ、FAを楽しもう。

PITreader?

PITreaderは、制御システムの認証と認可のためのシステムで、認証はトランスポンダーを介して行われるのデバイスです。

Security

注意するのはプラント、システム、機械、ネットワークをサイバー脅威から守るためには、産業セキュリティ・コンセプトを導入する(そして継続的に維持する)必要があります。

VDI/VDE 2182またはIEC 62443-3-2に従ってリスクアセスメントを実施し、セキュリティ対策を慎重に計画しましょう。

Web Server

PITTreaderの内蔵Web Serverは、パスワード・プロンプトによって不正アクセスから保護されています。

  • パスワードは暗号化された形式で保存されます。
  • パスワードが変更されると、認証のために古いパスワードを入力するよう求められます。
  • セッションに一意のトークンを割り当てることで、CSRF攻撃(クロスサイトリクエストフォージェリ)を防御します。
  • 15分間操作がないと、ユーザーは自動的にウェブアプリケーションからログアウトします。

Security measures…

また、PilzのManaulにもセキュリティに関して様々なアドバイスを書いています。

  • PITreaderは物理的な操作から保護されていませんので、施錠可能な制御盤または操作盤に設置したほうがよいでしょう。
  • PITreaderにアクセスする設定用コンピュータは、ファイアウォールやその他の適切な手段で攻撃から保護する必要があり、このコンフィギュレーション・コンピュータにはウイルス・スキャナーを使用し、定期的に更新する必要があります。
  • PITreaderにアクセスする設定用コンピュータは、パスワードを割り当てたり、このコンフィギュレーション・コンピュータにログオンするユーザーは、管理者権限を持たないことのほうがよいでしょう。
  • PITreaderが設置されているネットワークにファイアウォールを使用するか、ネットワーク経由の不正なデータ交換から製品を保護する必要があります。また、アプリケーションに必要なデータ交換のみを許可してください。
  • 強力なパスワードのみを割り当て、パスワードは慎重に扱うことが大事です。例えばNIST 800-63bのような、一般に認められたガイドラインに従いましょう。
  • Modbus/TCP 接続をマシン内部ネットワークに制限し、外部ネットワークに対して接続を保護しましょう。
  • APIトークンは、パスワードと同じように慎重に扱う必要があります。
  • できるだけ早く、ピルツが提供するファームウェアアップデートをインストールしてください。
  • トランスポンダーを安全な場所に保管し、不正アクセスから保護しましょう。
  • ログデータには個人情報が含まれている可能性があります。エクスポートされたログは、適切に保護された記憶媒体のみに保存してください。
  • マルチキャストDNSを介したネットワークスキャンの場合、認証がなくても製品のシリアル番号を読み取ることができます。ウェブ・アプリケーションでは、デフォルトのパスワードとは別のパスワードを割り当てることが重要です。
  • PITreaderの設定バックアップ・ファイルには、製品の認証に関する情報が含まれています。バックアップ・ファイルは、適切に保護された記憶媒体にのみ保存してください。
  • 工場出荷時リセットの間、装置内のコード化もリセットされます。その結果、コード化されていないトランスポンダ、または異なるコード化されたトランスポンダが、この装置で再び受け入れられるようになります。このため、コーディングのチェックサムを上位コントローラ、HMI、または評価ユニットで監視することをお勧めします。

こちらはネットワーク分離のExampleになります。

Real-time clock and operating hours counter

PITreaderはリアルタイムクロックと稼働時間カウンターを備えており、そのリアルタイムクロックは、ウェブアプリケーションで新しいデータ/時間値に設定できます。また、SNTP サーバーとの同期は、ウェブアプリケーションで有効にすることができます。

Block list

Block listを使用することによって、特定のトランスポンダの認証をロックすることができます。一度ブロックリストに入ったトランスポンダは、PITreaderで認証できなくなります。この機能は、ユーザーがトランスポンダを紛失した場合などに便利です。

不正な人がPITreaderで認証するのを阻止することができます。

  • Block listには最大 1000 エントリを含めることができる。
  • Block listは、どの認証モードでも使用できます。

Authentication types

PITreaderは、以下の認証タイプをサポートしています:

  • Transponder data
  • Single authentication
  • 2-person rule

今回の記事で使用するのはTransponder dataの認証タイプになります。

“Transponder data” authentication mode? 

Transponder data認証モードでは、PITreaderの読み取りエリアにトランスポンダを配置することで、安全評価ユニット(例:PIT m4SEU)および接続された制御システム上でユーザ認証を行うことができます。認証は、トランスポンダに保存されたパーミッションを使用して実行されます。

また、コントローラ(PLC、HMI)はModbus/TCPを使用して、現在認証されているトランスポンダを読み取ることができます。

注意するのは、Transponder data認証モードでは、認証はトランスポンダの所有のみに依存することです。したがって、トランスポンダの紛失はセキュリティ・リスクにつながります。

Device groups

PITreaderに選択可能なデバイス・グループはG0~G31の32種類があります。PITreaderデバイスは、デバイスグループ内で結合され、1人のユーザー(1台のトランスポンダ)は、グループ内のすべてのPITreaderデバイスに対して同じ権限を持ちます。また、別のユーザーは異なる権限を持つことができます。

各デバイス・グループは最大65の異なるパーミッションを持つことができます。

  • 0: No permission
  • 1 to 64: Permission 1 to 64

例えば、オペレーターのトレーニングのレベルに応じて割り当てられる機能の有効化に関する許可をしたりできます。

PITreaderでは一度に一つのパーミッションのみが有効です。トランスポンダに保存されている追加のパーミッションは、PITreaderのModbus/TCPインタフェースを介して呼び出すことができ、必要に応じてEnd-Userの目的に使用することができます。

Web application

PITreaderの設定はウェブアプリケーションで行います。設定はウェブアプリケーションにログインして初めて可能になり、ドイツ語と英語で利用可能です。

REST API

PITreaderにはREST APIがあります。ユーザが作成したアプリケーション(HMI、ウェブアプリケーション、ユーザソフトウェアなど)から、外部クライアントはREST APIを介してPITreaderのウェブサーバに接続することができます。

情報やデータを交換するために、外部クライアントは、PITreader上のWebサーバーのHTTPエンドポイントの1つにJSON形式でリクエストを送信する必要があります。

このために HTTP メソッド GET と POST がサポートされています。ウェブサーバは、適切なレスポンスを JSON 形式で外部クライアントに送信します。

こちらはPITreaderのアプリケーションに最適な方法で組み込むためのPointで

  • 証明書
    Elliptic Curve Cryptography(ECC)に基づくサーバー証明書を使用すること。これはPITreaderのデフォルト設定に対応します。
  • TLS Session Tickets
    TLSセッションチケットに対応したRESTクライアントを使用することを推奨します。
  • データへの周期的アクセス
    PITreaderのウェブサーバーへのリクエストは、1秒間に最大2回までとすることをお勧めします。

Requests from an API Client

APIクライアントとウェブサーバー上のマシンは、APIトークン(APIキー)を介して認証されます。つまり、APIクライアントからのリクエストには、APIトークンを提示する必要があります。APIトークンはPITreaderのウェブアプリケーションで生成され、この目的のためにウェブアプリケーションで作成および設定することができます。

Creating an API Client

APIクライアントはウェブアプリケーションで作成できます。

クライアントは、認証「APIトークン」を持つデバイス・ユーザーに対応する。 APIトークンは16バイト長のランダムな値で、その機能はパスワードに相当する。

また、APIクライアントにロールを割り当てる必要があり、ロールはAPIクライアントのアクセス権を決定します。

  • Role name: Administrator
    Role number: 500
  • Role name: Device manager
    Role number: 400
  • Role name: Transponder manager
    Role number: 200
  • Role name: Guest (読み取りアクセス)
    Role number: 10

Response format

クライアントが要求すれば、ウェブサーバーはJSON形式でレスポンスを送信します。レスポンスは常に、HTTPステータスコードと ”Content type ”レスポンスフィールドを含むレスポンスヘッダで構成される。

レスポンスヘッダの後にボディが続き、GETリクエストの場合、ボディは一般的な応答データフィールドで構成されます。 リクエストがOKの場合、ボディはリクエスト固有の応答データフィールドも含みます。POSTリクエストの場合、ボディは汎用応答データフィールドのみで構成されます。

Response format with HTTP status code 200

OKリクエストの場合、ウェブサーバーはレスポンスヘッダにHTTPステータスコード200(OK)で応答する。

Response format with HTTP status code 400

不正なリクエストの場合、ウェブサーバーはレスポンスヘッダにHTTPステータスコード400(bad re-quest)で応答する。

Response format with HTTP status code 403

禁止されたリクエストの場合、WebサーバーはHTTPステータスコード403(forbidden)で応答します。HTTPステータスコード403は、既存のユーザーセッションを持たないリクエストがウェブサーバーに送信されたこと、またはAPIクライアントが必要なロール番号を持っていないことを意味します。

Response format with HTTP status code 500

内部エラーの場合、ウェブサーバーはHTTPステータスコード500(内部サーバーエラー)で応答します。

API using in this Tutorial..

こちらは今回記事で使用するAPI リクエストです。詳しい説明は取説に参考してください。

HTTP end point /api/status (GET)

HTTPエンドポイント/api/statusを介して、デバイスのステータスとプロパティに関する現在のステータス情報をGETで読み取ることができます。。

HTTP end point /api/status/authentication (GET)

HTTPエンドポイント/api/status/authenticationを経由して、トランスポンダーの認証ステータスに関する現在の情報をGETで読み取ることができます。

HTTP end point /api/transponder (GET)

HTTPエンドポイント/api/transponderを経由して、例えばグループ許可、有効性(valid from/until)、ロックなどのトランスポンダからのデータをGETを使って読み取ることができます。

HTTP end point /api/led (GET)

.HTTPエンドポイント/api/ledを経由して、LEDのステータスと”LED overwrite”設定をGETで読み取ることができます。

HTTP end point /api/led (POST)

HTTPエンドポイント/api/ledを経由して、POSTを使用して”LED overwrite” 設定を定義できます。L”LED overwrite”の設定により、LEDの色と点滅モードを外部から設定することができます。その結果、LEDの色と点滅モードは内部デバイスの状態に依存しなくなります。

HTTP end point /api/me (GET)

HTTPエンドポイント/api/meを介して、現在サインインしているユーザーに関する情報をGETで読み取ることができます。

HTTP end point /api/status/monitor (GET)

HTTPエンドポイント/api/status/monitorを経由して、PITreaderのステータスを読むことができ、GETを使用して同期監視を再開することができます。

Implementation

PITReader Side

最初はPILZのPITreader側から設定します。

Connect to PITreader

PITreader本体にあるLAN Portに接続してください。

establish Ethernet connection

PITreaderにアクセスするには、PCのIPアドレスがPITreaderのIPアドレスと同じサブネット内にある必要があります。

PITreaderのデフォルト設定 :

  • IP address: 192.168.0.12
  • Netmask: 255.255.255.0

Log in to the web application

PITreaderの設定を変更するために、WebServerのLoginボタンをクリックしましょう。

  • User name: admin
  • Password: <PITreaderのシリアル番号>

注意するには、Loginが5回失敗すると、ログインは5分間ロックされます。

WebServerにLoginしましょう。

Default PasswordはPITreader本体に印刷されたシリアル番号になります、今回使用するデバイスのシリアル番号は100497106です。

Done!実際PITreaderを運用するとき、Default Passwordを絶対変更してください。

Configurations

PITreaderの基本設定を行うため、Configuration>Settingsを開きます。

Settings

こちらはPITreaderの基本設定画面です。

IP address

IPアドレスはアプリケーションに合わせて設定しましょう。

Modbus/TCP Server

今回の記事では使用しませんが、アプリケーションに合わせてModbus TCP Serverを有効にしましょう。

Date/time

次はDate/Timeの項目で、PCの時間と同期させ、”Save time and date on device”をクリックし設定を保存します。

Save

最後はSaveボタンをクリックし設定を保存しましょう。

OKで進みます。

少々お待ち下さい…

Done!PITreaderが自動的に再起動します。

OPC UA Server

次はOPC UA Serverの設定になります。今回の記事ではOPC UA Serverを使用しませんが、該当する機能を有効にする方法だけ説明します。

OPCUA Serverをクリックすると、WebServerにPITreaderのEnd pointが表示されます。

Generate new certificateをクリックし、OPC UA Serverの証明書を生成します。

少々お待ち下さい…

Done!

次はOPC UA Clientの証明書を用意します。今回の記事ではuaExpertのOPC UA Client証明書を使用します。

Upload client certificateに先ほど用意した証明書を選択し、PITreaderにUploadしましょう。

Done!

OPC UA Clientの証明書がUploadされました。

最後はActiviatedのCheck Boxを入れ、Saveで設定を保存しましょう。

OKで進みましょう。

Device User

PITreaderにREST APIを使用するにはAPI ClientのUserを追加する必要があります。

User>Devce Userをクリックします。

Create new user

New entry の項目にUser nameを入力し、隣にあるボタンをクリックします。

新しいUserの作成画面に変わります。

Status

こちらは該当するUserを有効・無効するオプションです。

Role

こちらは該当するUserの権限設定になります。

アプリケーションに合わせて適切な権限を設定しましょう。

Authentication

次は該当するUserの認証方法を設定します。

今回の記事ではREST APIを使用するので、Authenticationに”API token”を設定し、Saveで設定を保存しましょう。

API access

該当するUserの設定画面にAPI Tokenが表示され、この乱数のキーはのちほどNode-Redで使用しますので、Note-Padに保存しましょう。

Block List

次はBlock Listを設定します。キーをPITReaderに入れると、該当するキーのSecurity IDが表示されます。

Block ListにCommentを入力し、Saveボタンをクリックすれば、該当するキーがBlock Listに入ります。

Permission list

最後は別のキーをPITReaderに入れ、先程と同じの操作でPermission Listに入力しましょう。

SeeedStudio Side

次はSeeedStudioのRecomputer R1025側を構築します。

Test with Command Line

curl コマンドを使用し、PITreaderにHTTPSリクエストを送ってみます。

recomputer@reComputer-R100x: $ curl -X GET https://192.168.13.12:443/api/status -H “Authorization: Bearer rnmnJ0yGUVu/JaB+N4Rbhw==” 

ですが、curl: (60) SSL certificate problem: self-signed certificateのエラーが発生しました。

curl: (60) SSL certificate problem: self-signed certificate
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

TLS Certificate Verification?

curlがSchannelまたはSecure Transportをサポートしてビルドされている場合、curlはシステムネイティブのCAストアを検証に使用します。他のすべてのTLSライブラリは、デフォルトでファイルベースのCAストアを使用します。

すべての信頼できるサーバー証明書は、認証局(CA)によってデジタル署名され、ローカルCAストアには、curlのようなTLSクライアントがサーバーを検証するために使う、信頼できる認証局からの証明書のコレクションがあります。

curlはデフォルトで証明書の検証を行います。これは、署名を検証し、証明書がURLで指定されたサーバー名用に作成されたものであることを確認することで行われます。

リモート・サーバーが自己署名証明書を使用している場合、CA証明書ストアをインストールしていない場合、サーバーが使用しているストアに含まれていないCAによって署名された証明書を使用している場合、またはリモート・ホストがお気に入りのサイトになりすました詐欺師である場合、証明書チェックは失敗し、エラーが報告されます。

Skip verification

k/–insecureで検証しないようにcurlに指示する方法もあります。

Test Again..

今度はーkのオプションをつけてcurlリクエストを発行します。

recomputer@reComputer-R100x:~ $ curl -X GET https://192.168.13.12:443/api/status -H “Authorization: Bearer rnmnJ0yGUVu/JaB+N4Rbhw==” -k

Done!!PITreaderからの返答がきました。

{“hostName”:”pitreader”,”ipAddress”:”192.168.13.12″,”orderNo”:”402256″,”productType”:”PITreader S”,”serialNo”:100497106,”macAddress”:”9C:69:B4:50:0E:B7″,”seuStatus”:false,”coded”:false,”codedOem”:false,”transponderAuthenticated”:true,”fwVersion”:”02.00.00″,”hwVersion”:”02.00″,”realTimeClock”:”2024-09-28T01:21:24Z”,”hwVariant”:2,”released”:true,”ioPortMode”:”input”,”ioPortValue”:0}

Install Node-red

こちらのLinkもしくはNode-Redの公式からNode-Redを参考にしながら、Node‐Redをインストールしてください。

Raspberrypi#Install Node-Red

Install Node

今回記事では下記のNodeを使用しますので、Node-RedからそれらのNodeをインストールしましょう。

node-red-dashboard
node-red-contrib-ui-led

Configure the Flow

こちらは今回記事のFlowになります。

Part01 – Configure FlowVariables

こちらはFlowVariablesなどの初期設定するためのFlowです。

inject – Set your Url in Here

こちらのInject NodeはPITreaderのurl とHTTPS送信するStepを制御する変数を初期化します。

また、Injectノードの一番下にある周期設定を”Inject once”に設定することにより、このFlowは一回しか実行しません。

Function – SetFlowVariables

こちらはPITreader のURLやボタン変数を初期化する関数です。

flow.setを使用することにより、furl、changeColour_colour、changeColour_flashMode、changeColour_activated4つの変数はFlow変数として初期化されました。

flow.set(“furl”,msg.url);

flow.set(“changeColour_colour”,0);

flow.set(“changeColour_flashMode”,0);

flow.set(“changeColour_activated”,false);

msg.payload=msg.url;

return msg;

Function – SetFlowVariables2

こちらはStep変数を初期化する関数です。

flow.setを使用することにより、fstep変数はFlow変数として初期化されます。

flow.set(“fstep”,msg.step);

msg.payload=msg.step;

return msg;

link out

Inject Nodeの初期立ち上げ信号は他のところにも使用しますので、link out Nodeを使って出力状態を転送します。

Part-02 Step Control

こちらはPITreaderにHTTPSリクエストの順番を決めるプログラムです。

inject – timestamp

こちらのInjectは0.2秒度にTriggerします。

FC_SetStep

こちらのFunctionはFlow変数fstepの現在値を取得します。また、Function自体がトリガーされる度に1を加算します。

今回の記事でPITreaderに送信するHTTPSリクエストが6つありますので、fstepが6より大きくなると0にリセットします。

var step = flow.get(“fstep”);

msg.rejectUnauthorized = false;

step=step+1;

if (step>6){

    step=0;

}

msg.payload=step;

flow.set(“fstep”, step);

return msg;

switch

こちらのSwitch Nodeを利用し、fstep変数の現在値によって異なるHTTPSリクエストを発信します。

link out

stepとSwitchの判断結果をlink out Nodeに転送します。

Part03 – Step=1,Send GET Request /api/status

Stepは1のとき、Node-redから/api/statusのHTTPSリクエストをPITreaderに発行します。

こちらは該当するプログラムで実際作成されたDashboard部分になります。

link in node

こちらのプログラムはfstep=1のときトリガーします。

FC_/api/status

こちらはFlow変数furlを取得し、/api/statusのHTTPSリクエストを作成します。

また、TLS Certificate Verificationのエラーを回避するためmsg.rejectUnauthorized = falseの設定を追加します。

var url = flow.get(“furl”)+”/api/status”;

msg.rejectUnauthorized = false;

msg.url=url;

return msg;

http request

次はNode-RedのHTTPリクエスト Nodeを追加します。

method

こちらはHTTPリクエストにするMethodを設定します。GET Request /api/statusなので、MethodはもちろんGETに設定します。

Use authentication

PITreaderにAPI Clientを作成しましたので、Typeをbearer authenticationに設定し、Tokenは先程Userを追加したときのAPI KEYに貼り付けましょう。

Return

PITTreaderから直接JSON OBJECTの返答がくるので、Return の項目では”a parsed JSON object”に設定します。

dashboard

DashboardはHTTPのJSON Object返答から各部品に渡します。

GroupはHomeに設定します。

DashboardにHomeというページが自動生成されます。

こちらは先程追加した/api/status表示になります。

Part04 – Step=2,Send GET Request /api/status/authentication

Stepは2のとき、Node-redから/api/status/authenticationのHTTPSリクエストをPITreaderに発行します。

link in node

こちらのプログラムはfstep=2のときトリガーします。

FC_/api/status/authentication

こちらはFlow変数furlを取得し、/api/status/authenticationのHTTPSリクエストを作成します。また、TLS Certificate Verificationのエラーを回避するためmsg.rejectUnauthorized = falseの設定を追加します。

var url = flow.get(“furl”) +”/api/status/authentication”;

msg.rejectUnauthorized = false;

msg.url=url;

return msg;

http request

次はNode-RedのHTTPリクエスト Nodeを追加します。

Return Type今回は”UTF-8 string”に設定します。先程のHTTP リクエストと同じのReturn 設定でも良いのですが、ここでは敢えて別の方法でやります。

json

Return Type今回は”UTF-8 string”に設定しましたので、PITreaderから返答してきた文字列をJSON Nodeを使ってJSON Objectに変換します。

dashboard

最後は/api/status/authenticationの表示用のDashboardを作成します。

Part05 –  Step=3,Send GET Request /api/transponder

Stepは3のとき、Node-redから/api/transponderのHTTPSリクエストをPITreaderに発行します。

FC_/api/status/transponder

こちらはFlow変数furlを取得し、/api/transponderのHTTPSリクエストを作成します。また、TLS Certificate Verificationのエラーを回避するためmsg.rejectUnauthorized = falseの設定を追加します。

var url = flow.get(“furl”) +”/api/transponder”;

msg.rejectUnauthorized = false;

msg.url=url;

return msg;

dashboard

最後は/api/transponderの表示用のDashboardを作成します。

Part06 – Step=4,Send GET Request /api/led

Stepは4のとき、Node-redから/api/ledのHTTPSリクエストをPITreaderに発行します。

FC_/api/status/led

こちらはFlow変数furlを取得し、/api/ledのHTTPSリクエストを作成します。また、TLS Certificate Verificationのエラーを回避するためmsg.rejectUnauthorized = falseの設定を追加します。

var url = flow.get(“furl”) +”/api/led”;

msg.rejectUnauthorized = false;

msg.url=url;

return msg;

led

こちらのLED Nodeを使用し、PITReaderの現在表示されている色をDashboardに可視化します。

取説に合わせて色を分けましょう。

dashboard

最後は/api/ledの表示用のDashboardを作成します。

Part07 – Step=5 Send GET Request /api/me

Stepは5のとき、Node-redから/api/meのHTTPSリクエストをPITreaderに発行します。

FC_/api/me

こちらはFlow変数furlを取得し、/api/meのHTTPSリクエストを作成します。また、TLS Certificate Verificationのエラーを回避するためmsg.rejectUnauthorized = falseの設定を追加します。

var url = flow.get(“furl”) +”/api/me”;

msg.rejectUnauthorized = false;

msg.url=url;

return msg;

dashboard

最後は/api/ledの表示用のDashboardを作成します。

Part08 – Step=6,Send GET Request /api/status/monitor

Stepは6のとき、Node-redから/api/status/monitorのHTTPSリクエストをPITreaderに発行します。

FC_/api/status/monitor 

こちらはFlow変数furlを取得し、/api/status/monitorのHTTPSリクエストを作成します。また、TLS Certificate Verificationのエラーを回避するためmsg.rejectUnauthorized = falseの設定を追加します。

var url = flow.get(“furl”) +”/api/status/monitor”;

msg.rejectUnauthorized = false;

msg.url=url;

return msg;

dashboard

最後は/api/ledの表示用のDashboardを作成します。ラベルの表示を折りたたみできるには”Allow group to be collapsed”を選択してください。

Part09 –  change color

こちらはNode-RedからPITReaderに点灯する色を変更するPOST リクエストを送信する部分です。

link in node

POSTリクエストを常に送信する必要がありませんので、こちらのLink in NodeでPOSTリクエストをトリガーします。

そのLink in Nodeは”OB100”というLink Out nodeと繋がります。

OB100はFlowが起動するとき実行するNodeとつながっています。

dashboard

最後はLED色を操作するDashboardを作成します。

button

Userがボタンをクリックすると、Colour・FlashMode・Activatedの3つのオプション値を読み込み、リクエストをPITReaderに送信します。

color

Colorの設定はDrop-listで、Drop Listの選択に合わせてSwitch Off/Blueなどもラベルを表示します。

こちらのFunctionはUserのDrop-listからの選択を読み取ります。

flow.set(“changeColour_colour”,msg.payload);

var f=flow.get(“changeColour_colour”);

msg.payload=f;

return msg;

flashing mode

Flashing Modeの設定はRadio Buttonで、Userの選択によってON/OFFに変わります。

こちらのFunctionはUserのRadio Buttonからの選択を読み取ります。

flow.set(“changeColour_flashMode”,msg.payload);

var f=flow.get(“changeColour_flashMode”);

msg.payload=f;

return msg;

activated

activatedの設定はRadio Buttonで、Userの選択によってON/OFFに変わります。

こちらのFunctionはUserのRadio Buttonからの選択を読み取ります。

flow.set(“changeColour_activated”,msg.payload);

var f=flow.get(“changeColour_activated”);

msg.payload=f;

return msg;

FC_/api/led

最後はこちらのFunctionを使用し、先程Userの選択からPOSTリクエストを生成し、PITReaderに送信します。

var url = flow.get(“furl”)+”/api/led”;

msg.rejectUnauthorized = false;

msg.url=url;

var colour=flow.get(“changeColour_colour”);

var flashMode=flow.get(“changeColour_flashMode”);

var activated=flow.get(“changeColour_activated”);

msg.payload = {};

msg.payload = {

    “colour”: colour,

    “flashMode”: flashMode,

    “activated”: activated

};

//msg.payload={

//    “colour”: 2,

//    “flashMode”: 0,

//    “activated”: false

//}

return msg;

Result

最初にuaExpert を使用しPITTreaderのOPC UA Serverにアクセスしてみます。

PITTreaderの証明書を信頼し、Continueで進みます。

Done!

こちらの動画でNode-RedとPITTreaderでREST APIの連携を確認できます。

https://youtube.com/shorts/nNnJY5UfRGk

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする