{
 "manufacturer": "Johnson Controls",
 "manufacturer_slug": "johnson-controls",
 "model": "TEC2602-4 and TEC2602-4+PIR Heat Pump Thermostat (BACnet MS/TP)",
 "model_slug": "tec2602-4-heat-pump-thermostat",
 "short_model": "TEC2602-4 Heat Pump Thermostat",
 "aliases": [
  "TEC2602-4",
  "TEC2602-4+PIR",
  "TEC2602"
 ],
 "equipment_type": "Rooftop unit controller (room thermostat for heat-pump units)",
 "applies_to": "Single- or two-stage heat pumps with auxiliary heat and a reversing valve, using the TEC2602-4 thermostat.",
 "summary": "The TEC2602-4 is a BACnet MS/TP heat pump thermostat. Besides mode, fan, occupancy and setpoints it exposes the compressor stage, reversing valve and auxiliary heat output status, the balance points that lock out the compressor or auxiliary heat, comfort/economy staging and the usual alarms.",
 "bacnet_transport": [
  "BACnet MS/TP"
 ],
 "firmware": null,
 "default_device_instance": null,
 "access_inferred": false,
 "notes": [
  "Objects from Table 7 on pages 29-32 of the technical bulletin, which also holds separate tables for the other TEC26xx-4 models.",
  "Access comes from the guide's footnotes: read/write, read-only, writable only when out of service (listed as read-only), or writable only after the matching override object is set.",
  "The device object (instance 76aaa, aaa = MS/TP address) is not listed as a point.",
  "Temperatures are listed in °F; the guide also gives the °C range."
 ],
 "source": {
  "title": "TEC Series BACnet MS/TP Network Temperature and Humidity Controllers Technical Bulletin",
  "doc_number": "LIT-12011592",
  "revision_date": "2013-03-04",
  "url": "https://docs.johnsoncontrols.com/bas/api/khub/documents/TppxRMQl8pgfqB6NRc9sqw/content"
 },
 "integration": {
  "summary": "Address the thermostat on the BACnet MS/TP trunk, then write System Mode (MV 13), Occupancy (MV 12), Fan Mode (MV 15) and the occupied setpoints (AV 42/43). Read Room Temp, Effective Occupancy, the output status objects and the filter and fan lock alarms.",
  "minimum_points": [
   {
    "ref": "MV 13",
    "name": "System Mode HPU",
    "why": "System mode command"
   },
   {
    "ref": "MV 12",
    "name": "Occupancy",
    "why": "Occupancy command from the BAS"
   },
   {
    "ref": "MV 15",
    "name": "Fan Mode",
    "why": "Fan mode: on, auto or smart"
   },
   {
    "ref": "AV 42",
    "name": "Occupied Heat Setpoint",
    "why": "Occupied heating setpoint, °F"
   },
   {
    "ref": "AV 43",
    "name": "Occupied Cool Setpoint",
    "why": "Occupied cooling setpoint, °F"
   },
   {
    "ref": "MV 34",
    "name": "Effective Occupancy",
    "why": "Occupancy state in effect"
   },
   {
    "ref": "AV 7",
    "name": "Room Temp",
    "why": "Room temperature, °F"
   },
   {
    "ref": "BI 25",
    "name": "G Fan",
    "why": "Fan (G) output on/off"
   },
   {
    "ref": "BI 38",
    "name": "Filter Alarm",
    "why": "Filter alarm"
   },
   {
    "ref": "BI 40",
    "name": "Fan Lock Alarm",
    "why": "Fan lock alarm"
   }
  ],
  "enable": "Occupancy (MV 12) set to Occupied or Unoccupied overrides local occupancy; Local Occupancy hands it back to the thermostat. System Mode (MV 13) can switch the unit off.",
  "heartbeat": "Room Temp Override and Outdoor Temp Override (BV 8 and BV 10) may release on their own after 10 minutes with no BACnet traffic, which ends a BAS-written temperature. Keep writing them while the BAS supplies the value.",
  "remote_sensors": "Set Room Temp Override (BV 8) to Override and write Room Temp (AV 7) to supply room temperature; Outdoor Temp Override (BV 10) and Outdoor Temperature (AV 9) work the same way for outdoor air.",
  "setup": [
   "BACnet MS/TP only. The address display runs 0 to 254, but use an MS/TP address of 4 to 127.",
   "The thermostat names itself TEC2602-aaa and picks device instance 76aaa, where aaa is the MS/TP address (e.g. 76004).",
   "Leave the thermostat on automatic baud detection; at least one device on the trunk (normally the supervisory controller) needs a fixed baud rate."
  ],
  "gotchas": [
   "Writing one setpoint of a heating/cooling pair can make the thermostat move the other one to keep the minimum deadband.",
   "Set the configuration parameters before mapping; the guide recommends re-mapping all objects if configuration changes afterwards.",
   "Output and status objects marked in the guide can only be written when they are out of service; they are listed as read-only.",
   "Frost Alarm (BI 36) works only when Frost Protection (BV 55) is On.",
   "Objects with no access mark in the guide are listed here as read-only."
  ]
 },
 "points": [
  {
   "type": "AV",
   "instance": 7,
   "name": "Room Temp",
   "description": "Room temperature; writable when its override object is set; Range -40.0 to 122.0 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 8,
   "name": "Room Temp Override",
   "description": "Set to Override to write Room Temp from the network",
   "units": "",
   "access": "W",
   "states": "0=Normal, 1=Override"
  },
  {
   "type": "AV",
   "instance": 9,
   "name": "Outdoor Temperature",
   "description": "Outdoor air temperature; writable when its override object is set; Range -40.0 to 122.0 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 10,
   "name": "Outdoor Temp Override",
   "description": "Set to Override to write Outdoor Temperature",
   "units": "",
   "access": "W",
   "states": "0=Normal, 1=Override"
  },
  {
   "type": "MV",
   "instance": 12,
   "name": "Occupancy",
   "description": "Occupancy command from the network",
   "units": "",
   "access": "W",
   "states": "1=Local Occupancy, 2=Occupied, 3=Unoccupied"
  },
  {
   "type": "MV",
   "instance": 13,
   "name": "System Mode HPU",
   "description": "Heat pump system mode command",
   "units": "",
   "access": "W",
   "states": "1=Off, 2=Auto, 3=Cool, 4=Heat, 5=Emergency"
  },
  {
   "type": "MV",
   "instance": 15,
   "name": "Fan Mode",
   "description": "Fan mode command",
   "units": "",
   "access": "W",
   "states": "1=On, 2=Auto, 3=Smart"
  },
  {
   "type": "AI",
   "instance": 16,
   "name": "Supply Temperature",
   "description": "Supply air temperature sensor input; Range -40.0 to 122.0 °F",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 18,
   "name": "Keypad Lockout",
   "description": "Keypad lockout level",
   "units": "",
   "access": "W",
   "states": "1=Level 0, 2=Level 1, 3=Level 2"
  },
  {
   "type": "AV",
   "instance": 20,
   "name": "PI Heating Demand",
   "description": "Heating loop demand",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 21,
   "name": "PI Cooling Demand",
   "description": "Cooling loop demand",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 24,
   "name": "Aux",
   "description": "Auxiliary output status",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 25,
   "name": "G Fan",
   "description": "Fan (G) output status",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 26,
   "name": "Y1 Cool",
   "description": "Cooling stage 1 (Y1) output status",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 27,
   "name": "Y2 Cool",
   "description": "Cooling stage 2 (Y2) output status",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 28,
   "name": "W1 Heat",
   "description": "Heating stage 1 (W1) output status",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 30,
   "name": "Reversing Valve",
   "description": "Reversing valve output status",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 31,
   "name": "DI1 Status",
   "description": "Digital input 1 status",
   "units": "",
   "access": "R",
   "states": "0=Not Activated, 1=Activated"
  },
  {
   "type": "BI",
   "instance": 32,
   "name": "DI2 Status",
   "description": "Digital input 2 status",
   "units": "",
   "access": "R",
   "states": "0=Not Activated, 1=Activated"
  },
  {
   "type": "BI",
   "instance": 33,
   "name": "Local Motion",
   "description": "Motion detected by the PIR sensor",
   "units": "",
   "access": "R",
   "states": "0=No Motion, 1=Motion"
  },
  {
   "type": "MV",
   "instance": 34,
   "name": "Effective Occupancy",
   "description": "Occupancy state in effect",
   "units": "",
   "access": "R",
   "states": "1=Occupied, 2=Unoccupied, 3=Temporary Occupied"
  },
  {
   "type": "BI",
   "instance": 36,
   "name": "Frost Alarm",
   "description": "Frost protection alarm",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 38,
   "name": "Filter Alarm",
   "description": "Filter alarm",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 39,
   "name": "Service Alarm",
   "description": "Service alarm",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 40,
   "name": "Fan Lock Alarm",
   "description": "Fan lock alarm",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "AV",
   "instance": 42,
   "name": "Occupied Heat Setpoint",
   "description": "Occupied heating setpoint; Range 40.0 to 90.0 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 43,
   "name": "Occupied Cool Setpoint",
   "description": "Occupied cooling setpoint; Range 54.0 to 100.0 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 44,
   "name": "Unoccupied Heat Setpoint",
   "description": "Unoccupied heating setpoint; Range 40.0 to 90.0 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 45,
   "name": "Unoccupied Cool Setpoint",
   "description": "Unoccupied cooling setpoint; Range 54.0 to 100.0 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 47,
   "name": "Temperature Scale",
   "description": "Display units, °C or °F",
   "units": "",
   "access": "W",
   "states": "0=°C, 1=°F"
  },
  {
   "type": "AV",
   "instance": 48,
   "name": "Heating Setpoint Limit",
   "description": "Maximum heating setpoint; Range 40.0 to 90.0 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 49,
   "name": "Cooling Setpoint Limit",
   "description": "Minimum cooling setpoint; Range 54.0 to 100.0 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 50,
   "name": "Heating Lockout Temperature",
   "description": "Outdoor temperature above which heating is locked out; Range -15.0 to 120.0 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 51,
   "name": "Cooling Lockout Temperature",
   "description": "Outdoor temperature below which cooling is locked out; Range -40.0 to 95.0 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 52,
   "name": "Deadband",
   "description": "Minimum heating/cooling setpoint deadband; Range 2.0 to 4.0 F° (differential)",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 53,
   "name": "Heating CPH",
   "description": "Heating cycles per hour",
   "units": "",
   "access": "W",
   "states": "1=3 CPH, 2=4 CPH, 3=5 CPH, 4=6 CPH, 5=7 CPH, 6=8 CPH"
  },
  {
   "type": "MV",
   "instance": 54,
   "name": "Cooling CPH",
   "description": "Cooling cycles per hour",
   "units": "",
   "access": "W",
   "states": "1=3 CPH, 2=4 CPH"
  },
  {
   "type": "BV",
   "instance": 55,
   "name": "Frost Protection",
   "description": "Frost protection on or off",
   "units": "",
   "access": "W",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BV",
   "instance": 56,
   "name": "Aux Contact",
   "description": "Auxiliary contact normally open or closed",
   "units": "",
   "access": "W",
   "states": "0=Normally Open (N.O.), 1=Normally Closed (N.C.)"
  },
  {
   "type": "BV",
   "instance": 57,
   "name": "Menu Scroll",
   "description": "Display scrolling on or off",
   "units": "",
   "access": "W",
   "states": "0=No Scroll, 1=Scroll Active"
  },
  {
   "type": "AV",
   "instance": 59,
   "name": "Password Value",
   "description": "Installer password; Range 0 to 1,000",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 60,
   "name": "Power Up Delay",
   "description": "Start delay after power-up; Range 10 to 120 s",
   "units": "s",
   "access": "W",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 61,
   "name": "Temporary Occupancy Time",
   "description": "Duration of a temporary occupancy override",
   "units": "",
   "access": "W",
   "states": "1=0 Hours, 2=1 Hour, 3=2 Hours, 4=3 Hours, 5=4 Hours, 6=5 Hours, 7=6 Hours, 8=7 Hours, 9=8 Hours, 10=9 Hours, 11=10 Hours, 12=11 Hours, 13=12 Hours"
  },
  {
   "type": "BV",
   "instance": 62,
   "name": "Fan Control",
   "description": "Fan control setting",
   "units": "",
   "access": "W",
   "states": "0=Off, 1=On"
  },
  {
   "type": "MV",
   "instance": 63,
   "name": "Anticycle",
   "description": "Minimum compressor off time",
   "units": "",
   "access": "W",
   "states": "1=0 Minutes, 2=1 Minute, 3=2 Minutes, 4=3 Minutes, 5=4 Minutes, 6=5 Minutes"
  },
  {
   "type": "BV",
   "instance": 64,
   "name": "Fan Purge Delay",
   "description": "Fan run-on after heating or cooling",
   "units": "",
   "access": "W",
   "states": "0=Off, 1=On"
  },
  {
   "type": "MV",
   "instance": 65,
   "name": "DI1 Configuration",
   "description": "Digital input 1 function",
   "units": "",
   "access": "W",
   "states": "1=None, 2=Rem NSB, 3=RemOVR, 4=Filter, 5=Service, 6=Fan Lock"
  },
  {
   "type": "MV",
   "instance": 66,
   "name": "DI2 Configuration",
   "description": "Digital input 2 function",
   "units": "",
   "access": "W",
   "states": "1=None, 2=Rem NSB, 3=RemOVR, 4=Filter, 5=Service, 6=Fan Lock"
  },
  {
   "type": "MV",
   "instance": 67,
   "name": "Proportional Band",
   "description": "Control proportional band",
   "units": "",
   "access": "R",
   "states": "1=2 (2°F/1.1°C), 2=3 (3°F/1.7°C), 3=4 (4°F/2.2°C), 4=5 (5°F/2.8°C), 5=6 (6°F/3.3°C), 6=7 (7°F/3.9°C), 7=8 (8°F/4.4°C)"
  },
  {
   "type": "AV",
   "instance": 68,
   "name": "Unoccupied Time",
   "description": "Time before unoccupied; Range 0.5 to 24.0 h",
   "units": "h",
   "access": "R",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 75,
   "name": "Heat Pump Stages",
   "description": "Number of heat pump stages",
   "units": "",
   "access": "W",
   "states": "1=One Stage, 2=Two Stages"
  },
  {
   "type": "AV",
   "instance": 82,
   "name": "High Balance Point",
   "description": "Outdoor temp above which auxiliary heat is locked out; Range 34.0 to 90.0 °F",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 83,
   "name": "Low Balance Point",
   "description": "Outdoor temp below which the compressor is locked out; Range -40.0 to 30.0 °F",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 84,
   "name": "Comfort Mode",
   "description": "Comfort or economy staging",
   "units": "",
   "access": "W",
   "states": "0=Comfort, 1=Economy"
  },
  {
   "type": "BV",
   "instance": 85,
   "name": "Reversing Valve Configuration",
   "description": "Reversing valve energised for heat or cool",
   "units": "",
   "access": "W",
   "states": "0=Normally Heat, 1=Normally Cool"
  },
  {
   "type": "BV",
   "instance": 86,
   "name": "Compressor Interlock",
   "description": "Compressor interlock on or off",
   "units": "",
   "access": "W",
   "states": "0=Off, 1=On"
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/johnson-controls/tec2602-4-heat-pump-thermostat",
 "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"
}
