Summary

Panamax MB1500-UPS is a 1500VA rack-mount UPS with two independently controllable outlet banks (Critical Load / Non-Critical Load) and RS-232 serial control at 2400 baud. The protocol is ASCII-based using plain-text commands terminated with <CR>. All commands are documented in the source.

Transport

protocols:
  - serial
serial:
  baud_rate: 2400
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable       # MAIN_ON / MAIN_OFF commands present
- routable        # NCL_ON / NCL_OFF independently control outlet bank 1
- queryable       # ?OUTLETSTAT, ?INPUTVOLTS, ?OUTPUTSTAT, ?LOADSTAT, ?BATTERYSTAT, ?ID commands present

Actions

- id: main_on
  label: Main Power On
  kind: action
  command: "MAIN_ON<CR>"
  params: []
  description: Closes AC input relay / turns on inverter; energizes CL outlets. NCL outlets will also close if MAIN relay was already on.
  input_example: "MAIN_ON<CR>"
  output_example: "CL_OUTLETS_ON<CR>" or "LOWBATT<CR>" if low battery prevented switch

- id: main_off
  label: Main Power Off
  kind: action
  command: "MAIN_OFF<CR>"
  params: []
  description: Disconnects AC input relay and turns off inverter; de-energizes all outlets.
  input_example: "MAIN_OFF<CR>"
  output_example: "NCL_OUTLETS_OFF<CR>" then "CL_OUTLETS_OFF<CR>"

- id: ncl_on
  label: Non-Critical Load Outlets On
  kind: action
  command: "NCL_ON<CR>"
  params: []
  description: Closes NCL relay. Only energizes if MAIN relay is already ON.
  input_example: "NCL_ON<CR>"
  output_example: "NCL_OUTLETS_ON<CR>" if MAIN on, else "NCL_OUTLETS_OFF<CR>"

- id: ncl_off
  label: Non-Critical Load Outlets Off
  kind: action
  command: "NCL_OFF<CR>"
  params: []
  description: Opens NCL relay; NCL outlets de-energized.
  input_example: "NCL_OFF<CR>"
  output_example: "NCL_OUTLETS_OFF<CR>"

- id: beep_on
  label: Enable Audible Alarm
  kind: action
  command: "BEEPON<CR>"
  params: []
  description: Enables beeper when running on battery.
  input_example: "BEEPON<CR>"
  output_example: "BEEPISON<CR>"
  default: alarm is OFF

- id: beep_off
  label: Disable Warning Beeper
  kind: action
  command: "BEEPOFF<CR>"
  params: []
  description: Disables beeper when running on battery.
  input_example: "BEEPOFF<CR>"
  output_example: "BEEPISOFF<CR>"

- id: set_battery_threshold
  label: Set Low Battery NCL Shutoff Threshold
  kind: action
  command: "BATTHRESH<SP>{threshold}<CR>"
  params:
    - name: threshold
      type: integer
      description: Battery charge percentage (25-60) below which NCL outlets are de-energized. Sent as two ASCII digits.
      range: [25, 60]
  input_example: "BATTHRESH 40<CR>"
  output_example: "BTHRESH 40<CR>" if valid, "INVALIDCMD<CR>" if out of range

- id: restore_defaults
  label: Restore Default Settings
  kind: action
  command: "RESTORE<CR>"
  params: []
  description: Resets battery threshold to 66%, beeper disabled, high voltage threshold to 147V, low voltage threshold to 88V, battery mode voltage to 120V.
  input_example: "RESTORE<CR>"
  output_example: "DEFAULTSRESTORED<CR>"

- id: query_outlet_status
  label: Request Outlet Status
  kind: query
  command: "?OUTLETSTAT<CR>"
  params: []
  description: Reports current state of CL and NCL outlet banks.
  output_example: "CL_OUTLETS_ON<CR>" / "NCL_OUTLETS_OFF<CR>" (one per bank)

- id: query_input_voltage
  label: Request Input Voltage Level
  kind: query
  command: "?INPUTVOLTS<CR>"
  params: []
  description: Reports UPS input AC voltage.
  output_example: "120 VAC IN<CR>"

- id: query_output_status
  label: Request Output Voltage Status
  kind: query
  command: "?OUTPUTSTAT<CR>"
  params: []
  description: Reports UPS output AC voltage and current power mode.
  output_example: "120 VAC OUT<CR>" or mode token (NORMAL/AVRBOOST1/AVRBOOST2/AVRBUCK1/BATTERY)

- id: query_load_status
  label: Request Load Level Status
  kind: query
  command: "?LOADSTAT<CR>"
  params: []
  description: Reports load percentage on UPS.
  output_example: "42 %LOAD<CR>"

- id: query_battery_status
  label: Request Battery Charge Level Status
  kind: query
  command: "?BATTERYSTAT<CR>"
  params: []
  description: Reports battery charge percentage.
  output_example: "95 %BATTERY<CR>"

- id: query_id
  label: Identify Equipment
  kind: query
  command: "?ID<CR>"
  params: []
  description: Returns manufacturer, model, firmware part number, and revision across four CR-terminated lines.
  output_example: "PANAMAX<CR>" "M1500-UPS<CR>" "FW {partnumber}<CR>" "REV {revision}<CR>"

- id: help
  label: List All Commands and Queries
  kind: query
  command: "HELP<CR>"
  params: []
  description: Returns the full list of supported commands and queries, each CR-terminated.
  output_example: "MAIN_ON<CR>" "MAIN_OFF<CR>" "NCL_ON<CR>" "NCL_OFF<CR>" "BATTHRESH<CR>" "BEEPON<CR>" "BEEPOFF<CR>" "RESTORE<CR>" "?OUTLETSTAT<CR>" "?INPUTVOLTS<CR>" "?OUTPUTSTAT<CR>" "?LOADSTAT<CR>" "?BATTERYSTAT<CR>" "?ID<CR>" "HELP<CR>"

Feedbacks

# Acknowledgement and status strings returned by the device over serial.

- id: cl_outlets_on
  label: Critical Load Outlets On
  type: string
  values: ["CL_OUTLETS_ON"]
  description: Sent when CL outlet bank energizes.

- id: cl_outlets_off
  label: Critical Load Outlets Off
  type: string
  values: ["CL_OUTLETS_OFF"]
  description: Sent when CL outlet bank de-energizes.

- id: ncl_outlets_on
  label: Non-Critical Load Outlets On
  type: string
  values: ["NCL_OUTLETS_ON"]
  description: Sent when NCL outlet bank energizes.

- id: ncl_outlets_off
  label: Non-Critical Load Outlets Off
  type: string
  values: ["NCL_OUTLETS_OFF"]
  description: Sent when NCL outlet bank de-energizes.

- id: beepison
  label: Audible Alarm Enabled
  type: string
  values: ["BEEPISON"]
  description: Response to BEEPON command.

- id: beepisoff
  label: Audible Alarm Disabled
  type: string
  values: ["BEEPISOFF"]
  description: Response to BEEPOFF command.

- id: bthresh
  label: Battery Threshold Set
  type: string
  pattern: "BTHRESH<SP>{threshold}"
  description: Confirmation response to valid BATTHRESH command.

- id: defaultsrestored
  label: Defaults Restored
  type: string
  values: ["DEFAULTSRESTORED"]
  description: Response to RESTORE command.

- id: invalidcmd
  label: Invalid Command
  type: string
  values: ["INVALIDCMD"]
  description: Returned when command is not recognized or parameter out of range.

- id: lowbatt
  label: Low Battery Warning
  type: string
  values: ["LOWBATT"]
  description: Sent when battery charge falls below configured threshold.

- id: overvoltage
  label: Overvoltage Condition
  type: string
  values: ["OVERVOLTAGE"]
  description: Sent when input voltage exceeds high voltage failure threshold.

- id: undervoltage
  label: Undervoltage Condition
  type: string
  values: ["UNDERVOLTAGE"]
  description: Sent when input voltage falls below low voltage failure threshold.

- id: power_mode_normal
  label: Normal Power Mode
  type: string
  values: ["NORMAL"]
  description: UPS not in AVR or battery mode.

- id: power_mode_avrboost1
  label: AVR Boost 13%
  type: string
  values: ["AVRBOOST1"]
  description: UPS in AVR mode, boosting voltage by 13%.

- id: power_mode_avrboost2
  label: AVR Boost 26%
  type: string
  values: ["AVRBOOST2"]
  description: UPS in AVR mode, boosting voltage by 26%.

- id: power_mode_avrbuck1
  label: AVR Buck
  type: string
  values: ["AVRBUCK1"]
  description: UPS in AVR mode, bucking (lowering) voltage. Async section of source specifies bucking 15%.

- id: power_mode_battery
  label: Battery Mode
  type: string
  values: ["BATTERY"]
  description: UPS is running on battery.

- id: input_voltage
  label: Input Voltage Reading
  type: string
  pattern: "{volts}<SP>VAC<SP>IN"
  description: Response to ?INPUTVOLTS. {volts} is the input AC voltage in ASCII.

- id: output_voltage
  label: Output Voltage Reading
  type: string
  pattern: "{volts}<SP>VAC<SP>OUT"
  description: Response to ?OUTPUTSTAT when output present. {volts} is the output AC voltage in ASCII. Mode tokens (NORMAL/AVRBOOST1/AVRBOOST2/AVRBUCK1/BATTERY) returned without voltage value per source.

- id: load_level
  label: Load Level Reading
  type: string
  pattern: "{percent}<SP>%LOAD"
  description: Response to ?LOADSTAT. {percent} is load percentage in ASCII.

- id: battery_level
  label: Battery Charge Reading
  type: string
  pattern: "{percent}<SP>%BATTERY"
  description: Response to ?BATTERYSTAT. {percent} is battery charge percentage in ASCII.

- id: id_response
  label: Equipment Identification
  type: string
  pattern: "PANAMAX<CR>M1500-UPS<CR>FW<SP>{partnumber}<CR>REV<SP>{revision}<CR>"
  description: Four-line response to ?ID. Firmware part number and revision values are device-specific.

Variables

# Configurable parameters:

- id: battery_threshold
  label: Low Battery NCL Shutoff Threshold
  type: integer
  range: [25, 60]
  default: 66
  unit: "%"
  description: Battery charge level below which NCL outlets are automatically de-energized. Configured via BATTHRESH command (settable range 25-60). Default after RESTORE is 66%, which is outside the settable range - source documents this discrepancy without explanation.

- id: audible_alarm
  label: Audible Alarm
  type: boolean
  default: false
  description: Whether the beeper sounds when running on battery. Enabled via BEEPON, disabled via BEEPOFF.

- id: high_voltage_threshold
  label: High Voltage Failure Threshold
  type: integer
  default: 147
  unit: "V"
  description: Input voltage above which OVERVOLTAGE is triggered. Reset to 147V by RESTORE command.
  # UNRESOLVED: settable range and set command not documented in source; only default value via RESTORE

- id: low_voltage_threshold
  label: Low Voltage Failure Threshold
  type: integer
  default: 88
  unit: "V"
  description: Input voltage below which UNDERVOLTAGE is triggered. Reset to 88V by RESTORE command.
  # UNRESOLVED: settable range and set command not documented in source; only default value via RESTORE

- id: battery_mode_voltage
  label: Battery Mode Voltage
  type: integer
  default: 120
  unit: "V"
  description: Output voltage target when UPS is in battery mode. Reset to 120V by RESTORE command.
  # UNRESOLVED: settable range and set command not documented in source; only default value via RESTORE

Events

# Unsolicited status messages sent by the UPS when conditions change:

- id: outlet_status_change
  label: Outlet Bank Status Change
  description: UPS sends CL_OUTLETS_ON/OFF or NCL_OUTLETS_ON/OFF when an outlet bank switches state.
  triggers:
    - condition: CL outlet bank turns on
      value: "CL_OUTLETS_ON"
    - condition: CL outlet bank turns off
      value: "CL_OUTLETS_OFF"
    - condition: NCL outlet bank turns on
      value: "NCL_OUTLETS_ON"
    - condition: NCL outlet bank turns off
      value: "NCL_OUTLETS_OFF"

- id: power_status_change
  label: Power Status Change
  description: UPS sends power mode change messages asynchronously.
  triggers:
    - condition: UPS enters normal mode
      value: "NORMAL"
    - condition: UPS enters AVR boost 13%
      value: "AVRBOOST1"
    - condition: UPS enters AVR boost 26%
      value: "AVRBOOST2"
    - condition: UPS enters AVR buck
      value: "AVRBUCK1"
    - condition: UPS switches to battery
      value: "BATTERY"
    - condition: Battery below threshold
      value: "LOWBATT"
    - condition: Input overvoltage
      value: "OVERVOLTAGE"
    - condition: Input undervoltage
      value: "UNDERVOLTAGE"

Macros

# No explicit multi-step macros documented in source.

Safety

confirmation_required_for:
  - main_off  # De-energizes all outlets; critical load equipment will lose power
interlocks:
  - NCL outlets cannot be energized unless CL outlets are already on. The NCL relay will not activate if MAIN relay is off, and NCL outlets will automatically de-energize if battery charge falls below the configured threshold (BATTHRESH, default 66%).
  # UNRESOLVED: explicit fault/error recovery sequences not stated in source

Notes

The MB1500-UPS serial protocol is open and fully documented in ASCII. Commands are case-sensitive and terminated with <CR> (0x0D). All responses are also <CR>-terminated. Query commands are prefixed with ?. HELP command lists all available commands. The device identifies as PANAMAX, M1500-UPS with firmware part number and revision via ?ID. <SP> denotes ASCII space (0x20) in the documented payloads.

Upgrade done. Adds vs on-disk:

  • +7 actions: query_outlet_status, query_input_voltage, query_output_status, query_load_status, query_battery_status, query_id, help
  • +5 feedbacks: input_voltage, output_voltage, load_level, battery_level, id_response
  • +1 variable: battery_mode_voltage
  • command: field added to all actions (policy-mandated, payload verbatim)
  • Preserved all existing IDs, shapes, descriptions
  • Flagged source discrepancy: AVRBUCK1 buck % differs between sections

Provenance

source_domains:
  - panamax.com
  - s3-us-west-1.amazonaws.com
  - manualshelf.com
source_urls:
  - https://panamax.com/wp-content/uploads/m1500-manual.pdf
  - https://s3-us-west-1.amazonaws.com/corebrands-resources/products/MB1500/pdf_MB1500_manual.pdf
  - https://www.manualshelf.com/manual/panamax/mb-1500-ups/owner-s-manual-english-french.html
retrieved_at: 2026-05-22T08:33:41.342Z
last_checked_at: 2026-07-22T00:39:31.724Z

Verification Summary

verdict: verified
checked_at: 2026-07-22T00:39:31.724Z
matched_actions: 15
action_count: 15
confidence: medium
summary: "All 15 spec commands matched exactly in source with correct transport parameters; full coverage. (8 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "IP/network control option not confirmed in source; MB1500 may support an optional IP card but no protocol documented"
- "settable range and set command not documented in source; only default value via RESTORE"
- "explicit fault/error recovery sequences not stated in source"
- "optional IP/network control card (BlueBOLT) protocol not documented in this source"
- "firmware version range compatibility not stated"
- "fault behavior and error recovery sequences not stated"
- "high/low voltage thresholds and battery_mode_voltage set commands not documented — only RESTORE defaults known"
- "AVRBUCK1 bucking percentage — ?OUTPUTSTAT section omits percentage, async section states 15%"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0