I’m using openhab for some time now and I’m very happy with it. Just started with modbus binding to integrate my new wall switches into my home automation. So I have very little knowledge about modbus and need help on this.
I’m able to read data from modbus but for any reason I’m not able to assign it to items and can’t show it on my sitemap.
According to the log you can see that the value for “light1” is set to “1” but in sitemap it’s still “OFF”. Also the “temperature” (temp/kitchenTemp) is read correctly from modbus with value of “00 f6” (dec 246 is equal to 24.6 celcius). Same with “humidity” (hum/kitchenHum) with value of “01 b9” (dec 441 is equal to 44.1 %). All values are correct but not displayed at all in sitemap. Also need to write them back from sitemap - but this is next step.
Please help!!
many thanks!
system:
- openHABianPi with openHAB 2.4.0-1 (Release Build)
- updated to latest updates
- binding-modbus - 2.4.0
modbus.things:
Bridge modbus:tcp:kitchen [ host="192.168.1.150", port=502, id=1] {
Bridge poller coils [ start=0, length=6, refresh=100, type="coil" ] {
Thing data light1 [ readStart="0", readValueType="bit", writeStart="0", writeValueType="bit", writeType="coil"]
Thing data light2 [ readStart="1", readValueType="bit", writeStart="1", writeValueType="bit", writeType="coil"]
Thing data light3 [ readStart="2", readValueType="bit", writeStart="2", writeValueType="bit", writeType="coil"]
Thing data light4 [ readStart="3", readValueType="bit", writeStart="3", writeValueType="bit", writeType="coil"]
Thing data light5 [ readStart="4", readValueType="bit", writeStart="4", writeValueType="bit", writeType="coil"]
Thing data light6 [ readStart="5", readValueType="bit", writeStart="5", writeValueType="bit", writeType="coil"]
}
Bridge poller inputRegisters [ start=0, length=2, refresh=1000, type="input" ] {
Thing data temp [ readStart="0", readBalueType="int16", readTransform="JS(divide10.js)"]
Thing data hum [ readStart="1", readBalueType="int16", readTransform="JS(divide10.js)"]
}
}
transform/divide10.js:
(function(inputData) {
// on read: the polled number as string
// on write: openHAB command as string
var DIVIDE_BY = 10;
return parseFloat(inputData) / DIVIDE_BY;
})(input)
modbus.items:
Switch kitchenSwitch1Light1 "Kitchen Light Switch 1" <light> { channel="modbus:tcp:kitchen:coils:light1:switch" }
Switch kitchenSwitch1Light2 "Kitchen Light Switch 2" <light> { channel="modbus:tcp:kitchen:coils:light2:switch" }
Switch kitchenSwitch1Light3 "Kitchen Light Switch 3" <light> { channel="modbus:tcp:kitchen:coils:light3:switch" }
Switch kitchenSwitch1Light4 "Kitchen Light Switch 4" <light> { channel="modbus:tcp:kitchen:coils:light4:switch" }
Switch kitchenSwitch1Light5 "Kitchen Light Switch 5" <light> { channel="modbus:tcp:kitchen:coils:light5:switch" }
Switch kitchenSwitch1Light6 "Kitchen Light Switch 6" <light> { channel="modbus:tcp:kitchen:coils:light6:switch" }
Number kitchenTemp "Kitchen temperature is [%d]" { channel="modbus:tcp:kitchen:inputRegisters:temp:number" }
Number kitchenHum "Kitchen humidity is [%d]" { channel="modbus:tcp:kitchen:inputRegisters:hum:number" }
home.sitemap:
Switch item=kitchenSwitch1Light1
Switch item=kitchenSwitch1Light2
Switch item=kitchenSwitch1Light3
Switch item=kitchenSwitch1Light4
Switch item=kitchenSwitch1Light5
Switch item=kitchenSwitch1Light6
Text item=kitchenTemp
Text item=kitchenHum
Logging of modbus:
2019-02-24 19:44:48.585 [DEBUG] [handler.ModbusPollerThingHandlerImpl] - Thing modbus:poller:kitchen:coils received coils BitArrayWrappingBitVector(bits=100000) for request ModbusPollerThingHandlerImpl.ModbusPollerReadRequest@190319f[slaveId=1,functionCode=READ_COILS,start=0,length=6,maxTries=3]
2019-02-24 19:44:48.600 [DEBUG] [ernal.handler.ModbusDataThingHandler] - Thing modbus:data:kitchen:coils:light2 channels updated: {}. readValueType=bit, readIndex=Optional[1] -> numeric value 0 and boolValue=false. Bits BitArrayWrappingBitVector(bits=100000) for request ModbusPollerThingHandlerImpl.ModbusPollerReadRequest@190319f[slaveId=1,functionCode=READ_COILS,start=0,length=6,maxTries=3]
2019-02-24 19:44:48.612 [DEBUG] [ernal.handler.ModbusDataThingHandler] - Thing modbus:data:kitchen:coils:light3 channels updated: {}. readValueType=bit, readIndex=Optional[2] -> numeric value 0 and boolValue=false. Bits BitArrayWrappingBitVector(bits=100000) for request ModbusPollerThingHandlerImpl.ModbusPollerReadRequest@190319f[slaveId=1,functionCode=READ_COILS,start=0,length=6,maxTries=3]
2019-02-24 19:44:48.625 [DEBUG] [ernal.handler.ModbusDataThingHandler] - Thing modbus:data:kitchen:coils:light5 channels updated: {}. readValueType=bit, readIndex=Optional[4] -> numeric value 0 and boolValue=false. Bits BitArrayWrappingBitVector(bits=100000) for request ModbusPollerThingHandlerImpl.ModbusPollerReadRequest@190319f[slaveId=1,functionCode=READ_COILS,start=0,length=6,maxTries=3]
2019-02-24 19:44:48.634 [DEBUG] [ernal.handler.ModbusDataThingHandler] - Thing modbus:data:kitchen:coils:light4 channels updated: {}. readValueType=bit, readIndex=Optional[3] -> numeric value 0 and boolValue=false. Bits BitArrayWrappingBitVector(bits=100000) for request ModbusPollerThingHandlerImpl.ModbusPollerReadRequest@190319f[slaveId=1,functionCode=READ_COILS,start=0,length=6,maxTries=3]
2019-02-24 19:44:48.645 [DEBUG] [ernal.handler.ModbusDataThingHandler] - Thing modbus:data:kitchen:coils:light6 channels updated: {}. readValueType=bit, readIndex=Optional[5] -> numeric value 0 and boolValue=false. Bits BitArrayWrappingBitVector(bits=100000) for request ModbusPollerThingHandlerImpl.ModbusPollerReadRequest@190319f[slaveId=1,functionCode=READ_COILS,start=0,length=6,maxTries=3]
2019-02-24 19:44:48.655 [DEBUG] [ernal.handler.ModbusDataThingHandler] - Thing modbus:data:kitchen:coils:light1 channels updated: {}. readValueType=bit, readIndex=Optional[0] -> numeric value 1 and boolValue=true. Bits BitArrayWrappingBitVector(bits=100000) for request ModbusPollerThingHandlerImpl.ModbusPollerReadRequest@190319f[slaveId=1,functionCode=READ_COILS,start=0,length=6,maxTries=3]
2019-02-24 19:44:48.747 [DEBUG] [handler.ModbusPollerThingHandlerImpl] - Thing modbus:poller:kitchen:inputRegisters received registers RegisterArrayWrappingInputRegister(00 f6 01 b9) for request ModbusPollerThingHandlerImpl.ModbusPollerReadRequest@440f1e[slaveId=1,functionCode=READ_INPUT_REGISTERS,start=0,length=2,maxTries=3]