Tuya-Convert: Smarte Geräte von der China-Cloud befreien

Sucht man auf Amazon beispielsweise nach dem Stichwort „Steckdose Alexa“, so findet man zuhauf WiFi-Steckdosen in unterschiedlichsten Größen, Preisen und mit unterschiedlichen Namen chinesischer Händler samt Cloud-Lösung. Auch beim Blick in deutsche Baumarkt- oder Supermarktregale wird man fündig: So verkaufen mitunter sowohl OBI als auch der Ein-Euro-Laden Action smarte Wifi-Geräte von der Steckdose bis hin zum smarten Leuchtmittel.

Eines haben fast alle dieser WiFi-Geräte gemeinsam: Als Untersatz findet man in ihnen einen der günstigen ESP8266-Mikrocontroller. Etwas Weiteres hat eine große Schnittmenge dieser IoT-Geräte wiederum gemeinsam: Bei vielen von ihnen handelt es sich um eine White-Labelling-Lösung des chinesischen Anbieters Tuya. Dieser stellt neben Server-Infrastruktur für rund 10.000 „Hersteller“, die Möglichkeit für personalisierte Apps, sowie die Unterstützung von Alexa und Google Assistant (nicht zuletzt finden sich deshalb in den Skill-Übersichten einen Haufen an chinesischen Geräte-Anbindungen mit unterschiedlichen Namen).

Bedeutet so viel wie: Sämtliche Schaltbefehle, ob nun via App oder Sprachassistent dieser Geräte, gehen an chinesische Server und von dort wieder zurück, um die zahlreich vertretenen Geräte zu steuern. Die IT-Security-Firma Vtrust hatte bereits Ende 2018 in einem Vortrag auf dem C35C3 auf weitere Schwachstellen hingewiesen. So werden mitunter WiFi-Passwörter im Klartext oder auch Standortdaten übertragen. Wer sich nun denkt „Na ist mir doch egal, was soll denn schon passieren außer, dass jemand vielleicht mein Licht oder meine Steckdosen schaltet?“, liegt falsch.

Die IoT-Geräte bieten zudem ein Einfallstor für schadhaften Code und Angriffe auf euer Heimnetzwerk. Weitere Ausführungen würden an dieser Stelle den Rahmen sprengen, wer Interesse hat und sich den Vortrag anschauen möchte wird dort wesentlich umfangreicher informiert. Denn hauptsächlich soll es in diesem Beitrag darum gehen, die China-Cloud-Firmware durch eine eigene Firmware zu ersetzen. Dies ist auch möglich, indem man an diese Geräte einen FTDI-USB-Serial Adapter anlötet und darüber flasht, ausführen möchte ich an dieser Stelle jedoch nur die OTA-Methode Tuya-Convert.

Grund dafür: Diese erlaubt es recht einfach, ohne Öffnen und Löten, die Kontrolle über die eigenen Geräte zurückzugewinnen. Einfach genug, dass ich mir erhoffe, dass der findige Leser seine Geräte schnappt, die alternative Firmware aufspielt und selbiges auch für Bekannte tut, denen das vielleicht doch einen Tick „zu hoch“ sein könnte.

Voraussetzungen

Was brauchen wir dafür? Kurzform: Ein Linux-System mit WiFi-Chip. Sei es nun ein Laptop mit Ubuntu, ein Live-Linux-System, eine Virtual-Machine, ein Docker-Container oder wie in meinem Fall ein LXC-Proxmox-Container. Wichtig ist nur, dass WiFi auf diesem Linux ordentlich funktioniert oder funktionierend durchgereicht wird. Einen WiFi-Stick anstecken könnte euch zwar auch zum Ziel führen möglicherweise aber über kleinere Startprobleme. Da ich hier natürlich nicht im Einzelnen auf jegliche Szenarien eingehen kann, solltet ihr im Falle dessen, dass etwas nicht funktioniert, vermutlich erst einmal in die Richtung recherchieren, dass hier irgendetwas am WiFi hapert.

Einen kleinen Workaround für diesen Fall habe ich dennoch unten angehängt. Anpassen lässt sich dies – das ist dann aber wirklich nicht mehr Einsteiger-freundlich – in der Konfigurationsdatei von Tuya-Convert. Am schmerzfreisten daher meine Empfehlung: ein Raspberry Pi ab der Generation 3. Da ist WiFi mit an Bord und es finden sich im Netz zuhauf Anleitungen, wie man dort ein funktionstüchtiges Rasbian aufspielt.

Welche IoT-Geräte sind mit Tuya-Convert kompatibel?

Habt ihr bereits ein Gerät zu Hause, welches ihr umflashen wollt und der Hersteller gibt hierfür die Tuya oder die Smart Life App als kompatibel an, so wird die Tuya-Convert-Methode mit großer Wahrscheinlichkeit zum Ziel führen. Ihr könnt das Ganze natürlich auch einmalig Testen, indem ihr die App ladet und den nativen Einrichtungsprozess einmal durchexerziert. Seid aber gewarnt: Es ist möglich, dass dies automatisch ein Update lädt, was Tuya-Convert machtlos macht. Möglicherweise müsst ihr dann Monate warten bis eine erneute Lücke gefunden wird, um abermals die eigene Firmware aufzuspielen.

Ein weiteres Indiz ist ein Blick in die Liste der mit Tuya-Convert kompatiblen Geräte. Natürlich könnt ihr das Ganze auch auf „Gut Glück“ einmal durchlaufen und wenn es klappt euch an der alternativen Firmware erfreuen.  Ebenfalls für ein kompatibles Gerät spricht es, wenn der Name vom Accesspoint des IoT-Geräts irgendwas mit „Smartlife“ lautet. Sollte sich euer Gerät als nicht kompatibel herausstellen, besitzt aber trotzdem den oben genannten Mikrocontroller, so bleibt euch derzeit wohl nur der Griff zum Lötkolben.

Habt ihr noch kein Gerät, spielt aber mit dem Gedanken, so werft am besten vorher den Blick auf Kompatibilitätslisten. Es gibt wirklich zuhauf kompatible Geräte, wie mitunter diese hier oder die im Blog bereits vorgestellten von Koogeek. Caschy hatte mit der Steckerleiste von Koogeek zuletzt einige Probleme und kann diese hoffentlich durch die alternative Firmware beheben.


Installation von Tasmota als alternative Firmware auf dem smarten Gerät

Die Installation selbst spielt sich dann in wenigen Schritten mit folgenden Befehlen (für den Laien: Jede Zeile stellt einen neuen Befehl dar, welcher einzeln zu kopieren und mittels „Enter“ auszuführen ist.) in der Konsole ab:

sudo apt-get update
sudo apt-get upgrade

Diese Befehle bringen das System auf den neusten Stand. Falls nicht vorhanden, werfen wir die Installation von „git“ an:

sudo apt install git

Nun beginnt der eigentliche Teil der Softwareinstallation. Wir kopieren uns die Installationsdateien, Navigieren ins Installationsverzeichnis und führen die Installation aus:

git clone https://github.com/ct-Open-Source/tuya-convert
cd tuya-convert
./install_prereq.sh

Zuletzt muss Tuya-Convert nur noch gestartet werden:

sudo ./start_flash.sh

Wenn ihr bis hier hin alles richtiggemacht habt, sollte das Ganze in der Konsole nun folgendermaßen aussehen:

(Falls das Skript einen Fehler beim WiFi wirft z.B. „wlan0 … not found“, führt den Befehl cd und dann iw dev aus. Unter Interface findet ihr die gesuchte Bezeichnung. Diese tragt ihr folgendermaßen ein: Mittels cd /tuya-convert navigiert ihr zurück ins richtige Verzeichnis, dort könnt ihr mit nano config.txt die Konfigurationsdatei editieren und an der Stelle „WLAN“ die gesuchte Bezeichnung eintragen. Nun speichern und mit dem Start-Befehl das Skript erneut starten.)

Selbsterklärend quittieren wir diese Meldung mit „yes“ und der Enter-Taste. Wer es sich in der Konsole nicht durchgelesen hat, erhält von mir nochmals den Hinweis: Das Flashen erfolgt auf eigene Gefahr, es ist immer möglich, dass das Gerät danach nicht mehr funktioniert oder Ähnliches. Da die Geräte jedoch recht kostengünstig sind, dürfte ein etwaiger Verlust noch im Rahmen sein.
Das Skript wird daraufhin gestartet, solltet ihr keine Fehler erhalten sollte es aussehen wie auf dem folgenden Screenshot:

Dass ihr bis hier hin alles richtiggemacht habt, erkennt ihr auch daran, dass sich ein neuer WiFi-Access-Point namens „vtrust-flash“ geöffnet hat. Mit diesem verbindet ihr ein beliebiges Gerät z. B. euer Smartphone. Im Folgenden gilt es nun das IoT-Gerät in den Koppelungs-Modus zu bringen. Ich exerziere das Ganze an einer smarten Steckdose durch, bei dieser musste ich dafür für 10 Sekunden den Knopf drücken und gedrückt halten. Die LED blinkt daraufhin schnell. In der Konsole kann ich nun mit der Enter-Taste fortfahren. Wird eure Steckdose erfolgreich erkannt und gefunden erhaltet ihr ein Feedback, ansonsten versucht es Tuya-Convert mehrfach erneut bis es letztlich aufgibt. Sollte dies der Fall sein, habt ihr möglicherweise kein kompatibles Gerät (von Tuya). Falls es trotzdem den oben erwähnten Mikrocontroller besitzt, kann es immer noch händisch geflasht werden.

Meine Steckdose wurde erfolgreich erkannt. Nun habe ich die Wahl, dass ich neben einem Rückzug zur alten Firmware (0), die beiden Open-Source-Varianten Espurna (1) oder Tasmota (2) installieren kann. Dies sind noch längst nicht alle Möglichkeiten, jedoch die beiden vom Tool vorgeschlagenen Firmware-Varianten. Ich habe mich hier für Tasmota entschieden und quittiere daher mit der 2. Habt ihr einmal aber eine alternative Firmware aufgespielt, so dürfte auch der Wechsel zwischen diesen einfacher vonstattengehen, solltet ihr euch aus welchen Gründen auch immer doch mal für eine andere Firmware entscheiden.

Ich werde nochmals nachgefragt, ob ich mir mit meiner Auswahl sicher bin, was ich mit einem kurzen „y“ bestätigen kann.

Das war es auch schon fast. Zumindest was den Firmware-Teil angeht. Unser Gerät öffnet nun selbst einen Access-Point mit dem Namen „Tasmota-XXXX“. Mit diesem Verbinden wir uns nun beispielsweise mit unserem Smartphone. Bei mir ist nach dem Verbinden aufgrund der fehlenden Internetverbindung auch direkt die Konfigurationsseite aufgeploppt:

Hier ist es nun wichtig, dass wir SSID und Passwort mehrfach prüfen und eintragen. Als Fallback können wir auch noch eine weitere SSID mit zugehörigem Passwort vergeben, für den Falle eines Tippfehlers können wir unser WiFi dann auf diese Einstellungen kurzfristig umstellen. Nachdem Speichern startet sich das Gerät neu und verbindet sich mit unserem Heimnetzwerk. Zugriff haben wir von fortan über die dort vergebene IP-Adresse, welche wir im Router herausfinden können. Bei der Fritzbox eignet sich hier ein Blick in die Ereignisse nach neu verbundenen Geräten oder aber einen Blick in der Netzwerkliste auf derzeitig verbundene Geräte. Haltet hier nach etwas mit dem Namen „Tasmota“ Ausschau. Alternativ könnt ihr eine Netzwerkscanner-App wie Fing zum Einsatz bringen.

Über die IP-Adresse, welche ihr herausgefunden habt, könnt ihr nun das Webinterface aufrufen:

Ich würde euch nun empfehlen, als Erstes ein Firmware-Update durchzuführen, insbesondere dann, wenn ihr eine Funktionalität zu Alexa schaffen wollt. Insbesondere können wir nun auch das deutsche Sprachpaket der Firmware wählen. Navigiert zum Update einfach in den Menüpunkt „Firmware Upgrade“ der Weboberfläche, tragt bei OTA-URL den hier verlinkten Link ein, startet das Upgrade über den Button und wartet den Reboot ab.

Das Gerät gilt es nun noch zu konfigurieren, denn die Firmware weiß nicht, was an welchen Anschluss am Chip angeklemmt ist. Stand euer Gerät in der Kompatibilitätsliste, so findet sich dort sicher auch eine zusätzliche Information zur Konfiguration. Am einfachsten funktioniert das Konfigurieren über ein Template. Fertige Templates findet ihr unter anderem in dieser Datenbank. Diese tragt ihr einfach in den „Sonstigen Einstellungen“ ein, aktiviert und speichert die Einstellungen.

Findet sich in der Datenbank lediglich ein ähnliches Gerät so könnt ihr versuchen, ob dieses passt oder ob es (nicht unüblich) irgendwelche anderen GPIO-Ports verwendet. Ist letzteres der Fall, bleiben euch zwei Wege: entweder die Steckdose doch öffnen und die Verkabelung anschauen oder eine Art Try & Error Lösung, welche ich gleich ein wenig näher erläutern werde. Erwähnt sei jedoch vorab noch, dass sich so eine Lösung vorrangig nur für Steckdosen oder Steckdosenleisten eignet. Haben diese dann noch eine Strommessfunktion und möchte man diese in Betrieb nehmen (das Gerät kann auch ohne konfiguriert und verwendet werden), so muss man da schon einige Möglichkeiten durchprobieren oder findet noch Infos in den Weiten des „Neulands“.

Beim Try & Error geht ihr in etwa wie folgt vor (zumindest war dies meine Strategie, welche mich auch zum Ziel führte): Zuerst möchten wir herausfinden, auf welchem Anschluss unser Relais liegt. Wir können uns also schrittweise versuchen von GPIO0 bis GPIO14 verschiedene Relais zu konfigurieren und diese gleichzeitig oder aber „Relay1“ nacheinander durchzutesten. Klackt und schaltet die Steckdose, so haben wir unser Relais gefunden und können den entsprechenden GPIO-Port festlegen.

Möglicherweise schalten wir zufällig auch die LED des Geräts an und aus, dann kennen wir den GPIO-Port unserer LED. Es ist möglich, dass ihr die LED auch gar nicht extra findet, sondern diese direkt mit dem Relais verknüpft ist (dies ist bei mir im Screenshot der Fall). In meinem Fall erhalte ich durch die Belegung von GPIO12 in der Tasmota Oberfläche einen virtuellen Button, welcher das Relais meiner smarten Steckdose schaltet. Im nächsten Schritt gilt es noch herauszufinden, an welchem Port der physische Button angeklemmt ist. Legt ihr keinen Wert auf die manuelle Bedienung, könnt ihr dies weglassen. Andernfalls testet ihr den „Button1“ in unterschiedlichen Konfigurationen durch, indem ihr den physischen Knopf daraufhin betätigt und schaut ob euer Relais schaltet. Unsere Konfiguration speichern wir abschließend und das Gerät startet fix neu.

Verwendung mit Amazon Alexa

Die Verwendung mit Amazon Alexa ist mit Tasmota spielend einfach, denn Tasmota kann einen Belkin WeMo oder eine HueBridge emulieren. Dies lässt sich unter den „Sonstigen Einstellungen“ aktivieren. Unter „Name“ tragt ihr zudem den Namen ein, mit dem ihr euer Gerät per Sprachbefehl ansprechen möchtet.

Die Belkin-WeMo-Emulation eignet sich nur für ein einzelnes Gerät, genauer eine Steckdose. Für Steckdosenleisten oder Leuchtmittel verwendet ihr bei Emulation „Hue Bridge“. Für die weitere Einrichtung in Alexa macht dies aber keinen Unterschied. Nach dem Druck auf Speichern wartet ihr kurz den Neustart ab. Danach könnt ihr per Sprachbefehl mit „Alexa, suche nach neuen Geräten“ die Suche nach neuen smarten Geräten initiieren.

Alexa sollte euer Gerät auf Anhieb finden. Kleiner Hinweis: Steckdosen werden bei der Hue-Emulation als Lampen erkannt und lassen sich – wie auch öfters mal die Osram-Zigbee-Steckdosen – nicht im Gerätetyp, wie hier beschrieben, umfunktionieren. Vielleicht funktioniert dies zu einem anderen Zeitpunkt, derzeit solltet ihr mit Raumzuweisungen oder Befehlen die „alle Lampen“ betreffen also ein wenig vorsichtig sein. Vorteil an der Einrichtung: Sie geht schnell und funktioniert ohne Account. Da Alexa die IoT-Geräte nun lokal ansteuert, passiert dies auch um einiges schneller, da nicht über eine China-Cloud geroutet wird. Ihr profitiert also auch von schnelleren Schaltzeiten.

Wollt ihr die Steckdosen von außerhalb erreichen, so ist dies auch durch die Alexa-App möglich, die ursprüngliche App funktioniert ohne Cloud ja selbstverständlich nicht mehr.

Weitere Vernetzungsmöglichkeiten

Direkt in Tasmota integriert ist die Möglichkeit für das Schalten nach Zeiten. Es gibt wohl auch die Möglichkeit zur Verwendung des Google Assistants. Genauere Infos dazu, findet ihr an dieser Stelle. Ganz so einfach wie die Alexa-Integration sieht es nicht aus, ich kam auch bislang nicht dazu dies zu erproben, aber gebt gerne in den Kommentaren Bescheid ob der Weg funktionierte.

Spannend und erwähnenswert ist zudem die Integration von MQTT. MQTT ist ein Nachrichtenprotokoll, welches in der IoT-Branche sehr gerne seinen Einsatz findet. Aus der Praxis lässt sich das Beispiel nennen, dass Hisense seine TV-Geräte mit der App über MQTT-Befehle kommunizieren lässt. Eine einfache Anbindung damit ist auch an eine Smart-Home-Software möglich. Hier gibt es neben iOBroker, auf den ich im Moment setze, noch Home Assistant, openHAB, sowie FHEM um die Bekanntesten zu nennen. Als zusätzliche Ergänzung, falls ihr mit so einer Software rumprobieren wollt, kann ich euch – unabhängig davon wie eure Wahl ausfällt – noch Node-Red ans Herz legen.


Tauscht euch gerne in den Kommentaren zu Problemen und Lösungsmöglichkeiten aus. Mich würde an dieser Stelle noch interessieren: Habt ihr euch bereits mit der Thematik „Gefahr Cloud-Anbindung“ im Vorfeld des Artikels auseinandergesetzt? Und falls ja, wie habt ihr das Ganze bei euch zu Hause gelöst.

Gefällt dir der Artikel? Dann teile ihn mit deinen Freunden.

Avatar-Foto

Baujahr 1995. Technophiler Schwabe & Lehrer. Unterwegs vor allem im Bereich Smart Home und ständig auf der Suche nach neuen Gadgets & Technik-Trends aus Fernost. X; Threads; LinkedIn. Mail: felix@caschys.blog

Neueste Beiträge

Mit dem Absenden eines Kommentars stimmst du unserer Datenschutzerklärung und der Speicherung von dir angegebener, personenbezogener Daten zu.

43 Kommentare

  1. Kurze Info an alle die es versuchen wollen, es klappt weiterhin mit der Anleitung, Stand 30.4.20, hab gestern Abend vier von den Dingern mit Tasmota bespielt, meine Schwierigkeit bestand in der VirtualBox, das wollte bei mir nicht klappen, hab dann Ubuntu neben meinem Windows 10 installiert und damit hat dann alles problemlos geklappt. Ist nur mein Bastel-Notebook, Hauptsystem bleibt mein MacBook.

    • Welche Funksteckdose hast du umgeflasht? Mit Teckin SP22 (vor einer Woche bestellt) hatte ich kein Glück mehr – Realtek-Chip.

  2. Danke für die sehr gute Anleitung. Ich habe noch vor nicht allzu langer Zeit meine Sonoff Dosen mit dem Lötkolben flashbar machen. Damals ging das mit Tuya noch nicht/nicht mehr. Jetzt habe ich mir eine Steckerleiste besorgt und mit dieser Anleitung sofort und problemlos auf Tasmota flashen können.

    Vielen Dank

  3. Hallo zusammen,

    klappt bei mir auch. Leider habe ich das Problem, dass der Status des Geräts mit Tasmota-Firmware in der Alexa-App nicht stimmt. Nach dem Einschalten springt der Schalter wieder von AN auf AUS zurück. Das Gerät bleibt ab geschaltet. Hat jemand eine Idee?
    Vielen Danke!!!

  4. Hi erstmal danke für Deine Anleitung.
    Wen ich mich mit dem WLAN am Handy verbunden habe und die Steckdose im Pairing Modus ist und ich enter drücke bekomme ich folgende Ausgabe:

    Starting smart config pairing procedure
    Waiting for the device to install the intermediate firmware
    Traceback (most recent call last):
    File „./smartconfig/main.py“, line 15, in
    from smartconfig import smartconfig
    File „/home/pi/tuya-convert/scripts/smartconfig/smartconfig.py“, line 43, in
    from multicast import multicast_head, encode_multicast_body
    File „/home/pi/tuya-convert/scripts/smartconfig/multicast.py“, line 12, in
    from Cryptodome.Cipher import AES
    ModuleNotFoundError: No module named ‚Cryptodome‘

    Nach einer Minute ca. kommt dann
    Device did not appear with the intermediate firmware
    Check the *.log files in the scripts folder
    Do you want to try flashing another device? [y/N]
    ======================================================
    Cleaning up…
    No screen session found.
    No screen session found.
    No screen session found.
    No screen session found.
    Closing AP
    Exiting…

    Es handelt sich um folgende Steckdose
    https://www.amazon.de/Luminea-Home-Control-Steckdose-Outdoor-WLAN-Steckdose/dp/B07KG6Q96F/

  5. @Felix,
    könntest du mal deine Konfiguration der gpio posten?

  6. Unabhängig von allem Vertrauen in eine Chinesische oder Amerikanische (oder europäische Cloud, sollten wir es mal auf die Reihe bringen sowas zu machen), versuche ich keine persönlichen Daten in irgend eine „public“ cloud zu schicken. Es kann schon sein, das das alles mit rechten Dingen zugeht, aber jede cloud ist Angriffen ausgesetzt. es ist nicht die Frage ob, sondern wann eine cloud geknackt wird.
    Deshalb sind bei mir erst mal alle Smart plugs im Heimnetz eingesperrt und ich werde ihnen auch die option nehmen sich ins WLAN einzuloggen. Für mich erwarte ich erst mal keine Einschränkungen, da ich die smart plugs erst mal nur als „digitale Zeitschaltuhr“ verwende.
    Aktuell ist meine app auch NICHT in der Cloud registriert.
    Wenn ich mal zeit finde werde ich aber auf jeden fall mal die alternative Firmware ausprobieren.
    Ein professioneller Nutzer wie Onno kann vielleicht abschätzen was so ein Teil macht.. otto normalverbraucher hat keine keine Zeit sich alles im Detail anzuschauen.. da ist die Zeit sicher besser investiert mal ne stunde zu baslten (und macht auch mehr Spass 😉
    Ich finde die Option das zu machen, wie auch die Anleitung super!!! Vielen Dank

  7. Aber jetzt kurz die Frage die mich eigentlich auf diese Seite gebracht hat.
    Kann ich die plugs auch vom PC oder dem Router aus schalten?

    Hermann

    • Felix Frank says:

      Moin Hermann!
      Tasmota lässt sich auch über die IP-Adresse aufrufen und dort schalten über einen beliebigen Browser

  8. Ein Lehramt Anwärter mit einem solchen Knowhow? Das lässt hoffen! 🙂

Es werden alle Kommentare moderiert. Lies auch bitte unsere Kommentarregeln:

Für eine offene Diskussion behalten wir uns vor, jeden Kommentar zu löschen, der nicht direkt auf das Thema abzielt oder nur den Zweck hat, Leser oder Autoren herabzuwürdigen. Wir möchten, dass respektvoll miteinander kommuniziert wird, so als ob die Diskussion mit real anwesenden Personen geführt wird. Dies machen wir für den Großteil unserer Leser, der sachlich und konstruktiv über ein Thema sprechen möchte - gerne auch mit Humor. In jedes Thema Politik einbringen ist nicht erwünscht.

Du willst nichts verpassen?

Du hast die Möglichkeit, den Feed dieses Beitrags zu abonnieren. Wer natürlich alles lesen möchte, der sollte den Hauptfeed abonnieren.