{
 "manufacturer": "Price Industries",
 "manufacturer_slug": "price-industries",
 "model": "PIC-SD Price Intelligent Controller - SD",
 "model_slug": "pic-sd",
 "aliases": [
  "PIC-SD",
  "PIC SD",
  "Price Intelligent Controller SD"
 ],
 "equipment_type": "Single-duct VAV terminal controller",
 "applies_to": "Price PIC-SD controllers on single-duct VAV terminals.",
 "summary": "The PIC-SD is the single-duct VAV member of Price's PIC family, with BACnet MS/TP and VAV airflow sensing built in. Its object list is shorter than the PIC's (two analog and two binary outputs, two spare voltage inputs). Instance numbers differ from the PIC for the same functions, so don't reuse a PIC template unchanged.",
 "bacnet_transport": [
  "BACnet MS/TP"
 ],
 "firmware": "v3.30.1",
 "default_device_instance": 101,
 "notes": [
  "The source prints AO1 and AO2 a second time against Airflow Target and Room Setpoint - High Limit. AO 1/AO 2 are already the analog outputs, the setpoint ranges refer to AV2/AV3 and the PIC lists the same points as AV 1/AV 2, so they are listed here as AV 1 and AV 2. Check on the device.",
  "Only one low-temperature alarm threshold is listed (AV 24, Level 2); there is no Level 3 low-temperature threshold object.",
  "MV 2 Occupancy uses 1 = Occupied, 2 = Unoccupied, the reverse of the PIC.",
  "AI 6 and AI 7 (named AI1 and AI2) are the spare voltage inputs.",
  "Same family as the PIC (Price Intelligent Controller) but a separate, shorter object list."
 ],
 "source": {
  "title": "BACnet Points List - PIC-SD",
  "doc_number": null,
  "revision_date": "REV 1",
  "url": "https://legacy.priceindustries.com/content/uploads/assets/literature/documents---bacnet/pic-sd---bacnet-points-list.pdf"
 },
 "points": [
  {
   "type": "AI",
   "instance": 1,
   "name": "Room Temperature",
   "description": "Current Room Temperature",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 2,
   "name": "Airflow",
   "description": "Current Airflow",
   "units": "cfm or L/s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 3,
   "name": "Supply Air Temperature",
   "description": "Current Supply Air Temperature",
   "units": "°F/°C",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 4,
   "name": "CO2 Reading",
   "description": "Current CO2 at the T-Stat",
   "units": "ppm",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 5,
   "name": "Humidity Reading",
   "description": "Current Relative Humidity at the T-Stat",
   "units": "%RH",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 6,
   "name": "AI1",
   "description": "Current Voltage at AI6",
   "units": "V",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 7,
   "name": "AI2",
   "description": "Current Voltage at AI7",
   "units": "V",
   "access": "R",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 1,
   "name": "Contact Closure",
   "description": "Contact input; function set in the controller Input menu",
   "units": "",
   "access": "R",
   "states": "Open/Closed"
  },
  {
   "type": "AO",
   "instance": 1,
   "name": "Analog Output 1 (ECM)",
   "description": "Analog output; function set in the controller Output menu",
   "units": "V",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 2,
   "name": "Analog Output 2 (Heat)",
   "description": "Analog output; function set in the controller Output menu",
   "units": "V",
   "access": "W",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 3,
   "name": "Damper Position",
   "description": "Analog output; function set in the controller Output menu",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "BO",
   "instance": 1,
   "name": "Binary Output 1 (Heat1)",
   "description": "Binary output; function set in the controller Output menu",
   "units": "",
   "access": "W",
   "states": "Off/On"
  },
  {
   "type": "BO",
   "instance": 2,
   "name": "Binary Output 2 (Heat 2)",
   "description": "Binary output; function set in the controller Output menu",
   "units": "",
   "access": "W",
   "states": "Off/On"
  },
  {
   "type": "AV",
   "instance": 1,
   "name": "Airflow Target",
   "description": "Supply airflow target the controller is chasing",
   "units": "cfm or L/s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 2,
   "name": "Room Setpoint - High Limit",
   "description": "Highest user-adjustable room setpoint",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 3,
   "name": "Room Setpoint - Low Limit",
   "description": "Lowest user-adjustable room setpoint",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 4,
   "name": "Night Heat Setpoint",
   "description": "Unoccupied heating setpoint",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 5,
   "name": "Night Cool Setpoint",
   "description": "Unoccupied cooling setpoint",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 6,
   "name": "Room Setpoint",
   "description": "Current room setpoint",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 7,
   "name": "Unoccupied (Night) Damper Position",
   "description": "Damper position for unoccupied periods",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 8,
   "name": "VAV Neutral Flow",
   "description": "Airflow target with neutral supply air (flow response chart)",
   "units": "cfm or L/s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 9,
   "name": "VAV Cool Min Flow",
   "description": "Minimum cooling airflow (upper limit AV10)",
   "units": "cfm or L/s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 10,
   "name": "VAV Cool Max Flow",
   "description": "Maximum cooling airflow (lower limit AV9)",
   "units": "cfm or L/s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 11,
   "name": "VAV Heat Min Flow",
   "description": "Minimum heating airflow (upper limit AV12)",
   "units": "cfm or L/s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 12,
   "name": "VAV Heat Max Flow",
   "description": "Maximum heating airflow (lower limit AV11)",
   "units": "cfm or L/s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 13,
   "name": "Ping",
   "description": "Write n to make the thermostat beep n times",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 14,
   "name": "Controller Status",
   "description": "Room load (PI): + heating, 0 deadband, - cooling",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 15,
   "name": "Proportional Band",
   "description": "Band over which the PI load goes 1-100 %",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 16,
   "name": "Day Differential",
   "description": "Band either side of setpoint treated as satisfied",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 17,
   "name": "Commissioned",
   "description": "Commissioning status: 0 = not commissioned, 1 = commissioned",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 22,
   "name": "High-Temperature Alarm Threshold - Level 3",
   "description": "Level 3 high temperature alarm threshold delta",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 23,
   "name": "High-Temperature Alarm Threshold - Level 2",
   "description": "Level 2 high temperature alarm threshold delta",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 24,
   "name": "Low-Temperature Alarm Threshold - Level 2",
   "description": "Level 2 low temperature alarm threshold delta",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 25,
   "name": "Airflow Alarm Threshold - Level 3",
   "description": "Level 3 low airflow alarm threshold delta",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 26,
   "name": "Airflow Alarm Threshold - Level 2",
   "description": "Level 2 low airflow alarm threshold delta",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 27,
   "name": "Temperature Alarm Time Threshold",
   "description": "Time beyond threshold delta before a temperature alarm",
   "units": "min",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 28,
   "name": "Airflow Alarm Time Threshold",
   "description": "Time beyond airflow delta before an airflow alarm",
   "units": "min",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 29,
   "name": "Device Instance",
   "description": "BACnet device instance",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 30,
   "name": "MAC",
   "description": "BACnet MAC address",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 31,
   "name": "K Factor",
   "description": "Airflow that gives 1 in. w.c. of pressure",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 32,
   "name": "Room Temperature Offset",
   "description": "Offset added to the room temperature reading",
   "units": "°F/°C",
   "access": "W",
   "states": ""
  },
  {
   "type": "MV",
   "instance": 1,
   "name": "Damper Override",
   "description": "Damper override command",
   "units": "",
   "access": "W",
   "states": "1=Disabled (No Override), 2=Go to Cool Min, 3=Go to Cool Max, 4=Go to Heat Min, 5=Go to Heat Max, 6=Go to Neutral, 7=Go to Full Open, 8=Go to Full Closed"
  },
  {
   "type": "MV",
   "instance": 2,
   "name": "Occupancy",
   "description": "Current occupancy state",
   "units": "",
   "access": "R",
   "states": "1=Occupied, 2=Unoccupied"
  },
  {
   "type": "MV",
   "instance": 3,
   "name": "Occupancy Source",
   "description": "What set the current occupancy",
   "units": "",
   "access": "R",
   "states": "1=Occupied Default Mode, 2=Occupied from Airflow, 3=Occupied from Contact Closure, 4=Occupied from T-Stat Button, 5=Occupied from Motion Sensor, 6=Occupied from Network Override, 7=Occupied from Local Override, 8=Unoccupied from Airflow, 9=Unoccupied from Contact Closure, 10=Unoccupied from T-Stat Button, 11=Unoccupied from Motion Sensor, 12=Unoccupied from Network Override, 13=Unoccupied from Local Override"
  },
  {
   "type": "MV",
   "instance": 4,
   "name": "Occupancy Override",
   "description": "Network occupancy override",
   "units": "",
   "access": "W",
   "states": "1=No Override, 2=Force Unoccupied, 3=Force Occupied"
  },
  {
   "type": "MV",
   "instance": 5,
   "name": "Binary Fan Type",
   "description": "Fan output sequence",
   "units": "",
   "access": "W",
   "states": "1=No Fan, 2=Day Heat/Night Heat, 3=Day Constant/Night Heat, 4=Constant, 5=Day Constant/Night Demand, 6=Day Demand/Night Demand"
  },
  {
   "type": "MV",
   "instance": 6,
   "name": "Control Mode",
   "description": "Allowed heating/cooling mode",
   "units": "",
   "access": "W",
   "states": "1=Automatic, 2=Cooling Only, 3=Heating Only"
  },
  {
   "type": "MV",
   "instance": 7,
   "name": "Controller State",
   "description": "Current mode: cooling, heating or deadband",
   "units": "",
   "access": "R",
   "states": "1=Cooling, 2=Heating, 3=Deadband"
  },
  {
   "type": "MV",
   "instance": 8,
   "name": "High Temperature Alarm",
   "description": "High room temperature alarm level",
   "units": "",
   "access": "R",
   "states": "1=Level 1, 2=Level 2, 3=Level 3, 4=Level 4, 5=No Alarm"
  },
  {
   "type": "MV",
   "instance": 9,
   "name": "Low Temperature Alarm",
   "description": "Low room temperature alarm level",
   "units": "",
   "access": "R",
   "states": "1=Level 1, 2=Level 2, 3=Level 3, 4=Level 4, 5=No Alarm"
  },
  {
   "type": "MV",
   "instance": 10,
   "name": "Low Airflow Alarm",
   "description": "Low airflow alarm level",
   "units": "",
   "access": "R",
   "states": "1=Level 1, 2=Level 2, 3=Level 3, 4=Level 4, 5=No Alarm"
  },
  {
   "type": "MV",
   "instance": 11,
   "name": "Duct Size",
   "description": "Inlet duct size",
   "units": "",
   "access": "W",
   "states": "1=4 inches, 2=5 inches, 3=5 inches, 4=7 inches, 5=8 inches, 6=9 inches, 7=10 inches, 8=12 inches, 9=14 inches, 10=16 inches, 11=24x16 inches, 12=9 inch low profile, 13=10 inch low profile, 14=12 inch low profile, 15=14 inch low profile, 16=16 inch low profile"
  },
  {
   "type": "MV",
   "instance": 12,
   "name": "Temperature Units",
   "description": "Display units",
   "units": "",
   "access": "W",
   "states": "1=Fahrenheit, 2=Celsius"
  },
  {
   "type": "MV",
   "instance": 13,
   "name": "Unoccupied Alarms",
   "description": "Alarms active during unoccupied periods",
   "units": "",
   "access": "W",
   "states": "1=Disabled, 2=Enabled"
  },
  {
   "type": "MV",
   "instance": 14,
   "name": "MAC/DI Link",
   "description": "Device instance linked to the MAC address",
   "units": "",
   "access": "W",
   "states": "1=Unlinked, 2=Linked"
  }
 ],
 "integration": {
  "summary": "Set a unique MAC and device instance at the thermostat, set the segment baud (Price default 76800), then map the occupancy override, room setpoint, room temperature, airflow and the alarm-level MVs. The controller runs its own airflow and reheat sequence; the BMS mostly adjusts setpoints and occupancy.",
  "minimum_points": [
   {
    "ref": "MV 4",
    "name": "Occupancy Override",
    "why": "Network occupancy: 2 = force unocc, 3 = force occ"
   },
   {
    "ref": "AV 6",
    "name": "Room Setpoint",
    "why": "Occupied room setpoint"
   },
   {
    "ref": "MV 2",
    "name": "Occupancy",
    "why": "Current occupancy (1 = Occupied, 2 = Unoccupied)"
   },
   {
    "ref": "MV 7",
    "name": "Controller State",
    "why": "Cooling, heating or deadband"
   },
   {
    "ref": "AI 1",
    "name": "Room Temperature",
    "why": "Room temperature"
   },
   {
    "ref": "AI 2",
    "name": "Airflow",
    "why": "Measured airflow"
   },
   {
    "ref": "AV 1",
    "name": "Airflow Target",
    "why": "Airflow target being controlled to"
   },
   {
    "ref": "MV 8",
    "name": "High Temperature Alarm",
    "why": "High room temp alarm level (5 = no alarm)"
   },
   {
    "ref": "MV 9",
    "name": "Low Temperature Alarm",
    "why": "Low room temp alarm level (5 = no alarm)"
   },
   {
    "ref": "MV 10",
    "name": "Low Airflow Alarm",
    "why": "Low airflow alarm level (5 = no alarm)"
   }
  ],
  "enable": "No enable point. Occupancy comes from airflow, a contact closure, the thermostat button or a motion sensor; the BMS can force it with MV 4 Occupancy Override (1 = No Override, 2 = Force Unoccupied, 3 = Force Occupied). MV 3 shows what set the current occupancy.",
  "heartbeat": null,
  "remote_sensors": null,
  "setup": [
   "BACnet MS/TP is built into the PIC-SD.",
   "Price's PIC manual gives 76800 as the default baud for Price products (9600, 19200 and 38400 also available). All devices on a segment must match.",
   "MAC address (AV 30, default 1, range 1-127) and device instance (AV 29, default 101) are writable objects.",
   "MV 14 MAC/DI Link (default Linked) ties the device instance to the MAC address."
  ],
  "gotchas": [
   "Alarm MVs report a level (1-4) or 5 = No Alarm; levels follow the AV alarm-threshold settings.",
   "Room setpoint writes are limited by the high/low limit AVs.",
   "Temperature objects follow the Temperature Units setting (°F or °C)."
  ]
 },
 "page": "https://easybacnet.com/bacnet-points-lists/price-industries/pic-sd",
 "note": "Re-typed from the manufacturer's public documentation (see source). Point availability varies by firmware and options; verify against the live device."
}
