Sequenz an USB senden

OP #7735403
Lesenswert?

Hallo zusammen, ich habe ein USB-Relais an meinem HomeAssistant-PC angeschlossen. Dieser soll durch die Sequenz b'\xa0\x01\x01\xa2' ein- bzw. b'\xa0\x01\x00\xa1' ausgeschaltet werden. (Stand so im Manual)

Der PC erkennt das USB Relais und weist ihm ttyUSB0 zu:

1
[core-ssh ~]$ lsusb |grep 004
2
Bus 002 Device 004: ID 1a86:7523
3

4
[core-ssh ~]$ ls -la /dev/serial/by-id/ |grep 1a86
5
lrwxrwxrwx    1 root     root            13 Sep 12 03:00 usb-1a86_USB_Serial-if00-port0 -> ../../ttyUSB0

Ich habe jede Form versucht, aber das Relais interessiert sich einen 'Dreck':

1
[core-ssh ~]$ echo "b'\xa0\x01\x01\xa2'" > /dev/ttyUSB0
2
[core-ssh ~]$ echo "160 1 1 162" > /dev/ttyUSB0
3

4
[core-ssh ~]$ echo "160 1 0 161" > /dev/ttyUSB0
5

6
[core-ssh ~]$ echo "10100000000000010000000110100010" > /dev/ttyUSB0
7
[core-ssh ~]$ echo '10100000000000010000000110100010' > /dev/ttyUSB0
8
[core-ssh ~]$ echo '10100000 00000001 00000001 10100010' > /dev/ttyUSB0
9
[core-ssh ~]$ echo '10100000,00000001,00000001,10100010' > /dev/ttyUSB0

Wie kann ich die Sequenz richtig an /dev/ttyUSB0 schicken?

EDIT: Die Homeassistant ist die aktuelle Linux-Distri von https://www.home-assistant.io/

Gruß Michael

Persönliche Seite #7735435
Lesenswert?

Linux macht (auf Kernelebene, also unabhängig davon was du auf der Bash sendest) noch eine Verarbeitung mit den an TTY-Geräte gesendeten Daten. Mit dem "stty" Befehl kann man das abschalten, da musst du mal googlen wie das geht.

IMO kann man "rohe" Daten am Besten mit HTerm an serielle Geräte senden. Das funktioniert auch unter Linux. Wenn das funktioniert kann man versuchen das auf der Bash oder eigenem Programm zu automatisieren.

#7735479
Lesenswert?

Niklas G. schrieb:

Norbert schrieb:

Wenn die Dinger vernünftig gebaut sind, dann braucht's das nicht.

Tja, die VID:PID sieht nach einem CH340 aus, d.h. da existiert eine physikalische serielle Schnittstelle, da muss man natürlich die Baudrate setzen...

Ähm … Nö. Wie gesagt, hängt vom Programmierer ab.

Da das Device weiss, welche Command Daten herein kommen, kann es ganz einfach mal die ersten Bits sniffen und das Timing messen. Danach stellt es sich darauf ein.

Persönliche Seite #7735495
Lesenswert?

Norbert schrieb:

Da das Device weiss, welche Command Daten herein kommen, kann es ganz einfach mal die ersten Bits sniffen und das Timing messen

Wie viele Geräte haben wirklich ein Autobaud implementiert? Wer überhaupt schon USB auf eine physikalische serielle Schnittstelle umsetzen muss statt einfach alles in einem USB-fähigen Mikrocontroller abzuhandeln wird sich so eine Mühe wohl eher nicht geben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren