TAPO P100

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

Vorheriges Thema - Nächstes Thema

heig

Hallo zusammen,

hat sich von euch schonmal jemand mit der TAPO P100 Steckdose beschäftigt? Ich habe gesehen, dass die Schnittstelle wohl komplett anders ist als die der HS100 von TP-Link.

Es gibt wohl auch schon ein Python Modul für die Steuerung: https://github.com/fishbigger/TapoP100 - allerdings habe ich keine Skills um das in PERL nachzubauen... Daher - vielleicht hat sich ja schon jemand dran gemacht? Über die Suche habe ich leider nichts gefunden :(

Danke


brembs

Habe auch gesucht und nichts gefunden. Sieht wohl schlecht aus...

Batocin

Also in NodeRed kann man die P100 steuern...dafür einfach node-red-contrib-tplink-tapo-connect-api installieren
Und NodeRed und FHEM kommunizieren dann mittels Mqtt

erdferkel

Hallo,

ich habe mir aus dem Python Code eine Perl Lib gebaut, die ich zum Schalten der P100 verwende.
Mit den FHEM Modulen kenne ich mich leider nicht aus, um das direkt in FHEM einzubauen. Aber vielleicht hilft der Code ja trotzdem irgend jemandem. ;)

Die Lib kann z.B. so genutzt werden:

use TapoP100;

my $p100=TapoP100->new('steckdose.mylan.de');
$p100->login('mail@example.org', 'secret');
$p100->switch(1);
print $p100->name().': '.($p100->isOn() ? 'on' : 'off')."\n";


Viele Grüße, Peter

jnewton957

Das klingt ja schon super.

Kannst (jemand) hier bitte etwas genauer post, wie man nun die Steckdosen einbindet und die defines macht.

Danke
Jörg
FHEM5.8 auf Pi3
V 1.65 nanoCUL433 (IT)
nanoCUL JeeLink
V 1.66 nanoCUL868 (HM) (ESA2000WZ)
xELRO AB440, xDECT200, PCA301, xTFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo)

erdferkel

Hallo Jörg,

wie ich geschrieben hatte, kenne ich mich mit der Struktur/API der FHEM Module leider nicht aus, daher kann man die Steckdosen mit dieser Lib auch nicht direkt aus FHEM ansteuern.
Ich schalte die Dosen einfach per cronjob, was für meine Zwecke völlig ausreichend ist.
Aber vielleicht erbarmt sich ja irgend jemand und macht ein FHEM Modul daraus. ;)

Grüße, Peter

erdferkel

Hallo,

ich habe mich jetzt doch mal näher mit den FHEM Modulen beschäftigt und die Bibliothek entsprechend umgebaut.
Diese Perl Datei kann in den FHEM Ordner kopiert werden und nach Neustart sollte es möglich sein, die Steckdose einzubinden:
define <name> TapoP100 <hostname/IP> <username> <password>

Die Werte des Geräts werden regelmäßig ausgelesen und in Readings gespeichert. Geschaltet werden kann natürlich auch.

Gerne testen und berichten... :)

  Grüße, Peter

derHeimwerker

Hallo,
ich bekomme diese Fehlermeldung

Can't locate Crypt/CBC.pm in @INC (you may need to install the Crypt::CBC module) (@INC contains: /opt/fhem ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM/lib) at ./FHEM/99_TapoP100.pm line 16.
BEGIN failed--compilation aborted at ./FHEM/99_TapoP100.pm line 16.


erdferkel

Hallo,

das Modul benötigt verschiedene Bibltiotheken, von denen manche evtl. nicht installiert sind.
Die folgenden Pakete werden verwendet (dahinter jeweils der Paketname unter Debian/Ubuntu):
Crypt::CBC -> libcrypt-cbc-perl
Crypt::Cipher::AES -> libcryptx-perl
Crypt::OpenSSL::RSA -> libcrypt-openssl-rsa-perl
Digest::SHA -> libperl5.32
JSON -> libjson-perl
LWP -> libwww-perl
MIME::Base64 -> libperl5.32
UUID -> libuuid-perl

  Grüße, Peter

derHeimwerker

funktioniert wunderbar!!
Danke

derHeimwerker

muss mich leider korrigieren...
Seitdem funktioniert mein firmata device, der als Lichtschalter fungier,t nicht mehr :-(
Kannst du da weiter helfen?

erdferkel

#11
Firmata sagt mir jetzt leider gar nichts.
Ist das auch irgendwie mit dem Tapo Switch verbunden?
Funktioniert der Lichtschalter, wenn Du das Tapo Device wieder entfernst?

Ich habe noch verschiedene ZWave Sensoren und Steckdosen in FHEM eingebunden. Bisher konnte ich noch keine Probleme feststellen, seitdem das Tapo Device aktiv ist.

derHeimwerker

Sorry, da hatte ich noch einen anderen Fehler im System. Läuft jetzt alles. Vielen Dank!

erdferkel

Nachdem mir doch endlich die Entwickler Doku im Wiki begegnet ist 8) , habe ich das Modul nochmal überarbeitet.
Da es schon eine fertige Routine für HTTP Requests im Hintergrund gibt, ist der bisher verwendete BlockingCall nicht nötig.
Außerdem sollte der Dateiname nicht mit "99_" beginnen, da das Modul sonst auch ohne entsprechendes Device geladen wird.

Neue set-Funktionen: on-for-timer, off-for-timer, nickname, reboot

PS: Meine Schaltdosen haben bisher immer nach 49 Tagen den Dienst mit Fehlercode "9999" eingestellt. Evtl. kann man das mit einem regelmäßigen Reboot umgehen - habe ich aber noch nicht testen können. Die Funktion 'set ... reboot' gibt es jetzt jedenfalls im Modul.


chriskl

Hallo,
Da bin ich auch interessiert :)
Unterstützt das Modul auch die TAPO P110 bzw. P115? Also mit Energiemessung?

Danke vor ab

Christoph

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