OH3 współpraca z RS...
 
Powiadomienia
Wyczyść wszystko

OH3 współpraca z RS485 HAT 2-kanały izolowane na SC16is752

3 Wpisów
2 Użytkownicy
2 Reactions
868 Wyświetleń
(@andry)
Wpisów: 16
Praktykant
Autor tematu
 

Mam pytanie. Na moim RPi4 mam zainstalowany OH3 oraz 2-CH RS485 HAT https://www.waveshare.com/2-ch-rs485-hat.htm

Próbuję połączyć się nim przez MODBUS RTU. Jednak po ustawieniu w pliku modbus.things

Bridge modbus:serial:localSerial [port="/dev/ttySC1", baud=9600, stopBits="1", parity="none", dataBits=8, encoding="rtu"]
{
Bridge poller Licznik [ start=0, length=1, refresh=6000, type="holding" ]
{
Thing data Energia [ readStart="0", readValueType="uint16" ]
}}

Na stronie wyświetla pięknie online ale na tym się kończy. Dodam, że ten HAT działa prawidłowo z Node-red na tym samym RPi i mam komunikacje z licznikiem.

 

W logach /var/log/openhab/openhab.log dostaje coś takiego:

2021-01-14 12:34:45.133 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - Error connecting connection SerialConnection@7aa846[portName=/dev/ttySC1,port=<null>] for endpoint ModbusSerialSlaveEndpoint@1da4fef[portName=/dev/ttySC1]: Could not get port identifier, maybe insufficient permissions. null
2021-01-14 12:34:45.135 [WARN ] [rt.modbus.internal.ModbusManagerImpl] - Could not connect to endpoint ModbusSerialSlaveEndpoint@1da4fef[portName=/dev/ttySC1] -- aborting request ModbusReadRequestBlueprint@2fa254[slaveId=1,functionCode=READ_MULTIPLE_REGISTERS,start=0,length=1,maxTries=3] [operation ID 69972665-5097-497a-b9d5-71a543bfdb61]

Jest to prawdopodobnie związane z permissions opisanymi w https://www.openhab.org/docs/installation/linux.html#privileges-for-common-peripherals

jednak polecenie w terminalu sudo adduser openhab tty

daje The user `openhab' is already a member of `tty'.

Proszę o pomoc choć być może rozwiązanie jest trywialne ale nie jestem specjalistą ani linuxa ani OH3.

 
Dodane : 14/01/2021 1:01 pm
(@ldywicki)
Wpisów: 78
Kontrybutor
 

Same uprawnienia to jedno, druga rzecz to dodatkowe porty szeregowe które OH powinien widzieć. Standardowe porty, które łapie openHAB to ttyUSB, ttyACM plus kilka innych. Nazwa którą masz ttySC może nie być obsługiwana w domyślnej konfiguracji.

Jako że jesteś na malince podejrzewam że korzystasz z instalacji przez openhabiana. W pliku /etc/default/openhab dodaj do linii EXTRA_JAVA_OPTS tą część "-Dgnu.io.rxtx.SerialPorts=/dev/ttySC1". Jeśli na początku linii jest znak # to go usuń, ponieważ jest to znak komentarza, który powoduje zignorowanie tej linii.

EDIT: Jak by ktoś się zastanawiał jakie nazwy portów są obsługiwane to niestety nie ma tego w oficjalnej dokumentacji i trzeba to wygrzebać ze źródeł biblioteki obsługującej porty szeregowe: https://github.com/NeuronRobotics/nrjavaserial/blob/master/src/main/java/gnu/io/RXTXCommDriver.java#L650

 
Dodane : 14/01/2021 1:21 pm
andry and adrian reacted
(@andry)
Wpisów: 16
Praktykant
Autor tematu
 

@ldywicki bardzo dziękuję za wskazówki. Zrobiłem wszystko według instrukcji. Zadziałało! 😀

Oryginalnie w tym pliku jest już linia: EXTRA_JAVA_OPTS="-Xms192m -Xmx320m" którą tylko rozszerzyłem zgodnie z radą kolegi.

EXTRA_JAVA_OPTS="-Xms192m -Xmx320m -Dgnu.io.rxtx.SerialPorts=/dev/ttySC1"

Dziękuję także za link do źródeł biblioteki obsługującej porty szeregowe przyda się na przyszłość. 👍 

 

 

 
Dodane : 14/01/2021 5:11 pm
Udostępnij: