24_TPLinkHS110.pm: Support für TPLink HS100/HS110 v1/2/3 Steckdosen

Begonnen von Volker Kettenbach, 25 August 2016, 18:03:57

Vorheriges Thema - Nächstes Thema

DS_Starter

Hallo Volker,

ich habe das Modul etwas umgebaut damit man mehr sieht. Mit verbose 5 kann man sich die empfangenen Daten (Get) ansehen.

Es ist deutlich zu sehen dass im Meldungsfall die Daten unvollständig/abgeschnitten sind.
Hast du eine Idee woran das liegen könnte. Es kommt immer mal wieder vor.


2018.05.28 22:31:34.208 3: TPLinkHS110: tplink.energymeter Get called. Relay state: 1, RSSI: -60
2018.05.28 22:31:34.251 3: TPLinkHS110: tplink.energymeter Device is an HS110. Got extra realtime data: 2.26819 Watt, 233.937667 Volt, 0.074182 Ampere
2018.05.28 22:31:34.287 5: tplink.energymeter - Data returned: '{"emeter":{"get_daystat":{"day_list":[{"year":2018,"month":5,"day":1,"energy":0.064000},{"year":2018,"month":5,"day":2,"energy":0.062000},{"year":2018,"month":5,"day":3,"energy":0.062000},{"year":2018,"month":5,"day":4,"energy":0.063000},{"year":2018,"month":5,"day":5,"energy":0.074000},{"year":2018,"month":5,"day":6,"energy":0.083000},{"year":2018,"month":5,"day":7,"energy":0.083000},{"year":2018,"month":5,"day":8,"energy":0.083000},{"year":2018,"month":5,"day":9,"energy":0.083000},{"year":2018,"month":5,"day":10,"energy":0.083000},{"year":2018,"month":5,"day":11,"energy":0.083000},{"year":2018,"month":5,"day":12,"energy":0.083000},{"year":2018,"month":5,"day":13,"energy":0.082000},{"year":2018,"month":5,"day":14,"energy":0.083000},{"year":2018,"month":5,"day":15,"energy":0.083000},{"year":2018,"month":5,"day":16,"energy":0.083000},{"year":2018,"month":5,"day":17,"energy":0.083000},{"year":2018,"month":5,"day":18,"energy":0.083000},{"year":2018,"month":5,"day":19,"energy":0.083000},{"year":2018,"month":5,"day":20,"energy":0.083000},{"year":2018,"month":5,"day":21,"energy":0.082000},{"year":2018,"month":5,"day":22,"energy":0.083000},{"year":2018,"month":5,"day":23,"energy":0.063000},{"year":2018,"month":5,"day":24,"energy":0.064000},{"year":2018,"month":5,"day":25,"energy":0.067000},{"year":2018,"month":5,"day":26,"energy":0.062000},{"year":2018,"month":5,"day":27,"energy":0.062000},{"year":2018,"month":5,"day":28,"energ'



Die Fehlermeldung falls beim Dekodieren etwas schiefgeht erscheint nun in einem Reading "decode_json", sonst steht dort "ok".
Das geänderte Modulhabe ich mit angehängt.
Vielleicht magst du es so ins SVN übernehemen. Ich denke das ist jetzt hilfreicher und aussagefähiger für eine Fehlersuche.

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter


DS_Starter

Ich hoffe es richtig gemacht zu haben, tue mich immer sehr schwer mit dem Git.

Das Problem an sich ist damit natürlich nicht aus der Welt.
Hast du eine Idee zu den "Verstümmelungen" ?

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Volker Kettenbach

Hallo Heiko,

die Verstümmelungen beobachte ich auch. Ich weiss nicht, warum die auftreten. Ich tippe mal auf die Hardware.

Der Pullrequest wurde irgendwie mit dem Code von der-graph vermischt, der jedoch bereits committet ist.
Ich habe den Pull-Request verworfen und habe mir das Diff zwischen dem o.g. Modul und dem im Master-Branch angeschaut.
Dein Patch ist recht umfangreich.
Ich verstehe nicht, wofür er da ist.
Du schreibst, Du willst den Debug-Output verbessern. Warum dann das hier:

>          my $emeterValue = $realtimejson->{'emeter'}->{'get_realtime'}->{$key2};
>
>          #adjust different hw_ver readings, be sure to list all emeter readings in hwMapping
>          if (exists($hwMap{$hw_ver}{'emeter'}{'get_realtime'}{$key2})) {
>             if (exists($hwMap{$hw_ver}{'emeter'}{'get_realtime'}{$key2}{'factor'})) {
>                $emeterValue = $emeterValue * $hwMap{$hw_ver}{'emeter'}{'get_realtime'}{$key2}{'factor'};
>             }
>             $key2 = $hwMap{$hw_ver}{'emeter'}{'get_realtime'}{$key2}{'name'};
>             readingsBulkUpdate($hash, $key2, $emeterValue);
>             $emeterReadings{$key2} = $emeterValue;
>          } else {
>             return "Check supported hw_ver of device: $hw_ver\n";
>          }
163c192,195

An sich ist der Code vom Modul gut, so wie er ist.
An den Verstümmelungen können wir vermutlich nichts ändern.
Wenn ich Code committen soll, dann müsste dieser besser lesbar und kommentiert sein.
Und in Form einer Patch-Datei oder eines Pull-Requests.

Gruß
Volker

DS_Starter

Hi Volker,

Zitat
>          my $emeterValue = $realtimejson->{'emeter'}->{'get_realtime'}->{$key2};
>
>          #adjust different hw_ver readings, be sure to list all emeter readings in hwMapping
>          if (exists($hwMap{$hw_ver}{'emeter'}{'get_realtime'}{$key2})) {
>             if (exists($hwMap{$hw_ver}{'emeter'}{'get_realtime'}{$key2}{'factor'})) {
>                $emeterValue = $emeterValue * $hwMap{$hw_ver}{'emeter'}{'get_realtime'}{$key2}{'factor'};
>             }
>             $key2 = $hwMap{$hw_ver}{'emeter'}{'get_realtime'}{$key2}{'name'};
>             readingsBulkUpdate($hash, $key2, $emeterValue);
>             $emeterReadings{$key2} = $emeterValue;
>          } else {
>             return "Check supported hw_ver of device: $hw_ver\n";
>          }
163c192,195

Da habe ich nix mit zu tun  ;) ... Nein, schau nochmal, da hast du wahrscheinlich etwas anderes gesehen als die von mit geänderten Stellen.

Zitat
An sich ist der Code vom Modul gut, so wie er ist.

Ja ist er. Es geht tatsächlich nur um die Möglichkeiten dieser Fehlerdarstellung/Analyse.

ZitatUnd in Form einer Patch-Datei oder eines Pull-Requests.
Ich mache lieber einen SVN-Patch. Ist mir echt sympathischer.
(Kannst du natürlich auch selbst anschauen, die Datei ist ja angehängt)

Melde mich wieder

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Volker Kettenbach

Hallo Heiko,

ich habe mir das jetzt mal angeschaut. Prinzipiell okay.
Ich habe nur ein persönliches Problem:

Mein FHEM ist schon ca. 2 Jahre alt. Ich habe aufgehört das zu aktualisieren, da damals eine erhebliche Änderung des KNX-Moduls gemacht wurde, welches mich zwingen würde, alle meine KNX-Devices neu zu definieren. Da das bei mir sehr viele sind und es Stunden und Tage dauern würde, bin ich auf dieser alten Version stehen geblieben.

Was bei mir jetzt nicht geht ist die Funktion readingsBulkUpdateIfChanged, denn die wurde erst später eingeführt.
Wäre es möglich, dass Du diese Funktion nicht verwendest sondern einfach ein Update machst, egal ob sich was geändert hat?

Für Dein Feature habe ich einen Feature-Branch aufgemacht (ich arbeite mit git-flow):
Der liegt hier:

https://github.com/kettenbach-it/FHEM-TPLink-HS110/tree/feature/ds-starter_extradedebugging

Da kannst Du mir einfach einen Patch dagegen schicken oder die Datei ändern und schicken.

Gruß
Volker

DS_Starter

Hallo Volker,

Zitat
Was bei mir jetzt nicht geht ist die Funktion readingsBulkUpdateIfChanged, denn die wurde erst später eingeführt.
Wäre es möglich, dass Du diese Funktion nicht verwendest sondern einfach ein Update machst, egal ob sich was geändert hat?

Ja klar, kein Problem.
Ich ändere das und versuche mich mal bei deinem Git  ;)

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Volker Kettenbach

Du müsstest eine Datei anhängen oder einen Pull-Request auf den Branch machen

DS_Starter

Hast du eine Handlungsanleitung was wo wie zu machen ist ?  Ich würde gern ein File anhängen, geht aber nicht wegen fehlernder Schreibberechtigung. Ansonsten finde ich nur Kommentarfelder. Ist das immer so aufwändig ? Da lobe ich mir doch SVN :)
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Volker Kettenbach


DS_Starter

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Volker Kettenbach


DS_Starter

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter