{
 "manufacturer": "Price Industries",
 "manufacturer_slug": "price-industries",
 "model": "PRTU Price Rooftop Unit Controller",
 "model_slug": "prtu",
 "aliases": [
  "PRTU",
  "Price Rooftop Unit Controller",
  "PRTU-STAT"
 ],
 "equipment_type": "Rooftop unit controller (zoning / voting)",
 "applies_to": "Packaged single- and multi-stage rooftop units (about 2-30 tons) run by a Price PRTU, alone or polling Price zone controllers.",
 "summary": "The PRTU is a Price controller that stages a packaged rooftop unit (up to 4 cooling and 4 heating stages plus fan) from its own thermostat or from zone demand. In networked mode it polls up to 30 Price PIC controllers or Prodigy diffusers over BACnet MS/TP every 3 minutes and picks the rooftop mode by voting; if polling fails it drops to standalone. A BMS reaches it on the same BACnet MS/TP trunk as the zone controllers.",
 "bacnet_transport": [
  "BACnet MS/TP"
 ],
 "firmware": "v1.8.0",
 "default_device_instance": 100,
 "notes": [
  "AV 4 and AV 5 are both printed as \"Day Minimum Setpoint\"; by their defaults (65°F and 80°F) and ranges AV 5 is the upper limit.",
  "The source prints AI0 for the AI10 spare input and A02 for AO2; listed here as AI 10 and AO 2.",
  "MV 6 has no name in the source (N/A, states One-Four).",
  "Reset counters (AV 34-41) and zone bit-flag words (AV 42-49) are marked for internal use; convert the flags to binary to read them per zone.",
  "Polled demands (AV 10-12) are the share of zones calling for cooling, heating or deadband."
 ],
 "source": {
  "title": "BACnet Points List - PRTU",
  "doc_number": null,
  "revision_date": "REV 0",
  "url": "https://legacy.priceindustries.com/content/uploads/assets/literature/documents---bacnet/prtu---bacnet-points-list.pdf"
 },
 "points": [
  {
   "type": "AI",
   "instance": 1,
   "name": "Discharge Air Temperature",
   "description": "Air temperature entering controlled space",
   "units": "°F/°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 2,
   "name": "Return Air Temperature",
   "description": "Air temperature leaving controlled space",
   "units": "°F/°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 3,
   "name": "Outside Air Temperature",
   "description": "Air temperature outside of the building",
   "units": "°F/°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 4,
   "name": "10K Thermistor Spare (AI4)",
   "description": "Spare temperature sensor",
   "units": "°F/°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 5,
   "name": "10K Thermistor Spare (AI5)",
   "description": "Spare temperature sensor",
   "units": "°F/°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 6,
   "name": "10K Thermistor Spare (AI6)",
   "description": "Spare temperature sensor",
   "units": "°F/°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 7,
   "name": "0-10VDC Spare (AI7)",
   "description": "Spare analog 0-10 VDC input",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 8,
   "name": "0-10VDC Spare (AI8)",
   "description": "Spare analog 0-10 VDC input",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 9,
   "name": "0-10VDC Spare (AI9)",
   "description": "Spare analog 0-10 VDC input",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 10,
   "name": "0-10VDC Spare (AI10)",
   "description": "Spare analog 0-10 VDC input",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 11,
   "name": "0-10VDC Spare (AI11)",
   "description": "Spare analog 0-10 VDC input",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 12,
   "name": "0-10VDC Spare (AI12)",
   "description": "Spare analog 0-10 VDC input",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 13,
   "name": "Thermostat Temperature",
   "description": "Temperature at the connected thermostat",
   "units": "°F/°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 1,
   "name": "Binary Input 1",
   "description": "Contact input; function set in the controller Input menu",
   "units": "",
   "access": "R",
   "states": "Open/Closed"
  },
  {
   "type": "BI",
   "instance": 2,
   "name": "Binary Input 2",
   "description": "Contact input; function set in the controller Input menu",
   "units": "",
   "access": "R",
   "states": "Open/Closed"
  },
  {
   "type": "AO",
   "instance": 1,
   "name": "Fan (AO1)",
   "description": "Analog controlled fan speed",
   "units": "V",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 2,
   "name": "Heat (AO2)",
   "description": "Analog controlled heat",
   "units": "V",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 3,
   "name": "Cool (AO3)",
   "description": "Analog controlled cooling",
   "units": "V",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 4,
   "name": "Demand (AO4)",
   "description": "Analog controlled demand",
   "units": "V",
   "access": "W",
   "states": ""
  },
  {
   "type": "BO",
   "instance": 1,
   "name": "Fan (BO1)",
   "description": "Fan on or off",
   "units": "",
   "access": "W",
   "states": "Off/On"
  },
  {
   "type": "BO",
   "instance": 2,
   "name": "Cool 1 (BO2)",
   "description": "Stage 1 cooling on or off",
   "units": "",
   "access": "W",
   "states": "Off/On"
  },
  {
   "type": "BO",
   "instance": 3,
   "name": "Cool 2 (BO3)",
   "description": "Stage 2 cooling on or off",
   "units": "",
   "access": "W",
   "states": "Off/On"
  },
  {
   "type": "BO",
   "instance": 4,
   "name": "Cool 3 (BO4)",
   "description": "Stage 3 cooling on or off",
   "units": "",
   "access": "W",
   "states": "Off/On"
  },
  {
   "type": "BO",
   "instance": 5,
   "name": "Cool 4 (BO5)",
   "description": "Stage 4 cooling on or off",
   "units": "",
   "access": "W",
   "states": "Off/On"
  },
  {
   "type": "BO",
   "instance": 6,
   "name": "Heat 1 (BO6)",
   "description": "Stage 1 heating on or off",
   "units": "",
   "access": "W",
   "states": "Off/On"
  },
  {
   "type": "BO",
   "instance": 7,
   "name": "Heat 2 (BO7)",
   "description": "Stage 2 heating on or off",
   "units": "",
   "access": "W",
   "states": "Off/On"
  },
  {
   "type": "BO",
   "instance": 8,
   "name": "Heat 3 (BO8)",
   "description": "Stage 3 heating on or off",
   "units": "",
   "access": "W",
   "states": "Off/On"
  },
  {
   "type": "BO",
   "instance": 9,
   "name": "Heat 4 (B09)",
   "description": "Stage 4 heating on or off",
   "units": "",
   "access": "W",
   "states": "Off/On"
  },
  {
   "type": "BO",
   "instance": 10,
   "name": "Cool Enable (BO10)",
   "description": "Enables cooling",
   "units": "",
   "access": "W",
   "states": "Off/On"
  },
  {
   "type": "AV",
   "instance": 1,
   "name": "Standalone Cooling Setpoint",
   "description": "Cooling setpoint when in standalone mode",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 2,
   "name": "Standalone Heating Setpoint",
   "description": "Heating setpoint when in standalone mode",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 3,
   "name": "Setpoint Difference",
   "description": "Heat/cool setpoint separation (standalone only)",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 4,
   "name": "Day Minimum Setpoint",
   "description": "Lowest user-adjustable setpoint (default 65°F)",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 5,
   "name": "Day Minimum Setpoint",
   "description": "Highest user-adjustable setpoint (default 80°F)",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 6,
   "name": "Night Cool Setpoint",
   "description": "Unoccupied cooling setpoint",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 7,
   "name": "Night Heat Setpoint",
   "description": "Unoccupied heating setpoint",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 8,
   "name": "Number of Zones",
   "description": "Number of zones polled by the PRTU (1-30)",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 9,
   "name": "Standalone PI",
   "description": "PI load when in standalone mode",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 10,
   "name": "Polled Cooling Demand",
   "description": "The demand for cooling from the polled zones",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 11,
   "name": "Polled Heating Demand",
   "description": "The demand for heating from the polled zones",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 12,
   "name": "Polled Deadband Demand",
   "description": "The demand for deadband from the polled zones",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 13,
   "name": "Stage Activate Delay",
   "description": "Delay between stages of heating or cooling when activating",
   "units": "min",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 14,
   "name": "Stage Deactivate Delay",
   "description": "Delay between stages of heating or cooling when deactivating",
   "units": "min",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 15,
   "name": "Mode Switchover Delay",
   "description": "Delay between switching between heating and cooling",
   "units": "min",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 16,
   "name": "Binary Output Minimum ON Time",
   "description": "Minimum amount of time that a binary output can be on",
   "units": "s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 17,
   "name": "Binary Output Minimum OFF Time",
   "description": "Minimum amount of time that a binary output can be off",
   "units": "s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 18,
   "name": "Standalone Proportional Band",
   "description": "PI proportional band in standalone mode",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 19,
   "name": "Standalone Day Differential",
   "description": "Satisfied band around the standalone setpoint",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 20,
   "name": "Polling Proportional Band",
   "description": "PI proportional band in polling mode",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 21,
   "name": "Polling Day Differential",
   "description": "Satisfied band around the polled setpoint",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 22,
   "name": "Motion Occupied Time",
   "description": "Length of time that motion will set the space to occupied",
   "units": "s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 23,
   "name": "Non-Majority Trip",
   "description": "Minority-zone demand that still gets served",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 24,
   "name": "DAT Hot Trip 1",
   "description": "1st Discharge Air Temperature hot trip point",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 25,
   "name": "DAT Hot Trip 2",
   "description": "2nd Discharge Air Temperature hot trip point",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 26,
   "name": "RAT Hot Trip 1",
   "description": "1st Return Air Temperature hot trip point",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 27,
   "name": "RAT Hot Trip 2",
   "description": "2nd Return Air Temperature hot trip point",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 28,
   "name": "DAT Cold Trip 1",
   "description": "1st Discharge Air Temperature cold trip point",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 29,
   "name": "DAT Cold Trip 2",
   "description": "2nd Discharge Air Temperature cold trip point",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 30,
   "name": "RAT Cold Trip 1",
   "description": "1st Return Air Temperature cold trip point",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 31,
   "name": "RAT Cold Trip 2",
   "description": "2nd Return Air Temperature cold trip point",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 32,
   "name": "Number of Zones Up",
   "description": "Zones being polled successfully (max = AV8)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 33,
   "name": "Ping",
   "description": "Write n to make the thermostat beep n times",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 34,
   "name": "POR Resets",
   "description": "Power out reset count (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 35,
   "name": "BOR Resets",
   "description": "Brown out reset count (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 36,
   "name": "WDT Resets",
   "description": "Watchdog timer reset count (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 37,
   "name": "SWR Resets",
   "description": "Software reset count (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 38,
   "name": "EXTR Resets",
   "description": "External power reset count (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 39,
   "name": "IOPWR Resets",
   "description": "Illegal opcode reset count (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 40,
   "name": "Trap Resets",
   "description": "Trap reset count (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 41,
   "name": "Total Resets",
   "description": "Total controller reset count (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 42,
   "name": "Zones Up (0-15) flag",
   "description": "Bit flags: zones 0-15 up (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 43,
   "name": "Zones Up (16-30) flag",
   "description": "Bit flags: zones 16-30 up (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 44,
   "name": "Deadband Zones (0-15) flag",
   "description": "Bit flags: zones 0-15 in deadband (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 45,
   "name": "Deadband Zones (16-30) flag",
   "description": "Bit flags: zones 16-30 in deadband (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 46,
   "name": "Cooling Zones (0-15) flag",
   "description": "Bit flags: zones 0-15 in cooling (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 47,
   "name": "Cooling Zones (16-30) flag",
   "description": "Bit flags: zones 16-30 in cooling (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 48,
   "name": "Heating Zones (0-15) flag",
   "description": "Bit flags: zones 0-15 in heating (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 49,
   "name": "Heating Zones (16-30) flag",
   "description": "Bit flags: zones 16-30 in heating (internal use)",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 1,
   "name": "Occupancy Status",
   "description": "Current occupancy state and source",
   "units": "",
   "access": "R",
   "states": "1=Schedule Unoccupied, 2=Schedule Occupied, 3=Override Unoccupied, 4=Override Occupied, 5=Motion Occupied"
  },
  {
   "type": "MV",
   "instance": 2,
   "name": "Strategy",
   "description": "Control strategy (standalone or a polling method)",
   "units": "",
   "access": "W",
   "states": "1=Standalone, 2=Average Polling, 3=Non-Majority Polling, 4=Energy Hog"
  },
  {
   "type": "MV",
   "instance": 3,
   "name": "Rooftop Status",
   "description": "Current rooftop mode: cooling, heating or deadband",
   "units": "",
   "access": "W",
   "states": "1=Cooling, 2=Heating, 3=Deadband"
  },
  {
   "type": "MV",
   "instance": 4,
   "name": "Pending Rooftop Status",
   "description": "Pending rooftop mode: cooling, heating or deadband",
   "units": "",
   "access": "W",
   "states": "1=Cooling, 2=Heating, 3=Deadband"
  },
  {
   "type": "MV",
   "instance": 5,
   "name": "Rooftop Mode",
   "description": "Rooftop operating mode command",
   "units": "",
   "access": "W",
   "states": "1=Auto, 2=Cool, 3=Heat, 4=Ventilation, 5=Off"
  },
  {
   "type": "MV",
   "instance": 6,
   "name": "N/A",
   "description": "Unlabelled multistate (One-Four)",
   "units": "",
   "access": "R",
   "states": "1=One, 2=Two, 3=Three, 4=Four"
  },
  {
   "type": "MV",
   "instance": 7,
   "name": "Temperature Units",
   "description": "Display units",
   "units": "",
   "access": "W",
   "states": "1=Fahrenheit, 2=Celsius"
  },
  {
   "type": "MV",
   "instance": 8,
   "name": "Fan Configuration",
   "description": "Fan operation: day/night, on demand or 24/7",
   "units": "",
   "access": "W",
   "states": "1=Day/Night, 2=On Demand, 3=24/7"
  },
  {
   "type": "MV",
   "instance": 9,
   "name": "Non-Majority Mode",
   "description": "Mode favoured in non-majority polling",
   "units": "",
   "access": "W",
   "states": "1=Cooling, 2=Heating, 3=Deadband"
  },
  {
   "type": "BV",
   "instance": 1,
   "name": "Motion Enable",
   "description": "Lets motion set the space occupied",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "BV",
   "instance": 2,
   "name": "Polling Failed to Standalone",
   "description": "Polling failed; PRTU running standalone",
   "units": "",
   "access": "W",
   "states": "True=polling failed, standalone; False=polling OK"
  }
 ],
 "integration": {
  "summary": "Give the PRTU a MAC in 101-126 and a unique device instance, keep 76800 baud, and map the rooftop mode command, the standalone setpoints, the rooftop status, discharge/return temperatures and the polling-failed flag. In networked mode the zone controllers drive the rooftop mode by voting, so the BMS mostly monitors.",
  "minimum_points": [
   {
    "ref": "MV 5",
    "name": "Rooftop Mode",
    "why": "Mode: 1 Auto, 2 Cool, 3 Heat, 4 Vent, 5 Off"
   },
   {
    "ref": "AV 1",
    "name": "Standalone Cooling Setpoint",
    "why": "Cooling setpoint in standalone mode"
   },
   {
    "ref": "AV 2",
    "name": "Standalone Heating Setpoint",
    "why": "Heating setpoint in standalone mode"
   },
   {
    "ref": "MV 3",
    "name": "Rooftop Status",
    "why": "Current mode: cooling, heating or deadband"
   },
   {
    "ref": "MV 1",
    "name": "Occupancy Status",
    "why": "Occupancy and its source (schedule, override, motion)"
   },
   {
    "ref": "AI 1",
    "name": "Discharge Air Temperature",
    "why": "Discharge air temperature"
   },
   {
    "ref": "AI 2",
    "name": "Return Air Temperature",
    "why": "Return air temperature"
   },
   {
    "ref": "AI 13",
    "name": "Thermostat Temperature",
    "why": "Temperature at the PRTU thermostat"
   },
   {
    "ref": "AV 32",
    "name": "Number of Zones Up",
    "why": "Zones answering polls (max = AV 8)"
   },
   {
    "ref": "BV 2",
    "name": "Polling Failed to Standalone",
    "why": "True = polling failed, running standalone"
   }
  ],
  "enable": "No separate enable point. MV 5 Rooftop Mode sets Auto, Cool, Heat, Ventilation or Off. Occupancy follows the PRTU's internal schedule (default 6am-8pm), the thermostat button or motion; there is no BMS occupancy command in the list. MV 2 Strategy selects standalone or a polling strategy.",
  "heartbeat": "None for the BMS. For zone polling: if the PRTU can't poll its zones (bad address or wiring) or more than half are offline, it falls back to standalone on its own thermostat and sets BV 2; it returns to networked mode by itself once polling works.",
  "remote_sensors": null,
  "setup": [
   "BACnet MS/TP. Defaults: MAC 101 (range 101-126, kept clear of zone controllers at 1-99), device instance 100, baud 76800.",
   "Device instance is built from tiers: tier 1 = MAC minus 100, tiers 2 and 3 set in the BACnet menu.",
   "Zone controllers need MACs starting at 1 (up to 30), unique instances (101-130 in Price's example) and the same 76800 baud; set Number of Zones (AV 8) to match.",
   "RS-485 termination is enabled from the PRTU BACnet menu; terminate only at the two ends of the trunk."
  ],
  "gotchas": [
   "Writing an I/O object (AI/AO/BO) is a BACnet override: the point stays forced until the override is released (its LED shows yellow).",
   "AV 4 and AV 5 share the printed name \"Day Minimum Setpoint\"; AV 5 is the upper limit.",
   "Temperature units (MV 7) must match the zone controllers or control may be wrong.",
   "In networked mode the PRTU uses the zones' temperatures and setpoints; the standalone setpoints apply only when standalone."
  ]
 },
 "page": "https://easybacnet.com/bacnet-points-lists/price-industries/prtu",
 "note": "Re-typed from the manufacturer's public documentation (see source). Point availability varies by firmware and options; verify against the live device."
}
