{
 "manufacturer": "GPS Air",
 "manufacturer_slug": "gps-air",
 "model": "GridSet BACnet Gateway (smartIAQ Hub-4 Pro)",
 "model_slug": "gridset-bacnet-gateway",
 "aliases": [
  "GridSet",
  "smartIAQ GridSet",
  "smartIAQ Hub-4 Pro",
  "Hub-4 Pro BACnet",
  "GridSet Comms Gateway",
  "GPS-050-57"
 ],
 "equipment_type": "Indoor air quality sensor and ionizer gateway",
 "applies_to": "GPS Air smartIAQ GridSet devices (IAQ sensors, ionizers, fan units) connected to the four ports of a smartIAQ Hub-4 Pro BACnet gateway.",
 "summary": "The smartIAQ Hub-4 Pro gateway exposes the GPS Air devices on its four ports as BACnet MS/TP objects. Each port gets up to 32 objects: air-quality readings, filter life, fan airflow and mode, occupancy and ionizer enable. Objects are created when a device first reports, and only for the sensors and actuators that device has. This file lists port 1; ports 2-4 repeat the same objects at 2000, 3000 and 4000.",
 "bacnet_transport": [
  "BACnet MS/TP"
 ],
 "firmware": null,
 "default_device_instance": null,
 "access_inferred": false,
 "notes": [
  "Instance = port x 1000 + offset, and object names are 'Port <N> <name>'. This file lists port 1 (1001-1061); ports 2, 3 and 4 use 2001-2061, 3001-3061 and 4001-4061 with the same offsets.",
  "Objects are created dynamically when a device first reports on a port. Points with a capability gate (shown in the descriptions) only appear if the device has that sensor or actuator.",
  "The points table marks every object except CO2 Occ Threshold as not writable, but the manual's Writable Objects section says Fan Duty Override, Fan CFM Set point, Fan Mode Command and Ionizer Enable also accept writes; they are listed here as writable.",
  "Motor Run State is printed with the same 1=Auto, 2=Manual states as Fan Mode; Motor Fault has no state text in the table.",
  "All objects support COV. Sensor AIs (offsets 1-12) report COMMUNICATION_FAILURE reliability when the port is down or the sensor data is stale."
 ],
 "source": {
  "title": "smartIAQ GridSet BACnet Integration Guide",
  "doc_number": "GPS-050-57-R22-GSOL",
  "revision_date": "R22",
  "url": "https://gpsair.com/hubfs/gpsair-gridset-bacnet-objects-gps-050-57-R22-GSOL.pdf"
 },
 "integration": {
  "summary": "Set the gateway's device instance, MS/TP MAC and baud in Bus Manager mode, put the jumpers back, then discover it on the MS/TP trunk. Each connected device shows up as a block of objects at port x 1000. Read the air-quality AIs and filter status, and write fan mode, airflow or duty and the ionizer enable where the device supports them. Check Device Online per port.",
  "minimum_points": [
   {
    "ref": "BV 1050",
    "name": "Port 1 Ionizer Enable",
    "why": "Ionizer on/off (Active = enabled)"
   },
   {
    "ref": "MV 1036",
    "name": "Port 1 Fan Mode Command",
    "why": "Fan mode, 1 = auto, 2 = manual"
   },
   {
    "ref": "AV 1034",
    "name": "Port 1 Fan CFM Set point",
    "why": "Target fan airflow, CFM"
   },
   {
    "ref": "AI 1001",
    "name": "Port 1 Zone Temp",
    "why": "Zone temperature, °C"
   },
   {
    "ref": "AI 1002",
    "name": "Port 1 Humidity",
    "why": "Relative humidity, %RH"
   },
   {
    "ref": "AI 1003",
    "name": "Port 1 CO2",
    "why": "CO2, ppm"
   },
   {
    "ref": "AI 1004",
    "name": "Port 1 PM2.5",
    "why": "PM2.5 particulates, µg/m³"
   },
   {
    "ref": "BI 1024",
    "name": "Port 1 Filter Warning",
    "why": "Filter needs attention soon"
   },
   {
    "ref": "BI 1060",
    "name": "Port 1 Device Online",
    "why": "Device on this port is communicating"
   }
  ],
  "enable": "No separate enable point. Objects appear once a device reports on a port; ionizer output is switched with Ionizer Enable (BV x050).",
  "heartbeat": null,
  "remote_sensors": null,
  "setup": [
   "Settings are changed in Bus Manager mode: power down, move the jumper from the Spare pins to the Modbus pins, power up and connect point-to-point over RS-485 at 115200 8N1 with a terminal program.",
   "Bus Manager sets device instance, MS/TP MAC, baud, Max_Master, device name, location, description and password; option 11 saves.",
   "The manual's example Bus Manager screen shows device instance 1000, MAC 1, 38400 baud and Max_Master 127.",
   "Disconnect the gateway from the live BACnet trunk while in Bus Manager mode, and restore the jumpers afterwards.",
   "Factory reset (option 13, type RESET) clears a lost password and restores all defaults."
  ],
  "gotchas": [
   "Objects only exist for the sensors a device actually has, so object counts differ from port to port.",
   "COV subscriptions are limited to 128 in total and 16 subscriber addresses.",
   "Writable AVs hold a BMS write as pending until the device accepts it, so the reported value may lag."
  ]
 },
 "points": [
  {
   "type": "AI",
   "instance": 1001,
   "name": "Port 1 Zone Temp",
   "description": "Zone temperature (only if device has temp_sensor)",
   "units": "°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1002,
   "name": "Port 1 Humidity",
   "description": "Relative humidity (only if device has humidity_sensor)",
   "units": "%RH",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1003,
   "name": "Port 1 CO2",
   "description": "CO2 level (only if device has co2_sensor)",
   "units": "ppm",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1004,
   "name": "Port 1 PM2.5",
   "description": "Particulate PM2.5 (only if device has particulate_sensor)",
   "units": "µg/m³",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1005,
   "name": "Port 1 VOC",
   "description": "Volatile organic compounds (only if device has voc_sensor)",
   "units": "µg/m³",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1006,
   "name": "Port 1 NOx",
   "description": "NOx index (only if device has voc_sensor)",
   "units": "index",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1007,
   "name": "Port 1 HCHO (formaldehyde)",
   "description": "Formaldehyde (only if device has hcho_sensor)",
   "units": "µg/m³",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1008,
   "name": "Port 1 Pressure",
   "description": "Barometric pressure (only if device has pressure_sensor)",
   "units": "hPa",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1009,
   "name": "Port 1 Lux",
   "description": "Light level (only if device has light_sensor)",
   "units": "lux",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1010,
   "name": "Port 1 PM1.0",
   "description": "Particulate PM1.0 (only if device has particulate_sensor)",
   "units": "µg/m³",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1011,
   "name": "Port 1 PM4.0",
   "description": "Particulate PM4.0 (only if device has particulate_sensor)",
   "units": "µg/m³",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1012,
   "name": "Port 1 PM10",
   "description": "Particulate PM10",
   "units": "µg/m³",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1020,
   "name": "Port 1 Filter Life",
   "description": "Remaining filter life",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1021,
   "name": "Port 1 Filter Hours Left",
   "description": "Estimated filter hours remaining",
   "units": "hours",
   "access": "R",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 1022,
   "name": "Port 1 Filter Limiter",
   "description": "What is limiting filter life",
   "units": "",
   "access": "R",
   "states": "1=None, 2=Time, 3=TVOC, 4=HCHO"
  },
  {
   "type": "MV",
   "instance": 1023,
   "name": "Port 1 Filter Confidence",
   "description": "Confidence of the filter-life estimate",
   "units": "",
   "access": "R",
   "states": "1=Low, 2=Medium, 3=High"
  },
  {
   "type": "BI",
   "instance": 1024,
   "name": "Port 1 Filter Warning",
   "description": "Filter warning",
   "units": "",
   "access": "R",
   "states": "Active=Warning, Inactive=Normal"
  },
  {
   "type": "BI",
   "instance": 1025,
   "name": "Port 1 Filter Critical",
   "description": "Filter critical",
   "units": "",
   "access": "R",
   "states": "Active=Warning, Inactive=Normal"
  },
  {
   "type": "AI",
   "instance": 1031,
   "name": "Port 1 Fan CFM",
   "description": "Measured fan airflow",
   "units": "CFM",
   "access": "R",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 1032,
   "name": "Port 1 Fan Mode",
   "description": "Fan mode in use",
   "units": "",
   "access": "R",
   "states": "1=Auto, 2=Manual"
  },
  {
   "type": "AV",
   "instance": 1033,
   "name": "Port 1 Fan Duty Override",
   "description": "Fan duty override, 0-100 %",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 1034,
   "name": "Port 1 Fan CFM Set point",
   "description": "Target airflow",
   "units": "CFM",
   "access": "W",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 1035,
   "name": "Port 1 Fan Inhibited",
   "description": "Fan inhibited",
   "units": "",
   "access": "R",
   "states": "Active=Inhibited, Inactive=Normal"
  },
  {
   "type": "MV",
   "instance": 1036,
   "name": "Port 1 Fan Mode Command",
   "description": "Fan mode command",
   "units": "",
   "access": "W",
   "states": "1=Auto, 2=Manual"
  },
  {
   "type": "MV",
   "instance": 1037,
   "name": "Port 1 Motor Run State",
   "description": "Motor run state (only if device has motor)",
   "units": "",
   "access": "R",
   "states": "1=Auto, 2=Manual"
  },
  {
   "type": "MV",
   "instance": 1038,
   "name": "Port 1 Motor Fault",
   "description": "Motor fault state (only if device has motor)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 1039,
   "name": "Port 1 Fan Applied Duty",
   "description": "Fan duty actually applied",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 1040,
   "name": "Port 1 Zone Occupied",
   "description": "Zone occupancy",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 1041,
   "name": "Port 1 CO2 Occ Threshold",
   "description": "CO2 level that marks the zone occupied (only if device has co2_sensor)",
   "units": "ppm",
   "access": "W",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 1050,
   "name": "Port 1 Ionizer Enable",
   "description": "Ionizer enable (only if device has ionizer)",
   "units": "",
   "access": "W",
   "states": "Active=Enabled, Inactive=Disabled"
  },
  {
   "type": "BI",
   "instance": 1060,
   "name": "Port 1 Device Online",
   "description": "Port device communicating",
   "units": "",
   "access": "R",
   "states": "Active=Online, Inactive=Offline"
  },
  {
   "type": "AI",
   "instance": 1061,
   "name": "Port 1 Device Uptime",
   "description": "Connected device uptime",
   "units": "seconds",
   "access": "R",
   "states": ""
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/gps-air/gridset-bacnet-gateway",
 "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"
}
