Einbindung von Teckin Wifi Steckdosen

Begonnen von Kingmaddi, 26 November 2018, 20:32:01

Vorheriges Thema - Nächstes Thema

Kingmaddi

Liebe Community,

ich bin noch relativ neu bei FHEM.
Ich habe bereits im Internet geschaut - jedoch noch keine passende Lösung erhalten.
Gibt es die Möglichkeit die Teckin Wifi Steckdosen in FHEM zu integrieren?

Wer nicht weiß welche Steckdosen gemeint sind:
https://www.amazon.de/TECKIN-Intelligente-fernbedienbar-Stromverbrauch-funktioniert/dp/B07CDCYLQ6/ref=sr_1_1_sspa?ie=UTF8&qid=1543260648&sr=8-1-spons&keywords=teckin+wlan+smart+steckdose&psc=1

Vielen Dank für eure Hilfe

Hollo

Zitat von: Kingmaddi am 26 November 2018, 20:32:01
...Ich habe bereits im Internet geschaut - jedoch noch keine passende Lösung erhalten...
Nicht im Internet Du schauen musst, das Forum Dir Antworten gibt.  ;D

Klickst Du hier... https://forum.fhem.de/index.php/topic,90220.msg826734.html#msg826734
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

Skjall

Moin zusammen,

ich möchte das Thema noch mal aufgreifen. Die verlinkten Steckdosen sind leider mit dem Thread der geposted wurde nicht erschlagen.
Die Dinger sind mittlerweile verklebt und damit nicht (praktikabel) zu flashen. Ich freage mich ohnehin, ob das nötig ist. Die dinger kommunizieren mit JSON und es scheint auch eine lib dafür zu geben.

https://github.com/codetheweb/tuyapi

Die Frage ist, ob sich jemand für ein Modul anbieten würde?

VG Jan

Skjall

#3
Moin nochmal,

ich schaue mir gerade die sache mit Tuya (der Cloudservices der dahinter steckt) hinsichtlich der Teckin Steckdose an. Nach der Auswertung meines Netzwerk-Logs kam ich auf die Idee, einfach den Traffic umzuleiten.
Denn es stimmt: Der MQTT-Server ist Hardcoded. Aber auf einen FQDN und nicht auf eine IP.

Ich habe jetzt auf meinem DNS eine Zone für "tuyaeu.com." mit folgenden Records erstellt:

a.tuyaeu.com.               A      [IP-meines-FHEM]
mq.gw.tuyaeu.com.         A      [IP-meines-FHEM]

Und Zack meldet sich das ding beim FHEM und legt sich per Autocreate an.

Da kommt jetzt das bei heraus:


Internals:
   CFGFN     
   CID        10470280dc4f2290b3dd
   DEF        10470280dc4f2290b3dd
   DEVICETOPIC MQTT2_10470280dc4f2290b3dd
   IODev      Connector_MQTT
   NAME       MQTT2_10470280dc4f2290b3dd
   NR         3643
   STATE      ???
   TYPE       MQTT2_DEVICE
   READINGS:
     2018-12-13 00:18:50   10470280dc4f2290b3dd 2.1113085fed464fa77SQrwXroQbrnpTSj9hCsOBqloZNQ9k2vfb4IJPmjZGKYn0yU7ALx/HjfFQfU1DKeoij4PiidyRAleNMa/VhNyrIaUE+b5ei69byVURAmW7UMSCTRZrnThiiuZUaUbTov1kI1jVKZzeuWe9JJzqzrAx4GJwk0kSh+lgh4qcHjFnkM=
Attributes:
   IODev      Connector_MQTT
   readingList 10470280dc4f2290b3dd:smart/device/out/10470280dc4f2290b3dd:.* 10470280dc4f2290b3dd
   room       MQTT2_DEVICE


Da ich von MQTT keine Ahnung habe ist die Frage: Wie kann das jetzt in etwas sinnvolles umwandeln / decoden?

Edit 1: Es scheint wohl möglich zu sein, den encryption Key auszulesen:

https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md

Könnte man das decoden (bzw. sogar das auslesen des Keys) irgendwie ins modul integrieren?

VG Jan

andy_lox

Hab jetzt auch so zwei Steckdosen, gibt es schon was neues? Hab es mit tuyapi schon probiert und eigenen Python Skripten, aber bisher hat es nicht geklappt.

Skjall

Hallo Andy,

ich schaue mir gerade die struktur an, scheitere jedoch noch an der Enstschlüsselung.
Offenbar wird der Key beim Connect übertragen. (s. Screenshot)
Ich scheitere aber noch an der Entschlüsselung der Nachricht.

Die sieht in etwa so aus:

2.1113085fed464fa77SQrwXroQbrnpTSj9hCsOBqloZNQ9k2vfb4IJPmjZGKYn0yU7ALx/HjfFQfU1DKeoij4PiidyRAleNMa/VhNyrIaUE+b5ei69byVURAmW7UMSCTRZrnThiiuZUaUbTov1kI1jVKZzeuWe9JJzqzrAx4GJwk0kSh+lgh4qcHjFnkM=

Lt. Lib teilt sich das ding in mehrere abschnitte:

2.1 = Version
113085fed464fa77 = Teil eines MD5 Hash (Ab Zeichen 8, Länge 16)
SQrwXroQbrnpTSj9hCsOBqloZNQ9k2vfb4IJPmjZGKYn0yU7ALx/HjfFQfU1DKeoij4PiidyRAleNMa/VhNyrIaUE+b5ei69byVURAmW7UMSCTRZrnThiiuZUaUbTov1kI1jVKZzeuWe9JJzqzrAx4GJwk0kSh+lgh4qcHjFnkM= = Payload

Ich scheitere aber noch am entschlüsseln.



andy_lox

Also meine ID und den Key habe ich. Habe es so gemacht: https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md

Nur bekomme ich jetzt die tuyapi nicht zum laufen. ist alles installiert auf dem Loxberry aber wenn ich was starten will bekomme ich nur Fehlermeldungen. Bin mit Linux allerdings auch nicht so bewandert:
(node:29212) UnhandledPromiseRejectionWarning: Ä8ª�¦�O»�&S©▒�
    at emitWarning (internal/process/promises.js:67:17)
    at emitPendingUnhandledRejections (internal/process/promises.js:109:11)
    at process._tickCallback (internal/process/next_tick.js:190:7)
(node:29212) UnhandledPromiseRejectionWarning: Unhandled promise rejection. T                his error originated either by throwing inside of an async function without a                 catch block, or by rejecting a promise which was not handled with .catch().                 (rejection id: 1)
    at emitWarning (internal/process/promises.js:75:21)
    at emitPendingUnhandledRejections (internal/process/promises.js:109:11)
    at process._tickCallback (internal/process/next_tick.js:190:7)
(node:29212) [DEP0018] DeprecationWarning: Unhandled promise rejections are d                eprecated. In the future, promise rejections that are not handled will termin                ate the Node.js process with a non-zero exit code.
    at emitWarning (internal/process/promises.js:92:15)
    at emitPendingUnhandledRejections (internal/process/promises.js:109:11)
    at process._tickCallback (internal/process/next_tick.js:190:7)

Skjall

Hallo zusammen,

es gibt einen hochinteressanten Vortrag vom 35c3 über die Tuya Cloud Devices (Er sagt den Namen nicht, aber es ist m.E. deutlich erkennbar) und deren "Sicherheit" und "Datenschutz".

https://www.youtube.com/watch?v=urnNfS6tWAY

Für mich interessant ist, dass er sagt, man könne ohne direkten Zugriff (aufschrauben) auf den ESP eine neue Firmware flashen.

VG Jan

linuxuser

Ich habe auch 2 verklebte Teckin SP22-Steckdosen. Ich verstehe noch nicht wie man den DNS-Server "umbiegt". DNS-Server ist bei mir eine Fritzbox 7390. Am Port 4 (als Gastnetz definiert) der FB hängt ein Ethernet-Kabel das zu einem Openwrt-Router führt. Dieser OpenWRT-Router dient als AP für IoT-Geräte.

Skjall

Hallo,

Bei mir ist es etwas anders, weil ich ein recht komplexes Netz habe, aber ich erkläre es mal für dein Setup:

Alle deine Geräte (Rechner, IoT, etc.) bekommen von deiner FritzBox per DHCP auch einen DNS-Server zugewiesen. In der Regel ist das die FritzBox selbst.
Du brauchst nun zunächst einen eigenen kleinen DNS-Server. Das kann man einfach und billig mit nem Raspberry Pi lösen. Tutorials gibts dazu genug.
In deinem neuen DNS-Server legst du nun eine neue Zone (also eine neue Domain) "tuyaeu.com." an.
Diese Zone bekommt (zusätzlich zu den üblichen Pflicht-Records (NS)) zwei A-Records (Also Einträge, die einen Namen in eine IP auflösen):

a.tuyaeu.com.               A      [IP-deines-FHEM]
mq.gw.tuyaeu.com.           A      [IP-deines-FHEM]


Wobei natürlich [IP-deines-FHEM] die IP deines FHEM ist. :)

Als Forward-Server gibst du die IP deiner FritzBox an.

Abschließend gehst du in deiner FritzBox auf:

Heimnetz -> Netzwerk -> Netzwerk-Einstellungen -> IPv4-Adressen

Da ist dann der Haken bei "DHCP-Server aktivieren" gesetzt und darunter steht ein Eintrag: "Lokaler DNS-Server". Das ist die Adresse die deinen Rechnern per DHCP mitgegeben wird.
Aktuell sollte da die IP der FritzBox stehen. Stattdessen trägst du da jetzt die IP deines neuen DNS-Servers ein.

Jetzt passiert folgendes: Sobald sich ein Gerät (also auch die Steckdosen) im Netzwerk "anmelden", bekommen Sie von der FritzBox eine IP und diverse andere Einstellungen, darunter auch den DNS-Server, den sie verwenden sollen - Sprich: deinen neuen DNS-Server.  Wenn die Steckdose sich jetzt mit seinem MQTT-Broker unter "mq.gw.tuyaeu.com" verbinden will, schickt sie eine DNS-Anfrage an deinen DNS-Server. Da du eine Zone für "tuyaeu.com." angelegt hast und für die Adresse "mq.gw.tuyaeu.com" ein Record existiert, antwortet der Server der Steckdose und sagt: Die IP von "mq.gw.tuyaeu.com" ist [IP-deines-FHEM]. Als Nächstes baut die Steckdose nun eine Verbindung zum FHEM auf und wenn im MQTT2 autocreate gesetzt ist, legt er die Steckdose an.
Andere DNS-Anfragen (du willst z.B. auf "fhem.de") leitet der DNS-Server weiter an deine FritzBox und die wiederum weiter an einen öffentlichen DNS-Server im Internet. (Forward)

Die Daten kommen derzeit nur verschlüsselt an, da das MQTT2_DEVICE Modul offenbar noch keine Entschlüsselungsfunktion hat. Wenn wir mehr wissen, kann Rudi als Maintainer dieses Moduls uns vllt eine schreiben.

VG Jan


linuxuser

Danke, so grob habe ich verstanden was du meinst, kann es aber bei mir noch nicht umsetzen. Mein Netz ist auch etwas komplizierter ;-) Das sollte aber hier egal sein. Ich habe 4 OpenWrt-Router und die Fritzbox. Iot habe ich ein eigenes Netz spendiert, nämlich das Gastnetz der FB. Das war ganz schön komplex damit die 3 Openwrt-Server mit DNS zurecht kamen, es passte alles bei den Clients, nur die Router selber hatten ein DNS-Problem bzw. wenn es bei den Routern passte, dann passten die Routen nicht mehr überall. Insofern bin ich da jetzt sehr vorsichtig, wenn ich da was ändere.

Ich denke mir aber, dass meine Probleme im normalen-FB-Netz hier gar keine Rolle spielen, es geht nur um das Gastnetz, wo auch 1 openwrt-Router hängt. Mit einer schnellen Suche, fand ich, dass es bind für openwrt gibt. Also müsste ich wohl bei openwrt weitermachen, oder? Einen Rasperry kaufe ich mir, wenn ich es mit vorhandener Hardware geschafft habe, eine Steckdose zu schalten. Mir stehen neben dem openwrt-Router (TP-Link TL-WR1043ND v1.8 ) für die IOT-Devices noch weitere TL-WR1043ND zur Verfügung, da soll dann vorübergehend FHEM installiert werden.

Ich habe mittlerweile ziemlich viele Puzzle-Teile zu den Steckdosen. Was ich noch nicht verstanden habe, ob man die überhaupt flashen muss, wenn man den DNS-Server wie beschrieben anpasst bzw. ob man die nicht sowieso per WLAN flashen kann, ohne die verklebten aufzumachen? Vgl. zB https://github.com/mirko/SonOTA und auch hier gibt es einen Thread dazu: https://forum.creationx.de/forum/index.php?thread/116-neues-flash-vervahren-ohne-hardware-nur-%C3%BCber-wlan/ Mir fehlt aber bis jetzt der Durchblick,

Skjall

Moin zusammen,

gute neuigkeiten! Durch diese risige Sicherheitslücke, kann man Tasmota auf die Teckins flashen ohne sie aufzumachen. Es lebe die "military-grade-security" (Ich frage mich, wessen Militär die damit meinen)

https://www.heise.de/ct/artikel/Tuya-Convert-IoT-Geraete-ohne-Loeten-vom-Cloud-Zwang-befreien-4283623.html

Da ist alles beschrieben. (das mti dem "undo" hab ich weggelassen, da das bei mir nicht wollte)

VG Jan

spot73

Hallo in die Runde,
ich hatte mir vorgenommen Teckin Steckdosen nach der Anleitung zu flashen.

Leider funktioniert es nicht so wie erwartet.

Ich habe alles so gemacht wie beschrieben.
Das Script wird gestartet.
Ich verbinde mein Telefon mit dem Raspi
Die Steckdose blinkt brav.
Und nun passiert nichts weiter als das der Raspi Punkte in der Anzeige erzeugt.

Wer kann mir helfen oder hat jemand einen Tip?

Gruß Dirk

Bapt. Reverend Magersuppe

Wie alt sind deine Dosen? Neuere Modelle haben die Sicherheitslücke leider gefixt :-(
--
If I was born in 1453, Leonardo da Vinci would be jealous of me.
Reverend Paul Egon Magersuppe
Aus versicherungstechnischen Gründen sind sämtliche Beiträge von mir rein spekulativer und theoretischer Natur und sollten nicht in die Tat umgesetzt werden!
Bin hier selten DRIN. AUS GRÜNDEN!

Otto123

Hallo Dirk,

ich habe heute zwei SP111 geliefert bekommen, beim zweiten Versuch hat es geklappt.
Beim ersten lief es wie bei Dir.
Dann habe ich Dose raus, nochmal rein und dann das script gestartet -> läuft.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz