{
 "manufacturer": "Thermal Solutions",
 "manufacturer_slug": "thermal-solutions",
 "model": "ALTA / Phantom II boiler control (Universal Gateway ProtoAir)",
 "model_slug": "alta-phantom-ii-universal-gateway-protoair",
 "aliases": [
  "ALTA",
  "ALTAC",
  "U.S. Boiler ALTA",
  "Phantom II",
  "Phantom Combi II",
  "Velocity Boiler Works Phantom II",
  "ProtoAir FPA-W44",
  "Universal Gateway 106417-04"
 ],
 "equipment_type": "Boiler control (ALTA / Phantom II) via ProtoAir gateway",
 "applies_to": "U.S. Boiler ALTA and ALTAC and Velocity Boiler Works Phantom II and Phantom Combi II boilers, connected to the Universal Gateway (ProtoAir FPA-W44) on the control's Modbus 2 port.",
 "summary": "The ALTA / Phantom II control talks Modbus RTU on its EMS port; the ProtoAir Universal Gateway serves it on BACnet IP or BACnet MS/TP. The BMS can enable central heat, write a central heat or sequencer master setpoint, a firing rate and an outdoor temperature, and read demand source, temperatures, setpoint sources, burner state, lockout and hold codes, fan speed, flame signal, run counters and pump status.",
 "bacnet_transport": [
  "BACnet IP",
  "BACnet MS/TP"
 ],
 "firmware": null,
 "default_device_instance": null,
 "access_inferred": false,
 "notes": [
  "Supply, return, DHW, stack, header, outdoor and recirculation temperatures are AI objects with a printed range of -40 to 320 °F.",
  "Lockout and hold codes are decoded with the manual's Table 12-14.",
  "The table prints instances with leading zeros (e.g. 001); they are stored here as plain numbers."
 ],
 "source": {
  "title": "Universal Gateway Instruction Manual (ProtoAir): BACnet MS/TP, BACnet IP, N2, Modbus",
  "doc_number": "PN 106417-04 Rev A",
  "revision_date": "2024-05",
  "url": "https://s3-us-west-2.amazonaws.com/catsy.782/Universal+Gateway+ProtoAir+BACnet+Instruction+Manual.pdf"
 },
 "integration": {
  "summary": "Wire the ProtoAir to the control's Modbus 2 port, add the ALTA profile in the Web Configurator with a unique Node-ID and discover it at 50000 + Node-ID. Enable central heat with BV 1 and write the CH Modbus setpoint (or a firing rate with CH Modbus Rate); read demand source, supply temperature, burner state and the lockout/hold codes.",
  "minimum_points": [
   {
    "ref": "BV 1",
    "name": "Central Heat Enable/Disable",
    "why": "Central heat enable (1 = enable)"
   },
   {
    "ref": "AV 13",
    "name": "CH Modbus Setpoint",
    "why": "CH or sequencer master setpoint, 60-190 °F"
   },
   {
    "ref": "AV 22",
    "name": "CH Modbus Rate",
    "why": "Firing rate command for this boiler"
   },
   {
    "ref": "MI 2",
    "name": "Demand Source",
    "why": "Current demand the boiler is answering"
   },
   {
    "ref": "MI 26",
    "name": "Burner Control State",
    "why": "Burner sequence state"
   },
   {
    "ref": "AI 6",
    "name": "Supply Temperature",
    "why": "Supply water temperature"
   },
   {
    "ref": "AI 14",
    "name": "Active Setpoint",
    "why": "Setpoint in use"
   },
   {
    "ref": "MI 20",
    "name": "Lockout Code",
    "why": "Lockout code"
   },
   {
    "ref": "MI 21",
    "name": "Hold Code",
    "why": "Hold code"
   }
  ],
  "enable": "BV 1 Central Heat Enable/Disable enables central heat 1 demand for a single boiler or the sequencer master; it does not revert to 0 if the BMS stops writing.",
  "heartbeat": "With the control's EMS Time Out Enable setting on, the setpoint and rate fall back to local mode if the BMS does not write them every 30 seconds; with it off (default) one valid write after power-up is enough.",
  "remote_sensors": "The BMS can send the outdoor temperature to AV 12 Modbus Remote Outdoor Temperature.",
  "setup": [
   "Device instance = Node_Offset (default 50,000) + the controller's Node-ID (1-255), so Node-ID 1 gives 50001.",
   "ProtoAir default IP address is 192.168.1.24, mask 255.255.255.0.",
   "Add each controller as a profile in the ProtoAir Web Configurator and give it a unique Node-ID.",
   "The control's EMS port (Modbus 2) shares the RJ45 used for boiler-to-boiler communication; cut a patch cable to reach the conductors (568A/568B colour check in the manual)."
  ],
  "gotchas": [
   "If EMS Time Out Enable is on, keep rewriting the setpoint/rate at least every 30 s.",
   "CH Modbus Setpoint drives either the single-boiler CH1 setpoint or the sequencer master setpoint."
  ]
 },
 "points": [
  {
   "type": "BV",
   "instance": 1,
   "name": "Central Heat Enable/Disable",
   "description": "Enable central heat (also as sequencer master)",
   "units": "",
   "access": "W",
   "states": "0=Disable, 1=Enable"
  },
  {
   "type": "MI",
   "instance": 2,
   "name": "Demand Source",
   "description": "What the boiler is answering",
   "units": "",
   "access": "R",
   "states": "1=Unknown, 2=Standby, 3=Central Heat 1, 4=Central Heat 2, 5=Domestic Hot Water, 6=Sequencer Control, 7=CH Frost Protection, 10=Warm Weather Shutdown"
  },
  {
   "type": "BI",
   "instance": 3,
   "name": "CH1 Heat Demand",
   "description": "CH1 Heat Demand",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 4,
   "name": "CH2 Heat Demand",
   "description": "CH2 Heat Demand",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 5,
   "name": "DHW Heat Demand",
   "description": "DHW Heat Demand",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "AI",
   "instance": 6,
   "name": "Supply Temperature",
   "description": "Supply Temperature",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 7,
   "name": "Return Temperature",
   "description": "Return Temperature",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 8,
   "name": "DHW Temperature",
   "description": "DHW Temperature",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 9,
   "name": "Stack Temperature",
   "description": "Stack Temperature",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 10,
   "name": "Header Temperature",
   "description": "Header Temperature",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 11,
   "name": "Outdoor Temperature",
   "description": "Outdoor Temperature",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 12,
   "name": "Modbus Remote Outdoor Temperature",
   "description": "Outdoor temperature written by the BMS",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 13,
   "name": "CH Modbus Setpoint",
   "description": "Central heat / sequencer master setpoint, 60-190 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 14,
   "name": "Active Setpoint",
   "description": "Active Setpoint",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 15,
   "name": "Active Sequencer Master Setpoint",
   "description": "Active Sequencer Master Setpoint",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "MI",
   "instance": 16,
   "name": "CH1 Setpoint Source",
   "description": "CH1 Setpoint Source",
   "units": "",
   "access": "R",
   "states": "1=Unknown, 2=Normal setpoint, 3=Rate Based Reset setpoint, 4=Outdoor reset Setpoint, 5=Remote control (4-20/0-10 or Modbus), 6=Outdoor boost"
  },
  {
   "type": "MI",
   "instance": 17,
   "name": "CH2 Setpoint Source",
   "description": "CH2 Setpoint Source",
   "units": "",
   "access": "R",
   "states": "1=Unknown, 2=Normal setpoint, 3=Rate Based Reset Setpoint, 4=Outdoor Air Reset Setpoint, 5=Remote control (4-20/0-10 or Modbus), 6=Outdoor Boost"
  },
  {
   "type": "MI",
   "instance": 18,
   "name": "Sequencer Master Setpoint Source",
   "description": "Sequencer Master Setpoint Source",
   "units": "",
   "access": "R",
   "states": "1=Unknown, 2=Remote Modbus, 3=Remote 4-20/0-10, 4=DHW, 5=CH1, 6=CH1 Outdoor Air Reset, 7=CH2, 8=CH2 Outdoor Air Reset"
  },
  {
   "type": "AI",
   "instance": 19,
   "name": "0-10VDC 4-20mADC input",
   "description": "Remote 0-10 V / 4-20 mA input reading",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "MI",
   "instance": 20,
   "name": "Lockout Code",
   "description": "Lockout code (see lockout/hold list)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "MI",
   "instance": 21,
   "name": "Hold Code",
   "description": "Hold code (see lockout/hold list)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 22,
   "name": "CH Modbus Rate",
   "description": "Firing rate command for this boiler",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 23,
   "name": "Fan Speed Demanded",
   "description": "Blower speed demand, rpm",
   "units": "rpm",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 24,
   "name": "Fan Speed Feedback",
   "description": "Blower speed feedback, rpm",
   "units": "rpm",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 25,
   "name": "Flame Signal",
   "description": "Flame signal, 0-100 %",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "MI",
   "instance": 26,
   "name": "Burner Control State",
   "description": "Burner sequence state",
   "units": "",
   "access": "R",
   "states": "1=Self Check, 2=Standby, 3=Waiting for Limit to close, 4=Prepurge, 5=Direct Burner Ignition, 6=Low Fire Hold, 7=Calibration, 8=Rate Limit, 9=Run (Modulate), 10=Postpurge, 11=Pump Purge, 12=Standby Delay, 13=Lockout, 14=Boiler Switch Off, 15=Warm Wheather Shutdown"
  },
  {
   "type": "AI",
   "instance": 27,
   "name": "Burner Run Time Hours",
   "description": "Burner run hours",
   "units": "h",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 28,
   "name": "Burner Cycle Count",
   "description": "Burner cycles",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 29,
   "name": "Pump A (System Pump) Cycles",
   "description": "Pump A (System Pump) Cycles",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 30,
   "name": "Pump B (Boiler Pump) Cycles",
   "description": "Pump B (Boiler Pump) Cycles",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 31,
   "name": "Pump C (DHW Pump) Cycles",
   "description": "Pump C (DHW Pump) Cycles",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 32,
   "name": "Pump A (System Pump) Status",
   "description": "Pump A (System Pump) Status",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 33,
   "name": "Pump B (Boiler Pump) Status",
   "description": "Pump B (Boiler Pump) Status",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 34,
   "name": "Pump C (DHW Pump) Status",
   "description": "Pump C (DHW Pump) Status",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "AI",
   "instance": 35,
   "name": "Recirculation Temperature",
   "description": "Recirculation Temperature",
   "units": "°F",
   "access": "R",
   "states": ""
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/thermal-solutions/alta-phantom-ii-universal-gateway-protoair",
 "note": "Provided as-is. Point availability varies by firmware and options; verify against the live device.",
 "disclaimer": "DISCLAIMER: reference only, provided AS IS with no warranty. May contain errors or be out of date. You must verify every point against the manufacturer's current documentation and the live device before use. easybacnet.com accepts no liability for its use and is not affiliated with the manufacturer. Terms: https://easybacnet.com/terms#content"
}
