[Modul] TP-Link tapo SmartHome

SDK Version Version
License Check Style Run Tests
Spenden Wunschliste

tapo SmartHome

Einbindung der TP-Link tapo SmartHome Geräte

Inhaltsverzeichnis

1. Funktionsumfang

Komplett lokale Kommunikation mit den Geräten.
Die Geräte müssen aber in der TP-Link/tapo Cloud registriert sein, damit die lokale Anmeldung funktioniert!

1. Nicht Geräte Instanzen

tapo Discovery

  • Auffinden von Geräten und Hubs im Netzwerk und Anlegen der Geräte bzw. Konfigurator-Instanz inklusive Gateway in IPS.

tapo Configurator

  • Einfaches Anlegen von Geräte-Instanzen welche mit einem Smart Hub verbunden sind.

tapo Hub IO

Smart Hub Instanz als IO Instanz zur Kommunikation mit den angelernten Funk-Geräten und Symcon.
Folgende Hubs werden unterstützt:

  • KH100
  • H100
  • H200

2. Netzwerk Geräte Instanzen

tapo Light

Leuchtmittel:

  • L510 (E27, dimmbar)
  • L520 (E27, dimmbar)
  • L610 (GU10, dimmbar)

tapo Light Color

Leuchtmittel / LED-Stripe:

  • L530 (E27, dimmbar, mehrfarbig)
  • L535 (E27, dimmbar, mehrfarbig)
  • L630 (GU10, dimmbar, mehrfarbig)
  • L900 (LED Stripe, dimmbar, mehrfarbig)

tapo Stripe Color

Leuchtmittel / LED-Stripe:

  • L920 (LED Stripe, dimmbar, mehrfarbig, Segmentiert)
  • L930 (LED Stripe, dimmbar, mehrfarbig, Segmentiert)

tapo Socket

Zwischenstecker:

  • P100 (mini)
  • P105 (rund)

tapo Energy Socket

Zwischenstecker mit Energiemessung:

  • P110 (mini)
  • P115 (rund)

Weitere Geräte können im Modul ergänzt werden, leider liegen aktuell keine Daten für diese Geräte vor. Hier melden für die integration von weiteren Geräten:
Symcon Community

3. Hub Geräte Instanzen

tapo Hub Device

aktuell umgesetzt und getestete Geräte:

  • KE100 (Heizkörperthermostat)
  • T310 (Temperatur- & Feuchtigkeitssensor)

Alle restlichen Geräte können im Modul ergänzt werden, leider liegen aktuell keine Daten für diese Geräte vor. Hier melden für die integration von weiteren Geräten:
Symcon Community

2. Voraussetzungen

  • IP-Symcon ab Version 6.1

3. Software-Installation

Über den ‚Module-Store‘ in IPS das Modul ‚tapo SmartHome‘ hinzufügen.
Bei kommerzieller Nutzung (z.B. als Errichter oder Integrator) wenden Sie sich bitte an den Autor.
Module-Store

4. Einrichten der Instanzen in IP-Symcon

Details sind direkt in der Dokumentation der jeweiligen Module beschrieben.
Es wird empfohlen die Einrichtung mit der Discovery-Instanz zu starten (tapo Discovery:).

5. Anhang

1. Changelog

siehe nächsten Beitrag

2. Spenden

Die Library ist für die nicht kommerzielle Nutzung kostenlos, Schenkungen als Unterstützung für den Autor werden hier akzeptiert:

Wunschliste

6. Lizenz

IPS-Modul:
CC BY-NC-SA 4.0

Changelog

Version 1.70:

  • tapo Stripe Color ergänzt.

Version 1.65:

  • Smart Hubs werden unterstützt.
  • Geräte von Smart Hubs ergänzt.
  • Diverse Netzwerk Geräte ergänzt.

Version 1.61:

  • P300 Steckdosenleiste ergänzt.

Version 1.60:

  • Discovery Modul zum einfachen auffinden von Geräten im Netzwerk ergänzt
  • tapo Light Modul ergänzt
  • Refactoring der 1.50 um weiterer Geräte und den Smart Hub zu integrieren

Version 1.50:

  • Refactoring der 1.40

Version 1.40:

  • Refactoring der 1.30
  • Neu Verbinden verbessert
  • Leseintervall wurde nicht gesetzt, wenn Gerät offline war, somit auch nie ein automatischer Reconnect wenn Gerät online ging
  • War der Gerätename leer und Instanz automatisch umbenennen aktiv, so wurde der Name der Instanz gelöscht und es war ein Unbenanntes Objekt
  • Cookie sollte sich jetzt automatisch verlängern und nicht mehr statisch sein (Errorcode 9999)

Version 1.30:

  • Neue Verschlüsselung wird unterstützt

Version 1.20:

  • Laufzeit wurde falsch berechnet und nicht als UTC abgelegt
  • Session Timeout wird abgefangen und ein automatischer reconnect wird versucht
  • Fehlerbehandlung verbessert

Version 1.10:

  • Energiemessung von P110 ergänzt

Version 1.00:

  • Release Version für Symcon 6.1

Update im Store

Changelog:

Ich habe eine Tapo P110 bekommen und gleich mal mit dem Modul eingebunden - hat alles bestens geklappt - Vielen Dank für das Modul!

Wenn die Steckdose aber mal nicht erreichbar ist (WLAN-Probleme oder ausgesteckt) erhalte ich folgende Warnungen im Log - vielleicht könnte man das abfangen, wenn keine Verbindung hergestellt werden konnte:

18.08.2023, 23:24:45 | TimerPool            | tapo P110 (RequestState): 
Warning: Undefined array key "device_on" in /mnt/data/symcon/modules/.store/de.nall.chan.tapo.smarthome/Tapo P100/module.php on line 122

Warning: Undefined array key "today_runtime" in /mnt/data/symcon/modules/.store/de.nall.chan.tapo.smarthome/Tapo P110/module.php on line 47

Warning: Undefined array key "month_runtime" in /mnt/data/symcon/modules/.store/de.nall.chan.tapo.smarthome/Tapo P110/module.php on line 48

Warning: Undefined array key "today_runtime" in /mnt/data/symcon/modules/.store/de.nall.chan.tapo.smarthome/Tapo P110/module.php on line 50

Warning: Undefined array key "month_runtime" in /mnt/data/symcon/modules/.store/de.nall.chan.tapo.smarthome/Tapo P110/module.php on line 51

Warning: Undefined array key "today_energy" in /mnt/data/symcon/modules/.store/de.nall.chan.tapo.smarthome/Tapo P110/module.php on line 52

Warning: Undefined array key "month_energy" in /mnt/data/symcon/modules/.store/de.nall.chan.tapo.smarthome/Tapo P110/module.php on line 53

Warning: Undefined array key "current_power" in /mnt/data/symcon/modules/.store/de.nall.chan.tapo.smarthome/Tapo P110/module.php on line 54

Ich glaube auch, dass die Anzeige der Laufzeit noch nicht ganz korrekt ist. Da wird auch kurz nach Inbetriebnahme schon 1 Tag, 1Stunde (Monat) angezeigt.

Hallihallo,

habe das Modul erfolgreich und 4 Tapo P110 eingebunden. Nun entsteht allerdings folgendes Problem. Sobald der Zwischenstecker einmal vom Strom war und anschließend wieder online geht erhalte ich keinerlei Aktualisierungen mehr. Im Debug laufen brav die getinfo Befehle nach 5 Sekunde. Mit der Tapo Cloud App lassen sie sich einwandfrei schalten. Die Stecker erhalten auch nach Neustart dieselbe IP vom Router. Sobald ich in der Instanz etwas ändere und die Änderung speichere funktioniert es wieder, allerdings bei exakt nur einem Zwischenstecker. Die restlichen 3 in meinem Fall sind dann ebenfalls in IPS tot. Ist das Verhalten/Problem bekannt ? LG Sören

Ich habe die Beiträge gesehen, komme aber kurzfristig nicht dazu mir das anzusehen.
Michael

Möchte das Thema nochmal auf die Tagesordnung holen, bei mir läuft

19.09.2023, 11:00:42 | TimerPool            | Spülmaschine (RequestState): 
Notice: Undefined index: today_runtime in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 47

Notice: Undefined index: month_runtime in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 48

Notice: Undefined index: today_runtime in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 50

Notice: Undefined index: month_runtime in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 51

Notice: Undefined index: today_energy in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 52

Notice: Undefined index: month_energy in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 53

Notice: Undefined index: current_power in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 54

und

19.09.2023, 11:01:38 | TimerPool            | Spülmaschine (RequestState): 
Notice: Undefined index: device_on in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P100\module.php on line 122

Notice: Undefined index: today_runtime in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 47

Notice: Undefined index: month_runtime in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 48

Notice: Undefined index: today_runtime in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 50

Notice: Undefined index: month_runtime in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 51

Notice: Undefined index: today_energy in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 52

Notice: Undefined index: month_energy in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 53

Notice: Undefined index: current_power in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P110\module.php on line 54

Wenn ich versuche die Instanz zu aktivieren, poppt ein Fenster auf mit

Fehler beim Übernehmen der Änderungen

Notice: Undefined offset: 0 in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P100\module.php on line 336

Notice: Undefined index: result in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P100\module.php on line 356

Notice: Trying to access array offset on value of type null in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P100\module.php on line 356

Fatal error: Uncaught TypeError: base64_decode() expects parameter 1 to be string, null given in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P100\module.php:358
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P100\module.php(358): base64_decode(NULL)
#1 C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P100\module.php(230): TapoP100->Handshake()
#2 C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P100\module.php(94): TapoP100->Init()
#3 C:\Windows\System32\-(3): TapoP100->ApplyChanges()
#4 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\de.nall.chan.tapo.smarthome\Tapo P100\module.php on line 358
 (Code: -32603)

Hallo Michael,
möchtest du bei Gelegenheit auch die Leuchtmittel „L530E“ und „L510E“ in das Modul aufnehmen? Oder allgemein die Leuchtmittel von TP-Link?
Vielen Dank im Voraus!

Wann schätzt Du könntest Du Dir das anschauen, oder anders gefragt, was kann ich liefern was die Suche vereinfacht… Danke vorab.

Hallo @Nall-chan,
ich habe die von mir beschriebenen Fehlermeldungen und auch das Reconnect Problem von @berkaso gefixt und dir einen Pull-Request zukommen lassen.

Danke @hirschbrat für den PR.
Habe es gemergt und als Version 1.20 steht das Modul jetzt als Beta im Store bereit.
Michael

1 „Gefällt mir“

So, ich wollte eine neue P110 in Betrieb nehmen und habe (leider) erstmal die Firmware aktualisiert.
Jetzt ist keine Anmeldung mehr durch das Modul möglich.
Debug:

30.11.2023, 19:33:55 | Handshake Result:200 | {"error_code":1003}

Es scheint sich etwas an der Verschlüsselung geändert zu haben. Ich habe dazu folgenden Eintrag gefunden, in dem auch schon Lösungen für OpenHab und Home Assistant verlinkt sind:

Muss ich mir anschauen und versuchen ob ich ein Gerät auf die entsprechende Firmware bekomme. Sonst wird es eher ein try & Error werden :sweat_smile:
Michael

1 „Gefällt mir“

So, Firmware drauf. Im Modul erkennen wann das kasa Protokoll benutzt werden muss klappt schon.
Allerdings brauche ich etwas Zeit um das neue Protokoll einzubauen und zu verstehen.
Michael

2 „Gefällt mir“

Update im Store

Beta für IPS ab 6.0
Testing nur für IPS ab 7.0

Changelog:

Hi Michael,
ich benutze einen Tapo P110, das schalten geht wieder, nur werden mir keine Energiewerte angezeigt.
Beim neu anlegen der Instanz bekomme ich folgende Meldung: „Notice: Nicht verbunden in /var/lib/symcon/modules/.store/de.nall.chan.tapo.smarthome/Tapo P100/module.php on line 234
(Code: -32603)“

Danke Michael

Warum sollte man eine Instanz, bei einer Fehlermeldung, neu anlegen wollen, das verstehe ich bis heute nicht. Wunderheilung gibt es nicht :wink:

Wenn das schalten funktioniert, aber die Messwerte nicht, dann brauche ich einen Debug beim Abrufen der Messwerte.
Michael

war ja mal ein Versuch wert :wink:
dump.txt (18,0 KB)
hab mal versucht eine Debug Datei anzuhängen.

Beim P110 tatsächlich was übersehen :slight_smile:

Jetzt sollte es gehen. Versionsnummer ist gleich.
Michael