Hauptmenü

Auf RS232 reagieren

Begonnen von lt1014, 10 Februar 2018, 15:40:42

Vorheriges Thema - Nächstes Thema

lt1014

Hallo,
ich habe FHEM auf einem Raspberry laufen. Daran hängt über einen USB-RS232 Adapter ein AVR Mega8. Dieser dient als Steuerung, über einen 433MHz Sender, meiner Rohrmotor24 Rollläden.

In 99_myUtils.pm habe ich eine Funktion eingefügt:

sub rollo($)
{
  my ($cmd) = @_;
  serial_comm(4800,"/dev/ttyUSB0", $cmd);
}

und kann mit z.B.: {rollo("2A,3A\n")} meine Rollos aus FHEM heraus ansteuern. Das funktioniert alles wunderbar.

Jetzt zu meinem Problem:
Ich möchte das ganze erweitern, und auf Daten die von der RS232 kommen reagieren.
Dafür müsste ein beliebiger (z.B.) mit \n abgeschlossener String den der AVR an den Raspberry schickt in eine dummy Variable übertragen werden.
Leider habe ich auch nach langem Suchen, für diese eigentlich banale Aufgabe, keine Lösung gefunden.

Für eine Hilfe wäre ich sehr dankbar.
Willi

Fritzbox 7490
Raspberry 3
Eigenbau 433MHz Sender
Rolläden Rohrmotor24

Otto123

Hallo Willi,

also der Teil
Zitatin eine dummy Variable übertragen werden
geht einfach mit fhem("set dummy $PerlVariable") -> https://fhem.de/commandref_DE.html#command
Innerhalb Deiner Perl Routine.
Falls Deine Frage auf den Empfang des Strings gemünzt war kann ich leider nicht helfen.


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

lt1014

Zitat von: Otto123 am 10 Februar 2018, 15:53:26

Falls Deine Frage auf den Empfang des Strings gemünzt war kann ich leider nicht helfen.


Gruß Otto

Hallo Otto,
doch das war sie. So quasi ein RS232 Interrupt der beim Empfang von '\n' den string in die Variable schreibt. Ohne Polling.

Danke
Willi
Fritzbox 7490
Raspberry 3
Eigenbau 433MHz Sender
Rolläden Rohrmotor24

herrmannj

dazu musst Du ein modul schreiben. Schau Dir die vorhandenen an um zu lernen wie. RFXTRX/CUL etc. Die verwenden zwar USB device - die verhalten sich wie serielle device.

lt1014

Zitat von: herrmannj am 10 Februar 2018, 16:09:57
dazu musst Du ein modul schreiben. Schau Dir die vorhandenen an um zu lernen wie. RFXTRX/CUL etc. Die verwenden zwar USB device - die verhalten sich wie serielle device.

Hallo Herrmann,
echt? Bin ich der Erste der so was braucht? Ich hätte vermutet, dass solche grundsätzlichen Dinge schon implementiert wären und ich das nur nicht gefunden habe.

Danke
Willi
Fritzbox 7490
Raspberry 3
Eigenbau 433MHz Sender
Rolläden Rohrmotor24

fiedel

Sieh dir mal das ECMD- Modul an. Das ist dafür gedacht. RS232 hat jedoch die Eigenschaft, dass nur eine Verbindung gleichzeitig möglich ist. Eine Option wäre dann, auch die Befehlsausgabe über ECMD zu steuern.
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

lt1014

Zitat von: fiedel am 11 Februar 2018, 09:43:05
Sieh dir mal das ECMD- Modul an. Das ist dafür gedacht. RS232 hat jedoch die Eigenschaft, dass nur eine Verbindung gleichzeitig möglich ist. Eine Option wäre dann, auch die Befehlsausgabe über ECMD zu steuern.

Danke für den Hinweis, auf das Modul bin ich auch schon gestoßen. Leider blicke ich da überhaupt nicht durch. Das erscheint mir doch ziemlich kompliziert. Ich hatte gehofft, dass es auch auf einfachem Wege geht. Ich werde das jetzt wohl mit einem ESP8266 per WLAN machen.

Willi
Fritzbox 7490
Raspberry 3
Eigenbau 433MHz Sender
Rolläden Rohrmotor24