Daten vom seriellen Port einlesen?

Begonnen von kct-networx, 14 Januar 2013, 18:57:32

Vorheriges Thema - Nächstes Thema

kct-networx

Guten Abend zusammen,

hat jemand eine Idee wie ich Daten vom Seriellen Port in FHEM einlesen kann?
Die Daten werden permanent gesendet, ich brauche also "nur" lauschen was da gesendet wird und möchte das gerne in ein Logfile speichern.

Das Device ist ein Prolific 2303 USB-seriell Konverter. Daran hängt der Projet-Leveljet. Dieser sendet in kurzen Abständen Daten zu Füllstand in Litern, Sensorabstand (in cm) und Füllhöhe (in cm).

Hat jemand von euch schon mal direkt ein seriellen port in fhem definiert und zum "empfangen von Daten" bewegt??

Grüße,
Markus

UliM

Hi,
kann Dir damit leider nicht weiterhelfen - aber es wäre vmtl hilfreich, den verwendeten Rechner und OS zu wissen.
Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

kct-networx

Zitat von: UliM schrieb am Mo, 14 Januar 2013 19:08aber es wäre vmtl hilfreich, den verwendeten Rechner und OS zu wissen.
Hi,
bin mir nicht sicher was das helfen würde, aber nun gut.
OS: Windows Server 2003 (WHS)
Rechner: Acer H340 mit Intel Atom Platform

Ich dachte es ist vollkommen egal für welches OS man diese Frage beantwortet.
Denn ob man den seriellen port mit /dev/ttyXXXYYYZZZ@19200 unter Linux anspricht oder mit com4@19200 unter windows ist ja dann schon Detailarbeit....

Vielleicht sollte ich die Frage präzisieren:

Gibt es ein Modul das ich definieren kann um den seriellen port auslesen zu können?

Also ähnlich der Definition wie bei einer CUL? (z.B. define DeviceName ModulName com3@38400)

Grüße,
Markus

Joachim

Musst Du ein Modul für umarbeiten

Ich habe Dir mal meinen rudimentären Unbau für meine Lüftungsanlage Comfoair 550 angehängt.
Die sendet auch permanent, und es sind einige deutsche Kommentare für Perlanfänger wie mich drin.
Der Rest ist dann try and error.

Viel Spass Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

kct-networx

Herzlichen Dank Joachim!

Ich werde mir das Modul von dir ansehen und (hoffentlich erfolgreich) auf meine Bedürfnisse anpassen.
Ergebnisse dann später hier...

;-)

Grüße und nochmals meinen Dank,
Markus

Joachim

FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Tobias

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

hans88

Hallo,
ich habe ein Programm mit Windows VB erstellt das
den ebus meiner Weishaupt WTC15 mit liest und die
Daten grafisch darstellt. Als Hardware habe ich einen
ebus -- seriell Converter der an einen seriell -- USB
Converter angeschlossen ist.
Jetzt will ich das Programm nach FHEM portieren.
Dazu habe ich schon alle möglichen Wiki's durchgelesen.
Komme aber nicht recht weiter.

Jetzt meine Fragen:

Wie muss ich den seriell USB Converter in FHEM definieren ?
Wie wird ein Programm ähnlich WHR962 aufgerufen (event gesteuert) ?

Ich hoffe dass Ihr mir weiter helfen könnt.

Gruß Hans

Joachim

Moin Hans,

hier mein Aufruf für WHR962


define WHR962 WHR962 /dev/ttyUSB1@9600
attr WHR962 room Keller


gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

hans88

Hallo Joachim,

vielen Dank für die Antwort.
Mir fehlen halt die Grundlagen.

Heist das wenn Daten an der seriellen Schnittstelle anstehen
wir das Modul WHR962 aufgerufen ?

Gruß Hans

Joachim

Moin Hans,

Ganz klares Jain.

Mit dem Eintrag in der fhem.cfg wird die Schnittstelle dem Modul zugeordnet, wenn jetzt Daten an dieser Schnittstelle anstehen, werden sie an das Modul weitergeleitet, dass Modul muss sie dann interpretieren und die gewünschten Readings an FHEM zurückgeben.
Nimm mal an der markierten Stelle die Raute weg

sub
WHR960_Read($)
{
#Log 1,"WHR960_Read";
my ($hash) = @_;
my $name = $hash->{NAME};
my ($data, $crc);
my $buf = DevIo_SimpleRead($hash);
my $tn = TimeNow();
my ($key, $val) = ("key", "val");
    ###### Daten der seriellen Schnittstelle holen, in RAW umwandeln, und an $buf1 anhaengen
return "" if(!defined($buf));
$buf = unpack('H*', $buf);
$buf1 .= $buf;
--> Log 5, $buf1; <---

wenn die Weishaupt WTC15 permanent sendet, sollte jetzt im Log ein permanenter Datenstrom anstehen, diesen kannst Du dann auswerten.

gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

hans88

Jaaaa, Danke

ich hab jetzt die Daten im log.
Es gab nur noch die Schwierigkeit dass mein Loglevel, der
sinnigerweise "global verbose" heist auf 3 war.

Jetzt kann ich weiter "probieren".
Mir fehlt einfach eine kurze Beschreibung wie man ein Module
erstellt und was die Parameter bedeuten.

Gruss Hans

Joachim

Willkommen im Club,

habe am Anfang genauso gepöbelt.

viel Spass bei deinem Modul.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

hans88

Hallo Joachim,

ich habe dein script so geändert dass jetzt die daten in den Readings angezeigt
werden.
Wie hast du die daten weiterverarbeitet ? plot ?

Gruß Hans

Joachim

Moin Hans,

ersteinmal die gewünschten Daten in ein Log schreiben
bei mir so:

define FileLog_WHR960 FileLog ./log/WHR960-%Y-%m.log WHR960
attr FileLog_WHR960 logtype text
attr FileLog_WHR960 room Logs

dann einen Weblink erzeugen:

define weblink_WHR960 weblink fileplot FileLog_WHR960:WHR960:CURRENT
attr weblink_WHR960 plotsize 1050,840
attr weblink_WHR960 room Keller

danneinige Zeit warten, und im weblink ein passendes gplot erstellen.

gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232