Panamax / Furman Power Conditioner (Telnet)
This driver controls Panamax and Furman network-controlled power conditioners over their local telnet command line on the customer LAN. It turns each switched outlet into a controllable zone — on, off, and reboot (power-cycle) — talking straight to the unit over a persistent TCP connection with no cloud round-trip.
Telnet is the right transport for older Panamax/Furman units (and some Bluebolt-era models) that expose a plain ASCII command console on TCP port 23 but do not serve the HTTP/XML or local UDP APIs. It needs no username or password — the telnet console is unauthenticated — so setup is just the unit's IP plus one zone per outlet you want to switch.
GEM ships three Panamax/Furman drivers for the different control interfaces these units expose. Use Panamax / Furman (Telnet) — this driver — for units that present a telnet command line on port 23. The Panamax / Furman (HTTP) driver covers BlueBOLT-CV2 units that serve the XML control API over HTTP, and Panamax / Furman (UDP) covers units that speak the local UDP XML protocol. If your unit has a BlueBOLT-CV2 ethernet card, prefer HTTP; use telnet for the older command-line units.
Prerequisites
- A Panamax or Furman power conditioner that exposes a telnet console on the same LAN as the GEM controller, reachable on TCP port 23.
- Telnet enabled on the unit's network page. Some firmware ships with telnet off by default — turn it on before adding the device.
- A static IP (or DHCP reservation) for the conditioner, so the address GEM connects to does not move.
- The outlet numbers you intend to control. Outlets are 1-based and match the physical labeling on the back of the unit.
Setup
- Assign a static IP to the conditioner (or reserve its DHCP lease) and confirm you can reach it — e.g.
telnet <ip> 23from a workstation should open the unit's console. - Create the device under System → Devices (Open Devices) with driver
panamax_telnet. Set:- IP Address (
ip) — the unit's address, e.g.192.168.1.90. - (optional) TCP Port (
port) — defaults to 23; only change it if the unit serves telnet on a non-standard port.
- IP Address (
- Save and enable the device. GEM opens the telnet connection and keeps it alive, reconnecting automatically if the link drops.
- Create one zone per outlet you want to control, under System → Zones (Open Zones):
- Put each zone in the Power subsystem (or wherever you keep switched-power zones).
- Set the zone's Address to the outlet number (1-based) — outlet 2 is address
2. - Point the zone at this device so its controls dispatch here.
- Verify by toggling a zone on and off — the corresponding outlet should switch. If the unit reports outlet changes back to GEM, the zone's on/off state tracks the physical outlet (see How outlet state is reported below).
The Devices form shows a short inline quick-start for the driver and a View integration guide toggle that opens this page. If the toggle is missing, the driver selected on the device is not panamax_telnet.
Unlike the Panamax HTTP and WattBox drivers, the telnet driver does not discover outlets or create zones for you — it has no way to enumerate the unit over the telnet console. You create one zone per outlet by hand and set each zone's address to the outlet number. A command sent to a zone with no address returns missing outlet address.
Commands
The driver declares the following commands, which are synced to this device's command rows on every boot. The standard on/off verbs map to these, so an on/off control on an outlet zone works with no extra configuration — GEM resolves on→power_on and off→power_off, and fills in the outlet number from the zone's address automatically. The named commands are there for macros and triggers.
| Command | Aliases | Effect |
|---|---|---|
power_on | on | Turn the outlet on. address = outlet number. Sends !SWITCH <n> ON. |
power_off | off | Turn the outlet off. address = outlet number. Sends !SWITCH <n> OFF. |
reboot | — | Power-cycle the outlet: off → wait → on. address = outlet number; optional delay (ms). |
passthrough | pass_through | Send a raw command line to the unit followed by CRLF. command = the literal text to send (e.g. ?POWERSTAT). No outlet address needed. |
When you drive an outlet zone from a UI, the outlet number comes from the zone's Address, so you do not type it. When you invoke a command directly in a macro or trigger, pass address = the outlet number yourself.
reboot is performed by the driver as off, wait, then on — the unit has no atomic device-side power-cycle over telnet. The wait defaults to 5000 ms (5 s). If a load needs longer to power down cleanly before it comes back, pass a longer delay:
await gem.command({device_id: <id>, command: 'reboot', args: {address: '4', delay: 12000}});
Passthrough — for diagnostics and one-off settings
passthrough sends whatever text you give it, verbatim, followed by a carriage return + line feed. Use it for console queries and settings the driver does not wrap — for example a firmware/version query, a status query (?POWERSTAT), or enabling unsolicited status pushes on a unit that needs it:
await gem.command({device_id: <id>, command: 'passthrough', args: {command: '!STATUSPUSH ON'}});
The reply appears in the device logs; passthrough does not parse or store anything itself.
How outlet state is reported
The unit pushes an outlet-status message ($OUTLETn=ON / $OUTLETn=OFF) whenever an outlet changes, and GEM writes that on/off state onto the matching outlet zone. Unlike the HTTP driver, the telnet driver does not actively poll for status — it relies on these unsolicited pushes. Consequences to plan for on a job:
- If an outlet is switched at the front panel or by another controller, the zone tracks it only if the unit emits the push. Some firmware needs status push turned on once — issue
!STATUSPUSH ONviapassthrough(see above) and confirm state then follows. - For a zone's state to update, a zone with the matching address must already exist — the driver ignores a push for an outlet number that has no zone.
Attributes
You enter only the connection attributes; there is nothing else to fill in.
Device attributes
| Attribute | Type | Notes |
|---|---|---|
ip | string | Required. Conditioner IP, e.g. 192.168.1.90. |
port | int | TCP port for the telnet console. Default 23. |
status_interval | int (ms) | Present on the form for consistency with the other Panamax transports, but this telnet driver reflects outlet state from the unit's pushed status messages rather than active polling, so this value has no practical effect here. |
Zone attributes
| Attribute | Type | Notes |
|---|---|---|
address | string | Required. 1-based outlet number. You set this when you create the zone. |
state | string | on / off, updated from the unit's pushed $OUTLETn= messages. |
Automation ideas
- Scheduled reboot of a stuck device. A macro schedule firing
rebooton the outlet feeding a flaky modem, AP, or media player overnight clears a lockup before anyone notices. - Recovery trigger. Pair a device-offline condition with a
rebootof that device's outlet to auto-power-cycle gear that has hung — add a guard so it does not loop. - Scene power-down. A "goodnight" or "away" macro that turns off the outlets feeding always-on-but-non-essential gear (a game console, a display) trims standby draw.
Troubleshooting
| Symptom | What to check |
|---|---|
| Connection drops randomly | Many older Panamax units allow only one telnet client at a time. If the Bluebolt cloud agent (or another controller) is configured, it will steal the socket. Disable Bluebolt cloud login on the unit if you are not using it. |
missing outlet address returned | The zone has no Address. Set it to the outlet number (1-based), or pass address in the command when calling it directly. |
| Outlet switches, but the zone's on/off state does not follow | The unit is not pushing $OUTLETn=… status. Enable it with passthrough !STATUSPUSH ON, and confirm a zone with that outlet's address exists so the push has somewhere to land. |
| Nothing happens on power_on/power_off | Confirm telnet is enabled on the unit's network page and that port 23 (or your configured port) is reachable — telnet <ip> 23 from a workstation should open the console. |
| Need to check a value the driver does not expose | Use passthrough to send a raw console query (e.g. ?POWERSTAT) and read the reply in the device logs. |
Related
- Devices — adding and configuring the Panamax device.
- Zones — creating the outlet zones and setting their addresses.
- Subsystems — the Power subsystem the outlet zones typically live in.
- Commands — how the on/off/reboot verbs are dispatched.
- Triggers and Macros — building the automation ideas above.
- Panamax / Furman (HTTP) — the HTTP/XML transport for BlueBOLT-CV2 units.
- WattBox PDU, CyberPower UPS, APC UPS — the other switched-power drivers.
There is also a Panamax / Furman (UDP) driver (panamax_udp) for units that speak the local UDP XML protocol. Choose the transport that matches how your unit exposes control.