HP1000
HP1000 | |
---|---|
Zweck / Funktion | |
Einbindung einer HP1000 Wetterstation | |
Allgemein | |
Typ | Gerätemodul |
Details | |
Dokumentation | EN / DE Thema |
Support (Forum) | Heizungssteuerung/Raumklima |
Modulname | 50_HP1000.pm |
Ersteller | Loredo |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
HP1000
HP1000 ist ein Modul zum Auslesen von HP1000/WH2600 Wetterstationen von renkforce/Froggit, etc.
Funktionsweise des Moduls ist, dass in der Wetterstation eine FHEMWEB Instanz angegeben wird, an die die Wetterstation dann regelmäßig die Daten sendet.
Konfiguration
Die Konfiguration des Moduls erfolgt in drei Schritten:
Definition einer Webinstanz für die Wetterstation
Zunächst muss auf einem eigenen Port eine neue FHEMWEB-Instanz angelegt werden, z.B. mit dem Namen WEBweather. Dieser muss zwingend der Name weatherstation zugewiesen werden. Dieser ist in der Firmware der Stationen fest codiert.
define WEBweather FHEMWEB 8089 global attr WEBweather webname weatherstation
Definition der Wetterstation
Dann wird das Modul noch in Fhem definiert. Die Definition kann mit und ohne Benutzernamen und Passwort erfolgen. Wenn bei der Definition Benutzername und Passwort nicht angegeben werden, werden die von der Wetterstation gesendeten Daten von Fhem nicht überprüft. (Die Station erfordert im Webinterfache immer die Angabe von Benutzername und Passwort!) Definition mit Benutzername und Passwort:
define Wetterstation HP1000 Benutzer Passwort
Definition ohne Benutzername und Passwort:
define Wetterstation HP1000
Eingaben im Webinterface der Station
Dann muss der Station in deren Webinterface noch gesagt werden, dass die Wetterinformationen an Fhem geschickt werden. Dazu im Webinterface unter "Weather Network" Folgendes eintragen:
Remote Server => Customzied Server IP/Hostname => <Fhem-Domainname> bzw. <Fhem-IP> (s.u.) Server Port => Der Port der neuen Webinstanz in Fhem (im Beispiel oben 8089) Station ID => selbstgewählter Benutzername Password => selbstgewähltes Passwort
Zu Server IP/Hostname: Hier muss entweder der Domainname angegeben werden, unter dem Fhem erreichbar ist (vollständige Domain nicht vergessen!), oder die IP. Wenn in Fhem keine Daten ankommen, ist das hier meist der Knackpunkt. Erfahrungen zeigen, dass teilweise der Domainname nicht vollständig angegeben wurde oder aber der Domainname nicht aufgelöst werden kann (vielleicht gibt es hier Probleme einzelner Stationen, bei der Konfiguration via DHCP den Nameserver-Eintrag richtig umzusetzen). Einfach mal alle Möglichkeiten durchprobieren.
Station ID und Passwort müssen hier angegeben werden. Bei der Definition der Station in Fhem kann man diese angeben (dann wird geprüft, ob die berechtigte Station Daten schickt) oder weglassen (dann werden Benutzername und Passwort nicht von Fhem geprüft).
Tipps, Tricks, Problemlösungen
FileLog
Das Modul definiert bei der Erstellung kein FileLog. Wenn man eines definiert, bietet sich aufgrund der Häufigkeit von Datenübertragungen und damit der Menge an übertragenen Informationen das Loggen nur des T:-Readings an:
define FileLog_Wetterstation FileLog ./log/Wetterstation-%Y.log Wetterstation:T:.*
Mehr Einträge im T:-Reading
Das Modul liefert standardmäßig nicht alle vom Außensender verfügbaren Daten auch in der T:-Zeile. Wenn man dort - z. B. zum Loggen - alle Daten haben möchte, kann man die übrigen Daten ergänzen. Dafür editiert man die Datei 50_HP1000.pm und ergänzt Zeilen. Im Bereich von Zeile 347 suchen:
$result = "T: " . $webArgs->{outtemp} if ( defined( $webArgs->{outtemp} ) ); $result .= " H: " . $webArgs->{outhumi} if ( defined( $webArgs->{outhumi} ) ); $result .= " Ti: " . $webArgs->{intemp} if ( defined( $webArgs->{intemp} ) ); $result .= " Hi: " . $webArgs->{inhumi} if ( defined( $webArgs->{inhumi} ) ); $result .= " W: " . $webArgs->{windspeed} if ( defined( $webArgs->{windspeed} ) ); $result .= " R: " . $webArgs->{rainrate} if ( defined( $webArgs->{rainrate} ) ); $result .= " WD: " . $webArgs->{winddir} if ( defined( $webArgs->{winddir} ) ); $result .= " D: " . $webArgs->{dewpoint} if ( defined( $webArgs->{dewpoint} ) ); $result .= " P: " . $webArgs->{relbaro} if ( defined( $webArgs->{relbaro} ) );
und dahinter folgende neue Zeilen einfügen:
$result .= " U: " . $webArgs->{UV} if ( defined( $webArgs->{UV} ) ); $result .= " L: " . $webArgs->{light} if ( defined( $webArgs->{light} ) ); $result .= " WC: " . $webArgs->{windchill} if (defined($webArgs->{windchill})); $result .= " RD: " . $webArgs->{dailyrain} if (defined($webArgs->{dailyrain})); $result .= " RW: " . $webArgs->{weeklyrain} if (defined($webArgs->{weeklyrain})); $result .= " RM: ".$webArgs->{monthlyrain} if (defined($webArgs->{monthlyrain})); $result .= " RY: ".$webArgs->{yearlyrain} if (defined($webArgs->{yearlyrain})); $result .= " WG: ".$webArgs->{windgust} if (defined($webArgs->{windgust}));
Um zu verhindern, dass die eigenen Ergänzungen bei einem Update des Moduls überschrieben werden, dann noch 50_HP1000.pm vom automatischen Update ausnehmen:
attr global exclude_from_update 50_HP1000.pm
Absturz von Fhem wegen Illegal division by zero
Wenn HP1000 Fhem abstürzen lässt mit der Fehlermeldung
2016.10.01 08:51:00 1: PERL WARNING: Use of uninitialized value in division (/) at ./FHEM/50_HP1000.pm line 383. Illegal division by zero at ./FHEM/50_HP1000.pm line 383.
dann hilft es, die mit + markierten Zeilen (natürlich ohne die +-Zeichen selbst!) in 50_HP1000.pm im sub HP1000_GetSum (um Zeile 400) einzufügen:
if ($avg) { + if (@{ $hash->{helper}{history}{$t} } > 0) { $return = sprintf( "%.1f", sum( @{ $hash->{helper}{history}{$t} } ) / @{ $hash->{helper}{history}{$t} } ); Log3 $name, 5, "HP1000 $name: Average for $t: $return"; + } }
Falsch angezeigte/zu wenig Readings
Abhängig von der Firmwareversion und/oder dem Modell der Station kann es dazu kommen, dass teilweise nicht alle Readings oder die Readings mit den falschen Einheiten (z. B. Wingeschwindigkeit in mph, obwohl km/h konfiguriert wurde) angezeigt werden. In diesem Fall hilft es, im Webinterface der Wetterstation bei der Definition "Weather Network" den "Server Type" auf "JSP" zu stellen.
Keine Daten in Fhem
Wenn in Fhem keine Daten von der Wetterstation ankommen, liegt das häufig daran, dass FHEM nicht richtig als "Weather Network" konfiguriert wurde. Wenn die erforderlichen Eingaben im Webinterface (s. o.) der Station nicht helfen, kann man sich zum Testen per telnet mit der Wetterstation verbinden (Benutzername admin, Passwort admin). Mögliche Befehle:
help quit reboot Usage: passwd Old Password: New Password: Re-enter New Password: Usage: username <user name> Usage: ipconfig Usage: setip <ip addr> Usage: setmask <netmask> Usage: setgateway <ip addr> Usage: setdns <ip addr> Usage: setmode <mode> <mode>: 0: SERVER 1: CLIENT Usage: setsrvport <port> Usage: setdstport <port> Usage: dhcpclient <status> <status>: 0: disable 1: enable Usage: connectype <protocol> <protocol>: 0: TCP 1: UDP Usage: transmitimer <time> <time>: time in ms Usage: saveconfig Usage: accessip <index> <ip addr> <index>: index of accessible IP <ip addr>: accessible IP address Usage: setaccip <mode> <mode>: 0: disable 1: enable Usage: setaw <cold start> <authentication fail> <ip changed> <password changed> <cold start>: 0: Disable 1: Enable <authentication fail>: 0: Disable 1: Enable <ip changed>: 0: Disable 1: Enable <password changed>: 0: Disable 1: Enable Usage: setdsthn <Host name/IP> Usage: tftpsrv <ip addr> Usage: filename <file name> Usage: dlfirmware Usage: seteep <HEX RegStartAddr> <HEX Byte 0> <HEX Byte 1>...<HEX Byte N> Usage: dbgmsg <mode> <mode>: 0: Disable 1: Enable Usage: connstatus Usage: ping xxx.xxx.xxx.xxx Usage: setRTC <HEX RegStartAddr> <HEX Byte 0> <HEX Byte 1>...<HEX Byte N>
Am besten mit "ipconfig" sich die aktuelle Konfiguration anzeigen lassen. Mit ping kann man Verbindungen z. B. zu Fhem testen.