{
 "manufacturer": "Condair",
 "manufacturer_slug": "condair",
 "model": "Condair RS (BACnet gateway board)",
 "model_slug": "rs-gateway-board",
 "aliases": [
  "Virtual_BCU_RS",
  "RS ProtoCessor gateway"
 ],
 "equipment_type": "Resistive steam humidifier BACnet gateway",
 "applies_to": "Condair RS resistive steam humidifiers (Integrated Controller 5.9.x.x) with the optional BACnet/LonWorks gateway board.",
 "summary": "Condair RS units can reach BACnet IP or MS/TP through the optional ProtoCessor gateway board. The virtual device reports unit A/B status, water level, capacity, service hours and safety inputs, and offers writable setpoints, P-band, manual capacity, remote drain commands and demand inputs for channel 1 and the limiter.",
 "bacnet_transport": [
  "BACnet IP",
  "BACnet MS/TP"
 ],
 "firmware": "Integrated Controller 5.9.x.x",
 "default_device_instance": "710 (BACnet IP); 1001 (MS/TP)",
 "access_inferred": false,
 "notes": [
  "These objects belong to the optional ProtoCessor (FieldServer) BACnet/LonWorks gateway board, not the BACnet on-board interface; object names and instances differ between the two.",
  "Gateway defaults: IP 192.168.1.24 (boards shipped from February 2022; earlier boards 10.232.72.172), network number 101, MS/TP MAC 127 and MS/TP Node_ID 1001; settings are edited in the gateway's config.csv via its web GUI.",
  "The gateway talks to the Integrated Controller over Modbus RTU, so the controller signal source is set to Modbus (not BACnet) and its own BACnet on-board function must be Off.",
  "Capacity, pressure and temperature units follow the controller's Metric/Imperial setting."
 ],
 "source": {
  "title": "Gateway Board for BACnet and LonWorks - Supplemental Installation and Operation Manual",
  "doc_number": "2585293-L",
  "revision_date": "2022-02",
  "url": "https://www.condair.com/consense/bms-communication-ic-1.0/am_bms_interface_2585293_en_condairltd.pdf"
 },
 "integration": {
  "summary": "Configure the RS controller for Modbus RTU with Signal Source = Modbus, set the gateway's BACnet side, and write demand/RH to AO 1 (plus a limiter value to AO 2 if used). Watch unit A/B status and BI 29 node status.",
  "minimum_points": [
   {
    "ref": "AO 1",
    "name": "AO_RemRHorDemA1",
    "why": "Channel 1 demand or RH from the BMS"
   },
   {
    "ref": "AO 2",
    "name": "AO_RemRHorDemA2",
    "why": "Channel 2 limiter signal (dual signal control)"
   },
   {
    "ref": "AV 1",
    "name": "AV_SetPointA1",
    "why": "Channel 1 humidity setpoint used in RH P/PI mode"
   },
   {
    "ref": "MI 1",
    "name": "MI_UnitStatusA",
    "why": "Unit A status"
   },
   {
    "ref": "MI 2",
    "name": "MI_UnitStatusB",
    "why": "Unit B status (dual units)"
   },
   {
    "ref": "AI 11",
    "name": "AI_ActCapHum",
    "why": "Actual steam output"
   },
   {
    "ref": "BI 29",
    "name": "BI_Connection",
    "why": "Gateway-to-humidifier node status"
   },
   {
    "ref": "MI 3",
    "name": "MI_ServStatusA",
    "why": "Unit A maintenance/fault status"
   },
   {
    "ref": "AI 1",
    "name": "AI_ErrorCode",
    "why": "Active error code"
   }
  ],
  "enable": "Set Control Settings (password 0335) > Signal Source to Modbus, choose the Control Mode (Demand, RH P or RH PI), and set the controller's Modbus RTU parameters to match the gateway.",
  "heartbeat": "Controller BMS Timeout (1-300 s, default 300 s): if the control signal is not updated within the timeout, warning W35 BMS Timeout is raised and humidification stops until a valid signal returns. The gateway only forwards the control value to the humidifier when it changes.",
  "remote_sensors": "In Demand mode the BMS writes the required output (0-100 %) to the AO 1. In RH P or RH PI mode the BMS writes the measured humidity there and the controller's own setpoint, P-band and I-time AVs do the control. Do not connect a hard-wired demand or sensor signal while the BACnet signal is used.",
  "setup": [
   "Integrated Controller Communication submenu (password 0335): Modbus/RTU, address 10, even parity, 9600 baud, MSR first; disable the controller's own BACnet function.",
   "Gateway factory settings: BACnet IP device instance DL 300, ME 410, RS 710 (EL 220); MS/TP 9600 baud, MAC 127, Node_ID 1001.",
   "Gateway IP defaults to 192.168.1.24/24 for boards built from February 2022 (10.232.72.172/16 before); configure via the FS-GUI web page on port 80.",
   "Device instance, network number (default 101) and MS/TP MAC are edited in the gateway's config.csv."
  ],
  "gotchas": [
   "Because the gateway only passes the control value on when it changes, rewriting an identical value may not refresh the controller's BMS timeout; the manual does not describe a workaround.",
   "Object names and instances differ from the BACnet on-board interface of the same humidifier; do not reuse an on-board mapping.",
   "Capacity, pressure and temperature units follow the controller's Metric/Imperial setting.",
   "Unit B objects only apply to dual-cylinder units."
  ]
 },
 "points": [
  {
   "type": "DEV",
   "instance": 710,
   "name": "Virtual_BCU_RS",
   "description": "Humidifier RS",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "MI",
   "instance": 1,
   "name": "MI_UnitStatusA",
   "description": "Operating status unit A",
   "units": "",
   "access": "R",
   "states": "1=Initializing, 2=Diagnostic, 3=Stopped, 4=Break, 5=Level test, 6=Standby, 7=Humidifying, 8=Filling, 9=Idle, 10=Draining, 11=Remote off, 12=Keep Warm"
  },
  {
   "type": "MI",
   "instance": 2,
   "name": "MI_UnitStatusB",
   "description": "Operating status unit B",
   "units": "",
   "access": "R",
   "states": "1=Initializing, 2=Diagnostic, 3=Stopped, 4=Break, 5=Level test, 6=Standby, 7=Humidifying, 8=Filling, 9=Idle, 10=Draining, 11=Remote off, 12=Keep Warm"
  },
  {
   "type": "MI",
   "instance": 3,
   "name": "MI_ServStatusA",
   "description": "Maintenance and malfunctions status unit A",
   "units": "",
   "access": "R",
   "states": "1=Service Info, 2=Warning, 3=RO Service, 4=Extended Maint., 5=Small Maint., 6=Activation Code, 7=Fault"
  },
  {
   "type": "MI",
   "instance": 4,
   "name": "MI_ServStatusB",
   "description": "Maintenance and malfunctions status unit B",
   "units": "",
   "access": "R",
   "states": "1=Service Info, 2=Warning, 3=RO Service, 4=Extended Maint., 5=Small Maint., 6=Activation Code, 7=Fault"
  },
  {
   "type": "MI",
   "instance": 5,
   "name": "MI_HumType",
   "description": "Device type",
   "units": "",
   "access": "R",
   "states": "1=RS, 2=RS+ RO, 3=RO"
  },
  {
   "type": "MI",
   "instance": 6,
   "name": "MI_NomVoltage",
   "description": "Nominal voltage",
   "units": "",
   "access": "R",
   "states": "1=200 V, 2=208 V, 3=230 V, 4=240 V, 5=400 V, 6=415 V, 7=440 V, 8=460 V, 9=480 V, 10=500 V, 11=550 V, 12=600 V, 13=380 V"
  },
  {
   "type": "MI",
   "instance": 7,
   "name": "MI_LevelA",
   "description": "Water level unit A",
   "units": "",
   "access": "R",
   "states": "1=no level, 2=low, 3=low-mid, 4=mid, 5=mid-high, 6=high"
  },
  {
   "type": "MI",
   "instance": 8,
   "name": "MI_LevelB",
   "description": "Water level unit B",
   "units": "",
   "access": "R",
   "states": "1=no level, 2=low, 3=low-mid, 4=mid, 5=mid-high, 6=high"
  },
  {
   "type": "AI",
   "instance": 1,
   "name": "AI_ErrorCode",
   "description": "Error code",
   "units": "",
   "access": "R",
   "states": "0=No Error"
  },
  {
   "type": "AI",
   "instance": 2,
   "name": "AI_OperatHours",
   "description": "Operating hours",
   "units": "h",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 3,
   "name": "AI_HoursToServA",
   "description": "Next service unit A",
   "units": "h",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 4,
   "name": "AI_HoursToServB",
   "description": "Next service unit B",
   "units": "",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 5,
   "name": "AI_SystemDemand",
   "description": "System demand",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 6,
   "name": "AI_InputA1",
   "description": "Input signal channel 1 unit A",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 7,
   "name": "AI_InputA2",
   "description": "Limiter signal channel 2 unit A",
   "units": "%",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 8,
   "name": "AI_MaxHumOut",
   "description": "Max. capacity",
   "units": "kg/h or lb/h",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 9,
   "name": "AI_CylMaxCapA",
   "description": "Max. capacity unit A",
   "units": "kg/h or lb/h",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 10,
   "name": "AI_CylMaxCapB",
   "description": "Max. capacity unit B",
   "units": "kg/h or lb/h",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 11,
   "name": "AI_ActCapHum",
   "description": "Actual capacity",
   "units": "kg/h or lb/h",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 12,
   "name": "AI_CylActCapA",
   "description": "Actual capacity unit A",
   "units": "kg/h or lb/h",
   "access": "R",
   "states": ""
  },
  {
   "type": "AI",
   "instance": 13,
   "name": "AI_CylActCapB",
   "description": "Actual capacity unit B",
   "units": "kg/h or lb/h",
   "access": "R",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 1,
   "name": "AV_SetPointA1",
   "description": "Setpoint channel 1 unit A",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 2,
   "name": "AV_SetPointA2",
   "description": "Setpoint channel 2 limiter unit A",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 3,
   "name": "AV_PropBandA1",
   "description": "P-Band unit A (proportional band)",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 4,
   "name": "AV_PropBandA2",
   "description": "P-Band limiter unit A (Proportional band)",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 5,
   "name": "AV_IntTimeA1",
   "description": "Integral time channel 1 unit A",
   "units": "min",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 6,
   "name": "AV_DampTimeA2",
   "description": "Damp time channel 2 unit A",
   "units": "s",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 7,
   "name": "AV_CapLimitA",
   "description": "Manual capacity unit A",
   "units": "%",
   "access": "W",
   "states": ""
  },
  {
   "type": "AV",
   "instance": 8,
   "name": "AV_RemoteDrain",
   "description": "Remote drain",
   "units": "",
   "access": "W",
   "states": "Read: 0=Off, 1=Init, 2=busy, 3=done, Write: 0=Off, 1=RS drain cylinder A, 2=RS drain cylinder B, 3=RS drain cyl. A+B, 4=RO flush, 5=RO fresh water automation"
  },
  {
   "type": "AO",
   "instance": 1,
   "name": "AO_RemRHorDemA1",
   "description": "Actual humidity or demand via BACnet unit A",
   "units": "%",
   "access": "C",
   "states": ""
  },
  {
   "type": "AO",
   "instance": 2,
   "name": "AO_RemRHorDemA2",
   "description": "Actual humidity or limiter via BACnet unit A",
   "units": "%",
   "access": "C",
   "states": ""
  },
  {
   "type": "BI",
   "instance": 1,
   "name": "BI_BlowerPackA",
   "description": "Blower ready unit A",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On (ready)"
  },
  {
   "type": "BI",
   "instance": 2,
   "name": "BI_BlowerPackB",
   "description": "Blower ready unit B",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On (ready)"
  },
  {
   "type": "BI",
   "instance": 3,
   "name": "BI_ExtSChStaA",
   "description": "External safety loop unit A",
   "units": "",
   "access": "R",
   "states": "0=Open, 1=Closed (ok)"
  },
  {
   "type": "BI",
   "instance": 4,
   "name": "BI_ExtSChStaB",
   "description": "External safety loop unit B",
   "units": "",
   "access": "R",
   "states": "0=Open, 1=Closed (ok)"
  },
  {
   "type": "BI",
   "instance": 5,
   "name": "BI_IntSChStaA",
   "description": "Internal safety loop unit A",
   "units": "",
   "access": "R",
   "states": "0=Open, 1=Closed (ok)"
  },
  {
   "type": "BI",
   "instance": 6,
   "name": "BI_IntSChStaB",
   "description": "Internal safety loop unit B",
   "units": "",
   "access": "R",
   "states": "0=Open, 1=Closed (ok)"
  },
  {
   "type": "BI",
   "instance": 7,
   "name": "BI_HeatVoltageA",
   "description": "Heating voltage unit A",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 8,
   "name": "BI_HeatVoltageB",
   "description": "Heating voltage unit B",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 9,
   "name": "BI_LevelSafetyA",
   "description": "Internal safety loop unit A (security level)",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On (ok)"
  },
  {
   "type": "BI",
   "instance": 10,
   "name": "BI_LevelSafetyB",
   "description": "Internal safety loop unit B (security level)",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On (ok)"
  },
  {
   "type": "BI",
   "instance": 11,
   "name": "BI_LeakA",
   "description": "Leakage sensor unit A",
   "units": "",
   "access": "R",
   "states": "0=Off (Leak), 1=On"
  },
  {
   "type": "BI",
   "instance": 12,
   "name": "BI_LeakB",
   "description": "Leakage sensor unit B",
   "units": "",
   "access": "R",
   "states": "0=Off (Leak), 1=On"
  },
  {
   "type": "BI",
   "instance": 13,
   "name": "BI_MainContactA",
   "description": "Contactor unit A",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 14,
   "name": "BI_MainContactB",
   "description": "Contactor unit B",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 15,
   "name": "BI_PumpA",
   "description": "Pump unit A",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 16,
   "name": "BI_PumpB",
   "description": "Pump unit B",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 17,
   "name": "BI_InletA1",
   "description": "Inlet valve 1 unit A",
   "units": "",
   "access": "R",
   "states": "0=Closed, 1=Open"
  },
  {
   "type": "BI",
   "instance": 18,
   "name": "BI_InletB1",
   "description": "Inlet valve 1 unit B",
   "units": "",
   "access": "R",
   "states": "0=Closed, 1=Open"
  },
  {
   "type": "BI",
   "instance": 19,
   "name": "BI_InletA2",
   "description": "Inlet valve 2 unit A",
   "units": "",
   "access": "R",
   "states": "0=Closed, 1=Open"
  },
  {
   "type": "BI",
   "instance": 20,
   "name": "BI_InletB2",
   "description": "Inlet valve 2 unit B",
   "units": "",
   "access": "R",
   "states": "0=Closed, 1=Open"
  },
  {
   "type": "BI",
   "instance": 21,
   "name": "BI_DrainA1",
   "description": "Drain cool valve unit A",
   "units": "",
   "access": "R",
   "states": "0=Closed, 1=Open"
  },
  {
   "type": "BI",
   "instance": 22,
   "name": "BI_DrainB1",
   "description": "Drain cool valve unit B",
   "units": "",
   "access": "R",
   "states": "0=Closed, 1=Open"
  },
  {
   "type": "BI",
   "instance": 23,
   "name": "BI_DrainA2",
   "description": "Complete drain valve unit A",
   "units": "",
   "access": "R",
   "states": "0=Closed, 1=Open"
  },
  {
   "type": "BI",
   "instance": 24,
   "name": "BI_DrainB2",
   "description": "Complete drain valve unit B",
   "units": "",
   "access": "R",
   "states": "0=Closed, 1=Open"
  },
  {
   "type": "BI",
   "instance": 25,
   "name": "BI_FanA",
   "description": "External fan unit A",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 26,
   "name": "BI_FanB",
   "description": "External fan unit B",
   "units": "",
   "access": "R",
   "states": "0=Off, 1=On"
  },
  {
   "type": "BI",
   "instance": 27,
   "name": "BI_FlushValveA",
   "description": "Hygiene flush unit A",
   "units": "",
   "access": "R",
   "states": "0=Closed, 1=Open"
  },
  {
   "type": "BI",
   "instance": 28,
   "name": "BI_FlushValveB",
   "description": "Hygiene flush unit B",
   "units": "",
   "access": "R",
   "states": "0=Closed, 1=Open"
  },
  {
   "type": "BI",
   "instance": 29,
   "name": "BI_Connection",
   "description": "Node status",
   "units": "",
   "access": "R",
   "states": "0=Node offline, 1=Node online"
  }
 ],
 "short_model": "RS (BACnet gateway board)",
 "page": "https://easybacnet.com/bacnet-points-lists/condair/rs-gateway-board",
 "note": "Re-typed from the manufacturer's public documentation (see source). Point availability varies by firmware and options; verify against the live device."
}
