Python und tuya - Elesion!

Auf der Suche nach einem möglichen Zugriff per Python auf Smart Home-Geräte, die in der Elesion-App (viele Pearl-Artikel) eingerichtet sind, stieß ich auf den Hinweis, das die Elesion-App einfach nur eine gebrandete tuya-App sei. Also habe ich nach Tuya und Python gesucht...

 

Also es gibt die Möglichkeit, über eine tuya Python-API, beispielsweise tinytuya-API, auf die Smart Home-Komponenten zugreifen zu können.

Test mit noch nicht angelernten Smart Home-Geräten (z.B. Steckdosen) mittels tuya. Wenn alles funktioniert, "wandern" die anderen Geräte von der Elesion-App in die tuya-APP. Wie erwähnt, die Elesion-App soll nur eine gebrandete tuya-App sein. Eventuell auch die iO.e-App.

Geräte in der Tuya-App

Auf einem Zweit-Handy, einem Sharp-Smartphone habe ich die tuya-App installiert. In der App habe ich aktuell 3 WLAN-Steckdosen und eine SW WLAN-LED-Lampe eingerichtet. Die Steckdosen messen auch den Stromverbrauch, was ich als sehr nützlich ansehe.

 

Update: 10.11.2023

Zusätzlich ist jetzt auch eine ältere WLAN-RGB LED-Lampe in der tuya-App. Das ist meine aller erste WLAN-Lampe, die ursprünglich in der iO.e-App eingerichtet war. Der Wechsel, in der alten App löschen und in der tuya-App einrichten, ging problemlos. Dazu noch ein Temperatur- Luftfeuchtigkeitssensor, der vorher in der Elesion-App war. Hier war der Wechsel nicht so einfach. Laut Elesion-App war der Batterie-Stand noch gut (mehr als die Hälfte), jedoch ließ sich mit den eingesetzten Batterien der Sensor nicht in die tuya-App einrichten. Erst durch den Einsatz von neuen Batterien konnte der Sensor in den Zustand versetzt werden (Pairing, blinken der LED), dass der Sensor von der tuya-App erkannt und eingerichtet wurde.

 

Update: 14.11.2023

Nun sind alle vier neuen WLAN-Steckdosen (XCOAST WiFi Steckdose innen) in der tuya-App drin. Und an allen hängt auch ein Verbraucher dran. Dazu ist noch ein zweiter Temperatur-Luftfeuchtigkeitssensor aus der Elesion-App in die tuya-App gewandert. Natürlich auch mit neuen Batterien.

 

 

Installation tinytuya-API

Die Installation der tinytuya-API ging am 07.11.2023 problemlos über die Bühne. Aktuell ist die Version 1.12.11. Dazu wurde colorama-0.4.6 und pycrytodome-3.19.0 mit installiert.

 

Erfolgreiche Installation von tinytuya-API auf Windows PC.
Erfolgreiche Installation von tinytuya-API auf Windows PC.

Die tinytuya-API wurde erfolgreich installiert.

 

 

Problem beim Versuch einen Scan durchzuführen

Nach der Installation wollte ich einen Scan nach vorhandenen Wifi-Tuya-Geräten durchführen. Befehl in der Eingabeaufforderung:

python -m tinytuya scan

 

Jedoch funktionierte dies nicht!

 

Am Ende steht folgende Fehlermeldung:

OSError: [WinError 10048] Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden.

 

Auf der Projektseite von TinyTuya steht, dass das LAN und die Firewall den Netzwerkverkehr auf den UDP-Ports 6666, 6667 und 7000, sowie auf dem TCP Port 6668 erlauben muss. Muss ich die irgenwo freigeben? In der Firewall, im Router?

 

Außerdem hatte ich irgendwo gelesen, das keine andere Anwendung während dieser Ausführung laufen darf. Die tuya-App habe ich nur auf einem Smartphone installiert. Sowohl, wenn die App nicht läuft, bzw. das Smartphone sogar ausgeschaltet ist, funktioniert die Anfrage nicht.

 

War dann erst einma ratlos...! :-(

 

Fehlermeldung beim Ausführen des Scans nach Smart-Home-Geräte.
Fehlermeldung beim Ausführen des Scans nach Smart-Home-Geräte.

Ausgabe des Scan-Programms für Tuya-Geräte. Leider funktioniert es nicht!

 

 

Fehlersuche und Problemlösung

So richtig erklären konnte ich mir die Fehlermeldung "OSError: [WinError 10048] Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden." nicht wirklich und Google brachte beim ersten schnellen Suchen keine Erklärung.

Auf stackoverflow.com hatte jemand auch das Problem, aber bei einer anderen Anwendung. Demnach würde auf meinen Ports (UDP 6666, 6667 und 7000 und TCP 6668) ein anderes Programm laufen oder horchen... Also herausfinden, welches Programm das ist!

 

Wie erfährt man, welches Programm einen oder alle meine Ports belegt?

Hier brachte dann Google mal Hilfe:

- Eingabeaufforderung öffen (cmd)

- Eingabe des Befehls netstat -ano und ENTER

Es erscheint nun eine lange Liste/Tabelle mit den TCP und UDP-Ports. Dazu "Lokale Adresse", "Remoteadresse", "Status" und "PID". Also in der Liste nach unseren Ports ausschau halten. Wichtig ist nun die PID gleich Prozess-ID, mit der man nun das Programm identifizieren kann.

Sollte einem die Liste zu lang oder zu unübersichtlich sein, kann man auch nach einem speziellen Port suchen. Erklärung hier. Zum Beispiel mit

netstat -ano | find "6666" und ENTER

 

Ich habe alle vier Ports abgefragt. Bei mir werden die Ports 6666 und 6667 benutzt und haben die selbe PID, immer eine fünfstellige PID.

Nun soll man im Windows Task-Manager unter Dienste schauen, welches Programm bzw. welcher Dienst meine Ports benutzt. Nur hier taucht die betreffende PID gar nicht auf! Aber unter Details im Tast-Manager fand ich dann meine PID und auch den "Übeltäter"... :-)

Es ist das Programm QMxNetworkSync.exe! Und wer steckt dahinter? Eine kurze Google-Suche brachte die Lösung, es ist der MAGIX Update Notifier, das Update-Programm für MAGIX-Programme wie beispielsweise MAGIX Video deluxe Premium oder MAGIX Music Maker. Die sind jedenfalls bei mir installiert. Der MAGIX Update Notifier wird aktuell immer beim Windows-Start mit ausgeführt. Das kann man aber abstellen und falls es gerade läuft, über die Tastleiste beenden.

 

Neuer Versuch des Scans mit python -m tinytuya scan.

Aktuell (14.11.2023) werden mir 17 Geräte aufgelistet! Interessant, da ich in der tuya-App "nur" 8 Smart-Home Geräte eingerichtet habe. Also woher die weiteren 9 Geräte?

 

Aber so ganz richtig ist die Aussage auch nicht: Von den 8 aus der tuya-App werden nur 6 Geräte aufgelistet. Die beiden Temperatur-/Luftfeuchtigkeitssensoren tauchen nicht auf.

 

Und die anderen? Es sind 10 Geräte aus der Elesion-App und 1 Gerät (WLAN-Steckdose) aus der Fonta-Home-App. Also noch eine gebrandete tuya-App.

 

So wie ich es sehe, werden alle vorhandenen WLAN-Steckdose beim Scan erkannt, sowie auch Luftentfeuchter, Luftreiniger, Wetterstation, ... Jedoch nicht erkannt oder aufgelistet werden Sensoren: u.a. Temperatur-/Luftfeuchtesensor und Tür-/Fensterkontakte...

 

Da das jetzt funktioniert, kann es weitergehen mit dem Anlegen eines Lokal Key (Lokalen Schlüssel) für die Programmierung.

 

Weiter mit Python und tuya - Part 2

 

Produkte in der und für die tuya-App: (Stand: 15.11.2023)

 

SmartHome WLAN Steckdose 4er Set

https://www.druckerzubehoer.de/p/smarthome-wlan-steckdose-4er-set-dz108398

 

Luminea Home Control WLAN-LED-Lampe, E27, weiß, 806 lm, 9W (Nicht mehr lieferbar)

https://www.pearl.de/a-ZX2880-3300.shtml

 

Luminea Home Control WLAN-LED-Lampe, E27, RGBW, 11W (Nicht mehr lieferbar)

https://www.pearl.de/a-ZX2832-3300.shtml

Alternative, nicht bei mir im Einsatz:

Luminea Home Control WLAN-LED-Lampe, E27, RGB-CCT, 11W

https://www.pearl.de/a-ZX5136-3300.shtml

 

Luminea Home Control WLAN-Temperatur & Feuchtigkeits-Sensor (Nicht mehr lieferbar)

https://www.pearl.de/a-NX4599-3103.shtml

Alternative, nicht bei mir im Einsatz!

Luminea Home Control Hygrometer WLAN Temperaturfühler

https://www.pearl.de/a-ZX7226-3044.shtml

 

Hinweis: Das sind keine Affiliate-Links! Es kann nicht garantiert werden, ob die Artikel zu einem späteren Zeitpunkt noch verfügbar und aktuell sind.

Bei Interesse der hier aufgeführten Flohmarkt-Artikel einfach bei mir melden...