Hallo Forum,
wie kann ich denn einen externen Port abfragen und dann die Daten in einen Log-File schreiben.
Leider habe ich dazu kein howto bzw. passenden code-Schnippsel gefunden.
Danke
Hallo,
bring doch mal ein Beispiel was Du tun möchtest. Dann kann Dir vielleicht geholfen werden.
Gruß,
TinoB
Ich möchte Wetterdaten einer Web-Adresse aus meinen privaten LAN ins fhem bringen.
Diese Daten werden auf drei verschiedene Arten auf der Wetterstation abgelegt.
sieh Anlage
Da muss es doch eine Möglichkeit geben diese Daten einzulesen und zu speichern, bzw. darzustellen.
Es gibt zwar ein ähnliches Modul für Vantage Pro 2 von Davis, da kommt aber nur zu große Werte bei raus, weil ich die Daten von einem Rechner und nicht von der Wetterstation direkt abgreife.
hier findet du ein beispiel wie ich niederschlagsdaten von einer wetterseite abhole und in fhem einbaue:Link (http://forum.fhem.de/index.php?topic=12470.msg78936#msg78936)
gruss
andre
Zitat von: justme1968 schrieb am Fr, 07 Juni 2013 14:30hier findet du ein beispiel wie ich niederschlagsdaten von einer wetterseite abhole und in fhem einbaue:Link
gruss
andre
Danke Andre.
Kannst du mir zu besseren Verständnis auch noch den Auszug aus dem fhem.cfg senden.
Den Bereich, wo das abholen und logfile erzeugen vorhanden ist.
Nochmal Danke
wenn du in dem link auf 'beispiel anzeigen' klickst steht der genaue auszug aus fhem.cfg wo der dummy und das at angelegt wird.
das loggen geht wie bei jedem anderen device. du gibst die readings die du loggen willst als regex beim filelog bzw dblog an.
das getNiederschlag steckt bei mir in 99_myUtils.pm und schaut so aus:sub
getNiedschlag()
{
my $html = GetHttpFile("xxx", "/current.html");
my @lines = split( "\r\n", $html );
my @niederschlaege = grep /(\d+,\d+) l.m/, @lines;
my $niederschlag = 0.0;
if( $niederschlaege[4] =~ m/(\d+),(\d+) l.m/s ) {
$niederschlag = $1 + $2/10.0;
}
return $niederschlag - 210; #21.05.2013
}
das parsen musst du natürlich für dich anpassen. wenn es dir um mehr als einen wert geht ist es sinnvoller das schreiben des readings nicht im at zu machen sonder direkt da wo geparsed wird. bei mehr als einem reading ist es auch noch sinnvoll das erzeugen so zu gruppieren:if( my $hash = $defs{NiederschlagXXX} ) (
readingsBeginUpdate($hash);
readingsSingleUpdate($hash,"wert 1", $value1 );
readingsSingleUpdate($hash,"wert 2", $value2 );
readingsSingleUpdate($hash,"wert 3", $value3 );
readingsEndUpdate($hash,1);
)