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:55]
rachel
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 =====
Line 11: 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 46: 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 53: Line 90:
 ---- ----
  
-===== Decode Command ​=====+===== Encoder Channel Configuration ​=====
  
-decode instance=%d url=%s codec=%s viewport=%s+==== aenable ====
  
-==== max_latency_ms ====+Description:​ Enable audio channel
  
-Description:+Possible valuesyes, no
  
-Possible values: 0, <​milliseconds>,​ uncontrolled+==== acodec ====
  
-==== rtsp_flags ====+Description:​ Audio encoder algorithm selection
  
-Description:+Possible valuesdsp_aaclc, fdk_aaclc, fdk_aache, fdk_aache_v2
  
-Possible values: UDP, TCP, HTTP+==== abitrate ====
  
-==== codec ====+Description:​ Audio encode bitrate
  
-Set to h265 and will be auto-detected as h265/​h264/​mjpeg+Possible values: Depends on codec; in units of bits per second
  
-Possible values: h264, h265+==== asamplerate ====
  
-==== viewport ====+Description:​ Audio sample rate
  
-DescriptionDisplay size[keep original size, fit to display, keep aspect ratio, scale percentage]+Possible values4800044100
  
-Possible values: <font 16px/​inherit;;​inherit;;​inherit>​=</​font>​original,​ fit, keep_aspect,​ scale\\ +==== asource ​====
-====== ZIXI URL Parameters ======+
  
-The URL may have parameters passed in as:+DescriptionSelect audio input
  
-base_url?​param1=val1¶m2=val2+Possible values: MICL (microphone,​ line input levels)
  
-==== fec ====+<​code>​ 
 +MIC    (unpowered microphone levels) 
 +HDMI   ​(microHDMI input, for HE4K-DCK/​FV4K-13A only) 
 +HD-SDI (SDI input, for DME-10/​FSDI-DCK/​FSDI-13A only)
  
-Description:​+</​code>​ 
 + 
 +==== apid ==== 
 + 
 +Description: ​Audio PID for transport stream. 
 + 
 +Possible values: 32 to 8191 - must not conflict with other PID assignments. 
 + 
 +==== aport ==== 
 + 
 +Description:​ Destination UDP port for RTP audio 
 + 
 +==== aptspcr ==== 
 + 
 +Description:​ For transport stream modes only – intial PTS to PCR offset for audio, in milliseconds 
 + 
 +Possible values: 100 to 2000 
 + 
 +==== auth_passwd ==== 
 + 
 +Description:​ Password for RTMP authentication. 
 + 
 +==== auth_user ==== 
 + 
 +Description:​ Username for RTMP authentication. 
 + 
 +==== authonoff ==== 
 + 
 +Description:​ Enable or disable RTMP authentication. Default: off Possible values: on, off 
 + 
 +==== channel ==== 
 + 
 +Description:​ Encoder channel number 
 + 
 +Possible values: 1, 2, 3 
 + 
 +==== feccol ==== 
 + 
 +Description:​ Column count for ProMPEG. 
 + 
 +Possible values: integer greater than 1 
 + 
 +==== feconoff ==== 
 + 
 +Description:​ Enable ProMPEG if supported.
  
 Possible values: on, off Possible values: on, off
  
-==== fecoverhead ​====+==== fecrow ​====
  
-Description:​+Description: ​Row count for ProMPEG.
  
-Possible values: ​overhead_percentage+Possible values: ​integer greater than 1
  
-==== fecblock ​====+==== filesize ​====
  
-Description:​+Description: ​Size of TSFILE or AUX file recording, in bytes.
  
-Possible values: fec block size in milliseconds+A "​K"​ suffix indicates kilobytes (thousands of bytes/​second).
  
-==== latency ====+A "​M"​ suffix indicates megabytes (millions of bytes/​second).
  
-Description:​+==== fprefix ====
  
-Possible valueslatency in milliseconds ​for retransmissions+DescriptionRelative 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.
  
-==== decrypt ​====+==== storage ​====
  
-Description:​+Absolute path to mounted media device (e.g. /​media/​sda1/​)
  
-Possible values: 0, 1, 2, 3, 4 (0=AES-128, 1=AES-192, 2AES-256, 3=ChaCha20, 4=None)+==== avmux_index ====
  
-==== pass ====+For MP4 recording only. Possible values: normal, streaming
  
-Description:​+normal means MOOV atom at the end of file.
  
-Possible values: <​password>​+streaming means MOOF atoms interspersed throughout the file, which is more tolerant of errors and truncated files.
  
-===== SRT URL Parameters =====+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.
  
-==== mode ====+==== telopcharsize ​====
  
-Description:​+OSD overlay text character size in pixels
  
-Possible values: ​listenercallerrendezvous+Possible values: ​1632or 64
  
-==== latency ​====+==== telopenable ​====
  
-Description:​+Enable or disable telop (i.e. OSD overlay of text).
  
-Possible values: ​latency in milliseconds for retransmission+Possible values: ​on, off
  
-==== pbkeylen ​====+==== teloplocation ​====
  
-Description:​+Where to overlay text in the encoded video
  
-Possible values: ​16, 24, 32 (16=AES-128,​ 24=AES-192, 32=AES-256)+Possible values: ​top_left top_right top_center bottom_left bottom_right bottom_center
  
-==== passphrase ​====+==== teloptext ​====
  
-Description:​+Text string for OSD overlay
  
-Possible values: <​password>​+==== vgopsize ====
  
-===== Display Command =====+Description:​ Distance between I frames (key frames) in GOP sequence
  
-==== display port ====+Possible values: 1 through 240
  
-Description:​+==== vbitrate ====
  
-Possible valuesdisplay1, display2, ultrahd, hd+DescriptionVideo bitrate in bits per second.
  
-==== format ====+Possible values: A "​K"​ suffix indicates kilobits (thousands of bits/​second).
  
-Description:​+A "​M"​ suffix indicates megabits (millions of bits/​second).
  
-Possible valuesformat_name+NoteIn UDP transport stream case, the tsrate should be set
  
-Supported names:+higher than the vbitrate, with at least 15% margin.
  
-<font 10px/​inherit;;​inherit;;​inherit>​2160p60</​font>​+==== vdelay ====
  
-<font 10px/​inherit;;​inherit;;​inherit>​2160p5994</​font>​+Description:​ Video maximum burst size in milliseconds.
  
-<font 10px/​inherit;;​inherit;;​inherit>​2160p50</​font>​+Possible values: 100 to 2000
  
-<font 10px/​inherit;;​inherit;;​inherit>​2160p30</​font>​+==== vdest ====
  
-<font 10px/​inherit;;​inherit;;​inherit>​2160p2997</​font>​+Description:​ Destination URL address for encoded bitstream. May be interpreted differently depending on "​vprotocol"​ setting.
  
-<font 10px/​inherit;;​inherit;;​inherit>​2160p25</​font>​+For UDP and RTP transports:
  
-<font 10px/​inherit;;​inherit;;​inherit>​1080p60</​font>​+client_ip:​client_port
  
-<font 10px/​inherit;;​inherit;;​inherit>​1080p5994</​font>​+For RTMP transport:
  
-<font 10px/​inherit;;​inherit;;​inherit>1080p50</font>+<code> 
 +server_ip[:​server_port]/application/​streamname
  
-<font 10px/inherit;;​inherit;;​inherit>​720p60</​font>+</code>
  
-<font 10px/​inherit;;​inherit;;​inherit>​720p5994</​font>​+==== vframeratediv ====
  
-<font 10px/​inherit;;​inherit;;​inherit>​720p50</​font>​+Description:​ Divide video input frame rate by this number to get encode frame rate. The encoder will discard (frameratediv-1) out of (frameratediv) frames.
  
-<font 10px/​inherit;;​inherit;;​inherit>​480p60</​font>​+Possible values: 1, 2, 3, 4, 5, 6
  
-<font 10px/​inherit;;​inherit;;​inherit>​576p50</​font>​+==== vgdr ====
  
-<font 10px/​inherit;;​inherit;;​inherit>​2560x1600_60</​font>​+Description:​ Enable or disable Gradual Data Refresh. Reduces I-frame size (reduces latency). At lower bitrates, a horizontal rolling artifact may be visible.
  
-<font 10px/​inherit;;​inherit;;​inherit>​2560x1440_30</​font>​+Possible values: on, off
  
-<font 10px/​inherit;;​inherit;;​inherit>​1920x1200_60</​font>​+==== vcodec ====
  
-<font 10px/​inherit;;​inherit;;​inherit>​auto</​font>​+Description:​ Specifiec which codec to encode with.
  
-<font 10px/​inherit;;​inherit;;​inherit>​auto_pal</​font>​+Possible values: h265, h264, mjpeg
  
-<font 10px/​inherit;;​inherit;;​inherit>​auto_ntsc_bcast</​font>​+==== vprofile ====
  
-==== layout ====+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)
  
-Description:+Possible valuesbaseline, main, high
  
-Possible values: ​1x12x2+==== vprotocol ==== 
 + 
 +Description:​ Protocol used to transport the encoded bitstream. 
 + 
 +Possible values: ​rtprtmp, udp, asi, tsfile, mts, tsrtp 
 + 
 +==== vquality ==== 
 + 
 +Description:​ Set balance between low latency, and higher quality+bitrate compliance. 
 + 
 +Possible values: lowlat, balanced, high 
 + 
 +==== vratectrl ==== 
 + 
 +Description:​ Rate control mode for encoder. 
 + 
 +Possible values: cbr, vbr 
 + 
 +vbr mode may be burstier than cbr. 
 + 
 +==== vres ==== 
 + 
 +Description:​ Video resolution 
 + 
 +Possible values: follow_input preserve video source resolution, no resize 
 +<​code>​ 
 + 
 +WxH           ​resize to width W and height H 
 + 
 +</​code>​ 
 + 
 +==== vsource ==== 
 + 
 +Description:​ Video input from which encoder will source its video 
 + 
 +<font 12.8000001907349px/​arial;;#​000000;;#​ffffff>​Possible values: Board-dependent</​font>​ 
 + 
 +==== pipenable ==== 
 + 
 +Description:​ Enable PIP of channel 2 on channel 1 encode. Only available on FV4K/​FV2K/​FSDI 
 + 
 +Possible values: on, off 
 + 
 +==== piplocaton ==== 
 + 
 +Description:​ Sets the location of the PIP on channel one. Only available on FV4K/​FV2K/​FSDI 
 + 
 +Possible values: top_left, top_right, bottom_left,​ bottom_right 
 + 
 +==== vinterlacemode ==== 
 + 
 +Description:​ Sets the interlaced mode for the video input 
 + 
 +Possible values: combined, separated (H265 only) 
 + 
 +==== vmulticastdest ==== 
 + 
 +Description:​ video multicast destination for RTSP. Used by ONVIF StartMulticast/​StopMulticast functions 
 + 
 +Possible values: valid multicast addresses 
 + 
 +==== amulticastdest ==== 
 + 
 +Description:​ audio multicast destination for RTSP. Used by ONVIF StartMulticast/​StopMulticast functions 
 + 
 +Possible values: valid multicast addresses 
 + 
 +==== rtsp_auth_enable ==== 
 + 
 +Description:​ enables/​disables rtsp authorization for stream 
 + 
 +Possible values: on, off 
 + 
 +==== rtsp_auth_username ==== 
 + 
 +Description:​ username for rtsp authorization 
 + 
 +Possible values: alpha numeric string 
 + 
 +==== rtsp_auth_password ==== 
 + 
 +Description:​ password for rtsp authorization 
 + 
 +Possible values: * 
 + 
 +===== Transport Stream Parameters ===== 
 + 
 +The following parameters only apply to transport stream encoding (transport is set to udp, asi, tsfile, mts, or tsrtp). 
 + 
 +==== vpid ==== 
 + 
 +Description:​ Video PID for transport stream. 
 + 
 +Possible values: 32 to 8191 – must not conflict with other PID assignments 
 + 
 +==== apid ==== 
 + 
 +Description:​ Audio PID for transport stream. 
 + 
 +Possible values: 32 to 8191 – must not conflict with other PID assignments 
 + 
 +==== pcrpid ==== 
 + 
 +Description:​ PCR PID for transport stream. 
 + 
 +Possible values: 32 to 8191 – must not conflict with other PID assignments 
 + 
 +==== pmtpid ==== 
 + 
 +Description:​ PMT PID for transport stream. 
 + 
 +Possible values: 16 to 31 – must not conflict with other PID assignments 
 + 
 +==== tsrate ==== 
 + 
 +Description:​ Transport stream total transport rate in bits per second. 
 + 
 +Possible values: The '​K'​ suffix indicates kilobits (thousands of bits/​second). The '​M'​ suffix indicates megabits (millions of bits/​second). 
 + 
 +Note: In UDP transport stream case, the tsrate should be set higher than the vbitrate, with at least 15% margin. 
 + 
 +==== tslowlat ==== 
 + 
 +Description:​ Low latency transport stream mode (VBR). 
 + 
 +Possible values: off, on 
 + 
 +==== auxonoff ==== 
 + 
 +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 
 + 
 +The path to storage is set by the "​storage"​ parameter. 
 + 
 +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. 
 + 
 +The recording file size is set by the "​filesize"​ parameter. When the file reaches this size, a new file will be created. 
 + 
 +==== klvbrate ==== 
 + 
 +Description:​ Bitrate to allocate in transport stream for KLV data. 
 + 
 +==== klvenable ==== 
 + 
 +Description:​ Enable KLV capture from SDI, UART or debug file, if supported. 
 + 
 +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 ==== 
 + 
 +Description:​ PID for KLV data in transport stream 
 + 
 +==== klvsrc ==== 
 + 
 +Description:​ Source device for KLV metadata 
 + 
 +==== pcrinterval ==== 
 + 
 +Description:​ Interval between PCR packets in milliseconds. 
 + 
 +Possible values: 30 - 100
  
 ===== Global Configuration ===== ===== Global Configuration =====
Line 228: 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 237: 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 246: 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 269: 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 330: 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 350: 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 362: 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 377: 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 388: 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 445: 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 473: 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 486: 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 505: 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)
  
-Possible values: autoindooroutdoor, ​onepushautotrace, manual, ​outdoor_auto,+//​**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=none12
 + 
 +//​**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
 + 
 +//​**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: automanual 
 + 
 +//​**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. 
 + 
 +---- 
 + 
 +=== 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.
  
-Value to set dynamic variable to.+----
  
-==== ​SetSNTP ====+=== Command to execute:  ​===
  
-=== enable ===+<​code>​
  
-Enable/​Disable SNTP.+python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.10.127 -username admin -passwd admin
  
-=== servers ===+</​code>​
  
-NTP server or list of NTP servers.+----
  
-=== timezone ​===+=== Example output: ​===
  
-Linux TZ database value for Timezone.+<​code>​ 
 +user_add response: {"​ret":"​0","​status":"​OK"​} 
 +</​code>​
  
-==== ​SetOnvif ====+----
  
-=== enable ​===+==== user_remove ====
  
-Enable/​Disable ONVIF.+----
  
-=== fixed_profile_max ===+Remove the user from the database.
  
-Maximum ONVIF profiles to allow (1 or 2).+== Parameters: ==
  
-==== ​SetTermSrvEnable ====+----
  
-=== termserve_remote_enable ===+//**data **//  Parse the JSON formatted data and retrieve the user name. 
 +== Returns: ​==
  
-Enable/​Disable remote access to terminal server.+----
  
-==== SetZFinderEnable ====+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: "​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=
 + 
 +</​code>​
  
-=== zfinder_enable ===+chn** =[1,2,3,4]**
  
-Enable/​Disable zfinder support.+List the download content. The content will be either .mp4 or .ts file format.
  
 ===== Encoder Actions (POST) ===== ===== Encoder Actions (POST) =====
Line 772: 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 782: Line 6962:
 </​code>​ </​code>​
  
-===== Reading Statistics ​=====+===== snapshot.cgi Control ​=====
  
-Python example of updating and reading encoder statistics:+<​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]**
 +
 +* *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>​
  
-==== asamplerate ​====+===== Authentication =====
  
-Description:​ Audio sample rate+By default, no authentication is required to access the HTTP API.
  
-Possible values: 4800044100+To enable authenticationgo to the "​System"​ tab "​Device Management"​ section. Click on the "Set Password"​ button.
  
-==== asource ====+The username will be "​admin"​ The authentication method is HTTP Digest authentication. HTTP Basic authentication is not supported.
  
-DescriptionSelect audio input+=== Python example code of HTTP Digest authentication === 
 +<​code>​ 
 + 
 +import requests,​json,​ sys 
 +from requests.auth import HTTPDigestAuth 
 + 
 +auth=HTTPDigestAuth('​admin','​mypassword'​) 
 + 
 +print requests.get(server_url,​ params='​ctrl=stats&​chn=null',​ auth=auth).json() 
 + 
 +</​code>​ 
 + 
 +====== Appendix ASample 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 ===
  
-Possible values: MICL (microphone,​ line input levels) 
 <​code>​ <​code>​
 +import requests
 +import json
 +import sched
 +import time
 +import enum
 +import datetime
 +import argparse
 +from requests.auth import HTTPDigestAuth
  
-               ​MIC ​   (unpowered microphone levels+def print_immediately(msg):​ 
-               HDMI   (microHDMI inputfor HE4K-DCK only+    # https://​stackoverflow.com/​questions/​230751/​how-can-i-flush-the-output-of-the-print-function/​230774#​230774 
-               HD-SDI (SDI inputfor DME-10/FSDI-DCK only)+    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>​
  
-==== apid ====+**Command to execute ** 
 +<​code>​ 
 +python3 saveUser_DIGEST_ARGPARSE.py -ip 192.168.1.105 -username admin -passwd admin
  
-Description:​ Audio PID for transport stream.+</​code>​
  
-Possible values32 to 8191 - must not conflict with other PID assignments.+**Example output** 
 +<​code>​ 
 +SaveUser response: {"​ret":"​0","​status":"​OK"​}
  
-==== aport ====+</​code>​
  
-Description:​ Destination UDP port for RTP audio+===== SetIp (set_ip_DIGEST_ARGPARSE.py) =====
  
-==== aptspcr ====+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.
  
-Description:​ For transport stream modes only – intial PTS to PCR offset for audio, in milliseconds+=== Python example code of HTTP Digest SetIp ===
  
-Possible values: 100 to 2000+<​code>​ 
 +import requests 
 +import json 
 +import sched 
 +import time 
 +import enum 
 +import datetime 
 +import argparse 
 +from requests.auth import HTTPDigestAuth
  
-==== auth_passwd ====+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)
  
-DescriptionPassword for RTMP authentication.+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
  
-==== auth_user ​====+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)
  
-DescriptionUsername for RTMP authentication.+if args.ip: 
 +  server_url='​http://'​ args.ip 
 +elif args.ip_address:​ 
 +  server_url='​http://' args.ip_address
  
-==== authonoff ====+if args.username:​ 
 +  auth=HTTPDigestAuth(args.username,​args.passwd)
  
-Description:​ Enable or disable RTMP authenticationDefault: off Possible valuesonoff+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 
 +  ) 
 +)
  
-==== channel ====+</​code>​
  
-Description:​ Encoder channel number+**Command to execute ** 
 +<​code>​ 
 +python3 set_ip_DIGEST_ARGPARSE.py -ip 192.168.1.105 -username admin -passwd admin
  
-Possible values: 1, 2, 3+</​code>​
  
-==== feccol ​====+**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"​}
  
-Description:​ Column count for ProMPEG.+</​code>​
  
-Possible values: integer greater than 1+===== cam_state (sys_DIGEST_ARGPARSE.py) =====
  
-==== feconoff ====+Get the current camera state information from the Database.
  
-Description:​ Enable ProMPEG if supported.+=== Python example code of HTTP Digest camera state ===
  
-Possible values: on, off+<​code>​ 
 +import requests 
 +import json 
 +import sched 
 +import time 
 +import enum 
 +import datetime 
 +import argparse 
 +from requests.auth import HTTPDigestAuth
  
-==== fecrow ====+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)
  
-DescriptionRow count for ProMPEG.+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
  
-Possible valuesinteger greater than 1+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
  
-==== filesize ​====+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)
  
-DescriptionSize of TSFILE or AUX file recording, in bytes.+if args.ip: 
 +  server_url='​http://'​ args.ip 
 +elif args.ip_address:​ 
 +  server_url='​http://' args.ip_address
  
-A "​K"​ suffix indicates kilobytes ​(thousands of bytes/​second).+if args.username:​ 
 +  auth=HTTPDigestAuth(args.username,​args.passwd)
  
-A "​M"​ suffix indicates megabytes (millions of bytes/second).+control_cgi_url = server_url ​  '​/cgi-bin/​control.cgi' 
 +channel = 1 
 +headers = {'​Content-Type':'​application/​x-www-form-urlencoded;​charset=UTF-8'​}
  
-==== fprefix ====+payload='ctrl=cam_state&​chn=null';​ 
 +rs http_request_get(payload) 
 +print_immediately( 
 +  "​{:>​6}:​ {}   Sys response: {}"​.format( 
 +   1, 
 +   ​datetime.datetime.now(),​ 
 +   ​rs.text 
 +  ) 
 +)
  
-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.+</​code>​
  
-==== storage ====+**Command to execute ** 
 +<​code>​ 
 +python3 sys_DIGEST_ARGPARSE.py -ip 192.168.1.105 -username admin -passwd admin
  
-Absolute path to mounted media device (e.g. /media/​sda1/​)+</code>
  
-==== telopcharsize ====+**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"​}
  
-OSD overlay text character size in pixels+</​code>​
  
-Possible values: 16, 32, or 64+===== CameraControl for Boson camera (Zoom_Boson.py) =====
  
-==== telopenable ====+Send control commands to boson camera. Only one command can be sent at a time;
  
-Enable or disable telop (i.e. OSD overlay ​of text).+=== Python example code of HTTP Digest Camera control for Boson camera === 
 +<​code>​
  
-Possible values: on, off+import requests 
 +import json 
 +import sched 
 +import time 
 +import enum 
 +import datetime 
 +import argparse 
 +import sys 
 +from requests.auth import HTTPDigestAuth
  
-==== teloplocation ====+if sys.version_info[0] <3: 
 +  raise Exception("​Python 3 or a more recent version is required."​)
  
-Where to overlay text in the encoded video+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()
  
-Possible valuestop_left top_right top_center bottom_left bottom_right bottom_center+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
  
-==== teloptext ====+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
  
-Text string for OSD overlay+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;​
  
-==== vgopsize ​====+if args.username:​ 
 +  auth=HTTPDigestAuth(args.username,​args.passwd) 
 +control_cgi_url ​server_url ​  '/​cgi-bin/​control.cgi'​ 
 +channel ​
 +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 
 +  ) 
 +)
  
-Description:​ Distance between I frames (key frames) in GOP sequence+</​code>​
  
-Possible values: 1 through 240+**Command to execute ** 
 +<​code>​ 
 +python3 Zoom_Boson.py -ip 172.28.30.103
  
-==== vbitrate ====+</​code>​
  
-DescriptionVideo bitrate in bits per second.+**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"​}
  
-Possible values: A "​K"​ suffix indicates kilobits (thousands of bits/second).+</code>
  
-A "​M"​ suffix indicates megabits ​(millions of bits/​second).+===== CameraControl for Sony Visca camera ​(Zoom_visca.py) =====
  
-Note: In UDP transport stream case, the tsrate should ​be set+Send control commands to visca camera. Only one command can be sent at a time;
  
-higher than the vbitrate, with at least 15% margin.+=== Python example code of HTTP Digest Camera control for Visca camera ===
  
-==== vdelay ====+<​code>​ 
 +import requests 
 +import json 
 +import sched 
 +import time 
 +import enum 
 +import datetime 
 +import argparse 
 +import sys 
 +from requests.auth import HTTPDigestAuth
  
-DescriptionVideo maximum burst size in milliseconds.+if sys.version_info[0] <3: 
 +  raise Exception("​Python 3 or a more recent version is required.")
  
-Possible values100 to 2000+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()
  
-==== vdest ====+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
  
-DescriptionDestination URL address for encoded bitstreamMay be interpreted differently depending on "​vprotocol"​ setting.+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
  
-For UDP and RTP transports:+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;​
  
-client_ip:client_port+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 
 +      ) 
 +    )
  
-For RTMP transport:+    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>​ <​code>​
- ​server_ip[:​server_port]/​application/​streamname+python3 Zoom_visca.py -ip 192.168.1.105 -username admin -passwd admin
  
 </​code>​ </​code>​
  
-==== vframeratediv ====+**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"​}
  
-Description:​ Divide video input frame rate by this number to get encode frame rate.\\ +</​code>​
-The encoder will discard (frameratediv-1) out of (frameratediv) frames.\\ +
-\\ +
-Possible values: 1, 2, 3, 4, 5, 6+
  
-==== vgdr ====+**Command to execute with zoom step size ** 
 +<​code>​ 
 +python3 Zoom_visca.py -ip 192.168.1.105 -username admin -passwd admin -z 3 -zs
  
-Description:​ Enable or disable Gradual Data Refresh. Reduces I-frame size (reduces latency). At lower bitrates, a horizontal rolling artifact may be visible.+</​code>​
  
-Possible valuesonoff+**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"​}
  
-==== vcodec ====+</​code>​
  
-Description:​ Specifiec which codec to encode with. 
  
-Possible values: h265, h264, mjpeg+==== GetStatus ====
  
-==== vprofile ====+----
  
-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)+Read the encoder status.
  
-Possible valuesbaseline, main, high+== Parameters==
  
-==== vprotocol ====+----
  
-Description:​ Protocol used to transport ​the encoded bitstream.+//​**chn**// ​ Get the encoder channel number. The default is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
  
-Possible valuesrtp, rtmp, udp, asi, tsfile, mts, tsrtp+//​**status**// ​ The encoder status can be RUNNING/ STOPPED/ IDLE/ Couldn'​t deduct input on camera. 
 +== Returns==
  
-==== vquality ====+----
  
-Description:​ Set balance between low latency, and higher quality+bitrate compliance.+JSON formatted table with values below
  
-Possible values: lowlatbalanced, high+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success1 on failure.
  
-==== vratectrl ====+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-Description:​ Rate control mode for encoder.+----
  
-Possible values: cbr, vbr+==== GetVideoInputs ====
  
-vbr mode may be burstier than cbr.+----
  
-==== vres ====+Get the sensor id and read the video inputs from the Database.
  
-DescriptionVideo resolution+== Parameters==
  
-Possible values: follow_input preserve video source resolution, no resize +----
-<​code>​+
  
-               ​WxH ​          ​resize to width W and height H+//​**sensorid **//  Sensor ID.
  
-</code>+//**vport **//  video port is Camera source. Possible values: 1 = Camera 1, 2 = Camera 2.
  
-==== vsource ====+//​**friendly_name **//  name of the video source.
  
-Description: ​Video input from which encoder will source its video+//**vdevice **//  ​Video device. Possible values: MIPI, SONYLVDS, LT6911
  
-<font 12.8000001907349px"><​font inherit/arial;;​inherit;;#​ffffff>​Possible values: ​Board-dependent</​font>​+//​**input_index **//  input device. ​Possible values: ​0, 1.
  
-==== pipenable ====+//**bus **//  device address. Default NULL
  
-DescriptionEnable PIP of channel 2 on channel ​encodeOnly available on FV4K/​FV2K/​FSDI+//**enabled **//  Video input enabled or disabled. Default is 1. Possible values0, 1. 
 +== Returns: ==
  
-Possible values: on, off+----
  
-==== piplocaton ====+JSON formatted table with values below
  
-Description:​ Sets the location ​of the PIP on channel oneOnly available ​on FV4K/​FV2K/​FSDI+**//​ret//​** ​ Custom return code of the HTTP POST requeston success, 1 on failure.
  
-Possible values: top_left, top_right, bottom_left,​ bottom_right+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-==== vinterlacemode ====+----
  
-Description:​ Sets the interlaced mode for the video input+==== GetWifiPass ====
  
-Possible values: combined, separated (H265 only)+----
  
-==== vmulticastdest ====+Get the Wifi password.
  
-Descriptionvideo multicast destination for RTSP. Used by ONVIF StartMulticast/​StopMulticast functions+== Parameters==
  
-Possible values: valid multicast addresses+----
  
-==== amulticastdest ====+//​**ssid**// ​ Read the service set identifier
  
-Description:​ audio multicast destination for RTSP. Used by ONVIF StartMulticast/StopMulticast functions+**//​psk//​** ​ Provide the wifi password. 
 +== Returns: ==
  
-Possible values: valid multicast addresses+----
  
-==== rtsp_auth_enable ====+JSON formatted table with values below
  
-Description:​ enables/disables rtsp authorization for stream+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Possible values: ​on, off+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK" ​on success.
  
-==== rtsp_auth_username ====+----
  
-Description:​ username for rtsp authorization+==== InsQuery ====
  
-Possible values: alpha numeric string+----
  
-==== rtsp_auth_password ====+Querry the PTZ values for the angle.
  
-Descriptionpassword for rtsp authorization+== Parameters==
  
-Possible values: *+----
  
-===== Transport Stream Parameters =====+**//​data//​** ​ Read the json table and retrieve the index and querry type. Possible querry are YawAngle, PitchAngle, RollAngle, All.
  
-The following parameters only apply to transport stream encoding (transport is set to udp, asi, tsfile, mts, or tsrtp).+//​**YawAngle **//  provide the yaw angle value from the PTZ.
  
-==== vpid ====+//​**PitchAngle**// ​ provide the pitch angle value from the PTZ.
  
-Description:​ Video PID for transport stream.+//​**RollAngle**// ​ provide the roll angle value from the PTZ. 
 +== Returns: ==
  
-Possible values: 32 to 8191 – must not conflict with other PID assignments+----
  
-==== 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.
  
-Possible values: 32 to 8191 – must not conflict with other PID assignments+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-==== pcrpid ====+----
  
-Description:​ PCR PID for transport stream.+==== LoadUser ====
  
-Possible values: 32 to 8191 – must not conflict with other PID assignments+----
  
-==== pmtpid ====+Load the active preset value from the Database and update in the state table database.
  
-DescriptionPMT PID for transport stream.+== Parameters==
  
-Possible values: 16 to 31 – must not conflict with other PID assignments+----
  
-==== tsrate ====+//​**enc_current_preset**// ​ Get the preset row and check the opermation mode. The operation modes are encoder / decoder.
  
-Description:​ Transport stream total transport rate in bits per second.+//​**cur_preset **//  Provide the current presetting values. 
 +== Returns: ==
  
-Possible values: The '​K'​ suffix indicates kilobits (thousands of bits/​second). The '​M'​ suffix indicates megabits (millions of bits/​second).+----
  
-Note: In UDP transport stream case, the tsrate should be set higher than the vbitrate, ​with at least 15% margin.+JSON formatted table with values below
  
-==== tslowlat ====+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Description:​ Low latency transport stream mode (VBR).+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-Possible values: off, on+----
  
-==== auxonoff ​====+==== Login ====
  
-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+----
  
-The path to storage is set by the "​storage"​ parameter.+Set the password for the login user.
  
-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.+== Parameters: ==
  
-The recording file size is set by the "​filesize"​ parameter. When the file reaches this size, a new file will be created.+----
  
-==== klvbrate ====+== Returns: ​==
  
-Description:​ Bitrate to allocate in transport stream for KLV data.+----
  
-==== klvenable ====+JSON formatted table with values below
  
-Description:​ Enable KLV capture from SDIif supported.+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success1 on failure.
  
-Possible values: off, on+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK" ​on success.
  
-==== klvpid ====+----
  
-Description:​ PID for KLV data in transport stream+==== Logout ====
  
-==== klvsrc ====+----
  
-Description:​ Source device for KLV metadata+Logout from the system and update in the Database.
  
-==== pcrinterval ====+== Parameters: ​==
  
-Description:​ Interval between PCR packets in milliseconds.+----
  
-Possible values30 - 100+//​**Authorization**// ​ Get the permission level. 
 +== 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.
  
 ---- ----
  
-===== Action Syntax =====+==== Overlay ​====
  
-===== Generic Actions (POST) =====+----
  
-Python example code for starting/stopping all channels:+Add/Update the overlay values in the Database.
  
-<​code>​ +== Parameters: ==
-import requests, json +
-import sys, getopt+
  
-actionname='​StartChannel'​+----
  
-server_url='​http:​//192.168.0.120'+//**chn**// ​ Get the encoder channel numberThe default is encoder channel 1Select between encoder channels. Possible values: 1, 2, 3, or 4.
  
-control_cgi_url = server_url + '/cgi-bin/control.cgi'+**//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.
  
-payload = '​ctrl=sys&​chn=null'​ +//​**​type**// ​ Type of overlay to be used possible values: text or png.
-sysctrl = requests.get(control_cgi_url,​ params=payload)+
  
-j = sysctrl.json() +//​**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.
-print j+
  
-enc_channels_string = j['enc_channels'+//​**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).
-opmode ​      = j['opmode']+
  
-enc_channels = enc_channels_string.split( ',' )+//​**char_size**// ​ For text overlay this is the character sizePossible values: 16,32,64, 128.
  
-print '​enc_channels',​ enc_channels,​ '​opmode',​ opmode+//​**layer**// ​ This will set the layer for the overly higher numbers will overlay over lower numbers if overlapping.
  
-channel_list ​enc_channels+**//​alpha//​** ​ Sets the transparency of the text. Possible values: 0-255. 
 +== 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+JSON formatted table with values below
  
-</code>+**//​ret//​** ​ Custom return ​code of the HTTP POST request. 0 on success, 1 on failure.
  
-The "loadfromdb=true" ​parameter will load the current settings from the database.+**//​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.+----
  
-For example, this is what a StartChannel request from the web server looks like:+==== OverlayStop ====
  
-<​code>​ +----
-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>​+Stop overlay.
  
-==== StartChannel ====+== Parameters: ​==
  
-\\ +----
-Transition the encoder channel into the running state.+
  
-Once you start the channel, it will not transmit data until the\\ +//​**chn**// ​ Get the encoder ​channel ​number. The default ​is encoder channel 1. Select between encoder channels. Possible values: 1, 2, 3, or 4.
-video input is detected.+
  
-==== StopChannel ====+//​**rgn_idx**// ​ ​Index of overly for this channel. 
 +== Returns: ​==
  
-Transition the encoder channel into the stopped state.+----
  
-==== SaveUser ====+JSON formatted table with values below
  
-Save current settings to non-volatile memoryso they will be used on the next startup.+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on successon failure.
  
-==== RestartBoard ====+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-Reboot ​the board+---- 
 + 
 +==== 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. 
 + 
 +----
  
 ==== PtzContinuousMove ==== ==== PtzContinuousMove ====
  
-Pan to the left at half speed+----
  
-<​code>​ +Send continous move command to the PTZ.
-  action=PtzContinuousMove&​data={"​PanTilt":​{"​x":​-0.5,"​y":​0},"​idx":​0}+
  
-</​code>​+== Parameters: ==
  
-Pan to the right at half speed+----
  
-<​code>​ +//**data **//  Parse the JSON formatted ​data and retrieve the modepositionspeed value, ptz_timeout. 
-  action=PtzContinuousMove&​data={"​PanTilt":​{"​x":​0.5,"​y":​0},"​idx"​:0}+== Returns==
  
-</​code>​+----
  
-Tilt down at max speed+JSON formatted table with values below
  
-<code+**//​ret//​** ​ Custom return ​code of the HTTP POST request. ​on success, 1 on failure.
-  action=PtzContinuousMove&​data={"​PanTilt":​{"​x":​0,"​y":​1},"​idx":​0}+
  
-</code>+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +---- 
 + 
 +==== 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. 
 + 
 +---- 
 + 
 +==== 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. 
 + 
 +---- 
 + 
 +==== 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 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. 
 + 
 +---- 
 + 
 +==== 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. 
 + 
 +---- 
 + 
 +==== 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. 
 + 
 +----
  
 ==== PtzStop ==== ==== PtzStop ====
  
-Stop pan and tilt+----
  
-<​code>​ +Stop the PTZ
-  action=PtzStop&​data={"​mode":​1,"​idx":​0}+
  
-</​code>​+== Parameters: ==
  
-==== CameraControl ====+----
  
-Send VISCA commands to camera.+//**data **//  Parse the JSON formatted data and retrieve the mode, position, speed value, ptz_timeout,​ profile token. 
 +== Returns: ==
  
-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.+----
  
-API Format:+JSON formatted table with values below
  
-<code+**//​ret//​** ​ Custom return ​code of the HTTP POST request. 0 on success, ​on failure.
-action=CameraControl&​command=visca_command&​cam_index=1+
  
-</code>+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-**example:​**+----
  
-Commands without value assignments+==== RemoveJobs ====
  
-<​code>​ +----
-action=CameraControl&​command=dzoom_off&​cam_index=1+
  
-</​code>​+Delete the schedule jobs from the Database.
  
-Commands with value assignments+== Parameters: ==
  
-<​code>​ +----
-action=CameraControl&​command=set_monitor_mode 1080p-59.94&​cam_index=1+
  
-</code>+//​**purgelist**// ​ List of schedule jobs to be removed.
  
-The commands use the same syntax as the serial menu "​V"​ command, as shown below+//​**rowcnt**// ​ Number of rows. 
 +== Returns: ==
  
-For the most current list of VISCA commands supported press "​V"​ from the Serial/SSH session of the Serial Menu.+----
  
-<​code>​ +JSON formatted table with values below
-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: 0 - 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>+**//​ret//​** ​ Custom return ​code of the HTTP POST request. 0 on success, 1 on failure.
  
-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+**//​status//​** ​ String describing ​the failure when **ret** ​is 1. "​OK"​ on success.
  
-The values ​accepted are either ​or 2+---- 
 + 
 +==== 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, ​on failure. 
 + 
 +**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success. 
 + 
 +----
  
 ==== 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)
  
-Possible values: autoindooroutdoor, onepush, autotrace, manual, outdoor_auto,​+//​**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.
  
-<​code>​ +//​**color_gain**// ​ color gain. Default value is 4. Possible values: Range from 0 (60%) to 14 (200%)
-               ​sodium_lamp_auto,​ sodium_lamp_fixed,​ sodium_lamp_outdoor+
  
-</code>+//​**color_hue**// ​ color hue. Default value is 7. Possible values: Range from 0 (60%) to 14 (200%)
  
-=== color_gain ===+//​**chroma_suppress**// ​ Chroma suppress. Default value is 1. Possible values: 0=none, 1, 2, 3
  
-Possible values: ​Range from (60%) to 14 (200%)+//​**wb_manual_rgain_direct**// ​ white balance manual red gain. Default value is 190. Possible values: 0 to 255
  
-=== color_hue ===+//​**wb_manual_bgain_direct **//  white balance manual blue gain. Default value is 190. Possible values: 0 to 255
  
-Possible values: ​Range from (60%) to 14 (200%)+//​**optical_zoom_only **//  optical zoom only. Default value is 0. Possible values: 0, 1
  
-=== chroma_suppress ===+//​**focus_direct_value**// ​ focus direct value. Default value is 4096. Possible values: 0x1000 to 0xf000
  
-Possible values: ​0=none1, 2, 3+//​**manual_focus **//  Manual focus. Default value is auto. Possible values: ​automanual
  
-=== wb_manual_rgain_direct ===+//​**exposure_mode **//  Exposure mode. Default value is 0. Possible values: 0 - Auto, 10 - Shutter Priority, 11 - Iris -Priority, 3 - Manual.
  
-Possible values: 0 to 255+//​**shutter**// ​ Shutter. Default value is 7.
  
-=== wb_manual_bgain_direct ===+//**iris **//  Iris. Default value is 0.
  
-Possible values: ​to 255+//​**gain**// ​ Gain. Default value is 0.
  
-=== optical_zoom_only ===+//​**high_sensitivity**// ​ high sensitivity value. Default value is 3. Possible values 0, 1.
  
-Possible values0, 1+//​**hlc_level **//  hlc level. Default value is 0. Possible values ​in range to 3.
  
-=== focus_direct_value ===+**hlc_level_mask** mask value of hlc level. Default value is 0. Possible values 0, 1.
  
-Description:​ Set manual camera focus distance Possible values: 0x1000 to 0xf000+//​**stable_zoom**// ​ stable zoom on or off. Default value is off.
  
-=== manual_focus ===+//**eflip **//  Default value is 5. Possible values 0, 1.
  
-Description:​ Set focus mode+//​**lr_reverse **//  Default value is 0. Possible values 0, 1.
  
-Possible values: auto, manual+//​**monitor_mode **//  Default value is 1080p-59.94.
  
-==== SetIp ====+//​**genlock_source **//  Default value is 2.
  
-=== local_ip ===+//​**zoom_step_size **//  Default value is 4. Possible values in range (1 - 7).
  
-IPv4 adresss+//​**focus_step_size **//  Default value is 1. Possible values in range (0 - 7).
  
-=== local_netmask ===+//​**manual_icr **//  Default value is Off. Possible values: On, Off, Auto, Auto Color
  
-IPv4 netmask+//​**img_freeze **//  Default value is 0. Possible values: 0, 1.
  
-=== default_gw ===+//**hr_mode **//  High resolution mode. Default value is 0. Possible values: 0, 1.
  
-IPv4 default gateway+//​**img_stabilizer ** //Default value is 0. Possible values 0, 1.
  
-=== local_dnsip ===+//​**img_bw** //Image black white. Default value is 0. Possible values 0, 1.
  
-DNS server primary+//​**nr_2d_level **//  Default value is 5. Possible values in range (0 - 5).
  
-=== local dnsip2 ===+//​**nr_3d_level** //Default value is 4. Possible values in range (0 - 5).
  
-DNS server secondary+//​**icr_threshold** //Default value is 14. Possible values in range (0-255 for 4K camera, 0-28 for HD camera).
  
-=== do_autostart ===+//​**slow_shutter** //Default value is 0. Possible values: 0, 1.
  
-Control automatic stream start after bootup+//​**slow_shutter_limit **//  Default value is 4. Possible values in range: (1 to 6)
  
-Possible values: ​1 = do autostart ​= do not autostart+//​**flicker_reduction** //Default value is 0. Possible values: 0, 1.
  
-=== enc_adv_setting ===+//​**img_stabilizer_level** //Default value is 0. Possible values: 0, 2.
  
-Control appearance of advanced settings on WebUI+//​**wide_dynamic_range** //Default value is 3.
  
-Possible values: ​off, on+//​**ve_brightness** //Default value is 3. Possible values ​in range06. 
 + 
 +//​**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 ==== 
 + 
 +---- 
 + 
 +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. 
 + 
 +---- 
 + 
 +==== 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. 
 + 
 +---- 
 + 
 +==== 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. 
 + 
 +---- 
 + 
 +==== 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. 
 + 
 +---- 
 + 
 +==== 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. 
 + 
 +---- 
 + 
 +==== 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. 
 + 
 +---- 
 + 
 +==== 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. 
 + 
 +---- 
 + 
 +==== 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 ==== ==== 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 success1 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 ==== 
 + 
 +---- 
 + 
 +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. 
 + 
 +---- 
 + 
 +==== 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. 
 + 
 +---- 
 + 
 +==== 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. 
 + 
 +---- 
 + 
 +==== 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 success1 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
  
-=== 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 ​===+==== user_add ====
  
-Type of overlay to be used possible values: text or png.+----
  
-=== source ===+Add a new user in the Database.
  
-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.+== Parameters: ==
  
-=== 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)+//​**Name**// ​ Get new user name
  
-=== char_size ===+//​**Level**// ​ Get the level of permission for the new user name. Possible value: 0 to 7.
  
-For text overlay this is the character sizePossible values16,32,64+//​**Password**// ​ Get the password for the new user name. 
 +== Returns==
  
-=== layer ===+----
  
-This will set the layer for the overly higher numbers will overlay over lower numbers if overlapping.+JSON formatted table with values below
  
-=== alpha ===+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Sets the transparency of the textPossible values: 0-255+**//​status//​** ​ String describing ​the failure when **ret** is 1. "​OK"​ on success.
  
-==== OverlayStop ====+----
  
-=== chn ===+==== user_remove ====
  
-​Encoder channel to remove overlay from.+----
  
-=== rgn_idx ===+Remove the user from the database.
  
-​Index of overly for this channel.+== Parameters: ==
  
-==== ​Dynamic ====+----
  
-=== chn ===+//**data **//  Parse the JSON formatted data and retrieve the user name. 
 +== Returns: ​==
  
-​Encoder channel to apply dynamic command to.+----
  
-<font 12.8px/​Arial,​ sans-serif;;#​000000;;​inherit font-family:​ Arial, sans-serif; font-weight:​ bold; font-size: 12.8px;>​var</​font>​+JSON formatted table with values below
  
-Variable to modify dynamicallyPossible values: vratedivvrate, gop, analog_gain,​ telop_text, pip_enable, pip_location,​ startmulticast,​ stopmulticast+**//​ret//​** ​ Custom return code of the HTTP POST request0 on success1 on failure.
  
-=== val ===+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-Value to set dynamic variable to.+----
  
-==== ​SetSNTP ​====+==== user_update_level ​====
  
-=== enable ===+----
  
-Enable/Disable SNTP.+Update/change the level of permission to the given user name.
  
-=== servers ===+== Parameters: ​==
  
-NTP server or list of NTP servers.+----
  
-=== timezone ===+//**data **//  Parse the JSON formatted data and retrieve the user name and level of the permission. 
 +== Returns: ​==
  
-Linux TZ database value for Timezone.+----
  
-==== ​SetOnvif ====+JSON formatted table with values below
  
-=== enable ===+**//​ret//​** ​ Custom return code of the HTTP POST request. 0 on success, 1 on failure.
  
-Enable/Disable ONVIF.+**//​status//​** ​ String describing the failure when **ret** is 1. "​OK"​ on success.
  
-=== fixed_profile_max ===+----
  
-Maximum ONVIF profiles to allow (1 or 2).+==== user_update_password ====
  
-==== ​SetTermSrvEnable ====+----
  
-=== termserve_remote_enable ===+Update/​change the password to the given user name.
  
-Enable/​Disable remote access to terminal server.+== Parameters: ==
  
-==== ​SetZFinderEnable ====+----
  
-=== zfinder_enable ===+//**data **//  Parse the JSON formatted data and retrieve the user name and password. 
 +== Returns: ​==
  
-Enable/Disable zfinder support.+---- 
 + 
 +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. 
 + 
 +---- 
 + 
 +==== 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 GET request. 0 on success, -1 on failure. 
 + 
 +//​**interface**// ​ TEXT, 
 + 
 +**//​enable//​** ​ TEXT. 
 + 
 +//​**eap**// ​ TEXT. 
 + 
 +**//​anonymous_identity//​** ​ TEXT. 
 + 
 +//​**identity**// ​ TEXT. 
 + 
 +//​**password**// ​ TEXT. 
 + 
 +//​**private_key_password**// ​ TEXT. 
 + 
 +---- 
 + 
 + 
 +==== GetCronJobs ==== 
 + 
 +---- 
 + 
 +Get the schedule job 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. 
 + 
 +**//​enable//​** ​ INTEGER, 
 + 
 +//​**cron**// ​ TEXT. 
 + 
 +//​**func**// ​ TEXT. 
 + 
 +**//​func_args//​** ​ TEXT. 
 + 
 +//​**type**// ​ TEXT. 
 + 
 +//​**minutes**// ​ INTEGER. 
 + 
 +//​**hours**// ​ INTEGER. 
 + 
 +//​**day**// ​ INTEGER. 
 + 
 +//​**month**// ​ INTEGER. 
 + 
 +//​**cron**// ​ TEXT. 
 + 
 +---- 
 + 
 + 
 +==== 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 GET request. 0 on success, -1 on failure. 
 + 
 +**//​mounted//​** ​ TEXT, 
 + 
 +---- 
 + 
 + 
 +==== 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 GET request. 0 on success, -1 on failure. 
 + 
 +//​**numerator**// ​ INTEGER, 
 + 
 +//​**denominator**// ​ INTEGER. 
 + 
 +---- 
 + 
 + 
 +==== 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 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. 
 + 
 +---- 
 + 
 + 
 +==== 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) ===== ===== Encoder Actions (POST) =====
Line 1715: 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
Line 1725: Line 11560:
 </​code>​ </​code>​
  
-===== Reading Statistics ​=====+===== snapshot.cgi Control ​=====
  
-Python example of updating and reading encoder statistics:+<​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:
 +
 +* *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 =====
  
 +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>​
 +
 +import requests,​json,​ sys
 +from requests.auth import HTTPDigestAuth
 +
 +auth=HTTPDigestAuth('​admin','​mypassword'​)
 +
 +print requests.get(server_url,​ params='​ctrl=stats&​chn=null',​ auth=auth).json()
 +
 +</​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.1604084101.txt.gz · Last modified: 2020/10/30 18:55 by rachel