{
 "manufacturer": "Laars",
 "manufacturer_slug": "laars",
 "model": "Sola control - ProtoNode",
 "model_slug": "sola-protonode",
 "aliases": [
  "Sola",
  "Laars Sola",
  "ProtoNode FPC-N34",
  "ProtoNode FPC-N35",
  "FPC-N34-0701",
  "Laars ProtoNode"
 ],
 "equipment_type": "Boiler controller gateway",
 "applies_to": "Laars boilers with the Sola control, read through a ProtoNode FPC-N34 gateway (the document does not name the models).",
 "summary": "The ProtoNode reads the Sola control over Modbus RTU and serves 88 objects per boiler: 64 analog inputs and 24 analog values. The AIs cover sensors, firing rate, burner and CH/DHW status codes, pump status and lead-lag slave states; the AVs hold CH enable, CH, DHW and lead-lag setpoints, time-of-day setpoints and resettable counters.",
 "bacnet_transport": [
  "BACnet IP",
  "BACnet MS/TP"
 ],
 "firmware": null,
 "default_device_instance": "50000 + device Node-ID",
 "access_inferred": true,
 "notes": [
  "Each boiler on the ProtoNode's RS-485 bus shows up as its own BACnet device, and every one uses the same object IDs. The device instance is Node_Offset (default 50000) plus the boiler's Node-ID, so Node-ID 1 = device 50001.",
  "The mapping has no read/write column. AV, BV and MV objects are mapped to Metasys N2 outputs and LonWorks input variables, so they are listed here as writable; AI, BI and MI objects are read-only.",
  "No units or state texts are given. The LonWorks SNVT types in the source show which values are temperatures and which are hours.",
  "Runtime and cycle counters that span two Modbus registers (e.g. 40131/40132) are one object each.",
  "Weil-McLain publishes its own ProtoNode list for Sola boilers with different object numbers; use the list from the boiler's maker."
 ],
 "integration": {
  "summary": "Write CH Enable and the CH setpoint (or the lead-lag setpoint on a lead-lag master), then read back CH status, the burner sequence, outlet temperature, firing rate and the lockout code. The mapping gives no values or units, so check written values against the boiler display.",
  "minimum_points": [
   {
    "ref": "AV 76",
    "name": "CH Enable",
    "why": "Central heat enable"
   },
   {
    "ref": "AV 46",
    "name": "CH setpoint",
    "why": "Central heat water setpoint"
   },
   {
    "ref": "AV 50",
    "name": "Lead Lag setpoint",
    "why": "Setpoint for a lead-lag (cascade) master"
   },
   {
    "ref": "AI 19",
    "name": "CH status",
    "why": "Central heat status code"
   },
   {
    "ref": "AI 71",
    "name": "Burner Control Sequence",
    "why": "Burner sequence state"
   },
   {
    "ref": "AI 2",
    "name": "Outlet sensor",
    "why": "Outlet water temperature"
   },
   {
    "ref": "AI 3",
    "name": "Firing rate",
    "why": "Burner firing rate"
   },
   {
    "ref": "AI 16",
    "name": "Lockout code",
    "why": "Lockout status code"
   }
  ],
  "enable": "AV 76 CH Enable is the writable enable. The mapping does not give its values or say how it interacts with the boiler's own enable settings. AV 87 Burner Switch is also writable but is not explained.",
  "heartbeat": null,
  "remote_sensors": null,
  "setup": [
   "Device instance = Node_Offset + boiler Node-ID. Node_Offset defaults to 50000 and is changed in the ProtoNode web configurator; Node-IDs must be unique, 1-255.",
   "Boiler to ProtoNode: Modbus RTU, 38400 baud, 8 data bits, no parity, 1 stop bit.",
   "Default ProtoNode IP address 192.168.1.24, mask 255.255.255.0. Choose BACnet IP or BACnet MS/TP with the Protocol Selector, then add one profile per device with its Node-ID.",
   "With more than one device on a ProtoNode, set BACnet Virtual Server Nodes to Yes. For BACnet MS/TP also set MAC address, baud rate and Max Master.",
   "Two or more ProtoNodes on the same subnet need different BACnet Network Numbers (default 50).",
   "A ProtoNode handles 1,500 registers in total; this profile uses 88 per device."
  ],
  "gotchas": [
   "No units or state texts are given; CH status, burner sequence and lockout codes must be decoded with the Sola documentation.",
   "AV 85/86 Password Reg 1/2 are writable but not explained in the mapping.",
   "Counters (burner run time, pump and burner cycle counts) are AVs, so the BMS can overwrite them."
  ]
 },
 "source": {
  "title": "Vendor Protocol Mapping (LAARS Vendor Mappings for the ProtoNode FPC-N34 / FPC-N35)",
  "doc_number": "4404",
  "revision_date": "Document Revision 14.B, October 2020",
  "url": "https://www.laars.com/uploads/products/4404.pdf"
 },
 "points": [
  {
   "type": "AI",
   "instance": 1,
   "name": "Demand source",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 2,
   "name": "Outlet sensor",
   "description": "Temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 3,
   "name": "Firing rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 4,
   "name": "Fan speed",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 5,
   "name": "Flame signal",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 6,
   "name": "Inlet sensor",
   "description": "Temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 7,
   "name": "DHW sensor",
   "description": "Temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 8,
   "name": "S5 sensor",
   "description": "Temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 9,
   "name": "Stack sensor",
   "description": "Temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 10,
   "name": "4 - 20 mA remote ctl input",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 11,
   "name": "Active CH setpoint",
   "description": "Temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 12,
   "name": "Active DHW setpoint",
   "description": "Temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 13,
   "name": "Active LL setpoint",
   "description": "Temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 14,
   "name": "Analog modulation input",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 15,
   "name": "Burner control status",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 16,
   "name": "Lockout code",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 17,
   "name": "Alarm reason",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 18,
   "name": "Hold code",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 19,
   "name": "CH status",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 20,
   "name": "CH setpoint source",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 21,
   "name": "CH heat demand",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 22,
   "name": "CH burner demand",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 23,
   "name": "CH requested rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 24,
   "name": "DHW status",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 25,
   "name": "DHW Priority Count",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 26,
   "name": "DHW heat demand",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 27,
   "name": "DHW burner demand",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 28,
   "name": "DHW requested rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 29,
   "name": "DHW pump status",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 30,
   "name": "DHW Pump Idle Days Count",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 31,
   "name": "System pump status",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 32,
   "name": "System Pump Idle Days Count",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 33,
   "name": "Boiler pump status",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 34,
   "name": "Boiler Pump Idle Days Count",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 39,
   "name": "Controller Cycle Count",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 40,
   "name": "Controller run time",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 41,
   "name": "Lead lag master status",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 42,
   "name": "Lead lag slave status",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 43,
   "name": "Lead Lag Master Setpoint Source",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 44,
   "name": "Lead Lag Master Pump Demand",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 45,
   "name": "Outdoor temperature",
   "description": "Temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 53,
   "name": "Lead Lag active service",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 54,
   "name": "Slave 1 State",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 55,
   "name": "Slave 1 firing rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 56,
   "name": "Slave 2 State",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 57,
   "name": "Slave 2 firing rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 58,
   "name": "Slave 3 State",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 59,
   "name": "Slave 3 firing rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 60,
   "name": "Slave 4 State",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 61,
   "name": "Slave 4 firing rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 62,
   "name": "Slave 5 State",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 63,
   "name": "Slave 5 firing rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 64,
   "name": "Slave 6 State",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 65,
   "name": "Slave 6 firing rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 66,
   "name": "Slave 7 State",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 67,
   "name": "Slave 7 firing rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 68,
   "name": "Slave 8 State",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 69,
   "name": "Slave 8 firing rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 70,
   "name": "Master firing rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 71,
   "name": "Burner Control Sequence",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 72,
   "name": "Active Rate Limiter",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 74,
   "name": "Lead Lag Slave Demand",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 75,
   "name": "Lead Lag Slave Requested Rate",
   "description": "",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 88,
   "name": "S10 Sensor Reading",
   "description": "Temperature",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 35,
   "name": "Burner run time",
   "description": "",
   "units": "h",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 36,
   "name": "DHW pump cycle count",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 37,
   "name": "System pump cycle count",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 38,
   "name": "Boiler pump cycle count",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 46,
   "name": "CH setpoint",
   "description": "Temperature",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 47,
   "name": "CH TOD setpoint",
   "description": "Temperature",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 48,
   "name": "DHW Demand Switch",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 49,
   "name": "Outlet high limit setpoint",
   "description": "Temperature",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 50,
   "name": "Lead Lag setpoint",
   "description": "Temperature",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 51,
   "name": "Leadlag modulation sensor",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 52,
   "name": "Warm weather shutdown setpoint",
   "description": "Temperature",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 73,
   "name": "Burner Cycle Count",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 76,
   "name": "CH Enable",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 77,
   "name": "DHW Setpoint",
   "description": "Temperature",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 78,
   "name": "DHW Time Of Day Setpoint",
   "description": "Temperature",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 79,
   "name": "Lead Lag Slave Enable",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 80,
   "name": "Lead Lag Time Of Day Setpoint",
   "description": "Temperature",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 81,
   "name": "Lead Lag Operation Switch",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 82,
   "name": "Warm Weather Shutdown Enbl/Disbl",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 83,
   "name": "Lead Lag DHW Setpoint",
   "description": "Temperature",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 84,
   "name": "Lead Lag DHW Time Of Day SP",
   "description": "Temperature",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 85,
   "name": "Password Reg 1",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 86,
   "name": "Password Reg 2",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 87,
   "name": "Burner Switch",
   "description": "",
   "units": "",
   "access": "W",
   "states": ""
  }
 ],
 "page": "https://easybacnet.com/bacnet-points-lists/laars/sola-protonode",
 "note": "Re-typed from the manufacturer's public documentation (see source). Point availability varies by firmware and options; verify against the live device."
}
