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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.