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

Volker Kettenbach


Volker Kettenbach

Zitat von: rola am 26 November 2016, 10:16:01
HI,

ich habe 5 TPLink HS110 im Einsatz. Manchmal bekomme ich folgende Fehler-Meldung (verschiedene Geräte, nicht nachvollziehbar wann):
-->json-decoding failed. Problem decoding getting statistical data
Daraufhin habe ich ein paar Debug-messages eingebaut und herausgefunden dass in dem eval (Zeile 157) das letzte readingsBulkUpdate schiefgeht, weil $count = 0 ist und die Division dann scheitert.
$jason enthält folgende Daten:
{"emeter":{"get_daystat":{"day_list":[],"err_code":0}}}
Kann es sein, dass dass Array-Format in day_list der Grund ist - wenn die Abfrage klappt, ist es wie erwartet ein Hash
Testweise habe ich ein if ($count) um das letzte readingsBulkUpdate gebaut und damit die Fehlermeldung erledigt.

Viele Grüße

Danke für den Tip!
Ich habe den Code angepasst und eingecheckt.
Ab morgen ist das auch im offiziellen FHEM drin.

bjoernbo

auch auf die Gefahr hin, dass ich mich wiederhole! Das Modul läuft einwandfrei, allerdings wird mein globales-FHEM Logfile mit folgenden Einträgen zugefüllt !

Zitat2016.12.01 00:00:04 3: WattVerbrauchsmesser: Too many arguments for main::ReadingsVal at (eval 543933) line 1, near "0)"

2016.12.01 00:00:09 3: WattVerbrauchsmesser: Too many arguments for main::ReadingsVal at (eval 543937) line 1, near "0)"

2016.12.01 00:00:14 3: WattVerbrauchsmesser: Too many arguments for main::ReadingsVal at (eval 543942) line 1, near "0)"

Diese Einträge ziehen sich fast bis ins unendliche fort!

Da alles einwandfrei läuft, daher die Frage, kann ich es irgendwie unterbinden das diese Einträge ins FHEM-LOGFILE geschrieben werden?
Raspberry Pi 3 - FB6490C - Synology NAS DS916+ - NETATMO - HUE - SIEMENS G-Tag'S - FTUI - EchoDOT -

Volker Kettenbach

Komisch.
Neueste Modulversion im Einsatz?
Wie ist Dein define?
Wie ist der loglevel?

DasB

Sorry für die blöde Frage aber ich stehe gerade maximal auf dem Schlauch.  ???

Was für Werte werden zurückgeliefert, um welche Einheiten handelt es sich?

current = Aktueller Strom in A
voltage = Aktuelle Spannung in V
daily_average = Tagesdurchschnitt in Wh? Sprich, Wie viel W hat das Gerät im Durchschnitt pro Stunde verbraucht
monthly_total = Monat Gesamt in Wh?
total = Gesamtzähler in Wh?

Irgendwie ergeben die Zahlen für mich keinen Sinn und ich habe das Gefühl völlig daneben zu liegen. Ich würde gerne aus den Daten den Stromverbrauch in kw/h berechnen, bin mir jedoch nicht sicher was ich hier für Werte vor mir habe.

Volker Kettenbach

Zitat von: DasB am 02 Januar 2017, 18:07:31
Sorry für die blöde Frage aber ich stehe gerade maximal auf dem Schlauch.  ???

Was für Werte werden zurückgeliefert, um welche Einheiten handelt es sich?

current = Aktueller Strom in A
voltage = Aktuelle Spannung in V
daily_average = Tagesdurchschnitt in Wh? Sprich, Wie viel W hat das Gerät im Durchschnitt pro Stunde verbraucht
monthly_total = Monat Gesamt in Wh?
total = Gesamtzähler in Wh?

Irgendwie ergeben die Zahlen für mich keinen Sinn und ich habe das Gefühl völlig daneben zu liegen. Ich würde gerne aus den Daten den Stromverbrauch in kw/h berechnen, bin mir jedoch nicht sicher was ich hier für Werte vor mir habe.

Schau mal in der App.
Fhem gibt die gleichen Werte aus wie die App.
Ich weiss es nämlich auch nicht genau.

DasB

Gute Idee,

warum bin ich da nicht selbst drauf gekommen  :-X

Habe die Werte mal verglichen, irgendwie werde ich da nicht schlau daraus. Das passt doch nicht zusammen?

Readings:
     2017-01-02 20:11:13   current         0.032747
     2017-01-02 20:11:13   daily_average   0.4885
     2017-01-02 20:11:13   monthly_total   0.977
     2017-01-02 20:11:13   on_time         263972
     2017-01-02 20:11:13   power           0
     2017-01-02 20:11:13   relay_state     1
     2017-01-02 20:11:13   rssi            -78
     2017-01-02 20:11:13   state           on
     2017-01-02 20:11:13   sw_ver          1.0.8 Build 151101 Rel.24452
     2017-01-02 20:11:13   total           0.977
     2017-01-02 20:11:13   type            smartplug
     2017-01-02 20:11:13   updating        0
     2017-01-02 20:11:13   voltage         224.478151



Volker Kettenbach

Zitat von: DasB am 02 Januar 2017, 20:13:30
Gute Idee,

warum bin ich da nicht selbst drauf gekommen  :-X

Habe die Werte mal verglichen, irgendwie werde ich da nicht schlau daraus. Das passt doch nicht zusammen?

Readings:
     2017-01-02 20:11:13   current         0.032747
     2017-01-02 20:11:13   daily_average   0.4885
     2017-01-02 20:11:13   monthly_total   0.977
     2017-01-02 20:11:13   on_time         263972
     2017-01-02 20:11:13   power           0
     2017-01-02 20:11:13   relay_state     1
     2017-01-02 20:11:13   rssi            -78
     2017-01-02 20:11:13   state           on
     2017-01-02 20:11:13   sw_ver          1.0.8 Build 151101 Rel.24452
     2017-01-02 20:11:13   total           0.977
     2017-01-02 20:11:13   type            smartplug
     2017-01-02 20:11:13   updating        0
     2017-01-02 20:11:13   voltage         224.478151


Die aktuellen Werte passen:

monthly_total = Total Consumption (gerundet auf 2 Nachkommastellen)
power = current power

Die Daily AVgs passen irgendwie nicht.

Vorschlag: versuch mal mit dem CLI-Tool Deine Geräte aus zu lesen:

./tplink_hs110_cmd.pl -i plug1 -c daystat

./tplink_hs110_cmd.pl -i plug1 -c monthstat

Es gibt in der Steckdose nämlich daily und monthly stats.

Was das "Daily in past 7 days" und "daily ind 30 days" in der App bedeuten soll, verstehe ich nämlich auch nicht.
Mit den CLI Tool siehst Du, was aus der Steckdose wirklich an Daten kommt.










kurtl

Hallo!

Ich verwende einige der HS100 und habe das Problem, dass sich fhem alle paar Tage einmal aufhängt - der letzte Logeintrag ist immer von TPLinkHS110. da ich einen Watchdog laufen habe, ist das nicht so dramatisch, aber vielleicht lässt sich der Fehler ja finden. Hier die letzten Logeinträge vom gestrigen Hänger:

2017.01.07 22:52:07 3: TPLinkHS110: 13.Smartplug.01 Get called. Relay state: 1, RSSI: -77
2017.01.07 22:53:07 3: TPLinkHS110: 13.Smartplug.01 Set <off> called
2017.01.07 22:53:17 3: TPLinkHS110: 13.Smartplug.01 Get called. Relay state: 0, RSSI: -77
2017.01.07 22:53:20 3: TPLinkHS110: 15.Smartplug.03 Set <off> called
2017.01.07 22:53:30 3: TPLinkHS110: 11.Smartplug.05 Get called. Relay state: 0, RSSI: -59
2017.01.07 22:53:35 1: PERL WARNING: substr outside of string at ./FHEM/24_TPLinkHS110.pm line 315.
2017.01.07 22:53:35 1: PERL WARNING: Use of uninitialized value $_[0] in split at ./FHEM/24_TPLinkHS110.pm line 315.
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/24_TPLinkHS110.pm line 137.


Falls ich für den nächsten Hänger an den Logs  was ändern soll, bitte um Info.

lG Kurt

Volker Kettenbach

Hi Kurtl,

danke für die Info.
Zwei Dinge fallen mir dazu ein:

1. Scheinbar liefert Deine HS100 unvollständige oder leere Daten zurück. Warum Sie das tut, weiss ich auch nicht. Vlt. solltest Du mal prüfen, ob es ein Softwareupdate für das Ding gibt. Meine HS110s machen das jedenfalls nicht.
Das Abfangen diesen Fehlers ist machbar. Ich werde die Tage dafür was programmieren und ins nächste Release bringen.

2. Warum FHEM sich dabei aufhängt, weiss ich auch nicht. Das sollte an sich nicht sein, denn es ist keine Division durch 0 oder ähnlich involviert.

Gruß
Volker

Volker Kettenbach

So, ich hab's gleich gemacht.

Entweder ab morgen das Modul 24_TPLinkHS110 aus dem FHEM-SVN holen oder ab sofort hier:
https://github.com/kettenbach-it/FHEM-TPLink-HS110/blob/master/24_TPLinkHS110.pm

Ab Log-Level 1 wird geloggt, wenn das TPLink Gerät 0-Daten sendet und ab Log-Level 2 werden Fehler im JSON geloggt.
Ich empfehle also mal den Betrieb mit 2.
Bei Bedarf auch 3, dann werden auch Decoding-Ergebnisse geloggt.

Viel Spaß!

kurtl

Hi!

Danke, werde ich gleich einspielen. Meine Steckdosen sind übrigens HS110 (habe mich oben vertippt) und sind alle auf der aktuellen Firmware.

lG Kurt

panameranet

Hallo, heute wollte ich das neue Modul testen. Allerdings ohne Erfolg. Die beiden benötigten Perl-Module sind am dem Raspberry Pi 3 installiert. Es erscheint die Fehlermeldung in FHEM: Cannot load Modul TPLinkSSH110.
Woran kanns liegen?

Volker Kettenbach