{
 "manufacturer": "Verdant",
 "manufacturer_slug": "verdant",
 "model": "VX4 Energy Management Thermostats with BACnet Integration",
 "model_slug": "vx4-bacnet-integration",
 "short_model": "VX4 BACnet",
 "aliases": [
  "VX4-XX-XXX",
  "Verdant VX4",
  "Copeland Verdant",
  "Verdant EMS BACnet",
  "Online Connection Kit"
 ],
 "equipment_type": "Networked room thermostat (energy management)",
 "applies_to": "Verdant (Copeland) VX4 energy management thermostats on a 900 MHz mesh network, integrated through the Verdant Online Connection Kit.",
 "summary": "Verdant VX4 thermostats talk to each other over a proprietary 900 MHz mesh, and one Online Connection Kit puts the whole network on the building's BACnet network. Every room gets the same 15 objects; the object instance is a fixed base number per object plus the room number. The sheet does not name BACnet IP or MS/TP; its network drawing shows the kit on the building automation LAN.",
 "bacnet_transport": [],
 "firmware": null,
 "default_device_instance": null,
 "access_inferred": false,
 "notes": [
  "Instances shown are the printed base values. The sheet gives each room's instance as base + hex2dec(room number): read the room number as a hexadecimal number, convert it to decimal and add it to the base. For example, room 101 is 0x101 = 257, so its Room Temperature is AV 500257. The sheet gives no worked example, so confirm against a discovered device.",
  "Cool Setpoint and Heat Setpoint are read-only; the writable setpoint is Guest Setpoint (60-90 °F).",
  "Fan Speed uses different codes for reading and writing (see states).",
  "Thermostat Status combined with System Mode gives the heating/cooling state; values 2 and 3 mean the room is in setback (unoccupied).",
  "The spec sheet does not state the BACnet transport; the network drawing places the Online Connection Kit on the building automation LAN."
 ],
 "source": {
  "title": "VX4 Energy Management Thermostats with BACnet Integration (spec sheet)",
  "doc_number": "VX4-XX-XXX",
  "revision_date": "2024-10",
  "url": "https://verdant.copeland.com/wp-content/uploads/2024/10/VX4-XXX-BACnet-Spec-Sheet-1024.pdf"
 },
 "integration": {
  "summary": "The sheet lists 15 objects per room, reached through the Online Connection Kit; work out each room's instances from the base numbers plus the room number read as hex. Write System Mode, Fan Speed and Guest Setpoint per room; read Room Temperature, Occupancy State, Thermostat Status and the setpoints. Watch Gateway Online Status for loss of the thermostat network.",
  "minimum_points": [
   {
    "ref": "AV 1000000",
    "name": "System Mode",
    "why": "Room mode: 0 auto, 1 heat, 2 cool"
   },
   {
    "ref": "AV 1100000",
    "name": "Fan Speed",
    "why": "Fan command; write codes differ from read codes"
   },
   {
    "ref": "AV 300000",
    "name": "Guest Setpoint",
    "why": "Writable room setpoint, 60-90 °F"
   },
   {
    "ref": "AV 400000",
    "name": "Thermostat Status",
    "why": "On, off or in setback (unoccupied)"
   },
   {
    "ref": "AV 500000",
    "name": "Room Temperature",
    "why": "Room temperature, °F"
   },
   {
    "ref": "BV 700000",
    "name": "Occupancy State",
    "why": "Room occupied or not"
   },
   {
    "ref": "AV 100000",
    "name": "Cool Setpoint",
    "why": "Cooling setpoint in effect"
   },
   {
    "ref": "AV 200000",
    "name": "Heat Setpoint",
    "why": "Heating setpoint in effect"
   },
   {
    "ref": "BV 1400000",
    "name": "Gateway Online Status",
    "why": "0 = offline, 1 = online"
   }
  ],
  "enable": null,
  "heartbeat": null,
  "remote_sensors": null,
  "setup": [
   "One Online Connection Kit links the 900 MHz thermostat mesh to the BACnet network; no Wi-Fi is needed at the rooms.",
   "Object instance = printed base + room number read as hex and converted to decimal (room 101 -> 257, so Room Temperature is AV 500257)."
  ],
  "gotchas": [
   "Fan Speed reads back 0-3 but must be written with 0, 1, 85, 170 or 254.",
   "Cool Setpoint and Heat Setpoint are read-only; use Guest Setpoint to change the room setpoint.",
   "Min/Max Setpoint Limit and Heat EQP Lockout are configuration values; don't write them cyclically."
  ]
 },
 "points": [
  {
   "type": "AV",
   "instance": 100000,
   "name": "Cool Setpoint",
   "description": "Cooling setpoint of the room; base + room no.",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 200000,
   "name": "Heat Setpoint",
   "description": "Heating setpoint of the room; base + room no.",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 300000,
   "name": "Guest Setpoint",
   "description": "Guest setpoint of the room, 60-90; base + room no.",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 400000,
   "name": "Thermostat Status",
   "description": "Heat/cool on, off or in setback; base + room no.",
   "units": "",
   "access": "W",
   "states": "0 = TSTAT_STATE_REGULAR_ON, 1 = TSTAT_STATE_REGULAR_OFF, 2 = TSTAT_STATE_INSETBACK_ON, 3 = TSTAT_STATE_INSETBACK_OFF"
  },
  {
   "type": "AV",
   "instance": 500000,
   "name": "Room Temperature",
   "description": "Room temperature; base + room no.",
   "units": "°F",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 600000,
   "name": "Room Humidity",
   "description": "Room relative humidity; base + room no.",
   "units": "%RH",
   "access": "R",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 700000,
   "name": "Occupancy State",
   "description": "Room occupancy state; base + room no.",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 800000,
   "name": "Battery Percentage",
   "description": "Thermostat battery level, 0-100; base + room no.",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 900000,
   "name": "Last Updated Timestamp",
   "description": "Last packet received from the room; base + room no.",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 1000000,
   "name": "System Mode",
   "description": "System mode of the room; base + room no.",
   "units": "",
   "access": "W",
   "states": "0 = SYSTEM_AUTO, 1 = SYSTEM_HEAT, 2 = SYSTEM_COOL"
  },
  {
   "type": "AV",
   "instance": 1100000,
   "name": "Fan Speed",
   "description": "Fan mode and speed; base + room no.",
   "units": "",
   "access": "W",
   "states": "Read: 0 = Fan Off, 1 = Fan Low, 2 = Fan Low and High, 3 = Fan High; Write: 0 = FAN_AUTO, 1 = FAN_OFF, 85 = FAN_LOW, 170 = FAN_MEDIUM, 254 = FAN_HIGH, 255 = FAN_INVALID"
  },
  {
   "type": "AV",
   "instance": 1200000,
   "name": "Minimum Setpoint Limit",
   "description": "Lowest setpoint allowed in the room; base + room no.",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 1300000,
   "name": "Maximum setpoint limit",
   "description": "Highest setpoint allowed in the room; base + room no.",
   "units": "°F",
   "access": "W",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 1400000,
   "name": "Gateway Online Status",
   "description": "Gateway online status; base + room no.",
   "units": "",
   "access": "R",
   "states": "0 = Offline, 1 = Online"
  },
  {
   "type": "AV",
   "instance": 1500000,
   "name": "Heat EQP Lockout",
   "description": "Heat equipment lockout for the room; base + room no.",
   "units": "",
   "access": "W",
   "states": "0 = No Lockout, 1 = Electric Lockout, 2 = Compressor Lockout"
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/verdant/vx4-bacnet-integration",
 "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"
}
