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

Lichti

Nachdem ich einen FHEM-Update gemacht hatte, kommt es nach ca. 1-2 Stunden zum Absturz von FHEM.

Letzte Meldungen im Log:
2018.10.28 20:55:10 3: TPLinkHS110: HS100 Get called. Relay state: 0, RSSI: -72
2018.10.28 20:55:10 3: TPLinkHS110: HS100 Updating readings
2018.10.28 20:55:10 3: TPLinkHS110: HS100 Get end
2018.10.28 20:55:11 1: PERL WARNING: Use of uninitialized value $data in substr at ./FHEM/24_TPLinkHS110.pm line 116.
substr outside of string at ./FHEM/24_TPLinkHS110.pm line 116.

Nach Einsatz einer älteren Version von 24_TPLinkHS110.pm läuft es wieder.

BM030

Zitat von: Volker Kettenbach am 25 September 2018, 07:31:56
Kurzes Update: die LB ist mittlerweile da.
Ich plane für die nächsten Wochen einiges zu programmieren. Da werde ich versuchen das mit zu machen.

Hallo Volker,

Bist du schon dazu gekommen?

Grüße Gordon

Volker Kettenbach


delta8585

Zitat von: Lichti am 29 Oktober 2018, 16:02:36
Nachdem ich einen FHEM-Update gemacht hatte, kommt es nach ca. 1-2 Stunden zum Absturz von FHEM.

Letzte Meldungen im Log:
2018.10.28 20:55:10 3: TPLinkHS110: HS100 Get called. Relay state: 0, RSSI: -72
2018.10.28 20:55:10 3: TPLinkHS110: HS100 Updating readings
2018.10.28 20:55:10 3: TPLinkHS110: HS100 Get end
2018.10.28 20:55:11 1: PERL WARNING: Use of uninitialized value $data in substr at ./FHEM/24_TPLinkHS110.pm line 116.
substr outside of string at ./FHEM/24_TPLinkHS110.pm line 116.

Nach Einsatz einer älteren Version von 24_TPLinkHS110.pm läuft es wieder.

ich habe das gleiche Problem. Gibt es dazu schon eine Lösung?

Volker Kettenbach


delta8585

Hmm kann ich irgendwie helfen?

mir ist noch aufgefallen das die Zeilen Angabe nicht immer gleich ist.
Ich bekomme manchmal:

PERL WARNING: Use of uninitialized value $data in substr at ./FHEM/24_TPLinkHS110.pm line 214.
oder
PERL WARNING: Use of uninitialized value $rdata in substr at ./FHEM/24_TPLinkHS110.pm line 162.
oder
PERL WARNING: Use of uninitialized value $data in substr at ./FHEM/24_TPLinkHS110.pm line 116.


ebenfalls denke ich, es hat was mit der Erreichbarkeit der Steckdose zu tun. Ich bin mir nicht ganz sicher. Aber es kann sein das der Fehler erst auftritt, seitdem ich sie an einer anderen Steckdose angesteckt habe. Dort ist der Wlan Empfang nicht sehr gut.
Könnte das die Ursache sein?

Lichti

Bei mir ist der Empfang immer sehr gut. Fehler tritt aber trotzdem auf.
Mit der alten Version läuft es aber wieder problemlos.

STING333

Moin,

mal eine Frage, habe von TP-Link RE270K (Steckdose wie HS100 mit Repeater + LAN Port) würde die auch gerne über FHEM schalten. Hatte die Hoffnung das würde mit deinem Modul klappen....

Einbinden geht auch aber es kommt dann die folgende Meldung:

,,Couldn't connect to 192.168.2.250:9999: IO::Socket::INET: connect: timeout"

Die Steckdose und Reapeater werden auch über die KASA App gesteuert exakt wie die HS100/HS110. Besteht die Chance die auch über das Modul zu steuern?

Was würde ggf. Benötigt das diese eingebaut werden könnte?

Von den HS100/110 nutze ich 9 Stück alle zuverlässig :)

Danke und Gruß
Gerhard
FHEM 5.8 auf RPi 3
Perl: v5.24.1

Volker Kettenbach

Zitat von: STING333 am 01 Dezember 2018, 20:20:16
Moin,

mal eine Frage, habe von TP-Link RE270K (Steckdose wie HS100 mit Repeater + LAN Port) würde die auch gerne über FHEM schalten. Hatte die Hoffnung das würde mit deinem Modul klappen....

Einbinden geht auch aber es kommt dann die folgende Meldung:

,,Couldn't connect to 192.168.2.250:9999: IO::Socket::INET: connect: timeout"

Die Steckdose und Reapeater werden auch über die KASA App gesteuert exakt wie die HS100/HS110. Besteht die Chance die auch über das Modul zu steuern?

Was würde ggf. Benötigt das diese eingebaut werden könnte?

Von den HS100/110 nutze ich 9 Stück alle zuverlässig :)

Danke und Gruß
Gerhard

Hallo Gerhard,

Hier kannst du den Stand der Dinge nachlesen, was die Entschlüsselung des Protokolls angeht:
https://github.com/plasticrake/tplink-smarthome-api/issues/15

Da hat sich seit einem Jahr nichts getan. Ich sehe die Chancen daher schlecht.

Gruss
Volker

STING333

Hallo Volker,

oh danke... wenn ich das richtig sehe würde das Thema ,,geschlossen" kennst du ggf. eine Alternative?

An sich ist es kein Must have..... aber im Smarthome ein Nice to have. Ich hab mir die Steckdose an sich gekauft weil diese das WiFi Siglnal an die LAN Dose weitergibt. Plus die Schaltbare Steckdose.... sowie 2,4 und 5Ghz die Kombination und der Preis haben mir gut gefallen....

Oder hat jemand ggf. Erfahrung mit den neueren Modellen? Nur die sind ja gut doppelt so teuer....

einen schönen 1. Advent

Gerhard
FHEM 5.8 auf RPi 3
Perl: v5.24.1

DerWu

Hallo Volker,

zunächst einmal Danke für deine Arbeit und die Bereitstellung des Moduls!
Leider läuft bei mir etwas nicht ganz rund: Ich betreibe zwei HS100 Steckdosen, eine HW Rev 1 und eine Rev 2.
Während die Rev2 problemlos läuft, habe ich mit der Rev1 vermehrt Ausfälle/Abstürze (Schlatpunkte werden nicht ausgeführt bis hin zum totalen aufhängen der Steckdose)
Im "decode_json" Reading konnte ich vermehr die Fehlermeldung bzgl "malformed json, died in line 471" entdecken.

Ein Blick in den Code und der Verbose Mode 5 offenbarte das Problem: Es werden immer zwei Befehle ausgeführt, einmal das Schalten and sich und danach ein Update des Status. Letzterer liefert bei mir aber sehr oft nur ein leeres reading zurück und bring die Steckdose in einen Rest oder zum hängen:

2018.12.02 15:30:40 3: TPLinkHS110: Umwaelzpumpe Set <on> called
2018.12.02 15:30:41 5: Umwaelzpumpe - Data returned: $VAR1 = '{"system":{"set_relay_state":{"err_code":0}}}';
2018.12.02 15:30:41 5: Umwaelzpumpe - Data returned: $VAR1 = '';


Testweise habe ich den Code angepasst und die 2 Commands durch eine pause von einer Sekunde entzerrt:

if ($json->{'system'}->{'set_relay_state'}->{'err_code'} eq "0") {
#HS100 HW v1.0 is not returning an answer if commands are comming too fast. Hold on for a second
sleep(1);
TPLinkHS110_Get($hash,"");

} else {
         return "Command failed!";
    }


Das Ergebnis: Ein Stresstest von vielen Schaltdurchgängen wurde endlich ohne Hänger gemeistert:

2018.12.02 16:09:00 3: TPLinkHS110: Umwaelzpumpe Set <on> called
2018.12.02 16:09:00 5: Umwaelzpumpe - Data returned: $VAR1 = '{"system":{"set_relay_state":{"err_code":0}}}';
2018.12.02 16:09:01 5: Umwaelzpumpe - Data returned: $VAR1 = '{"system":{"get_sysinfo":{"err_code":0,"sw_ver":"1.2.5 Build 171213 Rel.101415","hw_ver":"1.0","type":"IOT.SMARTPLUGSWITCH","model":"HS100(EU)","mac":"xxx","deviceId":"xxx","hwId":"xxx","fwId":"00000000000000000000000000000000","oemId":"xxx","alias":"Umwaelzpumpe","dev_name":"Wi-Fi Smart Plug","icon_hash":"","relay_state":1,"on_time":1,"active_mode":"none","feature":"TIM","updating":0,"rssi":-65,"led_off":0,"latitude":0,"longitude":0}}}';


Eine Pause von 0.5 war bei mir noch zu kurz, aber gegebenfalls kann man die Pause, und die ggf. benötigte Zeitspanne über ein Attribut einstellbar machen, bzw eine alternative Art die Commands zu separieren implementieren.

Danke & Gruß,
der Wu

Volker Kettenbach

Ich werde sehen, was ich tun kann.
Ich will versuchen zwischen den Jahren den Support für die Bulbs LB100-130 einzubauen.
Da werde ich mich nochmal mit dem Thema Stabilität befassen.

TheTrumpeter

Ich bekomme nach einem Update am 07.12.2018 sporadisch folgende Einträge im Log:
2018.12.07 21:10:48 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/24_TPLinkHS110.pm line 415.
2018.12.07 21:10:48 1: PERL WARNING: substr outside of string at ./FHEM/24_TPLinkHS110.pm line 415.
2018.12.07 21:10:48 1: PERL WARNING: Use of uninitialized value $_[0] in split at ./FHEM/24_TPLinkHS110.pm line 415.
2018.12.07 21:10:48 1: TPLinkHS110: LBE250.Steckdose: Received zero bytes of realtime data. Cannot process realtime data

2018.12.07 21:14:49 1: PERL WARNING: Use of uninitialized value $json in concatenation (.) or string at ./FHEM/24_TPLinkHS110.pm line 243.
2018.12.07 21:14:49 1: TPLinkHS110: LBE250.Steckdose Error updating daystat. Success: 0, json:

Ergänzend zeigt mir Freezemon fast immer recht lange Laufzeiten:
myFreezemon: possible freeze starting at 11:56:56, delay is 1.723 possibly caused by: tmr-TPLinkHS110_Get(LBE250.Steckdose)

Ich habe:
hw_ver 2.0
sw_ver 1.5.4 Build 180815 Rel.121440


Ergänzend verdächtige ich die Steckdose zum "Einfrieren" von FHEM zu führen. Der Prozess läuft weiter, es wird aber nix mehr geloggt, erst ein Beenden über die Konsole wird wieder protokolliert. Nach dem Neustart läuft's wieder problemlos.

Hat jemand Erfahrungen dazu?
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

Calle78

Hi Volker,

auch von mir ein großes Dankeschön, wenns läuft ists eine der günstigsten Leistungsmessungen. Die 7 Lines im Logfile bei Verbose 3 finde ich recht viel, aber mit 2 bei vb2 komm ich klar.

Bislang läufts bei mir auch durch, bei jedem Schaltvorgang hab ich jedoch einen Freeze: Connection lost, trying a reconnect every 5 seconds.

bin ich damit allein?

ciao Carlo
6,RPi4,Buster,HMLAN,HMIP,HUE,ZigBee,piVCCU,C868,C433,JEELINK,ESA2000,IRT1500,HMSECSC2,HMCCTC,HMSECSD,HM132030,HMSCI3FM,HMPB2WM55-2,FHT80,FBAHA,WithingsWS50,Jalousien,Siri,HMS100WD,Fritzbox,Harmony,Twilight,Weather,PushBullet,FHT-9998,HM-CC-TC,Trackr,RolloPort

Todo:ZWave(MieleOfen),LEDWIFI

Lichti

Zu früh gefreut. :(
Jetzt doch wieder ein FHEM-Absturz mit der Meldung:

substr outside of string at ./FHEM/24_TPLinkHS110.pm line 161