{
 "manufacturer": "Johnson Controls",
 "manufacturer_slug": "johnson-controls",
 "model": "TEC2604-4 and TEC2604-4+PIR Multi-Stage Economizer Thermostat (BACnet MS/TP)",
 "model_slug": "tec2604-4-economizer-thermostat",
 "short_model": "TEC2604-4 Economizer Thermostat",
 "aliases": [
  "TEC2604-4",
  "TEC2604-4+PIR",
  "TEC2604"
 ],
 "equipment_type": "Rooftop unit controller (room thermostat with economizer)",
 "applies_to": "Rooftop units with an economizer and up to two heating and two cooling stages, using the TEC2604-4 thermostat.",
 "summary": "The TEC2604-4 is a BACnet MS/TP thermostat for multi-stage rooftop units with an economizer. On top of the standard RTU objects it exposes the economizer output, changeover setpoint, minimum position, mixed air setpoint and whether mechanical cooling may run with the economizer.",
 "bacnet_transport": [
  "BACnet MS/TP"
 ],
 "firmware": null,
 "default_device_instance": null,
 "access_inferred": false,
 "notes": [
  "Objects from Table 10 on pages 41-44 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 14), 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 14",
    "name": "System Mode RTU",
    "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": "AV 22",
    "name": "Economizer Output",
    "why": "Economizer output, %"
   },
   {
    "ref": "BI 38",
    "name": "Filter Alarm",
    "why": "Filter alarm"
   }
  ],
  "enable": "Occupancy (MV 12) set to Occupied or Unoccupied overrides local occupancy; Local Occupancy hands it back to the thermostat. System Mode (MV 14) 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 TEC2604-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": 14,
   "name": "System Mode RTU",
   "description": "System mode command",
   "units": "",
   "access": "W",
   "states": "1=Off, 2=Auto, 3=Cool, 4=Heat"
  },
  {
   "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": "AV",
   "instance": 22,
   "name": "Economizer Output",
   "description": "Economizer damper output",
   "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": 29,
   "name": "W2 Heat",
   "description": "Heating stage 2 (W2) 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": 73,
   "name": "Heating Stages",
   "description": "Number of heating stages",
   "units": "",
   "access": "W",
   "states": "1=One Stage, 2=Two Stages"
  },
  {
   "type": "MV",
   "instance": 74,
   "name": "Cooling Stages",
   "description": "Number of cooling stages",
   "units": "",
   "access": "W",
   "states": "1=One Stage, 2=Two Stages"
  },
  {
   "type": "AV",
   "instance": 77,
   "name": "Economizer Changeover Setpoint",
   "description": "Outdoor temperature changeover setpoint for economizer; Range 14.0 to 70.0 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 78,
   "name": "Economizer Minimum Position",
   "description": "Economizer minimum damper position",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 79,
   "name": "Mechanical Cooling",
   "description": "Mechanical cooling allowed with economizer",
   "units": "",
   "access": "W",
   "states": "0=Off, 1=On"
  },
  {
   "type": "AV",
   "instance": 80,
   "name": "Mixed Air Setpoint",
   "description": "Mixed air temperature setpoint; Range 50.0 to 90.0 °F",
   "units": "°F",
   "access": "W",
   "states": ""
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/johnson-controls/tec2604-4-economizer-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"
}
