Skip to main content

Big Dog Power PDU

GEM driver for the Big Dog Power line of intelligent power distribution units from Ethereal / MetraAV. It talks to the unit's own local HTTP API on the LAN — no MAVbase cloud account, no polling of a vendor server. The local API is open by default; when the unit's web interface has HTTP authentication switched on, the driver authenticates with a username and password.

Covered models:

ModelForm factorSwitched outlets
PR-S1PISingle smart outlet (Wi-Fi)1
PR-W3PI3-outlet wall mount (Wi-Fi / wired)3
PR-R13PI12+1 rack mount (Wi-Fi / wired)12 switched, 1 always-on

Feature coverage:

  • Per-outlet on, off, toggle and reboot (firmware power-cycle dwell)
  • Polling of /updateOutlets → zone state, power_w, current_a, voltage_v, uptime_seconds
  • Chassis rollup on the device → total_power_w, outlet_count, chip_id, model_code, uptime_seconds, surge_mov1 / surge_mov2, and temperature_1_ftemperature_4_f on the rack chassis
  • Chassis IO relay output as a first-class zone (output_on / output_off / get_output_state)
  • Contact-input and front-panel button event reads
  • Front-panel LCD text and LED backlight control
  • UPS serial loopback test for commissioning the RS-232 link

Prerequisites

  • The PDU on the LAN. Commission it through the setup flow first: join the unit's own Wi-Fi SSID (Metra-XXXX XXXX XXXX), browse to 192.168.4.1, and point it at the site network. Wi-Fi models are 2.4 GHz only. Rack and wall units can use wired Ethernet instead, which is what you want in a rack.
  • A stable address. Reserve a DHCP lease for the PDU. The driver addresses it by IP.
  • Network placement. The local API is open by default — any host that can reach port 80 on the PDU can switch outlets. The firmware's web interface can turn on HTTP Digest authentication; enabling it and giving GEM the credentials adds a second layer, but it is not a substitute for segmentation. Put the PDU on the management VLAN with the rest of the control gear.
  • Credentials, if auth is on. If you enable HTTP authentication on the unit, set the device Username and Password to a login it accepts. Leave both blank when authentication is off.
warning

Network segmentation is the primary access control for this device whether or not HTTP authentication is enabled. Do not expose the PDU to a guest network, and never port-forward it.

Setup steps

  1. Add the device. Devices → New Device, driver big_dog_power. Set PDU IP Address to the unit's LAN address. Leave HTTP Port at 80 unless you have a reason not to. If HTTP authentication is enabled on the unit, also set Username and Password; leave HTTP Auth Method at Digest.

  2. Confirm it answers. Run the get_outlets command from the Script Console. You should get a system block plus one entry per switched outlet:

    {
    "system": {"chipID": "REDACTED", "model": 3, "upTime": 0, "mov1": 1, "mov2": 2},
    "outlets": [
    {"num": 1, "isOn": true, "a": 0, "v": 115.99, "w": 0, "upTime": 14932},
    {"num": 2, "isOn": true, "a": 0.14, "v": 115.99, "w": 12.3, "upTime": 14946},
    {"num": 3, "isOn": true, "a": 0, "v": 115.99, "w": 0, "upTime": 1846}
    ]
    }

    If this times out, the controller cannot reach the PDU — check the browser at http://<ip>/updateOutlets from the same network segment.

  3. Create one zone per outlet. In the power subsystem, create a zone per outlet with this device selected and Address set to the outlet number (1, 2, 3, …). Name them after the load, not the outlet — "Rack Switch" reads better than "Outlet 4" everywhere in the UI.

  4. Optionally add the relay. If the chassis IO relay drives something (a contactor, a projector lift interlock), create one more zone with Address set to the literal string output. on and off on that zone drive the relay instead of an outlet.

  5. Check the meter. Turn a known load on and confirm watts move within about a minute. The meter is slow by design.

Attribute reference

Device attributes

AttributeRequiredTypePurpose
ipyesstringLAN IP or hostname of the PDU.
portnointHTTP port. Default 80; the firmware does not expose a way to change it.
status_intervalnointPoll period in ms. Default 15000, floor 5000.
request_timeoutnointHTTP timeout in ms. Default 8000.
usernamenostringWeb API login. Set only when HTTP authentication is enabled on the unit.
passwordnostringWeb API password, stored encrypted. Set only when HTTP authentication is enabled on the unit.
auth_methodnostringdigest (default) or basic. Used only when a username/password is set. The firmware uses Digest.

Attributes the driver writes

Device (chassis):

AttributeUnitMeaning
total_power_wWSum of watts across every switched outlet.
outlet_countNumber of switched outlets the unit reports.
chip_idESP32 chip id, effectively the unit serial.
model_codeModel number from the system block.
uptime_secondssChassis uptime.
surge_mov1, surge_mov2Surge module status values. Watch for changes — a shift here means a replaceable MOV module has taken a hit.
temperature_1_ftemperature_4_f°FRack temperature probes. 13-outlet chassis only, and reported in Fahrenheit by the firmware.
firmware_esp, firmware_mcuFirmware versions, read once at connect and on get_firmware.
output_stateIO relay state, maintained when an output zone exists.

Zone (one per outlet):

AttributeUnitMeaning
stateon or off.
power_wWLive real power for the outlet.
current_aALive current.
voltage_vVLine voltage as measured by the unit.
uptime_secondssHow long this outlet has been energized.

Readings are rounded before storage (1 W, 0.1 A, 0.1 V) so meter jitter does not churn attribute history.

Zone address format

1 # outlet 1
12 # outlet 12 (PR-R13PI)
output # the chassis IO relay contact, not an AC outlet

Outlet numbers come from get_outlets — match on the num field rather than counting rear-panel positions. The always-on outlet of the PR-R13PI is not switchable and never appears in the list, so a 12+1 chassis reports 12 addressable outlets.

Command notes

  • reboot uses the firmware's own off/on dwell. That dwell is fixed and cannot be set through the API. If you need a specific delay, use off, a macro delay step, then on.
  • set_backlight takes item = LCD, Up, Down, Right, Left or Enter, and state = 1/0. The underlying vendor endpoint is spelled setBackight; the driver sends that spelling on purpose.
  • write_lcd writes to both LCD lines, and the display reverts to its normal content shortly after on its own. It is a notification, not a persistent display.
  • ups_test sends text out the RS-232 line and reports Pass: <text> if the same text comes back — a loopback check for the UPS serial cable, not a battery test.
  • get_input_trigger and get_button_event return 0 none, 1 pressed, 2 released, 3 long press.

Which outlets a user may switch

Every addressed command from a UI, the REST API, or voice is confined to outlets that have a zone on this device. The rule is enforced centrally at the command dispatch layer rather than by a per-command list in this driver, so a verb added later is confined automatically. An address with no matching zone returns not authorized: address is not mapped to a zone on this device. The output chassis relay is covered by the same rule — it is the most destructive target on the unit, not an exception.

The outlet count comes from the PDU's own /updateOutlets reply, not from GEM's zone table, so without this an outlet an integrator deliberately left unmapped — one feeding the alarm panel, the network switch, the NVR, or the GEM controller — was reachable by anyone with an account.

Administrators are unaffected, and so are macros, triggers, schedules and other drivers.

Known limitations

  • Authentication is optional and off by default. The firmware supports HTTP Digest authentication (realm asyncesp), toggled in its web interface; the driver uses it when credentials are set. With auth off there is no protocol-level control, so network placement carries the load either way.
  • Factory reset is deliberately not exposed. The firmware has a reset endpoint. It is not wired up as a GEM command, because a reset reachable from a macro or a mistyped console line would drop the unit off the network and require a physical re-commission.
  • Metering is slow. Vendor documentation states meter data can take up to 60 seconds to appear. Do not build fast interlocks on watt thresholds from this device.
  • No push. The firmware offers no event channel, so state changes made at the front panel or in the MAVbase app appear on the next poll.
  • The always-on outlet is invisible. It cannot be switched or metered through the API.
  • Scheduling and self-healing stay on the device. The unit's own auto-reboot and schedule rules are configured in MAVbase and are neither read nor written here. If you want GEM to own that behaviour, disable it on the unit and build a macro instead, so two schedulers aren't fighting over the same outlet.
  • Model coverage is inferred from one API revision. The published API describes outlets 1–3 and notes the 13-outlet chassis adds t1t4. The driver derives the outlet count from the device's own response rather than the model, so a larger chassis should enumerate correctly, but that has not been confirmed against a 12-outlet unit.

Troubleshooting

SymptomCheck
get_outlets times outBrowse to http://<ip>/updateOutlets from the same segment. If the browser works and GEM does not, it is VLAN/firewall between controller and PDU.
Every call fails with http 401The unit has HTTP authentication enabled. Set Username and Password to a login it accepts, and leave HTTP Auth Method at Digest unless the firmware was reconfigured for Basic.
unexpected /updateOutlets responseThe address is answering HTTP but is not a Big Dog PDU (often a router admin page on a recycled IP). Confirm the IP.
Outlet switches but the zone state lagsState refreshes on the next poll. Lower status_interval or run get_outlets.
Watts read 0 with a load connectedWait 60 s for the meter to settle. A persistent 0 W on a live outlet usually means the load is in standby.
outlet N out of rangeThe unit reported fewer outlets than the address you used. Run get_outlets and use the num values it returns.
not authorized: address is not mapped to a zone on this deviceThe outlet has no zone on this device. Create one, or run the command as an administrator. See Which outlets a user may switch.
Device flaps connected/disconnectedWi-Fi models on a marginal 2.4 GHz signal drop HTTP requests. Move to wired Ethernet on the rack and wall units, or improve AP coverage.
Rack temperatures missingOnly the 13-outlet chassis reports t1t4. Single and 3-outlet units have no probes.