fhempy: tuya (lokal)

Begonnen von dominik, 26 April 2022, 19:12:25

Vorheriges Thema - Nächstes Thema

TheTrumpeter

Zitat von: satprofi am 14 März 2024, 12:07:30Seit tuya das developerportal abgeschaltet hat
Wann war das?

Die letzten 2 Steckdosen habe ich im Jänner 2024 hinzugefügt.
Ich habe aus dem letzten Setz noch 2 komplett jungfräulich herumliegen, die kann ich in den nächsten Tagen mal probieren.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

satprofi

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

TheTrumpeter

Zitat von: satprofi am 14 März 2024, 13:01:17Seit Anfang februar
Ich probier' spätestens am Montag die 2 noch jungfräulichen Steckdosen zu registrieren und schreib' dann ob's erfolgreich war.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

TheTrumpeter

Zitat von: TheTrumpeter am 14 März 2024, 16:11:24
Zitat von: satprofi am 14 März 2024, 13:01:17Seit Anfang februar
Ich probier' spätestens am Montag die 2 noch jungfräulichen Steckdosen zu registrieren und schreib' dann ob's erfolgreich war.
Sooooooo...

Erstmal das Ergebnis, dann der Weg dorthin:
Steckdosen funktionieren einwandfrei, ich kann sie schalten & auch die Momentanwerte "Spannung" (cur_voltage) und "Leistung" (cur_power) sowie Absolutwert "Verbrauch" (energy) werden plausibel angezeigt. Ebenso wird das Gerätemodell sowie weitere Einstellungen, die über die Tuya-App gemacht werden (GPS-Koordinaten, Relay-Verhalten bei Stromverlust, LED-Verhalten etc.), richtig ausgelesen und angezeigt.


Wie bin ich dorthin gekommen:

Tuya-App:
Ich habe die beiden Steckdosen aus der Packung genommen und dann folgendes gemacht:
Tuya-App geöffnet & mich angemeldet (war schon eine Herausfoderung das Passwort zu wissen, aber im 2. Versuch ging's dann).
Bereits "eingelernte" Steckdosen wurden plausibel angezeigt.
Bluetooth aktiviert.
Gerät hinzufügen ausgewählt
1. Steckdose eingesteckt
Steckdose wurde in der App angezeigt, ich hab' die Einrichtung durchgeführt und geprüft, ob ich das Relay über die App schalten kann
Gerät hinzufügen ausgewählt
2. Steckdose eingesteckt
Steckdose wurde in der App angezeigt, ich hab' die Einrichtung durchgeführt und geprüft, ob ich das Relay über die App schalten kann

FHEM:
Bei mir läuft immer noch die Version 0.1.670.
Ich habe "tuya_system" geöffnet und "scan_devices" gewählt.
Dann kam gleich die erste Ernüchterung, Fehlermeldung "subscription to cloud development plan has expired" :-(
Habe dann erstmal versucht im Tuya-Developer-Portal die Einstellung/Verlängerung zu finden, was mir leider nicht gelungen ist.
Bei der Gelegenheit habe ich aber gesehen, dass die neu hinzugefügten Steckdosen in meinem "Projekt" bereits angezeigt werden (u.a. die product_id). Habe dann nachgeschaut ob ich dort ev. auch den "local_key" finde, aber das wäre natürlich zu einfach gewesen.
Mit ein bisschen Google-Unterstützung habe ich dann doch herausgefunden, wie die nötige Verlängerung durchgeführt werden kann (https://forum.smartapfel.de/forum/thread/11205-tuya-devices-laufen-nicht-mehr-cloud-development-plan-has-expired/)
Habe die Verlängerung beantragt, nach höchstens 30min (Sonntag später Nachmittag MEZ) konnte ich den Scan bereits erfolgreich durchführen.
Dabei die nächste Überraschung: Obwohl die beiden neuen Steckdosen schon wieder offline waren, wurden sie "gefunden" und ich konnte sie hinzufügen. (Im Nachhinein klar: der "scan" holt sich die registrierten Geräte aus dem "Cloud Project" inkl. deren Daten und versucht sie dann lokal zu finden.)
Das Hinzufügen der Steckdosen hat sie anstatt mit der lokalen IP mit dem Schlüsselwort "offline" angelegt und eine Statusmeldung gebracht, dass "offline" durch die IP zu ersetzen ist.
Nachdem ich die Steckdosen eingesteckt habe und dann die richtigen IPs eingetragen habe, wurde die 1. der beiden neuen Steckdosen sofort richtig angezeigt (Lampensymbol) sowie die ganzen readings erzeugt.
Bei der 2. Steckdosen gab's eine Statusmeldung, dass das Attribut "local_key" fehlt. Erneutes "create device" hat nix gebracht, auch nach dem Löschen und erneuten "create device" war's nicht vorhanden. Da die fehlende Information im "tuya_system" aber vorhanden war, hab' ich das Attribut händisch hinzugefügt. Sekunden später war auch dieses Gerät aus meiner Sicht vollständig und komplett funktional vorhanden.

Bei beiden Steckdosen habe ich nun die Tablets der Kinder zum Aufladen drangehängt. Das ist ein 20W-Steckernetzteil, "cur_power" pendelt bei beiden Geräten zwischen 19,8 und 20,7 W. Die Spannung liegt für mein Empfinden dafür, dass die Stecker direkt nebeneinander auf derselben Phase hängen, doch etwas weit auseinander (im Moment 238,2 vs. 234,4 V). Aber von so billigen China-Teilen darf man wohl nicht mehr erwarten & die Spannung braucht man ja ohnehin nicht für eine Automatisierung.


Bei meiner Suche nach dem abgelaufenen "Cloud Development" hab' ich auch ein Youtube-Video gefunden, mit dem man den "local_key" angeblich mit irgendeiner Android-App auslesen kann. Da ich das dann aber doch nicht benötigt habe, hab' ich mir das Video nicht angeschaut und mich auch nicht näher damit beschäftigt. Aber vielleicht hilft's dem einen oder anderen ja weiter, https://www.youtube.com/watch?v=YKvGYXw-_cE
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

satprofi

#979
Danke für die Rückmeldung.
werde es auch versuchen

[edit]
Hallo, hat funktioniert nachdem ich das ->
Zitat von: TheTrumpeter am 18 März 2024, 08:23:21wie die nötige Verlängerung durchgeführt werden kann (https://forum.smartapfel.de/forum/thread/11205-tuya-devices-laufen-nicht-mehr-cloud-development-plan-has-expired/)
ausgeführt habe. Danach Scan und schon sind die devices neu angelegt.
DANKE!
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

TheTrumpeter

Zitat von: satprofi am 18 März 2024, 12:16:35Hallo, hat funktioniert nachdem ich das ->
Zitat von: TheTrumpeter am 18 März 2024, 08:23:21wie die nötige Verlängerung durchgeführt werden kann (https://forum.smartapfel.de/forum/thread/11205-tuya-devices-laufen-nicht-mehr-cloud-development-plan-has-expired/)
ausgeführt habe. Danach Scan und schon sind die devices neu angelegt.
DANKE!
Freut mich, dass es geklappt hat.

Ganz zufrieden bin ich damit aber nicht, dass neue Geräte nur durch diesen "Scan" angelegt werden können.
Ursprünglich hatte ich die Beschreibung so verstanden, dass diese ganze Account- und Projektgeschichte nur für die initiale Einrichtung der "lokalen Umgebung" erforderlich wäre und danach alles lokal funktioniert. Das Hinzufügen weiterer Geräte war da natürlich nicht erwähnt, aber es war meine implizite Annahme.

Ich hatte vor Weihnachten schon 1x die Situation, dass die Steckdose für die Weihnachtsbeleuchtung plötzlich nicht mehr reagiert hat. Nach einem erneuten Scan und hinzufügen ging sie wieder, ohne dass ich das Gerät gelöscht oder sonst irgendwie modifiziert hätte.

Eventuell schau' ich mir das andere Youtube-Video bzgl. Auslesen der "local-keys" auch mal an und probier' das aus. Wenn das einfach klappt, wäre es langfristig wohl die bessere Lösung.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

Jippy

Hallo,
ich versuche gerade meine Tuya Devices in FHEM einzubinden.
Leider bekomme ich den "tuya_cloud_connector" nicht zum laufen, dieser steht immer auf connecting.
"fhempy_local" und "fhempyserver" sind beide grün.
Ich habe jetzt schon mehrfach alles nach Anleitung abgearbeitet, komme jetzt aber nicht mehr weiter.
In der log-Datei erscheint auch ein Fehler, ich kenne mich da aber leider nicht wirklich aus, deshalb hoffe ich, dass mir jemand einen Tipp geben kann wo das Problem liegt.
2024-03-20 11:27:33,519 - ERROR    - tuya_cloud_connector: Exception raised by task: <Task finished name='Task-45' coro=<FhemModule._run_coro() done, defined at /opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/generic.py:216> exception=TypeError("unsupported operand type(s) for +: 'NoneType' and 'str'")>
Traceback (most recent call last):
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/generic.py", line 224, in _handle_task_result
    task.result()
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/generic.py", line 218, in _run_coro
    await coro
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/tuya_cloud/tuya_cloud_setup.py", line 58, in run_setup
    if await self._init_tuya_sdk() is True:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/tuya_cloud/tuya_cloud_setup.py", line 106, in _init_tuya_sdk
    else await utils.run_blocking(
         ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/fhempy/lib/utils.py", line 72, in run_blocking
    return await asyncio.get_event_loop().run_in_executor(pool, function)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/tuya_iot/openapi.py", line 208, in connect
    response = self.post(
               ^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/tuya_iot/openapi.py", line 316, in post
    return self.__request("POST", path, None, body)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/fhem/.fhempy/fhempy_venv/lib/python3.11/site-packages/tuya_iot/openapi.py", line 260, in __request
    url = {self.endpoint + path},\
           ~~~~~~~~~~~~~~^~~~~~
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

canis

Oh Shit, nun habe ich den ganzen Abend vergeudet, das Problem mit ddem "local key" zu lösen:
Bei tuya einloggen.
Verlängerung des devolopersportal hat innerhalb von 20 Minuten funktioniert.
Um den "local_key" zu erhalten:
IOT- Plattform aufrufen
in "Cloud" das Projekt auswählen und den API Explorer auswählen
Oben links "Industry Basic Service" auswählen
Darunter "Get the device Information" auswählen
Device-ID eingeben und "Submit Request" auslösen
"local_key": "..." suchen und verwenden
In /opt/tuya-mqtt/devices.conf die Daten entspreched einfügen und tuya-mqtt neu starten.
Thats it.

TheTrumpeter

Zitat von: canis am 23 März 2024, 03:13:35Um den "local_key" zu erhalten:
IOT- Plattform aufrufen
in "Cloud" das Projekt auswählen und den API Explorer auswählen
Oben links "Industry Basic Service" auswählen
Darunter "Get the device Information" auswählen
Device-ID eingeben und "Submit Request" auslösen
"local_key": "..." suchen und verwenden
Funktioniert das auch, wenn der Developer Zugang abgelaufen ist?
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

canis

ZitatFunktioniert das auch, wenn der Developer Zugang abgelaufen ist?
Keine Ahnung, ausprobieren.
Bei mir war nach 20 Minuten eine Verlängerung des Developer Accounts um 6 Monate freigeschaltet

TheTrumpeter

Zitat von: satprofi am 19 August 2023, 20:01:04hallo.
das deckt sich mit meinen Bewegungssensoren. Wahrscheinlich gehts mit sensoren nicht.
Zitat von: debu am 20 August 2023, 18:38:52Die Station nochmal in den AP modus versetzt und in der SmartLife app neu angelernt. In der https://eu.iot.tuya.com/cloud den tuya app account neu gelinkt. In   
fhempy_local nochmal scan_devices und den gefunden device anlegen lassen.
Und plötzlich waren alle readings da und werden auch schon den ganzen Tag zuverlässig geupdated. :-)

Die einzige Erklärung bzw. für mich sichtbarerer Unterschied ist dass ich nun einen neuen localKey habe für den device. Zuvor waren im localKey Sonderzeichen wie .)'+? Im neuen localKey sind keine Sonderzeichen.
Nachdem ich die Küche umgebaut habe, wollte ich die Gelegenheit nutzen und einen Wassermelder bei den Geschrirrspüler-Verlängerungen platzieren. (Der Wasser- bzw. Abwasserschlauch ist zu kurz und wurde daher verlängert. Dort liegt meiner Meinung nach die einzige Stelle für eine versteckte Undichtigkeit.)
Nach einigem Suchen ist die Wahl auf dieses Gerät gefallen, weil es ein recht langes Sensorkabel hat und ich den Batterietausch daher problemlos durchführen kann ohne die Verkleidungen abnehmen zu müssen: https://www.amazon.de/dp/B0CMZNJ3QX

Leider tritt nun auch das Problem auf, dass die Updates nicht in FHEM ankommen... nach dem Einlernen funktioniert's erstmal, aber sobald der Sensor im Schlafmodus war, kommen die Updates nicht mehr an.
Ich habe versucht das "Wasser"-Signal längere Zeit anliegen zu lassen, weil hier weiter oben mal stand, dass die Türkontakte bei länger geöffneten Türen dann auch richtig gemeldet werden. Aber selbst nach 3 Minuten gab es in FHEM kein Update.
Nur nach mehrmaligem Toggeln des Signals kommt es irgendwann an. Eine Systematik konnte ich da auch noch nicht erkennen. Mal kommt es nach 3x toggeln, mal erst nach 10x.

Ich habe bei Steckdosen zuletzt auch schon beobachtet, dass diese sich nach dem Einlernen "nicht richtig verhalten" (bzw. von 2 baugleichen Steckdosen eine "normal" funktioniert und die andere nicht). Dort habe ich das oben beschriebene Phänomen mit dem LocalKey ebenfalls beobachtet, d.h. nach dem Löschen aus der App und neu einlernen (samt neuem LocalKey) ging's plötzlich.

Bei dem Wassermelder hat ein Neuanlernen erstmal nix gebracht, werde es noch 1-2x probieren bevor ich komplett aufgebe.
(Die Information vom Wassersensor wird als Reading angezeigt und auch teilweise wie oben beschrieben weitergegeben, der Batteriestatus kommt aber gar nicht. In der App ist er natürlich vorhanden...)


Konnte jemand das Problem schon lösen bzw. tritt es ev. mit den neueren Versionen nicht mehr auf? (Dann müsste ich endlich mal das Update-Problem angehen...)
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

TheTrumpeter

Zitat von: TheTrumpeter am 04 April 2024, 06:55:51neuem LocalKey
Ich habe heute nochmal herumexperimentiert und um die 10 unterschiedliche LocalKeys ausprobiert. Der letzte hatte dann überhaupt keine Sonderzeichen, trotzdem wurde das Update vom Wassersensor nicht zuverlässig weitergegeben.

Ganz mysteriös wurde es, als ich das Gerät im WLAN-Router für's Internet gesperrt habe, d.h. nur lokale Kommunikation zulässig war. Da kam dann nämlich gar nichts mehr durch. (Ich habe im Sekundentakt den Wassersensor-Status getoggelt, die Änderung ist zuverlässig in FHEM angezeigt worden. Währenddessen habe ich den Zugang im Router gesperrt, plötzlich blieb der Wert in FHEM stehen, obwohl ich weiter getoggelt habe. Nach ein paarmal Toggeln habe ich den Zugang im Router wieder freigegeben, schon kam der Wert auch wieder in FHEM.)

Als Gegencheck habe ich dann eine Steckdose mit Verbrauchsmessung auch für's Internet gesperrt. Die konnte ich trotzdem lokal schalten & die Werte (z.B. aktuelle Leistung) kamen auch ganz normal in FHEM rein.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110