HP1000: Unterschied zwischen den Versionen

Aus FHEMWiki
(Kategorie Wetterstatipnen)
 
(8 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
|ModPurpose=Einbindung einer HP1000 Wetterstation
|ModPurpose=Einbindung einer HP1000 Wetterstation
|ModType=d
|ModType=d
|ModForumArea=Heizungssteuerung/Raumklima
|ModForumArea=Wettermodule
|ModFTopic=44022
|ModFTopic=44022
|ModTechName=50_HP1000.pm
|ModTechName=50_HP1000.pm
Zeile 12: Zeile 12:
Funktionsweise des Moduls ist, dass in der Wetterstation eine FHEMWEB Instanz angegeben wird, an die die Wetterstation dann regelmäßig die Daten sendet.  
Funktionsweise des Moduls ist, dass in der Wetterstation eine FHEMWEB Instanz angegeben wird, an die die Wetterstation dann regelmäßig die Daten sendet.  
== Konfiguration ==
== Konfiguration ==
Die Konfiguration des Moduls erfolgt in drei Schritten:
Die Konfiguration des Moduls erfolgt in zwei 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 ===
=== 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 Benutzerdaten von Fhem nicht überprüft. Eine WH2600 Station erfordert im Webinterfache immer die Angabe von Benutzername und Passwort.
Zunächst wird das Modul 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 Benutzerdaten von FHEM nicht überprüft. Eine WH2600 Station erfordert im Webinterfache immer die Angabe von Benutzername und Passwort.
Definition mit Benutzername und Passwort:
Definition mit Benutzername und Passwort:
   define Wetterstation HP1000 Benutzer Passwort
   define Wetterstation HP1000 Benutzer Passwort
Definition ohne Benutzername und Passwort:
Definition ohne Benutzername und Passwort:
   define Wetterstation HP1000
   define Wetterstation HP1000
Es wird dabei automatisch eine neue FHEMWEB Instanz namens "WEBweatherstation" und dem webname Attribut "weatherstation" angelegt, sofern nicht bereits eine passende Instanz gefunden werden konnte. Diese kann anschließend weiter konfiguriert (z.B. anderer Port, anderer Device Name etc.), entscheidend ist das Attribut webname exakt so beizubehalten.


=== Eingaben im Webinterface der Station ===
=== Einstellungen in der Station ===
Dann muss der Station eingestellt werden, dass die Wetterinformationen an Fhem geschickt werden sollen. Bei einer WH2600 (Station ohne LCD Display) geschieht das im Webinterface, bei einer HP1000 direkt in den Einstellungen des LCD Displays.
Dann muss der Station eingestellt werden, dass die Wetterinformationen an FHEM geschickt werden sollen. Bei einer WH2600 (Station ohne LCD Display) geschieht das im Webinterface, bei einer HP1000 direkt in den Einstellungen des LCD Displays.
Dazu unter "Weather Network" folgendes eintragen:
Dazu unter "Weather Network" folgendes eintragen:
<pre>Remote Server      => Customized
<pre>Remote Server      => Customized
Server IP/Hostname => <Fhem-Domainname> bzw. <Fhem-IP> (siehe unten)
Server IP/Hostname => <FHEM-Domainname> bzw. <FHEM-IP> (siehe unten)
Server Port        => Der Port der neuen Webinstanz in Fhem (im Beispiel oben 8089)
Server Port        => Der Port der neuen Webinstanz in FHEM (im Beispiel oben 8089)
Station ID        => selbst gewählter Benutzername
Station ID        => selbst gewählter Benutzername
Password          => selbst gewähltes Passwort</pre>
Password          => selbst gewähltes Passwort</pre>
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). Auch hat die Firmware oft einen Bug der verhindert, dass IP Adressen direkt verwendet werden können. Hier muss dann zwingend auf einen Domainnamen zurückgegriffen werden!
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). Auch hat die Firmware oft einen Bug der verhindert, dass IP Adressen direkt verwendet werden können. Hier muss dann zwingend auf einen Domainnamen zurückgegriffen werden!
Einfach mal alle Möglichkeiten durchprobieren.
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).
'''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 ==
== Tipps, Tricks, Problemlösungen ==
=== FileLog ===
=== 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:
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:.*
   define FileLog_WeatherStation FileLog ./log/WeatherStation-%Y.log WeatherStation: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.
Alternativ sei auch auf die Verwendung von DbLog verwiesen. Dort kann man mit Hilfe des DbLogInclude Attributs granularer einstellen wie oft ein Wert geloggt werden soll:
Im Bereich von Zeile 347 suchen:
  attr WeatherStation DbLogInclude windSpeed:300 windGust:300 windChill:300 temperature.*:300 humidity.*:300 luminosity:300 uv:300
<pre>    $result = "T: " . $webArgs->{outtemp} if ( defined( $webArgs->{outtemp} ) );
 
    $result .= " H: " . $webArgs->{outhumi}
Wichtig ist auch, dass für das Logging die richtigen Events ausgelöst werden. Wer die event-on-* Attribute benutzt kann diese in Kombination mit DbLogInclude z.B. so setzen:
      if ( defined( $webArgs->{outhumi} ) );
  attr event-on-update-reading temperature.*,humidity.*,windSpeed,windGust,windChill,luminosity,uv.*,dewpoint.*,rain.*,solarradiation
    $result .= " Ti: " . $webArgs->{intemp}
   attr event-on-change-reading wu_state,extsrv_state,Activity
      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} ) );</pre>
und dahinter folgende neue Zeilen einfügen:
<pre>    $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}));</pre>
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
<pre>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.</pre>
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:
<pre>    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";
+    }
    }</pre>
=== Falsch angezeigte/zu wenig Readings ===
=== 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.
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:
=== 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:
<pre>help
<pre>help
quit
quit
Zeile 142: Zeile 95:
Usage: ping xxx.xxx.xxx.xxx
Usage: ping xxx.xxx.xxx.xxx
Usage: setRTC <HEX RegStartAddr> <HEX Byte 0> <HEX Byte 1>...<HEX Byte N></pre>
Usage: setRTC <HEX RegStartAddr> <HEX Byte 0> <HEX Byte 1>...<HEX Byte N></pre>
Am besten mit "ipconfig" sich die aktuelle Konfiguration anzeigen lassen. Mit ping kann man Verbindungen z. B. zu Fhem testen.
Am besten mit "ipconfig" sich die aktuelle Konfiguration anzeigen lassen. Mit ping kann man Verbindungen z. B. zu FHEM testen.
[[Kategorie:Wetterstationen]]

Aktuelle Version vom 11. September 2022, 10:16 Uhr

HP1000
Zweck / Funktion
Einbindung einer HP1000 Wetterstation
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Thema
Support (Forum) Wettermodule
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 zwei Schritten:

Definition der Wetterstation

Zunächst wird das Modul 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 Benutzerdaten von FHEM nicht überprüft. Eine WH2600 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

Es wird dabei automatisch eine neue FHEMWEB Instanz namens "WEBweatherstation" und dem webname Attribut "weatherstation" angelegt, sofern nicht bereits eine passende Instanz gefunden werden konnte. Diese kann anschließend weiter konfiguriert (z.B. anderer Port, anderer Device Name etc.), entscheidend ist das Attribut webname exakt so beizubehalten.

Einstellungen in der Station

Dann muss der Station eingestellt werden, dass die Wetterinformationen an FHEM geschickt werden sollen. Bei einer WH2600 (Station ohne LCD Display) geschieht das im Webinterface, bei einer HP1000 direkt in den Einstellungen des LCD Displays. Dazu unter "Weather Network" folgendes eintragen:

Remote Server      => Customized
Server IP/Hostname => <FHEM-Domainname> bzw. <FHEM-IP> (siehe unten)
Server Port        => Der Port der neuen Webinstanz in FHEM (im Beispiel oben 8089)
Station ID         => selbst gewählter Benutzername
Password           => selbst gewä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). Auch hat die Firmware oft einen Bug der verhindert, dass IP Adressen direkt verwendet werden können. Hier muss dann zwingend auf einen Domainnamen zurückgegriffen werden! 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_WeatherStation FileLog ./log/WeatherStation-%Y.log WeatherStation:T:.*

Alternativ sei auch auf die Verwendung von DbLog verwiesen. Dort kann man mit Hilfe des DbLogInclude Attributs granularer einstellen wie oft ein Wert geloggt werden soll:

 attr WeatherStation DbLogInclude windSpeed:300 windGust:300 windChill:300 temperature.*:300 humidity.*:300 luminosity:300 uv:300

Wichtig ist auch, dass für das Logging die richtigen Events ausgelöst werden. Wer die event-on-* Attribute benutzt kann diese in Kombination mit DbLogInclude z.B. so setzen:

 attr event-on-update-reading temperature.*,humidity.*,windSpeed,windGust,windChill,luminosity,uv.*,dewpoint.*,rain.*,solarradiation
 attr event-on-change-reading wu_state,extsrv_state,Activity

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.