==> divide_by_10.js <== // // Transformation: Divide a float number by 10 // (function (inputData) { return parseFloat(inputData) / 10; })(input) ==> divide_by_60.js <== // // Transformation: Divide a float number by 60 (e.g. minutes into hours) // (function (inputData) { return parseFloat(inputData) / 60; })(input) ==> kwb_boiler_CF2.items <== Group KWB_BOILER_CF2 "KWB boiler CF2" (SalaCalefaccion) // Universal - software version Number KWB_BOILER_CF2_SoftwareVersionMajor (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:softwareVersion:SoftwareVersionMajor:number" } Number KWB_BOILER_CF2_SoftwareVersionMinor (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:softwareVersion:SoftwareVersionMinor:number" } Number KWB_BOILER_CF2_SoftwareVersionPatch (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:softwareVersion:SoftwareVersionPatch:number" } Number KWB_BOILER_CF2_SoftwareRevision (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:softwareVersion:SoftwareRevision:number" } // Universal - alarms Number KWB_BOILER_CF2_BoilerOKFlag (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:alarms:BoilerOKFlag:number" } Number KWB_BOILER_CF2_BoilerErrorFlag (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:alarms:BoilerErrorFlag:number" } Number KWB_BOILER_CF2_CounterAlarms (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:alarmCounters:CounterAlarms:number" } Number KWB_BOILER_CF2_CounterOpenAlarms (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:alarmCounters:CounterOpenAlarms:number" } // CF2 boiler data Number:Temperature KWB_BOILER_CF2_boilerActualTemperature "[%2.0f %unit%]" (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:boilerActualTemperature:number" } String KWB_BOILER_CF2_boilerActualTemperatureStatus (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:boilerActualTemperatureStatus:string" } Number:Temperature KWB_BOILER_CF2_boilerTargetTemperature (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:boilerTargetTemperature:number" } Switch KWB_BOILER_CF2_boilerPumpStatus (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:boilerPumpStatus:number" } Number KWB_BOILER_CF2_boilerPumpPercentage (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:boilerPumpPercentage:number" } Number:Temperature KWB_BOILER_CF2_returnTemperature (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:returnTemperature:number" } String KWB_BOILER_CF2_returnTemperatureStatus (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:returnTemperatureStatus:string" } String KWB_BOILER_CF2_demandRequest (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:demandRequest:string" } String KWB_BOILER_CF2_boilerStatus (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:boilerStatus:string" } Number KWB_BOILER_CF2_fullLoadHours (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:fullLoadHours:number" } Number KWB_BOILER_CF2_oxygenActualPercentage "[%2.0f %%]" (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:oxygenActualPercentage:number" } Number:Temperature KWB_BOILER_CF2_flameTemperatureActualValue "[%2.0f %unit%]" (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:flameTemperatureActualValue:number" } String KWB_BOILER_CF2_flameTemperatureActualStatus (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:flameTemperatureActualStatus:string" } Number KWB_BOILER_CF2_draughtPercentage (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:draughtPercentage:number" } Number KWB_BOILER_CF2_primaryAirShutterPercentage (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:primaryAirShutterPercentage:number" } Number KWB_BOILER_CF2_secondaryAirShutterPercentage (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:secondaryAirShutterPercentage:number" } Number KWB_BOILER_CF2_fillRoomDoorStatus (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus:fillRoomDoorStatus:number" } Number KWB_BOILER_CF2_draughtFanRPM (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerStatus2:draughtFanRPM:number" } // Heating circuits Number:Temperature KWB_BOILER_CF2_forwardFlowActualTemperature_1 "[%2.1f %unit%]" (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:heatingCircuits:forwardFlowActualTemperature_1:number" } String KWB_BOILER_CF2_forwardFlowStatus_1 (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:heatingCircuits:forwardFlowStatus_1:string" } Number:Temperature KWB_BOILER_CF2_forwardFlowActualTemperature_2 "[%2.1f %unit%]" (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:heatingCircuits:forwardFlowActualTemperature_2:number" } String KWB_BOILER_CF2_forwardFlowStatus_2 (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:heatingCircuits:forwardFlowStatus_2:string" } Number:Temperature KWB_BOILER_CF2_forwardFlowTargetTemperature_1 (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:heatingCircuits2:forwardFlowTargetTemperature_1:number" } Number:Temperature KWB_BOILER_CF2_forwardFlowTargetTemperature_2 (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:heatingCircuits2:forwardFlowTargetTemperature_2:number" } Number:Temperature KWB_BOILER_CF2_outdoorTemperature_1 "[%2.1f %unit%]" (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:heatingCircuits3:outdoorTemperature_1:number" } String KWB_BOILER_CF2_outdoorTemperatureStatus_1 (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:heatingCircuits3:outdoorTemperatureStatus_1:string" } Switch KWB_BOILER_CF2_pumpCircuit_1 (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:heatingCircuits4:pumpCircuit_1:number" } Switch KWB_BOILER_CF2_pumpCircuit_2 (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:heatingCircuits4:pumpCircuit_2:number" } // Main buffer Number:Temperature KWB_BOILER_CF2_bufferTemperature_1 "[%2.0f %unit%]" (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:bufferSensor1:bufferTemperature_1:number" } String KWB_BOILER_CF2_bufferTemperatureStatus_1 (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:bufferSensor1:bufferTemperatureStatus_1:string" } Number:Temperature KWB_BOILER_CF2_bufferTemperature_3 "[%2.0f %unit%]" (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:bufferSensor3:bufferTemperature_3:number" } String KWB_BOILER_CF2_bufferTemperatureStatus_3 (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:bufferSensor3:bufferTemperatureStatus_3:string" } Number:Temperature KWB_BOILER_CF2_bufferTemperature_5 "[%2.0f %unit%]" (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:bufferSensor5:bufferTemperature_5:number" } String KWB_BOILER_CF2_bufferTemperatureStatus_5 (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:bufferSensor5:bufferTemperatureStatus_5:string" } Switch KWB_BOILER_CF2_bufferPump (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:bufferPump:bufferPump:number" } Switch KWB_BOILER_CF2_bufferPumpRequest (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:bufferPump:bufferPumpRequest:number" } // ACS buffer Number:Temperature KWB_BOILER_CF2_ACSActualTemperature (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:acs_1:ACSActualTemperature:number" } String KWB_BOILER_CF2_ACSActualTemperatureStatus (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:acs_1:ACSActualTemperatureStatus:string" } Switch KWB_BOILER_CF2_ACSloadPump (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:acs_2:ACSloadPump:number" } Switch KWB_BOILER_CF2_ACSloadPumpDemand (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:acs_2:ACSloadPumpDemand:number" } Number:Temperature KWB_BOILER_CF2_acsTargetTemperature (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:acs_2:ACSTargetTemperature:number" } String KWB_BOILER_CF2_ACSStatus (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:acs_3:ACSStatus:string" } // Boiler chaining data Number:Temperature KWB_BOILER_CF2_boilerChain_bufferMidTemp (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerChain_1:boilerChain_bufferMidTemp:number" } Number KWB_BOILER_CF2_boilerChain_bufferFillingDegree (KWB_BOILER_CF2) { channel="modbus:data:KWBBoilerCF2:boilerChain_1:boilerChain_bufferFillingDegree:string" } ==> KWB_boiler_status_t.map <== 0=Störung 1=Aus 2=Legionellenschutz 3=Urlaub 4=Einmalladung 5=Außerhalb der Ladezeit 6=Laden bis Solltemp. 7=Temp. ausreichend 8=Blockierschutz 9=Warten Pumpenfreigabe 10=Kessel Überhitzung 11=ZWQ Überhitzung 12=max. Wärmeabnahme 13=Nachlauf 14=Nachlauf (Warten Freig.) 15=Lizenz ungültig ==> kwb_boiler.things <== // // Modbus definition for the KWB heating // In general we use a polling rate of 60000 [ms] / 1 minute // // // Boiler CF2 ("leña") // Bridge modbus:tcp:KWBBoilerCF2 "KWB Heating boiler logs" [ host="10.30.255.204", port=502, id=2 ] { // Universal data - software version data // All read only, so using a relaxed polling rate Bridge poller softwareVersion "Poller KWBBoilerCF2 - universal - software" [ start = 8192, length = 5, refresh = 100000, type = "input" ] { // Note the zero based indexing: first coil is index 0. Thing data SoftwareVersionMajor [ readStart="8192", readValueType="uint16" ] Thing data SoftwareVersionMinor [ readStart="8193", readValueType="uint16" ] Thing data SoftwareVersionPatch [ readStart="8194", readValueType="uint16" ] Thing data SoftwareRevision [ readStart="8195", readValueType="uint32" ] } // Unviversal section - Alarms and errors Bridge poller alarms "Poller KWBBoilerCF2 - universal - alarms" [ start = 8204, length = 2, refresh = 60000, type = "input" ] { Thing data BoilerOKFlag [ readStart="8204", readValueType="int16" ] Thing data BoilerErrorFlag [ readStart="8205", readValueType="int16" ] } // Universal section - alarm counters Bridge poller alarmCounters "Poller KWBBoilerCF2 - universal - alarm counter" [ start = 8252, length = 4, refresh = 60000, type = "input" ] { Thing data CounterAlarms [ readStart="8252", readValueType="int32" ] Thing data CounterOpenAlarms [ readStart="8254", readValueType="int32" ] } // TODO: R/W Register 24582 "resolve alarms" // CF2 boiler data Bridge poller boilerStatus "Poller KWBBoilerCF2 - Status CF2" [ start = 8197, length = 51, refresh = 60000, type = "input" ] { Thing data boilerActualTemperature [ readStart = "8197", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data boilerActualTemperatureStatus [ readStart = "8198", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] Thing data boilerTargetTemperature [ readStart = "8199", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data boilerPumpStatus [ readStart = "8200", readValueType = "int16" ] Thing data boilerPumpPercentage [ readStart = "8201", readValueType = "uint16", readTransform = "JS(divide_by_10.js)" ] Thing data returnTemperature [ readStart = "8202", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data returnTemperatureStatus [ readStart = "8203", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] Thing data demandRequest [ readStart = "8206", readValueType = "int16", readTransform = "MAP(KWB_ksm_verbraucher_anforderung_t.map)" ] Thing data boilerStatus [ readStart = "8208", readValueType = "int16", readTransform = "MAP(KWB_ksm_kesselstatus_anzeige_t.map)" ] Thing data fullLoadHours [ readStart = "8209", readValueType = "uint32", readTransform = "JS(divide_by_60.js)" ] Thing data oxygenActualPercentage [ readStart = "8214", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data flameTemperatureActualValue [ readStart = "8215", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data flameTemperatureActualStatus [ readStart = "8216", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] Thing data draughtPercentage [ readStart = "8223", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data primaryAirShutterPercentage [ readStart = "8242", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data secondaryAirShutterPercentage [ readStart = "8243", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data fillRoomDoorStatus [ readStart = "8245", readValueType = "int16" ] } Bridge poller boilerStatus2 "Poller KWBBoilerCF2 - Status CF2, #2" [ start = 9498, length = 1, refresh = 60000, type = "input" ] { Thing data draughtFanRPM [ readStart = "9498", readValueType = "int16" ] } // // The next pollers define things for the heating circuits -> More circuits can be simply added by extending the lists // Bridge poller heatingCircuits "Poller KWBBoilerCF2 - heating circuits" [ start = 8260, length = 4, refresh = 60000, type = "input" ] { Thing data forwardFlowActualTemperature_1 [ readStart = "8260", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data forwardFlowStatus_1 [ readStart = "8261", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] Thing data forwardFlowActualTemperature_2 [ readStart = "8262", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data forwardFlowStatus_2 [ readStart = "8263", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] } Bridge poller heatingCircuits2 "Poller KWBBoilerCF2 - heating circuits #2" [ start = 8328, length = 2, refresh = 60000, type = "input" ] { Thing data forwardFlowTargetTemperature_1 [ readStart = "8328", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data forwardFlowTargetTemperature_2 [ readStart = "8329", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] } Bridge poller heatingCircuits3 "Poller KWBBoilerCF2 - heating circuits #3" [ start = 8435, length = 2, refresh = 60000, type = "input" ] { Thing data outdoorTemperature_1 [ readStart = "8435", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data outdoorTemperatureStatus_1 [ readStart = "8436", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] } Bridge poller heatingCircuits4 "Poller KWBBoilerCF2 - heating circuits #4" [ start = 8503, length = 2, refresh = 60000, type = "input" ] { Thing data pumpCircuit_1 [ readStart = "8503", readValueType = "int16" ] Thing data pumpCircuit_2 [ readStart = "8504", readValueType = "int16" ] } Bridge poller heatingCircuits5 "Poller KWBBoilerCF2 - heating circuits #5" [ start = 8573, length = 2, refresh = 60000, type = "input" ] { Thing data circuitStatus_1 [ readStart = "8573", readValueType = "int16", readTransform = "MAP(KWB_hk_status_t.map)" ] Thing data circuitStatus_2 [ readStart = "8574", readValueType = "int16", readTransform = "MAP(KWB_hk_status_t.map)" ] } // // Heating buffer data; sensors installed are #1, #3, #5 // Bridge poller bufferSensor1 "Poller KWBBoilerCF2 - buffer sensor #1" [ start = 8708, length = 2, refresh = 60000, type = "input" ] { Thing data bufferTemperature_1 [ readStart = "8708", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data bufferTemperatureStatus_1 [ readStart = "8709", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] } Bridge poller bufferSensor3 "Poller KWBBoilerCF2 - buffer sensor #3" [ start = 8776, length = 2, refresh = 60000, type = "input" ] { Thing data bufferTemperature_3 [ readStart = "8776", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data bufferTemperatureStatus_3 [ readStart = "8777", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] } Bridge poller bufferSensor5 "Poller KWBBoilerCF2 - buffer sensor #5" [ start = 8844, length = 2, refresh = 60000, type = "input" ] { Thing data bufferTemperature_5 [ readStart = "8844", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data bufferTemperatureStatus_5 [ readStart = "8845", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] } Bridge poller bufferPump "Poller KWBBoilerCF2 - buffer pump" [ start = 8878, length = 20, refresh = 60000, type = "input" ] { Thing data bufferPump [ readStart = "8878", readValueType = "int16" ] Thing data bufferPumpRequest [ readStart = "8895", readValueType = "int16" ] } // Domestic water deposit / ACS Bridge poller acs_1 "Poller KWBBoilerCF2 - ACS #1" [ start = 8608, length = 2, refresh = 60000, type = "input" ] { Thing data ACSActualTemperature [ readStart = "8608", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data ACSActualTemperatureStatus [ readStart = "8609", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] } Bridge poller acs_2 "Poller KWBBoilerCF2 - ACS #2" [ start = 8641, length = 35, refresh = 60000, type = "input" ] { Thing data ACSloadPump [ readStart = "8641", readValueType = "int16" ] Thing data ACSloadPumpDemand [ readStart = "8658", readValueType = "int16" ] Thing data ACSTargetTemperature [ readStart = "8675", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] } Bridge poller acs_3 "Poller KWBBoilerCF2 - ACS #3" [ start = 8692, length = 1, refresh = 60000, type = "input" ] { Thing data ACSStatus [ readStart = "8692", readValueType = "int16", readTransform = "MAP(KWB_boiler_status_t.map)"] } // Kesselfolgeschaltung Bridge poller boilerChain_1 "Poller KWBBoilerCF2 - Kesselfolgeschaltung" [ start = 9394, length = 10, refresh = 60000, type = "input" ] { Thing data boilerChain_bufferMidTemp [ readStart = "9394", readValueType = "int16" ] Thing data boilerChain_bufferFillingDegree [ readStart = "9395", readValueType = "int16" ] } } // // Boiler MF2 ("astilla") // Bridge modbus:tcp:KWBBoilerMF2 "KWB Heating boiler leña" [ host="10.30.255.228", port=502, id=1 ] { // Universal data - software version data // All read only, so using a relaxed polling rate Bridge poller softwareVersion "Poller KWBBoilerMF2 - universal - software" [ start = 8192, length = 5, refresh = 100000, type = "input" ] { // Note the zero based indexing: first coil is index 0. Thing data SoftwareVersionMajor [ readStart="8192", readValueType="uint16" ] Thing data SoftwareVersionMinor [ readStart="8193", readValueType="uint16" ] Thing data SoftwareVersionPatch [ readStart="8194", readValueType="uint16" ] Thing data SoftwareRevision [ readStart="8195", readValueType="uint32" ] } // Unviversal section - Alarms and errors Bridge poller alarms "Poller KWBBoilerMF2 - universal - alarms" [ start = 8204, length = 2, refresh = 60000, type = "input" ] { Thing data BoilerOKFlag [ readStart="8204", readValueType="int16" ] Thing data BoilerErrorFlag [ readStart="8205", readValueType="int16" ] } // Universal section - alarm counters Bridge poller alarmCounters "Poller KWBBoilerMF2 - universal - alarm counter" [ start = 8252, length = 4, refresh = 60000, type = "input" ] { Thing data CounterAlarms [ readStart="8252", readValueType="int32" ] Thing data CounterOpenAlarms [ readStart="8254", readValueType="int32" ] } Bridge poller boilerStatus "Poller KWBBoilerMF2 - Status MF2" [ start = 8197, length = 51, refresh = 60000, type = "input" ] { Thing data boilerActualTemperature [ readStart = "8197", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data boilerActualTemperatureStatus [ readStart = "8198", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] Thing data boilerTargetTemperature [ readStart = "8199", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data boilerPumpStatus [ readStart = "8200", readValueType = "int16" ] Thing data boilerPumpPercentage [ readStart = "8201", readValueType = "uint16", readTransform = "JS(divide_by_10.js)" ] Thing data returnTemperature [ readStart = "8202", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data returnTemperatureStatus [ readStart = "8203", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] Thing data demandRequest [ readStart = "8206", readValueType = "int16", readTransform = "MAP(KWB_ksm_verbraucher_anforderung_t.map)" ] Thing data boilerOutputPercentage [ readStart = "8207", readValueType = "int16", readTransform = "MAP(KWB_ksm_verbraucher_anforderung_t.map)" ] Thing data boilerStatus [ readStart = "8208", readValueType = "int16", readTransform = "MAP(KWB_ksm_kesselstatus_anzeige_t.map)" ] Thing data fullLoadHours [ readStart = "8209", readValueType = "uint32", readTransform = "JS(divide_by_60.js)" ] Thing data oxygenActualPercentage [ readStart = "8214", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data flameTemperatureActualValue [ readStart = "8215", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data flameTemperatureActualStatus [ readStart = "8216", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] Thing data ultrasonicSensorActual [ readStart = "8217", readValueType = "int16" ] Thing data negativePressure [ readStart = "8218", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data burnoutTemperatureActualValue [ readStart = "8219", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data burnoutTemperatureStatus [ readStart = "8220", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] Thing data primaryFanPercentage [ readStart = "8221", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data secondaryFanPercentage [ readStart = "8222", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data draughtPercentage [ readStart = "8223", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data primaryAirShutterPercentage [ readStart = "8242", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data secondaryAirShutterPercentage [ readStart = "8243", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data fillRoomDoorStatus [ readStart = "8245", readValueType = "int16" ] } // // Heating sensors installed are #1 (top) and #5 (middle) // Bridge poller bufferSensor1 "Poller KWBBoilerMF2 - buffer sensor #1" [ start = 8708, length = 2, refresh = 60000, type = "input" ] { Thing data bufferTemperature_1 [ readStart = "8708", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data bufferTemperatureStatus_1 [ readStart = "8709", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] } Bridge poller bufferSensor5 "Poller KWBBoilerMF2 - buffer sensor #5" [ start = 8844, length = 2, refresh = 60000, type = "input" ] { Thing data bufferTemperature_5 [ readStart = "8844", readValueType = "int16", readTransform = "JS(divide_by_10.js)" ] Thing data bufferTemperatureStatus_5 [ readStart = "8845", readValueType = "int16", readTransform = "MAP(KWB_system_sensor_status_t.map)" ] } } ==> KWB_hk_status_t.map <== 0=Absenk 1=Komfort 2=Frostschutz 3=Urlaub 4=Aus 5=Estrich 6=Max. Wärmeabnahme 7=Max. Wärmeabnahme 8=Modbus ==> KWB_ksm_kesselstatus_anzeige_t.map <== 0=Aus 1=Messbetrieb 2=Betrieb (Reinigung) 3=Einmessen 4=Betrieb 5=Nachlauf 6=Neustart 7=Störung Nachlauf 8=Störung Aus 9=Wartung 10=Bereit (-Zuendanf) 11=Zünden Start Saugzug 12=Zünden FS Füllen 13=Zünden Einschieben 1 14=Zünden Einschieben 3 15=Zünden Heizen 16=Heizen Durchzünden 17=Zünden Einschieben 2 18=Zünden Warten 19=Durchzünden 20=1. IB Betrieb 21=Bereit (-Ext1) 22=Bereit (-Zweitkessel) 23=Bereit (-FS) 24=Bereit (-Reinigung) 25=Bereit (+Stop) 26=Bereit (-Ext3) 27=Bereit (-Lambdasonde) 30=Bereit (-Anf) 31=Bereit (+Wartezeit) 32=Bereit (+Anf) 34=Betrieb Leerschieben 35=Aus 36=Anheizen 37=Warten Zündanf. 38=Warten Zündfreig. 39=Start Zündung 40=Zünden 41=Heizen 42=Feuerhaltung 43=Feuer aus 44=Störung Feuer aus 45=Tür offen 46=Überhitzung 47=Störung Feuerhaltung 49=Sh aus, PM freigegeben 50=Start Pelletmodul 51=Pelletmodul Gesperrt 52=Wartung ==> KWB_ksm_verbraucher_anforderung_t.map <== 0=Aus 1=Heizkreis 2=BWS 3=Puffer ==> KWB_system_sensor_status_t.map <== 0=Defekt 1=Fehlt 2=OK