Modbus openHAB2 binding available for alpha testing

Having some issues migrating to openHAB 2 binding. Part of my modbus 1x config is:

tcp.basement.connection=10.88.64.46:502:0:600000:0:0:50
tcp.basement.length=55
tcp.basement.type=coil

tcp.basement_ponet.connection=10.88.64.46:502:0:600000:0:0:50
tcp.basement_ponet.start=2072
tcp.basement_ponet.length=8
tcp.basement_ponet.type=coil

Is this the same config for modbus 2x?

Bridge modbus:tcp:basement [ host="10.88.64.46", port=502, id=3 ] {
  Bridge poller coils [ start=0, length=55, refresh=1000, type="coil" ] {
    Thing data pin01 [ readStart="0", readValueType="bit", writeStart="0", writeValueType="bit", writeType="coil" ]
    Thing data pin02 [ readStart="1", readValueType="bit", writeStart="1", writeValueType="bit", writeType="coil" ]
    Thing data pin03 [ readStart="2", readValueType="bit", writeStart="2", writeValueType="bit", writeType="coil" ]
    Thing data pin04 [ readStart="3", readValueType="bit", writeStart="3", writeValueType="bit", writeType="coil" ]
    Thing data pin05 [ readStart="4", readValueType="bit", writeStart="4", writeValueType="bit", writeType="coil" ]
    Thing data pin06 [ readStart="5", readValueType="bit", writeStart="5", writeValueType="bit", writeType="coil" ]
    Thing data pin07 [ readStart="6", readValueType="bit", writeStart="6", writeValueType="bit", writeType="coil" ]
    Thing data pin08 [ readStart="7", readValueType="bit", writeStart="7", writeValueType="bit", writeType="coil" ]
    Thing data pin09 [ readStart="8", readValueType="bit", writeStart="8", writeValueType="bit", writeType="coil" ]
    Thing data pin10 [ readStart="9", readValueType="bit", writeStart="9", writeValueType="bit", writeType="coil" ]
    Thing data pin11 [ readStart="10", readValueType="bit", writeStart="10", writeValueType="bit", writeType="coil" ]
    Thing data pin12 [ readStart="11", readValueType="bit", writeStart="11", writeValueType="bit", writeType="coil" ]
    Thing data pin13 [ readStart="12", readValueType="bit", writeStart="13", writeValueType="bit", writeType="coil" ]
    Thing data pin14 [ readStart="13", readValueType="bit", writeStart="14", writeValueType="bit", writeType="coil" ]
    Thing data pin15 [ readStart="14", readValueType="bit", writeStart="14", writeValueType="bit", writeType="coil" ]
    Thing data pin16 [ readStart="15", readValueType="bit", writeStart="15", writeValueType="bit", writeType="coil" ]
    Thing data pin17 [ readStart="16", readValueType="bit", writeStart="16", writeValueType="bit", writeType="coil" ]
    Thing data pin18 [ readStart="17", readValueType="bit", writeStart="17", writeValueType="bit", writeType="coil" ]
    Thing data pin19 [ readStart="18", readValueType="bit", writeStart="18", writeValueType="bit", writeType="coil" ]
    Thing data pin20 [ readStart="19", readValueType="bit", writeStart="19", writeValueType="bit", writeType="coil" ]
    Thing data pin21 [ readStart="20", readValueType="bit", writeStart="20", writeValueType="bit", writeType="coil" ]
    Thing data pin22 [ readStart="21", readValueType="bit", writeStart="21", writeValueType="bit", writeType="coil" ]
    Thing data pin23 [ readStart="22", readValueType="bit", writeStart="22", writeValueType="bit", writeType="coil" ]
    Thing data pin24 [ readStart="23", readValueType="bit", writeStart="23", writeValueType="bit", writeType="coil" ]
    Thing data pin25 [ readStart="24", readValueType="bit", writeStart="24", writeValueType="bit", writeType="coil" ]
  }
  Bridge poller ponet [ start=2072, length=8, refresh=1000, type="coil" ] {
    Thing data pin01 [ readStart="2072", readValueType="bit", writeStart="2072", writeValueType="bit", writeType="coil" ]
    Thing data pin02 [ readStart="2073", readValueType="bit", writeStart="2073", writeValueType="bit", writeType="coil" ]
    Thing data pin03 [ readStart="2074", readValueType="bit", writeStart="2074", writeValueType="bit", writeType="coil" ]
    Thing data pin04 [ readStart="2075", readValueType="bit", writeStart="2075", writeValueType="bit", writeType="coil" ]
    Thing data pin05 [ readStart="2076", readValueType="bit", writeStart="2076", writeValueType="bit", writeType="coil" ]
    Thing data pin06 [ readStart="2077", readValueType="bit", writeStart="2077", writeValueType="bit", writeType="coil" ]
    Thing data pin07 [ readStart="2078", readValueType="bit", writeStart="2078", writeValueType="bit", writeType="coil" ]
    Thing data pin08 [ readStart="2079", readValueType="bit", writeStart="2079", writeValueType="bit", writeType="coil" ]
  }
}
1 Like

@ssalonen you made an excellent work relivering simple binding configuration for low level thing such modbus.

I made my attempt with binding today and I’ve spotted some behaviours which are unclear to me and maybe you will be able to clarify if its intended. I connect using modbus tcp - link itself is fine and I see proper answers coming back in wireshark.

My device have bunch of registrars which I explorer one by one to make sure that I parse values correctly. Some of registrars are repeated - as it is three phase power meeter. Values are encoded as float and they are read properly.

Below is my basic configuration

    Bridge poller L1voltage [start=8200, length=2, refresh=1000, maxTries=1, type="holding" ] {
        Thing data voltage [ readStart="8200", readValueType="float32" ]
    }
    Bridge poller L2voltage [start=8204, length=2, refresh=1000, type="holding" ] {
        Thing data voltage [ readStart="8204", readValueType="float32" ]
    }
    Bridge poller L3voltage [start=8208, length=2, refresh=1000, type="holding" ] {
        Thing data voltage [ readStart="8208", readValueType="float32" ]
    }

Values are not updated. On trace logging level I’ve got following messages:

Could not transform item state '235.1999969482422' (of type DecimalType) to a State (tried the following types: [class org.eclipse.smarthome.core.library.types.DateTimeType, class org.eclipse.smarthome.core.types.UnDefType])! Input state as string '235.1999969482422', transformed string '235.1999969482422', transformation 'default'
Thing modbus:data:pro380:L1voltage:voltage 'Modbus data', channel modbus:data:pro380:L1voltage:voltage:datetime will not be updated since transformation was unsuccesful
transformed response is '235.1999969482422'

I also attempted to group by reads together, but registers are not continuous thus below configuration doesn’t work:

     Bridge poller voltage [start=8200, length=10, refresh=1000, type="holding" ] {
         Thing data L1 [ readStart="8200", readValueType="float32" ]
         Thing data L2 [ readStart="8204", readValueType="float32" ]
         Thing data L3 [ readStart="8208", readValueType="float32" ]
     }

Cheers,
Lukasz

1 Like

I am working on moving from 1.x binding, and I see something similar.

24-Jan-2018 20:53:39.581 [DEBUG] [org.openhab.binding.modbus.internal.Transformation] - transformed response is '0'
24-Jan-2018 20:53:39.581 [DEBUG] [org.openhab.binding.modbus.internal.Transformation] - Transformed item state '0' (of type DecimalType) to a state 0 (of type StringType). Input state as string '0', transformed string '0', transformation 'default'
24-Jan-2018 20:53:39.582 [DEBUG] [org.openhab.binding.modbus.internal.Transformation] - transformed response is '0'
24-Jan-2018 20:53:39.582 [DEBUG] [org.openhab.binding.modbus.internal.Transformation] - Transformed item state '0' (of type DecimalType) to a state 0 (of type PercentType). Input state as string '0', transformed string '0', transformation 'default'
24-Jan-2018 20:53:39.582 [DEBUG] [org.openhab.binding.modbus.internal.Transformation] - transformed response is '0'
24-Jan-2018 20:53:39.582 [DEBUG] [org.openhab.binding.modbus.internal.Transformation] - Transformed item state '0' (of type DecimalType) to a state 0 (of type DecimalType). Input state as string '0', transformed string '0', transformation 'default'
24-Jan-2018 20:53:39.582 [DEBUG] [org.openhab.binding.modbus.internal.Transformation] - transformed response is '0'
24-Jan-2018 20:53:39.583 [DEBUG] [org.openhab.binding.modbus.internal.Transformation] - Could not transform item state '0' (of type DecimalType) to a State (tried the following types: [class org.eclipse.smarthome.core.library.types.DateTimeType, class org.eclipse.smarthome.core.types.UnDefType])! Input state as string '0', transformed string '0', transformation 'default'
24-Jan-2018 20:53:39.583 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:second:ponet:05 'Modbus data', channel modbus:data:second:ponet:05:datetime will not be updated since transformation was unsuccesful
1 Like

This is something that is normal, and thus I have been using DEBUG logging. Number zero does not get converted to date/time (channel called datetime).

Nothing to worry about if you are not using that specific thing channel.

For now all channels are updated (or at least tried), no matter whether there is Item linked to them or not.

As mentioned above, the log statement is about channel datetime:

channel modbus:data:pro380:L1voltage:voltage:datetime will not be updated since transformation was unsuccesful
transformed response is ‘235.1999969482422’

There will also log messages for successfull reads, with TRACE level at least (code here). The channels of the data thing reveal last successful read and error as well.

What is the status of the things, is it OK?

I don’t understands the statement:

Values are encoded as float and they are read properly.
Values are not updated.

Are you saying that initial values are acquired correctly but changes are not?

@sipvoip

For the most part it looks similar to me. You are missing advanced connection settings (...connection=10.88.64.46:502:0:600000:0:0:50) from the openHAB2 configuration. Splitting it into parts:

  • 0: interTransactionDelayMillis. Corresponds to timeBetweenTransactionsMillis in the new binding (tcp thing).
  • 600000: reconnectAfterMillis. Corresponds to reconnectAfterMillis in the new binding (tcp thing).
  • 0: interConnectDelayMillis. Corresponds to timeBetweenReconnectMillis in the new binding (tcp thing).
  • 0: connectMaxTries. Corresponds to connectMaxTries in the new binding. Should be >= 1 (tcp thing).
  • 50: connectTimeout. Corresponds to connectTimeoutMillis in the new binding (tcp thing).

Furthermore, 1.x binding allows great deal of configuration at item level as well – so that might matter for some configurations.

What kind of issues are you having?

Hi, I went over my configuration again and I misstyped mappnig from item to channel - that’s why updates were not propagated to item states.

Second issue I’ve got with reading multiple coils turned out to be catalog card bug - registers described in document do not match these returned by device. After adjustments everything seems ok. Card specifies registers 8200, 8204, 8208 (2008, 200C, 2010 in hex) while device returns values in registers 8200, 8202, 8204.
When I was trying to read values as specified in documentation registers didn’t match.

Everything looks good so far.
Once again, thanks for excellent work!

Cheers,
Lukasz

1 Like

Is “refresh” working correctly? I set mine to 100 and it looks like it is still trying once a second based on tcpdump.

Bridge modbus:tcp:basement [ host="10.88.64.46", port=502, id=1 ] {
  Bridge poller coils [ start=0, length=55, refresh=100, type="coil" ] {
    Thing data 00 [ readStart="0", readValueType="bit", writeStart="0", writeValueType="bit", writeType="coil" ]
    Thing data 01 [ readStart="1", readValueType="bit", writeStart="1", writeValueType="bit", writeType="coil" ]
    Thing data 02 [ readStart="2", readValueType="bit", writeStart="2", writeValueType="bit", writeType="coil" ]
    Thing data 03 [ readStart="3", readValueType="bit", writeStart="3", writeValueType="bit", writeType="coil" ]
    Thing data 04 [ readStart="4", readValueType="bit", writeStart="4", writeValueType="bit", writeType="coil" ]
    Thing data 05 [ readStart="5", readValueType="bit", writeStart="5", writeValueType="bit", writeType="coil" ]
    Thing data 06 [ readStart="6", readValueType="bit", writeStart="6", writeValueType="bit", writeType="coil" ]
    Thing data 07 [ readStart="7", readValueType="bit", writeStart="7", writeValueType="bit", writeType="coil" ]
    Thing data 08 [ readStart="8", readValueType="bit", writeStart="8", writeValueType="bit", writeType="coil" ]
    Thing data 09 [ readStart="9", readValueType="bit", writeStart="9", writeValueType="bit", writeType="coil" ]
    Thing data 10 [ readStart="10", readValueType="bit", writeStart="10", writeValueType="bit", writeType="coil" ]
    Thing data 11 [ readStart="11", readValueType="bit", writeStart="11", writeValueType="bit", writeType="coil" ]
    Thing data 12 [ readStart="12", readValueType="bit", writeStart="13", writeValueType="bit", writeType="coil" ]
    Thing data 13 [ readStart="13", readValueType="bit", writeStart="14", writeValueType="bit", writeType="coil" ]
    Thing data 14 [ readStart="14", readValueType="bit", writeStart="14", writeValueType="bit", writeType="coil" ]
    Thing data 15 [ readStart="15", readValueType="bit", writeStart="15", writeValueType="bit", writeType="coil" ]
    Thing data 16 [ readStart="16", readValueType="bit", writeStart="16", writeValueType="bit", writeType="coil" ]
    Thing data 17 [ readStart="17", readValueType="bit", writeStart="17", writeValueType="bit", writeType="coil" ]
    Thing data 18 [ readStart="18", readValueType="bit", writeStart="18", writeValueType="bit", writeType="coil" ]
    Thing data 29 [ readStart="19", readValueType="bit", writeStart="19", writeValueType="bit", writeType="coil" ]
    Thing data 20 [ readStart="20", readValueType="bit", writeStart="20", writeValueType="bit", writeType="coil" ]
    Thing data 21 [ readStart="21", readValueType="bit", writeStart="21", writeValueType="bit", writeType="coil" ]
  }
  Bridge poller ponet [ start=2072, length=8, refresh=100, type="coil" ] {
    Thing data 00 [ readStart="2072", readValueType="bit", writeStart="2072", writeValueType="bit", writeType="coil" ]
    Thing data 01 [ readStart="2073", readValueType="bit", writeStart="2073", writeValueType="bit", writeType="coil" ]
    Thing data 02 [ readStart="2074", readValueType="bit", writeStart="2074", writeValueType="bit", writeType="coil" ]
    Thing data 03 [ readStart="2075", readValueType="bit", writeStart="2075", writeValueType="bit", writeType="coil" ]
    Thing data 04 [ readStart="2076", readValueType="bit", writeStart="2076", writeValueType="bit", writeType="coil" ]
    Thing data 05 [ readStart="2077", readValueType="bit", writeStart="2077", writeValueType="bit", writeType="coil" ]
    Thing data 06 [ readStart="2078", readValueType="bit", writeStart="2078", writeValueType="bit", writeType="coil" ]
    Thing data 07 [ readStart="2079", readValueType="bit", writeStart="2079", writeValueType="bit", writeType="coil" ]
  }
}

Just checked with wireshark (love that tool) and I see Query for Read Coils almost exactly every 1 second even tho refresh is set to 100 and not 1000.

1 Like

Thanks for the excellent debugging! The refresh should work, this is something I have not noticed before.

  • What does the verbose logs say? Few seconds of logs is enough.
  • what openHAB version?
  • I assume you have latest binding and transport versions, from the marketplace.

Best

[root@lisa openhab2]# yum list installed |grep openHAB
openhab2.noarch 2.2.0-1 @openHAB-Stable

Yes, latest transport and binding.

grep for shed:coils:00

26-Jan-2018 12:48:27.294 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:number will be updated to '0' (type DecimalType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:27.295 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 12:48:27.295 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:string will be updated to '0' (type StringType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:27.295 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:contact will be updated to 'CLOSED' (type OpenClosedType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:27.296 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:rollershutter will be updated to '0' (type PercentType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:27.296 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:dimmer will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:27.296 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:switch will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:29.422 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:number will be updated to '0' (type DecimalType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:29.423 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 12:48:29.423 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:string will be updated to '0' (type StringType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:29.423 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:contact will be updated to 'CLOSED' (type OpenClosedType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:29.424 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:rollershutter will be updated to '0' (type PercentType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:29.424 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:dimmer will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:29.424 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:switch will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:31.556 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:number will be updated to '0' (type DecimalType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:31.557 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 12:48:31.557 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:string will be updated to '0' (type StringType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:31.557 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:contact will be updated to 'CLOSED' (type OpenClosedType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:31.558 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:rollershutter will be updated to '0' (type PercentType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:31.558 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:dimmer will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:31.558 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:switch will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:33.683 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:number will be updated to '0' (type DecimalType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:33.683 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 12:48:33.684 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:string will be updated to '0' (type StringType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:33.684 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:contact will be updated to 'CLOSED' (type OpenClosedType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:33.684 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:rollershutter will be updated to '0' (type PercentType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:33.684 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:dimmer will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:33.684 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:switch will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:35.811 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:number will be updated to '0' (type DecimalType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:35.811 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 12:48:35.812 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:string will be updated to '0' (type StringType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:35.812 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:contact will be updated to 'CLOSED' (type OpenClosedType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:35.812 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:rollershutter will be updated to '0' (type PercentType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:35.812 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:dimmer will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:35.812 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:switch will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:37.939 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:number will be updated to '0' (type DecimalType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:37.940 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 12:48:37.940 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:string will be updated to '0' (type StringType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:37.940 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:contact will be updated to 'CLOSED' (type OpenClosedType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:37.940 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:rollershutter will be updated to '0' (type PercentType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:37.940 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:dimmer will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:37.940 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:switch will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:40.087 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:number will be updated to '0' (type DecimalType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:40.087 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 12:48:40.087 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:string will be updated to '0' (type StringType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:40.087 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:contact will be updated to 'CLOSED' (type OpenClosedType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:40.087 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:rollershutter will be updated to '0' (type PercentType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:40.087 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:dimmer will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:40.088 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:switch will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:42.214 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:number will be updated to '0' (type DecimalType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:42.215 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 12:48:42.215 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:string will be updated to '0' (type StringType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:42.215 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:contact will be updated to 'CLOSED' (type OpenClosedType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:42.216 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:rollershutter will be updated to '0' (type PercentType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:42.216 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:dimmer will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'
26-Jan-2018 12:48:42.216 [TRACE] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:switch will be updated to 'OFF' (type OnOffType). Numeric state '0' and bool value 'false'

More debuging, as you can see from wireshark the query is almost exactly every second.

1081	40.012081638	10.88.64.4	10.88.64.49	Modbus/TCP	66	   Query: Trans: 37545; Unit:   4, Func:   1: Read Coils
1082	40.014052074	10.88.64.49	10.88.64.4	Modbus/TCP	65	Response: Trans: 37545; Unit:   4, Func:   1: Read Coils
1121	41.076132229	10.88.64.4	10.88.64.49	Modbus/TCP	66	   Query: Trans: 37549; Unit:   4, Func:   1: Read Coils
1122	41.078407158	10.88.64.49	10.88.64.4	Modbus/TCP	71	Response: Trans: 37549; Unit:   4, Func:   1: Read Coils
1161	42.140020022	10.88.64.4	10.88.64.49	Modbus/TCP	66	   Query: Trans: 37553; Unit:   4, Func:   1: Read Coils
1162	42.142667657	10.88.64.49	10.88.64.4	Modbus/TCP	65	Response: Trans: 37553; Unit:   4, Func:   1: Read Coils

However when I look at DEBUG logs I see at least the transformation was unsuccesful error every few seconds:

26-Jan-2018 13:34:55.799 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:34:57.929 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:00.056 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:02.183 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:04.311 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:06.439 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:08.567 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:10.696 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:12.824 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:14.951 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:17.079 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:19.207 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:21.335 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:23.463 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful
26-Jan-2018 13:35:25.592 [DEBUG] [nhab.binding.modbus.handler.ModbusDataThingHandler] - Thing modbus:data:shed:coils:00 'Modbus data', channel modbus:data:shed:coils:00:datetime will not be updated since transformation was unsuccesful

So not sure what the actual delay is on updates, but it’s at least 1 second if not longer.

Thank you. I was actually looking for log lines where it shows the poll period as seen by the binding… Can you please paste full logs (=ungrepped) for few seconds?

A few seconds:

https://drive.google.com/file/d/1Bm5qUHZCtYXC3WFtnWszFH6tQeQCUKT2/view?usp=sharing

1 Like

From startup:

https://drive.google.com/file/d/1y_5H6LULgMuT78uv-71JYDilQ0chnbfE/view?usp=sharing

1 Like

@sipvoip the logging not setup correctly – cannot see TRACE level logs from modbus transport. Please follow the instructions in the docs.

Otherwise it was good that you included logs from startup as well as from continuous operation.

Best,
Sami

EDIT: cannot reproduce your issue, so looking forward seeing the logs.

Sorry, just had TRACE on modbus binding.

https://drive.google.com/file/d/1yheej55vIBO6BPJIgfF-OaTCFFnJ-i6I/view?usp=sharing

Hmm, it seems to take a long time to get an connection (you can grep logs with Connection received). It’s a bit hard to say why that would be…

grep "Connection received" modbus.log |cut -d '!' -f2
 Connection received in 13 ms [operation ID 9e6f8235-52a3-4726-897b-1a1420e9e3fc]
 Connection received in 1081 ms [operation ID f90b815f-5ad5-432f-84ec-0d19b432e4e5]
 Connection received in 2126 ms [operation ID c5ee89f1-cc9e-4b0a-925d-4f1784c55ac6]
 Connection received in 3210 ms [operation ID 3ee22ed0-02e0-4946-a6e6-92e3553b19d7]
 Connection received in 4274 ms [operation ID cf9a5b43-11e2-4855-a406-fb6363756d14]
 Connection received in 5318 ms [operation ID 5335c037-868d-4e98-942c-4fa09cef09da]
 Connection received in 5344 ms [operation ID c5a7aeb2-d0b1-4ec8-88ae-662f91995538]
...

How about if would reuse the same TCP connection, similarly to your old configuration?

I actually already gave tips for converting the configuration to the new binding here. Previously you had some connection used for 10 minutes, before it was re-connected.

Best,
Sami

EDIT: I can also see that there is some “backlog” for the initial REFRESH commands, posted by openHAB itself on initialization. You can grep with POLL MONITOR:

$ grep "POLL MONITOR" modbus.log |grep queue
27-Jan-2018 08:20:04.491 [TRACE] [hab.io.transport.modbus.internal.ModbusManagerImpl] - POLL MONITOR: scheduledThreadPoolExecutor queue size: 0, remaining space 2147483647. Active threads 1
27-Jan-2018 08:20:04.491 [TRACE] [hab.io.transport.modbus.internal.ModbusManagerImpl] - POLL MONITOR: callbackThreadPool queue size: 0, remaining space 2147483647. Active threads 0
27-Jan-2018 08:20:34.541 [TRACE] [hab.io.transport.modbus.internal.ModbusManagerImpl] - POLL MONITOR: scheduledThreadPoolExecutor queue size: 91, remaining space 2147483647. Active threads 5
27-Jan-2018 08:20:34.543 [TRACE] [hab.io.transport.modbus.internal.ModbusManagerImpl] - POLL MONITOR: callbackThreadPool queue size: 0, remaining space 2147483647. Active threads 1
27-Jan-2018 08:21:05.424 [TRACE] [hab.io.transport.modbus.internal.ModbusManagerImpl] - POLL MONITOR: scheduledThreadPoolExecutor queue size: 53, remaining space 2147483647. Active threads 5
27-Jan-2018 08:21:05.426 [TRACE] [hab.io.transport.modbus.internal.ModbusManagerImpl] - POLL MONITOR: callbackThreadPool queue size: 0, remaining space 2147483647. Active threads 1

Perhaps that slows down normal polling as well… Based on this the poll rate might come back to normal eventually.

I think I want to optimize that “startup behaviour” for sure, now each data thing will introduce one poll to the queue.
EDIT: cannot reproduce this spamming of poll tasks. Perhaps this is related to slow connections…

I was able to get down to 25 ms poll, however I am seeing a LOT of errors in the log. The odd part is I am not seeing the same errors in wireshark.

https://drive.google.com/file/d/1JL_H9wyY6QMMCRy9pFLrCQtQgZDHwX64/view?usp=sharing

modbus.things

Bridge modbus:tcp:basement [ host="10.88.64.46", port=502, timeBetwenTransactionsMillis=50, reconnectAfterMills=600000, connectTimeoutMillis=100, id=1 ] {
  Bridge poller coils [ start=0, length=55, refresh=100, type="coil" ] {
    Thing data 00 [ readStart="0", readValueType="bit", writeStart="0", writeValueType="bit", writeType="coil" ]
    Thing data 01 [ readStart="1", readValueType="bit", writeStart="1", writeValueType="bit", writeType="coil" ]
    Thing data 02 [ readStart="2", readValueType="bit", writeStart="2", writeValueType="bit", writeType="coil" ]
    Thing data 03 [ readStart="3", readValueType="bit", writeStart="3", writeValueType="bit", writeType="coil" ]
    Thing data 04 [ readStart="4", readValueType="bit", writeStart="4", writeValueType="bit", writeType="coil" ]
    Thing data 05 [ readStart="5", readValueType="bit", writeStart="5", writeValueType="bit", writeType="coil" ]
    Thing data 06 [ readStart="6", readValueType="bit", writeStart="6", writeValueType="bit", writeType="coil" ]
    Thing data 07 [ readStart="7", readValueType="bit", writeStart="7", writeValueType="bit", writeType="coil" ]
    Thing data 08 [ readStart="8", readValueType="bit", writeStart="8", writeValueType="bit", writeType="coil" ]
    Thing data 09 [ readStart="9", readValueType="bit", writeStart="9", writeValueType="bit", writeType="coil" ]
    Thing data 10 [ readStart="10", readValueType="bit", writeStart="10", writeValueType="bit", writeType="coil" ]
    Thing data 11 [ readStart="11", readValueType="bit", writeStart="11", writeValueType="bit", writeType="coil" ]
    Thing data 12 [ readStart="12", readValueType="bit", writeStart="13", writeValueType="bit", writeType="coil" ]
    Thing data 13 [ readStart="13", readValueType="bit", writeStart="14", writeValueType="bit", writeType="coil" ]
    Thing data 14 [ readStart="14", readValueType="bit", writeStart="14", writeValueType="bit", writeType="coil" ]
    Thing data 15 [ readStart="15", readValueType="bit", writeStart="15", writeValueType="bit", writeType="coil" ]
    Thing data 16 [ readStart="16", readValueType="bit", writeStart="16", writeValueType="bit", writeType="coil" ]
    Thing data 17 [ readStart="17", readValueType="bit", writeStart="17", writeValueType="bit", writeType="coil" ]
    Thing data 18 [ readStart="18", readValueType="bit", writeStart="18", writeValueType="bit", writeType="coil" ]
    Thing data 29 [ readStart="19", readValueType="bit", writeStart="19", writeValueType="bit", writeType="coil" ]
    Thing data 20 [ readStart="20", readValueType="bit", writeStart="20", writeValueType="bit", writeType="coil" ]
    Thing data 21 [ readStart="21", readValueType="bit", writeStart="21", writeValueType="bit", writeType="coil" ]
    Thing data 51 [ readStart="51", readValueType="bit", writeStart="51", writeValueType="bit", writeType="coil" ]
    Thing data 52 [ readStart="52", readValueType="bit", writeStart="52", writeValueType="bit", writeType="coil" ]
    Thing data 53 [ readStart="53", readValueType="bit", writeStart="53", writeValueType="bit", writeType="coil" ]
  }
  Bridge poller ponet [ start=2072, length=8, refresh=100, type="coil" ] {
    Thing data 00 [ readStart="2072", readValueType="bit", writeStart="2072", writeValueType="bit", writeType="coil" ]
    Thing data 01 [ readStart="2073", readValueType="bit", writeStart="2073", writeValueType="bit", writeType="coil" ]
    Thing data 02 [ readStart="2074", readValueType="bit", writeStart="2074", writeValueType="bit", writeType="coil" ]
    Thing data 03 [ readStart="2075", readValueType="bit", writeStart="2075", writeValueType="bit", writeType="coil" ]
    Thing data 04 [ readStart="2076", readValueType="bit", writeStart="2076", writeValueType="bit", writeType="coil" ]
    Thing data 05 [ readStart="2077", readValueType="bit", writeStart="2077", writeValueType="bit", writeType="coil" ]
    Thing data 06 [ readStart="2078", readValueType="bit", writeStart="2078", writeValueType="bit", writeType="coil" ]
    Thing data 07 [ readStart="2079", readValueType="bit", writeStart="2079", writeValueType="bit", writeType="coil" ]
  }
}

Bridge modbus:tcp:first [ host="10.88.64.47", port=502, timeBetwenTransactionsMills=50, reconnectAfterMillis=600000, connectTimeoutMillis=100, id=2 ] {
  Bridge poller coils [ start=0, length=55, refresh=100, type="coil" ] {
    Thing data 00 [ readStart="0", readValueType="bit", writeStart="0", writeValueType="bit", writeType="coil" ]
    Thing data 01 [ readStart="1", readValueType="bit", writeStart="1", writeValueType="bit", writeType="coil" ]
    Thing data 02 [ readStart="2", readValueType="bit", writeStart="2", writeValueType="bit", writeType="coil" ]
    Thing data 03 [ readStart="3", readValueType="bit", writeStart="3", writeValueType="bit", writeType="coil" ]
    Thing data 04 [ readStart="4", readValueType="bit", writeStart="4", writeValueType="bit", writeType="coil" ]
    Thing data 05 [ readStart="5", readValueType="bit", writeStart="5", writeValueType="bit", writeType="coil" ]
    Thing data 06 [ readStart="6", readValueType="bit", writeStart="6", writeValueType="bit", writeType="coil" ]
    Thing data 07 [ readStart="7", readValueType="bit", writeStart="7", writeValueType="bit", writeType="coil" ]
    Thing data 08 [ readStart="8", readValueType="bit", writeStart="8", writeValueType="bit", writeType="coil" ]
    Thing data 09 [ readStart="9", readValueType="bit", writeStart="9", writeValueType="bit", writeType="coil" ]
    Thing data 10 [ readStart="10", readValueType="bit", writeStart="10", writeValueType="bit", writeType="coil" ]
    Thing data 11 [ readStart="11", readValueType="bit", writeStart="11", writeValueType="bit", writeType="coil" ]
    Thing data 12 [ readStart="12", readValueType="bit", writeStart="13", writeValueType="bit", writeType="coil" ]
    Thing data 13 [ readStart="13", readValueType="bit", writeStart="14", writeValueType="bit", writeType="coil" ]
    Thing data 14 [ readStart="14", readValueType="bit", writeStart="14", writeValueType="bit", writeType="coil" ]
    Thing data 15 [ readStart="15", readValueType="bit", writeStart="15", writeValueType="bit", writeType="coil" ]
    Thing data 16 [ readStart="16", readValueType="bit", writeStart="16", writeValueType="bit", writeType="coil" ]
    Thing data 17 [ readStart="17", readValueType="bit", writeStart="17", writeValueType="bit", writeType="coil" ]
    Thing data 18 [ readStart="18", readValueType="bit", writeStart="18", writeValueType="bit", writeType="coil" ]
    Thing data 29 [ readStart="19", readValueType="bit", writeStart="19", writeValueType="bit", writeType="coil" ]
    Thing data 20 [ readStart="20", readValueType="bit", writeStart="20", writeValueType="bit", writeType="coil" ]
    Thing data 21 [ readStart="21", readValueType="bit", writeStart="21", writeValueType="bit", writeType="coil" ]
    Thing data 22 [ readStart="22", readValueType="bit", writeStart="22", writeValueType="bit", writeType="coil" ]
    Thing data 23 [ readStart="23", readValueType="bit", writeStart="23", writeValueType="bit", writeType="coil" ]
    Thing data 24 [ readStart="24", readValueType="bit", writeStart="24", writeValueType="bit", writeType="coil" ]
    Thing data 25 [ readStart="25", readValueType="bit", writeStart="25", writeValueType="bit", writeType="coil" ]
    Thing data 26 [ readStart="26", readValueType="bit", writeStart="26", writeValueType="bit", writeType="coil" ]
  }
  Bridge poller ponet [ start=2072, length=8, refresh=100, type="coil" ] {
    Thing data 00 [ readStart="2072", readValueType="bit", writeStart="2072", writeValueType="bit", writeType="coil" ]
    Thing data 01 [ readStart="2073", readValueType="bit", writeStart="2073", writeValueType="bit", writeType="coil" ]
    Thing data 02 [ readStart="2074", readValueType="bit", writeStart="2074", writeValueType="bit", writeType="coil" ]
    Thing data 03 [ readStart="2075", readValueType="bit", writeStart="2075", writeValueType="bit", writeType="coil" ]
    Thing data 04 [ readStart="2076", readValueType="bit", writeStart="2076", writeValueType="bit", writeType="coil" ]
    Thing data 05 [ readStart="2077", readValueType="bit", writeStart="2077", writeValueType="bit", writeType="coil" ]
    Thing data 06 [ readStart="2078", readValueType="bit", writeStart="2078", writeValueType="bit", writeType="coil" ]
    Thing data 07 [ readStart="2079", readValueType="bit", writeStart="2079", writeValueType="bit", writeType="coil" ]
  }
}

Bridge modbus:tcp:second [ host="10.88.64.48", port=502, timeBetwenTransactionsMills=50, reconnectAfterMillis=600000, connectTimeoutMillis=100, id=3 ] {
  Bridge poller coils [ start=0, length=55, refresh=100, type="coil" ] {
    Thing data 00 [ readStart="0", readValueType="bit", writeStart="0", writeValueType="bit", writeType="coil" ]
    Thing data 01 [ readStart="1", readValueType="bit", writeStart="1", writeValueType="bit", writeType="coil" ]
    Thing data 02 [ readStart="2", readValueType="bit", writeStart="2", writeValueType="bit", writeType="coil" ]
    Thing data 03 [ readStart="3", readValueType="bit", writeStart="3", writeValueType="bit", writeType="coil" ]
    Thing data 04 [ readStart="4", readValueType="bit", writeStart="4", writeValueType="bit", writeType="coil" ]
    Thing data 05 [ readStart="5", readValueType="bit", writeStart="5", writeValueType="bit", writeType="coil" ]
    Thing data 06 [ readStart="6", readValueType="bit", writeStart="6", writeValueType="bit", writeType="coil" ]
    Thing data 07 [ readStart="7", readValueType="bit", writeStart="7", writeValueType="bit", writeType="coil" ]
    Thing data 08 [ readStart="8", readValueType="bit", writeStart="8", writeValueType="bit", writeType="coil" ]
    Thing data 09 [ readStart="9", readValueType="bit", writeStart="9", writeValueType="bit", writeType="coil" ]
    Thing data 10 [ readStart="10", readValueType="bit", writeStart="10", writeValueType="bit", writeType="coil" ]
    Thing data 11 [ readStart="11", readValueType="bit", writeStart="11", writeValueType="bit", writeType="coil" ]
    Thing data 12 [ readStart="12", readValueType="bit", writeStart="13", writeValueType="bit", writeType="coil" ]
    Thing data 13 [ readStart="13", readValueType="bit", writeStart="14", writeValueType="bit", writeType="coil" ]
    Thing data 14 [ readStart="14", readValueType="bit", writeStart="14", writeValueType="bit", writeType="coil" ]
    Thing data 15 [ readStart="15", readValueType="bit", writeStart="15", writeValueType="bit", writeType="coil" ]
    Thing data 16 [ readStart="16", readValueType="bit", writeStart="16", writeValueType="bit", writeType="coil" ]
    Thing data 17 [ readStart="17", readValueType="bit", writeStart="17", writeValueType="bit", writeType="coil" ]
    Thing data 18 [ readStart="18", readValueType="bit", writeStart="18", writeValueType="bit", writeType="coil" ]
    Thing data 29 [ readStart="19", readValueType="bit", writeStart="19", writeValueType="bit", writeType="coil" ]
    Thing data 20 [ readStart="20", readValueType="bit", writeStart="20", writeValueType="bit", writeType="coil" ]
    Thing data 21 [ readStart="21", readValueType="bit", writeStart="21", writeValueType="bit", writeType="coil" ]
    Thing data 22 [ readStart="22", readValueType="bit", writeStart="22", writeValueType="bit", writeType="coil" ]
    Thing data 23 [ readStart="23", readValueType="bit", writeStart="23", writeValueType="bit", writeType="coil" ]
    Thing data 24 [ readStart="24", readValueType="bit", writeStart="24", writeValueType="bit", writeType="coil" ]
    Thing data 25 [ readStart="25", readValueType="bit", writeStart="25", writeValueType="bit", writeType="coil" ]
    Thing data 26 [ readStart="26", readValueType="bit", writeStart="26", writeValueType="bit", writeType="coil" ]
    Thing data 27 [ readStart="27", readValueType="bit", writeStart="27", writeValueType="bit", writeType="coil" ]
    Thing data 28 [ readStart="28", readValueType="bit", writeStart="28", writeValueType="bit", writeType="coil" ]
    Thing data 29 [ readStart="29", readValueType="bit", writeStart="29", writeValueType="bit", writeType="coil" ]
    Thing data 30 [ readStart="30", readValueType="bit", writeStart="30", writeValueType="bit", writeType="coil" ]
    Thing data 31 [ readStart="31", readValueType="bit", writeStart="31", writeValueType="bit", writeType="coil" ]
    Thing data 32 [ readStart="32", readValueType="bit", writeStart="32", writeValueType="bit", writeType="coil" ]
    Thing data 51 [ readStart="51", readValueType="bit", writeStart="51", writeValueType="bit", writeType="coil" ]
    Thing data 52 [ readStart="52", readValueType="bit", writeStart="52", writeValueType="bit", writeType="coil" ]
  }
  Bridge poller ponet [ start=2072, length=8, refresh=100, type="coil" ] {
    Thing data 00 [ readStart="2072", readValueType="bit", writeStart="2072", writeValueType="bit", writeType="coil" ]
    Thing data 01 [ readStart="2073", readValueType="bit", writeStart="2073", writeValueType="bit", writeType="coil" ]
    Thing data 02 [ readStart="2074", readValueType="bit", writeStart="2074", writeValueType="bit", writeType="coil" ]
    Thing data 03 [ readStart="2075", readValueType="bit", writeStart="2075", writeValueType="bit", writeType="coil" ]
    Thing data 04 [ readStart="2076", readValueType="bit", writeStart="2076", writeValueType="bit", writeType="coil" ]
    Thing data 05 [ readStart="2077", readValueType="bit", writeStart="2077", writeValueType="bit", writeType="coil" ]
    Thing data 06 [ readStart="2078", readValueType="bit", writeStart="2078", writeValueType="bit", writeType="coil" ]
    Thing data 07 [ readStart="2079", readValueType="bit", writeStart="2079", writeValueType="bit", writeType="coil" ]
  }
}

Bridge modbus:tcp:shed [ host="10.88.64.49", port=502, timeBetwenTransactionsMills=50, reconnectAfterMillis=600000, connectTimeoutMillis=100, id=4 ] {
  Bridge poller coils [ start=0, length=55, refresh=100, type="coil" ] {
    Thing data 00 [ readStart="0", readValueType="bit", writeStart="0", writeValueType="bit", writeType="coil" ]
    Thing data 01 [ readStart="1", readValueType="bit", writeStart="1", writeValueType="bit", writeType="coil" ]
    Thing data 02 [ readStart="2", readValueType="bit", writeStart="2", writeValueType="bit", writeType="coil" ]
    Thing data 03 [ readStart="3", readValueType="bit", writeStart="3", writeValueType="bit", writeType="coil" ]
    Thing data 04 [ readStart="4", readValueType="bit", writeStart="4", writeValueType="bit", writeType="coil" ]
    Thing data 05 [ readStart="5", readValueType="bit", writeStart="5", writeValueType="bit", writeType="coil" ]
    Thing data 06 [ readStart="6", readValueType="bit", writeStart="6", writeValueType="bit", writeType="coil" ]
    Thing data 07 [ readStart="7", readValueType="bit", writeStart="7", writeValueType="bit", writeType="coil" ]
    Thing data 08 [ readStart="8", readValueType="bit", writeStart="8", writeValueType="bit", writeType="coil" ]
    Thing data 09 [ readStart="9", readValueType="bit", writeStart="9", writeValueType="bit", writeType="coil" ]
    Thing data 10 [ readStart="10", readValueType="bit", writeStart="10", writeValueType="bit", writeType="coil" ]
  }
  Bridge poller ponet [ start=2072, length=8, refresh=100, type="coil" ] {
    Thing data 00 [ readStart="2072", readValueType="bit", writeStart="2072", writeValueType="bit", writeType="coil" ]
    Thing data 01 [ readStart="2073", readValueType="bit", writeStart="2073", writeValueType="bit", writeType="coil" ]
    Thing data 02 [ readStart="2074", readValueType="bit", writeStart="2074", writeValueType="bit", writeType="coil" ]
    Thing data 03 [ readStart="2075", readValueType="bit", writeStart="2075", writeValueType="bit", writeType="coil" ]
    Thing data 04 [ readStart="2076", readValueType="bit", writeStart="2076", writeValueType="bit", writeType="coil" ]
    Thing data 05 [ readStart="2077", readValueType="bit", writeStart="2077", writeValueType="bit", writeType="coil" ]
    Thing data 06 [ readStart="2078", readValueType="bit", writeStart="2078", writeValueType="bit", writeType="coil" ]
    Thing data 07 [ readStart="2079", readValueType="bit", writeStart="2079", writeValueType="bit", writeType="coil" ]
  }
}
1 Like

Hi!

The log is full of connection timeout errors. Actually all the errors are due to those.

Default timeout for connection is 10 seconds (or connectTimeoutMillis=10000). In your configuration that is 100 ms, perhaps it is too aggressive for your slave?

I would try out with the default connection timeout.

Best,
Sami

EDIT: Btw, you throttling the polling to 50 ms, not 25. See timeBetwenTransactionsMills.