For HE4K-01 / HE4K-R4 / MVE-150 / MVE-100R / SME-01 / DME-02/03/04 use Z3-TI-http_api
For the HE1080/HE2160 use Z3-Camera_Solutions-http_api
To read configuration variable, simply perform an HTTP GET to the URL
http://server_address/cgi-bin/control.cgi
with the body as given below.
The reponse will be in JSON format, giving the value of each variable.
To read global configuration variables, GET with this body:
ctrl=sys&chn=null
To read encoder channel configuration variables for channel 1, GET with this body:
ctrl=enc&chn=1
Python example code for reading configuration:
import requests, json, sys server_url='http://192.168.0.120/cgi-bin/control.cgi' global_cfg = requests.get(server_url, params='ctrl=sys&chn=null') print global_cfg.json() enc_cfg = requests.get(server_url, params='ctrl=enc&chn=1' ) print enc_cfg.json()
Sample output:
>>> print global_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'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}
Description: Enable audio channel
Possible values: yes, no
Description: Audio encoder algorithm selection
Possible values: dsp_aaclc, fdk_aaclc, fdk_aache, fdk_aache_v2
Description: Audio encode bitrate
Possible values: Depends on codec; in units of bits per second
Description: Audio sample rate
Possible values: 48000, 44100
Description: Select audio input
Possible values: MICL (microphone, line input levels)
MICL (unpowered microphone levels) HDMI (microHDMI input) HD-SDI (SDI input)
Description: Audio PID for transport stream.
Possible values: 32 to 8191 - must not conflict with other PID assignments.
Description: Destination UDP port for RTP audio
Description: For transport stream modes only – intial PTS to PCR offset for audio, in milliseconds
Possible values: 100 to 2000
Description: Password for RTMP authentication.
Description: Username for RTMP authentication.
Description: Enable or disable RTMP authentication. Default: off Possible values: on, off
Description: Encoder channel number
Possible values: 1, 2, 3
Description: Column count for ProMPEG.
Possible values: integer greater than 1
Description: Enable ProMPEG if supported.
Possible values: on, off
Description: Row count for ProMPEG.
Possible values: integer greater than 1
Description: Size of TSFILE or AUX file recording, in bytes.
A “K” suffix indicates kilobytes (thousands of bytes/second).
A “M” suffix indicates megabytes (millions of bytes/second).
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.
Absolute path to mounted media device (e.g. /media/sda1/)
For MP4 recording only. Possible values: normal, streaming
normal means MOOV atom at the end of file.
streaming means MOOF atoms interspersed throughout the file, which is more tolerant of errors and truncated files.
streaming is recommended for most recording scenarios. Only select “normal” if you want conventional MOOV atom at the end of file, if some legacy tool or decoder requires it.
OSD overlay text character size in pixels
Possible values: 16, 32, or 64
Enable or disable telop (i.e. OSD overlay of text).
Possible values: on, off
Where to overlay text in the encoded video
Possible values: top_left top_right top_center bottom_left bottom_right bottom_center
Text string for OSD overlay
Description: Distance between I frames (key frames) in GOP sequence
Possible values: 1 through 240
Description: Video bitrate in bits per second.
Possible values: A “K” suffix indicates kilobits (thousands of bits/second).
A “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.
Description: Video maximum burst size in milliseconds.
Possible values: 100 to 2000
Description: Destination URL address for encoded bitstream. May be interpreted differently depending on “vprotocol” setting.
For UDP and RTP transports:
client_ip:client_port
For RTMP transport:
server_ip[:server_port]/application/streamname
Description: Divide video input frame rate by this number to get encode frame rate.
The encoder will discard (frameratediv-1) out of (frameratediv) frames.
Possible values: 1, 2, 3, 4, 5, 6
Description: Specifiec which codec to encode with.
Possible values: h265, h264, mjpeg
Description: H.264 profile (see https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles for full description)
Possible values: baseline, main, high
Description: Protocol used to transport the encoded bitstream.
Possible values: rtp, rtmp, udp, asi, tsfile, mts, tsrtp
Description: Set balance between low latency, and higher quality+bitrate compliance.
Possible values: lowlat, balanced, high
Description: Rate control mode for encoder.
Possible values: cbr, vbr
vbr mode may be burstier than cbr.
Description: Video resolution
Possible values: follow_input preserve video source resolution, no resize
WxH resize to width W and height H
Description: Video input from which encoder will source its video
Possible values: Board-dependent
Description: Sets the interlaced mode for the video input
Possible values: combined, separated (H265 only)
Description: video multicast destination for RTSP. Used by ONVIF StartMulticast/StopMulticast functions
Possible values: valid multicast addresses
Description: audio multicast destination for RTSP. Used by ONVIF StartMulticast/StopMulticast functions
Possible values: valid multicast addresses
Description: enables/disables rtsp authorization for stream
Possible values: on, off
The following parameters only apply to transport stream encoding (transport is set to udp, asi, tsfile, mts, or tsrtp).
Description: Video PID for transport stream.
Possible values: 32 to 8191 – must not conflict with other PID assignments
Description: Audio PID for transport stream.
Possible values: 32 to 8191 – must not conflict with other PID assignments
Description: PCR PID for transport stream.
Possible values: 32 to 8191 – must not conflict with other PID assignments
Description: PMT PID for transport stream.
Possible values: 16 to 31 – must not conflict with other PID assignments
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.
Description: Low latency transport stream mode (VBR).
Possible values: off, on
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.
Description: Bitrate to allocate in transport stream for KLV data.
Description: Enable KLV capture from SDI, UART or debug file, if supported.
Possible values: off, on
Description: Type of KLV source device, whose path is specified in klvsrc
Possible values: sdi, serial, file
Description: If klv_mode is serial, specify the baud rate
Possible values: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
Description: Select synchronous or asynchronous transport stream KLV multiplexing, as specified in MISB ST 1402
Possible values: sync, async
Description: PID for KLV data in transport stream
Description: Source device for KLV metadata
Description: Interval between PCR packets in milliseconds.
Possible values: 30 - 100
Python example code for starting/stopping all channels:
import requests, json import sys, getopt actionname='StartChannel' server_url='http://192.168.0.120' control_cgi_url = server_url + '/cgi-bin/control.cgi' payload = 'ctrl=sys&chn=null' sysctrl = requests.get(control_cgi_url, params=payload) j = sysctrl.json() print j enc_channels_string = j['enc_channels'] opmode = j['opmode'] enc_channels = enc_channels_string.split( ',' ) print 'enc_channels', enc_channels, 'opmode', opmode channel_list = enc_channels 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
The “loadfromdb=true” parameter will load the current settings from the database.
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:
action=StartChannel&chn=1&vsource=CAMERA&vres=follow_input&vcodec=h265&vgdr=off&vprofile=high&vratectrl=cbr&vbitrate=4M&vframeratediv=1 &vgopsize=60&vprotocol=rtsp&vdest=192.168.0.6%3A8600&storage=&fprefix=MOV1_%25C&vpid=221&vdelay=1000&pcrpid=521&pcrinterval=50&pmtpid=31 &tsrate=5000K&tslowlat=on&feconoff=off&fecrow=1&feccol=5&zixioverhead=15&zixilatency=500&zixifecblock=50&zixirateadjen=on&zixiauthen=off &zixisession=test&zixiuser=user&aenable=off&asource=HDMI&apair=0&acodec=fdk_aaclc&abitrate=128000&asamplerate=1&aport=8700&apid=120 &aptspcr=250&klvenable=off&klvmuxmethod=sync&klvmode=sdi&klvsrc=%2Fdev%2Fgv7601.0&klvpid=35&klvbrate=1000&klvserialbaud=115200 &authonoff=off&auth_user=user&auth_passwd=password&auxonoff=off&filesize=1024M&telopenable=off &teloptext=Z3-Q603-HD&teloplocation=top_left&telopcharsize=32&gps_overlay_enable=off &gps_overlay_device=%2Fdev%2FttyAMA0&gps_overlay_location=top_right&gps_overlay_char_size=32&pipenable=off&piplocation=top_right &vquality=balanced&vinterlacemode=combine&vmulticastdest=225.1.2.3&amulticastdest=225.1.2.3&rtsp_auth_enable=off&rtsp_auth_username=admin &rtsp_auth_password=admin&lowdelay_opt=off&vcrop_enable=off&vcrop_width=1920&vcrop_height=1080&vcrop_x=0&vcrop_y=0 &rotate_enable=off&rotate_angle=0&rtmp265_enable=off&avmux_index=streaming&srt_pass=password1234&srt_encrypt=0&srt_mode=0&srt_destAddr=192.168.0.6
Transition the encoder channel into the running state.
Once you start the channel, it will not transmit data until the
video input is detected.
Transition the encoder channel into the stopped state.
Control advanced settings display on WebUI.
Possible values: off, on
Save current settings to non-volatile memory, so they will be used on the next startup.
Erase configuration database.
Optional arguments: reset_ip (default value:0): 1=clear IP settings, 0=keep IP settings
This command erases the config database. To generate the factory settings, you must reboot the system, either using the “RestartBoard” action or power-cycling the system.
Reboot the board
Set logging level. The setting is persistent.
Possible values: 0=None, 1=Error, 2=Information, 3=Diagnostics, 4=Codeflow, 5=Dataflow
Note: Dataflow debug is for debug only, and not recommend for normal system operation.
Possible values: off, on
Possible values: off, on
Dynamic DNS settings.
Pan to the left at half speed
action=PtzContinuousMove&data={"PanTilt":{"x":-0.5,"y":0},"idx":0}
Pan to the right at half speed
action=PtzContinuousMove&data={"PanTilt":{"x":0.5,"y":0},"idx":0}
Tilt down at max speed
action=PtzContinuousMove&data={"PanTilt":{"x":0,"y":1},"idx":0}
Stop pan and tilt
action=PtzStop&data={"mode":1,"idx":0}
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.
API Format:
action=CameraControl&interface=Visca&command=visca_command&cam_index=1 interface possible values: Visca, Tamarisk, Tau2, Boson, Genlock (default: Visca)
example:
Commands without value assignments
action=CameraControl&command=dzoom_off&cam_index=1
Commands with value assignments
action=CameraControl&command=set_monitor_mode 1080p-59.94&cam_index=1
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.
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))
With dual VISCA camera supported added we need to tell the API which camera we want to talk to. this is done with cam_index
The values accepted are either 1 or 2
Save camera-related settings below.
Description: Set camera zoom
Possible values: 0 (wide) to 0x7ac0 (full zoom)
Possible values: auto. indoor, outdoor, onepush, autotrace, manual, outdoor_auto,
sodium_lamp_auto, sodium_lamp_fixed, sodium_lamp_outdoor
Possible values: Range from 0 (60%) to 14 (200%)
Possible values: Range from 0 (60%) to 14 (200%)
Possible values: 0=none, 1, 2, 3
Possible values: 0 to 255
Possible values: 0 to 255
Possible values: 0, 1
Description: Set manual camera focus distance Possible values: 0x1000 to 0xf000
Description: Set focus mode
Possible values: auto, manual
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.
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.
JSON formatted table with values below
ret Custom return code of the HTTP POST request. 0 on success, 1 on failure.
status String describing the failure when ret is 1. “OK” on success.
Controls composite output (passthru video from camera)
Set display standard for composite output
Possible values; auto, ntsc, pal
Control serial port terminal server for VISCA
Possible values: client, server
Possible values: clearchannel, telnet
Local TCP port (for server mode)
Remote IP address (for client mode only)
Remote TCP port (for client mode only)
Possible values: 9600, 19200, 38400, 57600, 115200
Add/Update overlay
Encoder channel to add overlay to.
Index to map overlay to.
Type of overlay to be used possible values: text or png.
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.
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)
For text overlay this is the character size. Possible values: 16,32,64
This will set the layer for the overly higher numbers will overlay over lower numbers if overlapping.
Sets the transparency of the text. Possible values: 0-255
Encoder channel to remove overlay from.
Index of overly for this channel.
Encoder channel to apply dynamic command to.
var
Variable to modify dynamically. Possible values: vratediv, vrate, gop, telop_text, pip_enable, pip_location, startmulticast, stopmulticast
Value to set dynamic variable to.
Enable/Disable SNTP.
NTP server or list of NTP servers.
Linux TZ database value for Timezone.
Enable/Disable ONVIF.
Enable/Disable ONVIF persistent audio channel.
Maximum ONVIF profiles to allow (1 or 2).
return the encoder status
input : channel_number
Output : The encoder status can be running / couldn't deduct input on camera / idle / Stopped.
The encoder status values are stored in this path /tmp/enc_1_status.
delete the decoder history
input : channel number
output : Delete the channel number from the DECODER_HISTORY_TABLE of the database
Insert decoder history in the database
Input : channel number and URL
Output : Add the information in the DECODER_HISTORY_TABLE in the database
Set the analog mic decibal value
Input :
analog gain decibal value (Range -97 to 30)
Output : update the value in the AUDIO_INPUT_TABLE in the database
Output : update state settings in the database
Output : update state setting table in the database
check whether the mode is decoder or encoder using get_opmode()
save the encoder preseting value in the PRESET_TABLE
save the decoder preseting value in the PRESET_TABLE
Output : Update state setting table in the database
delete each row of the preseting value of encoder or decoder based on the get_opmode from the PRESET_TABLE
moving the preset value from the existing table to a new table and erasing the existing table
create a z3export.db and copy the presetting value of encoder or decoder based on the get_opmode of the PRESET_TABLE
Add new channel tab. Check the channel number is valid or not, for e.g. the channel number can be max (1 to 4)
and if so then we check whether the preset values are available for this channel number, then we will be reading from the PRESET_TABLE of the database.
If not, then we will adding the default values for this channel.
delete the channel tab and update the PRESET_TABLE of the database.
Read the current temperature status of cpu and lense.
Initially it checks in the /tmp/ folder with cur_temp file exists or not. If exist then it reads from the file
else it reads from the ioctl call.
Input : read the camera index ( value can be 1 or 2)
Output : provide the camera information. if camera index is 1 then check whether camera type is (Visca/tau/boson)
If camera index is 2 then check whether camera type is (Visca/tau/boson/tamarisk/CameraLink_CVBS/sdi)
Input : Read the device name
Output: update new device name in the STATE_TABLE in the database
enable/disable nfs
provide the nfs server ip address. Default is 192.168.1.6
provide the server root path / location.
Output: update nfs information in the STATE_TABLE in the database
enable/disable SNMP
read fpga value, the values can be (boson/cvbs/tamarisk/tau2)
Output : update fpga value in the STATE_TABLE of the database
Input : read rtsp port and timeout value required for the rtsp settings
Output : update rtsp value in the STATE_TABLE of the database
enable/disable video motion detection
sensitivity value required for vmd ( value will between 1 to 100)
enable/diable video motion and too darkness zone
crop width for VMD and too_darkness
crop height for VMD and too_darkness
crop startx for VMD and too_darkness
crop starty for VMD and too_darkness
enable/disable too darkness
threshold value for too darkness ( value will between 1 to 100)
channel number (1 / 2)
Output : update rtsp value in the STATE_TABLE and ONVIF_VMD_TD_TABLE of the database
data: row information
Output : update ptz value in the ONVIF_Ptzs table of the database
data: row data values like profiletoken, token,name,pan,tilt and zoom
Output : Insert the row value in the PTZ_Preset table of the database
data: row data values like ProfileToken,PresetTourToken,RowIndex,PresetDetailToken,PresetDetailHome,StayTime,pan,tilt,zoom,pspeed,tspeed and zspeed
Output : Insert the row value in the ONVIF_PtzTourSpots table of the database
speed: Absolute move speed
Output: Updates the PTZ speed value for absolute move
data: PTZ preset token value
Output: Sets the PTZ preset value for current user
data: PTZ preset token value
Output: Clear the PTZ preset value for current user
data: PTZ preset token value
Output: clear the existing preset and sets the given PTZ preset value
profile_token: token value
tour_token: token value
Output: Send the visca command to add the new tour spot
profile_token: token value
tour_token: token value
row_index: row index value
Output: Send the visca command to remove the existing tour spot
data: data to be passed in Visca command ptzStartTour
Output: Send the visca command ptzStartTour to start the new ptz tour
data: ptx vector of Pan ot Tilt
Output:Updates the PTZ value
data: Query Index
Output: Quey the PanAngle or TiltAngle
data: Query Ins
Output: Returns the YawAngle, PitchAngle or RollAngle
data: data to be passed in Visca command PtzAuxiliary
Output: Send the visca command PtzAuxiliary
data: if data value 0) remove the preset, 1) set the preset and 2) Goto the preset
Output: Removes or updates the ptz preset raw
username: name of the user
user level: user levels 0-7 to define the roles
password: user credentials
Output: Add the new user in ONVIF_users table of database
data: Name of the user
Output: User will be removed in ONVIF_users table of database
data: Name of the user
Output: User level will be removed in ONVIF_users table of database
data: Name of the user
Output: User password will be removed in ONVIF_users table of database
mximum number of login limit. The limit is in range of ( greater than 2 and less than 100 )
Login window period, the value are considered as seconds. Max login attempts can be reached (Greater than 59 and less than or equal to 32768)
Locout interval value are mentioned in seconds value, which is used when maximum number of login limit is reached. The valuare ranges are ( -1 to 32768)
Login timeout
output: Updates the system login logout limits in the STATE table of the database
Output: User password will be removed in ONVIF_users table of database
is password required or not.
Update the state of the required web login value which is (1 / 0 ) in the STATE_TABLE of the database
Json data wich contains nonce and name of the user
Output: Remove digest entry for the user
Output: Forces the login
Saving the CameraLx settings value and update in the CAMERA_LX_TABLE in the database
read the value of exposure mode, shuter speed , exposure component settings, whitebalance, ISO, Color Temp, NtscPalSelection, MovieSteadyMode
used in the camera settings
saves the camera TAU settings
reads the color pallete value from this path /tmp/currentlut*.txt and also reads the active color table
Save the camera TAU settings in the CAMERA_TAU_TABLE in the database
saves the camera DRS Tamarisk settings
reads the color pallete value
Save the camera DRS tamarisk settings in the CAMERA_DRS_TAMARISK_TABLE in the database
saves the camera boson settings
reads the color pallete value
Save the camera DRS tamarisk settings in the CAMERA_BOSON_TABLE in the database
saves the camera Link settings
reads the pixel format and color table value
Save the camera DRS tamarisk settings in the CAMERALINK_TABLE in the database
chn: Encoder channel number
dec: Device name as in storage
Output: un mounts the device to eject in safe
mnt_point: storage media device node path which needs to be formated
file_system: File system type to be used with mkfs
Output: Formats the given media in FAT filesystem format and mount it
enc_vivpss_mode_enable : Enable or disable the VPSS mode
Output: Update the VPSS enable or Disable in STATE table of the database
ssid: Wifif SSID
psk: Wifi password
wifi_client_local_ip: Local IP addres ragne for WIFI network
wifi_client_local_local_netmask: Subnet mask to be used with Wifi network
wifi_client_default_gw: Default Gateway to be used with Wifi Network
wifi_client_use_dhcp: DHCP server to be used with Wifi network for DNS resolutions
Output: Updates the wifi network Access Point settings in State table of database
Output: Disconnects the Wifi Network
passwd: The PSK password to connect with WIFI network
passwden: Enable or disable the password to connect with WIFI
Output: Update the Wifi AccessPoint setting in STATE table of database
ssid: Wifi Access point name or emptry string if there is a single wifi network
Output: Returns the PSK password, which was set earlier using SetAPConfig
console_enable: “on” to enable or “None” to disable the console device for the log prints
Output: Enable or disable the console device for log prints
Chn: Decoder Channel number viewport: viewport settings Output: Updates the viewport settings for the given decoder instance in DECODER_TABLE of database
Get the camera tab index the values are (1 / 2) and camera type. The camera types are (Visca / tau / boson / tamrisk)
if camera index is 2 , then the camera type (Visca / SDI)
Read the camera tab index.
Based on the camera index and camera type the corresponding html file will be read. The html files are located in the /opt/webgui/*.html
The html files are visca.html / flexio.html
Set the video group configuration, and update in the database and change the active settings dynamically.
Is the camera index, the values are ( 4K. DME-20, HE2160-RPS ) and so on.
enable/disable noise reduction.
enable/disable crop region.
===
crop_x ===
crop rectangle x value
===
crop_y ===
crop rectangle y value
crop rectangle width value
crop rectangle height value
Output : Update the value in the VIDEO_GROUP_TABLE in the database.
Read the value of color table using the system call and pixel format
from the fpga.
Set the value of color table and pixel format and update in the CAMERALINK_TABLE of the database.
Remove / delete the jobs from the schedule.
Read the job index and job name
Number of rows of the schedule job.
Delete the jobs in the /opt/config/z3schedules/root/ in the system and also update in the SCHEDULE_TABLE in the database.
Read the values from the schedule tab and save the jobs
The data contains multiple values, such as
enable/disable of schedule
Name of the job
Function are (Start-Encoder / Stop-Encoder / Snapshot / PTZ Preset / PTZ Tour / Reboot)
Channel (Ch1 / Ch2 / Ch3 / Ch4)
Options about the time, which can be (Every Minute / hours / day / Week/ Month/ Yearly / custom )
Number of rows of the schedule job.
Save the jobs in the /opt/config/z3schedules/root/ in the system and also update in the SCHEDULE_TABLE in the database.
Write encoder settings to active preset. See Python example code for Seting Configuration below
Requests an update to encoder_status_str variable.
To read the result, you need to POST the “stats” control as shown\ in the Python example code below.
Requests an update to stream_status_str variable.
To read the result, you need to POST the “stats” control as shown\ in the Python example code below.
Requests an update to astream_status_str variable.
To read the result, you need to POST the “stats” control as shown\ in the Python example code below.
Requests an update to source_status_str variable.
To read the result, you need to POST the “stats” control as shown\ in the Python example code below.
To set the encode configuration per channel the SetEncoder action is used with a post. All variables should be present or they will be replaced with a defualt that may not be valid for your application. More than one channel can be set per command. It is recommended you first read the current settings from the encoder then modify them and send the new settings back as in the Python example below:
import requests, json, sys server_url='http://192.168.0.120/cgi-bin/control.cgi' channel = 1 enc_cfg = requests.get(server_url, params='ctrl=enc&chn={}'.format(channel)) print enc_cfg.json() enc_cfg_json=enc_cfg.json() enc_cfg_json['vframeratediv'] = 2 #set frame rate divider to 2 new_cfg = {} new_cfg['action'] = 'SetEncoder' for key, value in enc_cfg_json.iteritems(): print "key = {} value = {}".format(key,value) new_idx = "enc_{}_{}".format(channel,key) print "setting {} to {}".format(new_idx,value) new_cfg[new_idx] = value print new_cfg requests.post(server_url, data=new_cfg)
http://<ENCODER_IP>/snapshot.cgi?size=3840x2160&quality=100 http://<ENCODER_IP>/snapshot.cgi?chn=1&size=1280x720&quality=80
valid options are:
chn =[1,2]
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 **
Python example of updating and reading encoder statistics:
import requests, json, sys server_url='http://192.168.0.120/cgi-bin/control.cgi' requests.post(server_url, {'action': 'EncoderStatus'} ) requests.post(server_url, {'action': 'StreamStatus'} ) requests.post(server_url, {'action': 'AStreamStatus'} ) requests.post(server_url, {'action': 'SourceStatus'} ) requests.post(server_url, {'action': 'TempStatus'} ) print requests.get(server_url, params='ctrl=stats&chn=null').json()
Example output:
{u'status': u'OK', u'astream_status_str': u'\tChannel 6 Codec fdk_aaclc Samplerate 48000 Input MICL Frames 32287820 OK', u'temp_status_str': u' LENS 29 CPU 78.700 FPGA 89.8 OK', u'ret': u'0', u'encoder_status_str': u' *** Encode Bitstream Received Statistics *** CH | Bitrate (Kbps) | Actual Bitrate | FPS | Actual FPS | Key-frame FPS | Width | Height ------------------------------------------------------------------------------------------------------------ 1 | 4000.00 | 4092.18 | 60.0 | 59.8 | 1.0 | 1920 | 1080 | OK', u'source_status_str': u' CAMERA 1920x1080p 60.00 fps\n', u'stream_status_str': u'Channel 1 URL rtsp Frames 12883581 OK'}
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.
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()
Write encoder settings to active preset. See Python example code for Seting Configuration below
Requests an update to encoder_status_str variable.
To read the result, you need to POST the “stats” control as shown\ in the Python example code below.
Requests an update to stream_status_str variable.
To read the result, you need to POST the “stats” control as shown\ in the Python example code below.
Requests an update to astream_status_str variable.
To read the result, you need to POST the “stats” control as shown\ in the Python example code below.
Requests an update to source_status_str variable.
To read the result, you need to POST the “stats” control as shown\ in the Python example code below.
To set the encode configuration per channel the SetEncoder action is used with a post. All variables should be present or they will be replaced with a defualt that may not be valid for your application. More than one channel can be set per command. It is recommended you first read the current settings from the encoder then modify them and send the new settings back as in the Python example below:
import requests, json, sys server_url='http://192.168.0.120/cgi-bin/control.cgi' channel = 1 enc_cfg = requests.get(server_url, params='ctrl=enc&chn={}'.format(channel)) print enc_cfg.json() enc_cfg_json=enc_cfg.json() enc_cfg_json['vframeratediv'] = 2 #set frame rate divider to 2 new_cfg = {} new_cfg['action'] = 'SetEncoder' for key, value in enc_cfg_json.iteritems(): print "key = {} value = {}".format(key,value) new_idx = "enc_{}_{}".format(channel,key) print "setting {} to {}".format(new_idx,value) new_cfg[new_idx] = value print new_cfg requests.post(server_url, data=new_cfg)
http://<ENCODER_IP>/snapshot.cgi?size=3840x2160&quality=100 http://<ENCODER_IP>/snapshot.cgi?chn=1&size=1280x720&quality=80
valid options are:
chn =[1,2]
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 **
Python example of updating and reading encoder statistics:
import requests, json, sys server_url='http://192.168.0.120/cgi-bin/control.cgi' requests.post(server_url, {'action': 'EncoderStatus'} ) requests.post(server_url, {'action': 'StreamStatus'} ) requests.post(server_url, {'action': 'AStreamStatus'} ) requests.post(server_url, {'action': 'SourceStatus'} ) requests.post(server_url, {'action': 'TempStatus'} ) print requests.get(server_url, params='ctrl=stats&chn=null').json()
Example output:
{u'status': u'OK', u'astream_status_str': u'\tChannel 6 Codec fdk_aaclc Samplerate 48000 Input MICL Frames 32287820 +OK', u'temp_status_str': u'+LENS 29 +CPU 78.700 +FPGA 89.8 +OK', u'ret': u'0', u'encoder_status_str': u' *** Encode Bitstream Received Statistics *** CH | Bitrate (Kbps) | Actual Bitrate | FPS | Actual FPS | Key-frame FPS | Width | Height ------------------------------------------------------------------------------------------------------------ 1 | 4000.00 | 4092.18 | 60.0 | 59.8 | 1.0 | 1920 | 1080 | +OK', u'source_status_str': u'+CAMERA 1920x1080p 60.00 fps\n', u'stream_status_str': u'Channel 1 URL rtsp Frames 12883581 +OK'}
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.
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()