{
 "manufacturer": "Schneider Electric",
 "manufacturer_slug": "schneider-electric",
 "model": "SpaceLogic TC900 Protocol Series fan coil thermostat (TC903 / TC907)",
 "model_slug": "spacelogic-tc900-protocol",
 "aliases": [
  "TC900",
  "TC903",
  "TC907",
  "TC903-EF4LDPSA",
  "TC903-EF4PDPSA",
  "TC903-3A4LXPXA",
  "TC903-3A4LDPSA",
  "TC903-3A4PDPSA",
  "TC907-EF4LDPSAB",
  "TC907-EF4PDPSAB",
  "TC907-3A4LDPSAB",
  "TC907-3A4PDPSAB",
  "F-28335"
 ],
 "equipment_type": "Fan coil thermostat",
 "applies_to": "Schneider Electric SpaceLogic TC903 and TC907 Protocol Series fan coil thermostats (on/off or proportional valves, 3-speed or EC fan, 2-pipe or 4-pipe).",
 "summary": "The TC900 Protocol Series are wall thermostats for 2-pipe and 4-pipe fan coils that talk BACnet MS/TP or Modbus RTU on one RS-485 port. Over BACnet MS/TP the BMS can switch the thermostat on and off, set the mode, fan speed, setpoints and occupancy override, and read room temperature, valve outputs, fan speed and sensor faults. A room temperature can also be written from the BMS.",
 "bacnet_transport": [
  "BACnet MS/TP"
 ],
 "firmware": null,
 "default_device_instance": null,
 "access_inferred": false,
 "notes": [
  "Temperature objects follow the unit chosen in BO 14: values are sent in °C or °F.",
  "AO 20-22 apply to EC fan models; AO 24 is TC907 only. Objects for features a model lacks can be ignored.",
  "The guide marks AO, BO and MSO Present_Value as writable; AI, BI and MSI are read-only.",
  "Setpoint ranges are bounded by AO 1, AO 2, AO 6, AO 7 and the operation mode; MO 3 limits the modes MO 0 can select.",
  "A Warm Start restarts the thermostat; a Cold Start resets it to factory settings."
 ],
 "integration": {
  "summary": "Select BACnet as the protocol, set the MS/TP address and baud at the thermostat, then use BO 0 for on/off, MO 0 for mode, MO 1 for fan speed and AO 0 for the setpoint. Read AI 2 room temperature, the fan speed and valve status BIs, and BI 5/BI 6 for sensor faults.",
  "minimum_points": [
   {
    "ref": "BO 0",
    "name": "Thermostat on or off",
    "why": "Thermostat on/off"
   },
   {
    "ref": "MO 0",
    "name": "Operation mode",
    "why": "Mode: 1 cool, 2 heat, 3 vent, 4 auto"
   },
   {
    "ref": "MO 1",
    "name": "Fan mode",
    "why": "Fan speed: 1 high, 2 med, 3 low, 4 auto"
   },
   {
    "ref": "MO 7",
    "name": "Occupancy override",
    "why": "Occupancy override: 2 occ, 3 unocc"
   },
   {
    "ref": "AO 0",
    "name": "Set-point",
    "why": "Room setpoint"
   },
   {
    "ref": "AI 2",
    "name": "Actual room temperature",
    "why": "Room temperature"
   },
   {
    "ref": "BI 7",
    "name": "Occupancy status",
    "why": "Occupied / unoccupied state"
   },
   {
    "ref": "BI 0",
    "name": "Cooling valve (4-pipe)",
    "why": "Cooling valve output state"
   },
   {
    "ref": "BI 4",
    "name": "Heating valve (4-pipe)",
    "why": "Heating valve output state"
   },
   {
    "ref": "BI 5",
    "name": "Temp sensor, short circuit",
    "why": "Temperature sensor short-circuit fault"
   }
  ],
  "enable": "BACnet and Modbus share the RS-485 port; BACnet must be selected (parameter setting or BO 8 = 0).",
  "heartbeat": null,
  "remote_sensors": "Set BO 12 = 1 (BACnet input) and write the room temperature to AO 14 Temp. input; otherwise the thermostat uses its own or the external sensor chosen in BO 7.",
  "setup": [
   "MS/TP master, baud 9600, 19200, 38400 or 76800 (38400 recommended).",
   "MAC address 0-127, set at the thermostat (menu items 13, 15, 16) or AO 23.",
   "Device instance 0-4,194,302 is writable.",
   "Wiring on terminals A (+) and B (-); the RS-485 port is not isolated."
  ],
  "gotchas": [
   "Changing BO 8 to Modbus drops BACnet communication.",
   "Don't change the baud rate while the network is running.",
   "Temperature values switch between °C and °F with BO 14; set the BMS units to match.",
   "A Cold Start clears all settings to factory defaults."
  ]
 },
 "source": {
  "title": "SpaceLogic Thermostat TC900 Protocol Series for Fan Coil Applications User Guide",
  "doc_number": "F-28335-2",
  "revision_date": "11/2025",
  "url": "https://download.se.com/files?p_Doc_Ref=F-28335"
 },
 "points": [
  {
   "type": "AI",
   "instance": 0,
   "name": "Heating valve 2, output voltage",
   "description": "Heating valve output, 0-10 V",
   "units": "V",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1,
   "name": "Cooling valve 1, output voltage",
   "description": "Cooling valve output, 0-10 V",
   "units": "V",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 2,
   "name": "Actual room temperature",
   "description": "Room temperature (0-50 °C / 32-122 °F)",
   "units": "°C or °F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 0,
   "name": "Set-point",
   "description": "Room setpoint (5-35 °C / 41-95 °F)",
   "units": "°C or °F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 1,
   "name": "Heating set-point, upper limit",
   "description": "Highest heating setpoint allowed",
   "units": "°C or °F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 2,
   "name": "Cooling set-point, lower limit",
   "description": "Lowest cooling setpoint allowed",
   "units": "°C or °F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 3,
   "name": "ECO mode, cooling set-point",
   "description": "Cooling setpoint in ECO mode",
   "units": "°C or °F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 4,
   "name": "ECO mode, heating set-point",
   "description": "Heating setpoint in ECO mode",
   "units": "°C or °F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 5,
   "name": "Temperature compensation",
   "description": "Room temperature offset (-5 to 5 K / -9 to 9 °F)",
   "units": "K or °F (delta)",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 6,
   "name": "Setpoint, upper limit",
   "description": "Setpoint range upper limit",
   "units": "°C or °F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 7,
   "name": "Setpoint, lower limit",
   "description": "Setpoint range lower limit",
   "units": "°C or °F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 8,
   "name": "Differential",
   "description": "Control differential",
   "units": "K or °F (delta)",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 9,
   "name": "ECO mode differential",
   "description": "Control differential in ECO mode",
   "units": "K or °F (delta)",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 10,
   "name": "Auto deadband",
   "description": "Deadband in auto changeover",
   "units": "K or °F (delta)",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 11,
   "name": "Modbus address setting",
   "description": "Modbus address, 1-64",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 12,
   "name": "Unoccupied mode, cooling setpoint",
   "description": "Cooling setpoint when unoccupied",
   "units": "°C or °F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 13,
   "name": "Unoccupied mode, heating setpoint",
   "description": "Heating setpoint when unoccupied",
   "units": "°C or °F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 14,
   "name": "Temp. input",
   "description": "Room temperature written from the BMS (BO 12 = 1)",
   "units": "°C or °F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 15,
   "name": "Heating mode KP",
   "description": "Heating proportional gain, 1-99",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 16,
   "name": "Cooling mode KP",
   "description": "Cooling proportional gain, 1-99",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 17,
   "name": "PID sampling time",
   "description": "PID sample time, 1-99",
   "units": "s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 18,
   "name": "KI",
   "description": "Integral gain, 0-99",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 19,
   "name": "Span",
   "description": "Control span, 1-99",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 20,
   "name": "Low-speed fan output voltage",
   "description": "EC fan low-speed voltage",
   "units": "V",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 21,
   "name": "Medium-speed fan output voltage",
   "description": "EC fan medium-speed voltage",
   "units": "V",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 22,
   "name": "High-speed fan output voltage",
   "description": "EC fan high-speed voltage",
   "units": "V",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 23,
   "name": "BACnet address setting",
   "description": "MS/TP MAC address, 0-127",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 24,
   "name": "Backlight brightness (TC907 only)",
   "description": "Backlight level, 0-5",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "MI",
   "instance": 0,
   "name": "Thermostat mode",
   "description": "Thermostat state",
   "units": "",
   "access": "R",
   "states": "1=OFF, 2=ON, 3=Frost protection"
  },
  {
   "type": "MO",
   "instance": 0,
   "name": "Operation mode",
   "description": "Heat/cool mode command",
   "units": "",
   "access": "W",
   "states": "1=Cool, 2=Heat, 3=Ventilation, 4=Auto"
  },
  {
   "type": "MO",
   "instance": 1,
   "name": "Fan mode",
   "description": "Fan speed command",
   "units": "",
   "access": "W",
   "states": "1=High, 2=Medium, 3=Low, 4=Auto"
  },
  {
   "type": "MO",
   "instance": 2,
   "name": "Power-on state",
   "description": "Behaviour after power returns",
   "units": "",
   "access": "W",
   "states": "1=Power-down memory, 2=No power-down memory, 3=Display on when powered"
  },
  {
   "type": "MO",
   "instance": 3,
   "name": "Operation mode configuration",
   "description": "Allowed modes / pipe configuration",
   "units": "",
   "access": "W",
   "states": "1=Heat only (heat + vent), 2=Cool only (cool + vent), 3=Heat and cool (heat + cool + vent), 4=Auto, 5=2-pipe mode"
  },
  {
   "type": "MO",
   "instance": 4,
   "name": "Baud rate",
   "description": "RS-485 baud rate",
   "units": "",
   "access": "W",
   "states": "1=76800, 2=9600, 3=19200, 4=38400"
  },
  {
   "type": "MO",
   "instance": 5,
   "name": "Modbus parity check",
   "description": "Modbus parity",
   "units": "",
   "access": "W",
   "states": "1=Odd check, 2=Even check, 3=None"
  },
  {
   "type": "MO",
   "instance": 6,
   "name": "Unoccupied mode, fan speed",
   "description": "Fan speed when unoccupied",
   "units": "",
   "access": "W",
   "states": "1=High, 2=Medium, 3=Low"
  },
  {
   "type": "MO",
   "instance": 7,
   "name": "Occupancy override",
   "description": "Occupancy override command",
   "units": "",
   "access": "W",
   "states": "1=No, 2=Occupied, 3=Unoccupied"
  },
  {
   "type": "BI",
   "instance": 0,
   "name": "Cooling valve (4-pipe)",
   "description": "Cooling valve output state",
   "units": "",
   "access": "R",
   "states": "0=OFF, 1=ON"
  },
  {
   "type": "BI",
   "instance": 1,
   "name": "Fan speed status high",
   "description": "Fan running at high speed",
   "units": "",
   "access": "R",
   "states": "0=OFF, 1=ON"
  },
  {
   "type": "BI",
   "instance": 2,
   "name": "Fan speed status medium",
   "description": "Fan running at medium speed",
   "units": "",
   "access": "R",
   "states": "0=OFF, 1=ON"
  },
  {
   "type": "BI",
   "instance": 3,
   "name": "Fan speed status low",
   "description": "Fan running at low speed",
   "units": "",
   "access": "R",
   "states": "0=OFF, 1=ON"
  },
  {
   "type": "BI",
   "instance": 4,
   "name": "Heating valve (4-pipe)",
   "description": "Heating valve output state",
   "units": "",
   "access": "R",
   "states": "0=OFF, 1=ON"
  },
  {
   "type": "BI",
   "instance": 5,
   "name": "Temp sensor, short circuit",
   "description": "Temperature sensor shorted",
   "units": "",
   "access": "R",
   "states": "0=OK, 1=Fault"
  },
  {
   "type": "BI",
   "instance": 6,
   "name": "Temp sensor, open circuit",
   "description": "Temperature sensor open",
   "units": "",
   "access": "R",
   "states": "0=OK, 1=Fault"
  },
  {
   "type": "BI",
   "instance": 7,
   "name": "Occupancy status",
   "description": "Occupancy state",
   "units": "",
   "access": "R",
   "states": "0=Unoccupied, 1=Occupied"
  },
  {
   "type": "BI",
   "instance": 8,
   "name": "Keycard status",
   "description": "Hotel keycard present",
   "units": "",
   "access": "R",
   "states": "0=Not present, 1=Present"
  },
  {
   "type": "BO",
   "instance": 0,
   "name": "Thermostat on or off",
   "description": "Thermostat on/off command",
   "units": "",
   "access": "W",
   "states": "0=OFF, 1=ON"
  },
  {
   "type": "BO",
   "instance": 1,
   "name": "ECO mode",
   "description": "ECO mode enable",
   "units": "",
   "access": "W",
   "states": "0=Disabled, 1=Enabled"
  },
  {
   "type": "BO",
   "instance": 2,
   "name": "Sleep mode",
   "description": "Sleep mode enable",
   "units": "",
   "access": "W",
   "states": "0=Disabled, 1=Enabled"
  },
  {
   "type": "BO",
   "instance": 3,
   "name": "Low temperature protection",
   "description": "Frost protection enable",
   "units": "",
   "access": "W",
   "states": "0=Disabled, 1=Enabled"
  },
  {
   "type": "BO",
   "instance": 4,
   "name": "Fan operation after setting temperature is reached",
   "description": "Fan keeps running at setpoint",
   "units": "",
   "access": "W",
   "states": "0=Fan OFF, 1=Fan ON"
  },
  {
   "type": "BO",
   "instance": 5,
   "name": "Auto fan",
   "description": "Auto fan speed allowed",
   "units": "",
   "access": "W",
   "states": "0=Disabled, 1=Enabled"
  },
  {
   "type": "BO",
   "instance": 6,
   "name": "Display temperature",
   "description": "Value shown on the display",
   "units": "",
   "access": "W",
   "states": "0=Room temp, 1=Set-point"
  },
  {
   "type": "BO",
   "instance": 7,
   "name": "Temperature sensor",
   "description": "Built-in or external sensor",
   "units": "",
   "access": "W",
   "states": "0=Built-in sensor, 1=External sensor"
  },
  {
   "type": "BO",
   "instance": 8,
   "name": "Communication protocol selection",
   "description": "BACnet or Modbus on RS-485",
   "units": "",
   "access": "W",
   "states": "0=BACnet, 1=Modbus"
  },
  {
   "type": "BO",
   "instance": 9,
   "name": "RTC clock display",
   "description": "Show the clock",
   "units": "",
   "access": "W",
   "states": "0=Disable, 1=Enable"
  },
  {
   "type": "BO",
   "instance": 10,
   "name": "12 or 24-hour clock",
   "description": "Clock format",
   "units": "",
   "access": "W",
   "states": "0=12-hour clock, 1=24-hour clock"
  },
  {
   "type": "BO",
   "instance": 11,
   "name": "Occupancy or auxiliary input closed or open",
   "description": "Occupancy input logic",
   "units": "",
   "access": "W",
   "states": "0=Occupied if closed, unoccupied if open, 1=Unoccupied if closed, occupied if open"
  },
  {
   "type": "BO",
   "instance": 12,
   "name": "Temp. value from connection",
   "description": "Room temperature source",
   "units": "",
   "access": "W",
   "states": "0=Local device, 1=BACnet input"
  },
  {
   "type": "BO",
   "instance": 13,
   "name": "Keypad status",
   "description": "Keypad lock",
   "units": "",
   "access": "W",
   "states": "0=Unlocked, 1=Locked"
  },
  {
   "type": "BO",
   "instance": 14,
   "name": "F or C degree",
   "description": "Temperature unit",
   "units": "",
   "access": "W",
   "states": "0=°F, 1=°C"
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/schneider-electric/spacelogic-tc900-protocol",
 "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"
}
