SK VMS サーバーAPI 中級編 -コマンドによるカメラ登録-
SK VMSの知識 —
SK VMS APIへの理解を深めたい皆様、こんにちは。
前回のAPI講座は、サーバーの状態を取得する方法についてでした。
最終回となる今回は、APIでサーバーに設定を行う方法を、Ubuntu上のbashスクリプトを例にご紹介します。
今回でAPIの使い方は網羅でき、ここより先はAPIを利用するプログラム側をどう設計するかという話になるため、中級が最終回となりました。
APIで行える設定も例によって様々ありますので、今回はカメラ登録についてご紹介します。
※その他のAPIについては、入門編の記事を参考にAPIドキュメントを御覧ください。
さて、SK VMSのカメラ登録機能は「同一ネットワーク内のカメラ自動検索」や「IPアドレス範囲検索」など便利な機能を備えていますが、VPN環境やDDNS利用時などではそれらの機能が動作できず、カメラをひとつひとつ手動登録していく必要が生じることもあります。
そんなときに役立つのがカメラ登録APIです。うまく使えば、カメラのIPアドレス(ドメイン名)、ID、パスワードを一覧化しておくことで全台一括登録も可能です。まずはカメラ登録に必要なAPIを見てみましょう。
使用するAPI
カメラ登録には、次の3つのAPIを主に使用します。
HTTP メソッド | API パス | 役割 |
---|---|---|
GET | /api/manualCamera/search | 検索開始 |
GET | /api/manualCamera/status | 情報取得 |
POST | /api/manualCamera/add | 登録 |
「HTTPメソッド」という項目が突然出てきましたが、実は前回から「GET」メソッドについては扱っています。
前回は「おまじない」として軽く流していましたが、webブラウザでアクセスすれば情報が返ってくる、それがGETメソッドです。
今回出てきたPOSTはwebページで入力フォームの内容を送信する際などに使われるもので、ブラウザのアドレスバーから利用することは基本的にできません。
POST APIを扱うには、
- テスト用に簡単なwebページを作る
- 「Advanced REST client (Chromeの場合)」などを導入する
- Linux (Ubuntu) curlコマンドなどを利用する
などの手段があります。
今回はUbuntuでの実行例ということでcurlコマンドを利用します。
それでは、APIによるカメラ登録手順を具体的に見ていきましょう。
実行例
今回はコード自体の解説を省き、各段階で「やりたいこと」を明確にしていきます。
○検索開始
192.168.0.10 (camerauser / camerapassword) に対して検索プロセスを開始(1行目)し、検索プロセスの識別IDを取得(2行目)します。
repSearch=$(curl -sSk -X GET -u “vmsuser:vmspassword” “https://localhost:7001/api/manualCamera/search?url=192.168.0.10&user=camerauser&password=camerapassword”)
puuid=$(echo $repSearch | jq -r ‘.reply.processUuid’)
○情報取得
検索を開始すると、VMSが自動でカメラ情報を取得します。登録に必要な情報(下3行)を取り出します。
repStatus=$(curl -sSk -X GET -u “vmsuser:vmspassword” “https://localhost:7001/api/manualCamera/status?uuid=${puuid}”)
cam_uId=$(echo $repStatus | jq -r ‘.reply.cameras[].uniqueId’)
cam_url=$(echo $repStatus | jq -r ‘.reply.cameras[].url’)
cam_mft=$(echo $repStatus | jq -r ‘.reply.cameras[].manufacturer’)
実際にはカメラメーカーや機種によっては情報取得に時間がかかる場合があるので、.reply.status.current の値が100になるまで待機するスクリプトが望ましいです。
○カメラ登録
ここがPOST操作です。今までGETとしていた部分がPOSTになり、データのわたし方も変化します。
「カメラの情報を渡すから登録処理を始めて」といった実行内容です。
curl -sSk -X
POST -H “Content-Type: application/json” -u “vmsuser:vmspassword”
-d @- “https://localhost:7001/api/manualCamera/add” <<- EOS
{
“user”: “camerauser”,
“password”: “camerapassword”,
“cameras”: [{
“uniqueId”: “$cam_uId”,
“url”: “$cam_url”,
“manufacturer”: “$cam_mft”
}]
}
EOS
送った情報に異常がある場合、次のようなエラーが返ってきます。
問題がなければ次の値が返され、少し経つとカメラが追加登録されたことがクライアント上で確認できます。
最後に
SK VMS API最終回、カメラ登録はいかがでしたか?
あとは設定ファイルから情報をとってきてループを回せば、最初に挙げたような状況でも楽に全台登録できてしまいますね。
他にも、APIを扱えるプログラムを定時起動する設定を行うことで、
例えば特定ユーザーを指定時間帯のみ有効にするなど、特殊な要件にも対応可能です。興味のある方は是非APIリファレンスをご参照ください。
最後までお付き合いいただき有難うございました。
それでは皆様、よきAPIライフを!
[関連ページ]
SK VMS サーバーAPI 入門編 -APIとは-
https://sk-vms.systemk.co.jp/blog/knowledge/api.php
SK VMS サーバーAPI 初級編 -通知とブックマーク-
https://sk-vms.systemk.co.jp/blog/knowledge/api-notifications-bookmarks.php
SK VMS サーバーAPI 初級応用編 -サーバー情報を取得-
https://sk-vms.systemk.co.jp/blog/knowledge/api-get-server-info.php