Tuya Geräte in Nodered

Die momentan günstigste SmartHome-Produktlinie sind vermutlich Tuya-Wlan-Geräte. Da ich aber nicht Cloud-Abhängig werden möchte, baue ich Tuya-Geräte in mein bestehendes NodeRed ein, ohne dass sie aufs Internet zugreifen können und müssen (- zumindest erst einmal eine Steckdose).

Als erstes registriere ich das Gerät brav mit der Original Tuya-App. Bei meiner Außensteckdose musste ich den Taster 5 Sekunden drücken, um sie in den kopplungsmodus zu versetzen. Danach erkannte die App die Steckdose ohne zu klagen und ich konnte den Netzwerkschlüssel für mein (Smarthome-)Wlan eingeben. Wie genau der Schlüssel übermittelt wird, weiß ich nicht, aber in der Regel ist das ein sicherheitskritischer Moment… So weit so gut, jetzt habe ich eine Steckdose, die ich über die Cloud schalte. Jetzt wird sie daraus wieder befreit.

Dazu muss ich allerdings den Umweg über die Entwicklerseite von Tuya gehen: iot.tuya.com. Hier registriert ihr euch noch einmal (denn eure App-Registrierung gilt für den Entwicklerteil von Tuya nicht). Dort legt ihr ein neues Cloud-Projekt an, bennent es beliebig und wählt SmartHome (statt Custom) aus. Hier ist es ganz wichtig das richtige Data-Center auszuwählen (für Deutschlad Central Europe, eine Liste findet ihr hier. Ihr öffnet nun euer neues Projekt und kopiert euch schon mal die Access-Daten. Im Reiter Devices könnt ihr nun euren App-Account mit dem Projekt verlinken. Danach findet ihr in der Device-List unter „All Devices“ die benötigte Device ID. Mit den erzeugten und gefundenen Daten können wir nun den Local Key finden. Dafür geht ihr ganz links unter „Cloud“ in den Api Explorer -> Device Management -> Query Device Details Dort gebt ihr eure Device ID ein und klickt submit Request. Dann findet ihr euren Local Key für das Gerät. Leider scheint Tuya in den letzten Monaten und Jahren das Tool immer wieder umgearbeitet zu haben, so dass ich keine aktuellen Namen von Menüs finden konnte und meine Beschreibung bald schon wieder outdatet ist.

Bevor ihr weiter macht, kann es sein, dass ihr euer Smartphone entweder aus Wlan und Bluetooth entfernen müsst, oder die Tuy-App wieder löschen müsst. Denn das Tuya-Protokoll lässt wohl immer nur ein „Steuergerät“ zu. Damit könnte es dann gleich zu Konflikten führen…

Das Beispiel hilft schon mal weiter.

Weiter geht es in nodered: Über die Palette (oder direkt npm) installiert ihr node-red-contrib-tuya-smart-device mit dem ihr nun (wie ich finde etwas kompliziert) eure Devices steuern könnt. (Vorsicht, es gibt zahlreiche nodered-Erweiterungen, die mit Tuya zu tun haben, aber die sind teilweise nicht über den Alpha-Status hinaus gekommen oder schon längst aufgegeben worden.) Über das rechte Menü in Nodered könnt ihr euch das Beispiel generic-node-sample importieren und euch die Struktur anschauen. Für mich hat das zum Steuern von einer Steckdose gereicht. Wer mehr möchte, muss sich wohl mit den Datapoints (dps) von Tuya befassen.

Als letzte Amtshandlung habe ich aus Vorsicht den Internetzugriff der Steckdose und die mir bekannten URLs im Router gesperrt, über die Tuya-Geräte mit ihrer Cloud kommunizieren:

a.gw.tuyaeu.com
a.tuyaeu.com
a3.tuyaeu.com
Dazu kommen noch, wenn ihr in den USA oder China wohnt (oder Geräte in diesem Bereich gekauft habt?) die URL-Varianten mit us und cn statt eu.

Hier ein bisschen aufgebort, damit man nicht immer mit dem Inject arbeiten muss, sondern die Steckdose an jeden beliebigen Flow anschließen kann. Und ja, vermutlich kann man aus den beiden Nodes An und Aus auch einen machen…