{
 "manufacturer": "WaterFurnace",
 "manufacturer_slug": "waterfurnace",
 "model": "Dual Compressor Water-to-Air Heat Pump (FX10)",
 "model_slug": "fx10-dual-compressor-water-to-air",
 "aliases": [
  "PRODCWA-05",
  "PRODCWA",
  "WaterFurnace FX10"
 ],
 "equipment_type": "Water-source heat pump controller",
 "applies_to": "WaterFurnace commercial dual-compressor water-to-air heat pumps fitted with the FX10 DDC controller.",
 "summary": "These are the BACnet objects WaterFurnace publishes for its dual-compressor water-to-air heat pumps running the FX10 DDC controller. A BAS can read space, discharge and coil temperatures, occupancy and compressor/fan states, and can command occupancy, fan, compressor stages, the reversing valve and spare outputs directly. Setpoints and configuration live in flash-backed Analog/Multistate Values, so they should only be written occasionally.",
 "bacnet_transport": [],
 "firmware": null,
 "default_device_instance": null,
 "notes": [
  "Output-type points are volatile and fall back to uncommanded after a power cycle; unlimited writes.",
  "Value-type points (AV/MV) are stored in flash (about 2,000,000 write life); never write them from automatic reset logic.",
  "Multistate numbers assume the BAS shows 255 as uncommanded; if yours shows 254, every state number is one lower (0=Off, 1=On).",
  "No engineering units are printed in the source; temperatures are presumably degrees F.",
  "The sheet does not state the BACnet transport."
 ],
 "source": {
  "title": "BACnet Points for Dual Compressor Water-to-Air Heat Pumps Utilizing the FX10 Controller",
  "doc_number": "PRODCWA-05",
  "revision_date": "2013-02",
  "url": "https://www.waterfurnace.com/downloads/ddc/BACnet-Resources/BACnet-points-pdfs/PRODCWA-05.pdf"
 },
 "points": [
  {
   "type": "AI",
   "instance": 1,
   "name": "Space Temp",
   "description": "Space sensor reading (terminals RS/AIC)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 2,
   "name": "Discharge Air",
   "description": "Discharge air sensor",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 3,
   "name": "Freeze Temp 1",
   "description": "Water coil refrigerant temperature, circuit 1",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 4,
   "name": "Freeze Temp 2",
   "description": "Water coil refrigerant temperature, circuit 2",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 5,
   "name": "Active Clg Setpt",
   "description": "Effective cooling setpoint",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 6,
   "name": "Active Hgt Setpt",
   "description": "Effective heating setpoint",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 7,
   "name": "Freeze Temp Limit",
   "description": "Low temperature limit for the water coil",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 8,
   "name": "nvoAlarms",
   "description": "Active alarm code (see alarm table)",
   "units": "",
   "access": "R",
   "states": "0=No Alarm; 1=Condensate Detected; 2=Comp 1 High Discharge Pressure; 3=Comp 1 Low Suction Pressure; 4=Circuit 1 Low Temp Limit on Coax; 5=Comp 2 High Discharge Pressure; 6=Comp 2 Low Suction Pressure; 7=Circuit 2 Low Temp Limit on Coax; 8=Circuit 1 Bad Refrigerant Temp Sensor; 9=Circuit 2 Bad Refrigerant Temp Sensor"
  },
  {
   "type": "AI",
   "instance": 9,
   "name": "Economizer Temp",
   "description": "Economizer water temperature sensor",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 1,
   "name": "Common Setpoint",
   "description": "Midpoint setpoint; moves heating and cooling setpoints together",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 2,
   "name": "Space Temp Ovrd",
   "description": "Network override of the space temperature reading",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 1,
   "name": "Occupied Cool",
   "description": "Occupied cooling setpoint (flash)",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 2,
   "name": "Occupied Heat",
   "description": "Occupied heating setpoint (flash)",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 3,
   "name": "Unoccupied Cool",
   "description": "Unoccupied cooling setpoint (flash)",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 4,
   "name": "Unoccupied Heat",
   "description": "Unoccupied heating setpoint (flash)",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 5,
   "name": "Economizer Setpt",
   "description": "Water temperature threshold for economizer operation",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 6,
   "name": "Max Hgt Setpt",
   "description": "Upper limit for the heating setpoint",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 7,
   "name": "Min Clg Setpt",
   "description": "Lower limit for the cooling setpoint",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 8,
   "name": "Remote Setpt Max",
   "description": "Maximum positive setpoint shift from the sensor",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 9,
   "name": "Remote Setpt Min",
   "description": "Maximum negative setpoint shift from the sensor",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 10,
   "name": "Zone Temp Offset",
   "description": "Calibration offset for the zone sensor",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 11,
   "name": "Econo Temp Offset",
   "description": "Calibration offset for the economizer water sensor",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "MI",
   "instance": 1,
   "name": "Effective Occupancy",
   "description": "Current occupancy status",
   "units": "",
   "access": "R",
   "states": "1=Occupied; 2=Unoccupied; 3=Bypass (temporary occupancy)"
  },
  {
   "type": "MI",
   "instance": 2,
   "name": "Mode",
   "description": "Current unit mode",
   "units": "",
   "access": "R",
   "states": "1=Auto (Normal); 7=Off (Shutdown)"
  },
  {
   "type": "MI",
   "instance": 3,
   "name": "Comp/Fan Prove",
   "description": "DI4 proving contact; needs field current relay(s)",
   "units": "",
   "access": "R",
   "states": "1=Off; 2=On"
  },
  {
   "type": "MI",
   "instance": 4,
   "name": "Fan Cmd Status",
   "description": "Commanded fan status",
   "units": "",
   "access": "R",
   "states": "1=Off; 2=On"
  },
  {
   "type": "MI",
   "instance": 5,
   "name": "Comp1 Cmd Status",
   "description": "Commanded compressor 1 status",
   "units": "",
   "access": "R",
   "states": "1=Off; 2=On"
  },
  {
   "type": "MI",
   "instance": 6,
   "name": "Comp2 Cmd Status",
   "description": "Commanded compressor 2 status",
   "units": "",
   "access": "R",
   "states": "1=Off; 2=On"
  },
  {
   "type": "MI",
   "instance": 7,
   "name": "Rev Valve Status",
   "description": "Commanded reversing valve position",
   "units": "",
   "access": "R",
   "states": "1=Heating; 2=Cooling"
  },
  {
   "type": "MI",
   "instance": 8,
   "name": "BO-5/Elect Heat",
   "description": "Commanded state of BO5 (electric heat)",
   "units": "",
   "access": "R",
   "states": "1=Off; 2=On"
  },
  {
   "type": "MI",
   "instance": 9,
   "name": "BO-9 Spare",
   "description": "Commanded state of spare BO9",
   "units": "",
   "access": "R",
   "states": "1=Off; 2=On"
  },
  {
   "type": "MO",
   "instance": 1,
   "name": "Occupancy Command",
   "description": "Network occupancy command",
   "units": "",
   "access": "W",
   "states": "1=Occupied; 2=Unoccupied; 3=Bypass; 4=Standby"
  },
  {
   "type": "MO",
   "instance": 2,
   "name": "Fan Command",
   "description": "Network fan call (thermostat G)",
   "units": "",
   "access": "W",
   "states": "1=Off; 2=On"
  },
  {
   "type": "MO",
   "instance": 3,
   "name": "Comp1 Command (Y1)",
   "description": "Network compressor 1 call (thermostat Y1)",
   "units": "",
   "access": "W",
   "states": "1=Off; 2=On"
  },
  {
   "type": "MO",
   "instance": 4,
   "name": "Comp2 Command (Y2)",
   "description": "Network compressor 2 call (thermostat Y2)",
   "units": "",
   "access": "W",
   "states": "1=Off; 2=On"
  },
  {
   "type": "MO",
   "instance": 5,
   "name": "Rev Vlv Cmd",
   "description": "Network reversing valve call (thermostat O)",
   "units": "",
   "access": "W",
   "states": "1=Heat; 2=Cooling"
  },
  {
   "type": "MO",
   "instance": 6,
   "name": "Emergency Override",
   "description": "Network emergency shutdown",
   "units": "",
   "access": "W",
   "states": "1=Auto; 5=Shutdown"
  },
  {
   "type": "MO",
   "instance": 7,
   "name": "Alarm Reset",
   "description": "Reset manual-reset alarms: write 2, then back to 1",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "MO",
   "instance": 8,
   "name": "BO5 Elect Heat",
   "description": "Network control of BO5 electric heat (see MV2)",
   "units": "",
   "access": "W",
   "states": "1=Off; 2=On"
  },
  {
   "type": "MO",
   "instance": 9,
   "name": "BO9 Spare",
   "description": "Network control of spare output BO9",
   "units": "",
   "access": "W",
   "states": "1=Off; 2=On"
  },
  {
   "type": "MV",
   "instance": 1,
   "name": "Economizer Enable",
   "description": "Enable economizer logic (flash)",
   "units": "",
   "access": "W",
   "states": "1=Off; 2=On"
  },
  {
   "type": "MV",
   "instance": 2,
   "name": "Electric Heat Mode",
   "description": "BO5 as emergency heat or network-controlled (flash)",
   "units": "",
   "access": "W",
   "states": "1=EmgHeat; 2=Network Control"
  },
  {
   "type": "MV",
   "instance": 3,
   "name": "Fan Operation",
   "description": "Continuous or cycled fan (flash)",
   "units": "",
   "access": "W",
   "states": "1=Continuous; 2=Cycled"
  }
 ],
 "integration": {
  "summary": "The BAS can run this heat pump in two ways: command occupancy (MO1) and let the FX10 hold its occupied/unoccupied setpoints, or act as the thermostat and send fan, Y1, Y2 and O calls directly (MO2-MO5). Space temperature can be overridden from the network on AO2, and MO6 forces an emergency shutdown. Keep frequent writes on the volatile AO/MO points, not the flash-backed AV/MV setpoints.",
  "minimum_points": [
   {
    "ref": "MO 1",
    "name": "Occupancy Command",
    "why": "Occupied/unoccupied/bypass/standby command"
   },
   {
    "ref": "MO 6",
    "name": "Emergency Override",
    "why": "Network emergency shutdown"
   },
   {
    "ref": "AV 1",
    "name": "Occupied Cool",
    "why": "Occupied cooling setpoint (flash; write rarely)"
   },
   {
    "ref": "AV 2",
    "name": "Occupied Heat",
    "why": "Occupied heating setpoint (flash; write rarely)"
   },
   {
    "ref": "MO 7",
    "name": "Alarm Reset",
    "why": "Reset manual-reset alarms"
   },
   {
    "ref": "MI 2",
    "name": "Mode",
    "why": "Auto or shutdown status"
   },
   {
    "ref": "MI 5",
    "name": "Comp1 Cmd Status",
    "why": "Compressor 1 commanded on/off"
   },
   {
    "ref": "AI 1",
    "name": "Space Temp",
    "why": "Space sensor temperature (terminals RS/AIC)"
   },
   {
    "ref": "AI 2",
    "name": "Discharge Air",
    "why": "Discharge (supply) air temperature"
   },
   {
    "ref": "AI 8",
    "name": "nvoAlarms",
    "why": "Active alarm code"
   }
  ],
  "enable": "The sheet has no separate BAS-enable point. MO6 Emergency Override puts the unit in shutdown (5) or back to auto (1). MO2-MO5 let the BAS send fan, compressor and reversing-valve calls directly.",
  "heartbeat": null,
  "remote_sensors": "AO2 Space Temp Ovrd overrides the space temperature reading from the network. It is a volatile output, so it reverts to uncommanded after a power cycle. The sheet does not mention a network outdoor-air input.",
  "setup": [],
  "gotchas": [
   "AV/MV points are stored in flash (about 2,000,000 writes); write them only manually or by schedule, never from automatic reset logic.",
   "Output points (AO/MO) are volatile and go back to uncommanded after a power cycle, so rewrite them after power is restored.",
   "If the BAS shows 254 as uncommanded instead of 255, every multistate value is one lower (0=Off, 1=On).",
   "MO8 (BO5 electric heat) is interlocked with BI4. The sheet says it needs MV2 Electric Heat Mode set to EmgHeat, which seems to conflict with MV2's own description, so confirm on site.",
   "Alarm Reset needs a write of 2 followed by 1."
  ]
 },
 "page": "https://easybacnet.com/bacnet-points-lists/waterfurnace/fx10-dual-compressor-water-to-air",
 "note": "Re-typed from the manufacturer's public documentation (see source). Point availability varies by firmware and options; verify against the live device."
}
