Modbus MOXA E2212

Hello, I want to integrate a Modbus in OPENHAB.

The device is a MOXA E2212

The modbus addresses are the following.

ioLogik E2212 Modbus Mapping
0xxxx Read/Write Coils (Functions 1, 5, 15)

Reference Address Data Type Description
00001 0x0000 1 bit “CH0 DO value 0: off 1: on”
00002 0x0001 1 bit “CH1 DO value 0: off 1: on”
00003 0x0002 1 bit “CH2 DO value 0: off 1: on”
00004 0x0003 1 bit “CH3 DO value 0: off 1: on”
00005 0x0004 1 bit “CH4 DO value 0: off 1: on”
00006 0x0005 1 bit “CH5 DO value 0: off 1: on”
00007 0x0006 1 bit “CH6 DO value 0: off 1: on”
00008 0x0007 1 bit “CH7 DO value 0: off 1: on”
00009 0x0008 1 bit “CH8 DO value 0: off 1: on”
00010 0x0009 1 bit “CH9 DO value 0: off 1: on”
00011 0x000A 1 bit “CH10 DO value 0: off 1: on”
00012 0x000B 1 bit “CH11 DO value 0: off 1: on”

1xxxx Read Only Coils (Function 2)

Reference Address Data Type Description
10001 0x0000 1 bit CH0 DI value
10002 0x0001 1 bit CH1 DI value
10003 0x0002 1 bit CH2 DI value
10004 0x0003 1 bit CH3 DI value
10005 0x0004 1 bit CH4 DI value
10006 0x0005 1 bit CH5 DI value
10007 0x0006 1 bit CH6 DI value
10008 0x0007 1 bit CH7 DI value
10009 0x0008 1 bit CH8 DI value
10010 0x0009 1 bit CH9 DI value
10011 0x000A 1 bit CH10 DI value
10012 0x000B 1 bit CH11 DI value

I have configured the following:

modbus.things

Bridge modbus:tcp:garten [ host="192.168.0.12", port=502, id=1 ] {
    Bridge poller coils [ start=0, length=4, refresh=1000, type="coil" ] {
		  Thing data 12_0[ readStart="0", readValueType="bit", writeStart="0", writeValueType="bit", writeType="coil" ]
      Thing data 12_1[ readStart="1", readValueType="bit", writeStart="1", writeValueType="bit", writeType="coil" ]
		  Thing data 12_2[ readStart="2", readValueType="bit", writeStart="2", writeValueType="bit", writeType="coil" ]
		  Thing data 12_3[ readStart="3", readValueType="bit", writeStart="3", writeValueType="bit", writeType="coil" ]	
    }

	 Bridge poller discreteInputs [ start=0, length=4, refresh=1000, type="discrete" ] {
      Thing data di0 [ readStart="0", readValueType="bit" ]
      Thing data di1 [ readStart="1", readValueType="bit" ]
      Thing data di2 [ readStart="2", readValueType="bit" ]
		  Thing data di3 [ readStart="3", readValueType="bit" ]
    }
}

and

modbus.items

//DO 
Number Moxa_IO_12_0  { channel="modbus:data:garten:coils:12_0:number" , autopudate="true"}
Number Moxa_IO_12_1  { channel="modbus:data:garten:coils:12_1:number" , autopudate="true"}
Number Moxa_IO_12_2  { channel="modbus:data:garten:coils:12_2:number" , autopudate="true"}
Number Moxa_IO_12_3  { channel="modbus:data:garten:coils:12_3:number" , autopudate="true"}

//DI
Contact Moxa_Garten_DI0  { channel="modbus:data:garten:discreteInputs:di0:contact" , autopudate="true"}
Contact Moxa_Garten_DI1  { channel="modbus:data:garten:discreteInputs:di1:contact" , autopudate="true"}
Contact Moxa_Garten_DI2  { channel="modbus:data:garten:discreteInputs:di2:contact" , autopudate="true"}
Contact Moxa_Garten_DI3  { channel="modbus:data:garten:discreteInputs:di3:contact" , autopudate="true"}

but it does not work. the values ​​are not updated and are not displayed. what am I doing wrong?

Have you looked at the logs?

I have not found any logging in the error. I recently switched to OPEN HAB.

This ist openhab.log wenn refresh a IO of the modbus

2019-04-11 10:22:41.159 [WARN ] [rest.core.internal.item.ItemResource] - Receive d HTTP POST request at ‘items/Moxa_IO_12_1’ with an invalid status value ‘ON’.
2019-04-11 10:22:41.743 [WARN ] [rest.core.internal.item.ItemResource] - Receive d HTTP POST request at ‘items/Moxa_IO_12_1’ with an invalid status value ‘ON’.

Now i change from Number to Switch

Switch Moxa_IO_12_0 { channel=“modbus:data:garten:coils:12_0:switch” , autopudate=“true”}
Switch Moxa_IO_12_1 { channel=“modbus:data:garten:coils:12_1:switch” , autopudate=“true”}
Switch Moxa_IO_12_2 { channel=“modbus:data:garten:coils:12_2:switch” , autopudate=“true”}
Switch Moxa_IO_12_3 { channel=“modbus:data:garten:coils:12_3:switch” , autopudate=“true”}

But it still does not update

Reading is now and will be updated but the writing of the exit is not yet.

Bridge modbus:tcp:garten [ host=“192.168.0.12”, port=502, id=1 ] {
Bridge poller coils [ start=0, length=30, refresh=1000, type=“coil” ] {
Thing data 12_do0[ readStart=“0”, readValueType=“bit”, writeStart=“24”, writeValueType=“bit”, writeType=“coil” ]
Thing data 12_do1[ readStart=“1”, readValueType=“bit”, writeStart=“25”, writeValueType=“bit”, writeType=“coil” ]
Thing data 12_do2[ readStart=“2”, readValueType=“bit”, writeStart=“26”, writeValueType=“bit”, writeType=“coil” ]
Thing data 12_do3[ readStart=“3”, readValueType=“bit”, writeStart=“27”, writeValueType=“bit”, writeType=“coil” ]
}

 Bridge poller discreteInputs [ start=0, length=4, refresh=1000, type="discrete" ] {
  Thing data 12_di0 [ readStart="0", readValueType="bit" ]
  Thing data 12_di1 [ readStart="1", readValueType="bit" ]
  Thing data 12_di2 [ readStart="2", readValueType="bit" ]
	  Thing data 12_di3 [ readStart="3", readValueType="bit" ]
}

}

//DO
Switch Moxa_Garten_DO0 { channel=“modbus:data:garten:coils:12_do0:switch” , autopudate=“true”}
Switch Moxa_Garten_DO1 { channel=“modbus:data:garten:coils:12_do1:switch” , autopudate=“true”}
Switch Moxa_Garten_DO2 { channel=“modbus:data:garten:coils:12_do2:switch” , autopudate=“true”}
Switch Moxa_Garten_DO3 { channel=“modbus:data:garten:coils:12_do3:switch” , autopudate=“true”}

//DI
Contact Moxa_Garten_DI0 { channel=“modbus:data:garten:discreteInputs:12_di0:contact” , autopudate=“true”}
Contact Moxa_Garten_DI1 { channel=“modbus:data:garten:discreteInputs:12_di1:contact” , autopudate=“true”}
Contact Moxa_Garten_DI2 { channel=“modbus:data:garten:discreteInputs:12_di2:contact” , autopudate=“true”}
Contact Moxa_Garten_DI3 { channel=“modbus:data:garten:discreteInputs:12_di3:contact” , autopudate=“true”}

Please try to format your messages better with code fences. It’s much easier to read.

I still suggest you to get familiar with different logging levels. See the troubleshoot section in modbus binding documentation.