[patch] Fix für falsche WU-URL - 50_HP1000.pm

Begonnen von pldemon, 03 Januar 2020, 19:04:51

Vorheriges Thema - Nächstes Thema

pldemon

Hallo,

die Weather Undergrund URL in 50_HP1000.pm, die zum Senden der Daten an WU (oder beispielsweise an weewx) erstellt wird, hat zwei Probleme:

       
  • Zum einen steht am Ende der Url ein "&", obwohl danach keine Option mehr kommt. Das bringt den WeeWX-Parser durcheinander
  • Der Zweite Fehler betrifft das Enkodieren des Datums. Hier werden innerhalb von urlEncode() auch die Zeichen ":" encodiert, was aber nicht korrekt ist und zu einem Fehler beim Zugriff auf das WU-API führt
Anbei eine kurze Korrektur.

Gruß

Loredo

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

pldemon

Erledigt. Zwei Commits sind als Pull-Request raus:
https://github.com/fhem/mod-HP1000/pull/1

Habe dabei auch gleich eine kleine Verbesserung dem Request beigefügt. Darin wird die Variable "wu_pushURL" eingeführt. Mittels der Änderung ist es möglich, die fest codierte URL innerhalb des Moduls durch eine eigene zu ersetzen. Interessant für Leute, die ihre Daten nicht an WU senden wollen, sondern an einen eigenen Server, ohne, dass die mit DNS-Einträgen herumspielen müssen.

Gruß
Mirko

Rainerlan_2

Ich habe immernoch das selbe Problem wie hier beschrieben:
https://forum.fhem.de/index.php/topic,44022.msg1169251.html#msg1169251
Der Timestamp kommt von meiner WH2600 wohl im falschen format.
Nachdem das Modul 50_HP1000 aktualisiert wurde, ist mein lokaler Patch überschrieben.

Da vermutlich meine WH2600 nicht die einzige Wetterstation dieser Bauart ist, die eine "flasche" Timestamp liefert:
Wäre es möglich den "Patch" über eine Konfiguration ins Modul einzupfelgen?

Zeile 1430:

while ( my ( $key, $value ) = each %{$webArgs} ) {
    $value = urlEncode($value)
    if ( $key =~ /^(softwaretype|dateutc)$/i );
    if ( $key eq "dateutc" ) {
        $value = urlEncode(strftime "%F %H:%M:%S", localtime);
    }

...

pldemon

Ja. Habe das Modul vor knapp 3 Monaten kurz getestet und es hatte immer noch etliche Fehler. Setze deshalb notgedrungen eine lokale Version in meiner Umgebung ein :(