Modul für Powerrouter

Begonnen von SkyRaVeR, 20 Februar 2015, 17:45:46

Vorheriges Thema - Nächstes Thema

SkyRaVeR

Hallo zusammen,

ich habe mir ein kleines Modul gebastelt, dass die Daten meines Powerrouters der Firma Nedap ausliest und in FHEM bereitstellt.
Aktuell sind die folgenden Daten verfügbar:

  • Gesamtverbrauch
  • Erzeugte Solarenergie
  • In Batterie gespeiste Leistung
  • In das Netz eingespeiste Leistung
  • Aus Netz bezogene Leistung
  • Direkter Eigenverbrauch
  • Ladestand der Batterie

Das Modul gibts hier: https://github.com/SkyRaVeR/FHEM_Powerrouter/

Bitte in dem Modul die Zeile my $POWERROUTER_TEMPFILE_FOLDER = "log/powerrouter" entsprechend anpassen bzw. das Verzeichnis "powerrouter" unter <meine_fhem_installation/log> erstellen.

Aktuelle Version: 1.1.1b (01.11.2016)


Usage: Modul in <fhemroot>/FHEM kopieren und in der fhem.cfg die folgenden Einträge vornehmen:

define mypowerrouter powerrouter
attr mypowerrouter login <username>
attr mypowerrouter pass <passwort>
attr mypowerrouter routerid <id_des_routers>
attr mypowerrouter battery_update_interval <intervall_in_minuten>


Die Login-Daten sind die Gleichen wie auf der Webseite (http://www.mypowerrouter.com).
Router-ID entspricht der Seriennummer (Zu finden unter www.mypowerrouter.com -> "Powerrouter" -> Übersicht

Falls keine Batterie vorhanden ist einfach das Attribut weglassen. Das Aktualisierungsintervall muss größer 0 Minuten sein! (0 = disabled)

Aktuell habe ich es nur unter Linux getestet (auf einem Raspi).
Falls nicht vorhanden werden die folgenden Perl-Module benötigt:


  • WWW::Curl::Easy
  • JSON

Falls das CURL-Modul nicht vorhanden ist, vorher sicherstellen, dass openssl installiert ist ( apt-get install libcurl4-openssl-dev)
Sonstige Abhängigkeiten einfach via: apt-get install libcurl4-openssl-dev cpanminus curl auflösen.

Für "Anfänger" (in der linux shell eingeben):
apt-get update
apt-get install libcurl4-openssl-dev cpanminus curl
cpanm install WWW::Curl::Easy
cpanm install JSON

So far - viel Spaß beim Testen.

Falls ich noch weitere Werte mit aufnehmen soll oder irgendwas geändert werden soll einfach hier posten.

Changelog:
01.11.2016 - added first version of battery state
16.06.2016 - fixed brainlag bug in sprintf
15.06.2016 - reworked lots of original code. increased readability and more error are caught; prepared battery stats
09.06.2016 - fixed missing variable and crash; added configure section for temporary json response from website
16.02.2016 - fixed an issue which lead to crash fhem due to missing exception handling...
15.02.2016 - adopted to new json response and fixed an exception which occured when no connectivity to mypowerrouter.com could be established

Noxus

Hallo,

ist das Modul noch aktuell - also sollte es funktionieren?
Habe es wie beschrieben kopiert und fhem neu gestarten - jedoch kann ich kein "define mypowerrouter powerrouter" ausführen.
Fehlermeldung: Cannot load module powerrouter

wäre nice, wenn man das Modul zum laufen bekäme  :)

lg

der-Lolo

Die üblichen verdächtigen für ein solches Problem hast Du bereits ausgeschlossen?
Passen z.b die rechte der Datei die Du runtergeladen hast?
Hast Du mal neugestartet? Die zusatz Perl Module wurden ohne Fehlermeldungen installiert?


Noxus

Rechte hatte ich angepasst.
Neustart wurde mehrfach durchgeführt.

Aber ich denke Du hast recht - es wird an den Perl Modulen liegen.
"apt-get install libcurl4-openssl-dev" ist ohne Fehler durchgelaufen.
JSON sollte drauf sein

Im Log bekomme ich folgende Fehlermeldung:
Can't locate WWW/Curl/Easy.pm in @INC (@INC contains: fhem.p/lib fhem.p/FHEM/lib ./FHEM/lib ./lib ./FHEM ./ /usr/local/FHEM/share/fhem/FHEM/lib /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at ./FHEM/98_powerrouter.pm line 15, <$fh> line 2773.
BEGIN failed--compilation aborted at ./FHEM/98_powerrouter.pm line 15, <$fh> line 2773.


Also hängt es wohl daran, dass das Modul "WWW::Curl::Easy" nicht drauf ist.
Mache mich mal schlau wie ich das drauf bekomme und teste weiter... danke für die Hinweise  :)

Noxus

Nach Installation des Modules wie folgt: (vielleicht kann das ja mal jemand gebrauchen)
perl -MCPAN -e "CPAN::Shell->force(qw(install WWW::Curl::Easy));"
funktioniert nun der Zugriff, aber die Werte werden nicht richtig von "https://www.mypowerrouter.com/" gezogen.
Wahrscheinlich wegen Veränderungen der Homepage - ich werde mir das mal bei Gelegenheit genauer anschauen.

SkyRaVeR

Hallo,

hatte leider keine Zeit früher zu Antworten.

Es werden die folgenden Module benötigt:

Debianpackages:
- libcurl4-openssl-dev
- cpanminus
- curl

einfach installieren via: apt-get install libcurl4-openssl-dev cpanminus curl
(vorher apt-get update nicht vergessen)

Perl:
- WWW::Curl::Easy
- JSON

einfach installieren via:
cpanm install WWW::Curl::Easy
cpanm install JSON

Probleme mit einer kaputten json-response habe ich heute (15.02.2016) gefixed.

Grüße

peter456

Hallo,
habe heute alles nach Anleitung installiert.
Leider bleibt mein FHEM hängen sobald ich in FHEM auf das Modul klicke oder wenn zu voller Stunde die Daten abgefragt werden.
Das Modul wird in FHEM als "aktive" angezeigt.
Folgende Warnungen werden im LOG-File angezeigt wenn ich das Modul neu lade (reload):
2016.02.16 09:17:07 1: PERL WARNING: Subroutine powerrouter_Initialize redefined at ./FHEM/98_powerrouter.pm line 37.
2016.02.16 09:17:07 1: PERL WARNING: Subroutine powerrouter_Define redefined at ./FHEM/98_powerrouter.pm line 48.
2016.02.16 09:17:07 1: PERL WARNING: Subroutine powerrouter_Set redefined at ./FHEM/98_powerrouter.pm line 73.
2016.02.16 09:17:07 1: PERL WARNING: Subroutine powerrouter_Get redefined at ./FHEM/98_powerrouter.pm line 79.
2016.02.16 09:17:07 1: PERL WARNING: Subroutine powerrouter_GetUpdate redefined at ./FHEM/98_powerrouter.pm line 94.
2016.02.16 09:17:07 1: PERL WARNING: Subroutine prepare_retrieveData redefined at ./FHEM/98_powerrouter.pm line 103.
2016.02.16 09:17:07 1: PERL WARNING: Subroutine powerrouter_retrieveData redefined at ./FHEM/98_powerrouter.pm line 126.
2016.02.16 09:17:07 1: PERL WARNING: Subroutine powerrouter_parsejsonresponse redefined at ./FHEM/98_powerrouter.pm line 196.
2016.02.16 09:17:07 1: PERL WARNING: Subroutine powerrouter_parsejsonresponse_distribution redefined at ./FHEM/98_powerrouter.pm line 259.

Kann mir jemand sagen was hier falsch ist?

SkyRaVeR

Hallo,

kannst du bitte mal posten was in <fhemroot>/log/cat mypowerrouter-02-2016.log steht? (bzw. per PM an mich)
Da ich vergessen habe im GIT mein debug-logging zu disablen sollte auch noch im <fhemroot>/ ein Logfile sein, dass wie folgt aufgebaut ist " 2016-02-16T22:05_dist.log"
Bitte mal posten was drinnen steht.

Ich werde am WE noch mal das logging disablen und eine neue Version auf Git stellen.

Grüße

peter456

Hallo,
da wurden mehrere Dateien angelegt. Hier der Inhalt der Datei "2016-02-16T10_05_dist" :
{"power_routers":{"Meine-ID habe ich hier gelöscht":{"history":{"production":{"label":"Erzeugung","description":"","data_type":"Wh","data_type_symbol":"Wh","data":[["2016-02-15T08:00:00Z",0],["2016-02-15T09:00:00Z",0],["2016-02-15T10:00:00Z",54],["2016-02-15T11:00:00Z",157],["2016-02-15T12:00:00Z",209],["2016-02-15T13:00:00Z",71],["2016-02-15T14:00:00Z",3],["2016-02-15T15:00:00Z",0],["2016-02-15T16:00:00Z",0],["2016-02-15T17:00:00Z",0],["2016-02-15T18:00:00Z",0],["2016-02-15T19:00:00Z",0],["2016-02-15T20:00:00Z",0],["2016-02-15T21:00:00Z",0],["2016-02-15T22:00:00Z",0],["2016-02-15T23:00:00Z",0],["2016-02-16T00:00:00Z",0],["2016-02-16T01:00:00Z",0],["2016-02-16T02:00:00Z",0],["2016-02-16T03:00:00Z",0],["2016-02-16T04:00:00Z",0],["2016-02-16T05:00:00Z",0],["2016-02-16T06:00:00Z",0],["2016-02-16T07:00:00Z",0],["2016-02-16T08:00:00Z",0],["2016-02-16T09:00:00Z",42]]}},"label":"PR30S/S0","history_end_time":"2016-02-16T09:00:00Z","history_start_time":"2013-06-08T11:00:00Z","power_router_local_time":"2016-02-16T10:33:57Z"}},"perspectives":["total_yield"]}

Dann gab es noch eine Datei "2016-02-16T10_05" mit Inhalt:
{"power_routers":{}}
Gruß
Peter

SkyRaVeR

Hallo,

also auf den 1. Blick schaut es ganz gut aus, da ja Werte von der Webseite ausgelesen werden.
Aktualisier das Modul mal bitte und nimm die Version, die auf GIT ist (1.0.3). Da sollten ein paar Exceptions abgefangen werden.
Wenn es immernoch crashed mal ins fhem logfile schauen ob da etwas steht.

Ich hatte gestern auch einen crash, als die Webseite mir als Antwort "Sorry - wir sind überlastet, versuch es später noch einmal" geliefert hat.
Da ich etwas lazy programmiert habe fehlt an der ein oder anderen Stelle ein try catch bei exceptions. Auf GIT habe ich 1.0.3 hochgeladen.
Werde den Code am WE noch etwas aufräumen und das Logging wie angekündigt disablen.

Gruß

peter456

Vielen dank für die schnelle Antwort.

Noxus

Weiß vielleicht jemand, was es sein könnte, wenn ich als state ,axs denied bekomme?
Es erfolgt auch kein Update im Modul.
Habe die neueste Version von Github im Einsatz, die Log-Files werden auch immer noch in /fhem root erstellt (..._dist.log) - leider ist meines hierbei 0k groß und leer.


Noxus

Habe alles noch mal neu drauf gespielt und bekomme nun das Login, jedoch werden keinerlei Werte gezogen - das heißt alles steht auf 0
Kann vielleicht jemand bestätigen, bei dem es läuft das es an mir liegt, oder ist hier ein allg. Problem mit dem Modul?

SkyRaVeR

Hey,

die Antwort ist etwas verspätet, aber "state ,axs denied" bedeutet, dass Login/Passwort nicht korrekt waren.
Kann aber auch damit zusammenhängen, dass mypowerrouter.com im März/April ihre Seite umgebaut haben und dort ab und an eine Downtime zustande kam.

Noxus

Ah, ok... komisch, hatte das eigentlich mehrfach gecheckt... aber werde bei Gelegenheit das Modul wieder downloaden und noch einmal probieren.
Hatte das erst einmal entfernt, weil auch ne Menge Logs im Fhem-root geschrieben wurden. Ist dafür etwas im Modul von dir angepasst worden? Schon mal vielen Danke dir :)