USB RS485 Adapter richtig installiert? Wie bekommt man Testdaten über den Bus?

Begonnen von HerbertG, 26 November 2025, 19:19:47

Vorheriges Thema - Nächstes Thema

HerbertG

USB FT232 RS485 Adapter ist am Raspi (3B) angesteckt,
ich glaub DIGITUS USB to Serial Adapter - RS485 Converter
   (https://www.amazon.de/-/en/DIGITUS-USB-Serial-Adapter-Type/dp/B007VZY4CW)
dahinter mit digitalen InputModul (48Port), Output RS485 mit Kabel zum USB Stick verbunden
   (https://www.amazon.com/Eletechsup-Digital-Expansion-3000VDC-Isolation/dp/B0DFGX4RGZ)
Funktioniert am Laptop einwandfrei,
RS485-Adr(1), Funktion(1), Register Adr(2), Anzah(2)l, CRC16(2)   zB
01 02 00 00 00 08 79 CC    (31 ms) ->   01 02 01 01 60 48
01 02 00 00 00 30 78 1E    (16 ms)   01 02 06 01 02 06 20 A0 60 E1 C2
01 03 00 C0 00 03 05 F7           (16 ms)   01 03 06 02 00 20 06 60 A0 E3 2E
Alle 1 Sekunden automatik report setzen: 01 06 00 F8 00 01 C9 FB  Schreibt 01 in die Adr. F8
Liefert dann alle Sekunden zb 01 03 06 02 00 20 06 60 A0 E3 2E
Automatik report löschen: 01 06 00 F8 00 00 08 3B
FHEM:
Einbindung in FHEM am RASPI nach mehreren vergeblichen Versuchen mit HM485, dann mit Modbus durchgeführt (weiß nicht ob so richtig):
USB Adapter:
define usbRS485 Modbus usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0@9600,8,N,1
   State: disconnected
48Port DigitalInput Karte auf RS485 Adresse 1 (Modbus RTU, CRC16-Modbus)
define DI48CH_1 ModbusAttr 1 slave RTU
   State: opened
   Nach set DI48CH_1 active -> State: active

Meine Fragen:
  a) Ist der USB Adapter korrekt eingebunden oder fehlt da etwas?
  b) Wie sende ich zb diese strings an DI48CH_1 (ich hab kein send gefunden)?
  c) Muss man den CRC16/Modbus selber berechnen?
  d) Gibt es sonst Testmöglivhkeiten?
Manuell am Laptop habe ich https://crccalc.com/ mit Hex Input und CRC-16/Modbus für die Berechnung  verwendet.

Danke für hilfreiche Informationen, lieben Gruß Herbert

Wzut

Zitat von: HerbertG am 26 November 2025, 19:19:47define usbRS485 Modbus usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0@9600,8,N,1
State: disconnected
so nicht , teste bitte mit voller Pfadangabe :
define usbRS485 Modbus /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0@9600
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

HerbertG

Hallo Wzut,
Danke für den Tipp, hat leider nicht funktioniert, liegt aber nicht an FHEM.
Habe am Raspi jetzt minicom installiert um es mal direkt auszuprobieren und scheitere schon hier. Minicom meldet mir ttxUSB0 offline. Hab zwar schon rumprobiert, bin aber im Moment ratlos, werd mal weiter googeln.
Damnke, L G Herbert

KölnSolar

Zitatliegt aber nicht an FHEM.
wahrscheinlich nicht.Gib doch auf dem Raspi mal
lsusb

oder

ls /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0@9600

ein, um zu sehen, ob der Stick überhaupt vom Raspi erkannt wurde.

Wenn nicht, wovon ich ausgehe, mal das Syslog mit

dmesg -T

ansehen.

Ggfs. mal im Betrieb den Stick abziehen/anstecken. Mit dmesg -T sieht man dann in den letzten Zeilen, was passiert ist.

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

HerbertG

Hallo Markus
danke für die Unterstützung. Folgende Daten:
lsusb: Bus 001 Device 007: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC

ls /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0:
/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0

heute abziehen und anstecken: dmesg -T
[Fri Nov 28 09:11:09 2025] usb 1-1.1.3: USB disconnect, device number 7
[Fri Nov 28 09:11:09 2025] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[Fri Nov 28 09:11:09 2025] ftdi_sio 1-1.1.3:1.0: device disconnected
[Fri Nov 28 09:11:17 2025] usb 1-1.1.3: new full-speed USB device number 8 using dwc_otg
[Fri Nov 28 09:11:17 2025] usb 1-1.1.3: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00
[Fri Nov 28 09:11:17 2025] usb 1-1.1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Fri Nov 28 09:11:17 2025] usb 1-1.1.3: Product: FT232R USB UART
[Fri Nov 28 09:11:17 2025] usb 1-1.1.3: Manufacturer: FTDI
[Fri Nov 28 09:11:17 2025] usb 1-1.1.3: SerialNumber: A5069RR4
[Fri Nov 28 09:11:17 2025] ftdi_sio 1-1.1.3:1.0: FTDI USB Serial Device converter detected
[Fri Nov 28 09:11:17 2025] usb 1-1.1.3: Detected FT232R
[Fri Nov 28 09:11:17 2025] ftdi_sio ttyUSB0: Unable to read latency timer: -32
[Fri Nov 28 09:11:17 2025] usb 1-1.1.3: FTDI USB Serial Device converter now attached to ttyUSB0
herbert@RaPiH1:~ $


Ich hatte gestern auch mit minicom probiert, das zeigt offline. Mit mbpoll geht es auch nicht, wobei da bin ich mir nicht klar ob das gehen würde, weil den string 01 02 00 00 00 08 79 CC  habe ich nicht zusammengebracht,
zB mbpoll -m RTU -a 1 -r 1 -c 8 /dev/ttyUSB0 -b9600 -d 8 -s 1 -P none -v schickt den string [01][03][00][00][00][08][44][0C]) und endet in timeout (Waiting for a confirmation...  ERROR Connection timed out: select  Read output (holding) register failed: Connection timed out)
[

Danke besten Gruß, Herbert

KölnSolar

Hallo Herbert,

dann scheint er ja doch erkannt zu werden.

Aber das
Zitat[Fri Nov 28 09:11:17 2025] ftdi_sio ttyUSB0: Unable to read latency timer: -32
ist doch sicherlich rot angezeigt und deutet auf ein Problem hin.

Taucht das ähnlich oder disconnects/connects "im Betrieb(also ohne ab-/anstöpseln" dann häufiger im Log auf ?

Wenn ja, hätte ich 2 Gedanken:
- Stick defekt; aber Du schreibst ja, dass er am Laptop einwandfrei funktioniert
- Probleme mit der Spannungsversorgung; durch besseres Netzteil und/oder AKTIVEN USB-Hub zu lösen

Grüße Markus

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

HerbertG

Hallo Markus und Wzut

nach diversen probieren zeigt minicom noch immer offline (ebenso in FHEM disconnected)

Hab mich bei mbpoll vertan, Adresse ist 2 statt 1 (Testgerät). Mit mbpoll geht jetzt was, d.h. usbstick und Kommunikation funktionieren einmal prinzipiell.

mbpoll -m RTU -a 2 -r 193 -c 3 /dev/ttyUSB1 -b9600 -d 8 -s 1 -P none -v -1

Opening /dev/ttyUSB1 at 9600 bauds (N, 8, 1)
Set response timeout to 1 sec, 0 us
Protocol configuration: ModBus RTU
Slave configuration...: address = [2]
                        start reference = 193, count = 3
Communication.........: /dev/ttyUSB1,       9600-8N1
                        t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output (holding) register table

-- Polling slave 2...
[02][03][00][C0][00][03][05][C4]
Waiting for a confirmation...
<02><03><06><00><00><00><00><00><00><35><85>
[193]:  0
[194]:  0
[195]:  0

Zumindest Befehlscode 3 kann man damit absetzen (auch wenn man die Lese(Register)adresse um 1 erhöhen muss, 193 statt 192 für C1.
Jedoch muss ich Befehlscode 1 und 6 verwenden (wüsste jetzt nicht wie das mit mbpoll geht)

Soweit so gut, jetzt die 1.Frage, wie bringe ich das Ding korrekt in FHEM rein, oder muss ich mir hier etwas dafür programmieren?

Gibt es da in FHEM eine Interface oder script/modul/whatever dass ich ansprechen kann?

Meine Anwendung wäre so: alle 0,3-0,5sek von 2 Geräten 4 bzw 6 Byte abzufragen und wenn sich der Zustand  geändert hat, das zu speichern und entsprechende Aktionen auszuführen.
Weitere Fragen) was habe ich da in FHEM für Möglichkeiten und wie könnte das aussehen? Gibt es da schon etwas ähnliches (im Prinzip ist es eine Schalter/Kontaktauswertung.

Danke, lieben Gruß, Herbert

KölnSolar

Kenne das Modbus-Modul nicht, aber wird kaum anders sein, als bei anderen USB2serial.
Wenn Du wie wzut schrieb, mit voller Pfadangabe definierst kommt immer noch disconnected ?
Mal auf verbose =5 stellen und gucken, was das FHEM-Log sagt.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Wzut

und bitte mal verraten in welche Gruppen der Stick ist (vermutlich dialout) und ob der User fhem überhaupt die nötigen Rechte hat um auf /dev/serial/by-id/ zugreifen zu dürfen !
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

HerbertG

Hallo

Danke hab zumindest mal opened

herbert@RaPiH1:~ $ groups fhem
fhem : dialout
herbert@RaPiH1:~ $ ls -l /dev/tty????
crw-rw----+ 1 root plugdev 188, 1 Nov 28 23:47 /dev/ttyUSB1
herbert@RaPiH1:~ $ ls -l /dev/serial/by-id
total 0
lrwxrwxrwx 1 root root 13 Nov 28 21:57 usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0 -> ../../ttyUSB1

Habe es jetzt geändert: sudo chown root:dialout  /dev/ttyUSB1
FHEM neu gestartet und siehe da, statt disconnected ist jetzt der Status auf opened

Danke an euch. Frage falls sich USBx ändert, kann/muss man die absolute Adr auch ändern? Wie geht das bei /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0 ??

@Markus: hab mich mal auf verbose=5 nicht getraut

Danke, lieben Gruß Herbert

PS: unix war schon vor 30 Jahren nicht mein Freund  ;)

KölnSolar

na prima.

das ist ja der Clou
ZitatWie geht das bei /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0
ändert sich nie. Ist die eindeutige Adresse des serial2USB chips.
hingegen ändert sich
ZitatttyUSB1
je nachdem, wo er eingesteckt wird.
Zitat@Markus: hab mich mal auf verbose=5 nicht getraut
Trau Dich ! Natürlich nur das Modbusdevice. Da wird es kaum was im Log geben.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

HerbertG

Hallo Markus,

Danke,
+ konnte mit sudo chown usb_FTDI.. nicht ändern (geht nur mit root?, leider finde ich da das pw grad nicht)
+ werde später mal das mit verbose probieren wird ja wahrscheinlich eh nicht gespeichert sein falls was passiert.

lese mir gerade mal zwischendurch die Help der Modbus Attribute durch, bevor es dann am Abend weitergeht.
Ich persönlich fand das 48 Kanal Inputmodul mit RS485 halt super für Kontaktüberwachung (und fand €35 dafür OK, statt herumbasteln), kannst den status über 6 Byte auslesen oder im Intervall (glaub 1-255 Sek) schicken lassen: Einzig fad, dass es nicht einen Art Interrupt bei einer Änderung gibt.

Frage an Erfahrene: Kann man in/über FHEM so alle 300mS pollen wobei weitere Aktionen nur bei Änderung oder wenn nicht erfolgreich erfolgen sollen (Performancethema?)? Oder wäre eine Zwischenlösung mit einem Singlechip, der eben das polling übernimmt und nur bei Datenänderung bzw keep alives Daten schickt?

Danke, lieben Gruß, Herbert

Würde dann wieder FHEM für Auswertung und Darstellung nutzen (hab zwar davon keine Ahnung, aber zukünftiger Plan wäre Darstellung in Raumplan bzw Weiterleitung an Android, push Meldungen und so halt )


Beta-User

Nimm fhem in "plugdev" [edit: das war ja schon als slave definiert... und wirf auch einen Blick auf ModbusAttr].

Ad ModbusAttr: zumindest bei Netzwerkdevices kann man das auch direkt ohne IO-Modul (Modbus) definieren.
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors