TENVIS JPT3815W(2013版)で利用できるAPIを、判ってる範囲で記録しておく。
例えば、以下の様にコマンドラインからカメラを操作できる。
curl "http://[ipcamera]/media/?action=cmd&code=2&value=1"
なおアクセスの際にはBASIC認証が必要なので、ドメイン部分で[id]:[password]@[host]:[port]とするか、リクエストパラメータとして&user=[id]&pwd=[password]を付加する。
使用したカメラ
| JPT3815W(2013版) | バージョン |
|---|---|
| ハードウェア | Ver 1.7 |
| ファームウェア | Ver 1.7.25 |
GET /set_misc.cgi
カメラの向きが変わる速度を設定するAPI。
追加のパラメータとしてptz_patrol_rateが必要で、例えば以下の様に指定する。
curl "http://[ipcamera]/set_misc.cgi?ptz_patrol_rate=5"
指定できる値は以下の通り。
| Command | 'ptz_patrol_rate' |
Description |
|---|---|---|
| PTZ speed | [0-10] | 0: fastest ... 10: slowest |
GET /media/?action=cmd
カメラのPTZ(pan/tilt/zoom)操作行うAPI。なおこの機種にはZoom機能は無い。
追加のパラメータが必要で、codeで操作の種類を指定してvalueで具体的な指示を行う。
curl "http://[ipcamera]/media/?action=cmd&code=2&value=1"
指定できる値は以下の通り。
| Command | 'code' |
'value' |
Description |
|---|---|---|---|
| start Pan/Tilt | 2 | 1 | UP |
| 2 | DOWN | ||
| 3 | LEFT | ||
| 4 | RIGHT | ||
| 5 | UP-LEFT | ||
| 6 | UP-RIGHT | ||
| 7 | DOWN-LEFT | ||
| 8 | DOWN-RIGHT | ||
| 9 | LOOP:LEFT<->RIGHT | ||
| 10 | LOOP:UP<->DOWN | ||
| 11 | LOOP:BOTH | ||
| stop Pan/Tilt | 3 | [1-11] | the same as 'start Pan/Tilt'. |
| contrast | 5 | [0-10] | 0: softest ... 10: hardest |
| brightness | 6 | [0-10] | 0: darkest ... 10: brightest |
| resolution | 7 | 41943520 | width:640 x height:480 |
| 20971760 | width:320 x height:240 | ||
| 10485880 | width:160 x height:120 | ||
| frame rate | 8 | [30,20,15,10,5,4,3,2,1,-2,-3,-4,-5] | 30fps, 20fps, 15fps, 10fps, 5fps, 4fps, 3fps, 2fps, 1fps, 1fp/2s, 1fp/3s, 1fp/4s, 1fp/5s |
| flip horizon | 9 | 13 | |
| flip vertical | 9 | 23 | |
| set preset | 11 | [1-6] | |
| go preset | 13 | [1-6] |
GET /media/?action=snapshot、またはGET /snapshot.cgi
現在の画面をimage/jpeg形式で取得できる。
GET /media/?action=stream、またはGET /videostream.cgi
現在の映像ストリームをMotion JPEG形式で取得できる。
Motion JPEGは、フレーム毎にjpeg形式で圧縮された映像ストリームで音声は含まない。
各フレームは、レスポンスヘッダの
Content-Typeに含まれるboundaryで指定された文字列と短いヘッダで区別される。Content-Type: multipart/x-mixed-replace;boundary=ipcamera--ipcamera Content-Type: image/jpeg Content-Length: 31330 * binary data *
GET /videostream.asf
現在の映像・音声ストリームをASF(Advanced Streaming/Systems Format)形式で取得できる。
ASFについての詳細はASF File Structureを参照
POST /goform/cfgLan
カメラ端末としての名称、DHCPクライアント機能の有効/無効、利用するTCPポート番号を設定する。
curl -d 'hostname=IPCamera&chklan_dhcp=on&webPort=7777' "http://[ipcamera]/goform/cfgLan"
DHCPクライアント機能の無効にする場合は、端末のIPアドレス、サブネットマスク、ゲートウェイおよびDNSのIPアドレスを指定する。
curl -d 'hostname=IPCamera&lanIp=192.168.0.128&lanNetmask=255.255.255.0&lanGateway=192.168.0.1&lanDNS=192.168.0.1&webPort=7777' "http://[ipcamera]/goform/cfgLan"
空データを送ると端末名称はipCameraに、DHCPクライアント機能は有効に、TCPポート番号は(恐らく)現在接続しているポート番号に、それぞれ設定される。
POST /goform/formSetUpnp
UPnP機能の有効/無効を設定する。
POSTデータとしてchkUpnp=onを送るとUPnP機能を有効にする。有効にするとカメラのTCPポート49152(ファームウェアによっては違うかも…)が開く。
curl -d 'chkUpnp=on' "http://[ipcamera]/goform/formSetUpnp"
空データを送るとUPnP機能は無効になる。
POST /goform/formSetDDNS
DDNS機能の有効/無効を設定する。
POSTデータとしてchkDDNS=onを送るとDDNS機能を有効にする。元々はTENVIS社が用意しているドメインでカメラへアクセスできるようにする機能のようだが既にDDNSは稼働していない模様(?)
いずれにしろ、こんな危険な機能は即刻無効にすべきだろう。
curl -d 'chkDDNS=on' "http://[ipcamera]/goform/formSetDDNS"
空データを送るとDDNS機能は無効になる。
POST /goform/addStaProfile
Wifi APのプロファイルを追加する。
POSTに必要なデータは以下の通り。
| name | value/type | Description |
|---|---|---|
| profile_name | string | max length: 32 |
| Ssid | string | max length: 32 |
| network_type | 0 | 802.11 p2p |
| 1 | infra | |
| security_infra_mode | 0 | OPEN |
| 1 | SHARED | |
| 4 | WPA-Personal | |
| 7 | WPA2-Personal | |
| cipher | 0 | TKIP |
| 1 | AES | |
| passphrase | string | max length: 64 |
POST /goform/setStaProfile
Wifi APプロファイルの削除/アクティベートを行う。
POSTに必要なデータは以下の通り。
| name | value/type | Description |
|---|---|---|
| selectedProfile | number | Target profile number. |
| hiddenButton | "delete" | Delte profile. |
| "activate" | Activate profile. |