{
 "manufacturer": "Contemporary Controls",
 "manufacturer_slug": "contemporary-controls",
 "model": "BASstat BAST-421C-BW2 Wireless Modulating Fan Coil Thermostat",
 "short_model": "BAST-421C-BW2",
 "model_slug": "bast-421c-bw2",
 "aliases": [
  "BAST-421C-BW2",
  "BAST-421-BW2",
  "BASstat 421C"
 ],
 "equipment_type": "Thermostat for modulating 4-pipe FCUs (Wi-Fi BACnet IP)",
 "applies_to": "Contemporary Controls BAST-421C-BW2 Wi-Fi thermostats for 4-pipe fan coils with modulating or floating valves.",
 "summary": "The BAST-421C-BW2 is a Wi-Fi BACnet IP thermostat for 4-pipe fan coil units with modulating or floating cooling and heating valves and a multi-speed fan. It exposes temperatures, valve outputs, setpoints, system and fan modes, occupancy and setup values as BACnet objects.",
 "bacnet_transport": [
  "BACnet IP"
 ],
 "firmware": null,
 "default_device_instance": 700001,
 "access_inferred": false,
 "notes": [
  "From the BACnet Object Table (manual pages 30-37). The table is shared across the BASstat family; rows printed in grey (objects this model does not use) are left out.",
  "Access is from the Readable/Writable column; R/W objects are shown as writable.",
  "Temperature objects follow the Temperature Scale object (BV 6: 0 = °C, 1 = °F).",
  "Fan Speed Status (MV 5) states are printed starting at 0 (0 = Stop); Control Type (MV 7) lists only states 2 and 3 for this 4-pipe model."
 ],
 "source": {
  "title": "BAST-421C-BW2 Wireless Modulating Fan Coil Thermostat User Manual",
  "doc_number": "UM-15093500-AA2",
  "revision_date": null,
  "url": "https://www.ccontrols.com/pdf/um/BAST-421C-BW2-UserManual.pdf"
 },
 "integration": {
  "summary": "Turn the thermostat outputs on with On-Off Control (BV 5), set occupancy with Occupancy Command (BV 14), and write the system mode, cooling and heating setpoints and fan mode. Read the space temperature, occupancy status, output status and fan speed.",
  "minimum_points": [
   {
    "ref": "BV 5",
    "name": "On-Off Control",
    "why": "Thermostat outputs on/off (1 = on)"
   },
   {
    "ref": "BV 14",
    "name": "Occupancy Command",
    "why": "0 = occupied, 1 = unoccupied"
   },
   {
    "ref": "MV 1",
    "name": "System Mode",
    "why": "Cool, heat or ventilation mode"
   },
   {
    "ref": "AV 0",
    "name": "Cooling Temperature Setpoint",
    "why": "Occupied cooling setpoint"
   },
   {
    "ref": "AV 3",
    "name": "Heating Temperature Setpoint",
    "why": "Occupied heating setpoint"
   },
   {
    "ref": "MV 0",
    "name": "Fan Mode",
    "why": "1 = auto, then fan speeds"
   },
   {
    "ref": "AI 0",
    "name": "Current Temperature",
    "why": "Space temperature in use"
   },
   {
    "ref": "BI 0",
    "name": "Occupancy Status",
    "why": "0 = occupied, 1 = unoccupied"
   },
   {
    "ref": "BI 2",
    "name": "Cooling-heating Status",
    "why": "Heating/cooling output active"
   },
   {
    "ref": "MV 5",
    "name": "Fan Speed Status",
    "why": "Current fan speed, 0 = stop"
   }
  ],
  "enable": "On-Off Control (BV 5) switches the thermostat outputs. Occupancy Command (BV 14) only takes effect when the ESI contact is disabled in Lock (AV 18 bit value 64); by default occupancy comes from the ESI dry contact.",
  "heartbeat": "A space temperature written to Temperature Assigned Via BACnet (AV 1) is only used while the BMS keeps toggling Heartbeat (BV 16) within the Heartbeat Rate (AV 29) period, in seconds; otherwise the thermostat reverts to its own sensor.",
  "remote_sensors": "Set Temperature Source (MV 3) to 3 (Assigned through BACnet) and write the space temperature to AV 1, toggling BV 16 as a heartbeat.",
  "setup": [
   "BACnet IP over Wi-Fi; the UDP port defaults to 47808 (BAC0) and can be set in the Engineering menu (UdP) or by writing UDP Port No (AV 21).",
   "Device instance = devH x 1000 + devL in the Engineering menu, or write Device Instance (AV 20) once online.",
   "DHCP or static IP addressing is set from the thermostat's Wi-Fi setup pages.",
   "The manual gives 700001 as the default device instance."
  ],
  "gotchas": [
   "Lock (AV 18) is bit-coded: add the bit values to lock buttons, ignore the ESI or door contact, block changes to the comms settings or hand the relays to BACnet (512).",
   "The manual text calls the Lock object AV17 in places and the heartbeat rate AV-29; the object table numbers are used here.",
   "Relay control BVs only drive the relays when Lock bit 9 (512) hands the outputs to the BACnet supervisor."
  ]
 },
 "points": [
  {
   "type": "AI",
   "instance": 0,
   "name": "Current Temperature",
   "description": "",
   "units": "°F/°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1,
   "name": "Active Temperature Setpoint",
   "description": "",
   "units": "°F/°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 2,
   "name": "Built-in Temperature Sensor",
   "description": "Built-in Temperature Sensor Reading",
   "units": "°F/°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 3,
   "name": "Remote Temperature Sensor",
   "description": "Remote Temperature Sensor Reading",
   "units": "°F/°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 8,
   "name": "Modulating/ Floating Output 1",
   "description": "Modulating/ Floating Output 1 (Cooling)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 9,
   "name": "Modulating/ Floating Output 2",
   "description": "Modulating/ Floating Output 2 (Heating)",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 0,
   "name": "Cooling Temperature Setpoint",
   "description": "",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 1,
   "name": "Temperature Assigned Via BACnet",
   "description": "BACnet Assigned Current Temperature",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 3,
   "name": "Heating Temperature Setpoint",
   "description": "",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 4,
   "name": "Hr-Running Time",
   "description": "Running Time of Valve (Hr.)",
   "units": "h",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 5,
   "name": "M-Running Time",
   "description": "Running Time of Valve (M.)",
   "units": "min",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 6,
   "name": "Sec-Running Time",
   "description": "Running Time of Valve (Sec.)",
   "units": "s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 7,
   "name": "Deadband",
   "description": "",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 8,
   "name": "Unoccupied Cool Setpoint",
   "description": "Unoccupied Cooling Setpoint",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 9,
   "name": "Unoccupied Heat Setpoint",
   "description": "Unoccupied Heating Setpoint",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 10,
   "name": "Integral-Cycle Time",
   "description": "Integral Time and Output Cycle Time",
   "units": "s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 11,
   "name": "Analog Minimum Output for AO1",
   "description": "Minimum Output Voltage in Digital Value When Reach Low Limit for AO1",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 12,
   "name": "Span Offset for AO1",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 13,
   "name": "Low Setpoint Limit",
   "description": "Low Limit for Set-Point Temperature",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 14,
   "name": "High Setpoint Limit",
   "description": "High Limit for Set-Point Temperature",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 15,
   "name": "Temperature Offset",
   "description": "Offset for Current Temperature",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 16,
   "name": "Proportional Band- Stage Width",
   "description": "Proportional Band or Stage Width",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 17,
   "name": "Stage Differential",
   "description": "",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 18,
   "name": "Lock",
   "description": "Bit-coded lock: buttons, ESI/door contacts, comms settings, DO control",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 20,
   "name": "Device Instance",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 21,
   "name": "UDP Port No",
   "description": "UDP Port Number",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 27,
   "name": "Analog Minimum Output for AO2",
   "description": "Minimum Output Voltage in Digital Value When Reach Low Limit for AO2",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 28,
   "name": "Span Offset for AO2",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 29,
   "name": "Heartbeat Rate",
   "description": "Communication Heartbeat Minimum Rate",
   "units": "s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 39,
   "name": "Minimum Cooling Setpoint",
   "description": "",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 40,
   "name": "Maximum Heating Setpoint",
   "description": "",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 0,
   "name": "Occupancy Status",
   "description": "Status of Occupancy",
   "units": "",
   "access": "R",
   "states": "0=Room Occupied, 1=Room Unoccupied"
  },
  {
   "type": "BI",
   "instance": 2,
   "name": "Cooling-heating Status",
   "description": "Status of Cooling/Heating Control Output",
   "units": "",
   "access": "R",
   "states": "0=Close & Off, 1=Open & On"
  },
  {
   "type": "BI",
   "instance": 9,
   "name": "Relay 7 Status",
   "description": "Status of Relay 7 Fan",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BV",
   "instance": 0,
   "name": "Occupancy Contact Definition",
   "description": "Occupancy(DI1) Contact Definition",
   "units": "",
   "access": "W",
   "states": "0=N.O. = Occupied, 1=N.C. = Occupied"
  },
  {
   "type": "BV",
   "instance": 1,
   "name": "Cooling Direct- Reverse Acting",
   "description": "Modulating Cooling Direct/ Reverse Signal Output",
   "units": "",
   "access": "W",
   "states": "0=Direct (0 To10v), 1=Reverse (10 To 0V)"
  },
  {
   "type": "BV",
   "instance": 2,
   "name": "Heating Direct- Reverse Acting",
   "description": "Modulating Heating Direct/ Reverse Signal Output",
   "units": "",
   "access": "W",
   "states": "0=Direct (0 To10v), 1=Reverse (10 To 0V)"
  },
  {
   "type": "BV",
   "instance": 5,
   "name": "On-Off Control",
   "description": "On/Off Status of Thermostat",
   "units": "",
   "access": "W",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BV",
   "instance": 6,
   "name": "Temperature Scale",
   "description": "°C/ °F",
   "units": "",
   "access": "W",
   "states": "0=°C, 1=°F"
  },
  {
   "type": "BV",
   "instance": 13,
   "name": "Relay 7 Control",
   "description": "On/Off Control of Relay 7 (Fan)",
   "units": "",
   "access": "W",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BV",
   "instance": 14,
   "name": "Occupancy Command",
   "description": "Room Occupancy Setting",
   "units": "",
   "access": "W",
   "states": "0=Occupied, 1=Unoccupied"
  },
  {
   "type": "BV",
   "instance": 15,
   "name": "Fan Output for Heating",
   "description": "Disable/ Enable Fan Output for Heating",
   "units": "",
   "access": "W",
   "states": "0=Disable, 1=Enable"
  },
  {
   "type": "BV",
   "instance": 16,
   "name": "Heartbeat",
   "description": "Communication Heartbeat Flip-Flop",
   "units": "",
   "access": "W",
   "states": "0=Off, 1=On"
  },
  {
   "type": "MV",
   "instance": 0,
   "name": "Fan Mode",
   "description": "",
   "units": "",
   "access": "W",
   "states": "1=Auto, 2=Low, 3=Med., 4=Hi"
  },
  {
   "type": "MV",
   "instance": 1,
   "name": "System Mode",
   "description": "Working Mode: Heat, Cool or Ventilation",
   "units": "",
   "access": "W",
   "states": "1=Cool Mode, 2=Heat Mode, 3=Ventilation @ Cool Mode, 4=Ventilation @ Heat Mode"
  },
  {
   "type": "MV",
   "instance": 3,
   "name": "Temperature Source",
   "description": "Current Temperature Source",
   "units": "",
   "access": "W",
   "states": "1=Built-In Temp. Sensor, 2=Remote Temp. Sensor, 3=Assigned through BACnet"
  },
  {
   "type": "MV",
   "instance": 4,
   "name": "Lowest Fan Speed",
   "description": "Lowest Fan speed in Auto Fan mode",
   "units": "",
   "access": "W",
   "states": "1=Stop, 2=Low, 3=Med., 4=Hi"
  },
  {
   "type": "MV",
   "instance": 5,
   "name": "Fan Speed Status",
   "description": "",
   "units": "",
   "access": "R",
   "states": "0=Stop, 1=Low, 2=Med, 3=Hi"
  },
  {
   "type": "MV",
   "instance": 6,
   "name": "Display Options",
   "description": "LCD Display Options",
   "units": "",
   "access": "W",
   "states": "1=T & Time (if available), 2=SP & Time (if available), 3=T & CO2 (if available), 4=CO2 & Time (if available)"
  },
  {
   "type": "MV",
   "instance": 7,
   "name": "Control Type",
   "description": "Control Type Selection",
   "units": "",
   "access": "W",
   "states": "2=4-Pipe Cooling or Heating Manual Changeover, 3=4-Pipe Cooling and Heating Auto Changeover"
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/contemporary-controls/bast-421c-bw2",
 "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"
}
