Summary
Expert Power Control series provides HTTP/HTTPS-based control for power outputs through CGI GET requests and JSON-formatted status and configuration data. Interface is REST Level 1 compliant and supports output switching, batch sequencing, watchdog monitoring, device configuration, and SNMP, Syslog, and E-mail alerts.
Transport
protocols:
- http
- tcp
addressing:
base_url: "/"
port: 80
note: HTTP server port is configurable from 1 through 65535 using cmd=18
auth:
type: basic
users:
- user
- admin
optional: true
note: Authentication can be disabled using cmd=18&pwd=0
http:
methods:
- GET
- POST
status_error_codes:
unauthorized: 401
post_content_type: multipart/form-data
Traits
- powerable
- queryable
Actions
- id: switch_output
label: Switch Output
kind: action
command: "/ov.html?cmd=1&p={p}&s={s}"
method: GET
params:
- name: p
type: integer
description: Output number (1-based)
- name: s
type: integer
description: "0: switch off, 1: switch on"
- id: batch_start
label: Start Batch Mode
kind: action
command: "/?cmd=5&p={p}&a1={a1}&a2={a2}&s={s}"
method: GET
params:
- name: p
type: integer
description: Output number (1-based)
- name: a1
type: integer
description: "Action 1: 0=off, 1=on"
- name: a2
type: integer
description: "Action 2: 0=off, 1=on"
- name: s
type: integer
description: Wait time in seconds between Action 1 and Action 2; range 1..65535
- id: batch_cancel
label: Cancel Batch Mode
kind: action
command: "/?cmd=2&p={p}"
method: GET
params:
- name: p
type: integer
description: Output number (1-based)
- id: reset_output
label: Reset Output
kind: action
command: "/?cmd=12&p={p}"
method: GET
params:
- name: p
type: integer
description: Output number (1-based)
- id: configure_output
label: Configure Output
kind: action
command: "/?cmd=3&p={p}&name={name}&powup={powup}&powrem={powrem}&idle={idle}&on_again={on_again}&reset={reset}&we={we}&wip={wip}&wt={wt}&wport={wport}&wint={wint}&wret={wret}"
method: GET
params:
- name: p
type: integer
description: Output number (1-based)
- name: name
type: string
description: Output name (maximum 15 characters)
- name: powup
type: integer
description: "0: leave off after device start, 1: switch on after device start"
- name: powrem
type: integer
description: "0: do not remember state, 1: remember state for next start"
- name: idle
type: integer
description: Wait time in seconds after device start before switching on; 0 disables delay
- name: on_again
type: integer
description: Auto-switch-back delay in seconds; 0 disables automatic switching
- name: reset
type: integer
description: Reset power-down duration in seconds
- name: we
type: integer
description: "0: watchdog off, 1: watchdog on"
- name: wip
type: string
description: Hostname or IP address to monitor
- name: wt
type: integer
description: "0: ICMP ping, 1: TCP handshake"
- name: wport
type: integer
description: TCP port when wt=1; range 1..65535
- name: wint
type: integer
description: Watchdog interval in seconds; range 1..65535
- name: wret
type: integer
description: Unanswered probe count required to declare host failed; range 1..65535
- id: configure_input
label: Configure Input
kind: action
command: "/?cmd=13&p={p}&name={name}&hitext={hitext}&lowtext={lowtext}&inverted={inverted}&msgt={msgt}"
method: GET
params:
- name: p
type: integer
description: Input number (1-based)
- name: name
type: string
description: Input name (maximum 15 characters)
- name: hitext
type: string
description: Logical-1 condition name (maximum 15 characters)
- name: lowtext
type: string
description: Logical-0 condition name (maximum 15 characters)
- name: inverted
type: integer
description: "0: physical state equals logical state, 1: invert physical state"
- name: msgt
type: integer
description: "0: no messages, 1: generate messages when input condition changes"
- id: configure_ipv4
label: Configure IPv4
kind: action
command: "/?cmd=4&host={host}&ip={ip}&nm={nm}&gw={gw}&dns={dns}&dhcp={dhcp}"
method: GET
params:
- name: host
type: string
description: Hostname (maximum 15 characters)
- name: ip
type: string
description: IPv4 address
- name: nm
type: string
description: IPv4 network mask
- name: gw
type: string
description: Gateway IPv4 address
- name: dns
type: string
description: DNS server IPv4 address
- name: dhcp
type: integer
description: "0: DHCP off, 1: start DHCP request after device start"
- id: configure_ip_acl
label: Configure IP Access Control List
kind: action
command: "/?cmd=6&ping={ping}&acl={acl}&ipsec0={ipsec0}&ipsec1={ipsec1}&ipsec2={ipsec2}&ipsec3={ipsec3}&ipsec4={ipsec4}&ipsec5={ipsec5}&ipsec6={ipsec6}&ipsec7={ipsec7}"
method: GET
params:
- name: ping
type: integer
description: "0: ignore ICMP Echo Requests, 1: respond to ICMP Echo Requests"
- name: acl
type: integer
description: "0: IP filter off, 1: restrict IPv4 access to ipsec0 through ipsec7"
- name: ipsec0
type: string
description: Allowed host or network in CIDR notation; maximum 18 characters
- name: ipsec1
type: string
description: Allowed host or network in CIDR notation
- name: ipsec2
type: string
description: Allowed host or network in CIDR notation
- name: ipsec3
type: string
description: Allowed host or network in CIDR notation
- name: ipsec4
type: string
description: Allowed host or network in CIDR notation
- name: ipsec5
type: string
description: Allowed host or network in CIDR notation
- name: ipsec6
type: string
description: Allowed host or network in CIDR notation
- name: ipsec7
type: string
description: Allowed host or network in CIDR notation
- id: configure_http
label: Configure HTTP Server
kind: action
command: "/cmd=18&apwd={apwd}&upwd={upwd}&port={port}&pwd={pwd}&refr={refr}&sprp={sprp}"
method: GET
params:
- name: apwd
type: string
description: Admin password (maximum 15 characters)
- name: upwd
type: string
description: User password (maximum 15 characters)
- name: port
type: integer
description: HTTP server port; range 1..65535
- name: pwd
type: integer
description: "0: authentication off, 1: HTTP Basic authentication on"
- name: refr
type: integer
description: "0: automatic browser refresh off, 1: automatic browser refresh on"
- name: sprp
type: integer
description: "0: ov.html does not require authentication, 1: ov.html requires authentication"
- id: configure_snmp
label: Configure SNMP
kind: action
command: "/cmd=8&get={get}&set={set}&trap={trap}&cpub={cpub}&cpriv={cpriv}&trapv={trapv}&tr0={tr0}&tr1={tr1}&tr2={tr2}&tr3={tr3}&tr4={tr4}&tr5={tr5}&tr6={tr6}&tr7={tr7}"
method: GET
params:
- name: get
type: integer
description: "0: ignore SNMP Get, 1: answer SNMP Get using valid public community"
- name: set
type: integer
description: "0: ignore SNMP Set, 1: answer SNMP Set"
- name: trap
type: integer
description: "0: no traps, 1: send SNMP traps"
- name: trapv
type: integer
description: "1: SNMPv1 traps, 2: SNMPv2 traps"
- name: cpub
type: string
description: Public community name (maximum 15 characters)
- name: cpriv
type: string
description: Private community name (maximum 15 characters)
- name: tr0
type: string
description: Trap receiver IPv4 address or FQDN, optionally followed by alternate port
- name: tr1
type: string
description: Trap receiver 2
- name: tr2
type: string
description: Trap receiver 3
- name: tr3
type: string
description: Trap receiver 4
- name: tr4
type: string
description: Trap receiver 5
- name: tr5
type: string
description: Trap receiver 6
- name: tr6
type: string
description: Trap receiver 7
- name: tr7
type: string
description: Trap receiver 8
- id: configure_syslog
label: Configure Syslog
kind: action
command: "/?cmd=17&syslog={syslog}&slgsrv={slgsrv}"
method: GET
params:
- name: syslog
type: integer
description: "0: Syslog off, 1: send Syslog messages"
- name: slgsrv
type: string
description: Syslog server IPv4 address or FQDN, optionally followed by alternate port
- id: configure_email
label: Configure E-Mail
kind: action
command: "/?cmd=15&mail={mail}&auth={auth}&mailsrv={mailsrv}&sender={sender}&email={email}"
method: GET
params:
- name: mail
type: integer
description: "0: E-mail notifications off, 1: E-mail notifications on"
- name: auth
type: integer
description: "0: no SMTP authentication, 1: SMTP PLAIN authentication"
- name: mailsrv
type: string
description: SMTP server IPv4 address or FQDN, optionally followed by alternate port
- name: sender
type: string
description: Sender address
- name: email
type: string
description: Receiver address
- id: reset_device
label: Reset Device
kind: action
command: "/?cmd=39"
method: GET
params: []
note: Power ports and configuration remain untouched
- id: firmware_upload
label: Firmware Upload
kind: action
command: "/fwupdate.html?type=0"
method: POST
content_type: multipart/form-data
params:
- name: file
type: binary
description: Firmware file in bin format
note: Device reset is required after upload
- id: ssl_certificate_upload
label: SSL Certificate Upload
kind: action
command: "/fwupdate.html?type=1"
method: POST
content_type: multipart/form-data
params:
- name: file
type: binary
description: SSL certificate file in pem format
note: Device reset is required after upload
- id: config_upload
label: Configuration Upload
kind: action
command: "/fwupdate.html?type=2"
method: POST
content_type: multipart/form-data
params:
- name: file
type: binary
description: Configuration file in txt format
note: Device reset is required after upload
- id: json_status
label: Get JSON Status
kind: query
command: "/statusjsn.js?components={components}"
method: GET
params:
- name: components
type: integer
description: Decimal bitmask selecting status components
returns: JSON object containing selected status components
- id: get_output_status
label: Get Output Status
kind: query
command: "/statusjsn.js?components=1"
method: GET
params: []
returns: JSON outputs object
- id: get_input_status
label: Get Input Status
kind: query
command: "/statusjsn.js?components=2"
method: GET
params: []
returns: JSON inputs object
- id: get_output_and_input_status
label: Get Output and Input Status
kind: query
command: "/statusjsn.js?components=3"
method: GET
params: []
returns: JSON outputs and inputs objects
- id: get_all_status
label: Get All Status
kind: query
command: "/statusjsn.js?components=1073741823"
method: GET
params: []
returns: All status information selected by bitmask 0x3fffffff
- id: get_dns_cache_status
label: Get DNS Cache Status
kind: query
command: "/statusjsn.js?components=4"
method: GET
params: []
returns: JSON dns_cache object
- id: get_ethernet_status
label: Get Ethernet Status
kind: query
command: "/statusjsn.js?components=8"
method: GET
params: []
returns: JSON ethernet object
- id: get_misc_status
label: Get Miscellaneous Status
kind: query
command: "/statusjsn.js?components=16"
method: GET
params: []
returns: JSON misc object
- id: get_event_counters
label: Get Message Event Counters
kind: query
command: "/statusjsn.js?components=128"
method: GET
params: []
returns: JSON events object
- id: get_port_summary
label: Get Port Summary
kind: query
command: "/statusjsn.js?components=256"
method: GET
params: []
returns: JSON port_summary object
- id: get_hardware_status
label: Get Hardware Status
kind: query
command: "/statusjsn.js?components=512"
method: GET
params: []
returns: JSON hardware object
- id: get_gsm_status
label: Get GSM Status
kind: query
command: "/statusjsn.js?components=1024"
method: GET
params: []
returns: JSON gsm_status object for GSM products
- id: get_gsm_log
label: Get GSM Call Log
kind: query
command: "/statusjsn.js?components=2048"
method: GET
params: []
returns: JSON gsm_log object for GSM products
- id: get_gsm_counters
label: Get GSM Counters
kind: query
command: "/statusjsn.js?components=4096"
method: GET
params: []
returns: JSON gsm_counters object for GSM products
- id: get_sim_status
label: Get SIM Status
kind: query
command: "/statusjsn.js?components=8192"
method: GET
params: []
returns: JSON sim object for GSM products
- id: get_sensor_values
label: Get Sensor Values
kind: query
command: "/statusjsn.js?components=16384"
method: GET
params: []
returns: JSON sensor_values object
note: Field definitions are in separate HTTP JSON Sensor Data documentation
- id: get_sensor_descriptions
label: Get Sensor Descriptions
kind: query
command: "/statusjsn.js?components=65536"
method: GET
params: []
returns: JSON sensor_descr object
note: Field definitions are in separate HTTP JSON Sensor Data documentation
- id: json_config
label: Get JSON Configuration
kind: query
command: "/cfgjsn.js?components={components}"
method: GET
params:
- name: components
type: integer
description: Decimal bitmask selecting configuration components
returns: JSON object containing selected configuration components; available to admin
- id: get_mail_configuration
label: Get Mail Configuration
kind: query
command: "/cfgjsn.js?components=2"
method: GET
params: []
returns: JSON mail object
- id: get_http_configuration
label: Get HTTP Configuration
kind: query
command: "/cfgjsn.js?components=4"
method: GET
params: []
returns: JSON http object
- id: get_message_configuration
label: Get Message Configuration
kind: query
command: "/cfgjsn.js?components=32"
method: GET
params: []
returns: JSON messages object
- id: get_syslog_configuration
label: Get Syslog Configuration
kind: query
command: "/cfgjsn.js?components=64"
method: GET
params: []
returns: JSON syslog object
- id: get_output_configuration
label: Get Output Configuration
kind: query
command: "/cfgjsn.js?components=128"
method: GET
params: []
returns: JSON port_cfg object
- id: get_ipv4_configuration
label: Get IPv4 Configuration
kind: query
command: "/cfgjsn.js?components=256"
method: GET
params: []
returns: JSON ipv4 object
- id: get_ip_acl_configuration
label: Get IP Access Control List Configuration
kind: query
command: "/cfgjsn.js?components=512"
method: GET
params: []
returns: JSON ipacl object
- id: get_beeper_configuration
label: Get Beeper Configuration
kind: query
command: "/cfgjsn.js?components=1024"
method: GET
params: []
returns: JSON beeper object when beeper is integrated
- id: get_snmp_configuration
label: Get SNMP Configuration
kind: query
command: "/cfgjsn.js?components=2048"
method: GET
params: []
returns: JSON snmp object
- id: get_input_configuration
label: Get Input Configuration
kind: query
command: "/cfgjsn.js?components=4096"
method: GET
params: []
returns: JSON input_cfg object
- id: get_gsm_code_configuration
label: Get GSM Code Configuration
kind: query
command: "/cfgjsn.js?components=8192"
method: GET
params: []
returns: JSON gsm_codes object for GSM products
- id: get_gsm_number_configuration
label: Get GSM Number Configuration
kind: query
command: "/cfgjsn.js?components=16384"
method: GET
params: []
returns: JSON gsm_numbers object for GSM products
- id: get_gsm_phonebook_configuration
label: Get GSM Phonebook Configuration
kind: query
command: "/cfgjsn.js?components=32768"
method: GET
params: []
returns: JSON gsm_phonebook object for GSM products
- id: get_gsm_flag_configuration
label: Get GSM Flag Configuration
kind: query
command: "/cfgjsn.js?components=65536"
method: GET
params: []
returns: JSON gsm_flags object for GSM products
- id: get_gsm_provider_configuration
label: Get GSM Provider Configuration
kind: query
command: "/cfgjsn.js?components=131072"
method: GET
params: []
returns: JSON gsm_provider object for GSM products
Feedbacks
- id: output_status
type: object
source: "/statusjsn.js?components=1"
properties:
- name: name
type: string
- name: state
type: integer
values: [0, 1]
description: "0: switched off, 1: switched on"
- name: type
type: integer
values: [0, 1]
description: "0: Powerport, 1: GPIO output"
- name: batch
type: array
description: Total wait, remaining wait, switching sequence, command count, current command, and Batch mode reason
- name: wdog
type: array
- id: input_status
type: object
source: "/statusjsn.js?components=2"
description: Internal input status
- id: dns_cache_status
type: object
source: "/statusjsn.js?components=4"
description: Current DNS cache contents
- id: ethernet_status
type: object
source: "/statusjsn.js?components=8"
description: Ethernet status and counters
- id: misc_status
type: object
source: "/statusjsn.js?components=16"
description: Miscellaneous status including firmware and bootloader versions
- id: event_counters
type: object
source: "/statusjsn.js?components=128"
description: Message-event counters
- id: port_summary
type: object
source: "/statusjsn.js?components=256"
description: Summarized output and input status
- id: hardware_status
type: object
source: "/statusjsn.js?components=512"
description: Summarized general hardware status
- id: gsm_status
type: object
source: "/statusjsn.js?components=1024"
description: GSM product status information
- id: gsm_log
type: object
source: "/statusjsn.js?components=2048"
description: GSM product call log
- id: gsm_counters
type: object
source: "/statusjsn.js?components=4096"
description: Summarized GSM product status
- id: sim_status
type: object
source: "/statusjsn.js?components=8192"
description: SIM card status for GSM products
- id: sensor_values
type: object
source: "/statusjsn.js?components=16384"
description: Current values from available sensors
note: Field definitions unresolved; source refers to separate sensor documentation
- id: sensor_descriptions
type: object
source: "/statusjsn.js?components=65536"
description: Field descriptions for available sensors
note: Field definitions unresolved; source refers to separate sensor documentation
- id: unauthorized_response
type: http_status
value: 401
description: Returned when HTTP password protection is active and credentials are missing or incorrect
Variables
- id: output_configuration
type: object
source: "/cfgjsn.js?components=128"
- id: input_configuration
type: object
source: "/cfgjsn.js?components=4096"
- id: ipv4_configuration
type: object
source: "/cfgjsn.js?components=256"
- id: ip_acl_configuration
type: object
source: "/cfgjsn.js?components=512"
- id: http_configuration
type: object
source: "/cfgjsn.js?components=4"
- id: snmp_configuration
type: object
source: "/cfgjsn.js?components=2048"
- id: syslog_configuration
type: object
source: "/cfgjsn.js?components=64"
- id: mail_configuration
type: object
source: "/cfgjsn.js?components=2"
- id: message_configuration
type: object
source: "/cfgjsn.js?components=32"
- id: beeper_configuration
type: object
source: "/cfgjsn.js?components=1024"
Events
- id: input_condition_change
description: May generate Syslog, E-mail, and SNMP trap messages when input msgt is 1
formats: [] # UNRESOLVED: event payload formats not detailed in source
Macros
- id: output_reset_sequence
description: Switch output off, wait configured reset duration, then switch output on
command: "/?cmd=12&p={p}"
Safety
confirmation_required_for: []
interlocks:
- Firmware, SSL certificate, and configuration uploads require a subsequent device reset using cmd=39
# UNRESOLVED: no explicit safety interlock procedures for power cycling
Notes
Commands use HTTP query parameters. Status JSON is available to user and admin; configuration JSON is available to admin. Basic Authentication is required when HTTP password protection is enabled and can be disabled with cmd=18&pwd=0. Default HTTP port is 80 and can be changed with cmd=18. Raw HTTP requests may be sent as individual TCP packets to the configured HTTP port.
Provenance
source_domains:
- wiki.gude-systems.com
source_urls:
- https://wiki.gude-systems.com/EPC_HTTP_Interface
retrieved_at: 2026-07-13T22:56:49.947Z
last_checked_at: 2026-07-21T22:44:12.033Z
Verification Summary
verdict: verified
checked_at: 2026-07-21T22:44:12.033Z
matched_actions: 49
action_count: 49
confidence: medium
summary: "All 49 spec actions matched literally in source; transport parameters verified; command coverage complete. (4 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "GSM-specific features are not documented; sensor_values and sensor_descr refer to separate documentation"
- "event payload formats not detailed in source"
- "no explicit safety interlock procedures for power cycling"
- "field structures for inputs, dns_cache, ethernet, misc, events, port_summary, hardware, GSM objects, sensor_values, sensor_descr, and configuration objects are not detailed in this source"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0