Autor Thema: Daten vom seriellen Port einlesen?  (Gelesen 20167 mal)

Offline kct-networx

  • New Member
  • *
  • Beiträge: 47
Daten vom seriellen Port einlesen?
« am: 14 Januar 2013, 18:57:32 »
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

Offline UliM

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2708
Aw: Daten vom seriellen Port einlesen?
« Antwort #1 am: 14 Januar 2013, 19:08:28 »
Hi,
kann Dir damit leider nicht weiterhelfen - aber es wäre vmtl hilfreich, den verwendeten Rechner und OS zu wissen.
Gruß, Uli
RPi2/Raspbian, CUL V3 (FS20, CUL_WS), HM-CFG-USB (ca. 30 HomeMatic-devices), LAN (HueBridge, iTunes, HarmonyHub etc.). Slave-Installation auf OSX.
Aktives Mitglied des FHEM e.V. (Marketing)

Offline kct-networx

  • New Member
  • *
  • Beiträge: 47
Aw: Daten vom seriellen Port einlesen?
« Antwort #2 am: 14 Januar 2013, 20:11:20 »
Zitat von: UliM schrieb am Mo, 14 Januar 2013 19:08
aber 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

Offline Joachim

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1460
Aw: Daten vom seriellen Port einlesen?
« Antwort #3 am: 14 Januar 2013, 21:15:47 »
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

Offline kct-networx

  • New Member
  • *
  • Beiträge: 47
Aw: Daten vom seriellen Port einlesen?
« Antwort #4 am: 15 Januar 2013, 20:43:44 »
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

Offline Joachim

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1460
Aw: Daten vom seriellen Port einlesen?
« Antwort #5 am: 15 Januar 2013, 21:09:38 »
Viel Glück
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

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3750
Aw: Daten vom seriellen Port einlesen?
« Antwort #6 am: 16 Januar 2013, 13:16:56 »
Hier findest du im Wiki ein Beispiel:
http://www.fhemwiki.de/wiki/Ultraschallsensor
FHEM auf ASRock J3455-ITX im 19" Rack mit Homematic, MAX, PCA301, Panstamps, RPi für BLE Bodenfeuchtesenoren, Text2Speech.
Maintainer der Module: Text2Speech, TrashCal, MediaList

Meine Projekte auf https://github.com/tobiasfaust
u.a. PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM

Offline hans88

  • New Member
  • *
  • Beiträge: 28
Aw: Daten vom seriellen Port einlesen?
« Antwort #7 am: 19 Mai 2013, 09:48:37 »
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

Offline Joachim

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1460
Aw: Daten vom seriellen Port einlesen?
« Antwort #8 am: 19 Mai 2013, 10:09:44 »
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

Offline hans88

  • New Member
  • *
  • Beiträge: 28
Aw: Daten vom seriellen Port einlesen?
« Antwort #9 am: 19 Mai 2013, 10:29:04 »
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

Offline Joachim

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1460
Aw: Daten vom seriellen Port einlesen?
« Antwort #10 am: 19 Mai 2013, 15:35:46 »
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

Offline hans88

  • New Member
  • *
  • Beiträge: 28
Aw: Daten vom seriellen Port einlesen?
« Antwort #11 am: 19 Mai 2013, 19:30:02 »
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

Offline Joachim

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1460
Aw: Daten vom seriellen Port einlesen?
« Antwort #12 am: 19 Mai 2013, 20:08:23 »
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

Offline hans88

  • New Member
  • *
  • Beiträge: 28
Aw: Daten vom seriellen Port einlesen?
« Antwort #13 am: 26 Mai 2013, 11:42:48 »
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

Offline Joachim

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1460
Aw: Daten vom seriellen Port einlesen?
« Antwort #14 am: 26 Mai 2013, 21:37:23 »
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

 

decade-submarginal