[SOLVED] openHAB2 modbus with Arduino slave problem

Hello,
I have openHAB2 on Raspberry Pi 2 and connect to /dev/USB0 converter RS485 to USB and line A and B is connested to MAX485 and from MAX485 to RX and TX and DE PIN 2 to Arduino with sketch:

#include <ModbusRtu.h>

uint16_t au16data[1];

Modbus slave(1,0,2);
void setup() {
  pinMode(11, OUTPUT);
  digitalWrite(11, LOW );
  slave.begin( 19200 );
  au16data[0] = 1;
}

void loop() {
if (slave.poll( au16data, 1 ))
{
  digitalWrite( 11, bitRead( au16data[0], 0 ));
}
}

and it’s work fine when is connected to my PC whit software ModbusMaster but when is connected to Raspberry Pi and start openHAB2 snapshot with configuration in /opt/openhab2/conf/services/modbus.cfg

poll=5000
serial.slave1.connection=/dev/ttyUSB0:19200:8:even:1:rtu
serial.slave1.id=1
serial.slave1.start=0
serial.slave1.length=1
serial.slave1.type=coil

and items:

Group    FF_Modbus     "Modbus"     (All)
Switch  MB_CL16        "CL16"             (FF_Modbus){modbus="slave1:0"}

and sitemap:

sitemap demo label="Main Menu"
{

    Frame {
        Group item=FF_Modbus icon="attic"
    }

    Frame {
        Switch item= MB_CL16
    }

}

i have problem in my logs:

2016-10-06 13:14:50.624 [WARN ] [.binding.modbus.internal.ModbusSlave] - ModbusSlave (slave1) not connected -- aborting read request net.wimpi.modbus.msg.ReadCoilsRequest@993a26. Endpoint ModbusSerialSlaveEndpoint@13b67c4[portName=/dev/ttyUSB0]
2016-10-06 13:14:55.646 [ERROR] [et.wimpi.modbus.net.SerialConnection] - Could not get port identifier, maybe insufficient permissions. null
2016-10-06 13:14:55.656 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - connect try 1/3 error: Could not get port identifier, maybe insufficient permissions. null. Connection SerialConnection@1661edd[portName=/dev/ttyUSB0,port=<null>]. Endpoint ModbusSerialSlaveEndpoint@13b67c4[portName=/dev/ttyUSB0]
2016-10-06 13:14:55.712 [ERROR] [et.wimpi.modbus.net.SerialConnection] - Could not get port identifier, maybe insufficient permissions. null
2016-10-06 13:14:55.719 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - connect try 2/3 error: Could not get port identifier, maybe insufficient permissions. null. Connection SerialConnection@1661edd[portName=/dev/ttyUSB0,port=<null>]. Endpoint ModbusSerialSlaveEndpoint@13b67c4[portName=/dev/ttyUSB0]
2016-10-06 13:14:55.776 [ERROR] [et.wimpi.modbus.net.SerialConnection] - Could not get port identifier, maybe insufficient permissions. null
2016-10-06 13:14:55.782 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - connect try 3/3 error: Could not get port identifier, maybe insufficient permissions. null. Connection SerialConnection@1661edd[portName=/dev/ttyUSB0,port=<null>]. Endpoint ModbusSerialSlaveEndpoint@13b67c4[portName=/dev/ttyUSB0]
2016-10-06 13:14:55.788 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - re-connect reached max tries 3, throwing last error: Could not get port identifier, maybe insufficient permissions. null. Connection SerialConnection@1661edd[portName=/dev/ttyUSB0,port=<null>]. Endpoint ModbusSerialSlaveEndpoint@13b67c4[portName=/dev/ttyUSB0]
2016-10-06 13:14:55.794 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - Error connecting connection SerialConnection@1661edd[portName=/dev/ttyUSB0,port=<null>] for endpoint ModbusSerialSlaveEndpoint@13b67c4[portName=/dev/ttyUSB0]: Could not get port identifier, maybe insufficient permissions. null
2016-10-06 13:14:55.802 [WARN ] [.binding.modbus.internal.ModbusSlave] - ModbusSlave (slave1): Error getting a new connection for endpoint ModbusSerialSlaveEndpoint@13b67c4[portName=/dev/ttyUSB0]. Error was: Unable to validate object

I do not know what I can do to it worked, please help :frowning:
My USB permissions:

pi@raspberrypi /dev $ ls -la |grep USB
crw-rw---T  1 root dialout 188,   0 Oct  6 12:28 ttyUSB0
pi@raspberrypi /dev $

What Extensions must be install to runing modbus because I have only: Modbus Binding ?

OK, USB0 must have owner openhab:openhab.
But i do not understand how to must look my item file whene i wont send to node on arduino “1” to turn on light and “0” to turn off and how asc about actualy state on node when i have sketch like on the firs post. Coul somebady help me ?

OK its works !!!
My configuration:

modbus.cfg

modbus:poll=5000
modbus:serial.slave1.connection=/dev/ttyUSB0:19200:8:none:1:rtu
modbus:serial.slave1.type=coil
modbus:serial.slave1.id=1
modbus:serial.slave1.start=0
modbus:serial.slave1.length=5

modbus:serial.slave2.connection=/dev/ttyUSB0:19200:8:none:1:rtu
modbus:serial.slave2.type=coil
modbus:serial.slave2.id=2
modbus:serial.slave2.start=0
modbus:serial.slave2.length=5

led.items

Switch Slave1 { modbus="slave1:0" }
Switch Slave2 { modbus="slave2:0" }

led.sitemap

sitemap demo label="Modbus Smart House"
{
Frame {
    Switch item= Slave1

}
Frame {
    Switch item= Slave2

}
}

Arduino sketch Slave1:

#include <ModbusRtu.h>


uint16_t au16data[1];

Modbus slave(1,0,2);
void setup() {
  pinMode(11, OUTPUT);
  digitalWrite(11, LOW );
  Serial.begin(19200);
  slave.begin( 19200 ); // baud-rate at 19200
  au16data[0] = 0;
}

void loop() {
if (slave.poll( au16data, 1 ))
{
  digitalWrite( 11, bitRead( au16data[0], 0 ));
}
}

and Slave2:

#include <ModbusRtu.h>


uint16_t au16data[1];

Modbus slave(2,0,2);
void setup() {
  pinMode(11, OUTPUT);
  digitalWrite(11, LOW );
  Serial.begin(19200);
  slave.begin( 19200 ); // baud-rate at 19200
  au16data[0] = 0;
}

void loop() {
if (slave.poll( au16data, 1 ))
{
  digitalWrite( 11, bitRead( au16data[0], 0 ));
}
}

and now how to do when on one node is 2 leds one with button and one ds18b20 and light sensor ?

swiety can you explain how do you make it work? About hardware, connections ans software side. I have several USB to Modbus adapters but I can’t make it work with your example.

Can you clarify your last question, please?

vzorglub do you have this working? Can you help me?

No, I am not using this, I was trying to help with the last question from @swiety but I didn’t realized it was 1 year old already.