User Tools

Site Tools


http_api |

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
http_api [2020/10/30 18:49]
rachel [Decode Command]
http_api [2024/04/05 15:35] (current)
anthony [Overlay]
Line 1: Line 1:
-====== HTTP API for Z3CAM / HE2K-DCK HE4K-DCK / FV2K-DCK / FV4K-DCK/ FSDI-DCK / DME-10 / HE1080-RPS / ZCube / ZCube-SDI ====== +====== HTTP API for FXXX-1XA HEXK-DCK / FXXK-DCK / DME-10 / HE1080-RPS / Z3CAM / ZCube(-21/SC/SDI) / Z3Dome ​======
  
 For HE4K-01 / HE4K-R4 / MVE-150 / MVE-100R / SME-01 / DME-02/​03/​04 use [[:​http_api_lua|Z3-TI-http_api]] For HE4K-01 / HE4K-R4 / MVE-150 / MVE-100R / SME-01 / DME-02/​03/​04 use [[:​http_api_lua|Z3-TI-http_api]]
 +
 +For firmware version 5.X and higher
  
 ===== Configuration API Syntax ===== ===== Configuration API Syntax =====
- 
  
 ==== Reading Configuration ==== ==== Reading Configuration ====
Line 13: Line 13:
 [[http://​server_address/​cgi-bin/​control.cgi|http://​server_address/​cgi-bin/​control.cgi]] [[http://​server_address/​cgi-bin/​control.cgi|http://​server_address/​cgi-bin/​control.cgi]]
  
-with the body as given below.\\ +with the body as given below. 
-\\ + 
-The reponse will be in JSON format, giving the value of each variable.\\ +The reponse will be in JSON format, giving the value of each variable. To read global configuration variables, GET with this body:
-To read global configuration variables, GET with this body:+
 <​code>​ <​code>​
  
Line 48: Line 47:
  
 <​code>>>>​ print global_cfg.json() <​code>>>>​ print global_cfg.json()
-{u'​wifi_exists': ​False, u'​processor_id':​ u'Hi3519', u'​default_gw':​ u'​192.168.0.1',​ u'​disp_std':​ u'​auto',​ u'​session_id':​ u'​---',​ u'​timezone':​ u'​CST6CDT,​M3.2.0,​M11.1.0',​ u'​MODEL':​ u'Z3CAM-HD', u'pe3': u'',​ u'​board_id':​ u'0xFF02', u'z3_termsrv': u'enabled', u'​local_netmask':​ u'​255.255.0.0', u'​ret':​ u'​0',​ u'z3_wifi': u'enabled', u'​opmode':​ u'​encoder',​ u'​syspassword':​ u'',​ u'enc_current_preset': u'encoder', u'sysdevicename': u'ENCDEV', u'z3_tslowlat': u'​enabled',​ u'​z3_sntp':​ u'​enabled',​ u'​enc_adv_setting':​ u'​off',​ u'​do_autostart':​ 1, u'​enc_channels':​ u'​1',​ u'​pe8':​ u'',​ u'​local_dnsip':​ u'8.8.8.8', u'​local_ip':​ u'​192.168.0.120', u'​pe4':​ u'',​ u'​pe5':​ u'',​ u'​pe6':​ u'',​ u'pe7': ​u''​, u'​pe0':​ u'​encoder',​ u'​pe1':​ u'',​ u'​pe2':​ u'',​ u'opstate': u'RUNNING', u'​enable_snmp':​ u'​false',​ u'local_dnsip2': u'8.8.4.4', u'​enable_sntp':​ u'false', u'use_dhcp': u'1', u'​sntp_servers':​ u'128.138.141.172', u'focus_manual': u'auto', u'optical_zoom_only': u'0', u'​visca_present':​ u'​true'​}>>> ​print enc_cfg.json() +{u'​ipmtu':​ 1500, u'​vid_port':​ u'​microhdmi',​ u'​macaddr':​ u'​40:​cd:​3a:​04:​f0:​c3',​ u'​logo_enable':​ u'​off', ​u'​wifi_exists': ​True, 
-{u'zixioverhead': u'15', u'tsrate': u'3000K', u'zixiuser': u'user', u'vprofile': u'high', u'vbitrate': u'2M', u'feconoff': u'​off',​ u'vdelay': ​1000, u'vsource': u'hdmi', u'klvsrc': u'/​dev/​gv7601.0', u'fprefix': u'MOV1_%F_%T_', u'enc_status': u'RUNNING', u'telopenable': u'off', u'​auth_passwd':​ u'​password',​ u'​teloplocation':​ u'​top_left',​ u'pcrinterval': ​50, u'aptspcr': ​250, u'teloptext': u'ENCDEV', u'​zixiauthen':​ u'​off',​ u'tslowlat': u'on', u'storage': u'',​ u'vquality': u'balanced', u'ret': u'0', u'asamplerate': u'48000', u'vdest': u'192.168.0.6:8600', u'filesize': u'1024M', u'vgdr': u'on', u'telopcharsize': u'32', u'vratectrl': u'cbr', u'​klvbrate':​ u'​1000',​ u'abitrate': u'128000', u'vpid': ​221, u'feccol': ​5, u'acodec': u'fdk_aaclc', u'vframeratediv': ​1, u'zixisession': u'test', u'vres': u'follow_input', u'pcrpid': ​521, u'apid': ​120, u'aenable': u'on', u'asource': u'MICL', u'​vprotocol':​ u'​rtsp',​ u'preset': u'actv_preset', u'nfstrength': u'0', u'aport': u'8700', u'klvpid': u'35', u'vgopsize': ​60, u'pmtpid': ​31, u'authonoff': u'​off',​ u'vcodec': u'h265', u'klvenable': u'​off',​ u'klvmode': u'sdi', u'auxonoff': u'​off',​ u'channel': ​1, u'mounts': u'',​ u'auth_user': u'user', u'​fecrow':​ 1}+u'​processor_id':​ u'QCS605', ​u'​ddns_password':​ u'',​ u'​model_enable':​ u'​off',​ u'​enc_current_preset':​ u'​encoder',​ 
 +u'​default_gw':​ u'​192.168.0.1',​ u'​disp_std':​ u'​auto',​ u'​session_id':​ u'---', u'​ddns_provider':​ u'​freedns',​ 
 +u'​ptp_role':​ u'auto', u'​timezone':​ u'​CST6CDT,​M3.2.0,​M11.1.0',​ u'​MODEL':​ u'Z3-Q603-HD', u'opstate':​ u'​RUNNING',​ 
 +u'​hwversion':​ u'​Z3-Q603-HD',​ u'​ddns_enable':​ u'​off',​ u'​disp_input': u'primary', u'​board_id':​ u'0xFF10', 
 +u'termserve_remote_enable': u'on', u'​hwserial':​ u'​30010110194010011',​ u'​console_enable':​ u'​on',​ u'​enable_ptp':​ u'​false',​ 
 +u'​camera2_if_type':​ u'​Unused', u'​local_netmask':​ u'​255.255.255.0', u'​ret':​ u'​0',​ u'logo_width': ​319, u'MIC_analog_gain_db':​ 5, 
 +u'​camera1_if_type':​ u'​Sony_LVDS', u'​opmode':​ u'​encoder',​ u'​syspassword':​ u'',​ u'local_dnsip2': u'0.0.0.0', 
 +u'ddns_hostname': u'',​ u'use_dhcp':​ u'​0',​ u'​enc_vivpss_mode_enable':​ u'​off',​ u'​pe3':​ u'',​ u'​z3_termsrv': u'​enabled', 
 +u'​MICL_analog_gain_db':​ -20, u'​preview_auto_start':​ u'​1',​ u'​pe7':​ u'',​ u'​logo_height':​ 156, 
 +u'​sensor_serial':​ u'​30010310194010011\n',​ u'​ddns_username':​ u'',​ u'​eth_speed':​ u'​AUTO',​ u'​nfs_enable':​ u'​off',​ 
 +u'​nfs_server':​ u'​192.168.1.6',​ u'​z3_avmux':​ u'​enabled',​ u'​nmea_enable':​ u'off', u'​z3_sntp': u'​enabled',​ 
 +u'​eth_duplex':​ u'​AUTO',​ u'​z3_fec_enc':​ u'​enabled',​ u'​z3_webproxy': u'​enabled',​ u'​enc_adv_setting':​ u'​off',​ 
 +u'​do_autostart':​ 1, u'​enc_channels':​ u'​1',​ u'​pe8':​ u'',​ u'​local_dnsip':​ u'192.168.0.1', u'​local_ip':​ u'​192.168.0.14', 
 +u'​pe4':​ u'',​ u'​pe5':​ u'',​ u'​pe6':​ u'',​ u'diff_serve': ​0, u'​pe0':​ u'​encoder',​ u'​pe1':​ u'',​ u'​pe2':​ u'',​ 
 +u'nfs_server_root': u'/c/media', u'​enable_snmp':​ u'​false',​ u'fpgafileglob': u'',​ u'​enable_sntp':​ u'true', 
 +u'sysdevicename': u'Z3-Q603-HD', u'​sntp_servers':​ u'pool.ntp.org', u'zfinder_enable': u'on', u'model_name': u'Z3-Encoder',​ 
 +u'​hw50serial':​ u'​50010110194010011', u'​visca_present':​ u'​true'​} 
 + 
 +print enc_cfg.json() 
 +{u'vmulticastdest': u'225.1.2.3', u'tslowlat': u'on', u'klvmuxmethod': u'sync', u'srt_destAddr': u'192.168.0.6', 
 +u'vcrop_height': ​1080, u'zixifecblock':​ u'50', u'telopcharsize':​ u'​32',​ u'​source_status_str':​ u'​+CAMERA 1920x1080p 60.00 fps\n',​ 
 +u'​vratectrl':​ u'​cbr',​ u'​rotate_angle':​ 0, u'​zixisession':​ u'​test',​ u'​asource':​ u'​CAMERA',​ u'​aport':​ u'​8700',​ u'​pmtpid':​ 31, 
 +u'​authonoff': u'​off',​ u'srt_encrypt': ​0, u'vcodec': u'h265', u'klvmode': u'sdi', u'​auxonoff':​ u'​off',​ u'​channel':​ 1, 
 +u'​mounts':​ u'',​ u'​vcrop_width':​ 1920, u'​vcrop_x': ​0, u'vcrop_y':​ 0, u'amulticastdest': u'225.1.2.3', u'vprofile': u'high', 
 +u'klvsrc': u'/​dev/​gv7601.0', u'​auth_passwd':​ u'​password',​ u'​teloplocation':​ u'​top_left',​ u'gps_overlay_device': ​u'/​dev/​ttyAMA0'​, 
 +u'ret': ​u'​0'​, u'klvserialbaud': u'115200',​ u'​rtsp_auth_password':​ u'​admin',​ u'​zixirateadjen':​ u'on', u'​zixiauthen':​ u'​off',​ 
 +u'vinterlacemode': u'combine', u'vgopsize': ​60, u'mmulticastdest':​ u'​225.1.2.3', u'vcrop_enable': u'off', u'klvenable': u'off', 
 +u'preset': u'actv_preset', u'mport': u'8800', u'​auth_user'​u'user', u'gps_overlay_enable': u'off', u'zixioverhead': u'15', 
 +u'tsrate': u'5000K', u'enc_status': u'RUNNING',​ u'​pcrinterval':​ 50, u'​aptspcr':​ 250, u'​filesize':​ u'​1024M', u'​klvbrate':​ u'​1000',​ 
 +u'acodec': u'fdk_aaclc', u'lowdelay_opt': ​u'​off'​, u'apid': ​120, u'zixilatency': u'500', u'rtsp_auth_enable': ​u'​off'​, u'srt_mode': ​0, 
 +u'klvpid':​ u'35', u'nfstrength': u'0', u'vbitrate': ​u'​4M'​, u'rtsp_auth_username': ​u'​admin'​, u'zixiuser': u'user', 
 +u'gps_overlay_location': u'top_right', u'​vprotocol':​ u'​rtsp',​ u'feconoff': u'off', u'vdelay': ​1000, u'vsource':​ u'​CAMERA', 
 +u'fprefix': u'MOV1_%C', u'telopenable': u'off', u'teloptext': ​u'​Z3-Q603-HD'​, u'storage': ​u'/​media/​sda1'​, u'vquality':​ u'​balanced',​ 
 +u'​asamplerate':​ u'​1',​ u'vgdr': u'​off',​ u'rotate_enable': u'off', u'avmux_index':​ u'​streaming',​ u'​abitrate':​ u'​128000',​ u'​vpid':​ 221, 
 +u'​feccol':​ 5, u'​gps_overlay_char_size':​ u'​32',​ u'​vframeratediv':​ 1, u'​pipenable': u'​off',​ u'vres': u'follow_input', u'pcrpid':​ 521, 
 +u'​aenable': u'​off',​ u'apair': ​0, u'piplocation': u'top_right', u'rtmp265_enable': u'off', u'​srt_pass':​ u'​password1234',​ 
 +u'​vdest':​ u'​192.168.0.6:​8600', u'​fecrow':​ 1}
  
 </​code>​ </​code>​
Line 55: Line 90:
 ---- ----
  
 +===== Encoder Channel Configuration =====
  
-===== Decode Command =====+==== aenable ​====
  
-decode instance=%d url=%s codec=%s viewport=%s+Description:​ Enable audio channel
  
 +Possible values: yes, no
  
-==== max_latency_ms ​====+==== acodec ​====
  
-Description:​+Description: ​Audio encoder algorithm selection
  
-Possible values: ​0<​milliseconds>​uncontrolled+Possible values: ​dsp_aaclcfdk_aaclcfdk_aache, fdk_aache_v2
  
-==== rtsp_flags ​====+==== abitrate ​====
  
-Description:​+Description: ​Audio encode bitrate
  
-Possible values: ​UDP, TCP, HTTP+Possible values: ​Depends on codec; in units of bits per second
  
-==== codec ====+==== asamplerate ​====
  
-Set to h265 and will be auto-detected as h265/​h264/​mjpeg+Description:​ Audio sample rate
  
-Possible values: ​h264h265+Possible values: ​4800044100
  
 +==== asource ====
  
-==== viewport ====+Description:​ Select audio input
  
-DescriptionDisplay size[keep original size, fit to display, keep aspect ratio, scale percentage]+Possible valuesMICL (microphoneline input levels)
  
-Possible values: ​<font 16px/​inherit;;​inherit;;​inherit>=</​font>​originalfit, keep_aspect,​ scale\\ +<code> 
-\\+MIC    (unpowered microphone levels) 
 +HDMI   ​(microHDMI inputfor HE4K-DCK/​FV4K-13A only) 
 +HD-SDI (SDI input, for DME-10/​FSDI-DCK/​FSDI-13A only)
  
 +</​code>​
  
-====== ZIXI URL Parameters ======+==== apid ====
  
-The URL may have parameters passed in as:+DescriptionAudio PID for transport stream.
  
-base_url?​param1=val1&​param2=val2+Possible values: 32 to 8191 - must not conflict with other PID assignments.
  
-==== fec ====+==== aport ====
  
-Description:​+Description: ​Destination UDP port for RTP audio
  
-Possible values: on, off+==== aptspcr ====
  
-==== fecoverhead ====+Description:​ For transport stream modes only – intial PTS to PCR offset for audio, in milliseconds
  
-Description:+Possible values100 to 2000
  
-Possible values: overhead_percentage+==== auth_passwd ====
  
-==== fecblock ====+Description:​ Password for RTMP authentication.
  
-Description:​+==== auth_user ====
  
-Possible valuesfec block size in milliseconds+DescriptionUsername for RTMP authentication.
  
-==== latency ​====+==== authonoff ​====
  
-Description:​+Description: ​Enable or disable RTMP authentication. Default: off Possible values: on, off
  
-Possible values: latency in milliseconds for retransmissions+==== channel ====
  
-==== decrypt ====+Description:​ Encoder channel number
  
-Description:​ +Possible values: 1, 2, 3
- +
-Possible values: ​0, 1, 2, 3, 4 (0=AES-128, 1=AES-192, 2= AES-256, 3=ChaCha20, 4=None) +
- +
-==== pass ==== +
- +
-Description:​ +
- +
-Possible values: <​password>​ +
- +
-===== SRT URL Parameters ===== +
- +
-==== mode ==== +
- +
-Description:​ +
- +
-Possible values: listener, caller, rendezvous +
- +
-==== latency ==== +
- +
-Description:​ +
- +
-Possible values: latency in milliseconds for retransmission +
- +
-==== pbkeylen ==== +
- +
-Description:​ +
- +
-Possible values: 16, 24, 32 (16=AES-128,​ 24=AES-192, 32=AES-256) +
- +
-==== passphrase ==== +
- +
-Description:​ +
- +
-Possible values: <​password>​+
  
 ==== feccol ==== ==== feccol ====
Line 189: Line 196:
  
 Absolute path to mounted media device (e.g. /​media/​sda1/​) Absolute path to mounted media device (e.g. /​media/​sda1/​)
 +
 +==== avmux_index ====
 +
 +For MP4 recording only. Possible values: normal, streaming
 +
 +normal means MOOV atom at the end of file.
 +
 +streaming means MOOF atoms interspersed throughout the file, which is more tolerant of errors and truncated files.
 +
 +streaming is recommended for most recording scenarios. Only select "​normal"​ if you want conventional MOOV atom at the end of file, if some legacy tool or decoder requires it.
  
 ==== telopcharsize ==== ==== telopcharsize ====
Line 247: Line 264:
  
 <​code>​ <​code>​
- server_ip[:​server_port]/​application/​streamname+server_ip[:​server_port]/​application/​streamname
  
 </​code>​ </​code>​
Line 253: Line 270:
 ==== vframeratediv ==== ==== vframeratediv ====
  
-Description:​ Divide video input frame rate by this number to get encode frame rate.\\ +Description:​ Divide video input frame rate by this number to get encode frame rate. The encoder will discard (frameratediv-1) out of (frameratediv) frames. 
-The encoder will discard (frameratediv-1) out of (frameratediv) frames.\\ +
-\\+
 Possible values: 1, 2, 3, 4, 5, 6 Possible values: 1, 2, 3, 4, 5, 6
  
Line 284: Line 300:
 ==== vquality ==== ==== vquality ====
  
-Description:​ Set balance between low latency, and higher quality bitrate compliance.+Description:​ Set balance between low latency, and higher quality+bitrate compliance.
  
 Possible values: lowlat, balanced, high Possible values: lowlat, balanced, high
Line 303: Line 319:
 <​code>​ <​code>​
  
-               WxH           ​resize to width W and height H+WxH           ​resize to width W and height H
  
 </​code>​ </​code>​
Line 419: Line 435:
 ==== klvenable ==== ==== klvenable ====
  
-Description:​ Enable KLV capture from SDI, if supported.+Description:​ Enable KLV capture from SDI, UART or debug file, if supported.
  
 Possible values: off, on Possible values: off, on
 +
 +==== klvmode ====
 +
 +Description:​ Type of KLV source device, whose path is specified in klvsrc
 +
 +Possible values: sdi, serial, file
 +
 +==== klvserialbaud ====
 +
 +Description:​ If klv_mode is serial, specify the baud rate
 +
 +Possible values: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
 +
 +==== klvmuxmethod ====
 +
 +Description:​ Select synchronous or asynchronous transport stream KLV multiplexing,​ as specified in MISB ST 1402
 +
 +Possible values: sync, async
  
 ==== klvpid ==== ==== klvpid ====
Line 455: Line 489:
 server_url='​http://​192.168.0.120'​ server_url='​http://​192.168.0.120'​
  
-control_cgi_url = server_url ​  ​'/​cgi-bin/​control.cgi'​+control_cgi_url = server_url ​'/​cgi-bin/​control.cgi'​
  
 payload = '​ctrl=sys&​chn=null'​ payload = '​ctrl=sys&​chn=null'​
Line 464: Line 498:
  
 enc_channels_string = j['​enc_channels'​] enc_channels_string = j['​enc_channels'​]
-opmode ​      ​= j['​opmode'​]+opmode ​ = j['​opmode'​]
  
 enc_channels = enc_channels_string.split( ','​ ) enc_channels = enc_channels_string.split( ','​ )
Line 473: Line 507:
  
 for channel in channel_list : for channel in channel_list :
-    ​# Remove leading C +# Remove leading C 
-    if channel[0:​0] == '​C':​ +if channel[0:​0] == '​C':​ 
-        channel = channel[1:​] +channel = channel[1:​] 
-    print actionname, ' ', opmode, '​channel',​ channel +print actionname, ' ', opmode, '​channel',​ channel 
-    payload = '​action='​ actionname '&' ​ '​chn=' ​ channel '&' ​  ​'​loadfromdb=true';​ +payload = '​action='​+actionname+'&'​'​chn=' ​+channel+'&' ​'​loadfromdb=true';​ 
-    headers={'​Content-Type':'​application/​x-www-form-urlencoded;​ charset=UTF-8'​} +headers={'​Content-Type':'​application/​x-www-form-urlencoded;​ charset=UTF-8'​} 
-    r = requests.post(control_cgi_url,​ data=payload,​ headers=headers)+r = requests.post(control_cgi_url,​ data=payload,​ headers=headers)
  
-    ​print r.text+print r.text
  
 </​code>​ </​code>​
Line 496: Line 530:
 </​code>​ </​code>​
  
-==== StartChannel ==== 
  
-\\ +==== AddChannel ====
-Transition the encoder channel into the running state.+
  
-Once you start the channel, it will not transmit data until the\\ +----
-video input is detected.+
  
-==== StopChannel ====+Add a channel. Check the channel number is valid or not. Based on it, update the channel number and preseting values in the Database.
  
-Transition the encoder channel into the stopped state.+== Parameters: ==
  
-==== SaveUser ====+----
  
-Save current settings to non-volatile memory, so they will be used on the next startup.+**//​enc_channels//​** ​ Get the encoder channel numberThe default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4
  
-==== RestartBoard ====+Returns:
  
-Reboot the board+----
  
-==== PtzContinuousMove ====+JSON formatted table with values below
  
-Pan to the left at half speed+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-<​code>​ +**//​status//​** ​ String describing the failure when **ret** is 1. "OK" ​on success.
-  action=PtzContinuousMove&​data={"PanTilt":​{"​x":​-0.5,"​y":​0},"​idx":​0}+
  
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +action=AddChannel&​newchn=2
 </​code>​ </​code>​
  
-Pan to the right at half speed+Use the python script **saveUser_DIGEST_ARGPARSE.py** its in this document and replace the given action command for verify. 
 + 
 +---- 
 + 
 +=== Example output: ===
  
 <​code>​ <​code>​
-  action=PtzContinuousMove&​data={"​PanTilt":​{"​x":​0.5,"​y":​0},"​idx":​0} 
  
 +Add Channel response: {"​ret":"​0","​status":"​OK"​}
 </​code>​ </​code>​
  
-Tilt down at max speed+----
  
-<​code>​ 
-  action=PtzContinuousMove&​data={"​PanTilt":​{"​x":​0,"​y":​1},"​idx":​0} 
  
 +==== AddHistory ====
 +
 +----
 +
 +Get the channel number and URL as an input and update this value along with the index in the database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**channel**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +
 +**//​histidx//​** ​ Index of the channel.
 +
 +**//​url//​** ​ URL of the channel.
 +
 +Returns:
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +
 +==== camera_inquiry ====
 +
 +----
 +
 +Read vendor and model info from the visca camera.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**cam_index **//  Read the camera index value. Possible values: 1 = Camera 1, 2 = Camera 2.
 +
 +----
 +
 +**//​function//​ **
 +
 +Returns:
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +action=camera_inquiry&​cam_index=1
 </​code>​ </​code>​
  
-==== PtzStop ====+Use the python script **saveUser_DIGEST_ARGPARSE.py** its in this document and replace the given action command for verify.
  
-Stop pan and tilt+---- 
 + 
 +=== Example output: ===
  
 <​code>​ <​code>​
-  action=PtzStop&​data={"mode":​1,"​idx":0}+ 
 +Camera Inquiry response: ​{"auto_focus_limit":​45056,"​camera_idx":​1,"​echo_commands":​true,"​focus_label":​["​1cm",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​5cm",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​15cm",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​30cm",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​50cm",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​1m",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​1.5m",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​1.7m",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​2m",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​2.5m",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​3.3m",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​5m",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​10m",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​Inf"​],"​gain_label":​["​0db",​null,​null,​null,​null,​null,​null,​null,"​24db",​null,​null,​null,​null,​null,​null,​null,"​48db"​],"​has_digital_zoom":​true,"​has_ir_cut_filter":​true,"​has_visibility_enhancement":​true,"​iris_label":​["​0",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​F4.8",​null,​null,​null,​null,​null,​null,​null,​null,"​F2.0"​],"​lock_fd":​16,"​max_focus":​57344,"​max_gain":​17,"​max_hlc_level":​1,"​max_hlc_level_mask":​1,"​max_iris":​25,"​max_shutter":​33,"​max_slow_shutter_limit":​255,"​min_focus":​4096,"​min_gain":​1,"​min_iris":​0,"​min_shutter":​6,"​min_slow_shutter_limit":​0,"​monitor_mode_table":​{"​1080p-25":​8,"​1080p-29.97":​6,"​1080p-50":​20,"​1080p-59.94":​19,"​2160p-25":​30,"​2160p-29.97":​29,"​720p-50":​12,"​720p-59.94":​9},"​ret":​0,"​shutter_label":​["​1/​1",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​1/​100",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​1/​10K"​],"​visca_digital_zoom_table":​[[1,​16384],​[1.1325,​18304],​[1.28,​19968],​[1.5,​21846],​[1.6,​22528],​[1.79,​23616],​[1.925,​24256],​[2,​24576],​[3,​27307],​[4,​28672],​[5,​29492],​[6,​30038],​[7,​30428],​[8,​30720],​[9,​30948],​[10,​31130],​[11,​31279],​[12,​31424]],"​visca_fw_version_id":"​0101","​visca_ignore_not_exec":​{"​raw":​true,"​stable_zoom_off":​true,"​stable_zoom_on":​true,"​wb_manual_bgain_direct":​true,"​wb_manual_rgain_direct":​true},"​visca_localport":​1000,"​visca_model_id":​1802,"​visca_name":"​Sony FCB-ER8550","​visca_nest_count":​0,"​visca_optical_zoom_table":​[[1,​4.4,​0],​[2,​8.8,​3521],​[3,​13.2,​6252],​[4,​17.6,​8214],​[5,​22,​9620],​[6,​26.4,​10679],​[7,​30.8,​11515],​[8,​35.2,​12208],​[9,​39.6,​12812],​[10,​44,​13357],​[11,​48.4,​13832],​[12,​52.8,​14250],​[13,​57.2,​14620],​[14,​61.6,​14950],​[15,​66,​15248],​[16,​70.4,​15516],​[17,​74.8,​15761],​[18,​79.2,​15986],​[19,​83.6,​16192],​[20,​88.4,​16384]],"​visca_vendor_id":​32,"​visca_zoom_max":​31424,"​visca_zoom_max_optical":​16384,"​visca_zoom_min":0}
  
 </​code>​ </​code>​
 +
 +----
  
 ==== CameraControl ==== ==== CameraControl ====
  
-Send VISCA commands to camera.+---- 
 + 
 +Send control ​commands to camera.
  
 Only one command can be sent at a time; the list below are the only supported VISCA commands through the HTTP API. To use VISCA commands that are not listed, usage of the TCP socket can be used to send those VISCA commands. Only one command can be sent at a time; the list below are the only supported VISCA commands through the HTTP API. To use VISCA commands that are not listed, usage of the TCP socket can be used to send those VISCA commands.
Line 557: Line 663:
  
 <​code>​ <​code>​
-action=CameraControl&​command=visca_command&​cam_index=1+action=CameraControl&​interface=Visca&​command=visca_command&​cam_index=1 
 + 
 +interface possible values: Visca, Tamarisk, Tau2, Boson, Genlock (default: Visca)
  
 </​code>​ </​code>​
Line 577: Line 685:
 </​code>​ </​code>​
  
-The commands use the same syntax as the serial menu "​V"​ command, as shown below+The Visca commands use the same syntax as the serial menu "​V"​ command, as shown below
  
 For the most current list of VISCA commands supported press "​V"​ from the Serial/SSH session of the Serial Menu. For the most current list of VISCA commands supported press "​V"​ from the Serial/SSH session of the Serial Menu.
Line 589: Line 697:
 cam_custom_set cam_custom_set
 chroma_get_suppress chroma_get_suppress
-chroma_suppress ​     Set Chroma Suppression ​ (0=none, 1 to 3=chroma supression strength)+chroma_suppress ​ Set Chroma Suppression ​ (0=none, 1 to 3=chroma supression strength)
 clear_if clear_if
-color_gain ​          ​Set Color gain (0=60%, 14=200%)+color_gain ​ Set Color gain (0=60%, 14=200%)
 color_get_gain color_get_gain
 color_get_hue color_get_hue
-color_hue ​           Set Color hue (0=-14 degrees, 14= 14 degrees)+color_hue ​ Set Color hue (0=-14 degrees, 14=+14 degrees)
 debug_rx debug_rx
 dzoom_combine_mode dzoom_combine_mode
-dzoom_direct ​        ​D-Zoom Position (0x00 to 0xeb) +dzoom_direct ​ D-Zoom Position (0x00 to 0xeb) 
-                     ​* Enabled during Separate mode+* Enabled during Separate mode
 dzoom_off dzoom_off
 dzoom_on dzoom_on
Line 604: Line 712:
 dzoom_stop dzoom_stop
 dzoom_super_res dzoom_super_res
-dzoom_tele_var ​      ​p = 0 (Low) .. 7 (High) +dzoom_tele_var ​ p = 0 (Low) .. 7 (High) 
-                     ​* Enabled during Separate Mode +* Enabled during Separate Mode 
-dzoom_wide_var ​      ​p = 0 (Low) .. 7 (High) +dzoom_wide_var ​ p = 0 (Low) .. 7 (High) 
-                     ​* Enabled during Separate Mode+* Enabled during Separate Mode
 dzoom_x1_max dzoom_x1_max
 eflip_off eflip_off
Line 615: Line 723:
 ext3_func_inquiry ext3_func_inquiry
 focus_auto focus_auto
-focus_direct ​        ​focus pos +focus_direct ​ focus pos 
-                     ​Min. 0x1000 Over Inf +Min. 0x1000 Over Inf 
-                     ​0x2000 10m +0x2000 10m 
-                     ​0x3000 5m +0x3000 5m 
-                     ​0x4000 3.3m +0x4000 3.3m 
-                     ​0x5000 2.5m +0x5000 2.5m 
-                     ​0x6000 2m +0x6000 2m 
-                     ​0x7000 1.7m +0x7000 1.7m 
-                     ​0x8000 1.5m +0x8000 1.5m 
-                     ​0x9000 1m +0x9000 1m 
-                     ​0xa000 50cm +0xa000 50cm 
-                     ​0xb000 30cm +0xb000 30cm 
-                     ​0xc000 15cm +0xc000 15cm 
-                     ​0xd000 6cm +0xd000 6cm 
-                     ​0xe000 1cm+0xe000 1cm
 focus_get_mode focus_get_mode
 focus_get_pos focus_get_pos
 focus_manual focus_manual
-focus_near_limit ​    ​focus near limit +focus_near_limit ​ focus near limit 
-                     ​Min. 0x1000 Over Inf +Min. 0x1000 Over Inf 
-                     ​0x2000 10m +0x2000 10m 
-                     ​0x3000 5m +0x3000 5m 
-                     ​0x4000 3.3m +0x4000 3.3m 
-                     ​0x5000 2.5m +0x5000 2.5m 
-                     ​0x6000 2m +0x6000 2m 
-                     ​0x7000 1.7m +0x7000 1.7m 
-                     ​0x8000 1.5m +0x8000 1.5m 
-                     ​0x9000 1m +0x9000 1m 
-                     ​0xa000 50cm +0xa000 50cm 
-                     ​0xb000 30cm +0xb000 30cm 
-                     ​0xc000 15cm +0xc000 15cm 
-                     ​0xd000 6cm +0xd000 6cm 
-                     ​0xe000 1cm+0xe000 1cm
 focus_stop focus_stop
 focus_tele_std focus_tele_std
-focus_tele_var ​      ​p = 0 (Low) .. 7 (High)+focus_tele_var ​ p = 0 (Low) .. 7 (High)
 focus_toggle focus_toggle
 focus_wide_std focus_wide_std
-focus_wide_var ​      ​p (0 (Low) .. 7 (High)) +focus_wide_var ​ p (0 (Low) .. 7 (High)) 
-get_low_delay_mode ​  ​Get low delay mode: 0 - normal, 1 - low delay +get_low_delay_mode ​ Get low delay mode: 0 - normal, 1 - low delay 
-get_monitor_mode ​    ​get_monitor_mode:​ Get video mode of camera output+get_monitor_mode ​ get_monitor_mode:​ Get video mode of camera output
 help help
 high_sensitivity_off high_sensitivity_off
 high_sensitivity_on high_sensitivity_on
-icr_mode ​            ​modes: +icr_mode ​ modes: 
-                     ​auto +auto 
-                     ​on +on 
-                     ​off +off 
-                     ​threshold [0-255]+threshold [0-255]
 lens_control_inquiry lens_control_inquiry
 lens_get_temp lens_get_temp
Line 672: Line 780:
 power_off power_off
 power_on power_on
-register_read ​       Read internal register. +register_read ​ Read internal register. 
-register_write ​      ​Write internal register. +register_write ​ Write internal register. 
-                     ​* Note: To make register changes effective, run power_off and power_on+* Note: To make register changes effective, run power_off and power_on
 set_address set_address
-set_low_delay_mode ​  ​Set low delay mode: 0 - normal, 1 - low delay +set_low_delay_mode ​ Set low delay mode: 0 - normal, 1 - low delay 
-set_monitor_mode ​    ​Set monitor mode. +set_monitor_mode ​ Set monitor mode. 
-                     ​List of modes: 1080p-25 +List of modes: 1080p-25 
-                     ​720p-50 +720p-50 
-                     ​720p-59.94 +720p-59.94 
-                     ​2160p-25 +2160p-25 
-                     ​2160p-29.97 +2160p-29.97 
-                     ​1080p-29.97 +1080p-29.97 
-                     ​1080p-59.94 +1080p-59.94 
-                     ​1080p-50 +1080p-50 
-slow_shutter ​        ​modes: +slow_shutter ​ modes: 
-                     ​on +on 
-                     ​off+off
 limit [0-255] limit [0-255]
-trace                enable (0=off, 1=on)+trace  enable (0=off, 1=on)
 version_inquiry version_inquiry
 wb_auto_mode wb_auto_mode
Line 700: Line 808:
 wb_indoor_mode wb_indoor_mode
 wb_manual_bgain_direct Set Manual WB BGain (0..255) wb_manual_bgain_direct Set Manual WB BGain (0..255)
-                       * Enabled during Manual WB mode+* Enabled during Manual WB mode
 wb_manual_bgain_reset wb_manual_bgain_reset
 wb_manual_mode wb_manual_mode
 wb_manual_rgain_direct Set Manual WB RGain (0..255) wb_manual_rgain_direct Set Manual WB RGain (0..255)
-                       * Enabled during Manual WB mode+* Enabled during Manual WB mode
 wb_manual_rgain_reset wb_manual_rgain_reset
 wb_onepush_mode wb_onepush_mode
Line 713: Line 821:
 wb_sodium_lamp_fixed_mode wb_sodium_lamp_fixed_mode
 wb_sodium_lamp_outdoor_mode wb_sodium_lamp_outdoor_mode
-zoom_direct ​         pos +zoom_direct ​ pos 
-                     ​Min. 0x0000 +Min. 0x0000 
-                     ​Max. 0x4000 (In Separate mode) +Max. 0x4000 (In Separate mode) 
-                     ​Max. 0x4000 (In Combine mode and DZoom=Off) +Max. 0x4000 (In Combine mode and DZoom=Off) 
-                     ​Max. 0x59C0 (In Combine mode, DZoom=Super Resolution Zoom, and monitoring mode QFHD) +Max. 0x59C0 (In Combine mode, DZoom=Super Resolution Zoom, and monitoring mode QFHD) 
-                     ​Max. 0x6000h (In Combine mode, DZoom=Super Resolution Zoom, and monitoring mode FHD or less) +Max. 0x6000h (In Combine mode, DZoom=Super Resolution Zoom, and monitoring mode FHD or less) 
-                     ​Max. 0x7AC0h (In Combine mode and DZoom=On)+Max. 0x7AC0h (In Combine mode and DZoom=On)
 zoom_get_pos zoom_get_pos
 zoom_stop zoom_stop
 zoom_tele_std zoom_tele_std
-zoom_tele_var ​       p = 0 (Low) .. 7 (High)+zoom_tele_var ​ p = 0 (Low) .. 7 (High)
 zoom_wide_std zoom_wide_std
-zoom_wide_var ​       p (0 (Low) .. 7 (High))+zoom_wide_var ​ p (0 (Low) .. 7 (High)) 
 + 
 +</​code>​ 
 + 
 +Tau2 Specific 
 + 
 +<code python>​ 
 +The Color are done in the FPGA: 
 + 
 +OFF: 
 +SetColorPallette+off 
 + 
 +RESET: 
 +SetColorPallette+reset 
 + 
 +COLORS: 
 +SetColorPallette+blackhot 
 +SetColorPallette+whitehot 
 +SetColorPallette+sepia 
 +SetColorPallette+rainbow 
 +SetColorPallette+rain 
 +SetColorPallette+ironbow2 
 +SetColorPallette+ironbow1 
 +SetColorPallette+icefire 
 +SetColorPallette+glowbow 
 +SetColorPallette+fusion 
 +SetColorPallette+color2 
 +SetColorPallette+color1
  
 </​code>​ </​code>​
Line 732: Line 867:
  
 The values accepted are either 1 or 2 The values accepted are either 1 or 2
 +
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +
 +==== ClearHistory ====
 +
 +----
 +
 +Delete the decoder history for the channel number and update in the database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +action=ClearHistory&​chn=2
 +</​code>​
 +
 +Use the python script **saveUser_DIGEST_ARGPARSE.py** its in this document and replace the given action command for verify.
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Clear History response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== DeleteChannel ====
 +
 +----
 +
 +Clear the channel deatils in the database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +action=DeleteChannel&​chn=2
 +</​code>​
 +
 +Use the python script **saveUser_DIGEST_ARGPARSE.py** its in this document and replace the given action command for verify.
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +
 +Delete Channel response: {"​ret":"​0","​status":"​OK"​}
 +
 +</​code>​
 +
 +----
 +
 +==== DeletePreset ====
 +
 +----
 +
 +Get the row as an input and delete the row information in the database.
 +
 +== Parameters: ==
 +
 +----
 +
 +**//​Opmode//​ ** operation mode. Possible values: Encoder or Decoder
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +action=DeletePreset&​deleterow=2
 +</​code>​
 +
 +Use the python script **saveUser_DIGEST_ARGPARSE.py** its in this document and replace the given action command for verify.
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +
 +Delete Preset response: {"​ret":"​0","​status":"​OK"​}
 +
 +</​code>​
 +
 +----
 +
 +==== DisconnectWifiAP ====
 +
 +----
 +
 +Disconnect the wifi network and stop the wifi process id.
 +
 +== Parameters: ==
 +
 +----
 +
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +action=DisconnectWifiAP&​cam_index=1
 +</​code>​
 +
 +Use the python script **saveUser_DIGEST_ARGPARSE.py** its in this document and replace the given action command for verify.
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Disconnect WiFi AP response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== Dynamic ====
 +
 +----
 +
 +Dynamic instance for the channel number and update the preseting values in the database
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +
 +//**var **//  Read the nfstrength value
 +
 +//​**val**// ​ rotate_angle value.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +action=Dynamic&​chn=1&​var=analog_gain_db&​val=10
 +</​code>​
 +
 +Use the python script **saveUser_DIGEST_ARGPARSE.py** its in this document and replace the given action command for verify.
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Dynamic response: {"​ret":"​0","​status":"​+OK"​}
 +</​code>​
 +
 +----
 +
 +==== EjectStorage ====
 +
 +----
 +
 +Safely eject the removable storage media from the device.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +
 +//​**dev**// ​ Removable device mount point
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +action=EjectStorage&​chn=1&​dev=/​media/​mmcblk0p1/​
 +</​code>​
 +
 +Use the python script **saveUser_DIGEST_ARGPARSE.py** its in this document and replace the given action command for verify.
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Eject Storage response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== ErasePresets ====
 +
 +----
 +
 +Delete the preseting values from the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//**mode **//  Get the operation mode. The default mode is encoder. Possible values : Encoder , Decoder.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +action=ErasePresets
 +</​code>​
 +
 +Use the python script **saveUser_DIGEST_ARGPARSE.py** its in this document and replace the given action command for verify.
 +
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Erase Presets response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== ExportPresets ====
 +
 +----
 +
 +Create a new database and export the preseting values from the currernt database to the new database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//**mode **//  Get the operation mode. The default mode is encoder. Possible values : Encoder , Decoder.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +action=ExportPresets
 +</​code>​
 +
 +Use the python script **saveUser_DIGEST_ARGPARSE.py** its in this document and replace the given action command for verify.
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Export Presets response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== FactoryReset ====
 +
 +----
 +
 +Remove the opt/config folder from the device and set up the default ip address, net mask, gateway, primary dnsip, dhcp in the device.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**reset_ip**// ​ Get the reset value. Possible values: 0, 1.
 +
 +The value 0 only for factory reset, and value 1 for factory and ip reset.
 +
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +action=FactoryReset&​reset_ip=0
 +</​code>​
 +
 +Use the python script **saveUser_DIGEST_ARGPARSE.py** its in this document and replace the given action command for verify.
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +FactoryReset response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +==== fmt_media ====
 +
 +----
 +
 +Format the removable storage media in FAT filesystem format and mount it.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**disk_name**// ​ disk name of the removable media format.
 +
 +//​**partition_name**// ​ partition name of the disk.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +action=fmt_media&​disk_name=/​dev/​mmcblk0&​partition_name=mmcblk0p1
 +</​code>​
 +
 +Use the python script **saveUser_DIGEST_ARGPARSE.py** its in this document and replace the given action command for verify.
 +
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Format media response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== GetCameraLink ====
 +
 +----
 +
 +Get the value of color table using the system call and pixel format from the fpga.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**color_table**// ​ Color table. Possible values: 0 , 1.
 +
 +//​**pxl_format**// ​ Pixel format.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Get camera link response: {"​color_table":"​-1","​pxl_format":"​5","​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +
 +==== GetCameraTab ====
 +
 +----
 +
 +Get the camera tab index and camera type. Provide the html file
 +
 +== Parameters: ==
 +
 +----
 +
 +**//​tab_index//​** ​ Get the camera tab index. Possible values: 1 = Camera 1, 2 = Camera 2.
 +
 +//**type **//  Get the camera type. Possible values: Visca,
 +
 +//**html **//  Provide the html file. Default html file is visca.html. Possible html files are: visca.html, flexio.html.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Get Camera Tab response: {"​html":"<​!-- labeled slider plugin for jQuery UI -->​\n<​link rel=\"​stylesheet\"​ href=\"​jquery.ui.labeledslider.css\">​\n<​script src=\"​jquery.ui.labeledslider.js\"></​script>​\n\n<​div class=\"​wrapper\"​ id=\"​cam_1_wrapper_div\">​\n\n<​div class=\"​left\">​\n<​fieldset id=\"​cam_1_cameraPreviewId\">​\n\n ​ <​p>​\n ​   <label for=\"​cam_1_preview_image_button\">​Preview Image:</​label>​\n ​       <input type=\"​button\"​ id=\"​cam_1_preview_image_button\"​ name=\"​camera_previewImageButton\"​ value=\"​Load\" ​ onclick=\"​visca_image_preview(this)\" ​ />​\n ​ </​p>​\n ​ <​p>​\n ​   <label for=\"​cam_1_preview_image_button\">​Preview Stream:</​label>​\n ​       <input type=\"​button\"​ id=\"​cam_1_preview_stream_button\"​ name=\"​camera_previewStreamButton\"​ value=\"​Start\" ​ onclick=\"​visca_stream_preview(this)\" ​ />​\n ​       <input type=\"​button\"​ id=\"​cam_1_preview_stop_button\"​ name=\"​camera_previewStopButton\"​ value=\"​Stop\" ​ onclick=\"​visca_stream_preview_stop(this)\" ​ />​\n ​ </​p>​\n ​ <div id=\"​cam_1_preview_div\"​ class=\"​preview\">​\n ​    <​img id=\"​cam_1_preview_image\"​ draggable=\"​false\"​ class=\"​preview_img\"​ alt=\"​ImagePreview\"​\tsrc=\"/​z3blank_logo.png\"​ >​\n ​    <​img id=\"​cam_1_preview_rt\"​ class=\"​preview_right\"​ src=\"/​images/​ui-rtarrow_60x140.png\"​ \n          draggable=\"​true\"​\n ​         onmousedown=\"​preview_arrow_mousedown(this)\"​\n ​         onmouseup=\"​preview_arrow_mouseup(this)\"​\n ​         onmousemove=\"​preview_arrow_mouse_move(this)\" ​         \n          ondragstart=\"​preview_arrow_drag_start(event)\"​\n ​         ondragend=\"​preview_arrow_drag_end(event)\"​\n ​         title=\"​Press to pan right&#​13;&#​10;​Drag right to control pan speed\"​\n ​         style=\"​display:​none\">​\n ​    <​img id=\"​cam_1_preview_lt\"​ class=\"​preview_left\"​ src=\"/​images/​ui-ltarrow_60x140.png\"​\n ​         draggable=\"​true\"​\n ​         onmousedown=\"​preview_arrow_mousedown(this)\"​\n ​         onmouseup=\"​preview_arrow_mouseup(this)\"​\n ​         onmousemove=\"​preview_arrow_mouse_move(this)\"​\n ​         ondragstart=\"​preview_arrow_drag_start(event)\"​\n ​         ondragend=\"​preview_arrow_drag_end(event)\"​\n ​         title=\"​Press to pan left&#​13;&#​10;​Drag left to control pan speed\"​\n ​         style=\"​display:​none\">​\n ​    <​img id=\"​cam_1_preview_up\"​ class=\"​preview_up\"​ src=\"/​images/​ui-uparrow_140x60.png\"​\n ​         draggable=\"​true\"​\n ​         onmousedown=\"​preview_arrow_mousedown(this)\"​\n ​         onmouseup=\"​preview_arrow_mouseup(this)\"​\n ​         onmousemove=\"​preview_arrow_mouse_move(this)\"​\n ​         ondragstart=\"​preview_arrow_drag_start(event)\"​\n ​         ondragend=\"​preview_arrow_drag_end(event)\"​\n ​         title=\"​Press to tilt up&#​13;&#​10;​Drag up to control tilt speed\"​\n ​         style=\"​display:​none\">​\n ​    <​img id=\"​cam_1_preview_dn\"​ class=\"​preview_down\"​ src=\"/​images/​ui-dnarrow_140x60.png\"​\n ​         draggable=\"​true\"​\n ​         onmousedown=\"​preview_arrow_mousedown(this)\"​\n ​         onmouseup=\"​preview_arrow_mouseup(this)\"​\n ​         onmousemove=\"​preview_arrow_mouse_move(this)\"​\n ​         ondragstart=\"​preview_arrow_drag_start(event)\"​\n ​         ondragend=\"​preview_arrow_drag_end(event)\"​\n ​         title=\"​Press to tilt down&#​13;&#​10;​Drag down to control tilt speed\"​\n ​         style=\"​display:​none\">​\n ​ </​div>​\n \n</​fieldset>​\n\n<​div id=\"​cam_1_cameraCenterCropId\"​ style=\"​display:​ none\">​\n<​fieldset>​\n ​ <​legend>​Camera Center Crop</​legend>​\n<​p>​\n ​ <div id=\"​cam_1_center_crop\">​\n ​           <input type=\"​radio\"​ name=\"​cam_1_radio-center-crop\"​ id=\"​cam_1_radio-center-crop-enable\"​ value=\"​enable\">​\n ​           <label for=\"​cam_1_radio-center-crop-enable\">​enable</​label>​\n ​           <input type=\"​radio\"​ name=\"​cam_1_radio-center-crop\"​ id=\"​cam_1_radio-center-crop-disable\"​ value=\"​disable\">​\n ​           <label for=\"​cam_1_radio-center-crop-disable\">​disable</​label>​\n ​ </​div>​\n</​p>​\n\n</​fieldset>​\n</​div>​\n\n\n<​div id=\"​cam_1_cameraFocusId\">​\n<​fieldset>​\n<​legend>​Camera Focus</​legend>​\n\n<​div id=\"​cam_1_focus_slider_group\">​\n<​p>​\n <label for=\"​cam_1_focus_pos\">​Current focus position:</​label>​\n ​ <input type=\"​text\"​ id=\"​cam_1_focus_pos\"​ readonly style=\"​border:​0;​ color:#​f6931f;​ font-weight:​bold;​\">​\n</​p>​\n\n<​p>​\n ​   <​label>​Focus Step Size: </​label>​\n\n ​   <select style=\"​width:​40px;​\"​ id=\"​cam_1_focus_step_size\"​ name=\"​focusStepSize\"​ title=\"​Focus Step Size\">​\n ​     <option value=\"​0\">​0</​option>​\n ​     <option value=\"​1\">​1</​option>​\n ​     <option value=\"​2\">​2</​option>​\n ​     <option value=\"​3\">​3</​option>​\n ​     <option value=\"​4\">​4</​option>​\n ​     <option value=\"​5\">​5</​option>​\n ​     <option value=\"​6\">​6</​option>​\n ​     <option value=\"​7\">​7</​option>​\n ​   </​select>​\n\n ​   <input id=\"​cam_1_focus_plus\"​ type=\"​button\"​ class=\"​plus_minus_button\"​ onmousedown=\"​visca_continuous_focus(this)\"​ onmouseup=\"​visca_continuous_focus_end(this)\"​ value=\"​+\">​\n ​   <input id=\"​cam_1_focus_minus\"​ class=\"​plus_minus_button\"​ type=\"​button\"​ onmousedown=\"​visca_continuous_focus(this)\"​ onmouseup=\"​visca_continuous_focus_end(this)\"​ value=\"​-\">​\n ​ </​p>​\n\n ​   <​tr>​\n ​     <td class=\"​label\"​ id=\"​cam_1_CameraFocusLabelId\">​Focus</​td>​\n ​     <​td>​\n ​          <​div id=\"​cam_1_camerafocus\"></​div>​\n ​     </​td>​\n ​   </​tr>​\n</​div>​\n<​p>​\n ​ <div id=\"​cam_1_focus_manual\">​\n ​           <input type=\"​radio\"​ name=\"​cam_1_radio-focus\"​ id=\"​cam_1_radio-auto-focus\"​ value=\"​auto\">​\n ​           <label for=\"​cam_1_radio-auto-focus\">​auto</​label>​\n ​           <input type=\"​radio\"​ name=\"​cam_1_radio-focus\"​ id=\"​cam_1_radio-manual-focus\"​ value=\"​manual\">​\n ​           <label for=\"​cam_1_radio-manual-focus\">​manual</​label>​\n ​ </​div>​\n</​p>​\n\n</​fieldset>​\n</​div>​\n\n<​div id=\"​cam_1_cameraExposureId\"​ >​\n<​fieldset>​\n<​legend>​Exposure</​legend>​\n\n<​table>​\n ​ <​thead>​\n ​   <​tr>​\n ​     <​th></​th>​\n ​   </​tr>​\n ​ </​thead>​\n ​ <​tbody>​\n ​ <​tr>​\n ​   <td class=\"​label\"​ id=\"​cam_1_CameraExposureModeId\">​Exposure Mode</​td>​\n ​   <​td>​\n ​     <select name=\"​camera_exposure_mode\"​ id=\"​cam_1_exposureModeId\"​ onchange=\"​cameraExposureModeChange(this)\"​\n ​             title=\"​Set Exposure Mode\">​\n ​       <option value=\"​0\">​Auto</​option>​\n ​       <option value=\"​10\">​Shutter Priority</​option>​\n ​       <option value=\"​11\">​Iris Priority</​option>​\n ​       <option value=\"​3\">​Manual</​option>​\n ​     </​select>​\n ​   </​td>​\n ​   <td class=\"​space_10pct\"></​td>​\n ​ </​tr>​\n ​ <tr id=\"​cam_1_shutter_slider_group\"​ style=\"​display:​ none\">​\n ​    <​td class=\"​label\"​ id=\"​CameraShutterId\">​Shutter Speed</​td>​\n ​    <​td id=\"​CamerShutterLegend\">​\n ​         <div id=\"​cam_1_camerashutter\"></​div>​\n ​    </​td>​\n ​   <​td></​td>​\n ​ </​tr>​\n ​ <tr id=cam_1_iris_slider_group style=\"​display:​ none\">​\n ​    <​td class=\"​label\"​ id=\"​CameraIrisId\">​Iris</​td>​\n ​    <​td id=\"​CamerIrisLegend\">​\n ​         <div id=\"​cam_1_camerairis\"></​div>​\n ​    </​td>​\n ​ </​tr>​\n ​ <tr id=cam_1_gain_slider_group style=\"​display:​ none\">​\n ​    <​td class=\"​label\"​ id=\"​CameraGainId\">​Gain</​td>​\n ​    <​td id=\"​CameraGainLegend\">​\n ​         <div id=\"​cam_1_cameragain\"></​div>​\n ​    </​td>​\n ​   <​td></​td>​\n ​ </​tr>​\n ​ <tr id=\"​cam_1_high_sensitivity_id\">​\n ​   <td class=\"​label\">​High Sensitivity:</​td>​\n ​   <​td>​\n ​      <​input id=\"​cam_1_high_sensitivity_checkbox\"​ type=\"​checkbox\"​ name=\"​cam_1_high_sensitivity\"​ onchange=\"​checkbox_high_sensitivity(this)\"​ />​\n ​   </​td>​\n ​ </​tr>​\n ​ <tr id=\"​cam_1_backlight_id\">​\n ​   <td class=\"​label\">​Backlight:</​td>​\n ​   <​td><​input id=\"​cam_1_backlight_checkbok\"​ type=\"​checkbox\"​ name=\"​cam_1_backlight\"​ onchange=\"​exposure_backlight(this)\"​ />​\n ​ </​tr>​\n ​ <tr id=\"​cam_1_hlc_level_id\">​\n ​   <td class=\"​label\"​ >HLC level:</​td>​\n ​   <​td>​\n ​      <​select id=\"​cam_1_hlc_level_sel\"​ name=\"​cam_1_hlc_level\"​ onchange=\"​camera_hlc_level(this)\"​ >​\n ​         <option value=\"​0\">​Off</​option>​\n ​         <option value=\"​1\">​Low</​option>​\n ​         <option value=\"​2\">​Mid</​option>​\n ​         <option value=\"​3\">​High</​option>​\n ​       </​select>​\n ​   </​td>​\n ​ </​tr>​\n ​ <tr id=\"​cam_1_hlc_level_mask_id\"​ style=\"​display:​ none\">​\n ​    <​td class=\"​label\"​ id=\"​CameraShutterId\">​HLC level mask</​td>​\n ​    <​td id=\"​CameraHLCMask\">​\n ​         <div id=\"​cam_1_camerahlcmask\"></​div>​\n ​    </​td>​\n ​   <​td></​td>​\n ​ </​tr>​\n ​ <tr id=\"​cam_1_slow_shutter_row_id\">​\n ​   <td class=\"​label\">​Auto Slow Shutter:</​td>​\n ​   <​td><​input id=\"​cam_1_slow_shutter_id\"​ type=\"​checkbox\"​ name=\"​cam_1_slow_shutter\"​ onchange=\"​visca_slow_shutter(this)\"​ />​\n ​ </​tr>​\n ​ <tr id=\"​cam_1_slow_shutter_limit_row_id\">​\n ​   <td class=\"​label\">​Slow Shutter Limit:</​td>​\n ​   <​td>​\n ​     <select id=\"​cam_1_slow_shutter_limit_id\"​ name=\"​cam_1_slow_shutter_limit\"​ onchange=\"​visca_slow_shutter_limit(this)\">​\n ​       <option value=\"​1\">​1/​30</​option>​\n ​       <option value=\"​2\">​1/​15</​option>​\n ​       <option value=\"​3\">​1/​8</​option>​\n ​       <option value=\"​4\">​1/​4</​option>​\n ​       <option value=\"​5\">​1/​2</​option>​\n ​       <option value=\"​6\">​1/​1</​option>​\n ​   </​select>​\n ​   </​td>​\n ​ </​tr>​\n\n ​  ​\n ​ </​tbody>​\n</​table>​\n</​fieldset>​\n</​div>​\n<​div id=\"​cam_1_cameraColorId\"​ >​\n<​fieldset>​\n<​legend>​Color Controls</​legend>​\n\n<​table>​\n ​ <​thead>​\n ​   <​tr>​\n ​     <​th></​th>​\n ​   </​tr>​\n ​ </​thead>​\n ​ <​tbody>​\n ​   <​tr>​\n ​     <td class=\"​label\"​ id=\"​CameraWbModeLabelId\">​White Balance Mode</​td>​\n ​     <​td>​\n ​       <select name=\"​camera_wb_mode\"​ id=\"​cam_1_WbModeId\"​ onchange=\"​cameraWbModeChange(this)\"​\n ​               title=\"​Set White Balance Mode\">​\n\t ​ <option value=\"​auto\">​Auto</​option>​\n\t ​ <option value=\"​indoor\">​Indoor</​option>​\n\t ​ <option value=\"​onepush\"​ title=\"​Point camera to white surface and press trigger button to set white balance\">​One-push</​option>​\n\t ​ <option value=\"​autotrace\">​Auto Trace</​option>​\n\t ​ <option value=\"​manual\">​Manual</​option>​\n\t ​ <option value=\"​sodium_lamp_auto\">​Sodium Lamp Auto</​option>​\n\t ​ <option value=\"​sodium_lamp_fixed\">​Sodium Lamp Fixed</​option>​\n\t ​ <option value=\"​sodium_lamp_outdoor\">​Sodium Lamp Outdoor</​option>​\n ​       </​select>​\n ​     </​td>​\n ​   </​tr>​\n\n ​   <tr id=\"​cam_1_CameraWbOnepushRowId\">​\n ​     <td class=\"​label\"​ id=\"​CameraWbOnePushLabelId\">​Trigger One-push</​td>​\n ​     <​td>​\n ​       <input type=\"​button\"​ name=\"​camera_wbOnePushBtn\"​ value=\"​One Push WB\" onclick=\"​btn_camera_one_push_wb(this)\"​ />​\n ​     </​td>​\n ​   </​tr>​\n ​   <tr id=\"​cam_1_CameraWbRgainRowId\">​\n ​     <td class=\"​label\">​Manual RGain</​td>​\n ​     <​td>​\n ​       <input id=\"​cam_1_rgain_spinner\"​ />​\n ​     </​td>​\n ​   </​tr>​\n ​   <​tr ​ id=\"​cam_1_CameraWbBgainRowId\">​\n ​     <td class=\"​label\">​Manual BGain</​td>​\n ​     <​td>​\n ​       <input id=\"​cam_1_bgain_spinner\"​ />​\n ​     </​td>​\n ​   </​tr>​\n ​   <​tr>​\n ​     <td class=\"​label\"></​td>​\n ​     <​td>​\n ​     </​td>​\n ​   </​tr>​\n ​   <​tr>​\n ​     <td class=\"​label\"​ id=\"​CameraWbRgainId\">​Color Gain</​td>​\n ​     <​td>​\n ​          <​div id=\"​cam_1_color_gain_slider\"></​div>​\n ​     </​td>​\n ​   </​tr>​\n ​   <​tr>​\n ​     <td id=\"​cam_1_CameraColorHueLabel\"​ class=\"​label\">​Color Hue</​td>​\n ​     <​td>​\n ​          <​div id=\"​cam_1_color_hue_slider\"></​div>​\n ​     </​td>​\n ​   </​tr>​\n\n ​   <​tr>​\n ​     <td id=\"​cam_1_CameraColorSuppressLabel\"​ class=\"​label\">​Color Suppress</​td>​\n ​     <​td>​\n ​       \n          <div id=\"​cam_1_ColorSuppressId\">​\n ​           <input type=\"​radio\"​ name=\"​cam_1_radio-1\"​ id=\"​cam_1_radio-1\"​ value=\"​0\">​\n ​           <label for=\"​cam_1_radio-1\">​off</​label>​\n ​           <input type=\"​radio\"​ name=\"​cam_1_radio-1\"​ id=\"​cam_1_radio-2\"​ value=\"​1\">​\n ​           <label for=\"​cam_1_radio-2\">​1</​label>​\n ​           <input type=\"​radio\"​ name=\"​cam_1_radio-1\"​ id=\"​cam_1_radio-3\"​ value=\"​2\">​\n ​           <label for=\"​cam_1_radio-3\">​2</​label>​\n ​           <input type=\"​radio\"​ name=\"​cam_1_radio-1\"​ id=\"​cam_1_radio-4\"​ value=\"​3\">​\n ​           <label for=\"​cam_1_radio-4\">​3</​label>​\n ​         </​div>​\n ​     </​td>​\n ​   </​tr>​\n ​ </​tbody>​\n</​table>​\n</​fieldset>​\n</​div>​\n\n<​div id=\"​cam_1_cameraVisibilityEnhancementId\"​ style=\"​display:​none\">​\n ​ <​fieldset>​\n ​   <​legend>​Visibility Enhancement</​legend>​\n ​   <​table>​\n ​     <​tr>​\n ​       <td class=\"​label\">​Mode</​td>​\n ​       <​td>​\n ​         <select style=\"​width:​130px;​\"​ id=\"​cam_1_IdVeMode\"​ name=\"​cam_1_ve_mode\"​ title=\"​Set Visibility Enhancement mode\" onchange=\"​visca_visibility_enhancement(this)\">​\n ​           <option value=\"​3\">​Off</​option>​\n ​           <option value=\"​6\">​Visibility Enhance</​option>​\n ​           <option value=\"​2\">​Wide Dynamic Range</​option>​\n ​         </​select>​\n ​       </​td>​\n ​       <td id=\"​cam_1_IdVeParamRow1\"​ style=\"​display:​none\"​ >​\n ​         <​p>​\n ​           <​label>​Display Brightness: </​label>​\n ​           <select style=\"​width:​50px;​\"​ id=\"​cam_1_VeDisplayBrightness\"​ name=\"​cam_1_ve_brightness\"​ title=\"​Display Brightness\"​ onchange=\"​visca_visibility_enhancement_param(this)\"> ​          ​\n ​             <option value=\"​0\">​0 (Dark)</​option>​\n ​             <option value=\"​1\">​1</​option>​\n ​             <option value=\"​2\">​2</​option>​\n ​             <option value=\"​3\">​3</​option>​\n ​             <option value=\"​4\">​4</​option>​\n ​             <option value=\"​5\">​5</​option>​\n ​             <option value=\"​6\">​6 (Bright)</​option>​\n ​           </​select>​\n ​         </​p>​\n ​       </​td>​\n ​       \n      </​tr>​\n ​     <tr id=\"​cam_1_IdVeParamRow2\"​ style=\"​display:​none\">​\n ​       <​td ​ class=\"​label\">​Compensation:</​td>​\n ​       <​td>​\n ​         <select style=\"​width:​120px;​\"​ id=\"​cam_1_VeCompensationType\"​ name=\"​cam_1_ve_compensation_type\"​ title=\"​Brightness compensation\"​ onchange=\"​visca_visibility_enhancement_param(this)\"> ​          ​\n ​           <option value=\"​0\">​Very Dark</​option>​\n ​           <option value=\"​1\">​Dark</​option>​\n ​           <option value=\"​2\">​Standard</​option>​\n ​           <option value=\"​3\">​Bright</​option>​\n ​         </​select>​\n ​       </​td>​\n ​       <td >​\n ​         <​p>​\n ​           <​label>​Level:​ </​label>​\n ​           <select style=\"​width:​80px;​\"​ id=\"​cam_1_VeCompensationLevel\"​ name=\"​cam_1_ve_compensation_level\"​ title=\"​Compensation Level\"​ onchange=\"​visca_visibility_enhancement_param(this)\"> ​          ​\n ​             <option value=\"​0\">​Low</​option>​\n ​             <option value=\"​1\">​Mid</​option>​\n ​             <option value=\"​2\">​High</​option>​\n ​           </​select>​\n ​           </​p>​\n ​       </​td> ​      ​\n ​     </​tr>​\n ​   </​table>​\n ​ </​fieldset>​\n</​div>​\n\n</​div>​\n\n<​div class=\"​right\">​\n<​div id=\"​cameraAboutId\"​ >​\n<​fieldset>​\n ​ <​legend>​About</​legend>​\n\n<​table>​\n ​ <​thead>​\n ​   <​tr>​\n ​     <​th></​th>​\n ​   </​tr>​\n ​ </​thead>​\n ​ <​tbody>​\n ​   <​tr>​\n ​     <td class=\"​label\">​Camera Model:</​td>​\n ​     <td id=\"​cam_1_IdCameraModel\"></​td>​\n ​   </​tr>​\n ​   <​tr>​\n ​     <td class=\"​label\">​Version:</​td>​\n ​     <td id=\"​cam_1_IdCameraVersion\"></​td>​\n ​   </​tr>​\n ​   <​tr>​\n ​     <td> </​td>​\n ​     <td id=\"​cam_1_IdCameraFWUpdate\"​ style=\"​display:​ none\">​\n ​        <​input type=\"​button\"​ id=\"​cam_1_viscaFWUpdateButton\"​ name=\"​cam_1_visca_fw_update_button\"​ value=\"​Update Firmware\"​\n ​                ​onclick=\"​window.location='/​visca_fw_upload.html'​\"/>​\n ​     </​td>​\n ​   </​tr>​\n\n ​   <!-- VISCA local port setting moved to term tab\n    <tr id=\"​cameraViscaPortId\">​\n ​     <td class=\"​label\">​VISCA Control TCP Port:</​td>​\n ​     <​td>​\n ​        <​input type=\"​text\"​ name=\"​visca_localport\"​ id=\"​visca_LocalPort\">​ \n         <​input type=\"​button\"​ id=\"​viscaLocalportButton\"​ name=\"​visca_local_port_button\"​ value=\"​Set\" ​ onclick=\"​cameraUpdateViscaPort(this)\" ​ />​\n ​     </​td>​\n ​   </​tr>​\n ​   -->​\n ​   \n  </​tbody>​\n</​table>​\n</​fieldset>​\n</​div>​\n<​div id=\"​cam_1_ptzTabsId\">​\n<​fieldset>​\n<​legend>​PTZ</​legend>​\n ​ <div id=\"​cam_1_tabs\">​\n ​ <​ul>​\n ​   <​li><​a href=\"#​cam_1_tabs-1\">​Presets</​a></​li>​\n ​   <​li><​a href=\"#​cam_1_tabs-2\">​Tours</​a></​li>​\n ​ </​ul>​\n ​ <div id=\"​cam_1_tabs-1\">​\n ​   <!-- Feedback message zone -->​\n ​   <div id=\"​cam_1_PtzPreset_message\"></​div>​\n ​   \n    <!-- Grid contents -->​\n ​   <div id=\"​cam_1_PtzPreset_tablecontent\"></​div>​\n ​   \n    <!-- Paginator control -->​\n ​   <div id=\"​cam_1_PtzPreset_paginator\"></​div>​\n\n ​   <div id=\"​cam_1_PtzPreset_buttons\"></​div>​\n ​   <input type=\"​button\"​ id=\"​cam_1_ptz_preset_add_button\"​ name =\"​cam_1_ptz_presetAddButton\"​ value=\"​Add\"​ onclick=\"​preview_ptz_preset_add(this)\"​ />​\n ​   <input type=\"​button\"​ id=\"​cam_1_ptz_preset_save_button\"​ name =\"​cam_1_ptz_presetSaveButton\"​ value=\"​Save\"​ onclick=\"​preview_ptz_preset_save(this)\"​ />​\n ​   \n  </​div>​\n ​ <div id=\"​cam_1_tabs-2\">​\n ​   \n    <select id=\"​cam_1_PtzTourSelect\"​ onchange=\"​preview_ptz_tour_select_change(this)\">​ </​select>​\n ​   \n    <!-- Feedback message zone -->​\n ​   <div id=\"​cam_1_PtzTour_message\"></​div>​\n ​   \n    <!-- Grid contents -->​\n ​   <div id=\"​cam_1_PtzTour_tablecontent\"></​div>​\n ​   \n    <!-- Paginator control -->​\n ​   <div id=\"​cam_1_PtzTour_paginator\"></​div>​\n\n ​   <div id=\"​cam_1_PtzTour_buttons\"></​div>​\n ​   <input type=\"​button\"​ id=\"​cam_1_ptz_tour_add_button\"​ name =\"​cam_1_ptz_tourAddButton\"​ value=\"​Add\"​ onclick=\"​preview_ptz_tour_add(this)\"​ />​\n ​   <input type=\"​button\"​ id=\"​cam_1_ptz_tour_save_button\"​ name =\"​cam_1_ptz_tourSaveButton\"​ value=\"​Save\"​ onclick=\"​preview_ptz_tour_save(this)\"​ />​\n ​   &​nbsp;&​nbsp;​\n ​   <input type=\"​button\"​ id=\"​cam_1_ptz_tour_start_button\"​ name =\"​cam_1_ptz_tourStartButton\"​ value=\"​Run\"​ onclick=\"​preview_ptz_tour_start(this)\"​ />​\n ​   \n  </​div>​\n</​div>​\n \n</​div> ​ \n<div id=\"​cam_1_cameraZoomId\"​ >​\n<​fieldset>​\n<​legend>​Camera Zoom</​legend>​\n<​p>​\n ​ <label for=\"​cam_1_amount\">​Current zoom position:</​label>​\n ​ <input type=\"​text\"​ id=\"​cam_1_amount\"​ readonly style=\"​border:​0;​ color:#​f6931f;​ font-weight:​bold;​\">​\n ​ <​!--<​label for=\"​cam_1_amount\"​ style=\"​border:​0;​ color:#​f6931f;​ font-weight:​bold;​\">​%</​label>​-->​\n</​p>​\n\n<​p>​\n ​ <​label>​Zoom Step Size: </​label>​\n ​ <select style=\"​width:​40px;​\"​ id=\"​cam_1_zoom_step_size\"​ name=\"​zoomStepSize\"​ title=\"​Zoom Step Size\">​\n ​     <option value=\"​1\">​1</​option>​\n ​     <option value=\"​2\">​2</​option>​\n ​     <option value=\"​3\">​3</​option>​\n ​     <option value=\"​4\">​4</​option>​\n ​     <option value=\"​5\">​5</​option>​\n ​     <option value=\"​6\">​6</​option>​\n ​     <option value=\"​7\">​7</​option>​\n ​   </​select>​\n\n ​   <input id=\"​cam_1_zoom_plus\"​ class=\"​plus_minus_button\"​ type=\"​button\"​ onmousedown=\"​visca_continuous_zoom(this)\"​ onmouseup=\"​visca_continuous_zoom_end(this)\"​ value=\"​+\">​\n ​   <input id=\"​cam_1_zoom_minus\"​ class=\"​plus_minus_button\"​ type=\"​button\"​ onmousedown=\"​visca_continuous_zoom(this)\"​ onmouseup=\"​visca_continuous_zoom_end(this)\"​ value=\"​-\">​\n\n</​p>​\n\n<​div id=\"​cam_1_zoom_legend\">​\n ​     <div id=\"​cam_1_camerazoom\"​ style=\"​width:​ 45%; margin:​15px;​\"></​div>​\n</​div>​\n\n<​div class=\"​zoomleft\">​\n ​ <​div>​\n ​ Wide\n ​ </​div>​\n</​div>​\n<​div class=\"​zoomright\">​\n ​ <​div>​\n ​ Telephoto\n ​ </​div>​\n</​div>​\n<​div class=\"​zoomcheck\">​\n<​table>​\n ​ <​thead>​\n ​   <​tr>​\n ​     <​th></​th>​\n ​   </​tr>​\n ​ </​thead>​\n ​ <​tbody>​\n ​   <tr id=\"​cam_1_zoom_optical_only\">​\n ​     <td class=\"​label\">​Optical only:</​td>​\n ​     <​td>​\n ​        <​input id=\"​cam_1_zoom_optical_checkbox\"​ type=\"​checkbox\"​ name=\"​cam_1_zoom_optical\"​ onchange=\"​checkbox_zoom_optical(this)\"​ />​\n ​     </​td>​\n ​     <td class=\"​space_60pct\"></​td>​\n ​     <​td></​td>​\n ​   </​tr>​\n ​   <tr id=\"​cam_1_zoom_stabilize_div\">​\n ​     <td class=\"​label\"​ >​StableZoom:</​td>​\n ​     <​td>​\n ​        <​input id=\"​cam_1_zoom_stabilize_checkbox\"​ type=\"​checkbox\"​ name=\"​cam_1_zoom_stabilize\"​ onchange=\"​checkbox_zoom_stabilize(this)\"​ />​\n ​     </​td>​\n ​     <td class=\"​space_60pct\"></​td>​\n ​     <​td></​td>​\n ​   </​tr>​\n ​   </​tbody>​\n</​table>​\n</​div>​\n\n</​fieldset>​\n</​div>​\n<​div ​ id=\"​cam_1_cameraLatencyId\"​ >​\n<​fieldset>​\n ​ <​legend>​Camera Latency</​legend>​\n\n<​table>​\n ​ <​thead>​\n ​   <​tr>​\n ​     <​th></​th>​\n ​   </​tr>​\n ​ </​thead>​\n ​ <​tbody>​\n ​   <​tr>​\n ​     <td class=\"​label\">​Low Latency Mode:</​td>​\n ​     <​td>​\n ​        <​input type=\"​checkbox\"​ name=\"​latency_mode\"​ id=\"​cam_1_latency_Mode\"​ \n                title=\"​When checked places camera in Low Delay Mode. When in Low delay mode Digital zoom, Distortion correction, Image stabilizer, and StableZoom features are disabled\"​\n ​               onchange=\"​checkbox_camera_latency(this)\"​ />​\n ​     </​td>​\n ​     <td class=\"​space_60pct\"></​td>​\n ​     <​td></​td>​\n ​   </​tr>​\n ​ </​tbody>​\n</​table>​\n</​fieldset>​\n</​div>​\n\n<​div id=\"​cam_1_cameraResolutionId\"​ >​\n<​fieldset>​\n<​legend>​Video Standard</​legend>​\n<​table>​\n ​ <​thead>​\n ​   <​tr>​\n ​     <​th></​th>​\n ​   </​tr>​\n ​ </​thead>​\n ​ <​tbody>​\n ​   <tr id=\"​cam_1_monitor_mode_id\">​\n ​     <td class=\"​label\">​Monitoring Mode:</​td>​\n ​     <​td>​\n ​        <​select name=\"​camera_monitor_mode\"​ id=\"​cam_1_CameraMonitorModeId\"​ \n                title=\"​Sets video standard output by camera\"​\n ​               onchange=\"​change_camera_monitor_mode(this)\">​\n ​               <option value=\"​1080p-60\">​1080p60</​option>​ \n         </​select>​\n ​     </​td>​\n ​     <td ></​td>​\n ​     <​td></​td>​\n ​   </​tr>​\n\n ​   <tr id=\"​cam_1_cameraExtSyncSourceRow\"​ style=\"​display:​ none\">​\n ​     <td class=\"​label\">​Ext Sync Source:</​td>​\n ​     <​td>​\n ​        <​select name=\"​camera_ext_sync_source\"​ id=\"​cam_1_CameraExtSyncSourceId\"​ \n                title=\"​Sets external sync source for camera\"​\n ​               onchange=\"​change_camera_ext_sync_source(this)\">​\n ​               <option value=\"​0\">​None</​option>​ \n                <option value=\"​2\">​Genlock Input</​option>​ \n         </​select>​\n ​     </​td>​\n ​     <td ></​td>​\n ​     <​td></​td>​\n ​   </​tr>​\n\n ​   <tr id=\"​cam_1_cameraExtSyncStatusRow\"​ style=\"​display:​ none\">​\n ​     <td class=\"​label\">​Camera Sync:</​td>​\n ​     <td id=\"​cam_1_IdGenlockStatus\"></​td>​\n ​     <td ></​td>​\n ​     <​td></​td>​\n ​   </​tr>​\n ​   \n\n  </​tbody>​\n</​table>​\n</​fieldset>​\n</​div>​\n\n<​div id=\"​cam_1_icr_opt\"​ style=\"​display:​none\">​\n ​ <​fieldset>​\n ​   <​legend>​ICR</​legend>​\n ​   <​table>​\n ​     <​tr>​\n ​       <td class=\"​label\">​IR Cut-Removable</​td>​\n ​       <​td>​\n ​         <select style=\"​width:​100px;​\"​ id=\"​cam_1_ir_cut_removable\"​ name=\"​cam_1_manual_icr\"​ title=\"​Set ICR Mode\" onchange=\"​visca_icr(this)\">​\n ​           <option value=\"​on\">​On</​option>​\n ​           <option value=\"​off\">​Off</​option>​\n ​           <option value=\"​auto\">​Auto</​option>​\n ​           <option value=\"​auto_color\">​Auto Color</​option>​\n ​         </​select>​\n ​       </​td>​\n ​       <td id=\"​cam_1_IdIcrThresholdRow\">​\n ​         <​p>​\n ​           <​label>​On->​Off Threshold: </​label>​\n ​           <input style=\"​width:​50px;​\"​ type=\"​text\"​ style=\"​width:​60px;​\"​ id=\"​cam_1_IdIcrThreshold\"​ name=\"​cam_1_icr_threshold\"​ title=\"​ICR On->Off Threshold (0-255 for 4K camera, 0-28 for HD camera)\"​ onchange=\"​visca_icr_threshold(this)\"​ />           ​\n ​         </​p>​\n ​       </​td>​\n ​     </​tr>​\n\n ​   </​table>​\n ​ </​fieldset>​\n</​div>​\n\n<​div id=\"​cam_1_cameraOrientationId\"​ >​\n<​fieldset>​\n ​ <​legend>​Camera Orientation</​legend>​\n\n<​table>​\n ​ <​thead>​\n ​   <​tr>​\n ​     <​th></​th>​\n ​   </​tr>​\n ​ </​thead>​\n ​ <​tbody>​\n ​   <​tr>​\n ​     <td class=\"​label\">​E-Flip:</​td>​\n ​     <​td>​\n ​        <​input type=\"​checkbox\"​ name=\"​eflip\"​ id=\"​cam_1_eFlipId\"​ \n                title=\"​When checked reverses the video output from the\ncamera vertically and horizontally\"​\n ​               onchange=\"​checkbox_camera_eflip(this)\"​ />​\n ​     </​td>​\n ​     <td class=\"​space_60pct\"></​td>​\n ​     <​td></​td>​\n ​   </​tr>​\n ​   <​tr>​\n ​     <td class=\"​label\">​LR Reverse(Mirror):</​td>​\n ​     <​td>​\n ​        <​input type=\"​checkbox\"​ name=\"​lrreverse\"​ id=\"​cam_1_LrReverseId\"​ \n                title=\"​When checked reverses the video output from the\ncamera horizontally\"​\n ​               onchange=\"​checkbox_camera_lrreverse(this)\"​ />​\n ​     </​td>​\n ​     <td class=\"​space_60pct\"></​td>​\n ​     <​td></​td>​\n ​   </​tr>​\n ​ </​tbody>​\n</​table>​\n</​fieldset>​\n</​div>​\n\n<​div id=\"​cam_1_cameraImageOptions\">​\n ​ <​fieldset>​\n ​   <​legend>​Camera Image Options</​legend>​\n ​   <​table>​\n ​     <​thead><​tr><​th></​th></​tr></​thead>​\n ​     <​tbody>​\n ​       <​tr>​\n ​         <td class=\"​label_25pct\" ​ >Image Freeze: </​td>​\n ​         <​td>​\n ​           <input type=\"​checkbox\"​ name=\"​imgfreeze\"​ id=\"​cam_1_image_freeze_opt\"​ \n                 ​title=\"​Freezes the camera'​s current image\"​\n ​                ​onchange=\"​image_freeze(this)\"​ />​\n ​         </​td>​\n ​         <td id=\"​cam_1_IdFlickerReductionColumn1\"​ style=\"​display:​none\"​ class=\"​label\">​Flicker Reduction: </​td>​\n ​         <td id=\"​cam_1_IdFlickerReductionColumn2\"​ style=\"​display:​none\"​ >​\n ​           <input type=\"​checkbox\"​ name=\"​cam_1_flicker_reduction\"​ id=\"​cam_1_image_flicker_reduction_opt\"​ \n                        title=\"​Turn on flicker reduction mode.\"​\n ​                       onchange=\"​visca_flicker_reduction(this)\"​ /></​td>​\n ​       </​tr>​\n ​       \n        <tr id=\"​cam_1_image_hr_id\">​\n ​         <td class=\"​label_25pct\">​High Resolution Mode: </​td>​\n ​         <​td>​\n ​             <input type=\"​checkbox\"​ name=\"​hrmode\"​ id=\"​cam_1_image_hr_opt\"​ \n                title=\"​Turn on high resolution mode.\"​\n ​               onchange=\"​image_hr(this)\"​ />​\n ​         </​td>​\n ​         <td class=\"​space_60pct\"></​td>​\n ​         <td> </​td>​\n ​       </​tr>​\n\n ​       <tr id=\"​cam_1_image_stable_id\">​\n ​           <td class=\"​label_35pct\">​Image Stabilizer: </​td>​\n ​           <​td>​\n ​               <input type=\"​checkbox\"​ name=\"​imgstabilizer\"​ id=\"​cam_1_image_stabilizer_opt\"​ \n                  title=\"​Turn on image stabilization.\"​\n ​                 onchange=\"​image_stabilizer(this)\"​ />​\n ​           </​td>​\n ​           <td id=\"​cam_1_IdStabilizerLevelColumn1\"​ style=\"​display:​none\"​ class=\"​label\">​Stablizer Level: </​td>​\n ​           <td id=\"​cam_1_IdStabilizerLevelColumn2\"​ style=\"​display:​none\"​ >​\n ​              <​select style=\"​width:​80px;​\"​ name=\"​imgstabilizer_level\"​ id=\"​cam_1_image_stabilizer_level_opt\"​ onchange=\"​image_stabilizer_level(this)\"​\n ​                 title=\"​Set image stabilization level\">​\n ​                 <option value=\"​0\">​Super</​option>​\n ​                 <option value=\"​2\">​Super+</​option>​\n ​             </​select>​\n ​           </​td>​\n ​         </​tr>​\n\n ​         <​tr>​\n ​             <td class=\"​label_35pct\">​Image Black & White: </​td>​\n ​             <​td>​\n ​                 <input type=\"​checkbox\"​ name=\"​imgbw\"​ id=\"​cam_1_image_blackwhite_opt\"​ \n                    title=\"​Turn on black and white filter.\"​\n ​                   onchange=\"​image_blackwhite(this)\"​ />​\n ​             </​td>​\n ​             <td class=\"​space_60pct\"></​td>​\n ​             <​td></​td>​\n ​           </​tr>​\n\n ​     </​tbody>​\n ​   </​table>​\n ​ </​fieldset> ​          ​\n</​div>​\n\n<​div id=\"​cam_1_camera_nr_div\">​\n ​ <​fieldset>​\n ​   <​legend>​Noise Reduction</​legend>​\n ​   <​table>​\n ​     <​thead><​tr><​th></​th></​tr></​thead>​\n ​     <​tbody>​\n ​         <​tr>​\n ​             <td class=\"​label\">​Noise Reduction: </​td>​\n ​             <​td>​\n ​                 <input type=\"​checkbox\"​ name=\"​cam_1_nr_enable\"​ id=\"​cam_1_image_nr_enable\"​ \n                    title=\"​Enable noise reduction.&#​13;&#​10;​Recommended setting is enabled&#​13;&#​10;​ for lower bitrates (<​10Mbits/​sec)\"​\n ​                   onchange=\"​video_group_nr_enable(this)\"​ />​\n ​             </​td>​\n ​             <td class=\"​space_60pct\"></​td>​\n ​             <​td></​td>​\n ​           </​tr>​\n ​           <tr id=\"​cam_1_IdNoiseReductionLevelRow\"​ style=\"​display:​none\">​\n ​             <td class=\"​label\">​2D Level: </​td>​\n ​             <​td>​\n ​               <select style=\"​width:​80px;​\"​ name=\"​nr_2d_level\"​ id=\"​cam_1_nr_2d_level_opt\"​ onchange=\"​visca_nr_level(this)\"​\n ​                   title=\"​Set 2D noise reduction level\">​\n ​                   <option value=\"​0\">​0 (off)</​option>​\n ​                   <option value=\"​1\">​1</​option>​\n ​                   <option value=\"​2\">​2</​option>​\n ​                   <option value=\"​3\">​3</​option>​\n ​                   <option value=\"​4\">​4</​option>​\n ​                   <option value=\"​5\">​5</​option>​\n ​               </​select>​\n ​             </​td>​\n ​             <td class=\"​label\">​3D Level: </​td>​\n ​             <​td>​\n ​               <select style=\"​width:​80px;​\"​ name=\"​nr_3d_level\"​ id=\"​cam_1_nr_3d_level_opt\"​ onchange=\"​visca_nr_level(this)\"​\n ​                   title=\"​Set 3D noise reduction level\">​\n ​                   <option value=\"​0\">​0 (off)</​option>​\n ​                   <option value=\"​1\">​1</​option>​\n ​                   <option value=\"​2\">​2</​option>​\n ​                   <option value=\"​3\">​3</​option>​\n ​                   <option value=\"​4\">​4</​option>​\n ​                   <option value=\"​5\">​5</​option>​\n ​               </​select>​\n ​             </​td>​\n ​           </​tr>​\n ​     </​tbody>​\n ​   </​table>​\n ​ </​fieldset> ​          ​\n</​div>​\n\n</​div>​\n</​div>​\n\n\n","​index":"​1","​status":"​OK","​type":"​visca"​}
 +
 +</​code>​
 +
 +----
 +
 +==== GetStatus ====
 +
 +----
 +
 +Read the encoder status.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +
 +//​**status**// ​ The encoder status can be RUNNING/ STOPPED/ IDLE/ Couldn'​t deduct input on camera.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Get Status response: {"​ret":"​0","​status":"​IDLE"​}
 +</​code>​
 +
 +----
 +
 +==== GetVideoInputs ====
 +
 +----
 +
 +Get the sensor id and read the video inputs from the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**sensorid **//  Sensor ID.
 +
 +//**vport **//  video port is Camera source. Possible values: 1 = Camera 1, 2 = Camera 2.
 +
 +//​**friendly_name **//  name of the video source.
 +
 +//**vdevice **//  Video device. Possible values: MIPI, SONYLVDS, LT6911
 +
 +//​**input_index **//  input device. Possible values: 0, 1.
 +
 +//**bus **//  device address. Default NULL
 +
 +//**enabled **//  Video input enabled or disabled. Default is 1. Possible values: 0, 1.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Get Video Status response: {"​ret":"​0","​status":"​OK","​video_inputs":​[{"​enabled":"​on","​friendly_name":"​Camera1","​input_index":​0,"​sensorid":"​300144","​vdevice":"​LT6911","​vport":"​CAMERA"​},​{"​enabled":"​on","​friendly_name":"​Camera2","​input_index":​1,"​sensorid":"​300144","​vdevice":"​SONYLVDS","​vport":"​CAMERA2"​}]}
 +</​code>​
 +
 +----
 +
 +==== GetWifiPass ====
 +
 +----
 +
 +Get the Wifi password.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**ssid**// ​ Read the service set identifier
 +
 +**//​psk//​** ​ Provide the wifi password.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +==== InsQuery ====
 +
 +----
 +
 +Querry the PTZ values for the angle.
 +
 +== Parameters: ==
 +
 +----
 +
 +**//​data//​** ​ Read the json table and retrieve the index and querry type. Possible querry are YawAngle, PitchAngle, RollAngle, All.
 +
 +//​**YawAngle **//  provide the yaw angle value from the PTZ.
 +
 +//​**PitchAngle**// ​ provide the pitch angle value from the PTZ.
 +
 +//​**RollAngle**// ​ provide the roll angle value from the PTZ.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== LoadUser ====
 +
 +----
 +
 +Load the active preset value in the preset table and update in the state table database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**enc_current_preset**// ​ Get the preset row and check the opermation mode. The operation modes are encoder / decoder.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +==== Login ====
 +
 +----
 +
 +Set the password for the login user.
 +
 +== Parameters: ==
 +
 +----
 +
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Login response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== Logout ====
 +
 +----
 +
 +Logout from the system and update in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**Authorization**// ​ Get the permission level.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Logout response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== Overlay ====
 +
 +----
 +
 +Display text or a PNG overlayed on the video feed for a given Channel.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +
 +**//rgn_idx // **//​(Ambarella Specific)// Region Index, index to map overlay. The region index value is system-wide and can be in the range of 1 to 16. Ambarella provides 16 total color look-up tables for Overlay (for all Channels), rgn_idx signifies which color look-up table(CLUT) is in use.
 +<​code>​
 + TEXT type=text source=”Channel 1” instance=1 rgn_idx=1
 +      type=text source=”Channel 2” instance=2 rgn_idx=1
 +
 +</​code>​
 +
 +In the above example, identical region indices are used, effectively reusing the CLUT. The text will be correct on each channel. When changing the color of the text, when using identical region indices, the last Overlay command issued will override all Overlay instances that are using the same region index, the text will still be different but the color will be the same because they are using the same shared rgn_idx.
 +
 +<​code>​
 + PNG type=png source=”/​opt/​config/​images/​image.png” instance=1 rgn_idx=2
 +     ​type=png source=”/​opt/​config/​images/​image.png” instance=2 rgn_idx=2
 +
 +</​code>​
 +
 +PNG overlay will work in the same way as text overlay when re-using region indices, but this is only helpful when overlaying identical PNGs.\\
 +Using different PNGs would cause colors to go wonky due to differing CLUTs for the different PNGs.
 +
 +The encoder writes the entire CLUT at the rgn_idx with each overlay command.
 +
 +//**rgn_idx ** (//Qualcomm and DCK//)// Index to map overlay. The region index value can be in the range of 0 to 128, per channel.
 +
 +//​**​type**// ​ Type of overlay to be used possible values: text or png.
 +
 +//​**source**// ​ In the case of text overlay this would be the source text for png overlay this is the path to the png on the encoder. Images must be uploaded to board to be used.
 +
 +//​**location**// ​ This is the location of the overlay. Possible values: '​top_left',​ '​top_right',​ '​top_center',​ '​bottom_left',​ '​bottom_right',​ '​bottom_center',​ '​x,​y'​ (negative numbers not supported for x or y).
 +
 +//​**char_size**// ​ For text overlay this is the character size. Possible values: 16,32,64, 128.
 +
 +//​**layer**// ​ This will set the layer for the overly higher numbers and will overlay over lower numbers if overlapping. The range of layer values are 0 to 7.
 +
 +**//​text_color//​** ​ Text color, which is in RGB values with Alpha
 +
 +//​**outline_color**// ​ Outline color of the text which is in RGB values with Alpha
 +
 +//​**outline_enable**// ​ Whether outline is enabled or disabled. Possible values: on, off
 +
 +//​**outline_stroke **//  The width of the outline stroke is in the range of 1, 2 and 4. If the font sizes value are less than 64 then outline stroke value as 1, if the font size value is equal to 64 then outline stroke value is 2 and if the font size value is more than 64 then outline stroke value is 4.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ===
 +
 +<​code>​
 +python3 z3overlay.py -ip 192.168.10.127 -username admin -passwd admin -aim -track -moon -rtsp
 +
 +</​code>​
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Namespace(aim=True,​ dbg=False, ip='​192.168.10.127',​ moon=True, passwd='​admin',​ rtsp=True, track=True, username='​admin',​ uw=False)
 +Getting Video Stream Dimensions
 +Video Stream Dimensions:​3840x2160
 +Weather Read From File in 171  Position:​top_left MSG:1 {"​ret":"​0","​status":"​!Invalid rgn_idx 53\r\n"​} AimTrack:​[574,​ 2914] - [2060, 1628]
 +
 +</​code>​
 +
 +----
 +
 +=== Another method to execute: ===
 +
 +<​code>​
 +curl -s --connect-timeout 30 --max-time 60 --data "​action=Overlay&​chn=1&​rgn_idx=1&​source=/​opt/​z3/​images/​fmoon-96.png&​type=png&​location=top_center"​ "​http://​192.168.10.127/​cgi-bin/​control.cgi"​
 +
 +</​code>​
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +{"​ret":"​0","​status":"​+OK"​}
 +
 +</​code>​
 +
 +
 +==== OverlayStop ====
 +
 +----
 +
 +Stop overlay.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +
 +//​**rgn_idx**// ​ ​Index of overly for this channel.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +<​code>​
 +python3 z3overlay.py -ip 192.168.10.127 -username admin -passwd admin -aim -track -moon -rtsp
 +</​code>​
 +
 +----
 +
 +=== Another method to execute: ​ ===
 +
 +<​code>​
 +curl -s --connect-timeout 30 --max-time 60 --data "​action=OverlayStop&​chn=1&​rgn_idx=1&​source=welcome&​type=text&​location=top_center"​ "​http://​192.168.10.127/​cgi-bin/​control.cgi"​
 +</​code>​
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +{"​ret":"​0","​status":"​+OK"​}
 +</​code>​
 +
 +==== PtzAbsoluteMove ====
 +
 +----
 +
 +Send absolute move command to the PTZ.
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position and speed value. The mode values can be Pan, tilt, and  Zoom.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +
 +==== PtzAuxiliary ====
 +
 +----
 +
 +Send PTZ auxiliary value to the PTZ.
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position and speed value.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== PtzClearPreset ====
 +
 +----
 +
 +Remove the Ptz preset values for the user.
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position and speed value. The mode values can be Pan, tilt, and  Zoom.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +<​code>​
 +action=PtzClearPreset&​data={"​idx":​0,"​profile_token":"​profile1","​preset_token":"​2"​}
 +</​code>​
 +
 +<​code>​
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +PtzClearPreset response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== PtzContinuousMove ====
 +
 +----
 +
 +Send continous move command to the PTZ.
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +Please refer the test code and steps to execute is available in this section
 +with different speed and camera selection for both continuous and step mode
 +
 +Pan to the left at half speed
 +
 +<​code>​
 +action=PtzContinuousMove&​data={"​PanTilt":​{"​x":​-0.5,"​y":​0},"​idx":​0}
 +</​code>​
 +
 +Pan to the right at half speed
 +
 +<​code>​
 +action=PtzContinuousMove&​data={"​PanTilt":​{"​x":​0.5,"​y":​0},"​idx":​0}
 +</​code>​
 +
 +Tilt down at max speed
 +
 +<​code>​
 +action=PtzContinuousMove&​data={"​PanTilt":​{"​x":​0,"​y":​1},"​idx":​0}
 +</​code>​
 +==== PtzGotoPreset ====
 +
 +----
 +
 +Send preset value to PTZ.
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +
 +<​code>​
 +action: "​PtzGotoPreset",​ data: '​{"​idx":​0,"​preset_token":"​2"​}'​
 +</​code>​
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +PtzGotoPreset response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== PtzNewTourSpot ====
 +
 +----
 +
 +Get the new tour spot and update in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +<​code>​
 +action=PtzNewTourSpot&​data={"​idx":​0,"​profile_token":"​profile1","​tour_token":"​1","​name":"​New_TourSpot"​}
 +</​code>​
 +
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +PtzNewTourSpot response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== PtzPosition ====
 +
 +----
 +
 +Move the Ptz to the input position
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +
 +==== PtzPreset ====
 +
 +----
 +
 +Preset the Ptz based on the value.
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== PtzQuery ====
 +
 +----
 +
 +Get the ptz status and degree value from the ptz
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== PtzRemoveTourSpot ====
 +
 +----
 +
 +Remove the ptz tour spot
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the profile token, preset tour token, row index.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +<​code>​
 +action: "​PtzRemoveTourSpot",​ data: '​{"​profile_token":"​profile1","​tour_token":"​1","​row_index":​0}'​
 +</​code>​
 +
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +PtzRemoveTourSpot response: {"​ret":​0,"​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== PtzSetPreset ====
 +
 +----
 +
 +Set the preseting value in the PTZ
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +<​code>​
 +action: "​PtzSetPreset",​ data: '​{"​idx":​0,"​profile_token":"​profile1","​name":"​New_Preset"​}'​
 +</​code>​
 +
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +PtzSetPreset response: {"​ret":"​0","​status":"​OK","​token":"​2"​}
 +</​code>​
 +
 +----
 +
 +
 +
 +==== PtzStartTour ====
 +
 +----
 +
 +Start the PTZ tour
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +<​code>​
 +action: "​PtzStartTour",​ data: '​{"​profile_token":"​profile1","​tour_token":"​1","​name":"​New_TourSpot","​idx":​0}'​
 +</​code>​
 +
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +PtzStartTour response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== PtzStop ====
 +
 +----
 +
 +Stop the PTZ
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +<​code>​
 +action=PtzStop&​data={"​mode":​1,"​idx":​0}
 +</​code>​
 +
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +PtzStop response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
 +
 +==== RemoveJobs ====
 +
 +----
 +
 +Delete the schedule jobs from the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**purgelist**// ​ List of schedule jobs to be removed.
 +
 +//​**rowcnt**// ​ Number of rows.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== RestartBoard ====
 +
 +----
 +
 +Read the operation mode. Whether its encoding / decoding. Stop the channel encoding and restart the board
 +
 +== Parameters: ==
 +
 +----
 +
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +=== Command to execute: ​ ===
 +
 +<​code>​
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
 +</​code>​
 +
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +RestartBoard response: {"​ret":"​0","​status":"​OK"​}
 +</​code>​
 +
 +----
  
 ==== SaveCamera ==== ==== SaveCamera ====
  
-Save camera-related settings below.+----
  
-=== zoom_direct_value ===+Saving the camera settings in the Database.
  
-DescriptionSet camera zoom+== Parameters==
  
-Possible values: 0 (wide) to 0x7ac0 (full zoom)+----
  
-=== white_balance_mode ===+**//​zoom_direct_value//​** ​ Zoom value. Possible values: 0 (wide) to 0x7ac0 (full zoom) 
 + 
 +//​**white_balance_mode**// ​ White balance mode. Default value is auto. Possible values: auto / manual / indoor/ one-push / auto trace / sodium lamp auto / sodium lamp fixed / sodium lamp outdoor. 
 + 
 +//​**color_gain**// ​ color gain. Default value is 4. Possible values: Range from 0 (60%) to 14 (200%) 
 + 
 +//​**color_hue**// ​ color hue. Default value is 7. Possible values: Range from 0 (60%) to 14 (200%) 
 + 
 +//​**chroma_suppress**// ​ Chroma suppress. Default value is 1. Possible values: 0=none, 1, 2, 3 
 + 
 +//​**wb_manual_rgain_direct**// ​ white balance manual red gain. Default value is 190. Possible values: 0 to 255 
 + 
 +//​**wb_manual_bgain_direct **//  white balance manual blue gain. Default value is 190. Possible values: 0 to 255 
 + 
 +//​**optical_zoom_only **//  optical zoom only. Default value is 0. Possible values: 0, 1 
 + 
 +//​**focus_direct_value**// ​ focus direct value. Default value is 4096. Possible values: 0x1000 to 0xf000 
 + 
 +//​**manual_focus **//  Manual focus. Default value is auto. Possible values: auto, manual 
 + 
 +//​**exposure_mode **//  Exposure mode. Default value is 0. Possible values: 0 - Auto, 10 - Shutter Priority, 11 - Iris -Priority, 3 - Manual. 
 + 
 +//​**shutter**// ​ Shutter. Default value is 7. 
 + 
 +//**iris **//  Iris. Default value is 0. 
 + 
 +//​**gain**// ​ Gain. Default value is 0. 
 + 
 +//​**high_sensitivity**// ​ high sensitivity value. Default value is 3. Possible values 0, 1. 
 + 
 +//​**hlc_level **//  hlc level. Default value is 0. Possible values in range 0 to 3. 
 + 
 +**hlc_level_mask** mask value of hlc level. Default value is 0. Possible values 0, 1. 
 + 
 +//​**stable_zoom**// ​ stable zoom on or off. Default value is off. 
 + 
 +//**eflip **//  Default value is 5. Possible values 0, 1. 
 + 
 +//​**lr_reverse **//  Default value is 0. Possible values 0, 1. 
 + 
 +//​**monitor_mode **//  Default value is 1080p-59.94. 
 + 
 +//​**genlock_source **//  Default value is 2. 
 + 
 +//​**zoom_step_size **//  Default value is 4. Possible values in range (1 - 7). 
 + 
 +//​**focus_step_size **//  Default value is 1. Possible values in range (0 - 7). 
 + 
 +//​**manual_icr **//  Default value is Off. Possible values: On, Off, Auto, Auto Color 
 + 
 +//​**img_freeze **//  Default value is 0. Possible values: 0, 1. 
 + 
 +//**hr_mode **//  High resolution mode. Default value is 0. Possible values: 0, 1. 
 + 
 +//​**img_stabilizer ** //Default value is 0. Possible values 0, 1. 
 + 
 +//​**img_bw** //Image black white. Default value is 0. Possible values 0, 1. 
 + 
 +//​**nr_2d_level **//  Default value is 5. Possible values in range (0 - 5). 
 + 
 +//​**nr_3d_level** //Default value is 4. Possible values in range (0 - 5). 
 + 
 +//​**icr_threshold** //Default value is 14. Possible values in range (0-255 for 4K camera, 0-28 for HD camera). 
 + 
 +//​**slow_shutter** //Default value is 0. Possible values: 0, 1. 
 + 
 +//​**slow_shutter_limit **//  Default value is 4. Possible values in range: (1 to 6) 
 + 
 +//​**flicker_reduction** //Default value is 0. Possible values: 0, 1. 
 + 
 +//​**img_stabilizer_level** //Default value is 0. Possible values: 0, 2. 
 + 
 +//​**wide_dynamic_range** //Default value is 3. 
 + 
 +//​**ve_brightness** //Default value is 3. Possible values in range: 0, 6. 
 + 
 +//​**ve_compensation_type** //Default value is 2. Possible values in range: 0, 3. 
 + 
 +//​**ve_compensation_level **//  Default value is 1. Possible values in range: 0, 2. 
 +== Returns: ​== 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +----
  
-Possible valuesauto. indoor, outdoor, onepush, autotrace, manual, outdoor_auto,​+=== Command to execute ===
  
 <​code>​ <​code>​
-               ​sodium_lamp_auto,​ sodium_lamp_fixed,​ sodium_lamp_outdoor+python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 +</​code>​
  
 +----
 +
 +=== Example output: ===
 +
 +<​code>​
 +Save Camera response: {"​ret":"​0","​status":"​OK"​}
 </​code>​ </​code>​
  
-=== color_gain ===+----
  
-Possible values: Range from 0 (60%) to 14 (200%)+==== SaveCameraBoson ====
  
-=== color_hue ===+----
  
-Possible values: Range from 0 (60%) to 14 (200%)+Save color pallete settings of boson camera in the Database.
  
-=== chroma_suppress ===+== Parameters: ​==
  
-Possible values: 0=none, 1, 2, 3+----
  
-=== wb_manual_rgain_direct ===+//​**color_pallette**// ​ Color pallete. Default value is whitehot. 
 +== Returns: ​==
  
-Possible values: 0 to 255+----
  
-=== wb_manual_bgain_direct ===+JSON formatted table with values below
  
-Possible values: ​to 255+**//​ret//​** ​ Custom return code of the HTTP POST request. ​on success, 1 on failure.
  
-=== optical_zoom_only ===+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-Possible values: 0, 1+----
  
-=== focus_direct_value ​===+=== Command to execute:  ​===
  
-Description:​ Set manual camera focus distance Possible values: 0x1000 to 0xf000+<​code>​ 
 +python3 saveUser_DIGEST_ARGPARSE.py 192.168.10.127 -username admin -passwd admin 
 +</​code>​
  
-=== manual_focus ===+----
  
-DescriptionSet focus mode+=== Example output===
  
-Possible valuesautomanual+<​code>​ 
 +Save Camera Boson response{"​ret":"​0"​,"​status":"​OK"​} 
 +</​code>​
  
-==== SetIp ====+----
  
-=== local_ip ​===+==== SaveCameraDRSTamarisk ====
  
-IPv4 adresss+----
  
-=== local_netmask ===+Save color pallete settings of DRS Tamarisk camera in the Database.
  
-IPv4 netmask+== Parameters: ==
  
-=== default_gw ===+----
  
-IPv4 default gateway+//​**color_pallette**// ​ Color pallete. Default value is whitehot. 
 +== Returns: ==
  
-=== local_dnsip ===+----
  
-DNS server primary+JSON formatted table with values below
  
-=== local dnsip2 ===+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-DNS server secondary+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-=== do_autostart ===+----
  
-Control automatic stream start after bootup+=== Command to execute: ​ ===
  
-Possible values: 1 = do autostart 0 = do not autostart+<​code>​ 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 +</​code>​
  
-=== enc_adv_setting ===+----
  
-Control appearance of advanced settings on WebUI+=== Example output: ===
  
-Possible values: ​off, on+<​code>​ 
 +Save Camera DRS Tamarisk response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SaveCameraLink ==== 
 + 
 +---- 
 + 
 +Saving camera link settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**pxl_format**// ​ Pixel format. Default value is 1. 
 + 
 +//​**color_table**// ​ Color table. Default value is whitehot. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +Save Camera Link response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SaveCameraLx ==== 
 + 
 +---- 
 + 
 +Saving camera Lx settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**SONY_ExposureMode**// ​ Exposure Mode. Default value is 32852. ​Possible values: ​32848 (Program Auto)32849 (Aperture Priority), 32850 (Shutter Priority), 32851 (Manual Exposure), 32852 (Intelligent Auto). 
 + 
 +//​**name**//​ Name of the camera. Default value is s3ca_1. 
 + 
 +//​**SONY_ShutterSpeed**// ​ Shutter speed. Defualt value is NULL. 
 + 
 +//​**SONY_ISO**// ​ ISO. Defualt value is NULL. 
 + 
 +//​**SONY_ExposureComp**// ​ Exposure comp. Defualt value is NULL. 
 + 
 +//​**SONY_WhiteBalance**// ​ White balance. Defualt value is NULL. 
 + 
 +//​**SONY_ColorTemp**// ​ Color temperature. Defualt value is NULL. 
 + 
 +//​**SONY_APS_C**// ​ APS_C. Defualt value is NULL. 
 + 
 +//​**SONY_NtscPalSelect**// ​ NTSC / PAL selection. Defualt value is NULL. 
 + 
 +//​**SONY_MovieSteadyMode**// ​ Movie steady mode. Defualt value is NULL. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +Save Camera Lx response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SaveCameraTau ==== 
 + 
 +---- 
 + 
 +Saving camera TAU settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**color_table **//  color table value . 
 + 
 +//​**is_active**// ​ Active/​Deactive. Default value is 0. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +==== SaveJobs ==== 
 + 
 +---- 
 + 
 +Save the schedule jobs in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//**data **//  Parse the JSON formatted data and retrieve the schedule activities.//​**.** // 
 + 
 +//​**rowcnt**// ​ Get the number of row count. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +==== SavePresets ==== 
 + 
 +---- 
 + 
 +Check the operation mode whether its in encoder or decoder. Save the preseting value of the mode in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**dec_current_preset **//  Save the decoder current preseting values. 
 + 
 +//​**enc_current_preset**// ​ Save the encoder current preseting values. 
 + 
 +//​**preset**// ​ Settings for encoder or decoder. 
 + 
 +//​**enc_channels **//  Number of channels. Maximum number of channels is 2 for decoder and 4 for encoder. 
 + 
 +//​**opmode**// ​ Operation mode. Default is Encoder. Possible values: Encoder / Decoder. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SavePresets response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SaveUser ==== 
 + 
 +---- 
 + 
 +Save the state, preset, encoder/​decoder settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +**//​enc_current_preset//​** ​ Get the encoder preseting values for the current channel. 
 + 
 +**//​dec_current_preset//​** ​ Get the decoder preseting values for the current channel. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SaveUser response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetAdv ==== 
 + 
 +---- 
 + 
 +Save the encoder advance settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**enc_adv_setting **//  Get the encoder advance setting values. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetAdv response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetAPConfig ==== 
 + 
 +---- 
 + 
 +Set the wifi and its password. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//**passwd **//  Get the wifi password 
 + 
 +//​**passwden**// ​ Get wifi enable / disable. Default value is disable. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetAPConfig response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetAudio ==== 
 + 
 +---- 
 + 
 +Save the audio input settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//**aport **//  Get the audio port. Default value is MIC. Possible values are MIC , MICL 
 + 
 +//​**analog_gain_db**// ​ Get the analog gain decibal value. Default value is 0. The value ranges are -97 to 30. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetAudio response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetCameraLink ==== 
 + 
 +---- 
 + 
 +Save the color table and pixel format values in the Database and set the color table and pixel format in the fpga. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//**val **//  Get the value for color table and pixel format. 
 + 
 +//**opt **//  The options are color table and pixel format. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +Set Camera Link response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetConsole ==== 
 + 
 +---- 
 + 
 +Set the console value as ttyAMA0 or none. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**console_enable **//  Get console value is enabled / disabled. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +Set Console response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetDDNSEnable ==== 
 + 
 +---- 
 + 
 +Set the Dynamic Domain Name System settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**ddns_enable **//  Get the ddns enable value. Default value is Off. Possible values; (On, Off) 
 + 
 +//​**ddns_provider **//  Get the ddns provider. Default value is freedns. Possible values: //​(//​freedns,​ freemyip, dyn, domains.google.com,​ duckdns.org,​ no-ip.com, tunnelbroker.net,​ dynv6.com, cloudxnv.net,​ dnspod.cn, cloudflare.com). 
 + 
 +//​**ddns_username **//  Provide the username. 
 + 
 +//​**ddns_password ** //Provide the password. 
 + 
 +//​**ddns_hostname ** //Hostname for DDNS login. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +Set DDNS Enable response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetDebugLevel ==== 
 + 
 +---- 
 + 
 +Set the logging level. The setting is persistent. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**sysdebuglevel **//  Get the system debug level. Possible values 0=None, 1=Error, 2=Information,​ 3=Diagnostics,​ 4=Codeflow, 5=Dataflow. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +Set Debug Level response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetDevName ==== 
 + 
 +---- 
 + 
 +Set the device name in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**sysdevicename **//  Get the system device name. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +Set Dev Name response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +----
  
 ==== SetDisplay ==== ==== SetDisplay ====
  
-Controls composite output (passthru video from camera)+----
  
-=== disp_std ===+Controls composite output (passthru video from camera).
  
-Set display standard for composite output+== Parameters: ==
  
-Possible valuesauto, ntscpal+---- 
 + 
 +//​**disp_std **//  Get display standard for encoder. Default value is Auto. 
 + 
 +//​**disp_input **//  Get display input for encoder. Default value is MACRO_DEFAULT_DISP_INPUT. 
 + 
 +//​**save_only**//  ​Possible values: (True / False) 
 + 
 +//​**disp_layout **//  Display layout for decoder. Default value is 1×1. 
 + 
 +//​**disp_mode **//  Display mode for decoder. Default value is UltraHD. 
 + 
 +//​**disp_std2 **//  Display standard for decoder. Default value is auto
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +Set Display response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetDSCP ==== 
 + 
 +---- 
 + 
 +Set the DSCP configuration settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**diff_serve**// ​ Get the DSCP configuration value. Default value is 0x00. Possible values are ( 0x00, 0xB8, 0x88, 0x90, 0x98, 0x80, 0x68, 0x70, 0x78, 0x60, 0x48, 0x50, 0x58, 0x28, 0x30, 0x38, 0x01). 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetDSCP response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetFpga ==== 
 + 
 +---- 
 + 
 +Set the fpga settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**fpgafileglob**// ​ Get fpga value. Possible values are (boson / cvbs / tamarisk / tau2). 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetFpga response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetIp ==== 
 + 
 +---- 
 + 
 +Control networking settings of the Z3 device such as local IPv4 IP address, netmask, etc. Additionally control Encoder Auto-Start after boot-up and enable/​disable showing of advanced WebUI settings. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**do_autostart**// ​ Control automatic stream start after bootup. Possible values: 1 = do autostart 0 = do not autostart. 
 + 
 +//​**enc_adv_setting**// ​ Control appearance of advanced settings on WebUI. Possible values: off, on. 
 + 
 +//​**ipmtu**// ​ Control Ethernet IP Maximum Transmission Unit (MTU) size in bytes. Possible values: 576 to 1500. 
 + 
 +//​**eth_speed**// ​ Control Gigabit Ethernet auto-negotiation allowed speeds. Possible values: AUTO, AUTO-100, 1000, 100, 10. 
 + 
 +//​**eth_duplex**// ​ Control Ethernet auto-negotiation allowed duplex. Possible values: AUTO, FULL, HALF. 
 + 
 +//​**local_ip**// ​ IPv4 address. 
 + 
 +//​**local_netmask**// ​ IPv4 netmask. 
 + 
 +//​**default_gw**// ​ IPv4 default gateway. 
 + 
 +//​**local_dnsip**// ​ DNS server primary. 
 + 
 +//​**local_dnsip2**// ​ DNS server secondary. 
 + 
 +//​**use_dhcp**// ​ Controls use of DHCP or static IP. Possible values: 1 (DHCP enabled), 0 (DHCP disabled, use static IP). 
 + 
 +//​**local_hostname**// ​ Network hostname. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 +</​code>​ 
 + 
 +<​code>​ 
 +action=SetIp&​default_gw=172.29.0.1&​do_autostart=1&​enc_adv_setting=on&​eth_duplex=AUTO&​eth_speed=AUTO&​ipmtu=1500&​local_dnsip=8.8.8.8&​local_dnsip2=4.4.4.4&​local_hostname=Z3Dome-4M&​local_ip=172.29.10.122&​local_netmask:​ =255.255.0.0&​use_dhcp=1 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetIp response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetLoginLimit ==== 
 + 
 +---- 
 + 
 +Set the login limit settings in the Database 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**maxlogin**// ​ mximum number of login limit. Possible value in range (3 to 99 ). 
 + 
 +//​**login_window**// ​ Login window period, the value are considered in seconds. Possible value in range (60 to 32768). 
 + 
 +//​**lockout_interval**// ​ Lockout interval values are mentioned in seconds, which is used when maximum number of login limit is reached. Possible value in range (-1 to 32768) 
 + 
 +//​**login_timeout**// ​ Login timeout 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetLoginLimit response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetNFS ==== 
 + 
 +---- 
 + 
 +Set the NFS settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**nfs_enable**// ​ Enable/​Disable nfs 
 + 
 +//​**nfs_server**// ​ Get the nfs server ip address. Default is 192.168.1.6 
 + 
 +//​**nfs_server_root**// ​ Get the server root path / location. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetNFS response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetSNTP ==== 
 + 
 +---- 
 + 
 +Set SNTP (Simple Network Time Protocol) settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**enable**// ​ Enable/​Disable SNTP. Possible value: true, false. Default value true. 
 + 
 +**//​servers//​** ​ NTP server or list of NTP servers. 
 + 
 +//​**timezone**// ​ Linux TZ database value for Timezone. 
 + 
 +//​**timezone_name**// ​ Name for a time zone. Default is America/​Chicago. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetSNTP response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetSNMP ==== 
 + 
 +---- 
 + 
 +Set the SNMP settings in the database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**power_trap_en**// ​ Enable/​Disable power trap. 
 + 
 +//​**input_loss_trap_en **//  Enable/​Disable input loss trap. 
 + 
 +//​**input_recover_trap_en**// ​ Enable/​Disable input recover trap. 
 + 
 +//​**temp_high_trap_en**// ​ Enable/​Disable temp high trap. 
 + 
 +//​**temp_recover_trap_en**// ​ Enable/​Disable temperature recover trap. 
 + 
 +//​**trap_hosts **//  Trap hosts ipaddress. Default ip address value is 192.168.0.6. 
 + 
 +//​**high_temp_suppress**// ​ hiigh temperature. Default value is 30. 
 + 
 +//​**nominal_temp_suppress**// ​ nominal temperature default value is 30. 
 + 
 +//​**snmp_v3_en**// ​ Enable/​Disable SNMP 
 + 
 +//​**snmp_v3_encrypt **//  SNMP v3 encrypt value. 
 + 
 +//​**snmp_v3_user **//  z3user. 
 + 
 +//​**snmp_v3_passwd **//  z3password. 
 + 
 +//​**snmp_v3_usrpro **//  snmp v3 usrpro default value is md5. 
 + 
 +//​**snmp_v3_encrypt_passwd **//  z3password. 
 + 
 +//​**snmp_v3_encpro **//  decrypt value. 
 + 
 +//​**snmp_v3_engineid **//  Default value for engineid is 0. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetSNMP response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetNMEAEnable ==== 
 + 
 +---- 
 + 
 +Save the GPS NMEA enable/​disable value in the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +**//​nmea_enable//​** ​ Enable/​Disable the NMEA. Possible value: on, off. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetNMEAEnable response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetOnvif ==== 
 + 
 +---- 
 + 
 +Save the ONVIF settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**fixed_profile_max**// ​ Get the Maximum ONVIF profiles to allow (1 or 2). 
 + 
 +//​**en_persistent_audio **//  Enable/​Disable ONVIF persistent audio channel. 
 + 
 +//​**onvif_enable**// ​ Enable/​Disable ONVIF. 
 + 
 +//​**list_all_video_sources **//  List all the video source. 
 + 
 +//​**ptz_timeout **//  Get the PTZ timeout values. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetOnvif response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetOnvifVMD ==== 
 + 
 +---- 
 + 
 +Save the ONVIF video motion detection and too darkness settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**vmd_enable **//  Enable/​Disable video motion detection. 
 + 
 +//​**vmd_sens**// ​ sensitivity value required for vmd. Possible value in range: (1 to 100). 
 + 
 +//​**vmd_zone_modify **//  Enable/​Disable video motion and too darkness zone coordinates. 
 + 
 +//​**vmd_vcrop_width **//  crop width of the coordinates. 
 + 
 +//​**vmd_vcrop_height**// ​ crop height for VMD and too_darkness. 
 + 
 +//​**vmd_vcrop_x **//  crop startx for VMD and too_darkness. 
 + 
 +//​**vmd_vcrop_y **//  crop starty for VMD and too_darkness. 
 + 
 +//​**td_enable **//  Enable/​Disable too darkness. 
 + 
 +//​**td_thresh **//  Threshold value for too darkness. Possible values in range: 1 to 100. 
 + 
 +//​**vmd_td_channel **//  Get the channel number. Possible values: 1, 2. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetOnvifVMD response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetRTSP ==== 
 + 
 +---- 
 + 
 +Set the RTSP settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**rtspd_port**// ​ Get rtsp port. Default value is 554. 
 + 
 +//​**rtspd_timeout**// ​ Timeout value required for the rtsp connection. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetRTSP response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetTermSrvEnable ==== 
 + 
 +---- 
 + 
 +Sett the term server value in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**termserve_remote_enable**// ​ Enable/​Disable remote access to terminal server. Possible values are : on, off. 
 + 
 +//​**termserve_shared_enable**// ​ Enable/​Disable shared access to terminal server. Possible values are : on, off. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetTermSrvEnable response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetVideoGroup ==== 
 + 
 +---- 
 + 
 +Set the video group configuration settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//**group **//  Video config groups. Default value 0. 
 + 
 +//​**nr_enable**// ​ Enable / Disable NR. Default value is on. Possible value: on/off. 
 + 
 +//​**crop_enable**// ​ Enabled / Disable the crop. 
 + 
 +//​**crop_x**// ​ Crop x coordinates. 
 + 
 +//​**crop_y**// ​ Crop y coordinates. 
 + 
 +//​**crop_width**// ​ Crop width 
 + 
 +//​**crop_height **//  Crop height 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetVideoGroup response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetViewport ==== 
 + 
 +---- 
 + 
 +Set the view port for the decoder and update in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4. 
 + 
 +//​**viewport**// ​ viewport settings. The default value is fit. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetViewport response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetViVpssMode ==== 
 + 
 +---- 
 + 
 +Set the ViVpss mode settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**enc_vivpss_mode_enable **//  Enable/​Disable the vivpss mode. Default value is off. Possible values: on, off. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetViVpssMode response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== SetWifiAP ==== 
 + 
 +---- 
 + 
 +Set the wifi network settings in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**ssid**// ​ Get the Wifi service set identifier value. 
 + 
 +//​**psk**// ​ Get the Wifi password. 
 + 
 +//​**wifi_client_local_ip**// ​ Local IP addres. 
 + 
 +//​**wifi_client_local_local_netmask**// ​ Subnet mask for Wifi network. 
 + 
 +//​**wifi_client_default_gw**// ​ Default Gateway be used for Wifi Network. 
 + 
 +//​**wifi_client_use_dhcp**// ​ DHCP server used with Wifi network for DNS resolutions. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +==== SetZFinderEnable ==== 
 + 
 +---- 
 + 
 +Save ZFinder enable / disable in the Databse. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**zfinder_enable**// ​ Get ZFinder enable/​disable value. Possible values: off, on 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +SetZFinderEnable response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== StartChannel ==== 
 + 
 +---- 
 + 
 +Start the encoder channel and update the state as running in the Database. Once you start the channel, it will not transmit data until the video input is detected. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4. 
 + 
 +//​**actv_preset ** // 
 + 
 +//**vsource **//  video source. Default value is Camera1. Possible values: Camera1 / Camer2 / HDMI1. 
 + 
 +//​**vres**// ​ video resolution. Default value is Follow Input. Possible values: Follow Input, 3840 x 2160, 1920 x 1080, 1440 x 1080, 1280 x 1024, 1280 x 720, 1024 x 768, 960 x 720, 1024 x 576. 
 + 
 +//**vcodec **//  video codec. Default value is H265. Possible values: H265, H264, MJPEG, none. 
 + 
 +//**vgdr **//  video gradual data refresh. Default value is on. Possible value on, off. 
 + 
 +//​**vprofile**// ​ video profile. Default value is high. Possible value high, main, baseline. 
 + 
 +//​**vratectrl**// ​ video rate control. Default value is cbr. Possible value cbr, vbr. 
 + 
 +**vbitrate** video bit rate. 
 + 
 +//​**vframeratediv**// ​ video frame rate. Default value is 1. Possible values: 1 (Full), 2 (Half), 4 (Quarter), 6 (Sixth). 
 + 
 +//​**vgopsize **//  video group of picture size. Default value is 60. Possible values: 1 (1 Frame Only), 5 (5 Frames), 8 (8 Frames), 10 (10 Frames), 12 (12 Frames), 15 (15 Frames), 25 (25 Frames), 30 (30 Frames), 50 (50 Frames), 60 (60 Frames), 90 (90 Frames), 100 (100 Frames), 120 (120 Frames), 200 (200 Frames), 240 (240 Frames). 
 + 
 +//​**vprotocol**// ​ video protocol. 
 + 
 +//​**vdest**// ​ video destination port. 
 + 
 +//**vpid **//  video packet identifier. Default value is 221. 
 + 
 +//​**vdelay**// ​ video delay. Default value is 300. 
 + 
 +//​**pcrpid**// ​ PCR packet identifier. Default value is 521. 
 + 
 +//​**pcrinterval**// ​ Default value is 50. 
 + 
 +//​**pmtpid**// ​ program map table packet identifier. Default value is 31. 
 + 
 +//​**tsrate**// ​ bit rate for transport stream. Default value is 5000K. 
 + 
 +//​**tslowlat **//  transport stream low latency mode. Default value is off. Possible values: on, off. 
 + 
 +//​**feconoff **//  Forward error correction in transport stream enable/ disable. Default value is off. Possible values: on, off. 
 + 
 +//**fecrow **//  Forward error correction row. Default value is 1. 
 + 
 +//**feccol **//  Forward error correction column, Default value is 5. 
 + 
 +//​**zixioverhead **//  ZIXI Forward Error Correction total overhead as a percentage of transport rate. Default value is 15. 
 + 
 +//​**zixilatency**// ​ ZIXI target latency (to allow ARQ) in milliseconds. Default value is 500. 
 + 
 +//​**zixifecblock**// ​ ZIXI Forward Error Correction block size in milliseconds. Max value is 1/2 of Zixi Latency. Default value is 50. 
 + 
 +//​**zixirateadjen**// ​ ZIXI dynamic bitrate adjustment according to network conditions. Default value is on. Possible values: on, off. 
 + 
 +//​**zixiauthen**// ​ ZIXI dynamic authentication enable/​disable . Default value is off. Possible values: on, off. 
 + 
 +//​**zixisession **//  ZIXI session id. Default value is test. 
 + 
 +//​**zixiuser **//  ZIXI user identifier. Default value is user. 
 + 
 +//**aenable **//  Audio enable/​disable. Default value is on. Possible values: on, off.asource. Default value is MICL. 
 + 
 +//​**apair**// ​ Stereo pair select for digital inputs. Default value is 0. Possible values: (0 (1 2), 1 (3 4), 2 (5 6), 3 (7 8), 260 (1 2,3 4), 548 (1 2,3 4,5 6), 1252 (1 2,3 4,5 6,7 8)). 
 + 
 +//​**acodec**// ​ Audio codec. Default value is fdk_aaclc. 
 + 
 +//​**abitrate**// ​ Audio bit rate. Default value is 128000. 
 + 
 +//​**asamplerate **//  Audio sample rate. Default value is 48000. 
 + 
 +//**aport **//  Audio port. Default value is 8700. 
 + 
 +//**apid **//  Audio packet identifier. Default value is 120. 
 + 
 +//​**aptspcr**// ​ Maximum difference between the PTS and PCR in the audio stream Default value is 250. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +StartChannel response: {"​ret":"​0","​status":"​RUNNING"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== StartMTS ==== 
 + 
 +---- 
 + 
 +Start the MTS. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +StartMTS response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== StopChannel ==== 
 + 
 +---- 
 + 
 +Stop the encoder channel and update the state in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +StopChannel response: {"​ret":"​0","​status":"​STOPPED"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== StopMTS ==== 
 + 
 +---- 
 + 
 +Stop the MTS. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +StopMTSresponse:​ {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== TempStatus ==== 
 + 
 +---- 
 + 
 +Get the current temperature status for CPU and lense. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +TempStatus response: {"​ret":"​0","​status":"​OK"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 + 
 +==== update_require_web_login ==== 
 + 
 +---- 
 + 
 +Update/​Change whether web login credential required or not in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**require**// ​ Required web login value. Possible values: 1 or 0 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: === 
 + 
 +<​code>​ 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +update_require_web_login response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 + 
 +==== UpdatePtz ==== 
 + 
 +---- 
 + 
 +Update the PTZ value in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**data**// ​ Parse the JSON formatted data and retrieve the PTZ values. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: === 
 + 
 +<​code>​ 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 +</​code>​ 
 + 
 +<​code>​ 
 +action=UpdatePtz&​rowcount=1&​data={"​row0":​{"​db_videosource":"​CAMERA","​token":"​ptz","​name":"​videoin1","​enabled":​1,"​pelcoaddr":​1,"​tcpport":​2000,"​ptztype":"​relative","​flip":"​none","​pos":"​simulated","​maxtilt":​90,"​rowid":​1}} 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +UpdatePtz response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== UpdatePtzPreset ==== 
 + 
 +---- 
 + 
 +Update the PTZ preset value in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**data**// ​ Parse the JSON formatted data and retrieve the PTZ preset values. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 +---- 
 + 
 + 
 +=== Command to execute: === 
 + 
 +<​code>​ 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 +</​code>​ 
 + 
 +<​code>​ 
 +action=UpdatePtzPreset&​rowcount=2&​data={"​row0":​{"​profiletoken":"​profile1","​token":"​1","​name":"​home","​action":​null,"​rowid":​1},"​row1":​{"​profiletoken":"​profile1","​token":"​2","​name":"​temp","​action":​null,"​rowid":​2}}  
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +UpdatePtzPreset response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== UpdatePtzTourSpots ==== 
 + 
 +---- 
 + 
 +Update the PTZ tour spots value in the Database. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//​**data**// ​ Parse the JSON formatted data and retrieve the PTZ tour spots values. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: === 
 + 
 +<​code>​ 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 +</​code>​ 
 + 
 +<​code>​ 
 +action=UpdatePtzTourSpots&​rowcount=1&​data={"​row0":​{"​ProfileToken":"​profile1","​PresetTourToken":"​1","​PresetDetailToken":"​1","​StayTime":​5,"​RowIndex":​0,"​action":"​blank"​,"​rowid":​1}} 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +UpdatePtzTourSpots response: {"​ret":"​0"​,"​status":"​OK"​} 
 +</​code>​ 
 + 
 +----
  
 ==== UpdateTerm ==== ==== UpdateTerm ====
 +
 +----
  
 Control serial port terminal server for VISCA Control serial port terminal server for VISCA
  
-=== term_mode ===+== Parameters: ​==
  
-Possible values: client, server+----
  
-=== term_protocol ===+//​**data**// ​ Parse the JSON formatted data and retrieve the terminal server values.
  
-Possible values: ​clearchanneltelnet+//​**term_mode**//  ​Possible values: ​clientserver
  
-=== term_localport ===+//​**term_protocol**// ​ Possible values: clearchannel,​ telnet
  
-Local TCP port (for server mode)+//​**term_localport**//  ​Local TCP port (for server mode)
  
-=== term_servaddr ​===+//**term_servaddr**//  Remote IP address (for client mode only)
  
-Remote ​IP address ​(for client mode only)+//​**term_servport**//  ​Remote ​TCP port (for client mode only)
  
-=== term_servport ===+//​**term_data_bits**// ​ number of data bits.
  
-Remote TCP port (for client mode only)+//​**term_parity**// ​ Possible values: None, Odd, Even, Mark, Space
  
-=== term_baudrate ===+//​**term_stop_bits**// ​ Stop bits sent at the end of every character.
  
-Possible values: 9600, 19200, 38400, 57600, 115200+//​**term_baudrate**//  ​Possible values: 9600, 19200, 38400, 57600, 115200
  
-=== term_devicefile ​===+//**term_devicefile**//  device fine name
  
-==== Overlay ====+//​**term_function**// ​ functionality 
 +== Returns: ​==
  
-Add/Update overlay+----
  
-=== chn ===+JSON formatted table with values below
  
-​Encoder channel to add overlay to.+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-=== rgn_idx ===+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-​Index to map overlay to.+----
  
-=== ​type ​===+=== Command to execute: ​===
  
-Type of overlay to be used possible values: text or png.+<​code>​ 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 +</​code>​
  
-=== source ===+<​code>​ 
 +action=UpdateTerm&​rowcount=5&data={"​row0":​{"​term_devicefile":"​%2Fdev%2FttyHS1","​term_baudrate":"​9600","​term_data_bits":"​8","​term_parity":"​None","​term_stop_bits":"​1","​term_function":"​rs485","​term_localport":"​2000","​rowid":​1},"​row1":​{"​term_devicefile":"​%2Fdev%2FttyHS3","​term_baudrate":"​9600","​term_data_bits":"​8","​term_parity":"​None","​term_stop_bits":"​1","​term_function":"​camera1_visca","​term_localport":"​1000","​rowid":​2},"​row2":​{"​term_devicefile":"​%2Fdev%2FttyHS2","​term_baudrate":"​9600","​term_data_bits":"​8","​term_parity":"​None","​term_stop_bits":"​1","​term_function":"​ir_led_zoom_ctrl","​term_localport":"​1001","​rowid":​3},"​row3":​{"​term_devicefile":"​%2Fdev%2FttyMSM0","​term_baudrate":"​115200","​term_data_bits":"​8","​term_parity":"​None","​term_stop_bits":"​1","​term_function":"​console","​term_localport":"​1800","​rowid":​4},"​row4":​{"​term_devicefile":"​%2Fdev%2FttyHS4","​term_baudrate":"​2400","​term_data_bits":"​8","​term_parity":"​None","​term_stop_bits":"​1","​term_function":"​user","​term_localport":"​1600","​rowid":​5}} 
 +</​code>​
  
-In the case of text overlay this would be the source text for png overlay this is the path to the png on the encoder. Images must be uploaded to board to be used.+----
  
-=== location ​===+=== Example output: ​===
  
-This is the location of the overlay. Possible values'​top_left'​'​top_right',​ '​top_center',​ '​bottom_left',​ '​bottom_right',​ '​bottom_center',​ '​x,​y'​ (negative numbers not supported for x or y)+<​code>​ 
 +UpdateTerm response{"​ret":"​0"​,"​status":"​OK"​} 
 +</​code>​
  
-=== char_size ===+----
  
-For text overlay this is the character size. Possible values: 16,32,64 
  
-=== layer ===+==== user_add ====
  
-This will set the layer for the overly higher numbers will overlay over lower numbers if overlapping.+----
  
-=== alpha ===+Add a new user in the Database.
  
-Sets the transparency of the text. Possible values0-255+== Parameters==
  
-==== OverlayStop ====+----
  
-=== chn ===+//​**Name**// ​ Get new user name
  
-​Encoder channel ​to remove overlay from.+//​**Level**// ​ Get the level of permission for the new user name. Possible value: 0 to 7.
  
-=== rgn_idx ===+//​**Password**// ​ Get the password for the new user name. 
 +== Returns: ​==
  
-​Index of overly for this channel.+----
  
-==== ​Dynamic ====+JSON formatted table with values below
  
-=== chn ===+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-​Encoder channel to apply dynamic command to.+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-<font 12.8px/​Arial,​ sans-serif;;#​000000;;​inherit font-family: Arial, sans-serif; font-weight: bold; font-size: 12.8px;>​var</​font>​+----
  
-Variable ​to modify dynamically. Possible valuesvratediv, vrate, gop, analog_gain,​ telop_text, pip_enable, pip_location,​ startmulticast,​ stopmulticast+=== Command ​to execute ===
  
-=== val ===+<​code>​
  
-Value to set dynamic variable to.+python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
  
-==== ​SetSNTP ====+</​code>​
  
-=== enable ===+----
  
-Enable/​Disable SNTP.+=== Example output: ===
  
-=== servers ===+<​code>​ 
 +user_add response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​
  
-NTP server or list of NTP servers.+----
  
-=== timezone ​===+==== user_remove ====
  
-Linux TZ database value for Timezone.+----
  
-==== ​SetOnvif ====+Remove the user from the database.
  
-=== enable ===+== Parameters: ​==
  
-Enable/​Disable ONVIF.+----
  
-=== fixed_profile_max ===+//**data **//  Parse the JSON formatted data and retrieve the user name. 
 +== Returns: ​==
  
-Maximum ONVIF profiles to allow (1 or 2).+----
  
-==== ​SetTermSrvEnable ====+JSON formatted table with values below
  
-=== termserve_remote_enable ===+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Enable/Disable remote access to terminal server.+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-==== ​SetZFinderEnable ====+----
  
-=== zfinder_enable ​===+=== Command to execute:  ​===
  
-Enable/Disable zfinder support.+<​code>​ 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 +</​code>​ 
 + 
 +<​code>​ 
 +action: "​user_remove",​ data: '​{"​Name":"​temp"​}'​ 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +user_remove response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 + 
 +==== user_update_level ==== 
 + 
 +---- 
 + 
 +Update/​change the level of permission to the given user name. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//**data **//  Parse the JSON formatted data and retrieve the user name and level of the permission. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +user_update_level response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== user_update_password ==== 
 + 
 +---- 
 + 
 +Update/​change the password to the given user name. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//**data **//  Parse the JSON formatted data and retrieve the user name and password. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 +user_update_password response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== download_remove ==== 
 + 
 +---- 
 + 
 +<code html4strict>​ 
 +http://​Encoder_IP/​cgi-bin/​control.cgi?​action=download_remove&​data=FILENAME 
 + 
 +http://​192.168.0.120/​cgi-bin/​control.cgi?​action=download_remove&​data=/​media/​sda/​MOV1_000040.mp4 
 + 
 + 
 +</​code>​ 
 + 
 +remove the downloaded media content from the usb drive or sd card. 
 + 
 +== Parameters: == 
 + 
 +---- 
 + 
 +//**data **//  Filename from the downloaded media content to be removed from the removable media device. 
 +== Returns: == 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +===== Generic Control (GET) ===== 
 + 
 +==== 8021x ==== 
 + 
 +---- 
 + 
 +Get the exthernet 802x information from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**interface**// ​ TEXT, 
 + 
 +**//​enable//​** ​ TEXT. 
 + 
 +//​**eap**// ​ TEXT. 
 + 
 +**//​anonymous_identity//​** ​ TEXT. 
 + 
 +//​**identity**// ​ TEXT. 
 + 
 +//​**password**// ​ TEXT. 
 + 
 +//​**private_key_password**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +8021x response: {"​anonymous_identity":"","​ca_cert_status":"​Unavailable","​eap":"​peap","​enable":"​off","​identity":"","​interface":"​eth0","​password":"","​priv_cert_status":"​Unavailable","​priv_key_status":"​Unavailable","​private_key_password":"","​ret":"​0"​} 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== GetCronJobs ==== 
 + 
 +---- 
 + 
 +Get the schedule job from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +**//​enable//​** ​ INTEGER, 
 + 
 +//​**cron**// ​ TEXT. 
 + 
 +//​**func**// ​ TEXT. 
 + 
 +**//​func_args//​** ​ TEXT. 
 + 
 +//​**type**// ​ TEXT. 
 + 
 +//​**minutes**// ​ INTEGER. 
 + 
 +//​**hours**// ​ INTEGER. 
 + 
 +//​**day**// ​ INTEGER. 
 + 
 +//​**month**// ​ INTEGER. 
 + 
 +//​**cron**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +GetCronJobs response: {"​data":​[],"​metadata":​[{"​datatype":"​integer","​editable":​true,"​label":"​Enable","​name":"​enable"​},​{"​datatype":"​text","​editable":​true,"​label":"​Name","​name":"​name"​},​{"​datatype":"​text","​editable":​true,"​label":"​Function","​name":"​func"​},​{"​datatype":"​text","​editable":​true,"​label":"​Function Arguements","​name":"​func_args"​},​{"​datatype":"​text","​editable":​true,"​label":"​Type","​name":"​type"​},​{"​datatype":"​integer","​editable":​true,"​label":"​Minutes","​name":"​minutes"​},​{"​datatype":"​integer","​editable":​true,"​label":"​Hours","​name":"​hours"​},​{"​datatype":"​integer","​editable":​true,"​label":"​Day","​name":"​day"​},​{"​datatype":"​integer","​editable":​true,"​label":"​Month","​name":"​month"​},​{"​datatype":"​text","​editable":​true,"​label":"​Cron Command","​name":"​cron"​}],"​ret":"​0"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== GetNFSMount ==== 
 + 
 +---- 
 + 
 +Get the Network File Sharing mounted infromation from the device. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +**//​mounted//​** ​ TEXT, 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Get NFS Mount response: {"​mounted":​256,"​ret":"​0"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== aspect_info ==== 
 + 
 +---- 
 + 
 +Get the video resolution for the current channel from the Database and calculate the aspect ratio. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**numerator**// ​ INTEGER, 
 + 
 +//​**denominator**// ​ INTEGER. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Aspect Info response: {"​denominator":​9,"​numerator":​16,"​ret":"​0","​status":"​OK"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== boardinfo ==== 
 + 
 +---- 
 + 
 +Get the board and model information from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**logo_enable**// ​ TEXT, 
 + 
 +//​**logo_filename**// ​ TEXT. 
 + 
 +//​**logo_width**// ​ INTEGER. 
 + 
 +//​**logo_height**// ​ INTEGER. 
 + 
 +//​**logo_blob**// ​ BLOB. 
 + 
 +//​**ico_blob**// ​ BLOB. 
 + 
 +//​**model_enable**// ​ TEXT. 
 + 
 +//​**model_name**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Boardinfo response: {"​MODEL":"​FV4K-13A","​board_id":"​0xFF21","​hw50serial":"​50014401222610007","​hwserial":"​30014410221610012","​hwversion":"​FV4K-13A","​logo_enable":"​off","​logo_height":​156,"​logo_width":​319,"​macaddr":"​40:​cd:​3a:​06:​10:​bc","​model_enable":"​off","​model_name":"​Z3-Encoder","​opmode":"​encoder","​opstate":"​RUNNING","​processor_id":"​cv22bub","​ret":"​0","​sensor_serial":"​30014410221610012\n","​sysdevicename":"​Z3Cam","​z3_avmux":"​enabled","​z3_klv":"​enabled","​z3_klv_serial_only":"​enabled","​z3_sntp":"​enabled","​z3_termsrv":"​enabled","​z3_tslowlat":"​enabled","​z3_webproxy":"​enabled"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== cam_state ==== 
 + 
 +---- 
 + 
 +Get the current camera state information from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**preset**// ​ TEXT, 
 + 
 +//​**enc_channels**// ​ TEXT. 
 + 
 +//​**opmode**// ​ TEXT. 
 + 
 +//​**enc_current_preset**// ​ TEXT. 
 + 
 +//​**dec_current_preset**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute and Example :  === 
 + 
 +Please refer in this document in the below section cam_state (sys_DIGEST_ARGPARSE.py) 
 + 
 +---- 
 + 
 + 
 + 
 +==== camera ==== 
 + 
 +---- 
 + 
 +Get the current camera settings from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the channel number. The default is Camera 1. Select between connected cameras. Possible values: 1 = Camera 1, 2 = Camera 2. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**zoom_direct_value**// ​ INTEGER. 
 + 
 +//​**white_balance_mode**// ​ TEXT. 
 + 
 +//​**color_gain**// ​ INTEGER. 
 + 
 +//​**color_hue**// ​ INTEGER. 
 + 
 +//​**chroma_suppress**// ​ INTEGER. 
 + 
 +//​**wb_manual_rgain_direct**// ​ INTEGER. 
 + 
 +//​**wb_manual_bgain_direct**// ​ INTEGER. 
 + 
 +//​**visca_localport**// ​ TEXT. 
 + 
 +//​**optical_zoom_only**// ​ BOOL. 0 or 1. 
 + 
 +//​**focus_direct_value**// ​ INTEGER. 
 + 
 +//​**manual_focus**// ​ TEXT. 
 + 
 +//​**flexio_localport**// ​ TEXT. 
 + 
 +//​**exposure_mode**// ​ INTEGER. 
 + 
 +//​**shutter**// ​ INTEGER. 
 + 
 +//​**iris**// ​ INTEGER. 
 + 
 +//​**gain**// ​ INTEGER. 
 + 
 +//​**high_sensitivity**// ​ INTEGER. 
 + 
 +//​**hlc_level**// ​ INTEGER. 
 + 
 +//​**hlc_level_mask**// ​ INTEGER. 
 + 
 +//​**stable_zoom**// ​ INTEGER. 
 + 
 +//​**eflip**// ​ INTEGER. 
 + 
 +//​**lr_reverse**// ​ INTEGER. 
 + 
 +//​**monitor_mode**// ​ TEXT. 
 + 
 +//​**genlock_source**// ​ INTEGER. 
 + 
 +//​**manual_icr**// ​ TEXT. 
 + 
 +//​**zoom_step_size**// ​ INTEGER. 
 + 
 +//​**focus_step_size**// ​ INTEGER. 
 + 
 +//​**img_freeze**// ​ INTEGER. 
 + 
 +//​**hr_mode**// ​ INTEGER. 
 + 
 +//​**img_stabilizer**// ​ INTEGER. 
 + 
 +//​**img_bw**// ​ INTEGER. 
 + 
 +//​**nr_2d_level**// ​ INTEGER. 
 + 
 +//​**nr_3d_level**// ​ INTEGER. 
 + 
 +//​**icr_threshold**// ​ INTEGER. 
 + 
 +//​**slow_shutter**// ​ BOOL. 0 or 1. 
 + 
 +//​**slow_shutter_limit**// ​ INTEGER. 
 + 
 +//​**flicker_reduction**// ​ BOOL. 0 or 1. 
 + 
 +//​**img_stabilizer_level**// ​ INTEGER. 
 + 
 +//​**wide_dynamic_range**// ​ TEXT. 
 + 
 +//​**ve_brightness**// ​ TEXT. 
 + 
 +//​**ve_compensation_type**// ​ TEXT. 
 + 
 +//​**ve_compensation_level**// ​ TEXT. 
 + 
 +//​**tab_index**// ​ TEXT. 
 + 
 +//​**imgvflip**// ​ INTEGER. 
 + 
 +//​**imghflip**// ​ INTEGER. 
 + 
 +//​**imgrotate**// ​ INTEGER. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Camera response: {"​backlight":​3,"​chroma_suppress":​1,"​color_gain":​4,"​color_hue":​7,"​dbversion":"​1.1","​eflip":​3,"​exposure_mode":​0,"​flexio_localport":"​1500","​flicker_reduction":​0,"​focus_direct_value":​4096,"​focus_step_size":​1,"​gain":​4,"​genlock_source":​2,"​high_sensitivity":​3,"​hlc_level":​0,"​hlc_level_mask":​0,"​hr_mode":​3,"​icr_threshold":​-1,"​img_bw":​0,"​img_freeze":​3,"​img_stabilizer":​3,"​img_stabilizer_level":​0,"​imghflip":​0,"​imgrotate":​0,"​imgvflip":​0,"​iris":​15,"​lr_reverse":​3,"​manual_focus":"​auto","​manual_icr":"​off","​monitor_mode":"​2160p-29.97","​nr_2d_level":​5,"​nr_3d_level":​4,"​optical_zoom_only":​0,"​ret":"​0","​shutter":​7,"​slow_shutter":​0,"​slow_shutter_limit":​-1,"​stable_zoom":​0,"​tab_index":"​1","​ve_brightness":"​-1","​ve_compensation_level":"​-1","​ve_compensation_type":"​-1","​visca_localport":"​1000","​wb_manual_bgain_direct":​190,"​wb_manual_rgain_direct":​190,"​white_balance_mode":"​auto","​wide_dynamic_range":"​3","​zoom_direct_value":​0,"​zoom_step_size":​4} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== camera_exposure ==== 
 + 
 +---- 
 + 
 +Get the current camera exposure values from the visca camera. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the channel number. The default is Camera 1. Select between connected cameras. Possible values: 1 = Camera 1, 2 = Camera 2. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**ae_mode**// ​ TEXT, 
 + 
 +//​**shutter**// ​ TEXT. 
 + 
 +//​**iris**// ​ TEXT. 
 + 
 +//​**gain_inquiry**// ​ TEXT. 
 + 
 +//​**sensitivity**// ​ TEXT. 
 + 
 +//​**hls_inquiry**// ​ TEXT. 
 + 
 +//​**min_shutter**// ​ INTEGER. 
 + 
 +//​**max_shutter**// ​ INTEGER. 
 + 
 +//​**shutter_label**// ​ TEXT. 
 + 
 +//​**min_iris**// ​ INTEGER. 
 + 
 +//​**max_iris **//  INTEGER. 
 + 
 +//​**iris_label**// ​ TEXT. 
 + 
 +//​**min_gain**// ​ INTEGER. 
 + 
 +//​**max_gain**// ​ INTEGER. 
 + 
 +//​**gain_label**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Camera Exposure response: {"​ae_mode":​0,"​backlight":​3,"​gain":​10,"​gain_label":​["​0db",​null,​null,​null,​null,​null,​null,​null,"​24db",​null,​null,​null,​null,​null,​null,​null,"​48db"​],"​hlc":​0,"​iris":​25,"​iris_label":​["​0",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​F4.8",​null,​null,​null,​null,​null,​null,​null,​null,"​F2.0"​],"​max_gain":​17,"​max_iris":​25,"​max_shutter":​33,"​min_gain":​1,"​min_iris":​0,"​min_shutter":​6,"​ret":"​0","​sensitivity":​3,"​shutter":​16,"​shutter_label":​["​1/​1",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​1/​100",​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,​null,"​1/​10K"​]} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 + 
 +==== camera_monitor_mode ==== 
 + 
 +---- 
 + 
 +Get the current camera monitor mode values from the visca camera. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the channel number. The default is Camera 1. Select between connected cameras. Possible values: 1 = Camera 1, 2 = Camera 2. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**modes**// ​ TEXT. 
 + 
 +//​**current_mode**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Camera Monitor Mode response: {"​current_mode":"​2160p-29.97","​modes":​{"​1080p-25":​8,"​1080p-29.97":​6,"​1080p-50":​20,"​1080p-59.94":​19,"​2160p-25":​30,"​2160p-29.97":​29,"​720p-50":​12,"​720p-59.94":​9},"​ret":"​0"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== dec ==== 
 + 
 +---- 
 + 
 +Get the current decoder settings from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the decoder channel number. The default decoder channel is 1. Select between decoder channels. Possible values: 1, 2, 3, or 4. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**preset**// ​ TEXT. 
 + 
 +//​**channel**// ​ INTEGER. 
 + 
 +//​**url**// ​ TEXT. 
 + 
 +**//​aenable//​** ​ TEXT. 
 + 
 +//​**viewport**// ​ TEXT. 
 + 
 +//​**latency_mode**// ​ TEXT. 
 + 
 +//​**max_latency_ms**// ​ TEXT. 
 + 
 +//​**srt_mode**// ​ TEXT. 
 + 
 +//​**srt_latency**// ​ TEXT. 
 + 
 +//​**srt_decrypt**// ​ TEXT. 
 + 
 +//​**srt_pass**// ​ TEXT. 
 + 
 +**//​zixi_fec//​** ​ TEXT. 
 + 
 +//​**zixi_fecoverhead**// ​ TEXT. 
 + 
 +//​**zixi_fecblock**// ​ TEXT. 
 + 
 +//​**zixi_latency**// ​ TEXT. 
 + 
 +**//​zixi_decrypt//​** ​ TEXT. 
 + 
 +//​**zixi_pass**// ​ TEXT. 
 + 
 +**//​rtsp_flags//​** ​ TEXT. 
 + 
 +---- 
 + 
 + 
 +==== download ==== 
 + 
 +---- 
 + 
 +Get the downloaded file information from the removable storage media. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4. 
 + 
 +//**job **//  Optional//​**. **//  The job from the schedule tab. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**FileName**// ​ TEXT. 
 + 
 +//​**FileSize**// ​ TEXT. 
 + 
 +//​**LastModified**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Download response: {"​data":​[],"​metadata":​[{"​datatype":"​text","​editable":​false,"​label":"​File Name","​name":"​download_filename"​},​{"​datatype":"​integer","​editable":​false,"​label":"​File Size","​name":"​download_size"​},​{"​datatype":"​text","​editable":​false,"​label":"​Last Modified","​name":"​download_lastmodified"​}],"​ret":"​0"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 + 
 +==== drs_tamarisk_settings ==== 
 + 
 +---- 
 + 
 +Get the camera model of drs tamarisk settings fromt the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//**job **//  Optional//​**. **//  The job from the schedule tab. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**color_pallette**// ​ TEXT. 
 + 
 +//​**tab_index**// ​ TEXT. 
 + 
 +//​**color_pallette_disabled**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +DRS Tamarisk Settings response: {"​color_pallette":"​white_hot","​color_pallette_disabled":"​false","​ret":"​0","​tab_index":"​1"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== enc ==== 
 + 
 +---- 
 + 
 +Get the current channel encoder settings from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**preset**// ​ TEXT, 
 + 
 +//​**channel**// ​ INTEGER. 
 + 
 +//​**vbitrate**// ​ TEXT. 
 + 
 +//​**vframeratediv**// ​ INTEGER. 
 + 
 +//​**vsource**// ​ TEXT. 
 + 
 +//​**vcodec**// ​ TEXT. 
 + 
 +//​**vprofile**// ​ TEXT. 
 + 
 +//​**vprotocol**// ​ TEXT. 
 + 
 +//​**avmux_index**// ​ TEXT. 
 + 
 +//​**vgdr**// ​ TEXT. 
 + 
 +**//vdest// ** TEXT. 
 + 
 +//​**aenable**// ​ TEXT. 
 + 
 +//​**acodec**// ​ TEXT. 
 + 
 +//​**abitrate**// ​ TEXT. 
 + 
 +//​**asamplerate**// ​ TEXT. 
 + 
 +//​**aport**// ​ TEXT. 
 + 
 +//​**apair**// ​ INTEGER. 
 + 
 +//​**vres**// ​ TEXT. 
 + 
 +//​**vgopsize**// ​ INTEGER. 
 + 
 +//​**vpid**// ​ INTEGER. 
 + 
 +//​**apid**// ​ INTEGER. 
 + 
 +//​**zixiauthen**// ​ TEXT. 
 + 
 +//​**zixisession**// ​ TEXT. 
 + 
 +//​**zixiuser**// ​ TEXT. 
 + 
 +//​**zixioverhead**// ​ TEXT. 
 + 
 +//​**zixifecblock**// ​ TEXT. 
 + 
 +//​**zixilatency**// ​ TEXT. 
 + 
 +//​**zixirateadjen**// ​ TEXT. 
 + 
 +//​**fecrow**// ​ INTEGER. 
 + 
 +//​**feccol**// ​ INTEGER. 
 + 
 +//​**feconoff**// ​ TEXT. 
 + 
 +//​**aptspcr**// ​ INTEGER. 
 + 
 +//​**tslowlat**// ​ TEXT. 
 + 
 +//​**tsrate**// ​ TEXT. 
 + 
 +//​**pcrpid**// ​ INTEGER. 
 + 
 +//​**pcrinterval**// ​ INTEGER. 
 + 
 +//​**pmtpid**// ​ INTEGER. 
 + 
 +//​**klvenable**// ​ TEXT. 
 + 
 +//​**klvmode**// ​ TEXT. 
 + 
 +//​**klvmuxmethod**// ​ TEXT. 
 + 
 +//​**klvsrc**// ​ TEXT. 
 + 
 +//​**klvbrate**// ​ TEXT. 
 + 
 +//​**klvserialbaud**// ​ TEXT. 
 + 
 +//​**klvpid**// ​ TEXT. 
 + 
 +//​**vratectrl**// ​ TEXT. 
 + 
 +//​**vdelay**// ​ INTEGER. 
 + 
 +//​**storage**// ​ TEXT. 
 + 
 +//​**fprefix**// ​ TEXT. 
 + 
 +//​**asource**// ​ TEXT. 
 + 
 +//​**authonoff**// ​ TEXT. 
 + 
 +//​**auth_user**// ​ TEXT. 
 + 
 +//​**auth_passwd**// ​ TEXT. 
 + 
 +//​**auxonoff**// ​ TEXT. 
 + 
 +//​**filesize**// ​ TEXT. 
 + 
 +//​**nfstrength**// ​ TEXT. 
 + 
 +//​**telopenable**// ​ TEXT. 
 + 
 +//​**teloptext**// ​ TEXT. 
 + 
 +//​**teloplocation**// ​ TEXT. 
 + 
 +//​**telopcharsize**// ​ TEXT. 
 + 
 +//​**teloptextcolor**// ​ TEXT. 
 + 
 +//​**telopoutlineenable**// ​ TEXT. 
 + 
 +//​**telopoutlinecolor**// ​ TEXT. 
 + 
 +//​**gps_overlay_enable**// ​ TEXT. 
 + 
 +//​**gps_overlay_device**// ​ TEXT. 
 + 
 +//​**gps_overlay_location**// ​ TEXT. 
 + 
 +//​**gps_overlay_char_size**// ​ TEXT. 
 + 
 +//​**pipenable**// ​ TEXT. 
 + 
 +//​**piplocation**// ​ TEXT. 
 + 
 +//​**vquality**// ​ TEXT. 
 + 
 +//​**vinterlacemode**// ​ TEXT. 
 + 
 +//​**vmulticastdest**// ​ TEXT. 
 + 
 +//​**amulticastdest**// ​ TEXT. 
 + 
 +//​**rtsp_auth_enable**// ​ TEXT. 
 + 
 +//​**rtsp_auth_username**// ​ TEXT. 
 + 
 +//​**rtsp_auth_password**// ​ TEXT. 
 + 
 +//​**rtsp_transport_mode**// ​ TEXT. 
 + 
 +//​**lowdelay_opt**// ​ TEXT. 
 + 
 +//​**vcropaspect**// ​ TEXT. 
 + 
 +//​**vcrop_enable**// ​ TEXT. 
 + 
 +//​**vcrop_width**// ​ INTEGER. 
 + 
 +//​**vcrop_height**// ​ INTEGER. 
 + 
 +//​**vcrop_x**// ​ INTEGER. 
 + 
 +//​**vcrop_y**// ​ INTEGER. 
 + 
 +//​**rotate_enable**// ​ INTEGER. 
 + 
 +//​**rotate_angle**// ​ INTEGER. 
 + 
 +//​**rtmp265_enable**// ​ TEXT. 
 + 
 +//​**srt_pass**// ​ TEXT. 
 + 
 +//​**srt_encrypt**// ​ INTEGER. 
 + 
 +//​**srt_mode**// ​ INTEGER. 
 + 
 +//​**srt_destAddr**// ​ TEXT. 
 + 
 +//​**mmulticastdest**// ​ TEXT. 
 + 
 +//​**mport**// ​ TEXT. 
 + 
 +//​**frame_loss_mode**// ​ TEXT. 
 + 
 +//​**frame_loss_gap**// ​ INTEGER. 
 + 
 +//​**frame_loss_overshot**// ​ INTEGER. 
 + 
 +//​**mounts**// ​ TEXT. 
 + 
 +//​**source_status_str**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Encoder response: {"​abitrate":"​128000","​acodec":"​fdk_aaclc","​aenable":"​on","​amulticastdest":"​225.1.2.3","​apair":​0,"​apid":​120,"​aport":"​8700","​aptspcr":​250,"​asamplerate":"​1","​asource":"​MIC","​auth_passwd":"​password","​auth_user":"​user","​authonoff":"​off","​auxonoff":"​off","​avmux_index":"​streaming","​channel":​1,"​enc_status":"​RUNNING","​feccol":​5,"​feconoff":"​off","​fecrow":​1,"​filesize":"​1024M","​fprefix":"​MOV1_%C","​frame_loss_gap":​0,"​frame_loss_mode":"​none","​frame_loss_overshot":​100,"​gps_overlay_char_size":"​32","​gps_overlay_device":"/​dev/​ttyS1","​gps_overlay_enable":"​off","​gps_overlay_location":"​top_right","​klvbrate":"​1000","​klvenable":"​off","​klvmode":"​sdi","​klvmuxmethod":"​sync","​klvpid":"​35","​klvserialbaud":"​115200","​klvsrc":"/​dev/​ttyS1","​lowdelay_opt":"​off","​mmulticastdest":"​225.1.2.3","​mounts":"/​dev/​mmcblk0p1 /​media/​mmcblk0p1/,","​mport":"​8800","​nfstrength":"​0","​pcrinterval":​50,"​pcrpid":​521,"​pipenable":"​off","​piplocation":"​top_right","​pmtpid":​31,"​preset":"​actv_preset","​ret":"​0","​rotate_angle":​0,"​rotate_enable":"​off","​rtmp265_enable":"​off","​rtsp_auth_enable":"​off","​rtsp_auth_password":"​admin","​rtsp_auth_username":"​admin","​rtsp_transport_mode":"​all","​source_status_str":"​+CAMERA 3840x2160p 29.97 fps\n","​srt_destAddr":"​192.168.0.6","​srt_encrypt":​0,"​srt_mode":​0,"​srt_pass":"​password1234","​storage":"/​media/​sda1","​telopcharsize":"​32","​telopenable":"​off","​teloplocation":"​top_left","​telopoutlinecolor":"​0xFF000000","​telopoutlineenable":"​off","​teloptext":"​Z3Cam","​teloptextcolor":"​0xFFFFFFFF","​tslowlat":"​on","​tsrate":"​3000K","​vbitrate":"​6M","​vcodec":"​h265","​vcrop_enable":"​off","​vcrop_height":​1080,"​vcrop_width":​1920,"​vcrop_x":​0,"​vcrop_y":​0,"​vcropaspect":"​off","​vdelay":​1000,"​vdest":"​192.168.0.6:​8600","​vframeratediv":​1,"​vgdr":"​off","​vgopsize":​60,"​vinterlacemode":"​combine","​vmulticastdest":"​225.1.2.3","​vpid":​221,"​vprofile":"​high","​vprotocol":"​rtsp","​vquality":"​balanced","​vratectrl":"​vbr","​vres":"​follow_input","​vsource":"​CAMERA","​zixiauthen":"​off","​zixifecblock":"​50","​zixilatency":"​500","​zixioverhead":"​15","​zixirateadjen":"​on","​zixisession":"​test","​zixiuser":"​user"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== filepicker ==== 
 + 
 +---- 
 + 
 +Get the file type and its information from the removable storage media. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**filepicker_filename**// ​ TEXT, 
 + 
 +**//​filepicker_size//​** ​ INTEGER. 
 + 
 +//​**filepicker_lastmodified**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Filepicket response: {"​data":​[],"​metadata":​[{"​datatype":"​text","​editable":​false,"​label":"​File Name","​name":"​filepicker_filename"​},​{"​datatype":"​integer","​editable":​false,"​label":"​File Size","​name":"​filepicker_size"​},​{"​datatype":"​text","​editable":​false,"​label":"​Last Modified","​name":"​filepicker_lastmodified"​}],"​ret":"​0"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== fmt ==== 
 + 
 +---- 
 + 
 +Get the removable storage infromation from the device using fdisk command. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**mounts**// ​ TEXT, 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Format response: {"​mounts":"​mmcblk0p1\n /​dev/​mmcblk0,","​ret":"​0","​store_logs":"​off"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== focusStepSize ==== 
 + 
 +---- 
 + 
 +Get the current camera focus step values from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the channel number. The default is Camera 1. Select between connected cameras. Possible values: 1 = Camera 1, 2 = Camera 2. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**focus_step_size**// ​ INTEGER, 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Focus Step Size response: {"​ret":"​0","​size":​1} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== fpga ==== 
 + 
 +---- 
 + 
 +Get the current fpga from firmware filename. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**fpgafileglob**// ​ TEXT, 
 + 
 +//​**options**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +FPGA response: {"​fpgafileglob":"​fpga_none.bin|fpga2_0139_cvbs.bin","​fpgaoptions":​{"​Boson only        ":"​fpga_unused.bin|fpga2_0139_boson.bin","​Composite only    ":"​fpga_unused.bin|fpga2_0139_cvbs.bin","​HDMI 4K| Boson    ":"​fpga_none.bin|fpga2_0139_boson.bin","​HDMI 4K| Composite":"​fpga_none.bin|fpga2_0139_cvbs.bin","​HDMI 4K| SonyLVDS ":"​fpga_none.bin|fpga2_0139.bin","​HDMI 4K| Tamarisk":"​fpga_none.bin|fpga2_0139_tamarisk.bin","​HDMI 4K| Tau2     ":"​fpga_none.bin|fpga2_0139_tau2.bin","​HDMI 4K| Tenum   ":"​fpga_none.bin|fpga2_0139_tenum.bin","​HDMI 4K| Unused ​  ":"​fpga_none.bin|fpga2_none.bin","​Micro-HDMI| Boson    ":"​fpga_none_microhdmi.bin|fpga2_0139_boson.bin","​Micro-HDMI| Composite":"​fpga_none_microhdmi.bin|fpga2_0139_cvbs.bin","​Micro-HDMI| SonyLVDS ":"​fpga_none_microhdmi.bin|fpga2_0139.bin","​Micro-HDMI| Tamarisk ":"​fpga_none_microhdmi.bin|fpga2_0139_tamarisk.bin","​Micro-HDMI| Tau2     ":"​fpga_none_microhdmi.bin|fpga2_0139_tau2.bin","​Micro-HDMI| Tenum    ":"​fpga_none_microhdmi.bin|fpga2_0139_tenum.bin","​Micro-HDMI| Unused ​  ":"​fpga_none_microhdmi.bin|fpga2_none.bin","​SonyLVDS only     ":"​fpga_unused.bin|fpga2_0139.bin","​Tamarisk only     ":"​fpga_unused.bin|fpga2_0139_tamarisk.bin","​Tau2 ​ only        ":"​fpga_unused.bin|fpga2_0139_tau2.bin","​Tenum only        ":"​fpga_unused.bin|fpga2_0139_tenum.bin"​},"​ret":"​0"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== history ==== 
 + 
 +---- 
 + 
 +Get the decoder history infromation from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**channel**// ​ TEXT, 
 + 
 +//​**histidx**// ​ TEXT. 
 + 
 +//​**url**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +History response: {"​ret":"​0","​status":"​OK"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== ipinfo ==== 
 + 
 +---- 
 + 
 +Get the internet protocol infromation from the board. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**local_ip**// ​ TEXT, 
 + 
 +//​**local_netmask**// ​ TEXT. 
 + 
 +//​**default_gw**// ​ TEXT. 
 + 
 +//​**ipmtu**// ​ TEXT. 
 + 
 +//​**eth_speed**// ​ TEXT. 
 + 
 +//​**eth_duplex**// ​ TEXT. 
 + 
 +//​**do_autostart**// ​ BOOLEAN. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +IP Info response: {"​default_gw":"​192.168.10.1","​do_autostart":​1,"​eth_duplex":"​AUTO","​eth_speed":"​AUTO","​ipmtu":​1500,"​local_dnsip":"​8.8.8.8","​local_dnsip2":"​8.8.4.4","​local_hostname":"​z3-he4k","​local_ip":"​192.168.10.127","​local_netmask":"​255.255.255.0","​ret":"​0","​use_dhcp":"​1"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== onvif ==== 
 + 
 +---- 
 + 
 +Get the ONVIF miscallenous settings from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**list_all_video_sources**// ​ INTEGER, 
 + 
 +//​**dns_from_dhcp**// ​ INTEGER, 
 + 
 +//​**ntp_from_dhcp**// ​ INTEGER, 
 + 
 +//​**ntp_enable**// ​ INTEGER, 
 + 
 +//​**daylightsaving**// ​ INTEGER, 
 + 
 +//​**timezone**// ​ TEXT. 
 + 
 +//​**http_enable**// ​ INTEGER, 
 + 
 +//​**http_port**// ​ INTEGER, 
 + 
 +//​**https_enable**// ​ INTEGER, 
 + 
 +//​**https_port**// ​ INTEGER, 
 + 
 +//​**rtsp_enable**// ​ INTEGER, 
 + 
 +//​**rtsp_port**// ​ INTEGER, 
 + 
 +//​**discoverable**// ​ INTEGER, 
 + 
 +//​**ntp**// ​ TEXT. 
 + 
 +//​**dns_search**// ​ TEXT. 
 + 
 +**//​ptz_timeout//​** ​ TEXT. 
 + 
 +//**primary fixed_profile_max **//  INTEGER, 
 + 
 +//​**secondary fixed_profile_max**// ​ INTEGER, 
 + 
 +//​**en_persistent_audio**// ​ TEXT. 
 + 
 +//​**onvif_enable**// ​ BOOLEAN. 
 + 
 +//​**vmd_enable**// ​ BOOLEAN. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +ONVIF response: {"​daylightsaving":"​0","​discoverable":"​1","​dns_from_dhcp":"​1","​dns_search":"​localdomain","​en_persistent_audio":"​1","​fixed_profile_max":"​1","​http_enable":"​1","​http_port":"​80","​https_enable":"​0","​https_port":"​443","​list_all_video_sources":"​0","​ntp":"​pool.ntp.org","​ntp_enable":"​1","​ntp_from_dhcp":"​0","​onvif_enable":"​on","​ptz_timeout":​10,"​ret":"​0","​rtsp_enable":"​1","​rtsp_port":"​554","​timezone":"​TaipeiStandardTime-8","​vmd_enable":"​off"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== onvif_vmd ==== 
 + 
 +---- 
 + 
 +Get the ONVIF video motion detection and too darkness settings from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**vmd_sens**// ​ INTEGER, 
 + 
 +//​**vmd_zone_modify**// ​ TEXT. 
 + 
 +//​**vmd_vcrop_width**// ​ INTEGER. 
 + 
 +//​**vmd_vcrop_height**// ​ INTEGER. 
 + 
 +**//​vmd_vcrop_x//​** ​ INTEGER. 
 + 
 +**//​vmd_vcrop_y//​** ​ INTEGER. 
 + 
 +//​**td_enable**// ​ TEXT. 
 + 
 +//​**td_thresh**// ​ INTEGER. 
 + 
 +//​**vmd_td_channel**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +ONVIF VMD response: {"​ret":"​0","​td_enable":"​off","​td_thresh":​85,"​vmd_enable":"​off","​vmd_sens":​1,"​vmd_td_channel":"​CH1","​vmd_vcrop_height":​0,"​vmd_vcrop_width":​0,"​vmd_vcrop_x":​0,"​vmd_vcrop_y":​0,"​vmd_zone_modify":"​off"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== permission ==== 
 + 
 +---- 
 + 
 +Get the current permission settings for admin, operators, and users from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**username**// ​ TEXT, 
 + 
 +//​**userlevel**// ​ TEXT. 
 + 
 +//​**api_command**// ​ TEXT. 
 + 
 +//​**superadmin**// ​ TEXT. 
 + 
 +**admin** TEXT. 
 + 
 +//​**operator1**// ​ TEXT. 
 + 
 +//​**operator2**// ​ TEXT. 
 + 
 +//​**user1**// ​ TEXT. 
 + 
 +//​**user2**// ​ TEXT. 
 + 
 +//​**user3**// ​ TEXT. 
 + 
 +**//​anonymous//​ ** TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +PERMISSIONS response: {"​permissions":​{"​Z38021xImportHandler:​post":"​W","​Z3DebugHandler:​get":"​R","​Z3DownloadMediaHandler:​get":"​R","​Z3ExportHandler:​get":"​R","​Z3FWUploadHandler:​post":"​W","​Z3ImportHandler:​post":"​W","​Z3LogoHandler:​get":"?","​Z3LogsHandler:​get":"​R","​Z3RequestHandler:​get:​8021x":"?","​Z3RequestHandler:​get:​GetCronJobs":"​R","​Z3RequestHandler:​get:​GetNFSMount":"?","​Z3RequestHandler:​get:​aspect_info":"?","​Z3RequestHandler:​get:​boardinfo":"​R","​Z3RequestHandler:​get:​cam_state":"​R","​Z3RequestHandler:​get:​camera":"?","​Z3RequestHandler:​get:​camera_exposure":"?","​Z3RequestHandler:​get:​camera_monitor_mode":"?","​Z3RequestHandler:​get:​dec":"​R","​Z3RequestHandler:​get:​download":"?","​Z3RequestHandler:​get:​drs_tamarisk_settings":"?","​Z3RequestHandler:​get:​enc":"​R","​Z3RequestHandler:​get:​filepicker":"?","​Z3RequestHandler:​get:​fmt":"​W","​Z3RequestHandler:​get:​focusStepSize":"?","​Z3RequestHandler:​get:​fpga":"?","​Z3RequestHandler:​get:​history":"​R","​Z3RequestHandler:​get:​ipinfo":"​R","​Z3RequestHandler:​get:​onvif":"?","​Z3RequestHandler:​get:​onvif_vmd":"?","​Z3RequestHandler:​get:​permission":"​R","​Z3RequestHandler:​get:​ptz":"?","​Z3RequestHandler:​get:​ptz_preset":"?","​Z3RequestHandler:​get:​ptz_tour":"?","​Z3RequestHandler:​get:​snmp":"?","​Z3RequestHandler:​get:​ssl":"?","​Z3RequestHandler:​get:​stats":"?","​Z3RequestHandler:​get:​sys":"​R","​Z3RequestHandler:​get:​term":"?","​Z3RequestHandler:​get:​users":"​R","​Z3RequestHandler:​get:​video_group":"?","​Z3RequestHandler:​get:​wifi":"?","​Z3RequestHandler:​get:​zoomStepSize":"?","​Z3RequestHandler:​post:​AStreamStatus":"?","​Z3RequestHandler:​post:​AddChannel":"​W","​Z3RequestHandler:​post:​CameraControl:​SetColorPallette":"​W","​Z3RequestHandler:​post:​CameraControl:​ae_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​ae_mode_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​agc_filter":"​W","​Z3RequestHandler:​post:​CameraControl:​agc_midpoint":"​W","​Z3RequestHandler:​post:​CameraControl:​agc_type":"​W","​Z3RequestHandler:​post:​CameraControl:​auto_icr_disable":"​W","​Z3RequestHandler:​post:​CameraControl:​auto_icr_enable":"​W","​Z3RequestHandler:​post:​CameraControl:​autocal_disable":"​W","​Z3RequestHandler:​post:​CameraControl:​autocal_enable":"​W","​Z3RequestHandler:​post:​CameraControl:​backlight_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​backlight_off":"​W","​Z3RequestHandler:​post:​CameraControl:​backlight_on":"​W","​Z3RequestHandler:​post:​CameraControl:​black_hot":"​W","​Z3RequestHandler:​post:​CameraControl:​brightness":"​W","​Z3RequestHandler:​post:​CameraControl:​brightness_bias":"​W","​Z3RequestHandler:​post:​CameraControl:​brightness_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​cam_control_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​cam_custom_recall":"​W","​Z3RequestHandler:​post:​CameraControl:​cam_custom_reset":"​W","​Z3RequestHandler:​post:​CameraControl:​cam_custom_set":"​W","​Z3RequestHandler:​post:​CameraControl:​chroma_get_suppress":"​R","​Z3RequestHandler:​post:​CameraControl:​chroma_suppress":"​W","​Z3RequestHandler:​post:​CameraControl:​color_disable":"​W","​Z3RequestHandler:​post:​CameraControl:​color_enable":"​W","​Z3RequestHandler:​post:​CameraControl:​color_gain":"​W","​Z3RequestHandler:​post:​CameraControl:​color_get_gain":"​R","​Z3RequestHandler:​post:​CameraControl:​color_get_hue":"​R","​Z3RequestHandler:​post:​CameraControl:​color_hue":"​W","​Z3RequestHandler:​post:​CameraControl:​color_select":"​W","​Z3RequestHandler:​post:​CameraControl:​colorlut_arctic":"​W","​Z3RequestHandler:​post:​CameraControl:​colorlut_blackhot":"​W","​Z3RequestHandler:​post:​CameraControl:​colorlut_disable":"​W","​Z3RequestHandler:​post:​CameraControl:​colorlut_enable":"​W","​Z3RequestHandler:​post:​CameraControl:​colorlut_globow":"​W","​Z3RequestHandler:​post:​CameraControl:​colorlut_gradedfire":"​W","​Z3RequestHandler:​post:​CameraControl:​colorlut_hottest":"​W","​Z3RequestHandler:​post:​CameraControl:​colorlut_ironbow":"​W","​Z3RequestHandler:​post:​CameraControl:​colorlut_lava":"​W","​Z3RequestHandler:​post:​CameraControl:​colorlut_rainbow":"​W","​Z3RequestHandler:​post:​CameraControl:​colorlut_rainbow_hc":"​W","​Z3RequestHandler:​post:​CameraControl:​colorlut_whitehot":"​W","​Z3RequestHandler:​post:​CameraControl:​contrast_adjust_level":"​W","​Z3RequestHandler:​post:​CameraControl:​contrast_adjust_level_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​contrast_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​defog_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​defog_on_direct":"​W","​Z3RequestHandler:​post:​CameraControl:​display_off":"​W","​Z3RequestHandler:​post:​CameraControl:​display_on":"​W","​Z3RequestHandler:​post:​CameraControl:​display_on_off":"​W","​Z3RequestHandler:​post:​CameraControl:​do_ffc":"​W","​Z3RequestHandler:​post:​CameraControl:​dvo_set_output_format_ycbcr":"​W","​Z3RequestHandler:​post:​CameraControl:​dzoom_combine_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​dzoom_direct":"​W","​Z3RequestHandler:​post:​CameraControl:​dzoom_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​dzoom_mode_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​dzoom_off":"​W","​Z3RequestHandler:​post:​CameraControl:​dzoom_on":"​W","​Z3RequestHandler:​post:​CameraControl:​dzoom_separage_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​dzoom_separate_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​dzoom_stop":"​W","​Z3RequestHandler:​post:​CameraControl:​dzoom_super_res":"​W","​Z3RequestHandler:​post:​CameraControl:​dzoom_tele_var":"​W","​Z3RequestHandler:​post:​CameraControl:​dzoom_wide_var":"​W","​Z3RequestHandler:​post:​CameraControl:​dzoom_x1_max":"​W","​Z3RequestHandler:​post:​CameraControl:​e_pan_tilt_mode_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​e_pan_tilt_off":"​W","​Z3RequestHandler:​post:​CameraControl:​e_pan_tilt_on":"​W","​Z3RequestHandler:​post:​CameraControl:​eflip_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​eflip_off":"​W","​Z3RequestHandler:​post:​CameraControl:​eflip_on":"​W","​Z3RequestHandler:​post:​CameraControl:​expcomp_direct":"​W","​Z3RequestHandler:​post:​CameraControl:​expcomp_down":"​W","​Z3RequestHandler:​post:​CameraControl:​expcomp_mode_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​expcomp_off":"​W","​Z3RequestHandler:​post:​CameraControl:​expcomp_on":"​W","​Z3RequestHandler:​post:​CameraControl:​expcomp_pos_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​expcomp_reset":"​W","​Z3RequestHandler:​post:​CameraControl:​expcomp_up":"​W","​Z3RequestHandler:​post:​CameraControl:​ffc_period":"​W","​Z3RequestHandler:​post:​CameraControl:​ffc_temp_delta":"​W","​Z3RequestHandler:​post:​CameraControl:​ffc_warn_time":"​W","​Z3RequestHandler:​post:​CameraControl:​flicker_detection_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​flicker_reduction_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​flicker_reduction_off":"​W","​Z3RequestHandler:​post:​CameraControl:​flicker_reduction_on":"​W","​Z3RequestHandler:​post:​CameraControl:​focus_auto":"​W","​Z3RequestHandler:​post:​CameraControl:​focus_direct":"​W","​Z3RequestHandler:​post:​CameraControl:​focus_get_mode":"​R","​Z3RequestHandler:​post:​CameraControl:​focus_get_pos":"​R","​Z3RequestHandler:​post:​CameraControl:​focus_get_pos_meter":"​R","​Z3RequestHandler:​post:​CameraControl:​focus_manual":"​W","​Z3RequestHandler:​post:​CameraControl:​focus_near_limit":"​W","​Z3RequestHandler:​post:​CameraControl:​focus_near_limit_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​focus_set_pos_meter":"​W","​Z3RequestHandler:​post:​CameraControl:​focus_stop":"​W","​Z3RequestHandler:​post:​CameraControl:​focus_tele_std":"​W","​Z3RequestHandler:​post:​CameraControl:​focus_tele_var":"​W","​Z3RequestHandler:​post:​CameraControl:​focus_toggle":"​W","​Z3RequestHandler:​post:​CameraControl:​focus_wide_std":"​W","​Z3RequestHandler:​post:​CameraControl:​focus_wide_var":"​W","​Z3RequestHandler:​post:​CameraControl:​fpa_temp_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​gain":"​W","​Z3RequestHandler:​post:​CameraControl:​gain_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​gain_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​get_camera_framerate":"​R","​Z3RequestHandler:​post:​CameraControl:​get_camera_part_number":"​R","​Z3RequestHandler:​post:​CameraControl:​get_camera_serial_number":"​R","​Z3RequestHandler:​post:​CameraControl:​get_color_tables":"​R","​Z3RequestHandler:​post:​CameraControl:​get_colorlut_current":"​R","​Z3RequestHandler:​post:​CameraControl:​get_colorlut_state":"​R","​Z3RequestHandler:​post:​CameraControl:​get_fpa_temp_celsius":"​R","​Z3RequestHandler:​post:​CameraControl:​get_low_delay_mode":"​R","​Z3RequestHandler:​post:​CameraControl:​get_revision":"​R","​Z3RequestHandler:​post:​CameraControl:​get_sensor_part_number":"​R","​Z3RequestHandler:​post:​CameraControl:​get_sensor_serial_number":"​R","​Z3RequestHandler:​post:​CameraControl:​get_software_rev":"​R","​Z3RequestHandler:​post:​CameraControl:​get_tnr_state":"​R","​Z3RequestHandler:​post:​CameraControl:​get_zoom_limits_mm":"​R","​Z3RequestHandler:​post:​CameraControl:​high_sensitivity_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​high_sensitivity_off":"​W","​Z3RequestHandler:​post:​CameraControl:​high_sensitivity_on":"​W","​Z3RequestHandler:​post:​CameraControl:​hlc":"​W","​Z3RequestHandler:​post:​CameraControl:​hlc_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​hr_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​hr_off":"​W","​Z3RequestHandler:​post:​CameraControl:​hr_on":"​W","​Z3RequestHandler:​post:​CameraControl:​ice_disable":"​W","​Z3RequestHandler:​post:​CameraControl:​ice_enable":"​W","​Z3RequestHandler:​post:​CameraControl:​icr_auto_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​icr_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​icr_mode_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​icr_threshold_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​image_freeze_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​image_freeze_off":"​W","​Z3RequestHandler:​post:​CameraControl:​image_freeze_on":"​W","​Z3RequestHandler:​post:​CameraControl:​img_blackwhite_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​img_blackwhite_off":"​W","​Z3RequestHandler:​post:​CameraControl:​img_blackwhite_on":"​W","​Z3RequestHandler:​post:​CameraControl:​img_stabilizer_hold":"​W","​Z3RequestHandler:​post:​CameraControl:​img_stabilizer_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​img_stabilizer_level":"​W","​Z3RequestHandler:​post:​CameraControl:​img_stabilizer_level_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​img_stabilizer_off":"​W","​Z3RequestHandler:​post:​CameraControl:​img_stabilizer_on":"​W","​Z3RequestHandler:​post:​CameraControl:​iris":"​W","​Z3RequestHandler:​post:​CameraControl:​iris_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​lens_control_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​lens_get_temp":"​R","​Z3RequestHandler:​post:​CameraControl:​lr_reverse_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​lr_reverse_off":"​W","​Z3RequestHandler:​post:​CameraControl:​lr_reverse_on":"​W","​Z3RequestHandler:​post:​CameraControl:​min_shutter_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​min_shutter_limit":"​W","​Z3RequestHandler:​post:​CameraControl:​min_shutter_limit_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​min_shutter_off":"​W","​Z3RequestHandler:​post:​CameraControl:​min_shutter_on":"​W","​Z3RequestHandler:​post:​CameraControl:​mute_on_off":"​W","​Z3RequestHandler:​post:​CameraControl:​noise_2d3d":"​W","​Z3RequestHandler:​post:​CameraControl:​noise_2d3d_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​noise_reduction":"​W","​Z3RequestHandler:​post:​CameraControl:​noise_reduction_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​part_number_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​power_off":"​W","​Z3RequestHandler:​post:​CameraControl:​power_on":"​W","​Z3RequestHandler:​post:​CameraControl:​raw":"​W","​Z3RequestHandler:​post:​CameraControl:​reboot_camera":"​W","​Z3RequestHandler:​post:​CameraControl:​register_read":"​R","​Z3RequestHandler:​post:​CameraControl:​register_write":"​W","​Z3RequestHandler:​post:​CameraControl:​run_ffc":"​W","​Z3RequestHandler:​post:​CameraControl:​serial_number_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​set_low_delay_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​set_monitor_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​shutter":"​W","​Z3RequestHandler:​post:​CameraControl:​shutter_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​shutter_position":"​R","​Z3RequestHandler:​post:​CameraControl:​shutter_temp":"​R","​Z3RequestHandler:​post:​CameraControl:​shutter_temp_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​slow_shutter":"​W","​Z3RequestHandler:​post:​CameraControl:​slow_shutter_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​slow_shutter_limit_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​spot_display":"​W","​Z3RequestHandler:​post:​CameraControl:​spot_display_inquiry":"​W","​Z3RequestHandler:​post:​CameraControl:​spot_meter_data_advanced":"​W","​Z3RequestHandler:​post:​CameraControl:​spot_meter_data_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​spot_meter_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​spot_meter_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​spot_meter_pos_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​stable_zoom_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​stable_zoom_off":"​W","​Z3RequestHandler:​post:​CameraControl:​stable_zoom_on":"​W","​Z3RequestHandler:​post:​CameraControl:​tnr_disable":"​W","​Z3RequestHandler:​post:​CameraControl:​tnr_enable":"​W","​Z3RequestHandler:​post:​CameraControl:​version":"​R","​Z3RequestHandler:​post:​CameraControl:​version_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​visibility_enhancer_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​visibility_enhancer_off":"​W","​Z3RequestHandler:​post:​CameraControl:​visibility_enhancer_on":"​W","​Z3RequestHandler:​post:​CameraControl:​visibility_enhancer_params":"​W","​Z3RequestHandler:​post:​CameraControl:​visibility_enhancer_params_inquiry":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_auto_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_auto_trace_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_autotrace_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_get_bgain":"​R","​Z3RequestHandler:​post:​CameraControl:​wb_get_mode":"​R","​Z3RequestHandler:​post:​CameraControl:​wb_get_mode_name":"​R","​Z3RequestHandler:​post:​CameraControl:​wb_get_rgain":"​R","​Z3RequestHandler:​post:​CameraControl:​wb_indoor_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_manual_bgain_direct":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_manual_bgain_reset":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_manual_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_manual_rgain_direct":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_manual_rgain_reset":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_onepush_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_onepush_trigger":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_outdoor_auto_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_outdoor_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_sodium_lamp_auto_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_sodium_lamp_fixed_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​wb_sodium_lamp_outdoor_mode":"​W","​Z3RequestHandler:​post:​CameraControl:​white_hot":"​W","​Z3RequestHandler:​post:​CameraControl:​wide_dynamic_range_inquiry":"​R","​Z3RequestHandler:​post:​CameraControl:​wide_dynamic_range_off":"​W","​Z3RequestHandler:​post:​CameraControl:​wide_dynamic_range_on":"​W","​Z3RequestHandler:​post:​CameraControl:​zoom_direct":"​W","​Z3RequestHandler:​post:​CameraControl:​zoom_get_focal_length_mm":"​R","​Z3RequestHandler:​post:​CameraControl:​zoom_get_pos":"​R","​Z3RequestHandler:​post:​CameraControl:​zoom_stop":"​W","​Z3RequestHandler:​post:​CameraControl:​zoom_tele_std":"​W","​Z3RequestHandler:​post:​CameraControl:​zoom_tele_var":"​W","​Z3RequestHandler:​post:​CameraControl:​zoom_wide_std":"​W","​Z3RequestHandler:​post:​CameraControl:​zoom_wide_var":"​W","​Z3RequestHandler:​post:​DecoderStatus":"?","​Z3RequestHandler:​post:​DeleteChannel":"​W","​Z3RequestHandler:​post:​DeletePreset":"​W","​Z3RequestHandler:​post:​DisplayStatus":"?","​Z3RequestHandler:​post:​Dynamic:​analog_gain_db":"?","​Z3RequestHandler:​post:​Dynamic:​crop":"?","​Z3RequestHandler:​post:​Dynamic:​gop":"?","​Z3RequestHandler:​post:​Dynamic:​nfstrength":"?","​Z3RequestHandler:​post:​Dynamic:​pip_enable":"?","​Z3RequestHandler:​post:​Dynamic:​pip_location":"?","​Z3RequestHandler:​post:​Dynamic:​rotate_angle":"?","​Z3RequestHandler:​post:​Dynamic:​rotate_center_offset":"?","​Z3RequestHandler:​post:​Dynamic:​rotate_enable":"?","​Z3RequestHandler:​post:​Dynamic:​rotate_mode":"?","​Z3RequestHandler:​post:​Dynamic:​startmulticast":"?","​Z3RequestHandler:​post:​Dynamic:​stopmulticast":"?","​Z3RequestHandler:​post:​Dynamic:​telop_text":"?","​Z3RequestHandler:​post:​Dynamic:​translate_enable":"?","​Z3RequestHandler:​post:​Dynamic:​translate_offset":"?","​Z3RequestHandler:​post:​Dynamic:​vconflict":"?","​Z3RequestHandler:​post:​Dynamic:​vrate":"?","​Z3RequestHandler:​post:​Dynamic:​vratediv":"?","​Z3RequestHandler:​post:​EjectStorage":"​W","​Z3RequestHandler:​post:​EncoderStatus":"?","​Z3RequestHandler:​post:​ErasePresets":"​W","​Z3RequestHandler:​post:​ExportPresets":"​W","​Z3RequestHandler:​post:​FactoryReset":"​W","​Z3RequestHandler:​post:​GetCameraLink":"?","​Z3RequestHandler:​post:​GetCameraTab":"?","​Z3RequestHandler:​post:​GetStatus":"?","​Z3RequestHandler:​post:​GetVideoGroup":"?","​Z3RequestHandler:​post:​GetWifiPass":"?","​Z3RequestHandler:​post:​InsQuery":"​W","​Z3RequestHandler:​post:​LoadUser":"​W","​Z3RequestHandler:​post:​Login":"​W","​Z3RequestHandler:​post:​Logout":"​W","​Z3RequestHandler:​post:​Overlay":"?","​Z3RequestHandler:​post:​OverlayStop":"​W","​Z3RequestHandler:​post:​PtzAbsoluteMove":"​W","​Z3RequestHandler:​post:​PtzAuxiliary":"​W","​Z3RequestHandler:​post:​PtzClearPreset":"​W","​Z3RequestHandler:​post:​PtzContinuousMove":"​W","​Z3RequestHandler:​post:​PtzGotoPreset":"​W","​Z3RequestHandler:​post:​PtzNewTourSpot":"​W","​Z3RequestHandler:​post:​PtzPosition":"​W","​Z3RequestHandler:​post:​PtzPreset":"​W","​Z3RequestHandler:​post:​PtzQuery":"​W","​Z3RequestHandler:​post:​PtzRemoveTourSpot":"​W","​Z3RequestHandler:​post:​PtzSetPreset":"​W","​Z3RequestHandler:​post:​PtzStartTour":"​W","​Z3RequestHandler:​post:​PtzStop":"​W","​Z3RequestHandler:​post:​RemoveJobs":"​W","​Z3RequestHandler:​post:​RestartBoard":"​W","​Z3RequestHandler:​post:​SaveCamera":"?","​Z3RequestHandler:​post:​SaveCameraBoson":"?","​Z3RequestHandler:​post:​SaveCameraDRSTamarisk":"?","​Z3RequestHandler:​post:​SaveCameraLink":"?","​Z3RequestHandler:​post:​SaveCameraLx":"?","​Z3RequestHandler:​post:​SaveCameraTau":"?","​Z3RequestHandler:​post:​SaveJobs":"​W","​Z3RequestHandler:​post:​SavePresets":"​W","​Z3RequestHandler:​post:​SaveUser":"​W","​Z3RequestHandler:​post:​SetAPConfig":"?","​Z3RequestHandler:​post:​SetAdv":"?","​Z3RequestHandler:​post:​SetAudio":"​W","​Z3RequestHandler:​post:​SetCameraLink":"​W","​Z3RequestHandler:​post:​SetConsole":"?","​Z3RequestHandler:​post:​SetDDNSEnable":"​W","​Z3RequestHandler:​post:​SetDSCP":"?","​Z3RequestHandler:​post:​SetDebugLevel":"​W","​Z3RequestHandler:​post:​SetDevName":"​W","​Z3RequestHandler:​post:​SetDisplay":"?","​Z3RequestHandler:​post:​SetEncoder":"​W","​Z3RequestHandler:​post:​SetEncoderCameraControl":"​W","​Z3RequestHandler:​post:​SetFpga":"​W","​Z3RequestHandler:​post:​SetIp":"​W","​Z3RequestHandler:​post:​SetLoginLimit":"​W","​Z3RequestHandler:​post:​SetNFS":"​W","​Z3RequestHandler:​post:​SetNMEAEnable":"?","​Z3RequestHandler:​post:​SetOnvif":"​W","​Z3RequestHandler:​post:​SetOnvifVMD":"​W","​Z3RequestHandler:​post:​SetRMF":"​W","​Z3RequestHandler:​post:​SetRTSP":"​W","​Z3RequestHandler:​post:​SetSNTP":"​W","​Z3RequestHandler:​post:​SetStartLogs":"​W","​Z3RequestHandler:​post:​SetStopLogs":"​W","​Z3RequestHandler:​post:​SetTermSrvEnable":"?","​Z3RequestHandler:​post:​SetViVpssMode":"?","​Z3RequestHandler:​post:​SetVideoGroup":"​W","​Z3RequestHandler:​post:​SetViewport":"?","​Z3RequestHandler:​post:​SetWifiAP":"?","​Z3RequestHandler:​post:​SetZFinderEnable":"​W","​Z3RequestHandler:​post:​SourceStatus":"?","​Z3RequestHandler:​post:​StartChannel":"​W","​Z3RequestHandler:​post:​StartMTS":"​W","​Z3RequestHandler:​post:​StopChannel":"​W","​Z3RequestHandler:​post:​StopMTS":"​W","​Z3RequestHandler:​post:​StreamStatus":"?","​Z3RequestHandler:​post:​TempStatus":"?","​Z3RequestHandler:​post:​UpdatePtz":"?","​Z3RequestHandler:​post:​UpdatePtzPreset":"​W","​Z3RequestHandler:​post:​UpdatePtzTourSpots":"​W","​Z3RequestHandler:​post:​UpdateTerm":"​W","​Z3RequestHandler:​post:​UpdateTermForFpga":"​W","​Z3RequestHandler:​post:​ViscaPort":"​x","​Z3RequestHandler:​post:​camera_inquiry":"?","​Z3RequestHandler:​post:​fmt_media":"​W","​Z3RequestHandler:​post:​update_require_web_login":"​W","​Z3RequestHandler:​post:​user_add":"​W","​Z3RequestHandler:​post:​user_remove":"​W","​Z3RequestHandler:​post:​user_update_level":"​W","​Z3RequestHandler:​post:​user_update_password":"​W","​Z3SSLImportHandler:​post":"​W","​Z3SnapshotHandler:​get":"​R","​Z3TabHandler:​get":"​-","​Z3UploadHandler:​post":"​W","​Z3WebSocketHandler:​get":"​R"​},"​ret":"​0","​status":"​OK","​userlevel":​0,"​username":"​admin"​}  
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== ptz ==== 
 + 
 +---- 
 + 
 +Get the current PTZ settings from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**token**// ​ TEXT, 
 + 
 +**//​node//​** ​ TEXT. 
 + 
 +//​**name**// ​ TEXT. 
 + 
 +//​**enabled**// ​ BOOLEAN. 
 + 
 +//​**pelcoaddr**// ​ INTEGER. 
 + 
 +//​**tcpport**// ​ INTEGER. 
 + 
 +//​**ptztype**// ​ TEXT. 
 + 
 +//​**flip**// ​ TEXT. 
 + 
 +//​**pos**// ​ TEXT. 
 + 
 +//​**maxtilt**// ​ INTEGER. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +PTZ response: {"​data":​[{"​id":​1,"​values":​{"​db_videosource":"​CAMERA","​enabled":​1,"​flip":"​none","​maxtilt":​90,"​name":"​videoin1","​pelcoaddr":​1,"​pos":"​simulated","​ptztype":"​relative","​rowid":​1,"​tcpport":​2000,"​token":"​ptz"​}},​{"​id":​2,"​values":​{"​db_videosource":"​CAMERA2","​enabled":​1,"​flip":"​none","​maxtilt":​90,"​name":"​videoin2","​pelcoaddr":​2,"​pos":"​simulated","​ptztype":"​relative","​rowid":​2,"​tcpport":​2000,"​token":"​ptz2"​}}],"​metadata":​[{"​datatype":"​text","​editable":​false,"​label":"​Video Source","​name":"​db_videosource"​},​{"​datatype":"​text","​editable":​false,"​label":"​ONVIF Token","​name":"​token"​},​{"​datatype":"​text","​editable":​true,"​label":"​ONVIF Name","​name":"​name"​},​{"​datatype":"​bool","​editable":​true,"​label":"​Enabled","​name":"​enabled"​},​{"​datatype":"​integer","​editable":​true,"​label":"​RS485 Address","​name":"​pelcoaddr"​},​{"​datatype":"​integer","​editable":​true,"​label":"​TCP Port","​name":"​tcpport"​},​{"​datatype":"​text","​editable":​true,"​label":"​Type","​name":"​ptztype"​},​{"​datatype":"​text","​editable":​true,"​label":"​Flip","​name":"​flip"​},​{"​datatype":"​text","​editable":​true,"​label":"​Position","​name":"​pos"​},​{"​datatype":"​integer","​editable":​true,"​label":"​Max Tilt","​name":"​maxtilt"​}],"​ret":"​0"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== ptz_preset ==== 
 + 
 +---- 
 + 
 +Get the PTZ preseting values from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**profiletoken**// ​ TEXT, 
 + 
 +//​**token**// ​ TEXT. 
 + 
 +//​**name**// ​ TEXT. 
 + 
 +//​**pan**// ​ FLOAT. 
 + 
 +//​**tilt**// ​ FLOAT. 
 + 
 +//​**zoom**// ​ FLOAT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +PTZ Preset response: {"​data":​[{"​id":​1,"​values":​{"​action":"​blank","​name":"​home","​profiletoken":"​profile1","​rowid":​1,"​token":"​1"​}}],"​metadata":​[{"​datatype":"​text","​editable":​false,"​label":"​Profile","​name":"​profiletoken"​},​{"​datatype":"​text","​editable":​false,"​label":"​PresetID","​name":"​token"​},​{"​datatype":"​text","​editable":​true,"​label":"​Name","​name":"​name"​},​{"​datatype":"​html","​editable":​false,"​label":"​Action","​name":"​action"​}],"​ret":​0} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== ptz_tour ==== 
 + 
 +---- 
 + 
 +Get the PTZ tour information from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**ProfileToken**// ​ TEXT, 
 + 
 +//​**PresetTourToken**// ​ TEXT. 
 + 
 +//​**name**// ​ TEXT. 
 + 
 +//​**autostart**// ​ BOOLEAN. 
 + 
 +**//​RecurringTime//​** ​ INTEGER. 
 + 
 +//​**RecurringDuration**// ​ TEXT. 
 + 
 +**//​PresetTourDirection//​** ​ INTEGER. 
 + 
 +//​**RandomPresetOrder**// ​ BOOLEAN. 
 + 
 +//​**ProfileToken**// ​ TEXT. 
 + 
 +//​**PresetTourToken**// ​ TEXT. 
 + 
 +**//​RowIndex //**  INTEGER. 
 + 
 +//​**PresetDetailToken**// ​ TEXT. 
 + 
 +//​**PresetDetailHome**// ​ BOOLEAN. 
 + 
 +//​**StayTime**// ​ TEXT. 
 + 
 +//​**pan**// ​ FLOAT. 
 + 
 +//​**tilt**// ​ FLOAT. 
 + 
 +//​**zoom**// ​ FLOAT. 
 + 
 +//​**pspeed**// ​ FLOAT. 
 + 
 +//​**tspeed**// ​ FLOAT. 
 + 
 +//​**zspeed**// ​ FLOAT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +PTZ tour response: {"​preset":​{"​data":​[{"​id":​1,"​values":​{"​name":"​home","​pan":​0,"​profiletoken":"​profile1","​rowid":​1,"​tilt":​0,"​token":"​1","​zoom":​0}}],"​metadata":​[{"​datatype":"​text","​editable":​true,"​label":"​Profiletoken","​name":"​profiletoken"​},​{"​datatype":"​text","​editable":​true,"​label":"​Token","​name":"​token"​},​{"​datatype":"​text","​editable":​true,"​label":"​Name","​name":"​name"​},​{"​datatype":"​real","​editable":​true,"​label":"​Pan","​name":"​pan"​},​{"​datatype":"​real","​editable":​true,"​label":"​Tilt","​name":"​tilt"​},​{"​datatype":"​real","​editable":​true,"​label":"​Zoom","​name":"​zoom"​}]},"​ret":​0,"​spot":​{"​data":​[],"​metadata":​[{"​datatype":"​text","​editable":​false,"​label":"​Profile","​name":"​ProfileToken"​},​{"​datatype":"​text","​editable":​false,"​label":"​Tour","​name":"​PresetTourToken"​},​{"​datatype":"​text","​editable":​true,"​label":"​Preset","​name":"​PresetDetailToken"​},​{"​datatype":"​text","​editable":​true,"​label":"​StayTime","​name":"​StayTime"​},​{"​datatype":"​integer","​editable":​false,"​label":"​RowIndex","​name":"​RowIndex"​},​{"​datatype":"​html","​editable":"​false","​label":"​Action","​name":"​action"​}]},"​tour":​{"​data":​[{"​id":​1,"​values":​{"​PresetTourToken":"​1","​ProfileToken":"​profile1","​name":"​tour1","​rowid":​1}},​{"​id":​2,"​values":​{"​PresetTourToken":"​2","​ProfileToken":"​profile1","​name":"​tour2","​rowid":​2}},​{"​id":​3,"​values":​{"​PresetTourToken":"​3","​ProfileToken":"​profile1","​name":"​tour3","​rowid":​3}},​{"​id":​4,"​values":​{"​PresetTourToken":"​4","​ProfileToken":"​profile1","​name":"​tour4","​rowid":​4}},​{"​id":​5,"​values":​{"​PresetTourToken":"​5","​ProfileToken":"​profile1","​name":"​tour5","​rowid":​5}},​{"​id":​6,"​values":​{"​PresetTourToken":"​6","​ProfileToken":"​profile1","​name":"​tour6","​rowid":​6}},​{"​id":​7,"​values":​{"​PresetTourToken":"​7","​ProfileToken":"​profile1","​name":"​tour7","​rowid":​7}},​{"​id":​8,"​values":​{"​PresetTourToken":"​8","​ProfileToken":"​profile1","​name":"​tour8","​rowid":​8}},​{"​id":​9,"​values":​{"​PresetTourToken":"​9","​ProfileToken":"​profile1","​name":"​tour9","​rowid":​9}},​{"​id":​10,"​values":​{"​PresetTourToken":"​10","​ProfileToken":"​profile1","​name":"​tour10","​rowid":​10}},​{"​id":​11,"​values":​{"​PresetTourToken":"​11","​ProfileToken":"​profile1","​name":"​tour11","​rowid":​11}},​{"​id":​12,"​values":​{"​PresetTourToken":"​12","​ProfileToken":"​profile1","​name":"​tour12","​rowid":​12}},​{"​id":​13,"​values":​{"​PresetTourToken":"​13","​ProfileToken":"​profile1","​name":"​tour13","​rowid":​13}},​{"​id":​14,"​values":​{"​PresetTourToken":"​14","​ProfileToken":"​profile1","​name":"​tour14","​rowid":​14}},​{"​id":​15,"​values":​{"​PresetTourToken":"​15","​ProfileToken":"​profile1","​name":"​tour15","​rowid":​15}},​{"​id":​16,"​values":​{"​PresetTourToken":"​16","​ProfileToken":"​profile1","​name":"​tour16","​rowid":​16}}],"​metadata":​[{"​datatype":"​text","​editable":​false,"​label":"​profile1","​name":"​ProfileToken"​},​{"​datatype":"​text","​editable":​false,"​label":"​TourID","​name":"​PresetTourToken"​},​{"​datatype":"​text","​editable":​true,"​label":"​Name","​name":"​name"​}]}} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== snmp ==== 
 + 
 +---- 
 + 
 +Get the Simple Network Management Protocol values from the Database 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**power_trap_en**// ​ INTEGER, 
 + 
 +//​**input_loss_trap_en**// ​ INTEGER. 
 + 
 +//​**input_recover_trap_en**// ​ INTEGER. 
 + 
 +//​**temp_high_trap_en**// ​ INTEGER. 
 + 
 +//​**temp_recover_trap_en**// ​ INTEGER. 
 + 
 +//​**high_temp**// ​ INTEGER. 
 + 
 +//​**nominal_temp**// ​ INTEGER. 
 + 
 +//​**high_temp_suppress**// ​ INTEGER. 
 + 
 +//​**nominal_temp_suppress**// ​ INTEGER. 
 + 
 +//​**trap_hosts**// ​ INTEGER. 
 + 
 +//​**snmp_v3_en** // INTEGER. 
 + 
 +//​**snmp_v3_user**// ​ TEXT. 
 + 
 +//​**snmp_v3_passwd**// ​ TEXT. 
 + 
 +//​**snmp_v3_usrpro**// ​ TEXT. 
 + 
 +**//​snmp_v3_encrypt//​** ​ INTEGER. 
 + 
 +**//​snmp_v3_encrypt_passwd//​** ​ TEXT. 
 + 
 +**//​snmp_v3_encpro//​** ​ TEXT. 
 + 
 +**//​snmp_v3_engineid//​** ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +SNMP response: {"​high_temp":​80,"​high_temp_suppress":​30,"​input_loss_trap_en":​0,"​input_recover_trap_en":​0,"​nominal_temp":​60,"​nominal_temp_suppress":​30,"​power_trap_en":​0,"​ret":"​0","​snmp_v3_en":​0,"​snmp_v3_encpro":"​des","​snmp_v3_encrypt":​0,"​snmp_v3_encrypt_passwd":"​z3password","​snmp_v3_engineid":"","​snmp_v3_passwd":"​z3password","​snmp_v3_user":"​z3user","​snmp_v3_usrpro":"​md5","​temp_high_trap_en":​0,"​temp_recover_trap_en":​0,"​trap_hosts":"​192.168.0.6"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== ssl ==== 
 + 
 +---- 
 + 
 +Get the Secure Socket Layer settings from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**https_enable**// ​ TEXT, 
 + 
 +//​**http_enable**// ​ TEXT. 
 + 
 +//​**https_port**// ​ INTEGER. 
 + 
 +//​**http_port**// ​ INTEGER. 
 + 
 +//​**cert_status**// ​ TEXT. 
 + 
 +**//​key_status//​** ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +SSL response: {"​cert_status":"​Unavailable","​http_enable":"​on","​http_port":​80,"​https_enable":"​off","​https_port":​443,"​key_status":"​Unavailable","​ret":"​0"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== stats ==== 
 + 
 +---- 
 + 
 +Get the available memory infromation from the device. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**mem_free_kb**// ​ TEXT, 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +STATUS response: {"​astream_status_str":"​\tChannel 1 Codec fdk_aaclc Samplerate 48000 Input MIC Frames 546732 \tChannel 11 Codec fdk_aaclc Samplerate 48000 Input MIC Frames 545860 +OK","​encoder_status_str":" ​  *** Encode Bitstream Received Statistics ***    CH | Bitrate (Kbps) | Actual Bitrate | FPS  | Actual FPS | Key-frame FPS | Width | Height ​  ​------------------------------------------------------------------------------------------------------------ ​  1 |        6000.00 |        6006.33 | 29.97 |    29.97 |           0.5 |  3840 |   ​2160 ​ | +OK","​mem_free_kb":​670856,"​ret":"​0","​source_status_str":"​+CAMERA 3840x2160p 29.97 fps\n","​status":"​OK","​stream_status_str":"​Channel 1 Codec H265-(HEVC) URL rtsp Frames 348194 +OK","​temp_status_str":"​+LENS 29 +CPU 38.0 +OK"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== sys ==== 
 + 
 +---- 
 + 
 +Get the current system settings from the Database and the ip information from the device. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**local_ip**// ​ TEXT, 
 + 
 +//​**local_netmask**// ​ TEXT. 
 + 
 +//​**preset**// ​ TEXT. 
 + 
 +//​**enc_channels**// ​ TEXT. 
 + 
 +//​**opmode**// ​ TEXT. 
 + 
 +//​**username**// ​ TEXT. 
 + 
 +//​**userlevel**// ​ TEXT. 
 + 
 +//​**do_autostart**// ​ BOOLEAN. 
 + 
 +//​**syspassword**// ​ TEXT. 
 + 
 +//​**session_id**// ​ TEXT. 
 + 
 +//​**disp_std** // TEXT. 
 + 
 +//​**disp_std2**// ​ TEXT. 
 + 
 +//​**disp_input**// ​ TEXT. 
 + 
 +//​**disp_mode**// ​ TEXT. 
 + 
 +//​**disp_layout**// ​ TEXT. 
 + 
 +**//​enc_adv_setting//​** ​ TEXT. 
 + 
 +**//​enc_vivpss_mode_enable//​** ​ TEXT. 
 + 
 +//​**enable_sntp**// ​ TEXT. 
 + 
 +//​**sntp_servers**// ​ TEXT. 
 + 
 +//​**enable_snmp**// ​ TEXT. 
 + 
 +//​**sysdevicename**// ​ TEXT. 
 + 
 +//​**timezone**// ​ TEXT. 
 + 
 +//​**timezone_name**// ​ TEXT. 
 + 
 +//​**termserve_remote_enable**// ​ TEXT. 
 + 
 +//​**termserve_shared_enable**// ​ TEXT. 
 + 
 +//​**zfinder_enable**// ​ TEXT. 
 + 
 +//​**diff_serve**// ​ INTEGER. 
 + 
 +//​**enable_ptp**// ​ TEXT. 
 + 
 +//​**ptp_role**// ​ TEXT. 
 + 
 +//​**nmea_enable**// ​ TEXT. 
 + 
 +//​**nfs_enable**// ​ TEXT. 
 + 
 +//​**nfs_server **//  TEXT. 
 + 
 +//​**nfs_server_root**// ​ TEXT. 
 + 
 +//​**ddns_enable**// ​ TEXT. 
 + 
 +//​**ddns_provider**// ​ TEXT. 
 + 
 +//​**ddns_username**// ​ TEXT. 
 + 
 +//​**ddns_password**// ​ TEXT. 
 + 
 +//​**rtspd_port**// ​ INTEGER. 
 + 
 +//​**rtspd_timeout**// ​ INTEGER. 
 + 
 +//​**maxlogin**// ​ INTEGER. 
 + 
 +//​**login_window**// ​ INTEGER. 
 + 
 +//​**lockout_interval**// ​ INTEGER. 
 + 
 +//​**login_timeout**// ​ INTEGER. 
 + 
 +//​**require_web_login**// ​ BOOLEAN. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +SYSTEM response: {"​ANALOG_analog_gain_db":​7,"​MICL_analog_gain_db":​-12,"​MIC_analog_gain_db":​7,"​console_enable":"​on","​ddns_enable":"​off","​ddns_hostname":"","​ddns_password":"","​ddns_provider":"​freedns","​ddns_username":"","​diff_serve":​0,"​disp_input":"​primary","​disp_layout":"​1x1","​disp_mode":"​ultrahd","​disp_std":"​auto","​disp_std2":"​auto","​do_autostart":​1,"​enable_ptp":"​false","​enable_snmp":"​false","​enable_sntp":"​true","​enc_adv_setting":"​off","​enc_vivpss_mode_enable":"​off","​local_ip":"​192.168.10.127","​local_netmask":"​255.255.255.0","​lockout_interval":​900,"​login_timeout":​900,"​login_window":​900,"​maxlogin":​3,"​nfs_enable":"​off","​nfs_server":"​192.168.1.6","​nfs_server_root":"/​c/​media","​nmea_enable":"​off","​pe0":"​encoder","​pe1":"","​pe2":"","​pe3":"","​pe4":"","​pe5":"","​pe6":"","​pe7":"","​pe8":"","​ptp_role":"​auto","​require_web_login":​0,"​ret":"​0","​rtspd_port":​554,"​rtspd_timeout":​60,"​session_id":"​---","​sntp_servers":"​pool.ntp.org","​sysdevicename":"​Z3Cam","​syspassword":"","​termserve_remote_enable":"​on","​termserve_shared_enable":"​on","​timezone":"​CST6CDT,​M3.2.0,​M11.1.0","​timezone_name":"​America/​Chicago","​userlevel":​0,"​username":"​admin","​wifi_exists":​false,"​zfinder_enable":"​on"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== term ==== 
 + 
 +---- 
 + 
 +Get the remote terminal information from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +**//​term_mode//​** ​ TEXT, 
 + 
 +**//​term_protocol//​** ​ TEXT. 
 + 
 +//​**term_localport**// ​ TEXT. 
 + 
 +//​**term_servaddr**// ​ TEXT. 
 + 
 +//​**term_servport**// ​ TEXT. 
 + 
 +**//​term_data_bits//​** ​ TEXT. 
 + 
 +//​**term_parity**// ​ TEXT. 
 + 
 +//​**term_stop_bits**// ​ TEXT. 
 + 
 +//​**term_baudrate**// ​ TEXT. 
 + 
 +**//​term_devicefile//​** ​ TEXT. 
 + 
 +//​**term_function**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +TERM response: {"​data":​[{"​id":​1,"​values":​{"​rowid":​1,"​term_baudrate":"​2400","​term_data_bits":"​8","​term_devicefile":"/​dev/​ttyS4","​term_function":"​rs485","​term_localport":"​2000","​term_parity":"​None","​term_stop_bits":"​1"​}},​{"​id":​2,"​values":​{"​rowid":​2,"​term_baudrate":"​9600","​term_data_bits":"​8","​term_devicefile":"/​dev/​ttyS2","​term_function":"​camera1_visca","​term_localport":"​1000","​term_parity":"​None","​term_stop_bits":"​1"​}},​{"​id":​3,"​values":​{"​rowid":​3,"​term_baudrate":"​9600","​term_data_bits":"​8","​term_devicefile":"/​dev/​ttyS3","​term_function":"​off","​term_localport":"​1001","​term_parity":"​None","​term_stop_bits":"​1"​}},​{"​id":​4,"​values":​{"​rowid":​4,"​term_baudrate":"​115200","​term_data_bits":"​8","​term_devicefile":"/​dev/​ttyS1","​term_function":"​user","​term_localport":"​1500","​term_parity":"​None","​term_stop_bits":"​1"​}},​{"​id":​5,"​values":​{"​rowid":​5,"​term_baudrate":"​115200","​term_data_bits":"​8","​term_devicefile":"/​dev/​ttyS0","​term_function":"​console","​term_localport":"​1800","​term_parity":"​None","​term_stop_bits":"​1"​}}],"​metadata":​[{"​datatype":"​text","​editable":​true,"​label":"​Serial Port","​name":"​term_devicefile"​},​{"​datatype":"​text","​editable":​true,"​label":"​Baud Rate","​name":"​term_baudrate"​},​{"​datatype":"​text","​editable":​true,"​label":"​Data Bits","​name":"​term_data_bits"​},​{"​datatype":"​text","​editable":​true,"​label":"​Parity","​name":"​term_parity"​},​{"​datatype":"​text","​editable":​true,"​label":"​Stop Bits","​name":"​term_stop_bits"​},​{"​datatype":"​text","​editable":​true,"​label":"​Function","​name":"​term_function"​},​{"​datatype":"​text","​editable":​true,"​label":"​TCP Port","​name":"​term_localport"​}],"​ret":"​0"​} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== users ==== 
 + 
 +---- 
 + 
 +Get the ONVIF user information and the permission level from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**Name**// ​ TEXT, 
 + 
 +//​**Level**// ​ INTEGER. 
 + 
 +//​**Password**// ​ TEXT. 
 + 
 +//​**Password_MD5**// ​ TEXT. 
 + 
 +//​**Password_SHA256**// ​ TEXT. 
 + 
 +//​**Password_SHA512_256**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +USERS response: {"​data":​[{"​id":​1,"​values":​{"​Level":"​0","​Name":"​admin","​action":"​blank","​rowid":​1}},​{"​id":​2,"​values":​{"​Level":"​7","​Name":"​guest","​action":"​blank","​rowid":​2}}],"​metadata":​[{"​datatype":"​text","​editable":​false,"​label":"​Name","​name":"​Name"​},​{"​datatype":"​text","​editable":​true,"​label":"​Level","​name":"​Level"​},​{"​datatype":"​html","​editable":​false,"​label":"​Action","​name":"​action"​}],"​ret":​0} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== video_group ==== 
 + 
 +---- 
 + 
 +Get the current video group settings from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the channel number. The default is Camera 1. Select between connected cameras. Possible values: 1 = Camera 1, 2 = Camera 2. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**vgroup**// ​ INTEGER. 
 + 
 +**//​crop_enable//​** ​ TEXT. 
 + 
 +**//​crop_width//​** ​ INTEGER. 
 + 
 +**//​crop_height//​** ​ INTEGER. 
 + 
 +**//​crop_x//​** ​ INTEGER. 
 + 
 +**//​crop_y//​** ​ INTEGER. 
 + 
 +//​**nr_enable**// ​ TEXT. 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Video Group response: {"​crop_enable":"​off","​crop_height":​0,"​crop_width":​0,"​crop_x":​0,"​crop_y":​0,"​nr_enable":"​off","​ret":"​0","​vgroup":​1} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +==== wifi ==== 
 + 
 +---- 
 + 
 +Get the Wifi details from the device and wifi client information from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**networks**// ​ TEXT, 
 + 
 +//​**cur_network**// ​ TEXT, 
 + 
 +//​**cur_pass**// ​ TEXT, 
 + 
 +//​**ap_pass**// ​ TEXT, 
 + 
 +//​**ap_pass_en **//  BOOLEAN. 
 + 
 +//​**ap_ssid**// ​ TEXT, 
 + 
 +**//​wifi_client_local_ip//​** ​ TEXT, 
 + 
 +//​**wifi_client_local_netmask**// ​ TEXT. 
 + 
 +//​**wifi_client_default_gw**// ​ TEXT. 
 + 
 +//​**wifi_client_use_dhcp**// ​ BOOLEAN. 
 + 
 +---- 
 + 
 +==== zoomStepSize ==== 
 + 
 +---- 
 + 
 +Get the current camera zoom step values from the Database. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +//​**chn**// ​ Get the channel number. The default is Camera 1. Select between connected cameras. Possible values: 1 = Camera 1, 2 = Camera 2. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below 
 + 
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//​**zoom_step_size**// ​ INTEGER, 
 + 
 +---- 
 + 
 +=== Command to execute: ​ === 
 + 
 +<​code>​ 
 + 
 +python3 status_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +=== Example output: === 
 + 
 +<​code>​ 
 + 
 +Zoom Step Size response: {"​ret":"​0","​size":​1} 
 + 
 +</​code>​ 
 + 
 +---- 
 + 
 +====== File Upload for MFR or UPD Image Control ====== 
 + 
 +===== Upload Image (POST) ===== 
 + 
 +---- 
 + 
 +Upload the z3 image for e.g. (z3-30-0139-mfr.img or z3-30-0139-upd.img) in the z3 device. 
 + 
 +Before uploading the new image, it checks, whether the device has enough free memory or not and removes the coredump files. If the image is *mfr.img then it removes the default database from the data partition. If its *upd.img then it will not remove the database values. 
 + 
 +Note:\\ 
 +It takes approximately 5 minutes to update; DO NOT SEND ANY OTHER API Commands after uploading the image for at least 5 minutes. (time.sleep(300) or equivalent in scripts) 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +**//​img_file//​** ​ Get the file name which needs to be flashed in the z3 device. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +Flash the image and reboot the device. 
 + 
 +Note:\\ 
 +It takes approximately 5 minutes to update; DO NOT SEND ANY OTHER API Commands after uploading the image for at least 5 minutes. (time.sleep(300) or equivalent in scripts) 
 + 
 +---- 
 + 
 +====== Download File and Remove File Control ====== 
 + 
 +See **download_remove** to remove files from the **Generic Actions (POST) **action 
 +===== Download Media (GET) ===== 
 + 
 +<​code>​ 
 +http://<​ENCODER_IP>/​download_media.cgi?​mediafile=/​location/​filename 
 + 
 +</​code>​ 
 + 
 +For e.g. 
 + 
 +<​code>​ 
 +http://<​ENCODER_IP>/​download_media.cgi?​mediafile=/​media/​sda1/​MOV1_000001.mp4 
 + 
 +</​code>​ 
 + 
 +=====   ​===== 
 + 
 +---- 
 + 
 +Download the media file. If the output format is mp4 or TS file, then only z3 device allows downloading the files. Also provides the option for deleting the file. 
 + 
 +=== Parameters: === 
 + 
 +---- 
 + 
 +**//​mediafile//​** ​ Get the media file name. 
 +=== Returns: === 
 + 
 +---- 
 + 
 +JSON formatted table with values below. 
 + 
 +ret Custom return code of the HTTP POST request. 0 on success, -1 on failure. 
 + 
 +//**File Name**// ​ Name of the download file name . 
 + 
 +//**File Size**// ​ Size of the download file name. 
 + 
 +//**Last Modified**// ​ Last modified the file date and time. 
 + 
 +---- 
 + 
 +===== download.html to get list of downloadable files ===== 
 + 
 +<​code>​ 
 +http://<​ENCODER_IP>/​download.html?​chn=1 
 + 
 +</code> 
 + 
 +chn** =[1,​2,​3,​4]** 
 + 
 +List the download content. The content will be either .mp4 or .ts file format.
  
 ===== Encoder Actions (POST) ===== ===== Encoder Actions (POST) =====
Line 1005: Line 6952:
 new_cfg['​action'​] = '​SetEncoder'​ new_cfg['​action'​] = '​SetEncoder'​
 for key, value in enc_cfg_json.iteritems():​ for key, value in enc_cfg_json.iteritems():​
-   print "key = {} value = {}"​.format(key,​value) +print "key = {} value = {}"​.format(key,​value) 
-   ​new_idx = "​enc_{}_{}"​.format(channel,​key) +new_idx = "​enc_{}_{}"​.format(channel,​key) 
-   ​print "​setting {} to {}"​.format(new_idx,​value) +print "​setting {} to {}"​.format(new_idx,​value) 
-   ​new_cfg[new_idx] = value+new_cfg[new_idx] = value
  
 print new_cfg print new_cfg
Line 1015: Line 6962:
 </​code>​ </​code>​
  
-===== Reading Statistics ​=====+===== snapshot.cgi Control ​===== 
 + 
 +<​code>​ 
 +http://<​ENCODER_IP>/​snapshot.cgi?​size=3840x2160&​quality=100 
 + 
 +http://<​ENCODER_IP>/​snapshot.cgi?​chn=1&​size=1280x720&​quality=80 
 + 
 +</​code>​ 
 + 
 +valid options are: 
 + 
 +quality **=[20-100]**
  
-Python example of updating and reading encoder statistics:+* *size** =[any supported valid resolution]**
  
 +chn** =[1,​2,​3,​4]**
 +<​code>​
 +quality** =[0-100] supported resolutions are: 4K Models Only 3840×2160
 +2560×1440 4K and HD Models 1920×1080
 +1440×1080
 +1280×1024
 +1280×720
 +1024×768
 +960×720
 +1024×576
 +800×600
 +720×576
 +704×576
 +720×480
 +640×512
 +640×480
 +640×360
 +352×576
 +420×380
 +352×288
 +352×240
 +336×256
 +320×240
 +320×180 **
 +
 +</​code>​
 +
 +
 +===== Reading Statistics =====
 +
 +**Python example of updating and reading encoder statistics: **
 <​code>​ <​code>​
 import requests, json, sys import requests, json, sys
 server_url='​http://​192.168.0.120/​cgi-bin/​control.cgi'​ server_url='​http://​192.168.0.120/​cgi-bin/​control.cgi'​
  
-requests.post(server_url, ​data={'​action'​ : '​EncoderStatus'​}) +requests.post(server_url,​ {'​action':​ '​EncoderStatus'​} ) 
-requests.post(server_url, ​data={'​action'​ : '​StreamStatus'​}) +requests.post(server_url,​ {'​action':​ '​StreamStatus'​} ​ 
-requests.post(server_url, ​data={'​action'​ : '​AStreamStatus'​}) +requests.post(server_url,​ {'​action':​ '​AStreamStatus'​} ) 
-requests.post(server_url, ​data={'​action'​ : '​SourceStatus'​}) +requests.post(server_url,​ {'​action':​ '​SourceStatus'​} ​ 
-requests.post(server_url, ​data={'​action'​ : '​TempStatus'​})+requests.post(server_url,​ {'​action':​ '​TempStatus'​} ​ )
  
-print requests.get(server_url,​ params='​ctrl=stats&​chn='​).json()+print requests.get(server_url,​ params='​ctrl=stats&​chn=null'​).json()
  
 </​code>​ </​code>​
  
-Example output: +**Example output: ​**
 <​code>​ <​code>​
 {u'​status':​ u'​OK',​ {u'​status':​ u'​OK',​
- u'​astream_status_str':​ u'​\tChannel ​Codec fdk_aaclc Frames ​8998  ​OK',​ +u'​astream_status_str':​ u'​\tChannel ​Codec fdk_aaclc ​Samplerate 48000 Input MICL Frames ​32287820 ​ ​OK',​ 
- ​u'​temp_status_str':​ u' LENS 39  ​FPGA ​42  CPU 42  ​OK',​ +u'​temp_status_str':​ u' LENS 29  CPU 78.700 ​ ​FPGA ​89.8  ​OK',​ 
- ​u'​ret':​ u'​0',​ +u'​ret':​ u'​0',​ 
- ​u'​encoder_status_str':​ u' ​  *** Encode Bitstream Received Statistics ***    ​Elapsed time =    0.0 secs   CH | Bitrate (Kbps) | Actual Bitrate | FPS  | Actual FPS | Key-frame FPS | Width | Height ​  ​------------------------------------------------------------------------------------------------------------ ​  ​1 |        ​2000.00 |        ​2020.17 | 60.0 |     60.|           1.0 |  1920 |   ​1080 ​ |  OK', +u'​encoder_status_str':​ u' ​  *** Encode Bitstream Received Statistics ***    CH | Bitrate (Kbps) | Actual Bitrate | FPS  | Actual FPS | Key-frame FPS | Width | Height ​  ​------------------------------------------------------------------------------------------------------------ 
- ​u'​source_status_str':​ u' CAMERA 1920x1080p 60.00 fps  OK', +1 |        ​4000.00 |        ​4092.18 | 60.0 |     59.|           1.0 |  1920 |   ​1080 ​ |  OK', 
- ​u'​stream_status_str':​ u'​Channel 1 URL rtsp Frames ​11524  ​OK'​}+u'​source_status_str':​ u' CAMERA 1920x1080p 60.00 fps\n', 
 +u'​stream_status_str':​ u'​Channel 1 URL rtsp Frames ​12883581 ​ ​OK'​}
  
 </​code>​ </​code>​
  
 +===== Authentication =====
  
-==== asamplerate ====+By default, no authentication is required to access the HTTP API.
  
 +To enable authentication,​ go to the "​System"​ tab "​Device Management"​ section. Click on the "Set Password"​ button.
  
-Description:​ Audio sample rate+The username will be "​admin"​ The authentication method is HTTP Digest authentication. HTTP Basic authentication is not supported.
  
 +=== Python example code of HTTP Digest authentication ===
 +<​code>​
  
-Possible values: 4800044100+import requests,json, sys 
 +from requests.auth import HTTPDigestAuth
  
 +auth=HTTPDigestAuth('​admin','​mypassword'​)
  
-==== asource ====+print requests.get(server_url,​ params='ctrl=stats&​chn=null', auth=auth).json()
  
 +</​code>​
  
-DescriptionSelect audio input+====== Appendix ASample Python Scripts ======
  
 +The sample python scripts below require Python3.x.
  
-Possible values: MICL (microphone,​ line input levels)+The requests package must be installed.
  
 +You can install using
 +
 +1) Use the Ubuntu package manager
 +
 +sudo apt install python3-requests
 +
 +2) Use the Python3 native package installer
 +
 +sudo pip3 install requests
 +
 +===== SaveUser (saveUser_DIGEST_ARGPARSE.py) =====
 +
 +Save the state, preset, encoder/​decoder settings for the user.
 +
 +=== Python example code of HTTP Digest SaveUser ===
  
 <​code>​ <​code>​
-               ​MIC ​   (unpowered microphone levels+import requests 
-               HDMI   (microHDMI inputfor HE4K-DCK only+import json 
-               HD-SDI (SDI inputfor DME-10/FSDI-DCK only)+import sched 
 +import time 
 +import enum 
 +import datetime 
 +import argparse 
 +from requests.auth import HTTPDigestAuth 
 + 
 +def print_immediately(msg):​ 
 +    # https://​stackoverflow.com/​questions/​230751/​how-can-i-flush-the-output-of-the-print-function/​230774#​230774 
 +    print(msg, flush=True
 + 
 +def http_request(payload):​ 
 +  try: 
 +    if args.username:​ 
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth) 
 +    else: 
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers) 
 +  except requests.exceptions.HTTPError as err: 
 +   ​raise SystemExit(err) 
 +  except requests.exceptions.Timeout:​ 
 +   raise SystemExit() 
 +  except requests.exceptions.TooManyRedirects:​ 
 +   raise SystemExit() 
 +  except requests.exceptions.RequestException as e: 
 +   raise SystemExit(e) 
 +  return r 
 + 
 +parser = argparse.ArgumentParser() 
 +parser.add_argument('​-ip'​'-ip_address',​ type=str, help='​IP of Encoder',​ required=True
 +parser.add_argument('​-username',​ help='​Username if credentials are required, -passwd is also required'​) 
 +parser.add_argument('​-passwd'​help='​Password if credentials are required',​default='​admin'​) 
 +args = parser.parse_args() 
 +print(args) 
 + 
 +if args.ip: 
 +  server_url='​http://'​ args.ip 
 +elif args.ip_address:​ 
 +  server_url='​http://'​ args.ip_address 
 + 
 +if args.username:​ 
 +  auth=HTTPDigestAuth(args.username,​args.passwd) 
 + 
 +control_cgi_url = server_url ​  '/​cgi-bin/control.cgi'​ 
 +channel = 1 
 +headers = {'​Content-Type':'​application/​x-www-form-urlencoded;​charset=UTF-8'​} 
 +payload = "​action=SaveUser&​enc_current_preset=charles";​ 
 +rs = http_request(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   ​setip_respose response: {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(),​ 
 +   ​rs.text 
 +  ) 
 +
 </​code>​ </​code>​
  
 +**Command to execute **
 +<​code>​
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.1.105 -username admin -passwd admin
  
-==== apid ====+</​code>​
  
 +**Example output: **
 +<​code>​
 +SaveUser response: {"​ret":"​0","​status":"​OK"​}
  
-Description:​ Audio PID for transport stream.+</​code>​
  
 +===== SetIp (set_ip_DIGEST_ARGPARSE.py) =====
  
-Possible values: 32 to 8191 must not conflict with other PID assignments.+Control networking settings of the Z3 device such as local IPv4 IP address, netmask, DNS Server primary, DNS Server secondary, etc. Additionally control Encoder Auto-Start after boot-up and enable/​disable showing of advanced WebUI settings.
  
 +=== Python example code of HTTP Digest SetIp ===
  
-==== aport ====+<​code>​ 
 +import requests 
 +import json 
 +import sched 
 +import time 
 +import enum 
 +import datetime 
 +import argparse 
 +from requests.auth import HTTPDigestAuth
  
 +def print_immediately(msg):​
 +    # https://​stackoverflow.com/​questions/​230751/​how-can-i-flush-the-output-of-the-print-function/​230774#​230774
 +    print(msg, flush=True)
  
-DescriptionDestination UDP port for RTP audio+def http_request(payload): 
 +  try: 
 +    if args.username:​ 
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth) 
 +    else: 
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers) 
 +  except requests.exceptions.HTTPError as err: 
 +   raise SystemExit(err) 
 +  except requests.exceptions.Timeout:​ 
 +   raise SystemExit() 
 +  except requests.exceptions.TooManyRedirects:​ 
 +   raise SystemExit() 
 +  except requests.exceptions.RequestException as e: 
 +   raise SystemExit(e) 
 +  return r
  
 +parser = argparse.ArgumentParser()
 +parser.add_argument('​-ip',​ '​-ip_address',​ type=str, help='​IP of Encoder',​ required=True)
 +parser.add_argument('​-newip',​ help='​Set this IP')
 +parser.add_argument('​-mask',​ help='​Subnet Mask',​default='​255.255.255.0'​)
 +parser.add_argument('​-gateway',​ help='​Network Gateway',​default='​172.30.1.1'​)
 +parser.add_argument('​-dns1',​ help='​DNS 1',​default='​8.8.8.8'​)
 +parser.add_argument('​-dns2',​ help='​DNS 2',​default='​8.8.4.4'​)
 +parser.add_argument('​-ipmtu',​ help='​MTU Speed',​default=1500)
 +parser.add_argument('​-username',​ help='​Username if credentials are required, -passwd is also required'​)
 +parser.add_argument('​-passwd',​ help='​Password if credentials are required',​default='​admin'​)
 +args = parser.parse_args()
 +print(args)
  
-==== aptspcr ====+if args.ip: 
 +  server_url='​http://'​ args.ip 
 +elif args.ip_address:​ 
 +  server_url='​http://'​ args.ip_address
  
 +if args.username:​
 +  auth=HTTPDigestAuth(args.username,​args.passwd)
  
-DescriptionFor transport stream modes only – intial PTS to PCR offset for audioin milliseconds+control_cgi_url = server_url ​  '/​cgi-bin/​control.cgi'​ 
 +channel = 1 
 +headers = {'​Content-Type'​:'​application/​x-www-form-urlencoded;​charset=UTF-8'​} 
 +payload = "​action=SetIp&​local_ip=172.30.1.112&​local_netmask=255.255.255.0&​default_gw=172.30.1.1&​local_dnsip=8.8.8.8&​local_dnsip2=8.8.4.4&​use_dhcp=no&​ipmtu=1500ð_speed=AUTOð_duplex=AUTO&​do_autostart=1&​enc_adv_setting=off";​ 
 +rs = http_request(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   ​setip_respose response: {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(), 
 +   ​rs.text 
 +  ) 
 +)
  
 +</​code>​
  
-Possible values: 100 to 2000+**Command ​to execute ** 
 +<​code>​ 
 +python3 set_ip_DIGEST_ARGPARSE.py -ip 192.168.1.105 -username admin -passwd admin
  
 +</​code>​
  
-==== auth_passwd ​====+**Example output: ** 
 +<​code>​ 
 +dns1='​8.8.8.8',​ dns2='​8.8.4.4',​ gateway='​172.30.1.1',​ ip='​192.168.1.105',​ ipmtu=1500, mask='​255.255.255.0',​ newip=None, passwd='​admin',​ username='​admin'​ 
 +setip_respose response: {"​ret":"​0","​status":"​OK"​}
  
 +</​code>​
  
-Description:​ Password for RTMP authentication.+===== cam_state (sys_DIGEST_ARGPARSE.py) =====
  
 +Get the current camera state information from the Database.
  
-==== auth_user ====+=== Python example code of HTTP Digest camera state ===
  
 +<​code>​
 +import requests
 +import json
 +import sched
 +import time
 +import enum
 +import datetime
 +import argparse
 +from requests.auth import HTTPDigestAuth
  
-DescriptionUsername for RTMP authentication.+def print_immediately(msg): 
 +    # https://​stackoverflow.com/​questions/​230751/​how-can-i-flush-the-output-of-the-print-function/​230774#​230774 
 +    print(msg, flush=True)
  
 +def http_request(payload):​
 +  try:
 +    if args.username:​
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth)
 +    else:
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers)
 +  except requests.exceptions.HTTPError as err:
 +   raise SystemExit(err)
 +  except requests.exceptions.Timeout:​
 +   raise SystemExit()
 +  except requests.exceptions.TooManyRedirects:​
 +   raise SystemExit()
 +  except requests.exceptions.RequestException as e:
 +   raise SystemExit(e)
 +  return r
  
-==== authonoff ====+def http_request_get(payload):​ 
 +  try: 
 +    if args.username:​ 
 +      r requests.get(control_cgi_url,​ data=payload, headers=headers,​auth=auth) 
 +    else: 
 +      r requests.get(control_cgi_url,​ data=payload, headers=headers) 
 +  except requests.exceptions.HTTPError as err: 
 +   raise SystemExit(err) 
 +  except requests.exceptions.Timeout:​ 
 +   raise SystemExit() 
 +  except requests.exceptions.TooManyRedirects:​ 
 +   raise SystemExit() 
 +  except requests.exceptions.RequestException as e: 
 +   raise SystemExit(e) 
 +  return r
  
 +parser = argparse.ArgumentParser()
 +parser.add_argument('​-ip',​ '​-ip_address',​ type=str, help='​IP of Encoder',​ required=True)
 +parser.add_argument('​-username',​ help='​Username if credentials are required, -passwd is also required'​)
 +parser.add_argument('​-passwd',​ help='​Password if credentials are required',​default='​admin'​)
 +args = parser.parse_args()
 +print(args)
  
-DescriptionEnable or disable RTMP authenticationDefaultoff Possible valueson, off+if args.ip: 
 +  server_url='​http://'​ args.ip 
 +elif args.ip_address: 
 +  server_url='​http://' args.ip_address
  
 +if args.username:​
 +  auth=HTTPDigestAuth(args.username,​args.passwd)
  
-==== channel ====+control_cgi_url ​server_url ​  '/​cgi-bin/​control.cgi'​ 
 +channel = 
 +headers ​{'​Content-Type':'​application/​x-www-form-urlencoded;​charset=UTF-8'​}
  
 +payload='​ctrl=cam_state&​chn=null';​
 +rs = http_request_get(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   Sys response: {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
  
-Description:​ Encoder channel number+</​code>​
  
 +**Command to execute **
 +<​code>​
 +python3 sys_DIGEST_ARGPARSE.py -ip 192.168.1.105 -username admin -passwd admin
  
-Possible values: 1, 2, 3+</​code>​
  
 +**Example output: **
 +<​code>​
 +(ip='​192.168.1.105',​ passwd='​admin',​ username='​admin'​)
 +Sys response: {"​camera1_if_type":"​Sony_LVDS","​camera2_if_type":"​CVBS","​enc_channels":"​1,​2","​enc_current_preset":"​charles","​fpgafileglob":"​fpga_none.bin|fpga2_0139_cvbs.bin","​preview_auto_start":"​1","​ret":"​0","​visca_present":"​true"​}
  
-==== feccol ====+</​code>​
  
 +===== CameraControl for Boson camera (Zoom_Boson.py) =====
  
-Description:​ Column count for ProMPEG.+Send control commands to boson cameraOnly one command can be sent at a time;
  
 +=== Python example code of HTTP Digest Camera control for Boson camera ===
 +<​code>​
  
-Possible values: integer greater than 1+import requests 
 +import json 
 +import sched 
 +import time 
 +import enum 
 +import datetime 
 +import argparse 
 +import sys 
 +from requests.auth import HTTPDigestAuth
  
 +if sys.version_info[0] <3:
 +  raise Exception("​Python 3 or a more recent version is required."​)
  
-==== feconoff ====+def print_immediately(msg):​ 
 +    # https://​stackoverflow.com/​questions/​230751/​how-can-i-flush-the-output-of-the-print-function/​230774#​230774 
 +    # print(msg, flush=True) 
 +    print(msg) 
 +    sys.stdout.flush()
  
 +def http_request(payload):​
 +  try:
 +    if args.username:​
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth)
 +    else:
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers)
 +  except requests.exceptions.HTTPError as err:
 +   raise SystemExit(err)
 +  except requests.exceptions.Timeout:​
 +   raise SystemExit()
 +  except requests.exceptions.TooManyRedirects:​
 +   raise SystemExit()
 +  except requests.exceptions.RequestException as e:
 +   raise SystemExit(e)
 +  return r
  
-DescriptionEnable ProMPEG ​if supported.+def http_request_get(payload): 
 +  try: 
 +    ​if args.username: 
 +      r = requests.get(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth) 
 +    else: 
 +      r = requests.get(control_cgi_url,​ data=payload,​ headers=headers) 
 +  except requests.exceptions.HTTPError as err: 
 +   raise SystemExit(err) 
 +  except requests.exceptions.Timeout:​ 
 +   raise SystemExit() 
 +  except requests.exceptions.TooManyRedirects:​ 
 +   raise SystemExit() 
 +  except requests.exceptions.RequestException as e: 
 +   raise SystemExit(e) 
 +  return r
  
 +parser = argparse.ArgumentParser()
 +parser.add_argument('​-ip',​ '​-ip_address',​ type=str, help='​IP of Encoder',​ required=True)
 +parser.add_argument('​-username',​ help='​Username if credentials are required, -passwd is also required'​)
 +parser.add_argument('​-passwd',​ help='​Password if credentials are required',​default='​admin'​)
 +args = parser.parse_args()
 +print(args)
 +if args.ip:
 +  server_url='​http://'​ args.ip
 +elif args.ip_address:​
 +  server_url='​http://'​ args.ip_address
 +# Set Zoom STEP
 +zooms=args.zs;​
 +zoomstep=args.zoom_step;​
  
-Possible valuesonoff+if args.username: 
 +  auth=HTTPDigestAuth(args.username,args.passwd) 
 +control_cgi_url = server_url ​  '/​cgi-bin/​control.cgi'​ 
 +channel = 1 
 +headers = {'​Content-Type':'​application/​x-www-form-urlencoded;​charset=UTF-8'​} 
 +# Boson min Zoom 
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000d000200000000000000A000000080';​ 
 +rs = http_request(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(),​ 
 +   ​rs.text 
 +  ) 
 +
 +time.sleep(4) 
 +# Boson get Zoom pos 
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000D0003';​ 
 +rs = http_request(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(),​ 
 +   ​rs.text 
 +  ) 
 +
 +# Boson mid Zoom 
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000d000200000015000000A000000080';​ 
 +rs = http_request(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(),​ 
 +   ​rs.text 
 +  ) 
 +
 +time.sleep(4) 
 +# Boson get Zoom pos 
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000D0003';​ 
 +rs = http_request(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(),​ 
 +   ​rs.text 
 +  ) 
 +
 +# Boson mid Zoom xB0 yA0 
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000d000200000015000000B0000000A0';​ 
 +rs = http_request(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(),​ 
 +   ​rs.text 
 +  ) 
 +
 +time.sleep(4) 
 +# Boson get Zoom pos 
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000D0003';​ 
 +rs = http_request(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(),​ 
 +   ​rs.text 
 +  ) 
 +
 +# Boson max Zoom 
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000d000200000030000000A000000080';​ 
 +rs = http_request(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(),​ 
 +   ​rs.text 
 +  ) 
 +
 +time.sleep(4) 
 +# Boson get Zoom pos 
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000D0003';​ 
 +rs = http_request(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(),​ 
 +   ​rs.text 
 +  ) 
 +
 +# Boson no Zoom 
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000d000200000000000000A000000080';​ 
 +rs = http_request(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(),​ 
 +   ​rs.text 
 +  ) 
 +
 +time.sleep(4) 
 +# Boson get Zoom pos 
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000D0003';​ 
 +rs = http_request(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(),​ 
 +   ​rs.text 
 +  ) 
 +)
  
 +</​code>​
  
-==== fecrow ====+**Command to execute ** 
 +<​code>​ 
 +python3 Zoom_Boson.py -ip 172.28.30.103
  
 +</​code>​
  
-DescriptionRow count for ProMPEG.+**Example output** 
 +<​code>​ 
 +(ip='​172.28.30.103',​ passwd='​admin',​ username=None,​ zoom_step=False,​ zs='​3'​) 
 +Response: {"​response":"","​ret":"​0","​status":"​OK"​} 
 +Response: {"​response":"​00000000000000A000000080","​ret":"​0","​status":"​OK"​} 
 +Response: {"​response":"","​ret":"​0","​status":"​OK"​} 
 +Response: {"​response":"​00000015000000A000000080","​ret":"​0","​status":"​OK"​} 
 +Response: {"​response":"","​ret":"​0","​status":"​OK"​} 
 +Response: {"​response":"​00000015000000B0000000A0","​ret":"​0","​status":"​OK"​} 
 +Response: {"​response":"","​ret":"​0","​status":"​OK"​} 
 +Response: {"​response":"​00000030000000A000000080","​ret":"​0","​status":"​OK"​} 
 +Response: {"​response":"","​ret":"​0","​status":"​OK"​}
  
 +</​code>​
  
-Possible values: integer greater than 1+===== CameraControl for Sony Visca camera (Zoom_visca.py) =====
  
 +Send control commands to visca camera. Only one command can be sent at a time;
  
-==== filesize ====+=== Python example code of HTTP Digest Camera control for Visca camera ​===
  
 +<​code>​
 +import requests
 +import json
 +import sched
 +import time
 +import enum
 +import datetime
 +import argparse
 +import sys
 +from requests.auth import HTTPDigestAuth
  
-DescriptionSize of TSFILE ​or AUX file recording, in bytes.+if sys.version_info[0] <3: 
 +  raise Exception("​Python 3 or a more recent version is required.")
  
 +def print_immediately(msg):​
 +    # https://​stackoverflow.com/​questions/​230751/​how-can-i-flush-the-output-of-the-print-function/​230774#​230774
 +    # print(msg, flush=True)
 +    print(msg)
 +    sys.stdout.flush()
  
-A "​K"​ suffix indicates kilobytes ​(thousands of bytes/​second).+def http_request(payload)
 +  try: 
 +    if args.username: 
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth) 
 +    else: 
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers) 
 +  except requests.exceptions.HTTPError as err: 
 +   raise SystemExit(err) 
 +  except requests.exceptions.Timeout:​ 
 +   raise SystemExit() 
 +  except requests.exceptions.TooManyRedirects:​ 
 +   raise SystemExit() 
 +  except requests.exceptions.RequestException as e: 
 +   raise SystemExit(e) 
 +  return r
  
 +def http_request_get(payload):​
 +  try:
 +    if args.username:​
 +      r = requests.get(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth)
 +    else:
 +      r = requests.get(control_cgi_url,​ data=payload,​ headers=headers)
 +  except requests.exceptions.HTTPError as err:
 +   raise SystemExit(err)
 +  except requests.exceptions.Timeout:​
 +   raise SystemExit()
 +  except requests.exceptions.TooManyRedirects:​
 +   raise SystemExit()
 +  except requests.exceptions.RequestException as e:
 +   raise SystemExit(e)
 +  return r
  
-A "​M"​ suffix indicates megabytes ​(millions ​of bytes/​second).+parser = argparse.ArgumentParser(
 +parser.add_argument('​-ip',​ '​-ip_address',​ type=str, help='​IP ​of Encoder',​ required=True) 
 +parser.add_argument('​-username',​ help='​Username if credentials are required, -passwd is also required'​) 
 +parser.add_argument('​-passwd',​ help='​Password if credentials are required',​default='​admin'​) 
 +parser.add_argument('​-z',​ help='​Zoom STEP level 0 - 7; Default 3',​default='​3'​) 
 +parser.add_argument('​-zs',​ help='​Do Zoom STEP defined using -z, else normal zoom',​action='​store_true'​) 
 +args = parser.parse_args() 
 +print(args) 
 +if args.ip: 
 +  server_url='​http://'​ args.ip 
 +elif args.ip_address:​ 
 +  server_url='​http://'​ args.ip_address 
 +# Set Zoom STEP 
 +zooms=args.z;​ 
 +zoomstep=args.zs;
  
 +if args.username:​
 +  auth=HTTPDigestAuth(args.username,​args.passwd)
 +control_cgi_url = server_url ​  '/​cgi-bin/​control.cgi'​
 +channel = 1
 +headers = {'​Content-Type':'​application/​x-www-form-urlencoded;​charset=UTF-8'​}
 +if zoomstep == True:
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_wide_var ' zooms;
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    time.sleep(4)
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_stop';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_get_pos';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_tele_var ' zooms;
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    time.sleep(4)
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_stop';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_get_pos';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +else:
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_tele_std';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    time.sleep(5)
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_stop';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_get_pos';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
  
-==== fprefix ​====+    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_wide_std';​ 
 +    rs http_request(payload) 
 +    print_immediately( 
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +       1, 
 +       ​datetime.datetime.now(),​ 
 +       ​rs.text 
 +      ) 
 +    ) 
 +    time.sleep(5) 
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_stop';​ 
 +    rs = http_request(payload) 
 +    print_immediately( 
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +       1, 
 +       ​datetime.datetime.now(),​ 
 +       ​rs.text 
 +      ) 
 +    ) 
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_get_pos';​ 
 +    rs = http_request(payload) 
 +    print_immediately( 
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format( 
 +       1, 
 +       ​datetime.datetime.now(),​ 
 +       ​rs.text 
 +      ) 
 +    )
  
 +</​code>​
  
-Description:​ Relative filename for TSFILE or AUX file recording. Note that "​fprefix"​ does NOT include the absolute media path – the "​storage"​ parameter is the proper place to specify the absolute media path.+**Command ​to execute with out zoom step size ** 
 +<​code>​ 
 +python3 Zoom_visca.py -ip 192.168.1.105 -username admin -passwd admin
  
 +</​code>​
  
-==== storage ====+**Example output: ** 
 +<​code>​ 
 +(ip='​192.168.1.105',​ passwd='​admin',​ username='​admin',​ z='​3',​ zs=False) 
 +Response: {"​ret":"​0","​status":"​OK"​} 
 +Response: {"​ret":"​0","​status":"​OK"​} 
 +Response: {"​response":​3040,"​ret":"​0","​status":"​OK"​} 
 +Response: {"​ret":"​0","​status":"​OK"​} 
 +Response: {"​ret":"​0","​status":"​OK"​} 
 +Response: {"​response":​0,"​ret":"​0","​status":"​OK"​}
  
 +</​code>​
  
-Absolute path to mounted media device (e.g/​media/​sda1/​)+**Command ​to execute with zoom step size ** 
 +<​code>​ 
 +python3 Zoom_visca.py -ip 192.168.1.105 -username admin -passwd admin -z 3 -zs
  
 +</​code>​
  
-==== telopcharsize ====+**Example output: ** 
 +<​code>​ 
 +(ip='​192.168.1.105',​ passwd='​admin',​ username='​admin',​ z='​3',​ zs=True) 
 +Response: {"​ret":"​0","​status":"​OK"​} 
 +Response: {"​ret":"​0","​status":"​OK"​} 
 +Response: {"​response":​0,"​ret":"​0","​status":"​OK"​} 
 +Response: {"​ret":"​0","​status":"​OK"​} 
 +Response: {"​ret":"​0","​status":"​OK"​} 
 +Response: {"​response":​7304,"​ret":"​0","​status":"​OK"​}
  
 +</​code>​
  
-OSD overlay text character size in pixels 
  
 +==== GetStatus ====
  
-Possible values: 16, 32, or 64+----
  
 +Read the encoder status.
  
-==== telopenable ====+== Parameters: ​==
  
 +----
  
-Enable or disable telop (i.eOSD overlay of text).+//​**chn**// ​ Get the encoder channel numberThe default is encoder channel 1Select between encoder channels. Possible values: 1, 2, 3, or 4.
  
 +//​**status**// ​ The encoder status can be RUNNING/ STOPPED/ IDLE/ Couldn'​t deduct input on camera.
 +== Returns: ==
  
-Possible values: on, off+----
  
 +JSON formatted table with values below
  
-==== teloplocation ====+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-Where to overlay text in the encoded video+----
  
 +==== GetVideoInputs ====
  
-Possible values: top_left top_right top_center bottom_left bottom_right bottom_center+----
  
 +Get the sensor id and read the video inputs from the Database.
  
-==== teloptext ====+== Parameters: ​==
  
 +----
  
-Text string for OSD overlay+//​**sensorid **//  Sensor ID.
  
 +//**vport **//  video port is Camera source. Possible values: 1 = Camera 1, 2 = Camera 2.
  
-==== vgopsize ====+//​**friendly_name **//  name of the video source.
  
 +//**vdevice **//  Video device. Possible values: MIPI, SONYLVDS, LT6911
  
-DescriptionDistance between I frames (key frames) in GOP sequence+//​**input_index **//  input device. Possible values0, 1.
  
 +//**bus **//  device address. Default NULL
  
-Possible values: 1 through 240+//**enabled **//  Video input enabled or disabled. Default is 1. Possible values: ​0, 1
 +== Returns: ==
  
 +----
  
-==== vbitrate ====+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Description:​ Video bitrate in bits per second.+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-Possible values: A "​K"​ suffix indicates kilobits (thousands of bits/​second).+==== GetWifiPass ====
  
 +----
  
-A "​M"​ suffix indicates megabits (millions of bits/​second).+Get the Wifi password.
  
 +== Parameters: ==
  
-Note: In UDP transport stream case, the tsrate should be set+----
  
 +//​**ssid**// ​ Read the service set identifier
  
-higher than the vbitrate, with at least 15% margin.+**//​psk//​** ​ Provide ​the wifi password. 
 +== Returns: ==
  
 +----
  
-==== vdelay ====+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Description:​ Video maximum burst size in milliseconds.+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-Possible values: 100 to 2000+==== InsQuery ====
  
 +----
  
-==== vdest ====+Querry the PTZ values for the angle.
  
 +== Parameters: ==
  
-Description:​ Destination URL address for encoded bitstream. May be interpreted differently depending on "​vprotocol"​ setting.+----
  
 +**//​data//​** ​ Read the json table and retrieve the index and querry type. Possible querry are YawAngle, PitchAngle, RollAngle, All.
  
-For UDP and RTP transports:+//​**YawAngle **//  provide the yaw angle value from the PTZ.
  
 +//​**PitchAngle**// ​ provide the pitch angle value from the PTZ.
  
-client_ip:client_port+//​**RollAngle**// ​ provide the roll angle value from the PTZ. 
 +== Returns==
  
 +----
  
-For RTMP transport:+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-<​code>​ +**//status//**  String describing the failure when **ret** is 1. "​OK"​ on success.
- ​server_ip[:​server_port]/application/streamname +
-</code>+
  
 +----
  
-==== vframeratediv ​====+==== LoadUser ​====
  
 +----
  
-Description:​ Divide video input frame rate by this number to get encode frame rate.\\  +Load the active preset value from the Database and update in the state table database.
-The encoder will discard (frameratediv-1) out of (frameratediv) frames.\\  +
-\\  +
-Possible values: 1, 2, 3, 4, 5, 6+
  
 +== Parameters: ==
  
-==== vgdr ====+----
  
 +//​**enc_current_preset**// ​ Get the preset row and check the opermation mode. The operation modes are encoder / decoder.
  
-DescriptionEnable or disable Gradual Data Refresh. Reduces I-frame size (reduces latency). At lower bitrates, a horizontal rolling artifact may be visible.+//​**cur_preset **//  Provide the current presetting values. 
 +== Returns==
  
 +----
  
-Possible ​values: on, off+JSON formatted table with values ​below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-==== vcodec ====+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-Description:​ Specifiec which codec to encode with.+==== Login ====
  
 +----
  
-Possible values: h265, h264, mjpeg+Set the password for the login user.
  
 +== Parameters: ==
  
-==== vprofile ====+----
  
 +== Returns: ==
  
-Description:​ H.264 profile (see [[https://​en.wikipedia.org/​wiki/​H.264/​MPEG-4_AVC#​Profiles|https://​en.wikipedia.org/​wiki/​H.264/​MPEG-4_AVC#​Profiles]]​ for full description)+----
  
 +JSON formatted table with values below
  
-Possible values: baselinemain, high+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success1 on failure.
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-==== vprotocol ====+----
  
 +==== Logout ====
  
-Description:​ Protocol used to transport the encoded bitstream.+----
  
 +Logout from the system and update in the Database.
  
-Possible valuesrtp, rtmp, udp, asi, tsfile, mts, tsrtp+== Parameters==
  
 +----
  
-==== vquality ====+//​**Authorization**// ​ Get the permission level. 
 +== Returns: ​==
  
 +----
  
-Description:​ Set balance between low latency, and higher quality+bitrate compliance.+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Possible values: lowlat, balanced, high+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-==== vratectrl ​====+==== Overlay ​====
  
 +----
  
-Description:​ Rate control mode for encoder.+Add/Update the overlay values in the Database.
  
 +== Parameters: ==
  
-Possible values: cbr, vbr+----
  
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
  
-vbr mode may be burstier than cbr.+**//​rgn_idx//​** ​ Index to map overlay. The region index value can be in the range of 1 to 16. Ambarella provides 16 total color look-up tables for Overlay, rgn_idx signifies which color look-up table is in use.
  
 +//​**​type**// ​ Type of overlay to be used possible values: text or png.
  
-==== vres ====+//​**source**// ​ In the case of text overlay this would be the source text for png overlay this is the path to the png on the encoder. Images must be uploaded to board to be used.
  
 +//​**location**// ​ This is the location of the overlay. Possible values: '​top_left',​ '​top_right',​ '​top_center',​ '​bottom_left',​ '​bottom_right',​ '​bottom_center',​ '​x,​y'​ (negative numbers not supported for x or y).
  
-DescriptionVideo resolution+//​**char_size**// ​ For text overlay this is the character size. Possible values16,32,64, 128.
  
 +//​**layer**// ​ This will set the layer for the overly higher numbers will overlay over lower numbers if overlapping.
  
-Possible values: ​follow_input preserve video source resolution, no resize+**//​alpha//​** ​ Sets the transparency of the text. Possible values: ​0-255. 
 +== Returns: ==
  
 +----
  
-<​code>​ +JSON formatted table with values below
-               ​WxH ​          ​resize to width W and height H +
-</​code>​+
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-==== vsource ====+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-Description:​ Video input from which encoder will source its video+==== OverlayStop ====
  
 +----
  
-<font 12.8000001907349px/​arial;;#​000000;;#​ffffff>​Possible values: Board-dependent</​font>​+Stop overlay.
  
 +== Parameters: ==
  
-==== pipenable ====+----
  
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
  
-Description:​ Enable PIP of channel ​2 on channel 1 encodeOnly available on FV4K/​FV2K/​FSDI+//​**rgn_idx**// ​ ​Index ​of overly for this channel. 
 +== Returns: ==
  
 +----
  
-Possible ​values: on, off+JSON formatted table with values ​below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-==== piplocaton ====+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-Description:​ Sets the location of the PIP on channel one. Only available on FV4K/​FV2K/​FSDI+==== PtzAbsoluteMove ====
  
 +----
  
-Possible values: top_left, top_right, bottom_left,​ bottom_right+Send absolute move command to the PTZ.
  
 +== Parameters: ==
  
-==== vinterlacemode ====+----
  
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position and speed value. The mode values can be Pan, tilt, and  Zoom.
 +== Returns: ==
  
-Description:​ Sets the interlaced mode for the video input+----
  
 +JSON formatted table with values below
  
-Possible values: combinedseparated (H265 only)+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success1 on failure.
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-==== vmulticastdest ====+----
  
 +==== PtzAuxiliary ====
  
-Description:​ video multicast destination for RTSP. Used by ONVIF StartMulticast/​StopMulticast functions+----
  
 +Send PTZ auxiliary value to the PTZ.
  
-Possible valuesvalid multicast addresses+== Parameters==
  
 +----
  
-==== amulticastdest ====+//**data **//  Parse the JSON formatted data and retrieve the mode, position and speed value. 
 +== Returns: ​==
  
 +----
  
-Description:​ audio multicast destination for RTSP. Used by ONVIF StartMulticast/​StopMulticast functions+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Possible values: valid multicast addresses+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-==== rtsp_auth_enable ​====+==== PtzClearPreset ​====
  
 +----
  
-Description:​ enables/​disables rtsp authorization ​for stream+Remove the Ptz preset values ​for the user.
  
 +== Parameters: ==
  
-Possible values: on, off+----
  
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position and speed value. The mode values can be Pan, tilt, and  Zoom.
 +== Returns: ==
  
-==== rtsp_auth_username ====+----
  
 +JSON formatted table with values below
  
-Description:​ username for rtsp authorization+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-Possible values: alpha numeric string+----
  
 +==== PtzContinuousMove ====
  
-==== rtsp_auth_password ====+----
  
 +Send continous move command to the PTZ.
  
-Descriptionpassword for rtsp authorization+== Parameters==
  
 +----
  
-Possible values: ​*+//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout. 
 +== Returns: ==
  
 +----
  
-===== Transport Stream Parameters =====+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-The following parameters only apply to transport stream encoding (transport ​is set to udp, asi, tsfile, mts, or tsrtp).+**//​status//​** ​ String describing the failure when **ret** ​is 1. "​OK"​ on success.
  
 +----
  
-==== vpid ====+==== PtzGotoPreset ​====
  
 +----
  
-Description:​ Video PID for transport stream.+Send preset value to PTZ.
  
 +== Parameters: ==
  
-Possible values: 32 to 8191 – must not conflict with other PID assignments+----
  
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout.
 +== Returns: ==
  
-==== apid ====+----
  
 +JSON formatted table with values below
  
-Description:​ Audio PID for transport stream.+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-Possible values: 32 to 8191 – must not conflict with other PID assignments+----
  
 +==== PtzNewTourSpot ====
  
-==== pcrpid ====+----
  
 +Get the new tour spot and update in the Database.
  
-DescriptionPCR PID for transport stream.+== Parameters==
  
 +----
  
-Possible values32 to 8191 – must not conflict with other PID assignments+//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token. 
 +== Returns==
  
 +----
  
-==== pmtpid ====+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Description:​ PMT PID for transport stream.+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-Possible values: 16 to 31 – must not conflict with other PID assignments+==== PtzPosition ====
  
 +----
  
-==== tsrate ====+Move the Ptz to the input position
  
 +== Parameters: ==
  
-Description:​ Transport stream total transport rate in bits per second.+----
  
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token.
 +== Returns: ==
  
-Possible values: The '​K'​ suffix indicates kilobits (thousands of bits/​second). The '​M'​ suffix indicates megabits (millions of bits/​second).+----
  
 +JSON formatted table with values below
  
-Note: In UDP transport stream case, the tsrate should be set higher than the vbitratewith at least 15% margin.+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success1 on failure.
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-==== tslowlat ====+----
  
 +==== PtzPreset ====
  
-Description:​ Low latency transport stream mode (VBR).+----
  
 +Preset the Ptz based on the value.
  
-Possible valuesoff, on+== Parameters==
  
 +----
  
-==== auxonoff ====+//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token. 
 +== Returns: ​==
  
 +----
  
-Describe: Enable AUXillary file recording in UDP mode – allows simultaneous UDP streaming and TS file recording on the same channel. Only valid if transport is UDP and tslowlat is off+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-The path to storage is set by the "storage" ​parameter.+**//​status//​** ​ String describing ​the failure when **ret** is 1. "OK" ​on success.
  
 +----
  
-The filename is set by the "​fprefix"​ parameter. The default value is "​MOV1_%F_%T"​. The "​%F"​ specifier inserts a date stamp, and the "​%T"​ specifier inserts a time stamp.+==== PtzQuery ====
  
 +----
  
-The recording file size is set by the "​filesize"​ parameter. When the file reaches this size, a new file will be created.+Get the ptz status and degree value from the ptz
  
 +== Parameters: ==
  
-==== klvbrate ====+----
  
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token.
 +== Returns: ==
  
-Description:​ Bitrate to allocate in transport stream for KLV data.+----
  
 +JSON formatted table with values below
  
-==== klvenable ====+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-Description:​ Enable KLV capture from SDI, if supported.+----
  
 +==== PtzRemoveTourSpot ====
  
-Possible values: off, on+----
  
 +Remove the ptz tour spot
  
-==== klvpid ====+== Parameters: ​==
  
 +----
  
-Description:​ PID for KLV data in transport stream+//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token. 
 +== Returns: ==
  
 +----
  
-==== klvsrc ====+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Description:​ Source device for KLV metadata+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-==== pcrinterval ​====+==== PtzSetPreset ​====
  
 +----
  
-Description:​ Interval between PCR packets ​in milliseconds.+Set the preseting value in the PTZ
  
 +== Parameters: ==
  
-Possible values: 30 100+----
  
 +//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token.
 +== Returns: ==
  
-===== Global Configuration =====+---- 
 + 
 +JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 ---- ----
  
 +==== PtzStartTour ====
  
-===== Action Syntax =====+----
  
 +Start the PTZ tour
  
-===== Generic Actions (POST) =====+== Parameters: ​==
  
 +----
  
-Python example code for starting/stopping all channels:+//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token. 
 +== Returns==
  
 +----
  
-<​code>​ +JSON formatted table with values below
-import requests, json +
-import sys, getopt+
  
-actionname='​StartChannel'​+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-server_url='​http:​//192.168.0.120'+**//status//​** ​ String describing the failure when **ret** is 1"​OK"​ on success.
  
-control_cgi_url = server_url + '/cgi-bin/​control.cgi'​+----
  
-payload ​'ctrl=sys&chn=null'​ +==== PtzStop ====
-sysctrl ​requests.get(control_cgi_url,​ params=payload)+
  
-j = sysctrl.json() +----
-print j+
  
-enc_channels_string = j['​enc_channels'​] +Stop the PTZ
-opmode ​      = j['​opmode'​]+
  
-enc_channels ​enc_channels_string.split( ','​ )+== Parameters: ==
  
-print '​enc_channels',​ enc_channels,​ '​opmode',​ opmode+----
  
-channel_list ​enc_channels+//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token. 
 +== Returns: ==
  
-for channel in channel_list : +----
-    # Remove leading C +
-    if channel[0:​0] == '​C':​ +
-        channel = channel[1:​] +
-    print actionname, ' ', opmode, '​channel',​ channel +
-    payload = '​action='​+actionname+'&'​+ '​chn='​ +channel+'&'​ + '​loadfromdb=true';​ +
-    headers={'​Content-Type':'​application/​x-www-form-urlencoded; charset=UTF-8'​} +
-    r = requests.post(control_cgi_url,​ data=payload,​ headers=headers) +
-     +
-    print r.text +
-</​code>​+
  
 +JSON formatted table with values below
  
-The "​loadfromdb=true"​ parameter will load the current settings from the database.+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-If you omit the loadfromdb parameter, *none* of the database settings will be used – any parameters you do not supply, will be set to default values.+----
  
 +==== RemoveJobs ====
  
-For example, this is what a StartChannel request from the web server looks like:+----
  
 +Delete the schedule jobs from the Database.
  
-<​code>​ +== Parameters: ==
-action=StartChannel&​chn=1&​vsource=&​vres=follow_input&​vcodec=h265&​vgdr=on&​vprofile=high&​vratectrl=cbr&​vbitrate=2M&​vframeratediv=1&​vgopsize=60&​vprotocol=rtsp&​vdest=192.168.0.6:8600&​storage=&​fprefix=MOV1_%F_%T_&​vpid=221&​vdelay=1000&​pcrpid=521&​pcrinterval=50&​pmtpid=31&​tsrate=3000K&​tslowlat=on&​feconoff=off&​fecrow=1&​feccol=5&​zixioverhead=15&​zixiauthen=off&​zixisession=test&​zixiuser=user&​aenable=on&​asource=MICL&​acodec=fdk_aaclc&​abitrate=128000&​asamplerate=48000&​aport=8700&​apid=120&​aptspcr=250&​klvenable=off&​klvmode=sdi&​klvsrc=/​dev/​gv7601.0&​klvpid=35&​klvbrate=1000&​authonoff=off&​auth_user=user&​auth_passwd=password&​auxonoff=off&​filesize=1024M&​telopenable=off&​teloptext=ENCDEV&​teloplocation=top_left&​telopcharsize=32&​vquality=balanced +
-</​code>​+
  
 +----
  
-==== StartChannel ====+//​**purgelist**// ​ List of schedule jobs to be removed.
  
 +//​**rowcnt**// ​ Number of rows.
 +== Returns: ==
  
-\\  +----
-Transition the encoder channel into the running state.+
  
 +JSON formatted table with values below
  
-Once you start the channelit will not transmit data until the\\  +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success1 on failure.
-video input is detected.+
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-==== StopChannel ====+----
  
 +==== RestartBoard ====
  
-Transition the encoder channel into the stopped state.+----
  
 +Read the operation mode. Whether its encoding / decoding. Stop the channel encoding and restart the board
 +
 +== Parameters: ==
 +
 +----
 +
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SaveCamera ====
 +
 +----
 +
 +Saving the camera settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +**//​zoom_direct_value//​** ​ Zoom value. Possible values: 0 (wide) to 0x7ac0 (full zoom)
 +
 +//​**white_balance_mode**// ​ White balance mode. Default value is auto. Possible values: auto / manual / indoor/ one-push / auto trace / sodium lamp auto / sodium lamp fixed / sodium lamp outdoor.
 +
 +//​**color_gain**// ​ color gain. Default value is 4. Possible values: Range from 0 (60%) to 14 (200%)
 +
 +//​**color_hue**// ​ color hue. Default value is 7. Possible values: Range from 0 (60%) to 14 (200%)
 +
 +//​**chroma_suppress**// ​ Chroma suppress. Default value is 1. Possible values: 0=none, 1, 2, 3
 +
 +//​**wb_manual_rgain_direct**// ​ white balance manual red gain. Default value is 190. Possible values: 0 to 255
 +
 +//​**wb_manual_bgain_direct **//  white balance manual blue gain. Default value is 190. Possible values: 0 to 255
 +
 +//​**optical_zoom_only **//  optical zoom only. Default value is 0. Possible values: 0, 1
 +
 +//​**focus_direct_value**// ​ focus direct value. Default value is 4096. Possible values: 0x1000 to 0xf000
 +
 +//​**manual_focus **//  Manual focus. Default value is auto. Possible values: auto, manual
 +
 +//​**exposure_mode **//  Exposure mode. Default value is 0. Possible values: 0 - Auto, 10 - Shutter Priority, 11 - Iris -Priority, 3 - Manual.
 +
 +//​**shutter**// ​ Shutter. Default value is 7.
 +
 +//**iris **//  Iris. Default value is 0.
 +
 +//​**gain**// ​ Gain. Default value is 0.
 +
 +//​**high_sensitivity**// ​ high sensitivity value. Default value is 3. Possible values 0, 1.
 +
 +//​**hlc_level **//  hlc level. Default value is 0. Possible values in range 0 to 3.
 +
 +**hlc_level_mask** mask value of hlc level. Default value is 0. Possible values 0, 1.
 +
 +//​**stable_zoom**// ​ stable zoom on or off. Default value is off.
 +
 +//**eflip **//  Default value is 5. Possible values 0, 1.
 +
 +//​**lr_reverse **//  Default value is 0. Possible values 0, 1.
 +
 +//​**monitor_mode **//  Default value is 1080p-59.94.
 +
 +//​**genlock_source **//  Default value is 2.
 +
 +//​**zoom_step_size **//  Default value is 4. Possible values in range (1 - 7).
 +
 +//​**focus_step_size **//  Default value is 1. Possible values in range (0 - 7).
 +
 +//​**manual_icr **//  Default value is Off. Possible values: On, Off, Auto, Auto Color
 +
 +//​**img_freeze **//  Default value is 0. Possible values: 0, 1.
 +
 +//**hr_mode **//  High resolution mode. Default value is 0. Possible values: 0, 1.
 +
 +//​**img_stabilizer ** //Default value is 0. Possible values 0, 1.
 +
 +//​**img_bw** //Image black white. Default value is 0. Possible values 0, 1.
 +
 +//​**nr_2d_level **//  Default value is 5. Possible values in range (0 - 5).
 +
 +//​**nr_3d_level** //Default value is 4. Possible values in range (0 - 5).
 +
 +//​**icr_threshold** //Default value is 14. Possible values in range (0-255 for 4K camera, 0-28 for HD camera).
 +
 +//​**slow_shutter** //Default value is 0. Possible values: 0, 1.
 +
 +//​**slow_shutter_limit **//  Default value is 4. Possible values in range: (1 to 6)
 +
 +//​**flicker_reduction** //Default value is 0. Possible values: 0, 1.
 +
 +//​**img_stabilizer_level** //Default value is 0. Possible values: 0, 2.
 +
 +//​**wide_dynamic_range** //Default value is 3.
 +
 +//​**ve_brightness** //Default value is 3. Possible values in range: 0, 6.
 +
 +//​**ve_compensation_type** //Default value is 2. Possible values in range: 0, 3.
 +
 +//​**ve_compensation_level **//  Default value is 1. Possible values in range: 0, 2.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SaveCameraBoson ====
 +
 +----
 +
 +Save color pallete settings of boson camera in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**color_pallette**// ​ Color pallete. Default value is whitehot.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SaveCameraDRSTamarisk ====
 +
 +----
 +
 +Save color pallete settings of DRS Tamarisk camera in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**color_pallette**// ​ Color pallete. Default value is whitehot.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SaveCameraLink ====
 +
 +----
 +
 +Saving camera link settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**pxl_format**// ​ Pixel format. Default value is 1.
 +
 +//​**color_table**// ​ Color table. Default value is whitehot.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SaveCameraLx ====
 +
 +----
 +
 +Saving camera Lx settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**SONY_ExposureMode**// ​ Exposure Mode. Default value is 32852. Possible values: 32848 (Program Auto), 32849 (Aperture Priority), 32850 (Shutter Priority), 32851 (Manual Exposure), 32852 (Intelligent Auto).
 +
 +//​**SONY_ShutterSpeed**// ​ Shutter speed. Defualt value is NULL.
 +
 +//​**SONY_ISO**// ​ ISO. Defualt value is NULL.
 +
 +//​**SONY_ExposureComp**// ​ Exposure comp. Defualt value is NULL.
 +
 +//​**SONY_WhiteBalance**// ​ White balance. Defualt value is NULL.
 +
 +//​**SONY_ColorTemp**// ​ Color temperature. Defualt value is NULL.
 +
 +//​**SONY_APS_C**// ​ APS_C. Defualt value is NULL.
 +
 +//​**SONY_NtscPalSelect**// ​ NTSC / PAL selection. Defualt value is NULL.
 +
 +//​**SONY_MovieSteadyMode**// ​ Movie steady mode. Defualt value is NULL.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SaveCameraTau ====
 +
 +----
 +
 +Saving camera TAU settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**color_table **//  color table value .
 +
 +//​**is_active**// ​ Active/​Deactive. Default value is 0.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SaveJobs ====
 +
 +----
 +
 +Save the schedule jobs in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//**data **//  Parse the JSON formatted data and retrieve the schedule activities.//​**.** //
 +
 +//​**rowcnt**// ​ Get the number of row count.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SavePresets ====
 +
 +----
 +
 +Check the operation mode whether its in encoder or decoder. Save the preseting value of the mode in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**dec_current_preset **//  Save the decoder current preseting values.
 +
 +//​**enc_current_preset**// ​ Save the encoder current preseting values.
 +
 +//​**preset**// ​ Settings for encoder or decoder.
 +
 +//​**enc_channels **//  Number of channels. Maximum number of channels is 2 for decoder and 4 for encoder.
 +
 +//​**opmode**// ​ Operation mode. Default is Encoder. Possible values: Encoder / Decoder.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
  
 ==== SaveUser ==== ==== SaveUser ====
  
 +----
  
-Save current settings to non-volatile memoryso they will be used on the next startup.+Save the statepreset, encoder/​decoder settings in the Database.
  
 +== Parameters: ==
  
-==== RestartBoard ====+----
  
 +**//​enc_current_preset//​** ​ Get the encoder preseting values for the current channel.
  
-Reboot ​the board+**//​dec_current_preset//​** ​ Get the decoder preseting values for the current channel. 
 +== Returns: ==
  
 +----
  
-==== PtzContinuousMove ====+JSON formatted table with values below
  
-Pan to the left at half speed +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success1 on failure.
-    action=PtzContinuousMove&​data={"​PanTilt":​{"​x":​-0.5,"​y":​0},"​idx":​0}+
  
-Pan to the right at half speed +**//​status//​** ​ String describing ​the failure when **ret** is 1. "OK" ​on success.
-    action=PtzContinuousMove&​data={"PanTilt":​{"​x":​0.5,"​y":​0},"​idx":​0}+
  
-Tilt down at max speed +----
-    action=PtzContinuousMove&​data={"​PanTilt":​{"​x":​0,"​y":​1},"​idx":​0}+
  
 +==== SetAdv ====
  
-==== PtzStop ====+----
  
-Stop pan and tilt+Save the encoder advance settings in the Database.
  
-    action=PtzStop&​data={"​mode"​:1,"​idx":​0}+== Parameters==
  
 +----
  
-==== CameraControl ====+//​**enc_adv_setting **//  Get the encoder advance setting values. 
 +== Returns: ​==
  
-Send VISCA commands to camera.+----
  
-Only one command can be sent at a time; the list below are the only supported VISCA commands through the HTTP API. To use VISCA commands that are not listed, usage of the TCP socket can be used to send those VISCA commands.+JSON formatted table with values ​below
  
-API Format:+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-<​code>​ +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
-action=CameraControl&​command=visca_command&​cam_index=1+
  
-</​code>​+----
  
-**example:​**+==== SetAPConfig ====
  
-Commands without value assignments+----
  
-<​code>​ +Set the wifi and its password.
-action=CameraControl&​command=dzoom_off&​cam_index=1+
  
-</​code>​+== Parameters: ==
  
-Commands with value assignments+----
  
-<​code>​ +//**passwd **//  Get the wifi password
-action=CameraControl&​command=set_monitor_mode 1080p-59.94&​cam_index=1+
  
-</code>+//​**passwden**// ​ Get wifi enable / disable. Default value is disable. 
 +== Returns: ==
  
-The commands use the same syntax as the serial menu "​V"​ command, as shown below+----
  
-For the most current list of VISCA commands supported press "​V"​ from the Serial/SSH session of the Serial Menu.+JSON formatted table with values below
  
-<​code>​ +**//ret//* ​Custom return code of the HTTP POST request. 0 on success, 1 on failure.
-auto_icr_disable +
-auto_icr_enable +
-cam_control_inquiry +
-cam_custom_recall +
-cam_custom_reset +
-cam_custom_set +
-chroma_get_suppress +
-chroma_suppress ​     Set Chroma Suppression ​ (0=none, 1 to 3=chroma supression strength) +
-clear_if +
-color_gain ​          Set Color gain (0=60%, 14=200%) +
-color_get_gain +
-color_get_hue +
-color_hue ​           Set Color hue (0=-14 degrees, 14=+14 degrees) +
-debug_rx +
-dzoom_combine_mode +
-dzoom_direct ​        ​D-Zoom Position (0x00 to 0xeb) +
-                     Enabled during Separate mode +
-dzoom_off +
-dzoom_on +
-dzoom_separate_mode +
-dzoom_stop +
-dzoom_super_res +
-dzoom_tele_var ​      p = 0 (Low) .. 7 (High) +
-                     Enabled during Separate Mode +
-dzoom_wide_var ​      p = 0 (Low) .. 7 (High) +
-                     Enabled during Separate Mode +
-dzoom_x1_max +
-eflip_off +
-eflip_on +
-ext1_func_inquiry +
-ext2_func_inquiry +
-ext3_func_inquiry +
-focus_auto +
-focus_direct ​        focus pos +
-                     Min. 0x1000 Over Inf +
-                     ​0x2000 10m +
-                     ​0x3000 5m +
-                     ​0x4000 3.3m +
-                     ​0x5000 2.5m +
-                     ​0x6000 2m +
-                     ​0x7000 1.7m +
-                     ​0x8000 1.5m +
-                     ​0x9000 1m +
-                     ​0xa000 50cm +
-                     ​0xb000 30cm +
-                     ​0xc000 15cm +
-                     ​0xd000 6cm +
-                     ​0xe000 1cm +
-focus_get_mode +
-focus_get_pos +
-focus_manual +
-focus_near_limit ​    focus near limit +
-                     Min. 0x1000 Over Inf +
-                     ​0x2000 10m +
-                     ​0x3000 5m +
-                     ​0x4000 3.3m +
-                     ​0x5000 2.5m +
-                     ​0x6000 2m +
-                     ​0x7000 1.7m +
-                     ​0x8000 1.5m +
-                     ​0x9000 1m +
-                     ​0xa000 50cm +
-                     ​0xb000 30cm +
-                     ​0xc000 15cm +
-                     ​0xd000 6cm +
-                     ​0xe000 1cm +
-focus_stop +
-focus_tele_std +
-focus_tele_var ​      p = 0 (Low) .. 7 (High) +
-focus_toggle +
-focus_wide_std +
-focus_wide_var ​      p (0 (Low) .. 7 (High)) +
-get_low_delay_mode ​  Get low delay mode: 0 - normal, 1 - low delay +
-get_monitor_mode ​    ​get_monitor_mode:​ Get video mode of camera output +
-help +
-high_sensitivity_off +
-high_sensitivity_on +
-icr_mode ​            ​modes:​ +
-                     ​auto +
-                     on +
-                     off +
-                     ​threshold [0-255] +
-lens_control_inquiry +
-lens_get_temp +
-lr_reverse_off +
-lr_reverse_on +
-other_inquiry +
-power_inquiry +
-power_off +
-power_on +
-register_read ​       Read internal register. +
-register_write ​      Write internal register. +
-                     * Note: To make register changes effective, run power_off and power_on +
-set_address +
-set_low_delay_mode ​  Set low delay mode: - normal, 1 - low delay +
-set_monitor_mode ​    Set monitor mode. +
-                     List of modes: 1080p-25 +
-                     ​720p-50 +
-                     ​720p-59.94 +
-                     ​2160p-25 +
-                     ​2160p-29.97 +
-                     ​1080p-29.97 +
-                     ​1080p-59.94 +
-                     ​1080p-50 +
-slow_shutter ​        ​modes:​ +
-                     on +
-                     off +
-limit [0-255] +
-trace                enable (0=off, 1=on+
-version_inquiry +
-wb_auto_mode +
-wb_autotrace_mode +
-wb_get_bgain +
-wb_get_mode +
-wb_get_mode_name +
-wb_get_rgain +
-wb_indoor_mode +
-wb_manual_bgain_direct Set Manual WB BGain (0..255) +
-                       * Enabled during Manual WB mode +
-wb_manual_bgain_reset +
-wb_manual_mode +
-wb_manual_rgain_direct Set Manual WB RGain (0..255) +
-                       * Enabled during Manual WB mode +
-wb_manual_rgain_reset +
-wb_onepush_mode +
-wb_onepush_trigger +
-wb_outdoor_auto_mode +
-wb_outdoor_mode +
-wb_sodium_lamp_auto_mode +
-wb_sodium_lamp_fixed_mode +
-wb_sodium_lamp_outdoor_mode +
-zoom_direct ​         pos +
-                     Min. 0x0000 +
-                     Max. 0x4000 (In Separate mode) +
-                     Max. 0x4000 (In Combine mode and DZoom=Off) +
-                     Max. 0x59C0 (In Combine mode, DZoom=Super Resolution Zoom, and monitoring mode QFHD) +
-                     Max. 0x6000h (In Combine mode, DZoom=Super Resolution Zoom, and monitoring mode FHD or less) +
-                     Max. 0x7AC0h (In Combine mode and DZoom=On) +
-zoom_get_pos +
-zoom_stop +
-zoom_tele_std +
-zoom_tele_var ​       p = 0 (Low) .. 7 (High) +
-zoom_wide_std +
-zoom_wide_var ​       p (0 (Low) .7 (High))+
  
-</code>+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-With dual VISCA camera supported added we need to tell the API which camera we want to talk to. this is done with cam_index+----
  
-The values accepted are either 1 or 2+==== SetAudio ====
  
 +----
  
-==== SaveCamera ====+Save the audio input settings in the Database.
  
 +== Parameters: ==
  
-Save camera-related settings below.+----
  
 +//**aport **//  Get the audio port. Default value is MIC. Possible values are MIC , MICL
  
-=== zoom_direct_value ===+//​**analog_gain_db**// ​ Get the analog gain decibal value. Default value is 0. The value ranges are -97 to 30. 
 +== Returns: ​==
  
 +----
  
-Description:​ Set camera zoom+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Possible values: 0 (wide) to 0x7ac0 (full zoom)+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-=== white_balance_mode ​===+==== SetCameraLink ====
  
 +----
  
-Possible ​values: autoindoor, outdoor, onepush, autotrace, manual, outdoor_auto,​+Save the color table and pixel format ​values ​in the Database and set the color table and pixel format in the fpga.
  
 +== Parameters: ==
  
-<​code>​ +----
-               ​sodium_lamp_auto,​ sodium_lamp_fixed,​ sodium_lamp_outdoor +
-</​code>​+
  
 +//**val **//  Get the value for color table and pixel format.
  
-=== color_gain ===+//**opt **//  The options are color table and pixel format. 
 +== Returns: ​==
  
 +----
  
-Possible ​values: Range from 0 (60%) to 14 (200%)+JSON formatted table with values ​below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-=== color_hue ===+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-Possible values: Range from 0 (60%) to 14 (200%)+==== SetConsole ====
  
 +----
  
-=== chroma_suppress ===+Set the console value as ttyAMA0 or none.
  
 +== Parameters: ==
  
-Possible values: 0=none, 1, 2, 3+----
  
 +//​**console_enable **//  Get console value is enabled / disabled.
 +== Returns: ==
  
-=== wb_manual_rgain_direct ===+----
  
 +JSON formatted table with values below
  
-Possible values: ​to 255+**//​ret//​** ​ Custom return code of the HTTP POST request. ​on success, 1 on failure.
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-=== wb_manual_bgain_direct ===+----
  
 +==== SetDDNSEnable ====
  
-Possible values: 0 to 255+----
  
 +Set the Dynamic Domain Name System settings in the Database.
  
-=== optical_zoom_only ===+== Parameters: ​==
  
 +----
  
-Possible values: 01+//​**ddns_enable **//  Get the ddns enable value. Default value is Off. Possible values; (OnOff)
  
 +//​**ddns_provider **//  Get the ddns provider. Default value is freedns. Possible values: //​(//​freedns,​ freemyip, dyn, domains.google.com,​ duckdns.org,​ no-ip.com, tunnelbroker.net,​ dynv6.com, cloudxnv.net,​ dnspod.cn, cloudflare.com).
  
-=== focus_direct_value ===+//​**ddns_username **//  Provide the username.
  
 +//​**ddns_password ** //Provide the password.
  
-DescriptionSet manual camera focus distance Possible values: 0x1000 to 0xf000+//​**ddns_hostname ** //Hostname for DDNS login. 
 +== Returns==
  
 +----
  
-=== manual_focus ===+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Description:​ Set focus mode+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-Possible values: auto, manual+==== SetDebugLevel ====
  
 +----
 +
 +Set the logging level. The setting is persistent.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**sysdebuglevel **//  Get the system debug level. Possible values 0=None, 1=Error, 2=Information,​ 3=Diagnostics,​ 4=Codeflow, 5=Dataflow.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetDevName ====
 +
 +----
 +
 +Set the device name in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**sysdevicename **//  Get the system device name.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetDisplay ====
 +
 +----
 +
 +Controls composite output (passthru video from camera).
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**disp_std **//  Get display standard for encoder. Default value is Auto.
 +
 +//​**disp_input **//  Get display input for encoder. Default value is MACRO_DEFAULT_DISP_INPUT.
 +
 +//​**save_only**// ​ Possible values: (True / False)
 +
 +//​**disp_layout **//  Display layout for decoder. Default value is 1×1.
 +
 +//​**disp_mode **//  Display mode for decoder. Default value is UltraHD.
 +
 +//​**disp_std2 **//  Display standard for decoder. Default value is auto.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetDSCP ====
 +
 +----
 +
 +Set the DSCP configuration settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**diff_serve**// ​ Get the DSCP configuration value. Default value is 0x00. Possible values are ( 0x00, 0xB8, 0x88, 0x90, 0x98, 0x80, 0x68, 0x70, 0x78, 0x60, 0x48, 0x50, 0x58, 0x28, 0x30, 0x38, 0x01).
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetFpga ====
 +
 +----
 +
 +Set the fpga settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**fpgafileglob**// ​ Get fpga value. Possible values are (boson / cvbs / tamarisk / tau2).
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
  
 ==== SetIp ==== ==== SetIp ====
  
 +----
  
-=== local_ip ===+Control networking settings of the Z3 device such as local IPv4 IP address, netmask, etc. Additionally control Encoder Auto-Start after boot-up and enable/​disable showing of advanced WebUI settings.
  
 +== Parameters: ==
  
-IPv4 adresss+----
  
 +//​**do_autostart**// ​ Control automatic stream start after bootup. Possible values: 1 = do autostart 0 = do not autostart.
  
-=== local_netmask ===+//​**enc_adv_setting**// ​ Control appearance of advanced settings on WebUI. Possible values: off, on.
  
 +//​**ipmtu**// ​ Control Ethernet IP Maximum Transmission Unit (MTU) size in bytes. Possible values: 576 to 1500.
  
-IPv4 netmask+//​**eth_speed**// ​ Control Gigabit Ethernet auto-negotiation allowed speeds. Possible values: AUTO, AUTO-100, 1000, 100, 10.
  
 +//​**eth_duplex**// ​ Control Ethernet auto-negotiation allowed duplex. Possible values: AUTO, FULL, HALF.
  
-=== default_gw ===+//​**local_ip**// ​ IPv4 address.
  
 +//​**local_netmask**// ​ IPv4 netmask.
  
-IPv4 default gateway+//​**default_gw**//  ​IPv4 default gateway.
  
 +//​**local_dnsip**// ​ DNS server primary.
  
-=== local_dnsip ===+//​**local_dnsip2**// ​ DNS server secondary.
  
 +//​**use_dhcp**// ​ Controls use of DHCP or static IP. Possible values: 1 (DHCP enabled), 0 (DHCP disabled, use static IP).
  
-DNS server primary+//​**local_hostname**// ​ Network hostname. 
 +== Returns: ==
  
 +----
  
-=== local dnsip2 ===+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-DNS server secondary+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-=== do_autostart ​===+==== SetLoginLimit ====
  
 +----
  
-Control automatic stream start after bootup+Set the login limit settings in the Database
  
 +== Parameters: ==
  
-Possible values: 1 = do autostart 0 = do not autostart+----
  
 +//​**maxlogin**// ​ mximum number of login limit. Possible value in range (3 to 99 ).
  
-=== enc_adv_setting ===+//​**login_window**// ​ Login window period, the value are considered in seconds. Possible value in range (60 to 32768).
  
 +//​**lockout_interval**// ​ Lockout interval values are mentioned in seconds, which is used when maximum number of login limit is reached. Possible value in range (-1 to 32768)
  
-Control appearance of advanced settings on WebUI+//​**login_timeout**// ​ Login timeout 
 +== Returns: ==
  
 +----
  
-Possible ​values: off, on+JSON formatted table with values ​below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-==== SetDisplay ====+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-Controls composite output (passthru video from camera)+==== SetNFS ====
  
 +----
  
-=== disp_std ===+Set the NFS settings in the Database.
  
 +== Parameters: ==
  
-Set display standard for composite output+----
  
 +//​**nfs_enable**// ​ Enable/​Disable nfs
  
-Possible values; auto, ntsc, pal+//​**nfs_server**// ​ Get the nfs server ip address. Default is 192.168.1.6
  
 +//​**nfs_server_root**// ​ Get the server root path / location.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetSNTP ====
 +
 +----
 +
 +Set SNTP (Simple Network Time Protocol) settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**enable**// ​ Enable/​Disable SNTP. Possible value: true, false. Default value true.
 +
 +**//​servers//​** ​ NTP server or list of NTP servers.
 +
 +//​**timezone**// ​ Linux TZ database value for Timezone.
 +
 +//​**timezone_name**// ​ Name for a time zone. Default is America/​Chicago.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetSNMP ====
 +
 +----
 +
 +Set the SNMP settings in the database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**power_trap_en**// ​ Enable/​Disable power trap.
 +
 +//​**input_loss_trap_en **//  Enable/​Disable input loss trap.
 +
 +//​**input_recover_trap_en**// ​ Enable/​Disable input recover trap.
 +
 +//​**temp_high_trap_en**// ​ Enable/​Disable temp high trap.
 +
 +//​**temp_recover_trap_en**// ​ Enable/​Disable temperature recover trap.
 +
 +//​**trap_hosts **//  Trap hosts ipaddress. Default ip address value is 192.168.0.6.
 +
 +//​**high_temp_suppress**// ​ hiigh temperature. Default value is 30.
 +
 +//​**nominal_temp_suppress**// ​ nominal temperature default value is 30.
 +
 +//​**snmp_v3_en**// ​ Enable/​Disable SNMP
 +
 +//​**snmp_v3_encrypt **//  SNMP v3 encrypt value.
 +
 +//​**snmp_v3_user **//  z3user.
 +
 +//​**snmp_v3_passwd **//  z3password.
 +
 +//​**snmp_v3_usrpro **//  snmp v3 usrpro default value is md5.
 +
 +//​**snmp_v3_encrypt_passwd **//  z3password.
 +
 +//​**snmp_v3_encpro **//  decrypt value.
 +
 +//​**snmp_v3_engineid **//  Default value for engineid is 0.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetNMEAEnable ====
 +
 +----
 +
 +Save the GPS NMEA enable/​disable value in the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +**//​nmea_enable//​** ​ Enable/​Disable the NMEA. Possible value: on, off.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetOnvif ====
 +
 +----
 +
 +Save the ONVIF settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**fixed_profile_max**// ​ Get the Maximum ONVIF profiles to allow (1 or 2).
 +
 +//​**en_persistent_audio **//  Enable/​Disable ONVIF persistent audio channel.
 +
 +//​**onvif_enable**// ​ Enable/​Disable ONVIF.
 +
 +//​**list_all_video_sources **//  List all the video source.
 +
 +//​**ptz_timeout **//  Get the PTZ timeout values.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetOnvifVMD ====
 +
 +----
 +
 +Save the ONVIF video motion detection and too darkness settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**vmd_enable **//  Enable/​Disable video motion detection.
 +
 +//​**vmd_sens**// ​ sensitivity value required for vmd. Possible value in range: (1 to 100).
 +
 +//​**vmd_zone_modify **//  Enable/​Disable video motion and too darkness zone coordinates.
 +
 +//​**vmd_vcrop_width **//  crop width of the coordinates.
 +
 +//​**vmd_vcrop_height**// ​ crop height for VMD and too_darkness.
 +
 +//​**vmd_vcrop_x **//  crop startx for VMD and too_darkness.
 +
 +//​**vmd_vcrop_y **//  crop starty for VMD and too_darkness.
 +
 +//​**td_enable **//  Enable/​Disable too darkness.
 +
 +//​**td_thresh **//  Threshold value for too darkness. Possible values in range: 1 to 100.
 +
 +//​**vmd_td_channel **//  Get the channel number. Possible values: 1, 2.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetRTSP ====
 +
 +----
 +
 +Set the RTSP settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**rtspd_port**// ​ Get rtsp port. Default value is 554.
 +
 +//​**rtspd_timeout**// ​ Timeout value required for the rtsp connection.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetTermSrvEnable ====
 +
 +----
 +
 +Sett the term server value in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**termserve_remote_enable**// ​ Enable/​Disable remote access to terminal server. Possible values are : on, off.
 +
 +//​**termserve_shared_enable**// ​ Enable/​Disable shared access to terminal server. Possible values are : on, off.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetVideoGroup ====
 +
 +----
 +
 +Set the video group configuration settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//**group **//  Video config groups. Default value 0.
 +
 +//​**nr_enable**// ​ Enable / Disable NR. Default value is on. Possible value: on/off.
 +
 +//​**crop_enable**// ​ Enabled / Disable the crop.
 +
 +//​**crop_x**// ​ Crop x coordinates.
 +
 +//​**crop_y**// ​ Crop y coordinates.
 +
 +//​**crop_width**// ​ Crop width
 +
 +//​**crop_height **//  Crop height
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetViewport ====
 +
 +----
 +
 +Set the view port for the decoder and update in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +
 +//​**viewport**// ​ viewport settings. The default value is fit.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetViVpssMode ====
 +
 +----
 +
 +Set the ViVpss mode settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**enc_vivpss_mode_enable **//  Enable/​Disable the vivpss mode. Default value is off. Possible values: on, off.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetWifiAP ====
 +
 +----
 +
 +Set the wifi network settings in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**ssid**// ​ Get the Wifi service set identifier value.
 +
 +//​**psk**// ​ Get the Wifi password.
 +
 +//​**wifi_client_local_ip**// ​ Local IP addres.
 +
 +//​**wifi_client_local_local_netmask**// ​ Subnet mask for Wifi network.
 +
 +//​**wifi_client_default_gw**// ​ Default Gateway be used for Wifi Network.
 +
 +//​**wifi_client_use_dhcp**// ​ DHCP server used with Wifi network for DNS resolutions.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== SetZFinderEnable ====
 +
 +----
 +
 +Save ZFinder enable / disable in the Databse.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**zfinder_enable**// ​ Get ZFinder enable/​disable value. Possible values: off, on
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== StartChannel ====
 +
 +----
 +
 +Start the encoder channel and update the state as running in the Database. Once you start the channel, it will not transmit data until the video input is detected.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +
 +//​**actv_preset ** //
 +
 +//**vsource **//  video source. Default value is Camera1. Possible values: Camera1 / Camer2 / HDMI1.
 +
 +//​**vres**// ​ video resolution. Default value is Follow Input. Possible values: Follow Input, 3840 x 2160, 1920 x 1080, 1440 x 1080, 1280 x 1024, 1280 x 720, 1024 x 768, 960 x 720, 1024 x 576.
 +
 +//**vcodec **//  video codec. Default value is H265. Possible values: H265, H264, MJPEG, none.
 +
 +//**vgdr **//  video gradual data refresh. Default value is on. Possible value on, off.
 +
 +//​**vprofile**// ​ video profile. Default value is high. Possible value high, main, baseline.
 +
 +//​**vratectrl**// ​ video rate control. Default value is cbr. Possible value cbr, vbr.
 +
 +**vbitrate** video bit rate.
 +
 +//​**vframeratediv**// ​ video frame rate. Default value is 1. Possible values: 1 (Full), 2 (Half), 4 (Quarter), 6 (Sixth).
 +
 +//​**vgopsize **//  video group of picture size. Default value is 60. Possible values: 1 (1 Frame Only), 5 (5 Frames), 8 (8 Frames), 10 (10 Frames), 12 (12 Frames), 15 (15 Frames), 25 (25 Frames), 30 (30 Frames), 50 (50 Frames), 60 (60 Frames), 90 (90 Frames), 100 (100 Frames), 120 (120 Frames), 200 (200 Frames), 240 (240 Frames).
 +
 +//​**vprotocol**// ​ video protocol.
 +
 +//​**vdest**// ​ video destination port.
 +
 +//**vpid **//  video packet identifier. Default value is 221.
 +
 +//​**vdelay**// ​ video delay. Default value is 300.
 +
 +//​**pcrpid**// ​ PCR packet identifier. Default value is 521.
 +
 +//​**pcrinterval**// ​ Default value is 50.
 +
 +//​**pmtpid**// ​ program map table packet identifier. Default value is 31.
 +
 +//​**tsrate**// ​ bit rate for transport stream. Default value is 5000K.
 +
 +//​**tslowlat **//  transport stream low latency mode. Default value is off. Possible values: on, off.
 +
 +//​**feconoff **//  Forward error correction in transport stream enable/ disable. Default value is off. Possible values: on, off.
 +
 +//**fecrow **//  Forward error correction row. Default value is 1.
 +
 +//**feccol **//  Forward error correction column, Default value is 5.
 +
 +//​**zixioverhead **//  ZIXI Forward Error Correction total overhead as a percentage of transport rate. Default value is 15.
 +
 +//​**zixilatency**// ​ ZIXI target latency (to allow ARQ) in milliseconds. Default value is 500.
 +
 +//​**zixifecblock**// ​ ZIXI Forward Error Correction block size in milliseconds. Max value is 1/2 of Zixi Latency. Default value is 50.
 +
 +//​**zixirateadjen**// ​ ZIXI dynamic bitrate adjustment according to network conditions. Default value is on. Possible values: on, off.
 +
 +//​**zixiauthen**// ​ ZIXI dynamic authentication enable/​disable . Default value is off. Possible values: on, off.
 +
 +//​**zixisession **//  ZIXI session id. Default value is test.
 +
 +//​**zixiuser **//  ZIXI user identifier. Default value is user.
 +
 +//**aenable **//  Audio enable/​disable. Default value is on. Possible values: on, off.asource. Default value is MICL.
 +
 +//​**apair**// ​ Stereo pair select for digital inputs. Default value is 0. Possible values: (0 (1+2), 1 (3+4), 2 (5+6), 3 (7+8), 260 (1+2,3+4), 548 (1+2,​3+4,​5+6),​ 1252 (1+2,​3+4,​5+6,​7+8)).
 +
 +//​**acodec**// ​ Audio codec. Default value is fdk_aaclc.
 +
 +//​**abitrate**// ​ Audio bit rate. Default value is 128000.
 +
 +//​**asamplerate **//  Audio sample rate. Default value is 48000.
 +
 +//**aport **//  Audio port. Default value is 8700.
 +
 +//**apid **//  Audio packet identifier. Default value is 120.
 +
 +//​**aptspcr**// ​ Maximum difference between the PTS and PCR in the audio stream Default value is 250.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== StartMTS ====
 +
 +----
 +
 +Start the MTS.
 +
 +== Parameters: ==
 +
 +----
 +
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== StopChannel ====
 +
 +----
 +
 +Stop the encoder channel and update the state in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== StopMTS ====
 +
 +----
 +
 +Stop the MTS.
 +
 +== Parameters: ==
 +
 +----
 +
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== TempStatus ====
 +
 +----
 +
 +Get the current temperature status for CPU and lense.
 +
 +== Parameters: ==
 +
 +----
 +
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== update_require_web_login ====
 +
 +----
 +
 +Update/​Change whether web login credential required or not in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**require**// ​ Required web login value. Possible values: 1 or 0
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== UpdatePtz ====
 +
 +----
 +
 +Update the PTZ value in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**data**// ​ Parse the JSON formatted data and retrieve the PTZ values.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== UpdatePtzPreset ====
 +
 +----
 +
 +Update the PTZ preset value in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**data**// ​ Parse the JSON formatted data and retrieve the PTZ preset values.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
 +
 +==== UpdatePtzTourSpots ====
 +
 +----
 +
 +Update the PTZ tour spots value in the Database.
 +
 +== Parameters: ==
 +
 +----
 +
 +//​**data**// ​ Parse the JSON formatted data and retrieve the PTZ tour spots values.
 +== Returns: ==
 +
 +----
 +
 +JSON formatted table with values below
 +
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
 +
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
 +
 +----
  
 ==== UpdateTerm ==== ==== UpdateTerm ====
  
 +----
  
 Control serial port terminal server for VISCA Control serial port terminal server for VISCA
  
 +== Parameters: ==
  
-=== term_mode ===+----
  
 +//​**data**// ​ Parse the JSON formatted data and retrieve the terminal server values.
  
-Possible values: client, server+//​**term_mode**//  ​Possible values: client, server
  
 +//​**term_protocol**// ​ Possible values: clearchannel,​ telnet
  
-=== term_protocol ===+//​**term_localport**// ​ Local TCP port (for server mode)
  
 +//​**term_servaddr**// ​ Remote IP address (for client mode only)
  
-Possible values: clearchannel,​ telnet+//​**term_servport**// ​ Remote TCP port (for client mode only)
  
 +//​**term_data_bits**// ​ number of data bits.
  
-=== term_localport ===+//​**term_parity**// ​ Possible values: None, Odd, Even, Mark, Space
  
 +//​**term_stop_bits**// ​ Stop bits sent at the end of every character.
  
-Local TCP port (for server mode)+//​**term_baudrate**// ​ Possible values: 9600, 19200, 38400, 57600, 115200
  
 +//​**term_devicefile**// ​ device fine name
  
-=== term_servaddr ===+//​**term_function**// ​ functionality 
 +== Returns: ​==
  
 +----
  
-Remote IP address (for client mode only)+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-=== term_servport ===+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-Remote TCP port (for client mode only)+==== user_add ====
  
 +----
  
-=== term_baudrate ===+Add a new user in the Database.
  
 +== Parameters: ==
  
-Possible values: 9600, 19200, 38400, 57600, 115200+----
  
 +//​**Name**// ​ Get new user name
  
-=== term_devicefile ===+//​**Level**// ​ Get the level of permission for the new user name. Possible value: 0 to 7.
  
 +//​**Password**// ​ Get the password for the new user name.
 +== Returns: ==
  
-==== Overlay ====+----
  
 +JSON formatted table with values below
  
-Add/Update overlay+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-=== chn ===+----
  
 +==== user_remove ====
  
-​Encoder channel to add overlay to.+----
  
 +Remove the user from the database.
  
-=== rgn_idx ===+== Parameters: ​==
  
 +----
  
-​Index to map overlay to.+//**data **//  Parse the JSON formatted data and retrieve the user name. 
 +== Returns: ==
  
 +----
  
-=== ​type ===+JSON formatted table with values below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Type of overlay to be used possible values: text or png.+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-=== source ​===+==== user_update_level ====
  
 +----
  
-In the case of text overlay this would be the source text for png overlay this is the path to the png on the encoder. Images must be uploaded to board to be used.+Update/​change ​the level of permission ​to the given user name.
  
 +== Parameters: ==
  
-=== location ===+----
  
 +//**data **//  Parse the JSON formatted data and retrieve the user name and level of the permission.
 +== Returns: ==
  
-This is the location of the overlay. Possible values: '​top_left',​ '​top_right',​ '​top_center',​ '​bottom_left',​ '​bottom_right',​ '​bottom_center',​ '​x,​y'​ (negative numbers not supported for x or y)+----
  
 +JSON formatted table with values below
  
-=== char_size ===+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-For text overlay this is the character size. Possible values: 16,32,64+----
  
 +==== user_update_password ====
  
-=== layer ===+----
  
 +Update/​change the password to the given user name.
  
-This will set the layer for the overly higher numbers will overlay over lower numbers if overlapping.+== Parameters: ==
  
 +----
  
-=== alpha ===+//**data **//  Parse the JSON formatted data and retrieve the user name and password. 
 +== Returns: ​==
  
 +----
  
-Sets the transparency of the text. Possible ​values: 0-255+JSON formatted table with values ​below
  
 +**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-==== OverlayStop ====+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
 +----
  
-=== chn ===+==== download_remove ====
  
 +----
  
-​Encoder channel to remove overlay from.+<code html4strict>​ 
 +http://​Encoder_IP/​cgi-bin/​control.cgi?​action=download_remove&​data=FILENAME
  
 +http://​192.168.0.120/​cgi-bin/​control.cgi?​action=download_remove&​data=/​media/​sda/​MOV1_000040.mp4
  
-=== rgn_idx === 
  
 +</​code>​
  
-​Index of overly for this channel.+remove the downloaded media content from the usb drive or sd card.
  
 +== Parameters: ==
  
-==== ​Dynamic ====+----
  
 +//**data **//  Filename from the downloaded media content to be removed from the removable media device.
 +== Returns: ==
  
-=== chn ===+----
  
 +JSON formatted table with values below
  
-​Encoder channel to apply dynamic command to.+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-<font 12.8px/​Arial,​ sans-serif;;#​000000;;​inherit font-family: Arial, sans-serif; font-weight: bold; font-size: 12.8px;>​var</​font>​+----
  
  
-Variable to modify dynamically. Possible values: vratediv, vrate, gop, analog_gain,​ telop_text, pip_enable, pip_location,​ startmulticast,​ stopmulticast+===== Generic Control (GET) =====
  
 +==== 8021x ====
  
-=== val ===+----
  
 +Get the exthernet 802x information from the Database.
  
-Value to set dynamic variable to.+=== Parameters: ===
  
 +----
  
-==== ​SetSNTP ====+=== Returns: ​===
  
 +----
  
-=== enable ===+JSON formatted table with values below
  
 +//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
  
-Enable/Disable SNTP.+//​**interface**// ​ TEXT,
  
 +**//​enable//​** ​ TEXT.
  
-=== servers ===+//​**eap**// ​ TEXT.
  
 +**//​anonymous_identity//​** ​ TEXT.
  
-NTP server or list of NTP servers.+//​**identity**// ​ TEXT.
  
 +//​**password**// ​ TEXT.
  
-=== timezone ===+//​**private_key_password**// ​ TEXT.
  
 +----
  
-Linux TZ database value for Timezone. 
  
 +==== GetCronJobs ====
  
-==== ​SetOnvif ====+----
  
 +Get the schedule job from the Database.
  
-=== enable ​===+=== Parameters: ​===
  
 +----
  
-Enable/​Disable ONVIF.+=== Returns: ===
  
 +----
  
-=== fixed_profile_max ===+JSON formatted table with values below
  
 +//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
  
-Maximum ONVIF profiles to allow (1 or 2).+**//​enable//​** ​ INTEGER,
  
 +//​**cron**// ​ TEXT.
  
-==== ​SetTermSrvEnable ====+//​**func**// ​ TEXT.
  
 +**//​func_args//​** ​ TEXT.
  
-=== termserve_remote_enable ===+//​**type**// ​ TEXT.
  
 +//​**minutes**// ​ INTEGER.
  
-Enable/Disable remote access to terminal server.+//​**hours**// ​ INTEGER.
  
 +//​**day**// ​ INTEGER.
  
-==== ​SetZFinderEnable ====+//​**month**// ​ INTEGER.
  
 +//​**cron**// ​ TEXT.
  
-=== zfinder_enable ===+----
  
  
-Enable/​Disable zfinder support.+==== GetNFSMount ====
  
 +----
  
-===== Encoder Actions (POST) =====+Get the Network File Sharing mounted infromation from the device.
  
 +=== Parameters: ===
  
-==== SetEncoder ====+----
  
 +=== Returns: ===
  
-Write encoder settings to active preset. See Python example code for Seting Configuration below+----
  
 +JSON formatted table with values below
  
-==== EncoderStatus ====+//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
  
 +**//​mounted//​** ​ TEXT,
  
-Requests an update to encoder_status_str variable.+----
  
  
-To read the result, you need to POST the “stats” control as shown%%\%% in the Python example code below.+==== aspect_info ====
  
 +----
  
-==== StreamStatus ====+Get the video resolution for the current channel from the Database and calculate the aspect ratio.
  
 +=== Parameters: ===
  
-Requests an update to stream_status_str variable.+----
  
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +=== Returns: ===
  
-To read the result, you need to POST the “stats” control as shown%%\%% in the Python example code below.+----
  
 +JSON formatted table with values below
  
-==== AStreamStatus ====+//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
  
 +//​**numerator**// ​ INTEGER,
  
-Requests an update to astream_status_str variable.+//​**denominator**// ​ INTEGER.
  
 +----
  
-To read the result, you need to POST the “stats” control as shown%%\%% in the Python example code below. 
  
 +==== boardinfo ====
  
-==== SourceStatus ====+----
  
 +Get the board and model information from the Database.
  
-Requests an update to source_status_str variable.+=== Parameters: ===
  
 +----
  
-To read the result, you need to POST the “stats” control as shown%%\%% in the Python example code below.+=== Returns: ===
  
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
 +
 +//​**logo_enable**// ​ TEXT,
 +
 +//​**logo_filename**// ​ TEXT.
 +
 +//​**logo_width**// ​ INTEGER.
 +
 +//​**logo_height**// ​ INTEGER.
 +
 +//​**logo_blob**// ​ BLOB.
 +
 +//​**ico_blob**// ​ BLOB.
 +
 +//​**model_enable**// ​ TEXT.
 +
 +//​**model_name**// ​ TEXT.
  
 ---- ----
  
  
-===== Setting Encoder Configuration =====+==== cam_state ​====
  
 +----
 +
 +Get the current camera state information from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
 +
 +//​**preset**// ​ TEXT,
 +
 +//​**enc_channels**// ​ TEXT.
 +
 +//​**opmode**// ​ TEXT.
 +
 +//​**enc_current_preset**// ​ TEXT.
 +
 +//​**dec_current_preset**// ​ TEXT.
 +
 +----
 +
 +
 +==== camera ====
 +
 +----
 +
 +Get the current camera settings from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +//​**chn**// ​ Get the channel number. The default is Camera 1. Select between connected cameras. Possible values: 1 = Camera 1, 2 = Camera 2.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
 +
 +//​**zoom_direct_value**// ​ INTEGER.
 +
 +//​**white_balance_mode**// ​ TEXT.
 +
 +//​**color_gain**// ​ INTEGER.
 +
 +//​**color_hue**// ​ INTEGER.
 +
 +//​**chroma_suppress**// ​ INTEGER.
 +
 +//​**wb_manual_rgain_direct**// ​ INTEGER.
 +
 +//​**wb_manual_bgain_direct**// ​ INTEGER.
 +
 +//​**visca_localport**// ​ TEXT.
 +
 +//​**optical_zoom_only**// ​ BOOL. 0 or 1.
 +
 +//​**focus_direct_value**// ​ INTEGER.
 +
 +//​**manual_focus**// ​ TEXT.
 +
 +//​**flexio_localport**// ​ TEXT.
 +
 +//​**exposure_mode**// ​ INTEGER.
 +
 +//​**shutter**// ​ INTEGER.
 +
 +//​**iris**// ​ INTEGER.
 +
 +//​**gain**// ​ INTEGER.
 +
 +//​**high_sensitivity**// ​ INTEGER.
 +
 +//​**hlc_level**// ​ INTEGER.
 +
 +//​**hlc_level_mask**// ​ INTEGER.
 +
 +//​**stable_zoom**// ​ INTEGER.
 +
 +//​**eflip**// ​ INTEGER.
 +
 +//​**lr_reverse**// ​ INTEGER.
 +
 +//​**monitor_mode**// ​ TEXT.
 +
 +//​**genlock_source**// ​ INTEGER.
 +
 +//​**manual_icr**// ​ TEXT.
 +
 +//​**zoom_step_size**// ​ INTEGER.
 +
 +//​**focus_step_size**// ​ INTEGER.
 +
 +//​**img_freeze**// ​ INTEGER.
 +
 +//​**hr_mode**// ​ INTEGER.
 +
 +//​**img_stabilizer**// ​ INTEGER.
 +
 +//​**img_bw**// ​ INTEGER.
 +
 +//​**nr_2d_level**// ​ INTEGER.
 +
 +//​**nr_3d_level**// ​ INTEGER.
 +
 +//​**icr_threshold**// ​ INTEGER.
 +
 +//​**slow_shutter**// ​ BOOL. 0 or 1.
 +
 +//​**slow_shutter_limit**// ​ INTEGER.
 +
 +//​**flicker_reduction**// ​ BOOL. 0 or 1.
 +
 +//​**img_stabilizer_level**// ​ INTEGER.
 +
 +//​**wide_dynamic_range**// ​ TEXT.
 +
 +//​**ve_brightness**// ​ TEXT.
 +
 +//​**ve_compensation_type**// ​ TEXT.
 +
 +//​**ve_compensation_level**// ​ TEXT.
 +
 +//​**tab_index**// ​ TEXT.
 +
 +//​**imgvflip**// ​ INTEGER.
 +
 +//​**imghflip**// ​ INTEGER.
 +
 +//​**imgrotate**// ​ INTEGER.
 +
 +----
 +
 +
 +==== camera_exposure ====
 +
 +----
 +
 +Get the current camera exposure values from the visca camera.
 +
 +=== Parameters: ===
 +
 +----
 +
 +//​**chn**// ​ Get the channel number. The default is Camera 1. Select between connected cameras. Possible values: 1 = Camera 1, 2 = Camera 2.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
 +
 +//​**ae_mode**// ​ TEXT,
 +
 +//​**shutter**// ​ TEXT.
 +
 +//​**iris**// ​ TEXT.
 +
 +//​**gain_inquiry**// ​ TEXT.
 +
 +//​**sensitivity**// ​ TEXT.
 +
 +//​**hls_inquiry**// ​ TEXT.
 +
 +//​**min_shutter**// ​ INTEGER.
 +
 +//​**max_shutter**// ​ INTEGER.
 +
 +//​**shutter_label**// ​ TEXT.
 +
 +//​**min_iris**// ​ INTEGER.
 +
 +//​**max_iris **//  INTEGER.
 +
 +//​**iris_label**// ​ TEXT.
 +
 +//​**min_gain**// ​ INTEGER.
 +
 +//​**max_gain**// ​ INTEGER.
 +
 +//​**gain_label**// ​ TEXT.
 +
 +----
 +
 +
 +==== camera_monitor_mode ====
 +
 +----
 +
 +Get the current camera monitor mode values from the visca camera.
 +
 +=== Parameters: ===
 +
 +----
 +
 +//​**chn**// ​ Get the channel number. The default is Camera 1. Select between connected cameras. Possible values: 1 = Camera 1, 2 = Camera 2.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
 +
 +//​**modes**// ​ TEXT.
 +
 +//​**current_mode**// ​ TEXT.
 +
 +----
 +
 +
 +==== dec ====
 +
 +----
 +
 +Get the current decoder settings from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
 +
 +//​**preset**// ​ TEXT.
 +
 +//​**channel**// ​ INTEGER.
 +
 +//​**url**// ​ TEXT.
 +
 +**//​aenable//​** ​ TEXT.
 +
 +//​**viewport**// ​ TEXT.
 +
 +//​**latency_mode**// ​ TEXT.
 +
 +//​**max_latency_ms**// ​ TEXT.
 +
 +//​**srt_mode**// ​ TEXT.
 +
 +//​**srt_latency**// ​ TEXT.
 +
 +//​**srt_decrypt**// ​ TEXT.
 +
 +//​**srt_pass**// ​ TEXT.
 +
 +**//​zixi_fec//​** ​ TEXT.
 +
 +//​**zixi_fecoverhead**// ​ TEXT.
 +
 +//​**zixi_fecblock**// ​ TEXT.
 +
 +//​**zixi_latency**// ​ TEXT.
 +
 +**//​zixi_decrypt//​** ​ TEXT.
 +
 +//​**zixi_pass**// ​ TEXT.
 +
 +**//​rtsp_flags//​** ​ TEXT.
 +
 +----
 +
 +
 +==== download ====
 +
 +----
 +
 +Get the downloaded file information from the removable storage media.
 +
 +=== Parameters: ===
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +
 +//**job **//  Optional//​**. **//  The job from the schedule tab.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
 +
 +//​**FileName**// ​ TEXT.
 +
 +//​**FileSize**// ​ TEXT.
 +
 +//​**LastModified**// ​ TEXT.
 +
 +----
 +
 +
 +==== drs_tamarisk_settings ====
 +
 +----
 +
 +Get the camera model of drs tamarisk settings fromt the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +//**job **//  Optional//​**. **//  The job from the schedule tab.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
 +
 +//​**color_pallette**// ​ TEXT.
 +
 +//​**tab_index**// ​ TEXT.
 +
 +//​**color_pallette_disabled**// ​ TEXT.
 +
 +----
 +
 +
 +==== enc ====
 +
 +----
 +
 +Get the current channel encoder settings from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP GET request. 0 on success, -1 on failure.
 +
 +//​**preset**// ​ TEXT,
 +
 +//​**channel**// ​ INTEGER.
 +
 +//​**vbitrate**// ​ TEXT.
 +
 +//​**vframeratediv**// ​ INTEGER.
 +
 +//​**vsource**// ​ TEXT.
 +
 +//​**vcodec**// ​ TEXT.
 +
 +//​**vprofile**// ​ TEXT.
 +
 +//​**vprotocol**// ​ TEXT.
 +
 +//​**avmux_index**// ​ TEXT.
 +
 +//​**vgdr**// ​ TEXT.
 +
 +**//vdest// ** TEXT.
 +
 +//​**aenable**// ​ TEXT.
 +
 +//​**acodec**// ​ TEXT.
 +
 +//​**abitrate**// ​ TEXT.
 +
 +//​**asamplerate**// ​ TEXT.
 +
 +//​**aport**// ​ TEXT.
 +
 +//​**apair**// ​ INTEGER.
 +
 +//​**vres**// ​ TEXT.
 +
 +//​**vgopsize**// ​ INTEGER.
 +
 +//​**vpid**// ​ INTEGER.
 +
 +//​**apid**// ​ INTEGER.
 +
 +//​**zixiauthen**// ​ TEXT.
 +
 +//​**zixisession**// ​ TEXT.
 +
 +//​**zixiuser**// ​ TEXT.
 +
 +//​**zixioverhead**// ​ TEXT.
 +
 +//​**zixifecblock**// ​ TEXT.
 +
 +//​**zixilatency**// ​ TEXT.
 +
 +//​**zixirateadjen**// ​ TEXT.
 +
 +//​**fecrow**// ​ INTEGER.
 +
 +//​**feccol**// ​ INTEGER.
 +
 +//​**feconoff**// ​ TEXT.
 +
 +//​**aptspcr**// ​ INTEGER.
 +
 +//​**tslowlat**// ​ TEXT.
 +
 +//​**tsrate**// ​ TEXT.
 +
 +//​**pcrpid**// ​ INTEGER.
 +
 +//​**pcrinterval**// ​ INTEGER.
 +
 +//​**pmtpid**// ​ INTEGER.
 +
 +//​**klvenable**// ​ TEXT.
 +
 +//​**klvmode**// ​ TEXT.
 +
 +//​**klvmuxmethod**// ​ TEXT.
 +
 +//​**klvsrc**// ​ TEXT.
 +
 +//​**klvbrate**// ​ TEXT.
 +
 +//​**klvserialbaud**// ​ TEXT.
 +
 +//​**klvpid**// ​ TEXT.
 +
 +//​**vratectrl**// ​ TEXT.
 +
 +//​**vdelay**// ​ INTEGER.
 +
 +//​**storage**// ​ TEXT.
 +
 +//​**fprefix**// ​ TEXT.
 +
 +//​**asource**// ​ TEXT.
 +
 +//​**authonoff**// ​ TEXT.
 +
 +//​**auth_user**// ​ TEXT.
 +
 +//​**auth_passwd**// ​ TEXT.
 +
 +//​**auxonoff**// ​ TEXT.
 +
 +//​**filesize**// ​ TEXT.
 +
 +//​**nfstrength**// ​ TEXT.
 +
 +//​**telopenable**// ​ TEXT.
 +
 +//​**teloptext**// ​ TEXT.
 +
 +//​**teloplocation**// ​ TEXT.
 +
 +//​**telopcharsize**// ​ TEXT.
 +
 +//​**teloptextcolor**// ​ TEXT.
 +
 +//​**telopoutlineenable**// ​ TEXT.
 +
 +//​**telopoutlinecolor**// ​ TEXT.
 +
 +//​**gps_overlay_enable**// ​ TEXT.
 +
 +//​**gps_overlay_device**// ​ TEXT.
 +
 +//​**gps_overlay_location**// ​ TEXT.
 +
 +//​**gps_overlay_char_size**// ​ TEXT.
 +
 +//​**pipenable**// ​ TEXT.
 +
 +//​**piplocation**// ​ TEXT.
 +
 +//​**vquality**// ​ TEXT.
 +
 +//​**vinterlacemode**// ​ TEXT.
 +
 +//​**vmulticastdest**// ​ TEXT.
 +
 +//​**amulticastdest**// ​ TEXT.
 +
 +//​**rtsp_auth_enable**// ​ TEXT.
 +
 +//​**rtsp_auth_username**// ​ TEXT.
 +
 +//​**rtsp_auth_password**// ​ TEXT.
 +
 +//​**rtsp_transport_mode**// ​ TEXT.
 +
 +//​**lowdelay_opt**// ​ TEXT.
 +
 +//​**vcropaspect**// ​ TEXT.
 +
 +//​**vcrop_enable**// ​ TEXT.
 +
 +//​**vcrop_width**// ​ INTEGER.
 +
 +//​**vcrop_height**// ​ INTEGER.
 +
 +//​**vcrop_x**// ​ INTEGER.
 +
 +//​**vcrop_y**// ​ INTEGER.
 +
 +//​**rotate_enable**// ​ INTEGER.
 +
 +//​**rotate_angle**// ​ INTEGER.
 +
 +//​**rtmp265_enable**// ​ TEXT.
 +
 +//​**srt_pass**// ​ TEXT.
 +
 +//​**srt_encrypt**// ​ INTEGER.
 +
 +//​**srt_mode**// ​ INTEGER.
 +
 +//​**srt_destAddr**// ​ TEXT.
 +
 +//​**mmulticastdest**// ​ TEXT.
 +
 +//​**mport**// ​ TEXT.
 +
 +//​**frame_loss_mode**// ​ TEXT.
 +
 +//​**frame_loss_gap**// ​ INTEGER.
 +
 +//​**frame_loss_overshot**// ​ INTEGER.
 +
 +//​**mounts**// ​ TEXT.
 +
 +//​**source_status_str**// ​ TEXT.
 +
 +----
 +
 +
 +==== filepicker ====
 +
 +----
 +
 +Get the file type and its information from the removable storage media.
 +
 +=== Parameters: ===
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**filepicker_filename**// ​ TEXT,
 +
 +**//​filepicker_size//​** ​ INTEGER.
 +
 +//​**filepicker_lastmodified**// ​ TEXT.
 +
 +----
 +
 +==== fmt ====
 +
 +----
 +
 +Get the removable storage infromation from the device using fdisk command.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**mounts**// ​ TEXT,
 +
 +----
 +
 +==== focusStepSize ====
 +
 +----
 +
 +Get the current camera focus step values from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +//​**chn**// ​ Get the channel number. The default is Camera 1. Select between connected cameras. Possible values: 1 = Camera 1, 2 = Camera 2.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**focus_step_size**// ​ INTEGER,
 +
 +----
 +
 +==== fpga ====
 +
 +----
 +
 +Get the current fpga from firmware filename.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**fpgafileglob**// ​ TEXT,
 +
 +//​**options**// ​ TEXT.
 +
 +----
 +
 +==== history ====
 +
 +----
 +
 +Get the decoder history infromation from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**channel**// ​ TEXT,
 +
 +//​**histidx**// ​ TEXT.
 +
 +//​**url**// ​ TEXT.
 +
 +----
 +
 +==== ipinfo ====
 +
 +----
 +
 +Get the internet protocol infromation from the board.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**local_ip**// ​ TEXT,
 +
 +//​**local_netmask**// ​ TEXT.
 +
 +//​**default_gw**// ​ TEXT.
 +
 +//​**ipmtu**// ​ TEXT.
 +
 +//​**eth_speed**// ​ TEXT.
 +
 +//​**eth_duplex**// ​ TEXT.
 +
 +//​**do_autostart**// ​ BOOLEAN.
 +
 +----
 +
 +==== onvif ====
 +
 +----
 +
 +Get the ONVIF miscallenous settings from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**list_all_video_sources**// ​ INTEGER,
 +
 +//​**dns_from_dhcp**// ​ INTEGER,
 +
 +//​**ntp_from_dhcp**// ​ INTEGER,
 +
 +//​**ntp_enable**// ​ INTEGER,
 +
 +//​**daylightsaving**// ​ INTEGER,
 +
 +//​**timezone**// ​ TEXT.
 +
 +//​**http_enable**// ​ INTEGER,
 +
 +//​**http_port**// ​ INTEGER,
 +
 +//​**https_enable**// ​ INTEGER,
 +
 +//​**https_port**// ​ INTEGER,
 +
 +//​**rtsp_enable**// ​ INTEGER,
 +
 +//​**rtsp_port**// ​ INTEGER,
 +
 +//​**discoverable**// ​ INTEGER,
 +
 +//​**ntp**// ​ TEXT.
 +
 +//​**dns_search**// ​ TEXT.
 +
 +**//​ptz_timeout//​** ​ TEXT.
 +
 +//**primary fixed_profile_max **//  INTEGER,
 +
 +//​**secondary fixed_profile_max**// ​ INTEGER,
 +
 +//​**en_persistent_audio**// ​ TEXT.
 +
 +//​**onvif_enable**// ​ BOOLEAN.
 +
 +//​**vmd_enable**// ​ BOOLEAN.
 +
 +----
 +
 +==== onvif_vmd ====
 +
 +----
 +
 +Get the ONVIF video motion detection and too darkness settings from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**vmd_sens**// ​ INTEGER,
 +
 +//​**vmd_zone_modify**// ​ TEXT.
 +
 +//​**vmd_vcrop_width**// ​ INTEGER.
 +
 +//​**vmd_vcrop_height**// ​ INTEGER.
 +
 +**//​vmd_vcrop_x//​** ​ INTEGER.
 +
 +**//​vmd_vcrop_y//​** ​ INTEGER.
 +
 +//​**td_enable**// ​ TEXT.
 +
 +//​**td_thresh**// ​ INTEGER.
 +
 +//​**vmd_td_channel**// ​ TEXT.
 +
 +----
 +
 +==== permission ====
 +
 +----
 +
 +Get the current permission settings for admin, operators, and users from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**username**// ​ TEXT,
 +
 +//​**userlevel**// ​ TEXT.
 +
 +//​**api_command**// ​ TEXT.
 +
 +//​**superadmin**// ​ TEXT.
 +
 +**admin** TEXT.
 +
 +//​**operator1**// ​ TEXT.
 +
 +//​**operator2**// ​ TEXT.
 +
 +//​**user1**// ​ TEXT.
 +
 +//​**user2**// ​ TEXT.
 +
 +//​**user3**// ​ TEXT.
 +
 +**//​anonymous//​ ** TEXT.
 +
 +----
 +
 +==== ptz ====
 +
 +----
 +
 +Get the current PTZ settings from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**token**// ​ TEXT,
 +
 +**//​node//​** ​ TEXT.
 +
 +//​**name**// ​ TEXT.
 +
 +//​**enabled**// ​ BOOLEAN.
 +
 +//​**pelcoaddr**// ​ INTEGER.
 +
 +//​**tcpport**// ​ INTEGER.
 +
 +//​**ptztype**// ​ TEXT.
 +
 +//​**flip**// ​ TEXT.
 +
 +//​**pos**// ​ TEXT.
 +
 +//​**maxtilt**// ​ INTEGER.
 +
 +----
 +
 +==== ptz_preset ====
 +
 +----
 +
 +Get the PTZ preseting values from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**profiletoken**// ​ TEXT,
 +
 +//​**token**// ​ TEXT.
 +
 +//​**name**// ​ TEXT.
 +
 +//​**pan**// ​ FLOAT.
 +
 +//​**tilt**// ​ FLOAT.
 +
 +//​**zoom**// ​ FLOAT.
 +
 +----
 +
 +==== ptz_tour ====
 +
 +----
 +
 +Get the PTZ tour information from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**ProfileToken**// ​ TEXT,
 +
 +//​**PresetTourToken**// ​ TEXT.
 +
 +//​**name**// ​ TEXT.
 +
 +//​**autostart**// ​ BOOLEAN.
 +
 +**//​RecurringTime//​** ​ INTEGER.
 +
 +//​**RecurringDuration**// ​ TEXT.
 +
 +**//​PresetTourDirection//​** ​ INTEGER.
 +
 +//​**RandomPresetOrder**// ​ BOOLEAN.
 +
 +//​**ProfileToken**// ​ TEXT.
 +
 +//​**PresetTourToken**// ​ TEXT.
 +
 +**//​RowIndex //**  INTEGER.
 +
 +//​**PresetDetailToken**// ​ TEXT.
 +
 +//​**PresetDetailHome**// ​ BOOLEAN.
 +
 +//​**StayTime**// ​ TEXT.
 +
 +//​**pan**// ​ FLOAT.
 +
 +//​**tilt**// ​ FLOAT.
 +
 +//​**zoom**// ​ FLOAT.
 +
 +//​**pspeed**// ​ FLOAT.
 +
 +//​**tspeed**// ​ FLOAT.
 +
 +//​**zspeed**// ​ FLOAT.
 +
 +----
 +
 +==== snmp ====
 +
 +----
 +
 +Get the Simple Network Management Protocol values from the Database
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**power_trap_en**// ​ INTEGER,
 +
 +//​**input_loss_trap_en**// ​ INTEGER.
 +
 +//​**input_recover_trap_en**// ​ INTEGER.
 +
 +//​**temp_high_trap_en**// ​ INTEGER.
 +
 +//​**temp_recover_trap_en**// ​ INTEGER.
 +
 +//​**high_temp**// ​ INTEGER.
 +
 +//​**nominal_temp**// ​ INTEGER.
 +
 +//​**high_temp_suppress**// ​ INTEGER.
 +
 +//​**nominal_temp_suppress**// ​ INTEGER.
 +
 +//​**trap_hosts**// ​ INTEGER.
 +
 +//​**snmp_v3_en** // INTEGER.
 +
 +//​**snmp_v3_user**// ​ TEXT.
 +
 +//​**snmp_v3_passwd**// ​ TEXT.
 +
 +//​**snmp_v3_usrpro**// ​ TEXT.
 +
 +**//​snmp_v3_encrypt//​** ​ INTEGER.
 +
 +**//​snmp_v3_encrypt_passwd//​** ​ TEXT.
 +
 +**//​snmp_v3_encpro//​** ​ TEXT.
 +
 +**//​snmp_v3_engineid//​** ​ TEXT.
 +
 +----
 +
 +==== ssl ====
 +
 +----
 +
 +Get the Secure Socket Layer settings from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**https_enable**// ​ TEXT,
 +
 +//​**http_enable**// ​ TEXT.
 +
 +//​**https_port**// ​ INTEGER.
 +
 +//​**http_port**// ​ INTEGER.
 +
 +//​**cert_status**// ​ TEXT.
 +
 +**//​key_status//​** ​ TEXT.
 +
 +----
 +
 +==== stats ====
 +
 +----
 +
 +Get the available memory infromation from the device.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**mem_free_kb**// ​ TEXT,
 +
 +----
 +
 +==== sys ====
 +
 +----
 +
 +Get the current system settings from the Database and the ip information from the device.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**local_ip**// ​ TEXT,
 +
 +//​**local_netmask**// ​ TEXT.
 +
 +//​**preset**// ​ TEXT.
 +
 +//​**enc_channels**// ​ TEXT.
 +
 +//​**opmode**// ​ TEXT.
 +
 +//​**username**// ​ TEXT.
 +
 +//​**userlevel**// ​ TEXT.
 +
 +//​**do_autostart**// ​ BOOLEAN.
 +
 +//​**syspassword**// ​ TEXT.
 +
 +//​**session_id**// ​ TEXT.
 +
 +//​**disp_std** // TEXT.
 +
 +//​**disp_std2**// ​ TEXT.
 +
 +//​**disp_input**// ​ TEXT.
 +
 +//​**disp_mode**// ​ TEXT.
 +
 +//​**disp_layout**// ​ TEXT.
 +
 +**//​enc_adv_setting//​** ​ TEXT.
 +
 +**//​enc_vivpss_mode_enable//​** ​ TEXT.
 +
 +//​**enable_sntp**// ​ TEXT.
 +
 +//​**sntp_servers**// ​ TEXT.
 +
 +//​**enable_snmp**// ​ TEXT.
 +
 +//​**sysdevicename**// ​ TEXT.
 +
 +//​**timezone**// ​ TEXT.
 +
 +//​**timezone_name**// ​ TEXT.
 +
 +//​**termserve_remote_enable**// ​ TEXT.
 +
 +//​**termserve_shared_enable**// ​ TEXT.
 +
 +//​**zfinder_enable**// ​ TEXT.
 +
 +//​**diff_serve**// ​ INTEGER.
 +
 +//​**enable_ptp**// ​ TEXT.
 +
 +//​**ptp_role**// ​ TEXT.
 +
 +//​**nmea_enable**// ​ TEXT.
 +
 +//​**nfs_enable**// ​ TEXT.
 +
 +//​**nfs_server **//  TEXT.
 +
 +//​**nfs_server_root**// ​ TEXT.
 +
 +//​**ddns_enable**// ​ TEXT.
 +
 +//​**ddns_provider**// ​ TEXT.
 +
 +//​**ddns_username**// ​ TEXT.
 +
 +//​**ddns_password**// ​ TEXT.
 +
 +//​**rtspd_port**// ​ INTEGER.
 +
 +//​**rtspd_timeout**// ​ INTEGER.
 +
 +//​**maxlogin**// ​ INTEGER.
 +
 +//​**login_window**// ​ INTEGER.
 +
 +//​**lockout_interval**// ​ INTEGER.
 +
 +//​**login_timeout**// ​ INTEGER.
 +
 +//​**require_web_login**// ​ BOOLEAN.
 +
 +----
 +
 +==== term ====
 +
 +----
 +
 +Get the remote terminal information from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +**//​term_mode//​** ​ TEXT,
 +
 +**//​term_protocol//​** ​ TEXT.
 +
 +//​**term_localport**// ​ TEXT.
 +
 +//​**term_servaddr**// ​ TEXT.
 +
 +//​**term_servport**// ​ TEXT.
 +
 +**//​term_data_bits//​** ​ TEXT.
 +
 +//​**term_parity**// ​ TEXT.
 +
 +//​**term_stop_bits**// ​ TEXT.
 +
 +//​**term_baudrate**// ​ TEXT.
 +
 +**//​term_devicefile//​** ​ TEXT.
 +
 +//​**term_function**// ​ TEXT.
 +
 +----
 +
 +==== users ====
 +
 +----
 +
 +Get the ONVIF user information and the permission level from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**Name**// ​ TEXT,
 +
 +//​**Level**// ​ INTEGER.
 +
 +//​**Password**// ​ TEXT.
 +
 +//​**Password_MD5**// ​ TEXT.
 +
 +//​**Password_SHA256**// ​ TEXT.
 +
 +//​**Password_SHA512_256**// ​ TEXT.
 +
 +----
 +
 +==== video_group ====
 +
 +----
 +
 +Get the current video group settings from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +//​**chn**// ​ Get the channel number. The default is Camera 1. Select between connected cameras. Possible values: 1 = Camera 1, 2 = Camera 2.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**vgroup**// ​ INTEGER.
 +
 +**//​crop_enable//​** ​ TEXT.
 +
 +**//​crop_width//​** ​ INTEGER.
 +
 +**//​crop_height//​** ​ INTEGER.
 +
 +**//​crop_x//​** ​ INTEGER.
 +
 +**//​crop_y//​** ​ INTEGER.
 +
 +//​**nr_enable**// ​ TEXT.
 +
 +----
 +
 +==== wifi ====
 +
 +----
 +
 +Get the Wifi details from the device and wifi client information from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**networks**// ​ TEXT,
 +
 +//​**cur_network**// ​ TEXT,
 +
 +//​**cur_pass**// ​ TEXT,
 +
 +//​**ap_pass**// ​ TEXT,
 +
 +//​**ap_pass_en **//  BOOLEAN.
 +
 +//​**ap_ssid**// ​ TEXT,
 +
 +**//​wifi_client_local_ip//​** ​ TEXT,
 +
 +//​**wifi_client_local_netmask**// ​ TEXT.
 +
 +//​**wifi_client_default_gw**// ​ TEXT.
 +
 +//​**wifi_client_use_dhcp**// ​ BOOLEAN.
 +
 +----
 +
 +==== zoomStepSize ====
 +
 +----
 +
 +Get the current camera zoom step values from the Database.
 +
 +=== Parameters: ===
 +
 +----
 +
 +//​**chn**// ​ Get the channel number. The default is Camera 1. Select between connected cameras. Possible values: 1 = Camera 1, 2 = Camera 2.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below
 +
 +//​**ret**// ​ Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//​**zoom_step_size**// ​ INTEGER,
 +
 +----
 +
 +====== File Upload for MFR or UPD Image Control ======
 +
 +===== Upload Image (POST) =====
 +
 +----
 +
 +Upload the z3 image for e.g. (z3-30-0139-mfr.img or z3-30-0139-upd.img) in the z3 device.
 +
 +Before uploading the new image, it checks, whether the device has enough free memory or not and removes the coredump files. If the image is *mfr.img then it removes the default database from the data partition. If its *upd.img then it will not remove the database values.
 +
 +Note:\\
 +It takes approximately 5 minutes to update; DO NOT SEND ANY OTHER API Commands after uploading the image for at least 5 minutes. (time.sleep(300) or equivalent in scripts)
 +
 +=== Parameters: ===
 +
 +----
 +
 +**//​img_file//​** ​ Get the file name which needs to be flashed in the z3 device.
 +=== Returns: ===
 +
 +----
 +
 +Flash the image and reboot the device.
 +
 +Note:\\
 +It takes approximately 5 minutes to update; DO NOT SEND ANY OTHER API Commands after uploading the image for at least 5 minutes. (time.sleep(300) or equivalent in scripts)
 +
 +----
 +
 +====== Download File and Remove File Control ======
 +
 +See **download_remove** to remove files from the **Generic Actions (POST) **action
 +
 +
 +===== Download Media (GET) =====
 +
 +<​code>​
 +http://<​ENCODER_IP>/​download_media.cgi?​mediafile=/​location/​filename
 +
 +</​code>​
 +
 +For e.g.
 +
 +<​code>​
 +http://<​ENCODER_IP>/​download_media.cgi?​mediafile=/​media/​sda1/​MOV1_000001.mp4
 +
 +</​code>​
 +
 +=====   =====
 +
 +----
 +
 +Download the media file. If the output format is mp4 or TS file, then only z3 device allows downloading the files. Also provides the option for deleting the file.
 +
 +=== Parameters: ===
 +
 +----
 +
 +**//​mediafile//​** ​ Get the media file name.
 +=== Returns: ===
 +
 +----
 +
 +JSON formatted table with values below.
 +
 +ret Custom return code of the HTTP POST request. 0 on success, -1 on failure.
 +
 +//**File Name**// ​ Name of the download file name .
 +
 +//**File Size**// ​ Size of the download file name.
 +
 +//**Last Modified**// ​ Last modified the file date and time.
 +
 +----
 +
 +
 +===== download.html to get list of downloadable files =====
 +
 +<​code>​
 +http://<​ENCODER_IP>/​download.html?​chn=1
 +
 +</​code>​
 +
 +chn** =[1,​2,​3,​4]**
 +
 +List the download content. The content will be either .mp4 or .ts file format.
 +
 +===== Encoder Actions (POST) =====
 +
 +==== SetEncoder ====
 +
 +Write encoder settings to active preset. See Python example code for Seting Configuration below
 +
 +==== EncoderStatus ====
 +
 +Requests an update to encoder_status_str variable.
 +
 +To read the result, you need to POST the “stats” control as shown<​nowiki>​\</​nowiki>​ in the Python example code below.
 +
 +==== StreamStatus ====
 +
 +Requests an update to stream_status_str variable.
 +
 +To read the result, you need to POST the “stats” control as shown<​nowiki>​\</​nowiki>​ in the Python example code below.
 +
 +==== AStreamStatus ====
 +
 +Requests an update to astream_status_str variable.
 +
 +To read the result, you need to POST the “stats” control as shown<​nowiki>​\</​nowiki>​ in the Python example code below.
 +
 +==== SourceStatus ====
 +
 +Requests an update to source_status_str variable.
 +
 +To read the result, you need to POST the “stats” control as shown<​nowiki>​\</​nowiki>​ in the Python example code below.
 +
 +----
 +
 +===== Setting Encoder Configuration =====
  
 To set the encode configuration per channel the **SetEncoder** action is used with a post. All variables should be present or they will be replaced with a defualt that may not be valid for your application. More than one channel can be set per command. It is recommended you first read the current settings from the encoder then modify them and send the new settings back as in the Python example below: To set the encode configuration per channel the **SetEncoder** action is used with a post. All variables should be present or they will be replaced with a defualt that may not be valid for your application. More than one channel can be set per command. It is recommended you first read the current settings from the encoder then modify them and send the new settings back as in the Python example below:
Line 2237: Line 11550:
 new_cfg['​action'​] = '​SetEncoder'​ new_cfg['​action'​] = '​SetEncoder'​
 for key, value in enc_cfg_json.iteritems():​ for key, value in enc_cfg_json.iteritems():​
-   print "key = {} value = {}"​.format(key,​value) +print "key = {} value = {}"​.format(key,​value) 
-   ​new_idx = "​enc_{}_{}"​.format(channel,​key) +new_idx = "​enc_{}_{}"​.format(channel,​key) 
-   ​print "​setting {} to {}"​.format(new_idx,​value) +print "​setting {} to {}"​.format(new_idx,​value) 
-   ​new_cfg[new_idx] = value+new_cfg[new_idx] = value
  
 print new_cfg print new_cfg
 requests.post(server_url,​ data=new_cfg) requests.post(server_url,​ data=new_cfg)
 +
 </​code>​ </​code>​
  
 +===== snapshot.cgi Control =====
  
-===== Reading Statistics =====+<​code>​ 
 +http://<​ENCODER_IP>/​snapshot.cgi?​size=3840x2160&​quality=100
  
 +http://<​ENCODER_IP>/​snapshot.cgi?​chn=1&​size=1280x720&​quality=80
  
-Python example of updating and reading encoder statistics:+</​code>​ 
 + 
 +valid options are:
  
 +* *size** =[any supported valid resolution]**
  
 +chn** =[1,​2,​3,​4]**
 +<​code>​
 +quality** =[0-100] supported resolutions are: 4K Models Only 3840×2160
 +2560×1440 4K and HD Models 1920×1080
 +1440×1080
 +1280×1024
 +1280×720
 +1024×768
 +960×720
 +1024×576
 +800×600
 +720×576
 +704×576
 +720×480
 +640×512
 +640×480
 +640×360
 +352×576
 +420×380
 +352×288
 +352×240
 +336×256
 +320×240
 +320×180 **
 +
 +</​code>​
 +
 +===== Reading Statistics =====
 +
 +**Python example of updating and reading encoder statistics: **
 <​code>​ <​code>​
 import requests, json, sys import requests, json, sys
 server_url='​http://​192.168.0.120/​cgi-bin/​control.cgi'​ server_url='​http://​192.168.0.120/​cgi-bin/​control.cgi'​
  
-requests.post(server_url, ​data={'​action'​ : '​EncoderStatus'​}) +requests.post(server_url,​ {'​action':​ '​EncoderStatus'​} ) 
-requests.post(server_url, ​data={'​action'​ : '​StreamStatus'​}) +requests.post(server_url,​ {'​action':​ '​StreamStatus'​} ​ 
-requests.post(server_url, ​data={'​action'​ : '​AStreamStatus'​}) +requests.post(server_url,​ {'​action':​ '​AStreamStatus'​} ) 
-requests.post(server_url, ​data={'​action'​ : '​SourceStatus'​}) +requests.post(server_url,​ {'​action':​ '​SourceStatus'​} ​ 
-requests.post(server_url, ​data={'​action'​ : '​TempStatus'​})+requests.post(server_url,​ {'​action':​ '​TempStatus'​} ​ ) 
 + 
 +print requests.get(server_url,​ params='​ctrl=stats&​chn=null'​).json()
  
-print requests.get(server_url,​ params='​ctrl=stats&​chn='​).json() 
 </​code>​ </​code>​
  
 +**Example output: **
 +<​code>​
 +{u'​status':​ u'​OK',​
 +u'​astream_status_str':​ u'​\tChannel 6 Codec fdk_aaclc Samplerate 48000 Input MICL Frames 32287820 ​ OK',
 +u'​temp_status_str':​ u' LENS 29  CPU 78.700 ​ FPGA 89.8  OK',
 +u'​ret':​ u'​0',​
 +u'​encoder_status_str':​ u' ​  *** Encode Bitstream Received Statistics ***    CH | Bitrate (Kbps) | Actual Bitrate | FPS  | Actual FPS | Key-frame FPS | Width | Height ​  ​------------------------------------------------------------------------------------------------------------
 +1 |        4000.00 |        4092.18 | 60.0 |     59.8 |           1.0 |  1920 |   ​1080 ​ |  OK',
 +u'​source_status_str':​ u' CAMERA 1920x1080p 60.00 fps\n',​
 +u'​stream_status_str':​ u'​Channel 1 URL rtsp Frames 12883581 ​ OK'}
  
-Example output:+</​code>​
  
 +===== Authentication =====
  
 +By default, no authentication is required to access the HTTP API.
 +
 +To enable authentication,​ go to the "​System"​ tab "​Device Management"​ section. Click on the "Set Password"​ button.
 +
 +The username will be "​admin"​ The authentication method is HTTP Digest authentication. HTTP Basic authentication is not supported.
 +
 +=== Python example code of HTTP Digest authentication ===
 <​code>​ <​code>​
-{u'​status':​ u'​OK'​+ 
- u'astream_status_str': u'\tChannel 1 Codec fdk_aaclc Frames 8998 +OK', +import requests,​jsonsys 
- u'​temp_status_str':​ u'​+LENS 39 +FPGA 42 +CPU 42 +OK', +from requests.auth import HTTPDigestAuth 
- u'ret': u'0', + 
- ​u'​encoder_status_str':​ u' ​  *** Encode Bitstream Received Statistics ***    Elapsed time    0.0 secs   CH | Bitrate ​(Kbps| Actual Bitrate | FPS  | Actual FPS | Key-frame FPS | Width | Height ​  ​------------------------------------------------------------------------------------------------------------ ​  1 |        2000.00 |        2020.17 | 60.0 |     60.0 |           1.0 |  1920 |   ​1080 ​ | +OK', +auth=HTTPDigestAuth('admin','mypassword') 
- u'​source_status_str':​ u'​+CAMERA 1920x1080p 60.00 fps +OK',​ + 
- ​u'​stream_status_str':​ u'​Channel 1 URL rtsp Frames 11524 +OK'}+print requests.get(server_urlparams='ctrl=stats&​chn=null', ​auth=auth).json() 
 </​code>​ </​code>​
  
 +====== Appendix A: Sample Python Scripts ======
 +
 +The sample python scripts below require Python3.x.
 +
 +The requests package must be installed.
 +
 +You can install using
 +
 +1) Use the Ubuntu package manager
 +
 +sudo apt install python3-requests
 +
 +2) Use the Python3 native package installer
 +
 +sudo pip3 install requests
 +
 +===== SaveUser (saveUser_DIGEST_ARGPARSE.py) =====
 +
 +Save the state, preset, encoder/​decoder settings for the user.
 +
 +=== Python example code of HTTP Digest SaveUser ===
 +
 +<​code>​
 +import requests
 +import json
 +import sched
 +import time
 +import enum
 +import datetime
 +import argparse
 +from requests.auth import HTTPDigestAuth
 +
 +def print_immediately(msg):​
 +    # https://​stackoverflow.com/​questions/​230751/​how-can-i-flush-the-output-of-the-print-function/​230774#​230774
 +    print(msg, flush=True)
 +
 +def http_request(payload):​
 +  try:
 +    if args.username:​
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth)
 +    else:
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers)
 +  except requests.exceptions.HTTPError as err:
 +   raise SystemExit(err)
 +  except requests.exceptions.Timeout:​
 +   raise SystemExit()
 +  except requests.exceptions.TooManyRedirects:​
 +   raise SystemExit()
 +  except requests.exceptions.RequestException as e:
 +   raise SystemExit(e)
 +  return r
 +
 +parser = argparse.ArgumentParser()
 +parser.add_argument('​-ip',​ '​-ip_address',​ type=str, help='​IP of Encoder',​ required=True)
 +parser.add_argument('​-username',​ help='​Username if credentials are required, -passwd is also required'​)
 +parser.add_argument('​-passwd',​ help='​Password if credentials are required',​default='​admin'​)
 +args = parser.parse_args()
 +print(args)
 +
 +if args.ip:
 +  server_url='​http://'​+args.ip
 +elif args.ip_address:​
 +  server_url='​http://'​+args.ip_address
 +
 +if args.username:​
 +  auth=HTTPDigestAuth(args.username,​args.passwd)
 +
 +control_cgi_url = server_url + '/​cgi-bin/​control.cgi'​
 +channel = 1
 +headers = {'​Content-Type':'​application/​x-www-form-urlencoded;​charset=UTF-8'​}
 +payload = "​action=SaveUser&​enc_current_preset=charles";​
 +rs = http_request(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   ​setip_respose response: {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +
 +</​code>​
 +
 +**Command to execute **
 +<​code>​
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.1.105 -username admin -passwd admin
 +
 +</​code>​
 +
 +**Example output: **
 +<​code>​
 +SaveUser response: {"​ret":"​0","​status":"​OK"​}
 +
 +</​code>​
 +
 +===== SetIp (set_ip_DIGEST_ARGPARSE.py) =====
 +
 +Control networking settings of the Z3 device such as local IPv4 IP address, netmask, DNS Server primary, DNS Server secondary, etc. Additionally control Encoder Auto-Start after boot-up and enable/​disable showing of advanced WebUI settings.
 +
 +=== Python example code of HTTP Digest SetIp ===
 +
 +<​code>​
 +import requests
 +import json
 +import sched
 +import time
 +import enum
 +import datetime
 +import argparse
 +from requests.auth import HTTPDigestAuth
 +
 +def print_immediately(msg):​
 +    # https://​stackoverflow.com/​questions/​230751/​how-can-i-flush-the-output-of-the-print-function/​230774#​230774
 +    print(msg, flush=True)
 +
 +def http_request(payload):​
 +  try:
 +    if args.username:​
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth)
 +    else:
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers)
 +  except requests.exceptions.HTTPError as err:
 +   raise SystemExit(err)
 +  except requests.exceptions.Timeout:​
 +   raise SystemExit()
 +  except requests.exceptions.TooManyRedirects:​
 +   raise SystemExit()
 +  except requests.exceptions.RequestException as e:
 +   raise SystemExit(e)
 +  return r
 +
 +parser = argparse.ArgumentParser()
 +parser.add_argument('​-ip',​ '​-ip_address',​ type=str, help='​IP of Encoder',​ required=True)
 +parser.add_argument('​-newip',​ help='​Set this IP')
 +parser.add_argument('​-mask',​ help='​Subnet Mask',​default='​255.255.255.0'​)
 +parser.add_argument('​-gateway',​ help='​Network Gateway',​default='​172.30.1.1'​)
 +parser.add_argument('​-dns1',​ help='​DNS 1',​default='​8.8.8.8'​)
 +parser.add_argument('​-dns2',​ help='​DNS 2',​default='​8.8.4.4'​)
 +parser.add_argument('​-ipmtu',​ help='​MTU Speed',​default=1500)
 +parser.add_argument('​-username',​ help='​Username if credentials are required, -passwd is also required'​)
 +parser.add_argument('​-passwd',​ help='​Password if credentials are required',​default='​admin'​)
 +args = parser.parse_args()
 +print(args)
 +
 +if args.ip:
 +  server_url='​http://'​+args.ip
 +elif args.ip_address:​
 +  server_url='​http://'​+args.ip_address
 +
 +if args.username:​
 +  auth=HTTPDigestAuth(args.username,​args.passwd)
 +
 +control_cgi_url = server_url + '/​cgi-bin/​control.cgi'​
 +channel = 1
 +headers = {'​Content-Type':'​application/​x-www-form-urlencoded;​charset=UTF-8'​}
 +payload = "​action=SetIp&​local_ip=172.30.1.112&​local_netmask=255.255.255.0&​default_gw=172.30.1.1&​local_dnsip=8.8.8.8&​local_dnsip2=8.8.4.4&​use_dhcp=no&​ipmtu=1500ð_speed=AUTOð_duplex=AUTO&​do_autostart=1&​enc_adv_setting=off";​
 +rs = http_request(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   ​setip_respose response: {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +
 +</​code>​
 +
 +**Command to execute **
 +<​code>​
 +python3 set_ip_DIGEST_ARGPARSE.py -ip 192.168.1.105 -username admin -passwd admin
 +
 +</​code>​
 +
 +**Example output: **
 +<​code>​
 +dns1='​8.8.8.8',​ dns2='​8.8.4.4',​ gateway='​172.30.1.1',​ ip='​192.168.1.105',​ ipmtu=1500, mask='​255.255.255.0',​ newip=None, passwd='​admin',​ username='​admin'​
 +setip_respose response: {"​ret":"​0","​status":"​OK"​}
 +
 +</​code>​
 +
 +===== cam_state (sys_DIGEST_ARGPARSE.py) =====
 +
 +Get the current camera state information from the Database.
 +
 +=== Python example code of HTTP Digest camera state ===
 +
 +<​code>​
 +import requests
 +import json
 +import sched
 +import time
 +import enum
 +import datetime
 +import argparse
 +from requests.auth import HTTPDigestAuth
 +
 +def print_immediately(msg):​
 +    # https://​stackoverflow.com/​questions/​230751/​how-can-i-flush-the-output-of-the-print-function/​230774#​230774
 +    print(msg, flush=True)
 +
 +def http_request(payload):​
 +  try:
 +    if args.username:​
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth)
 +    else:
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers)
 +  except requests.exceptions.HTTPError as err:
 +   raise SystemExit(err)
 +  except requests.exceptions.Timeout:​
 +   raise SystemExit()
 +  except requests.exceptions.TooManyRedirects:​
 +   raise SystemExit()
 +  except requests.exceptions.RequestException as e:
 +   raise SystemExit(e)
 +  return r
 +
 +def http_request_get(payload):​
 +  try:
 +    if args.username:​
 +      r = requests.get(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth)
 +    else:
 +      r = requests.get(control_cgi_url,​ data=payload,​ headers=headers)
 +  except requests.exceptions.HTTPError as err:
 +   raise SystemExit(err)
 +  except requests.exceptions.Timeout:​
 +   raise SystemExit()
 +  except requests.exceptions.TooManyRedirects:​
 +   raise SystemExit()
 +  except requests.exceptions.RequestException as e:
 +   raise SystemExit(e)
 +  return r
 +
 +parser = argparse.ArgumentParser()
 +parser.add_argument('​-ip',​ '​-ip_address',​ type=str, help='​IP of Encoder',​ required=True)
 +parser.add_argument('​-username',​ help='​Username if credentials are required, -passwd is also required'​)
 +parser.add_argument('​-passwd',​ help='​Password if credentials are required',​default='​admin'​)
 +args = parser.parse_args()
 +print(args)
 +
 +if args.ip:
 +  server_url='​http://'​+args.ip
 +elif args.ip_address:​
 +  server_url='​http://'​+args.ip_address
 +
 +if args.username:​
 +  auth=HTTPDigestAuth(args.username,​args.passwd)
 +
 +control_cgi_url = server_url + '/​cgi-bin/​control.cgi'​
 +channel = 1
 +headers = {'​Content-Type':'​application/​x-www-form-urlencoded;​charset=UTF-8'​}
 +
 +payload='​ctrl=cam_state&​chn=null';​
 +rs = http_request_get(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   Sys response: {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +
 +</​code>​
 +
 +**Command to execute **
 +<​code>​
 +python3 sys_DIGEST_ARGPARSE.py -ip 192.168.1.105 -username admin -passwd admin
 +
 +</​code>​
 +
 +**Example output: **
 +<​code>​
 +(ip='​192.168.1.105',​ passwd='​admin',​ username='​admin'​)
 +Sys response: {"​camera1_if_type":"​Sony_LVDS","​camera2_if_type":"​CVBS","​enc_channels":"​1,​2","​enc_current_preset":"​charles","​fpgafileglob":"​fpga_none.bin|fpga2_0139_cvbs.bin","​preview_auto_start":"​1","​ret":"​0","​visca_present":"​true"​}
 +
 +</​code>​
 +
 +===== CameraControl for Boson camera (Zoom_Boson.py) =====
 +
 +Send control commands to boson camera. Only one command can be sent at a time;
 +
 +=== Python example code of HTTP Digest Camera control for Boson camera ===
 +<​code>​
 +
 +import requests
 +import json
 +import sched
 +import time
 +import enum
 +import datetime
 +import argparse
 +import sys
 +from requests.auth import HTTPDigestAuth
 +
 +if sys.version_info[0] <3:
 +  raise Exception("​Python 3 or a more recent version is required."​)
 +
 +def print_immediately(msg):​
 +    # https://​stackoverflow.com/​questions/​230751/​how-can-i-flush-the-output-of-the-print-function/​230774#​230774
 +    # print(msg, flush=True)
 +    print(msg)
 +    sys.stdout.flush()
 +
 +def http_request(payload):​
 +  try:
 +    if args.username:​
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth)
 +    else:
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers)
 +  except requests.exceptions.HTTPError as err:
 +   raise SystemExit(err)
 +  except requests.exceptions.Timeout:​
 +   raise SystemExit()
 +  except requests.exceptions.TooManyRedirects:​
 +   raise SystemExit()
 +  except requests.exceptions.RequestException as e:
 +   raise SystemExit(e)
 +  return r
 +
 +def http_request_get(payload):​
 +  try:
 +    if args.username:​
 +      r = requests.get(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth)
 +    else:
 +      r = requests.get(control_cgi_url,​ data=payload,​ headers=headers)
 +  except requests.exceptions.HTTPError as err:
 +   raise SystemExit(err)
 +  except requests.exceptions.Timeout:​
 +   raise SystemExit()
 +  except requests.exceptions.TooManyRedirects:​
 +   raise SystemExit()
 +  except requests.exceptions.RequestException as e:
 +   raise SystemExit(e)
 +  return r
 +
 +parser = argparse.ArgumentParser()
 +parser.add_argument('​-ip',​ '​-ip_address',​ type=str, help='​IP of Encoder',​ required=True)
 +parser.add_argument('​-username',​ help='​Username if credentials are required, -passwd is also required'​)
 +parser.add_argument('​-passwd',​ help='​Password if credentials are required',​default='​admin'​)
 +args = parser.parse_args()
 +print(args)
 +if args.ip:
 +  server_url='​http://'​+args.ip
 +elif args.ip_address:​
 +  server_url='​http://'​+args.ip_address
 +# Set Zoom STEP
 +zooms=args.zs;​
 +zoomstep=args.zoom_step;​
 +
 +if args.username:​
 +  auth=HTTPDigestAuth(args.username,​args.passwd)
 +control_cgi_url = server_url + '/​cgi-bin/​control.cgi'​
 +channel = 1
 +headers = {'​Content-Type':'​application/​x-www-form-urlencoded;​charset=UTF-8'​}
 +# Boson min Zoom
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000d000200000000000000A000000080';​
 +rs = http_request(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +time.sleep(4)
 +# Boson get Zoom pos
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000D0003';​
 +rs = http_request(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +# Boson mid Zoom
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000d000200000015000000A000000080';​
 +rs = http_request(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +time.sleep(4)
 +# Boson get Zoom pos
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000D0003';​
 +rs = http_request(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +# Boson mid Zoom xB0 yA0
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000d000200000015000000B0000000A0';​
 +rs = http_request(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +time.sleep(4)
 +# Boson get Zoom pos
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000D0003';​
 +rs = http_request(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +# Boson max Zoom
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000d000200000030000000A000000080';​
 +rs = http_request(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +time.sleep(4)
 +# Boson get Zoom pos
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000D0003';​
 +rs = http_request(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +# Boson no Zoom
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000d000200000000000000A000000080';​
 +rs = http_request(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +time.sleep(4)
 +# Boson get Zoom pos
 +payload='​action=CameraControl&​interface=Boson&​cam_index=2&​command=raw 000D0003';​
 +rs = http_request(payload)
 +print_immediately(
 +  "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +   1,
 +   ​datetime.datetime.now(),​
 +   ​rs.text
 +  )
 +)
 +
 +</​code>​
 +
 +**Command to execute **
 +<​code>​
 +python3 Zoom_Boson.py -ip 172.28.30.103
 +
 +</​code>​
 +
 +**Example output: **
 +<​code>​
 +(ip='​172.28.30.103',​ passwd='​admin',​ username=None,​ zoom_step=False,​ zs='​3'​)
 +Response: {"​response":"","​ret":"​0","​status":"​OK"​}
 +Response: {"​response":"​00000000000000A000000080","​ret":"​0","​status":"​OK"​}
 +Response: {"​response":"","​ret":"​0","​status":"​OK"​}
 +Response: {"​response":"​00000015000000A000000080","​ret":"​0","​status":"​OK"​}
 +Response: {"​response":"","​ret":"​0","​status":"​OK"​}
 +Response: {"​response":"​00000015000000B0000000A0","​ret":"​0","​status":"​OK"​}
 +Response: {"​response":"","​ret":"​0","​status":"​OK"​}
 +Response: {"​response":"​00000030000000A000000080","​ret":"​0","​status":"​OK"​}
 +Response: {"​response":"","​ret":"​0","​status":"​OK"​}
 +
 +</​code>​
 +
 +===== CameraControl for Sony Visca camera (Zoom_visca.py) =====
 +
 +Send control commands to visca camera. Only one command can be sent at a time;
 +
 +=== Python example code of HTTP Digest Camera control for Visca camera ===
 +
 +<​code>​
 +import requests
 +import json
 +import sched
 +import time
 +import enum
 +import datetime
 +import argparse
 +import sys
 +from requests.auth import HTTPDigestAuth
 +
 +if sys.version_info[0] <3:
 +  raise Exception("​Python 3 or a more recent version is required."​)
 +
 +def print_immediately(msg):​
 +    # https://​stackoverflow.com/​questions/​230751/​how-can-i-flush-the-output-of-the-print-function/​230774#​230774
 +    # print(msg, flush=True)
 +    print(msg)
 +    sys.stdout.flush()
 +
 +def http_request(payload):​
 +  try:
 +    if args.username:​
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth)
 +    else:
 +      r = requests.post(control_cgi_url,​ data=payload,​ headers=headers)
 +  except requests.exceptions.HTTPError as err:
 +   raise SystemExit(err)
 +  except requests.exceptions.Timeout:​
 +   raise SystemExit()
 +  except requests.exceptions.TooManyRedirects:​
 +   raise SystemExit()
 +  except requests.exceptions.RequestException as e:
 +   raise SystemExit(e)
 +  return r
 +
 +def http_request_get(payload):​
 +  try:
 +    if args.username:​
 +      r = requests.get(control_cgi_url,​ data=payload,​ headers=headers,​auth=auth)
 +    else:
 +      r = requests.get(control_cgi_url,​ data=payload,​ headers=headers)
 +  except requests.exceptions.HTTPError as err:
 +   raise SystemExit(err)
 +  except requests.exceptions.Timeout:​
 +   raise SystemExit()
 +  except requests.exceptions.TooManyRedirects:​
 +   raise SystemExit()
 +  except requests.exceptions.RequestException as e:
 +   raise SystemExit(e)
 +  return r
 +
 +parser = argparse.ArgumentParser()
 +parser.add_argument('​-ip',​ '​-ip_address',​ type=str, help='​IP of Encoder',​ required=True)
 +parser.add_argument('​-username',​ help='​Username if credentials are required, -passwd is also required'​)
 +parser.add_argument('​-passwd',​ help='​Password if credentials are required',​default='​admin'​)
 +parser.add_argument('​-z',​ help='​Zoom STEP level 0 - 7; Default 3',​default='​3'​)
 +parser.add_argument('​-zs',​ help='​Do Zoom STEP defined using -z, else normal zoom',​action='​store_true'​)
 +args = parser.parse_args()
 +print(args)
 +if args.ip:
 +  server_url='​http://'​+args.ip
 +elif args.ip_address:​
 +  server_url='​http://'​+args.ip_address
 +# Set Zoom STEP
 +zooms=args.z;​
 +zoomstep=args.zs;​
 +
 +if args.username:​
 +  auth=HTTPDigestAuth(args.username,​args.passwd)
 +control_cgi_url = server_url + '/​cgi-bin/​control.cgi'​
 +channel = 1
 +headers = {'​Content-Type':'​application/​x-www-form-urlencoded;​charset=UTF-8'​}
 +if zoomstep == True:
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_wide_var '​+zooms;​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    time.sleep(4)
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_stop';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_get_pos';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_tele_var '​+zooms;​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    time.sleep(4)
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_stop';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_get_pos';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +else:
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_tele_std';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    time.sleep(5)
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_stop';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_get_pos';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_wide_std';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    time.sleep(5)
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_stop';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +    payload='​action=CameraControl&​interface=Visca&​cam_index=1&​command=zoom_get_pos';​
 +    rs = http_request(payload)
 +    print_immediately(
 +      "​{:>​6}:​ {}   ​Response:​ {}"​.format(
 +       1,
 +       ​datetime.datetime.now(),​
 +       ​rs.text
 +      )
 +    )
 +
 +</​code>​
 +
 +**Command to execute with out zoom step size **
 +<​code>​
 +python3 Zoom_visca.py -ip 192.168.1.105 -username admin -passwd admin
 +
 +</​code>​
 +
 +**Example output: **
 +<​code>​
 +(ip='​192.168.1.105',​ passwd='​admin',​ username='​admin',​ z='​3',​ zs=False)
 +Response: {"​ret":"​0","​status":"​OK"​}
 +Response: {"​ret":"​0","​status":"​OK"​}
 +Response: {"​response":​3040,"​ret":"​0","​status":"​OK"​}
 +Response: {"​ret":"​0","​status":"​OK"​}
 +Response: {"​ret":"​0","​status":"​OK"​}
 +Response: {"​response":​0,"​ret":"​0","​status":"​OK"​}
 +
 +</​code>​
 +
 +**Command to execute with zoom step size **
 +<​code>​
 +python3 Zoom_visca.py -ip 192.168.1.105 -username admin -passwd admin -z 3 -zs
 +
 +</​code>​
 +
 +**Example output: **
 +<​code>​
 +(ip='​192.168.1.105',​ passwd='​admin',​ username='​admin',​ z='​3',​ zs=True)
 +Response: {"​ret":"​0","​status":"​OK"​}
 +Response: {"​ret":"​0","​status":"​OK"​}
 +Response: {"​response":​0,"​ret":"​0","​status":"​OK"​}
 +Response: {"​ret":"​0","​status":"​OK"​}
 +Response: {"​ret":"​0","​status":"​OK"​}
 +Response: {"​response":​7304,"​ret":"​0","​status":"​OK"​}
 +
 +</​code>​
http_api.1604083754.txt.gz · Last modified: 2020/10/30 18:49 by rachel