{
 "manufacturer": "KMC Controls",
 "manufacturer_slug": "kmc-controls",
 "model": "BAC-4000 AppStat, heat pump application",
 "model_slug": "bac-4000-appstat-heat-pump",
 "short_model": "BAC-4000 AppStat, heat pump",
 "aliases": [
  "BAC-4000",
  "AppStat",
  "KMC AppStat",
  "BAC-4001CW",
  "BAC-4002CW",
  "BAC-4003CW",
  "BAC-4007CW"
 ],
 "equipment_type": "Heat pump controller / thermostat",
 "applies_to": "KMC AppStat (BAC-4000 series) room controllers configured for the heat pump application.",
 "summary": "The AppStat is a wall-mounted BACnet MS/TP room controller (thermostat style) with fixed applications for fan coils, rooftop units and heat pumps. Its objects cover inputs (room, remote, discharge and outdoor or water temperature, humidity, motion), the outputs for the chosen application, setpoints, operating modes, a schedule and PID loops.",
 "bacnet_transport": [
  "BACnet MS/TP"
 ],
 "firmware": null,
 "default_device_instance": null,
 "access_inferred": true,
 "notes": [
  "Outputs are from Table 7-5 of the guide; inputs, values, schedule and loops are shared by all AppStat applications. Not every object is present in every model.",
  "The guide has no read/write column; access is inferred (setpoints and modes writable, measured and calculated values read-only, outputs commandable).",
  "AI2 is WATER_TEMP on fan coil models and OAT on heat pump and rooftop models.",
  "No units or multi-state texts are printed in the object tables.",
  "AV13-AV18 (discharge air reset, economizer and compressor/aux heat lockouts) are the economizer and heat pump setpoints."
 ],
 "source": {
  "title": "Installation, Operation, and Application Guide for AppStat",
  "doc_number": "Revision I",
  "revision_date": "2025",
  "url": "https://www.kmccontrols.com/wp-content/uploads/kmc_documents/AG_BAC-4000_AppStatInstallationApplicationGuideRevI.pdf"
 },
 "integration": {
  "summary": "Set the device instance, MAC address and baud on the AppStat, then connect it to BACnet MS/TP. Occupancy comes from schedule object SCHED_1 writing BV5 OCC_SCHEDULE, so either use that schedule or write BV5 from the BMS; read space temperature, the active setpoints and fan status.",
  "minimum_points": [
   {
    "ref": "BV 5",
    "name": "OCC_SCHEDULE",
    "why": "Occupancy state, written by schedule SCHED_1"
   },
   {
    "ref": "AV 5",
    "name": "OCC_CL_STPT",
    "why": "Occupied cooling setpoint"
   },
   {
    "ref": "AV 6",
    "name": "OCC_HT_SPT",
    "why": "Occupied heating setpoint"
   },
   {
    "ref": "MV 2",
    "name": "SYSTEM_MODE",
    "why": "Control (system) mode"
   },
   {
    "ref": "AV 1",
    "name": "SPACE_TEMP",
    "why": "Space temperature"
   },
   {
    "ref": "MV 1",
    "name": "OCCUPIED_MODE",
    "why": "Occupied mode"
   },
   {
    "ref": "AV 20",
    "name": "DISCHARGE_TEMP",
    "why": "Discharge air temperature"
   },
   {
    "ref": "BV 14",
    "name": "FAN_STATUS",
    "why": "Fan proof status"
   }
  ],
  "enable": "Occupancy state is held in BV5 OCC_SCHEDULE, the reference of the controller's own schedule SCHED_1 (holiday schedules are its exception schedule).",
  "heartbeat": null,
  "remote_sensors": "A remote room sensor can be wired to AI1 REMOTE_SENSOR; the guide does not describe writing room temperature over BACnet.",
  "setup": [
   "Set device instance, MAC address and baud on the AppStat (Set up communications section) before connecting.",
   "Max 128 addressable devices per MS/TP network; KMC suggests 60 controllers or fewer for traffic.",
   "KMD-5575 repeater every 32 devices or 4000 ft."
  ],
  "gotchas": [
   "Changing object configuration can cause unpredictable operation; KMC warns against it.",
   "Not every object exists on every AppStat model."
  ]
 },
 "points": [
  {
   "type": "AI",
   "instance": 1,
   "name": "REMOTE_SENSOR",
   "description": "Remote Room Sensor (KMC10K Type II)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 2,
   "name": "OAT",
   "description": "Outdoor Air Temp (KMC10K Type III)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 3,
   "name": "DAT",
   "description": "Discharge Air Temperature (KMC10K Type III)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 4,
   "name": "LOCAL_SENSOR",
   "description": "Space Temperature (built-in sensor)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 5,
   "name": "HUMIDITY",
   "description": "Space Humidity",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 6,
   "name": "MOTION_SENSOR",
   "description": "Motion Sensor",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 8,
   "name": "ECON_DAMPER",
   "description": "Economizer Output",
   "units": "%",
   "access": "C",
   "states": ""
  },
  {
   "type": "BO",
   "instance": 1,
   "name": "FAN",
   "description": "Fan Start - Stop",
   "units": "",
   "access": "C",
   "states": ""
  },
  {
   "type": "BO",
   "instance": 2,
   "name": "COMPRESSOR_1",
   "description": "Stage 1 Compressor",
   "units": "",
   "access": "C",
   "states": ""
  },
  {
   "type": "BO",
   "instance": 3,
   "name": "COMPRESSOR_2",
   "description": "Stage 2 Compressor",
   "units": "",
   "access": "C",
   "states": ""
  },
  {
   "type": "BO",
   "instance": 4,
   "name": "REVERSING _VALVE",
   "description": "Reversing Valve",
   "units": "",
   "access": "C",
   "states": ""
  },
  {
   "type": "BO",
   "instance": 5,
   "name": "AUXILIARY_HEAT",
   "description": "Auxiliary Heat",
   "units": "",
   "access": "C",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 1,
   "name": "SPACE_TEMP",
   "description": "Space Temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 3,
   "name": "ACT_COOL_STPT",
   "description": "Active Cooling Setpoint",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 4,
   "name": "ACT_HEAT_STPT",
   "description": "Active Heating Setpoint",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 5,
   "name": "OCC_CL_STPT",
   "description": "Occupied Cooling Setpoint",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 6,
   "name": "OCC_HT_SPT",
   "description": "Occupied Heating Setpoint",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 7,
   "name": "UNOCC_CL_STPT",
   "description": "Unoccupied Cooling Setpoint",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 8,
   "name": "UNOCC_HT_STPT",
   "description": "Unoccupied Heating Setpoint",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 9,
   "name": "MIN_CL_STPT",
   "description": "Minimum Cooling Setpoint",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 10,
   "name": "MAX_HT_STPT",
   "description": "Maximum Heating Setpoint",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 11,
   "name": "MIN_STPT_DIFF",
   "description": "Minimum Setpoint Differential",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 12,
   "name": "STBY_OFFSET",
   "description": "Standby Offset",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 13,
   "name": "DAT_RESET",
   "description": "Discharge Air Reset STPT",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 14,
   "name": "MIN DAT",
   "description": "Min Discharge Air Temp",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 15,
   "name": "MIN_ECON_DAMPER",
   "description": "Minimum Econ Damper",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 16,
   "name": "ECON_ENABLE_TEMP",
   "description": "Economizer Enable Temperature",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 17,
   "name": "CMP_LOCKOUT",
   "description": "Compressor Lockout Temperature",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 18,
   "name": "AUX_HT_LOCKOUT",
   "description": "OAT AUX Heat Lockout",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 19,
   "name": "OUTDOOR_TEMP",
   "description": "Outdoor Air Temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 20,
   "name": "DISCHARGE_TEMP",
   "description": "Discharge Air Temp",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 21,
   "name": "REL_HUMIDITY",
   "description": "Relative Humidity",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 22,
   "name": "DEHUM_STPT",
   "description": "Dehumidification Setpoint",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 24,
   "name": "DEHUM_DIFF",
   "description": "Dehumidification Differential",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 25,
   "name": "FAN_OFF_DELAY",
   "description": "Fan Off Delay",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 5,
   "name": "OCC_SCHEDULE",
   "description": "Occupy Schedule (written by SCHED_1)",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 13,
   "name": "OCCUPIED_FAN",
   "description": "Fan On During Occupied Mode",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 14,
   "name": "FAN_STATUS",
   "description": "Fan Proof",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 28,
   "name": "LOCAL_OVRD",
   "description": "Local Override Mode",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 36,
   "name": "STPT_HOLD",
   "description": "Hold Temperature Setpoint",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 1,
   "name": "OCCUPIED_MODE",
   "description": "Occupied Mode",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 2,
   "name": "SYSTEM_MODE",
   "description": "Control Mode",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 3,
   "name": "FAN_MODE",
   "description": "Fan Auto-Manual Mode",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "SCH",
   "instance": 1,
   "name": "SCHED_1",
   "description": "Schedule #1, writes BV5",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "LO",
   "instance": 1,
   "name": "CL LOOP",
   "description": "Cooling Loop",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "LO",
   "instance": 2,
   "name": "HT LOOP",
   "description": "Heating Loop",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "LO",
   "instance": 3,
   "name": "DAT LOOP",
   "description": "Discharge Air Temp Loop",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "LO",
   "instance": 4,
   "name": "REHEAT",
   "description": "Reheat for Dehumidification",
   "units": "",
   "access": "R",
   "states": ""
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/kmc-controls/bac-4000-appstat-heat-pump",
 "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"
}
