- Platform information:
- Hardware: Raspberry Pi 3+
- OS:openhabian
- openHAB version: snapshot 2.4.0
- Issue of the topic: Can’t get modbus 2 to write (or to poll write) on startup
Hello to everyone. I have a little test setup working like i want.
The slave is dum and when it loses connection for mor than 10 seconds, every thing falls to zero.
If i change a value in the sitemap it keeps polling and keeps the system “alive” just like I want.
My problem is when i restart. I see the values in place in my items (persistence is ok), but polling for the write holding does not happen.
I see polling works because the read input is in place.
What am I missing ?
Thanks to all for reading
My Things:
Bridge modbus:serial:interel [ port="/dev/ttyUSB0", baud=19200, stopBits="1.0", parity="none", dataBits=8, encoding="rtu" ] {
Bridge poller WriteRegisters [ start=0, length=8, refresh=100, type="holding" ] {
// write from index 0 to 6
Thing data Interel_OutputRegister_000 [ readStart="0", readValueType="int16", writeStart="0", writeValueType="uint16", writeType="holding", writeMultipleEvenWithSingleRegisterOrCoil="true" ]
Thing data Interel_OutputRegister_001 [ readStart="1", readValueType="int16", writeStart="1", writeValueType="uint16", writeType="holding", writeMultipleEvenWithSingleRegisterOrCoil="true" ]
Thing data Interel_OutputRegister_002 [ readStart="2", readValueType="int16", writeStart="2", writeValueType="uint16", writeType="holding", writeMultipleEvenWithSingleRegisterOrCoil="true" ]
Thing data Interel_OutputRegister_003 [ writeStart="3", writeValueType="uint16", writeType="holding", writeMultipleEvenWithSingleRegisterOrCoil="true" ]
Thing data Interel_OutputRegister_004 [ writeStart="4", writeValueType="uint16", writeType="holding", writeMultipleEvenWithSingleRegisterOrCoil="true" ]
Thing data Interel_OutputRegister_005 [ writeStart="5", writeValueType="uint16", writeType="holding", writeMultipleEvenWithSingleRegisterOrCoil="true" ]
Thing data Interel_OutputRegister_006 [ readStart="6", readValueType="int16", writeStart="6", writeValueType="uint16", writeType="holding", writeMultipleEvenWithSingleRegisterOrCoil="true" ]
Thing data Interel_OutputRegister_007 [ readStart="7", readValueType="int16", writeStart="7", writeValueType="uint16", writeType="holding", writeMultipleEvenWithSingleRegisterOrCoil="true" ]
}
Bridge poller InputRegisters [ start=0, length=8, refresh=1000, type="input" ] {
// write from index 0 to 6
Thing data Interel_InputRegister_007 [ readStart="7.1", readValueType="uint8" ]
}
}
My items:
// Persistence Groups
Group gHOLDING_REGS // per Items MODBUS scritto verso registri
Group gINPUT_REGS // per Items MODBUS scritto verso registri
Number Interel_OutputRegister_000 "Holding index 0 scaled [%.0f]" (gHOLDING_REGS) { channel="modbus:data:interel:WriteRegisters:Interel_OutputRegister_000:number" }
Number Interel_OutputRegister_001 "Holding index 1 scaled [%.0f]" (gHOLDING_REGS) { channel="modbus:data:interel:WriteRegisters:Interel_OutputRegister_001:number" }
Number Interel_OutputRegister_002 "Holding index 2 scaled [%.0f]" (gHOLDING_REGS) { channel="modbus:data:interel:WriteRegisters:Interel_OutputRegister_002:number" }
Number Interel_OutputRegister_003 "Holding index 3 scaled [%.0f]" (gHOLDING_REGS) { channel="modbus:data:interel:WriteRegisters:Interel_OutputRegister_003:number" }
Number Interel_OutputRegister_004 "Holding index 4 scaled [%.0f]" (gHOLDING_REGS) { channel="modbus:data:interel:WriteRegisters:Interel_OutputRegister_004:number" }
Number Interel_OutputRegister_005 "Holding index 5 scaled [%.0f]" (gHOLDING_REGS) { channel="modbus:data:interel:WriteRegisters:Interel_OutputRegister_005:number" }
Number Interel_OutputRegister_006 "Holding index 6 scaled [%.0f]" (gHOLDING_REGS) { channel="modbus:data:interel:WriteRegisters:Interel_OutputRegister_006:number" }
Number Interel_OutputRegister_007 "Holding index 7 scaled [%.0f]" (gHOLDING_REGS) { channel="modbus:data:interel:WriteRegisters:Interel_OutputRegister_007:number" }
Number Interel_InputRegister_007 "Temperature_007 [%.0f °C]" (gINPUT_REGS) { channel="modbus:data:interel:InputRegisters:Interel_InputRegister_007:number" }
My persist:
// persistence strategies have a name and a definition and are referred to in the "Items" section
Strategies {
// for rrd charts, we need a cron strategy
//everyMinute : "0 * * * * ?"
default = everyUpdate
}
Items {
//* : strategy = everyChange, restoreOnStartup
gHOLDING_REGS*, gINPUT_REGS* : strategy = everyChange , restoreOnStartup
}
My sitemap:
sitemap default label="House"
{
Frame {
Text item=Interel_InputRegister_007
}
Frame {
Text item=Interel_OutputRegister_000
Setpoint item=Interel_OutputRegister_000 minValue=0 maxValue=255 step=1
Text item=Interel_OutputRegister_001
Setpoint item=Interel_OutputRegister_001 minValue=0 maxValue=255 step=1
Text item=Interel_OutputRegister_002
Setpoint item=Interel_OutputRegister_002 minValue=0 maxValue=255 step=1
Text item=Interel_OutputRegister_003
Setpoint item=Interel_OutputRegister_003 minValue=0 maxValue=255 step=1
Text item=Interel_OutputRegister_004
Setpoint item=Interel_OutputRegister_004 minValue=0 maxValue=255 step=1
Text item=Interel_OutputRegister_005
Setpoint item=Interel_OutputRegister_005 minValue=0 maxValue=255 step=1
Text item=Interel_OutputRegister_006
Setpoint item=Interel_OutputRegister_006 minValue=0 maxValue=255 step=1
Text item=Interel_OutputRegister_007
Setpoint item=Interel_OutputRegister_007 minValue=0 maxValue=255 step=1
}
}