TP-Link HS 110 – Energieverbrauch zeigt nichts an

Ich nutze seit einiger Zeit mehrere Wifi-Steckdosen des Herstellers TP-Link vom Typ HS110. Damit kann man Elektrogeräte über WLAN ein- und ausschalten und den Energieverbrauch überwachen. Das funktioniert auch mit der Programmiersprache PHP und das gefällt mir. Eine der Steckdosen nutze ich zur automatischen Überwachung meines Gefrierschranks: Ist der Energieverbrauch über mehrere Stunden zu hoch oder zu niedrig, dann stimmt eventuell etwas nicht (Tür offen?).

Irgendwann Ende 2021 hat das allerdings nicht mehr funktioniert. Der Energieverbrauch zeigte keine Werte mehr an, weder in der Kasa App noch über die PHP-API. Allerdings nur bei einer der Steckdosen. Ich hab die Steckdosen zu unterschiedlichen Zeitpunkten bestellt und daher verschiedene Hardware-Versionen im Einsatz. Die Steckdose mit dem Problem hat die Hardware-Version 2.0 und die Firmware 1.5.4.

Mir ist dann aufgefallen, dass die Steckdose in der Kasa App kein sinnvolles Datum eingestellt hatte und es war auch nicht möglich, das Datum zu aktualisieren. Das Problem war, dass sich die Steckdose das Datum und die aktuelle Uhrzeit direkt aus dem Internet holen will (NTP: Network Time Protocol). Allerdings hatte ich die Steckdosen über die FritzBox gesperrt, so dass diese sich Datum und Uhrzeit nicht holen konnten. Die Sperre hatte ich gemacht um die Steckdosen daran zu hindern, irgendwelche Daten zurück an den Hersteller oder sonst irgendwo hin zu senden.

Ein kurzer Test bestätigte: Sobald die Sperre aufgehoben wird, holt sich die Steckdose das aktuelle Datum und die Uhrzeit. Damit funktioniert dann auch die Energieverbrauchsanzeige wieder.

Da ich den Internet-Zugriff für die Steckdoesen trotzdem beschränken wollte, hab ich für die Steckdosen ein eigenes Zugriffsprofil angelegt. Das geht bei einer FritzBox 7560 ganz einfach, bei anderen Modellen ist das vermutlich ähnlich.

Zunächst unter Internet > Filter > Listen eine Netzwerkanwendung „Alles außer NTP“ anlegen (dem Namen kann man frei wählen). Dort folgendes eintragen:

  • TCP, Quellport beliebig, Zielport beliebig
  • UDP Quellport beliebig, Zielport 1 – 122
  • UDP Quellport beliebig, Zielport 124 – 65535

Damit bleibt nur UDP 123 übrig, das ist der Port, über den das NTP-Protokoll läuft.

Jetzt kann man ein neues Zugriffsprofil anlegen und ihm einen Namen geben, z.B. TPHS110. Als gesperrte Netzwerkanwendungen wird das zuvor angelegte „Alles außer NTP“ ausgwählt. Damit dürfen Geräte mit diesem Profil nur noch über UDP auf den Zielport 123 zugreifen, also nur noch NTP.

Über den Internetseiten-Filter hab ich zusätzlich noch „nur bestimmte Seiten erlauben“ ausgewählt und die Seite cn.pool.net.org eingetragen, das ist der Server von dem sich die TP-Link Steckdosen Datum und Uhrzeit holen. Ob das nur für Internetseiten (also http über Port 80) gilt oder ob damit all Protokolle und Ports mit anderen Server-Namen gesperrt sind, weiß ich nicht.

Das Profil TPHS110 hab ich allen TP-Link Steckdosen zugewiesen, seitdem funktioniert der Energieverbrauchsmonitor wieder auf allen Geräten.