TP Link Tapo 530E bzw. Brilliant Icarus Steuerung

Begonnen von hankie, 23 Januar 2022, 12:18:01

Vorheriges Thema - Nächstes Thema

hankie

Hallo,

ich suche eine Möglichkeit, die E27 Tapo 530E Glühbirne über FHEM zu steuern. Zur Zeit ist es über KNX. Das Problem ist, dass der KNX-Schalter der Strom komplett abschaltet und somit kann man sie nicht mehr steuern. Daher möchte ich die An/Aus über KNX als Trigger in FHEM anbinden und dann via WLAN-Befehl die Lampe Ein/Ausschalten. Es ist auch mit Alexa (Echo und Fire TV Verbindung) und mit iOS-App steuerbar. Zum Not kann ich den Wandschalter (KNX), einfach deaktivieren und dann geht es nur mit der Fernbedienung/Echo oder App. Das ist aber nicht WAF kompatible :-)

Die zweite Sache ist eine Brilliant Icarus LED Lampe. Die Fernbedienung geht mit 2,4 Ghz und ich frage mich, ob jemand das Protokoll schon entschlüsselt hat, somit ich es dann über mein Wandschalter (KNX) -> FHEM auch steuern könnte. Da ich Zennio programmierbare Touch-Aktor am Wand habe, hätte hier schöne Möglichkeiten Szenarien einzustellen.

Danke für die Hilfe!

Viele Grüße
hankie

hankie

hier ist jemand das schon gemacht und anhand der Code wäre es kein Hexenwerk. Es ist aber in Python und wurde für HACS gebaut. Hat jemanden das schon mal in FHEM intergriert?

https://github.com/petretiandrea/home-assistant-tapo-p100

hankie

für die Brilliant-Lampe hat mir den Support-Mitarbeiter geschrieben, dass es wohl mit Tuya verbinden lässt und es komplett offen ist. Tuya (hier im Fhem) habe ich aber nur über die Cloud gesehen und nicht lokal. Also die Frage ist, wie kann ich es mit FHEM verbinden oder zumindest herausfinden, wie der Controller mit der Lampe funktioniert? Alles über 2,4 Ghz?

Viele Grüße
hankie

supernova1963

#3
Zitat von: hankie am 27 Januar 2022, 16:05:38
für die Brilliant-Lampe hat mir den Support-Mitarbeiter geschrieben, dass es wohl mit Tuya verbinden lässt und es komplett offen ist. ...
Hallo hankie,

da ich auch mit dem Gedanken spiele ein l530e einzusetzen, interessiert mich dieses Thema sehr.
Hast du alternativ versucht mit  tuya-convert tasmota oder esphome zu flashen?

Danke,

Gernot

[Edit] Wahrscheinlich ist Tapo nicht Tuya/SmartLife kompatibel!

hankie

hi Gernot

nein, habe ich noch nicht. Ich kann nicht mal die Birne rausnehmen um zu schauen, welche SoC dort eingebaut ist. Sag mir Bescheid, wenn du damit erfolg hast. Würde gern das auch angehen...
Mit eigenen Firmware ist sicherer und ich bräuchte nicht unbedingt via Cloud das zu bedienen

supernova1963

Guten Morgen,

zwischenzeitlich habe ich versucht tuya-convert gemäß Anleitung auf Proxmox zu installieren.
Es hat leider bei mir nicht funktioniert. Das WIFI "vtrust-flash" wird aufgebaut und ist für alle Geräte sichtbar. Leider scheitern alle Versuche ein Gerät damit zu verbinden.
Da ich keine brauchbare Lösung/Ursache für dieses Problem finden konnte, und die Notwendigkeit deutlich hervorgehoben wird, habe ich es zunächst "auf Eis gelegt".
Außerdem bin ich mir noch nicht einmal sicher, ob die TP-Link Tapo's überhaupt Tuya kompatibel sind...

hankie

Zitat von: supernova1963 am 20 Februar 2022, 07:03:52
Guten Morgen,

zwischenzeitlich habe ich versucht tuya-convert gemäß Anleitung auf Proxmox zu installieren.
Es hat leider bei mir nicht funktioniert. Das WIFI "vtrust-flash" wird aufgebaut und ist für alle Geräte sichtbar. Leider scheitern alle Versuche ein Gerät damit zu verbinden.
Da ich keine brauchbare Lösung/Ursache für dieses Problem finden konnte, und die Notwendigkeit deutlich hervorgehoben wird, habe ich es zunächst "auf Eis gelegt".
Außerdem bin ich mir noch nicht einmal sicher, ob die TP-Link Tapo's überhaupt Tuya kompatibel sind...

versuche mal das:

https://github.com/dickydoouk/tp-link-tapo-connect/blob/master/src/api.ts

oder
https://github.com/roflsandwich/Tapo_L530E/blob/main/smartlamp.ps1


ich habe mit dem ersten schon bei Tapo anmelden können, aber beim Aufruf der Devices kam einen Fehler. Ich habe aber immer einzelne Request gemacht und nicht aus einem Code die Befehle ausgeführt. Soweit ich es sehe, kannst du dann auch im Lokalen-Netz zum Device anmelden und Befehle an den Device schicken. Wenn das klappt, könnte man den TP-Link-Cloud auch einfach blockieren, sodass der Luechte komplett off-line ist.
Falls es damit klappt, gib mit kurz Beschied.


Viele Grüße
hankie

supernova1963

Hey hankie,

wenn du die firmware nicht ersetzen möchtest, gibt's die imo einfachste fertige Lösung in node-red: https://flows.nodered.org/node/node-red-contrib-tplink-tapo-connect-api.

Ich hätte jedoch gerne eine "alternative" firmware mit mqtt geflasht. TP-Link Tapo ist nach meinen  bisherigen Recherchen nicht tuya/smartlife kompatible.
Deswegen streiche ich meinen Vorschlag ...
Zitat von: supernova1963 am 10 Februar 2022, 05:39:08
... Hast du alternativ versucht mit  tuya-convert tasmota oder esphome zu flashen? ...


hankie

hallo supernova1963

ja das habe ich schon probiert, aber geht nicht. Mein Tap hängt im Gast-Netz aber selbst wenn mein Rechner im gleichen Netz ist, kann ich es nicht steuern bzw. findet den Device nicht.


supernova1963

Hey hankie,

node-red mit https://flows.nodered.org/node/node-red-contrib-tplink-tapo-connect-api funktioniert bei mir im IOT VLAN einwandfrei (gerade noch einmal getestet).

hankie

danke, jetzt klappt es auch. Ich habe nur den Code etwas näher angeschaut. Der CloudLogin braucht man gar nicht, wenn man die lokale IP-Adresse kennt.
Du muss nur ein loginDeviceByIp(email, password, deviceIp); machen. Es macht zuerst ein Handshake mit dem Device und dann schickt er die Benutzername/Passwort verschlüsselt (key, was er vom Handshake zurückbekommt) an Tapo. So bekommt man ein DeviceToken zurück, womit man die Befehle ausführt.

https://github.com/dickydoouk/tp-link-tapo-connect/blob/master/src/tplinkCipher.ts

Ich bin nicht der Pearl-Experte, wer könnte das auch in FHEM integrieren? Ohne das Cloud-Login?

supernova1963

Hey,

da ich ebenfalls kein Perl -  Experte bin habe, ich für meinen TP-Link Tapo L510e zunächst laienhaft mit node-red (Voraussetzung: node-red-contrib-tplink-tapo-connect-api) eine fhem - Integration (über MQTT) gebastelt.
node-red flow:

[{"id":"cabb8c9e.5c8b4","type":"tab","label":"Tapo L510e","disabled":false,"info":""},{"id":"8c9122ec.ba0448","type":"tplink_turn_off","z":"cabb8c9e.5c8b4","name":"","deviceIp":"10.100.1.54","deviceAlias":"","deviceIpRange":"","searchMode":"ip","x":1020,"y":360,"wires":[["f5f4c9e8.fabba8"]]},{"id":"49c3443.8a3263c","type":"tplink_turn_on","z":"cabb8c9e.5c8b4","name":"","deviceIp":"10.100.1.54","deviceAlias":"","deviceIpRange":"","searchMode":"ip","x":1020,"y":200,"wires":[["f5f4c9e8.fabba8"]]},{"id":"5cb880c1.c66f","type":"inject","z":"cabb8c9e.5c8b4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":840,"y":400,"wires":[["8c9122ec.ba0448"]]},{"id":"8f90a50.a7dcdd8","type":"inject","z":"cabb8c9e.5c8b4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":840,"y":160,"wires":[["49c3443.8a3263c"]]},{"id":"f5f4c9e8.fabba8","type":"tplink_status","z":"cabb8c9e.5c8b4","name":"","deviceIp":"10.100.1.54","deviceAlias":"03_Pendelleuchte","deviceIpRange":"10.100.1.0/24","searchMode":"ip","x":1210,"y":320,"wires":[["53b0d692.8400f8","6aef94e7.dde37c","509399b.a549568","2b446a86.35d476","33c4a11.cd52e5e"]]},{"id":"ed18ba8a.1dbae8","type":"inject","z":"cabb8c9e.5c8b4","name":"ggf. einmal ausführen um flow variable zu setzten!","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":910,"y":40,"wires":[["a129f5b6.c81868"]]},{"id":"6c73fbe2.39eca4","type":"mqtt out","z":"cabb8c9e.5c8b4","name":"","topic":"","qos":"1","retain":"","broker":"398e7530.8f330a","x":1830,"y":320,"wires":[]},{"id":"53b0d692.8400f8","type":"function","z":"cabb8c9e.5c8b4","name":"define MQTT Topic \"tapo/<nickname>/info\"","func":"if (msg.payload.result) {\n    msg.topic = \"tapo/\" + msg.payload.tapoDeviceInfo.nickname + \"/info\";\n    msg.payload = msg.payload.tapoDeviceInfo;\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1510,"y":260,"wires":[["6c73fbe2.39eca4"]]},{"id":"6aef94e7.dde37c","type":"function","z":"cabb8c9e.5c8b4","name":"set MQTT Topic \"tapo/<nickname>/online\"","func":"if (msg.payload.result) {\n    msg.topic = \"tapo/\" + msg.payload.tapoDeviceInfo.nickname + \"/online\";\n    msg.payload = true;\n}\nelse {\n    msg.topic = \"tapo/\" + msg.payload.tapoDeviceInfo.nickname + \"/online\";\n    msg.payload = false;\n}\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1510,"y":300,"wires":[["6c73fbe2.39eca4"]]},{"id":"509399b.a549568","type":"function","z":"cabb8c9e.5c8b4","name":"set MQTT topic \"tapo/<nickname>/relay/0\"","func":"msg.topic = \"tapo/\" + msg.payload.tapoDeviceInfo.nickname + \"/relay/0\";\nif (msg.payload.tapoDeviceInfo.device_on) {\n    msg.payload = \"on\";\n}\nelse {\n    msg.payload = \"off\";\n}\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1510,"y":340,"wires":[["6c73fbe2.39eca4"]]},{"id":"7ce8082f.b76f48","type":"mqtt in","z":"cabb8c9e.5c8b4","name":"","topic":"tapo/03_Pendelleuchte/relay/0/command","qos":"2","datatype":"auto","broker":"398e7530.8f330a","x":200,"y":320,"wires":[["3467c4d3.8cc49c"]]},{"id":"3467c4d3.8cc49c","type":"switch","z":"cabb8c9e.5c8b4","name":"","property":"payload","propertyType":"msg","rules":[{"t":"regex","v":"on","vt":"str","case":false},{"t":"regex","v":"status","vt":"str","case":false},{"t":"regex","v":"off","vt":"str","case":false}],"checkall":"true","repair":false,"outputs":3,"x":590,"y":320,"wires":[["fe7e926c.753f4"],["f5f4c9e8.fabba8"],["e990de4b.67e1a"]]},{"id":"fe7e926c.753f4","type":"change","z":"cabb8c9e.5c8b4","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"re","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":200,"wires":[["49c3443.8a3263c"]]},{"id":"e990de4b.67e1a","type":"change","z":"cabb8c9e.5c8b4","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"re","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":360,"wires":[["8c9122ec.ba0448"]]},{"id":"efb707ea.6cfd58","type":"tplink_brightness","z":"cabb8c9e.5c8b4","name":"","deviceIp":"10.100.1.54","deviceAlias":"","deviceIpRange":"","searchMode":"ip","brightness":"33","x":1030,"y":520,"wires":[["f5f4c9e8.fabba8"]]},{"id":"b88ea3d2.0907f","type":"mqtt in","z":"cabb8c9e.5c8b4","name":"","topic":"tapo/03_Pendelleuchte/relay/0/brightness/command","qos":"2","datatype":"json","broker":"398e7530.8f330a","x":230,"y":520,"wires":[["e45c696d.164028"]]},{"id":"52b9f4d6.cc867c","type":"inject","z":"cabb8c9e.5c8b4","name":"","props":[{"p":"payload.brightness","v":"50","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"str","x":800,"y":560,"wires":[["efb707ea.6cfd58"]]},{"id":"e45c696d.164028","type":"function","z":"cabb8c9e.5c8b4","name":"move2payload.brightness","func":"var newMsg = { payload: msg.payload };\nnewMsg.payload = { brightness : msg.payload};\nreturn newMsg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":750,"y":520,"wires":[["efb707ea.6cfd58"]]},{"id":"2b446a86.35d476","type":"debug","z":"cabb8c9e.5c8b4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1390,"y":420,"wires":[]},{"id":"33c4a11.cd52e5e","type":"function","z":"cabb8c9e.5c8b4","name":"set MQTT topic \"tapo/<nickname>/relay/0/brightness\"","func":"msg.topic = \"tapo/\" + msg.payload.tapoDeviceInfo.nickname + \"/relay/0/brightness\";\nmsg.payload = msg.payload.tapoDeviceInfo.brightness;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1540,"y":380,"wires":[["6c73fbe2.39eca4"]]},{"id":"b3bfca29.965de8","type":"mqtt in","z":"cabb8c9e.5c8b4","d":true,"name":"","topic":"tapo/03_Pendelleuchte/command","qos":"2","datatype":"json","broker":"398e7530.8f330a","x":180,"y":240,"wires":[["fd728fc8.05a43"]]},{"id":"fd728fc8.05a43","type":"switch","z":"cabb8c9e.5c8b4","d":true,"name":"","property":"payload","propertyType":"msg","rules":[{"t":"regex","v":"on","vt":"str","case":false},{"t":"regex","v":"off","vt":"str","case":false},{"t":"regex","v":"status","vt":"str","case":false}],"checkall":"true","repair":false,"outputs":3,"x":590,"y":240,"wires":[["fe7e926c.753f4"],["e990de4b.67e1a"],["f5f4c9e8.fabba8"]]},{"id":"2e366694.6b2f4a","type":"function","z":"cabb8c9e.5c8b4","name":"set flow variable","func":"flow.set(msg.payload.tapoDeviceInfo.nickname,msg.payload.tapoDeviceInfo);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1420,"y":40,"wires":[["6aea6344.7861bc"]]},{"id":"a129f5b6.c81868","type":"tplink_status","z":"cabb8c9e.5c8b4","name":"","deviceIp":"10.100.1.54","deviceAlias":"","deviceIpRange":"","searchMode":"ip","x":1230,"y":40,"wires":[["2e366694.6b2f4a"]]},{"id":"6aea6344.7861bc","type":"debug","z":"cabb8c9e.5c8b4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1630,"y":40,"wires":[]},{"id":"57011295.12699c","type":"comment","z":"cabb8c9e.5c8b4","name":"Pflegehinweis","info":"In allen \n - MQTT - Nodes (lila)\n   den nickname des tapo devices hinter tapo/<nickname>/... eingeben!\nund allen \n - TP-Link Nodes (türkis)\n   email, password und ip-Address\n \n pflegen","x":110,"y":60,"wires":[]},{"id":"398e7530.8f330a","type":"mqtt-broker","name":"MQTT","broker":"10.100.1.5","port":"1883","clientid":"NODEREDSERVICE","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","closeTopic":"","closeQos":"0","closeRetain":"false","closePayload":"","willTopic":"","willQos":"0","willRetain":"false","willPayload":""}]


RawDefinition in fhem:
defmod MQTT2_03_Pendelleuchte MQTT2_DEVICE
attr MQTT2_03_Pendelleuchte alias 03_Pendelleuchte Küche
attr MQTT2_03_Pendelleuchte devStateIcon on:eigene/sw1_on@OrangeRed:off \
off:eigene/sw1_off@darkgreen:on \
status:rc_INFO@Darkblue \
true:eigene/lwt_status@lime \
false:eigene/lwt_status@red \
\+:control_plus:up \
\-:control_minus:down
attr MQTT2_03_Pendelleuchte devStateStyle style="text-align:right;;"
attr MQTT2_03_Pendelleuchte devicetopic tapo/03_Pendelleuchte
attr MQTT2_03_Pendelleuchte group 2_Beleuchtung
attr MQTT2_03_Pendelleuchte icon light_dinner_table
attr MQTT2_03_Pendelleuchte periodicCmd status:5
attr MQTT2_03_Pendelleuchte readingList $DEVICETOPIC/online:.* online\
$DEVICETOPIC/relay/0:.* state\
$DEVICETOPIC/relay/0/brightness:.* pct\
$DEVICETOPIC/info:.* { json2nameValue($EVENT) }
attr MQTT2_03_Pendelleuchte room 00_Erdgeschoss->03_Küche,99_System->MQTT2
attr MQTT2_03_Pendelleuchte setList off:noArg $DEVICETOPIC/relay/0/command off\
on:noArg $DEVICETOPIC/relay/0/command on\
status:noArg $DEVICETOPIC/relay/0/command status\
brightness:colorpicker,BRI,0,1,100 $DEVICETOPIC/relay/0/brightness/command $EVTPART1\
up:noArg { return "\$DEVICETOPIC/relay/0/brightness/command ".(ReadingsVal($NAME,"brightness",0)+5)}\
down:noArg { return "\$DEVICETOPIC/relay/0/brightness/command ".(ReadingsVal($NAME,"brightness",0)-5)}
attr MQTT2_03_Pendelleuchte stateFormat -\
| brightness% |\
+\
state\
online
attr MQTT2_03_Pendelleuchte webCmd :


Für bessere Vorschläge, insbesondere einen firmware flash, oder geeignetere node-red flows wäre ich sehr dankbar ...

lg

Gernot

fhem@supergut

Alter Falter, meinen Respekt. Alleine um das nachzubauen habe ich 4 Stunden gebraucht. Danke für die Arbeit.