TAPO P100

Begonnen von heig, 24 März 2021, 17:30:26

Vorheriges Thema - Nächstes Thema

erdferkel

Ich habe nur die P100 Version, daher kann ich zu den anderen Modellen leider nichts sagen.
Wenn sich das Protokoll nicht geändert hat, sollten die Werte aber mit allen anderen Readings ausgelesen werden.

chriskl

Dann bestell ich mal und melde das Ergebnis  ;D

neo_28

Hallo,

die Integration einer P110 funktioniert soweit, aber leider werden die Energiewerte nicht übermittelt.

Gruß

Neo28

chriskl

Ich habe gestern meine P115 bekommen :)
Wie neo28 schon berichtet hat funktioniert das problemlos, bis auf die Energiewerte  >:(
Ich hab das von https://github.com/fishbigger/TapoP100 mal probiert und siehe da das funktioniert:

>>> p110.getEnergyUsage()
{'result': {'today_runtime': 160, 'month_runtime': 188, 'today_energy': 0, 'month_energy': 0, 'local_time': '2023-04-04 11:44:09', 'electricity_charge': [0, 0, 0], 'current_power': 0}, 'error_code': 0}

Da stellt sich die Frage ob man erdferkel zu einer Erweiterung bewegen kann  ;)

Ich fände das super.

neo_28

Darüber würde ich mich auch riesig freuen>!

Mir fehlt es da leider am KnowHow :-\

chriskl

Hi,
ich hab mir das Modul mal angeschaut und eine Möglichkeit gefunden die Energiewerte zu erhalten.
Leider ist das nicht die optimale Lösung, funktioniert aber für mich ;D

Ich habe 00_TapoP100.pm nach 00_TapoP110.pm kopiert und dort folgende Änderungen gemacht:
- ersetze alle "P100" durch "P110"
- ersetze "get_device_info" durch "get_energy_usage"

Nach einem Restart von FHEM lässt sich zusätzlich zum TapoP100-Device ein TapoP110-Device erstellen.
Hier landen dann die Energie-Werte.
Mit den userReadings erreiche ich gleiche Readings wie bei meinen bisher genutzten TPLink KASA KP115 ;)

defmod P115_01 TapoP100 ip user password
defmod P115_01_energy TapoP110 ip user password
attr P115_01_energy userReadings daily_total:today_energy.* {sprintf("%.3f", ReadingsVal($name,"today_energy","0")/1000)},\
power:current_power.* {sprintf("%.3f", ReadingsVal($name,"current_power","0")/1000)}
attr P115_01_energy webCmd :

Ich hab auch versucht die Methode get_energy_usage zusätzlich ins Modul TapoP100.pm einzubauen, bin dabei aber kläglich gescheitert :'(

Gruß

Christoph

erdferkel

Hallo,
leider bekomme ich anscheinend keine Benachrichtigung mehr über neue Beiträge...  >:(

Ich habe mir jetzt auch von den P115 bestellt und erweitere das Modul, sobald die da sind. Ohne Testobjekt ist das sonst etwas schwierig.

Eigentlich wollte ich kurz mitteilen, dass die 49 Tage Grenze durch den Reboot wieder neu gestartet wird. Mir war beim Testen ein Stromausfall dazwischen gekommen. ;)  Also z.B. einmal im Monat per Timer rebooten und dann sollte es keine Ausfälle mehr geben.

Grüße, Peter

erdferkel

Die Steckdosen sind angekommen und das Modul erweitert.  ;D

Wenn das Modell P110 oder P115 erkannt wird, erfolgt jetzt automatisch im Anschluß an das Update eine Abfrage der Energiewerte und wird einfach mit allen anderen Readings aktualisiert.
Den P110 habe ich nicht, gehe aber davon aus, dass es damit genauso wie mit dem P115 funktioniert.

PS: Hat jemand eine Idee, was "electricity_charge" sein soll?

Grüße, Peter

chriskl

Hallo Peter,
DANKE für das Update.
Funktioniert bei mir  ;D

electricity charge = Stromgebühr.
Könnte mir vorstellen dass man den Preis pro kWh irgendwo einstellen kann und dann € angezeigt werden?
Hab in der App aber auch nix gefunden  :(

Ich habe bei power " W" rausgenommen, passt so besser bei mir rein.

Hast du eine Idee warum stateFormat nicht in der Attr-Liste ist? Würde das gerne nutzen.

Gruß

Christoph

erdferkel

Hallo Christoph,

danke für den Tipp mit der Preisberechnung, das könnte natürlich sein.

Warum "stateFormat" nicht automatisch bei den Attributen auftaucht, weiß ich auch nicht - es ist ja ein "framework" Attribut. Wenn man es aber im Initialize einfach ergänzt, scheint es zu funktionieren.
$hash->{AttrList}='interval power_divisor timeout verbose:0,1,2,3,4,5'
  .' event-on-change-reading event-on-update-reading timestamp-on-change-reading stateFormat';

  Grüße, Peter

chriskl

Hallo Peter,
ich hab mal in anderen Modulen "geschnaust" und hab das bei mir so geändert:
 $hash->{AttrList}='interval power_divisor timeout ' .
        "$readingFnAttributes";

Gruß

Christoph

erdferkel

Hallo Christoph,

Super - danke, das war mir irgendwie entgangen.  :)
Hier ist eine neue Version mit dieser Änderung.

Grüße, Peter

donaldo

Kann mir vielleicht jemand helfen ? Komme nicht weiter.

Habe alle hier empfohlenen Pakete nachinstalliert. Bekomme beim Installationsversuch  die Fehlermeldung :

"Can't locate UUID.pm in @INC (you may need to install the UUID module) (@INC contains: ./FHEM/lib ./lib ./FHEM . /etc/perl /usr/local/lib/aarch64-linux-gnu/perl/5.32.1 /usr/local/share/perl/5.32.1 /usr/lib/aarch64-linux-gnu/perl5/5.32 /usr/share/perl5 /usr/lib/aarch64-linux-gnu/perl-base /usr/lib/aarch64-linux-gnu/perl/5.32 /usr/share/perl/5.32 /usr/local/lib/site_perl) at ./FHEM/00_TapoP100.pm line 22.
BEGIN failed--compilation aborted at ./FHEM/00_TapoP100.pm line 22."

Die Datei UUID.pm befindet sich bei mir im Verzeichnis: /usr/lib/aarch64-linux-gnu/perl5/5.32/Data/UUID.pm

Wenn ich die ins /opt/fhem/FHEM kopiere und define <name> TapoP100 <hostname/IP> <username> <password> ausführe, stürzt bei mir FHEM ab.

Gruß
Martin

erdferkel

Hallo Martin,

unter Debian gibt es zwei Pakete mit der Datei "UUID.pm": libdata-uuid-perl und libuuid-perl. Beim ersten liegt die Datei im Unterverzeichnis Data/ und müsste über "use Data::UUID" eingebunden werden. Da ich aber nicht weiß, ob das damit funktioniert, solltest Du noch das zweite Paket "libuuid-perl" installieren. Wenn Du kein Debian hast, heißt das Paket evtl. auch anders.

Grüße, Peter

donaldo

vielen Dank, mit der Installation von libuuid-perl hat es geklappt !