2.6. ONVIF対応用ノード¶
2.6.1. ice onvif discovery¶
自動的に発見したカメラのオブジェクトIDなどの情報を、 以下のような形式でNode-REDフロー上に出力するノードです。
{
payload : {
type : "onvif_discovery",
object_id : <オブジェクトID>,
camera : {
hostname : <IPアドレス>,
port : <ポート番号>,
device_information : <device_information>,
stream_uri : <stream_uri>,
capabilities : <capabilities>,
profiles : <profiles>
}
}
}
ice onvif discoveryノードはカメラの情報をJSON形式で取得し、 キー名に含まれる「.」を「__」に、 キー名の先頭が「$」である場合「_$」に変換し、出力します。
2.6.1.1. 設定項目¶
ice onvif discoveryには以下の設定項目があります。
- Discovery
- カメラの自動発見設定名を指定します。必須項目です。
- Name
- ノードの名前です。ここで設定した値がNode-REDのGUIエディタ上で表示されます。
2.6.2. ice onvif pipe¶
入力として与えられたメッセージと設定項目で指定したテンプレートをもとにSOAPメッセージを作成し、 カメラに対して送信するノードです。
ice onvif pipeは以下の形式のメッセージを入力として受け付けます。
{
...,
payload:{
type: “onvif_pipe”,
object_id: <SOAPメッセージを送信するカメラのオブジェクトID>,
onvif_operation: {
<プロパティ名> : <設定値>,
...
}
}
}
また、ice backend inから出力される以下の形式のメッセージも受け付けます。
{
...,
ice_params:{
object_id: <オブジェクトID>,
...
},
payload:{
type: “onvif_pipe”,
onvif_operation: {
<プロパティ名> : <設定値>,
...
}
}
}
payload.object_idとice_params.object_idが同じメッセージ内に存在する場合、 ice_params.object_idに設定されている値を優先します。
上記以外のフォーマットのメッセージが入力された場合、 エラーが出力され、SOAPメッセージの作成・送信は行われません。
object_idはice-onvif-discovery-configによって採番される、カメラごとにユニークなIDとなります。 object_idが間違っていた場合(設定項目のCamera Managerで指定したice-onvif-discovery-configノードで管理されていない場合)、 エラーが出力されSOAPメッセージの作成・送信は行われません。
このノードはカメラからSOAPのレスポンスが返却された場合以下のような形式でSOAPメッセージのレスポンスをNode-REDフロー上に出力します。 レスポンスメッセージの内容から、送信したONVIF処理が失敗していた場合にはsuccess
プロパティはfalseとなります。 この場合err_msg
プロパティは出力メッセージに含まれません。
また、カメラがネットワークの切断や故障等によって 到達できなかったりリクエストを処理できない場合にはエラー出力を行い、 success
プロパティをfalse
として、err_msg
プロパティにエラーメッセージを格納して出力を送信します。 この場合、onvif_out
プロパティは出力メッセージに含まれません
{
object_id: <オブジェクトID>,
operation_name: <`Operation Name`プロパティで設定した値>,
success: <ONVIFリクエストが成功したかどうか>,
onvif_out: {
<SOAPメッセージのレスポンスをJSONに変換した内容>
},
err_msg: <カメラとの接続ミス等のエラーメッセージ>
}
2.6.2.1. 設定項目¶
ice onvif pipeには以下の設定項目があります。
- Camera Manager
- カメラを管理している自動発見設定(ice-onvif-discovery-configノード)を指定します。 ここで指定したノードで発見管理されているカメラに対してのみメッセージを送信できます。 必須項目です。
- XML Filepath
- 使用するONVIFメッセージのテンプレート(XML形式)のファイルパスをフルパスで指定します。 相対パスでの指定はできません。 ファイルパスに誤りがある場合はノードのデプロイ時にエラーが出力されます。 この場合、ノードへの入力は全て破棄され、SOAPメッセージの送信は行いません。 また、テンプレートの構文にエラーがある場合にはエラー出力を行い、SOAPメッセージの送信は行いません。
- ONVIF Service Name
- 使用するONVIF Functionを提供しているONVIFのサービス名を入力します。必須項目です。 サービス名には以下などが記入できます。 カメラが対応していないサービスであった場合、すべてdeviceサービスに対するSOAPメッセージとして処理します。 送信するSOAPメッセージがdeviceサービスに対応したものではなかった場合、 本ノードはカメラからのONVIFエラーメッセージをエラー出力に出力し、Node-REDフロー上にメッセージは出力しません。
Device (deviceも可)
Media (mediaも可)
PTZ (ptzも可)
Events (eventsも可)
正式なサービスの一覧及びサービス名ごとの使用できるONVIFの機能・設定項目については、 ONVIFの公式ドキュメントのページで、 各xxxx.wsdlのリンク先を参照ください。 ページ上部にあるhttp://www.onvif.org/ver10/サービス名/wsdlに記載れているサービス名が使用可能です。
- Operation Name
- 操作の名前を設定します。 ここで設定した値がSOAPメッセージのレスポンスと共に出力されます。 省略された場合、出力の
operation_name
が空の文字列となります。 - Name
- ノードの名前です。ここで設定した値がNode-REDのGUIエディタ上で表示されます。
2.6.2.2. 使用方法¶
本ノードを使用するためには、使用したいONVIF機能に対応したXMLテンプレートを作成し、 ice-onvif-discovery-configノードでカメラを自動発見できる設定をする必要があります。 テンプレートについての詳細は次項を、ice-onvif-discovery-configノードの設定については該当項目を参照してください。
また、カメラに対してONVIF操作をするためには自動採番されるカメラのオブジェクトIDを知る必要があります。 オブジェクトIDはice-onvif-discoveryの出力やICEバックエンドにregisterされた情報から知ることができます。
ice-onvif-discoveryノードと結線して発見時にONVIF操作を行うか、 ice backend inノードと結線してバックエンドからの命令でONVFI操作を実行することが可能です。
2.6.2.3. XMLテンプレートとプロパティ名について¶
XMLテンプレートにはONVIF仕様のSOAPメッセージの<Body></Body>
タグで囲われた部分の XMLを記載する必要があります。 XMLテンプレートにはMustache
で利用可能な構文を使用することが可能です。
テンプレート内の{{<プロパティ名>}}
で表記される文字列が、 各テンプレートを使用する際に設定可能なプロパティ名となります。 入力メッセージのpayload.onvif_operation.<プロパティ名>
に値を設定し、 ice onvif pipeノードに入力することで、 ice onvif pipeノードはテンプレートに設定値を挿入してSOAPメッセージを作成し、 カメラに送信します。
テンプレートにないプロパティがメッセージ内に設定されていた場合、 そのプロパティは無視されます。 また、テンプレート内のプロパティが入力メッセージ内に規定されていなかった場合、 <Tag>{{property}}</Tag>
が<Tag></Tag>
となるように、プロパティが空文字列となります。
プロパティには設定が必須なものがあります。 (どのプロパティが必須かはONVIFの仕様に従います。) 必須であるプロパティに値を設定しなかった場合、 カメラに対してSOAPメッセージを送信しても正しく設定が変更されない場合があります。
ice onvif pipeノードのXML Filepath
プロパティに指定できるテンプレート のサンプルとして、以下を用意しています。
- AddPTZConfiguration.xml
- 既存のメディアプロファイルに対してPTZ設定を追加するためのテンプレートです。
- Service Nameはmediaを指定してください。
- CreateUsers.xml
- ユーザを作成するためのテンプレートです。
- Service Nameはdeviceを指定してください。
- GetDNS.xml
- DNS設定を取得するためのテンプレートです。
- Service Nameはdeviceを指定してください。
- GetNetworkInterfaces.xml
- カメラのネットワークインタフェース設定を取得するためのテンプレートです。
- Service Nameはdeviceを指定してください。
- GetVideoEncoderConfiguration.xml
- ビデオエンコーダ設定を取得するためのテンプレートです。
- Service Nameはmediaを指定してください。
- RemovePTZConfiguration.xml
- 既存のメディアプロファイルに登録されているPTZ設定を削除するためのテンプレートです。
- Service Nameはmediaを指定してください。
- SetDNS.xml
- DNS設定を変更するためのテンプレートです。
- Service Nameはdeviceを指定してください。
- SetNetworkInterfaces_ipv4.xml
- カメラのネットワークインタフェース設定を変更するためのテンプレートです。IPV4アドレスの設定のみ対応しています。
- Service Nameはdeviceを指定してください。
- SetNetworkProtocols.xml
- ネットワークプロトコルを変更するためのテンプレートです。
- Service Nameはdeviceを指定してください。
- SetNTP.xml
- NTPサーバの設定変更を行うためのテンプレートです。
- Service Nameはdeviceを指定してください。
- SetSystemDateAndTime.xml
- カメラの日付、時間を変更するためのテンプレートです。
- Service Nameはdeviceを指定してください。
- SetUser.xml
- ユーザ設定を変更するためのテンプレートです。
- Service Nameはdeviceを指定してください。
- SetVideoEncoderConfiguration.xml
- ビデオエンコーダ設定を変更するためのテンプレートです。
- Service Nameはmediaを指定してください。
各サンプルのレスポンスでどのようなデータが返却されるかは、 ONVIFの公式ドキュメントから、 サービス名.wsdlのリンク先に記載されている各機能のoutputの項をご確認ください。
2.6.3. ノード共通設定¶
2.6.3.1. 自動発見設定(ice-onvif-discovery-config)¶
ice onvif discoveryノードのDiscovery
プロパティ及び ice onvif pipeノードCamera Manager
プロパティで共通して使用される、 カメラの接続先情報の設定を行うためのノードです。
設定は ice onvif discoveryノード、 ice onvif pipeノードの間で共有することができます。
ice-onvif-discovery-configはNode-REDフロー上に単体で設置できるノードではありません。 ONVIFアクチュエーションノードのDiscovery
プロパティ又はCamera Manager
プロパティから 設定値を入力することで使用できるノードです。
2.6.3.1.1. 設定項目¶
ice-discovery-configには以下の設定項目があります。
- Name
- ノードの名前です。ここで設定した値がONVIFアクチュエーションノードの
Discovery
プロパティに表示されます。 必須項目です。 - User Name
- カメラへの接続ユーザ名を指定します。 ここで設定した値は他の設定項目の値とは別に保存されるため、 Node-REDフローを外部にエクスポートしたときには含まれません。
- Password
- カメラへの接続パスワードを指定します。こせ設定値は伏字で表示されます。 ここで設定した値は他の設定項目の値とは別に保存されるため、 Node-REDフローを外部にエクスポートしたときには含まれません。
- Data Type
- カメラが送信するデータのタイプを指定します。必須項目です。
- Connection Timeout
- カメラに対して設定変更メッセージやPTZ制御メッセージを送信する際のタイムアウト時間をミリ秒で指定します。 規定値は120000です。
- Device
- カメラを発見する際に使用するネットワークインタフェースを指定します。 指定がない場合は、eth0が適用されます。
- Discovery TImeout
- サブネットワーク上にカメラ発見メッセージを送信した後、カメラからの応答を待つ時間をミリ秒で指定します。 規定値は5000です。
- Interval
- カメラ発見メッセージを送信し、発見・管理処理を行ってから、次にカメラ発見メッセージを送信するまでの間隔をミリ秒で指定します。 規定値は300000です。