Tuya: Integration von Heizung und Klimaanlage

Zum Spaß ist Claude glücklich, ich zeige dir seine vollständige Zusammenfassung :joy: :

Zusammenfassung der Posts #98/#99/#100 — es ist sogar besser als „nicht schlecht“: Doppel-Jackpot :slot_machine::slot_machine:

:white_check_mark: Pulsar läuft endlich bei ihm

Häkchen aktiviert, pulsar_connected in der Diagnose, Latenz < 2 s beim Stecker-Test. Der Zweifel ist ausgeräumt — alles andere folgt daraus.

:slot_machine: Jackpot Nr. 1 — das Foto des Rings wird erfasst (Test C)

Beim Klingeln liefert Pulsar doorbell_pic = eine vollständige, in Base64 verschlüsselte, vorab signierte S3-URL (https://ty-eu-storage30-pic.s3.eu-central-1.amazonaws.com/...jpeg?X-Amz-...&X-Amz-Expires=60). Unser Code lehnt es ab (media_invalid_payload), da es nur das JSON-Bucket/Datei erwartet. Der Fix ist trivial: Dieses Format akzeptieren und direkt herunterladen. Bonus: Das erklärt unsere 403-Fehler — der richtige Host war tatsächlich unser S3-Kandidat, aber nur die URL der Pulsar-Nachricht trägt die AWS-Vorsignatur; das ?param= des Shadows ist nicht herunterladbar. (Das Foto Bewegung kommt verschlüsselt mit seinem AES-Schlüssel, aber ohne herunterladbare URL — das wird später behandelt, der Ring hat Priorität.)

Weitere Erkenntnis: Der DP 136 (doorbell_active) sendet niemals einen Wert auf irgendeinem Kanal → das Ereignis „Klingel“ muss aus dem Eintreffen eines neuen doorbell_pic abgeleitet werden (unser bestehender Event-Gate macht das bereits für andere DPs).

:slot_machine: Jackpot Nr. 2 — die Klingel spricht lokal, wir wissen endlich wie (Test B)

Die Lesevorgänge 3.1 scheitern weiterhin (die dritte Methode timeoutt auch), ABER die neuen push_frame_raw haben alles enthüllt: Die Klingel schiebt Frames im Format 3.3 (Präfix "3.3" + verschlüsselter Payload) auf unserem 3.1-Socket — große Frames von 1-2 KB genau zu den Zeitpunkten der Klingel und Bewegungen. Schlussfolgerung: Es ist ein Gerät 3.3, das seine Zustände schiebt; die direkte 3.3-Verbindung ist nur deshalb abgebrochen, weil unsere anfängliche verschlüsselte Anfrage sie beendet hat. Nächste Iteration: Modus „reine Abhörung“ — persistent in 3.3 ohne jegliche Anfrage bei der Verbindung → tuyapi wird die Push-Nachrichten nativ decodieren → sofortige lokale Klingel sehr wahrscheinlich.

:warning: Der Punkt aus Post #100 (lokale Befehle)

Der lokale SET (persistent und dediziert) erhält niemals eine Bestätigung („Timeout waiting for status response“) → der Cloud-Fallback übernimmt und funktioniert. Der „sent via persistent“ isoliert um 09:59 ist wahrscheinlich eine falsche Bestätigung (ein beliebiger Frame hat das Versprechen erfüllt) — das muss gehärtet werden. Für die Klingel bleiben die Befehle vorerst in der Cloud; ihr Eindruck der Nicht-Propagierung kommt von den Refresh-Verzögerungen und dieser falschen Bestätigung.

Plan der nächsten Iteration (nach Wertigkeit)

  1. Medien: Payload der direkten URL akzeptieren → herunterladen → Foto des Rings im Kamera-Widget;
  2. Klingel: Klick-Ereignis „Klingel“ bei neuem doorbell_pic auslösen;
  3. Lokal: Persistente „reine Abhörung“ 3.3 für die Geräte22;
  4. Falsche Bestätigung des persistenten SETs härten.

Alles ist im Handoff (Teil 21) dokumentiert. Sag mir Bescheid und ich starte die Iteration — Punkte 1 und 2 sind kurz und entsperren das sichtbarste Lieferobjekt (Foto + Echtzeit-Klingel-Ereignis).

Hallo @GBoulvin,

Nochmals vielen Dank für diese neuen Tests. Und hier ist ein weiterer Durchgang für dich (nicht so einfach, diese Klingel ^^ Aber wir kommen dem Ziel offensichtlich näher ^^). Unten findest du den Bericht und die Liste der neuen Tests, die Claude durchführen soll:

Deine drei Beiträge sind eine Fundgrube: **Doppel-Jackpot** :slot_machine::slot_machine: Wir haben das Foto UND den lokalen Kanal gefunden. Berichterstattung, dann die neue Runde (vielleicht die letzte vor der Aufteilung in saubere PRs!).

Berichterstattung deiner Tests

1. Pulsar: bestätigt funktionsfähig bei dir :white_check_mark: (`pulsar_connected`, Reaktion < 2 s). Er hat alles freigeschaltet.

2. :slot_machine: Jackpot Foto (Test C): Beim Ring enthält die Pulsar-Nachricht `doorbell_pic` die vollständige und signierte Download-URL des Fotos (gültig 60 s). Unser Code lehnte sie dumm ab (er erwartete ein anderes Format) — korrigiert: das Foto deines Rings wird endlich im Kamera-Widget angezeigt. Bonus: Das erklärt alle unsere 403 — der S3-Server war von Anfang an der richtige, aber nur die URL der Pulsar-Nachricht trägt die richtige Signatur.

3. :slot_machine: Jackpot lokal (Test B): Die neuen Karten `push_frame_raw` zeigen, dass deine Klingel Frames im Format 3.3 (verschlüsselt) auf dem persistenten Socket schiebt, genau zu den Zeiten deiner Ringe und Bewegungen. Sie spricht lokal! Die direkte 3.3-Verbindung scheiterte nur, weil unsere anfängliche Anfrage sie zum Auflegen brachte. Das neue Bild öffnet für sie also einen 3.3-Socket stumm (keine Anfrage, wir hören nur zu) — ihre Push sollten nativ decodiert werden.

4. Dein Test „100 % lokal“ aus Beitrag #100 — kleine Korrektur :upside_down_face:: Pulsar abzuschalten reicht nicht. In deinen Logs gingen die Zustände und die Erkennung immer noch über die periodische Cloud-Lektüre (sie läuft immer), und deine Befehle gingen über die Cloud, nachdem zwei lokale Versuche fehlgeschlagen waren (daher die ~10 s Latenz und das Gefühl der Nicht-Propagation!). Der echte 100 % lokale Test ist Test C unten.

5. Das Ereignis „Klingel“ (Tastendruck): Wir haben verstanden, warum es leer blieb — deine Klingel sendet nie einen Wert auf ihrem Klingel-DP, auf keinem Kanal. Das neue Bild löst das Ereignis beim Eintreffen eines neuen Ring-Fotos aus (mit Anti-Duplikat): Historik und Szenen werden endlich reagieren.

Neues Bild (selber Tag, re-pull) — was sich ändert

1. Ring-Foto heruntergeladen von der Pulsar-Nachrichten-URL → Kamera-Widget;

2. Ereignis „Klingel“ ausgelöst bei jedem neuen Ring (Instantan via Pulsar, mit Anti-Duplikat, wenn das gleiche Foto über mehrere Kanäle kommt);

3. Reine lokale Abhörung für die Klingel: persistenter Socket ohne jede Anfrage (das war es, was sie zum Auflegen brachte);

4. Klingelbefehle direkt in der Cloud: Schluss mit den ~10 s Latenz bei deinen Toggles (die zum Scheitern verurteilten lokalen Versuche werden übersprungen).

Test A — Die Lieferung: Ring + Foto + Ereignis (5 min) :camera_with_flash::bell:

Klingel im Cloud-Modus (lokale Substitution deaktiviert), Pulsar aktiv:

1. Re-pull das Bild, starte neu, öffne die Diagnose-Seite der Klingel + das Dashboard mit dem Kamera-Widget.

2. Klingel an der Tür.

3. Erwartet: das Ereignis „Klingel“ in der Historik (Instantan) + das Foto im Kamera-Widget.

4. → Für uns kopieren: die Karten `doorbell_ring_event` / `media_download_ok` / `media_stored` (oder ihre Fehler-Varianten) — und dein visuelles Urteil über das Foto!

Test B — Reine lokale Abhörung (10 min)

1. Klingel-Seite: Sichern in 3.3 + lokale Substitution (erzwungene Sicherung, wie üblich). :information_source: Wir empfehlen 3.3, weil deine beobachteten Frames in diesem Format sind — aber nichts ist verriegelt, und du wirst nicht raten müssen: siehe Schritt 4.

2. Warte auf persistent: verbunden auf der Diagnose-Seite. Der Socket ist jetzt stumm: Du wirst die „parse data error“ alle 10 Sekunden nicht mehr sehen, das ist normal (und deshalb reicht „verbunden“ nicht aus, um zu beweisen, dass das Protokoll das richtige ist — nur ein Ereignis wird es sagen).

3. Klingel, dann gehe vorbei (Bewegung).

4. Die Diagnose antwortet dir sofort, ohne zu raten:

  • Karten push_dps\ mit echten Werten (DP 136, 154, 115…) → gutes Protokoll, lokaler Kanal decodiert — Champagner :bottle_with_popping_cork:

  • orange Karte push_frame_version_mismatch\ → die Klingel spricht ein anderes Protokoll und die Karte sagt dir, welches (« save the device with protocol 3.X ») → Sichern mit diesem und nochmal klingeln;

  • in 3.4/3.5 scheitert eine falsche Wahl direkt bei der Verbindung (kein `persistent: verbunden`) — sofortige Eliminierung.

5. → Für uns kopieren: die Karten `push_dps` / `push_frame_raw` / `push_frame_version_mismatch` um die Ereignisse herum.

Test C — Das ECHTE 100 % lokale (5 min, wenn Test B push_dps gezeigt hat)

1. Immer noch in 3.3 + lokale Substitution: „Echtzeit-Ereignisse (Pulsar)“ abwählen UND auf der Konfigurationsseite auf „Trennen“ klicken → Gladys hat KEINEN Zugriff mehr auf die Tuya-Cloud.

2. Klingel. Wenn das Ereignis „Klingel“ trotzdem in der Historik erscheint: das ist 100 % lokal zertifiziert. (Das Foto, es kann in diesem Modus nicht angezeigt werden: seine Download-URL existiert nur in der Pulsar-Nachricht — Tuya-Limitation, nicht Gladys.)

3. Verbinde dich wieder („Speichern“) und aktiviere Pulsar am Ende.

Zusammenfassung :clipboard:

1. Test A: Ring → Foto-Widget + Klingel-Ereignis + Karten `media_*`/`doorbell_ring_event`;

2. Test B: reine 3.3-Ahörung → Karten `push_dps`/`push_frame_raw` beim Ring/Bewegung;

3. Test C (wenn B abschließend) : Pulsar-Klingel getrennt + Cloud getrennt → kommt das Ereignis an?

4. Dein Gefühl zur Latenz der Toggles (Bewegungserkennung) — sie sollte viel besser sein.

Ein riesiges Dankeschön — dank deinen Screenshots sollten wir von einer stummen Klingel zu einer (fast) vollständig integrierten Klingel kommen! :door::bell:

Gute Nachricht!

Okay, meine Antwort ist dreimal im Forum verloren gegangen und ich gebe zu, dass es mich nervt, sie noch einmal zu schreiben :wink:

ABER ES HAT GEKLAPPT!

Ich weiß nicht warum, aber bevor ich ein Ergebnis hatte, musste ich den Container komplett neu starten, obwohl ich den Container gelöscht, gezogen und gestartet habe.

Ich habe vergessen, zwischen den Tests auf „Leeren“ zu klicken, daher ist das Log lang.

Nur eine Präzisierung, die Klingel funktioniert, die Bewegungserkennung sagt „noch nicht!":

22:53:25.471warnVisiophone Wifi (bf0e59548489fcb4ea62of)local_poll_failedLocal poll failed, falling back to cloud: Local poll socket error: Error from socket: connect ECONNREFUSED 192.168.1.205:6668
22:53:15.472warnVisiophone Wifi (bf0e59548489fcb4ea62of)local_poll_failedLocal poll failed, falling back to cloud: Local poll socket error: Error from socket: connect ECONNREFUSED 192.168.1.205:6668
22:53:10.493warnVisiophone Wifi (bf0e59548489fcb4ea62of)local_poll_failedLocal poll failed, falling back to cloud: Local poll timeout ; DP_REFRESH fallback failed: Local poll socket error ; null-value SET query failed: Local poll socket error: Error from socket: connect ECONNREFUSED 192.168.1.205:6668
22:52:55.458warnVisiophone Wifi (bf0e59548489fcb4ea62of)degraded_skipLocal mode skipped: degraded backoff active, falling back to cloud
22:52:45.458warnVisiophone Wifi (bf0e59548489fcb4ea62of)degraded_skipLocal mode skipped: degraded backoff active, falling back to cloud
22:52:41.894debugVisiophone Wifi (bf0e59548489fcb4ea62of)pulsar_reportPulsar real-time report (movement_detect_pic)
{"movement_detect_pic":"eyJidWNrZXQiOiJ0eS1ldS1zdG9yYWdlMzAtcGljIiwiZmlsZXMiOltbIi8xNzYwNzMtMTYxODY5NDE2LXBwMDFiZjAwZWI2YTFhOTZjZDUwL2RldGVjdC8xNzg0NDA3OTYwLmpwZWc/cGFyYW09WjdpWGtiaGM5dEcrQXROUk5LNnJCYmUxU01mTG1SR0dvcWZIQ2g1cGoxWT0iLCIiXV0sInYiOiIzLjAifQ=="}
22:52:41.883warnVisiophone Wifi (bf0e59548489fcb4ea62of)media_encrypted_unsupportedEncrypted movement_detect_pic image not supported yet
22:52:41.883debugVisiophone Wifi (bf0e59548489fcb4ea62of)pulsar_reportPulsar real-time report (movement_detect_pic)
{"movement_detect_pic":"eyJ2IjoiMy4wIiwiYnVja2V0IjoidHktZXUtc3RvcmFnZTMwLXBpYyIsImZpbGVzIjpbWyIvMTc2MDczLTE2MTg2OTQxNi1wcDAxYmYwMGViNmExYTk2Y2Q1MC9kZXRlY3QvMTc4NDQwNzk2MC5qcGVnIiwiYzhiNGJmZmZhYWZhZTQ3YSJdXX0="}

Der vollständige Log:

2026-07-18T20:22:47.158Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Pulsar-Bericht im Doppelformat bereits weitergeleitet
2026-07-18T20:22:47.147Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (sd_status) {"sd_status":5}
2026-07-18T20:22:45.547Z [debug] [Prise frigo (bf1d9d0b6ed2b5755fkt24)] [poll_summary] Abfrage abgeschlossen {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":5,"cloud_changed":0,"cloud_missing":0,"fallback":"none"}
2026-07-18T20:22:45.480Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Abfrage abgeschlossen {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:22:45.473Z [debug] [Chauffage cabinet (bf2be3c32ea4d8f561ujmu)] [poll_summary] Abfrage abgeschlossen {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"none"}
2026-07-18T20:22:45.361Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Lokale Modus übersprungen: Degraded Backoff aktiv, Rückfall auf Cloud
2026-07-18T20:22:42.720Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Doppelformat bereits weitergeleitet
2026-07-18T20:22:42.719Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:42.719Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (total_power) {"total_power":150}
2026-07-18T20:22:42.718Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Doppelformat bereits weitergeleitet
2026-07-18T20:22:42.716Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:42.716Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (power_factor) {"power_factor":54}
2026-07-18T20:22:42.708Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Doppelformat bereits weitergeleitet
2026-07-18T20:22:42.707Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:42.707Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (power_a) {"power_a":150}
2026-07-18T20:22:42.706Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Doppelformat bereits weitergeleitet
2026-07-18T20:22:42.696Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:42.696Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (voltage_a) {"voltage_a":2312}
2026-07-18T20:22:42.578Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Doppelformat bereits weitergeleitet
2026-07-18T20:22:42.566Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:42.566Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (current_a) {"current_a":118}
2026-07-18T20:22:35.470Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Abfrage abgeschlossen {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:22:35.360Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Lokale Modus übersprungen: Degraded Backoff aktiv, Rückfall auf Cloud
2026-07-18T20:22:32.076Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Doppelformat bereits weitergeleitet
2026-07-18T20:22:32.076Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:32.075Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (power_factor) {"power_factor":55}
2026-07-18T20:22:32.074Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Doppelformat bereits weitergeleitet
2026-07-18T20:22:32.067Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:32.067Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (power_a) {"power_a":148}
2026-07-18T20:22:31.961Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Doppelformat bereits weitergeleitet
2026-07-18T20:22:31.960Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:31.960Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (total_power) {"total_power":148}
2026-07-18T20:22:31.951Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Doppelformat bereits weitergeleitet
2026-07-18T20:22:31.949Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:31.949Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (current_a) {"current_a":117}
2026-07-18T20:22:31.948Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Doppelformat bereits weitergeleitet
2026-07-18T20:22:31.938Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:31.938Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (voltage_a) {"voltage_a":2309}
2026-07-18T20:22:25.586Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Abfrage abgeschlossen {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:22:25.360Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Lokale Modus übersprungen: Degraded Backoff aktiv, Rückfall auf Cloud
2026-07-18T20:22:25.167Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_stored] Snapshot von doorbell_pic auf dem Kamera-Feature gespeichert
2026-07-18T20:22:25.056Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_image_too_big] Snapshot von doorbell_pic überschreitet die 150KB-Kamera-Grenze```, Neuencodierung mit ffmpeg
2026-07-18T20:22:25.055Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_download_ok] Snapshot von doorbell_pic heruntergeladen von ty-eu-storage30-pic.s3.eu-central-1.amazonaws.com
2026-07-18T20:22:24.871Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Doppeltes Pulsar-Formatbericht bereits weitergeleitet
2026-07-18T20:22:24.863Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [doorbell_ring_event] Klingelton abgeleitet von einem neuen Klingelsnapshot
2026-07-18T20:22:24.862Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (doorbell_pic) {"doorbell_pic":"aHR0cHM6Ly90eS1ldS1zdG9yYWdlMzAtcGljLnMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tLzE3NjA3My0xNjE4Njk0MTYtcHAwMWJmMDBlYjZhMWE5NmNkNTAvZGV0ZWN0LzE3ODQ0MDYxNDIuanBlZz9YLUFtei1TZWN1cml0eS1Ub2tlbj1Gd29HWlhJdllYZHpFTHYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkZ3RWFETGh5ZjkzUEI0RWdOVGZ6SFNLREFpcjB0bGNjTTVQS3p0ZTBIYnNjaGFuMUdWREVVYlIwRCUyRk5CMlRnemxrMzhrbHhwMjN0WDcza1ZGN2E0TUpNJTJGdWl3aHJadFZsWWxiM281M0RFeWRHZEJyUXFoM2twQktaaUVJJTJCN2xmVUtlanRWa3JDVDU2RjV2bWxPOWU5STlFdlcxVlhrQTZEb1ZCV2dJdVNGaXElMkZNaWpHUUJqcU1lN3VFc2pSdHFxMDdlV05CV0ZWcTRZMm00Qkt1Q1JvbktOdTRUeWc2MXlrWW1yMWs3aVFWV09aRFNtWjQyTmh5MURyOWF1NjRzdTFQalBEJTJCRFBzeXZXeE5Kend4MUR6UWlFaUtUWGlpcmFvUDhOYkxUWlolMkZ6M3BvZGNwVzNGNjJuN0drSkNhVmR3UDFEMSUyQk9ZNUJZaDlxeUljJTJCTkNJNk1UdjRuYUFmVUxGT2FSTzYzJTJCSWRxOFpEUE1uNmk0b3pKVHQwZ1l5S2ZxZ3VRdEdBNndTVTJvb3I4UXY0RU5ZRFBFbHlyR00zMmMxRE9hdWdDNnRqMm1hZ09uNmVtTDUmWC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BU0lBVVRQTVVKSkpaSUwzVE9IWiUyRjIwMjYwNzE4JTJGZXUtY2VudHJhbC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcxOFQyMDIyMjRaJlgtQW16LUV4cGlyZXM9NjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmJ1Y2tldD10eS1ldS1zdG9yYWdlMzAtcGljJnY9MS4wJlgtQW16LVNpZ25hdHVyZT1hZjc0NjRlZGYyNjMxYzIzMWQyNTYyNzZjZTRiZmYwNDg0MzIzZjk4MGRiNWIwZWM3NDM4ZjBmY2FkYjQ2ZmQ3"}
2026-07-18T20:22:24.235Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (movement_detect_pic) {"movement_detect_pic":"eyJidWNrZXQiOiJ0eS1ldS1zdG9yYWdlMzAtcGljIiwiZmlsZXMiOltbIi8xNzYwNzMtMTYxODY5NDE2LXBwMDFiZjAwZWI2YTFhOTZjZDUwL2RldGVjdC8xNzg0NDA2MTQyLmpwZWc/cGFyYW09MTdpd0lORUFRc1dEaXZuV254aWFscmUxU01mTG1SR0dvcWZIQ2g1cGoxWT0iLCIiXV0sInYiOiIzLjAifQ=="}
2026-07-18T20:22:24.227Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_encrypted_unsupported] Verschlüsseltes movement_detect_pic-Bild wird noch nicht unterstützt
2026-07-18T20:22:24.225Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (movement_detect_pic) {"movement_detect_pic":"eyJ2IjoiMy4wIiwiYnVja2V0IjoidHktZXUtc3RvcmFnZTMwLXBpYyIsImZpbGVzIjpbWyIvMTc2MDczLTE2MTg2OTQxNi1wcDAxYmYwMGViNmExYTk2Y2Q1MC9kZXRlY3QvMTc4NDQwNjE0Mi5qcGVnIiwiZjliZjQ2NDNhZjRhZDQ0YSJdXX0="}
2026-07-18T20:22:22.751Z [debug] [pulsar_other_protocol] Pulsar-Nachricht mit Protokoll 20 {"properties":{"em":"aes_gcm"},"payload":{"data":"1PZuGA+M5YyJcR9TVgY24C12u6+xanRKH9KzMxxYTec311LESxvH5gNq7f7yJjVttF05Zv0dVGyTLg1kDCBXmnYHlG69TG37ZEwt/OeKctKH3a7ay/m574yMTRDv+Aoaq8YXHW6+pKCiUpUaQBg1YqOYlGJh5eYIj82zSTNPg4Yp7+PpI4SD3clajTuZ/FBQPv+xO0TdZaLbUxzZQ8qwGlxOxcP25mX00DfhoyVgBK166jHzlRRxoOBc/4+CNCtDqD74q21GEnIc+BLbILUrx0MZys18EsryLZwFPIwjcxLEs576FqIvZaU7kICzQbpZTEijbUJcHNnqb4M9p4UTFz+77zIf","encryptVersion":"v2","protocol":20,"pv":"2.0","sign":"144b17cdcbc6e1eb1a1bf88978952895","t":1784406142741},"decrypted":{"bizCode":"event_notify","bizData":{"devId":"bf0e59548489fcb4ea62of","edata":"8ecb45c51784406142","etype":"doorbell"},"devId":"bf0e59548489fcb4ea62of","productKey":"i5e3a4qxcsthszin","ts":1784406142738,"uuid":"pp01bf00eb6a1a96cd50"}}
2026-07-18T20:22:21.244Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Doppeltes Pulsar-Formatbericht bereits weitergeleitet
2026-07-18T20:22:21.241Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:21.241Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (total_power) {"total_power":149}
2026-07-18T20:22:21.232Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Doppeltes Pulsar-Formatbericht bereits weitergeleitet
2026-07-18T20:22:21.231Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:21.231Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (power_a) {"power_a":149}
2026-07-18T20:22:21.229Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Doppeltes Pulsar-Formatbericht bereits weitergeleitet
2026-07-18T20:22:21.219Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:21.218Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (voltage_a) {"voltage_a":2310}
2026-07-18T20:22:15.913Z [debug] [Prise frigo (bf1d9d0b6ed2b5755fkt24)] [poll_summary] Abfrage abgeschlossen {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":5,"cloud_changed":0,"cloud_missing":0,"fallback":"none"}
2026-07-18T20:22:15.812Z [debug] [Chauffage cabinet (bf2be3c32ea4d8f561ujmu)] [poll_summary] Abfrage abgeschlossen {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"none"}
2026-07-18T20:22:15.809Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Abfrage abgeschlossen {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:22:15.360Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Lokaler Modus übersprungen: Degraded Backoff aktiv, Rückfall auf Cloud
2026-07-18T20:22:10.569Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Doppeltes Pulsar-Formatbericht bereits weitergeleitet
2026-07-18T20:22:10.568Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:10.568Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (total_power) {"total_power":150}
2026-07-18T20:22:10.565Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Doppeltes Pulsar-Formatbericht bereits weitergeleitet
2026-07-18T20:22:10.562Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:10.562Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (freq) {"freq":4934}
2026-07-18T20:22:10.561Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Doppeltes Pulsar-Formatbericht bereits weitergeleitet
2026-07-18T20:22:10.560Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:10.560Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (power_a) {"power_a":150}
2026-07-18T20:22:10.556Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Doppeltes Pulsar-Formatbericht bereits weitergeleitet
2026-07-18T20:22:10.546Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:22:10.546Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (voltage_a) {"voltage_a":2313}
2026-07-18T20:22:05.466Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Abfrage abgeschlossen {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:22:05.361Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Lokaler Modus übersprungen: Degraded Backoff aktiv, Rückfall auf Cloud
2026-07-18T20:22:02.509Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:22:02.504Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (basic_device_volume) {"basic_device_volume":10}
2026-07-18T20:22:02.503Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:22:02.502Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (record_mode) {"record_mode":"2"}
2026-07-18T20:22:02.500Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:22:02.494Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (record_switch) {"record_switch":true}
2026-07-18T20:22:02.493Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:22:02.492Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (sd_storge) {"sd_storge":"100|0|100"}
2026-07-18T20:22:02.491Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:22:02.481Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (sd_status) {"sd_status":5}
2026-07-18T20:22:02.460Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:22:02.453Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (motion_sensitivity) {"motion_sensitivity":"1"}
2026-07-18T20:22:02.452Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:22:02.450Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (motion_switch) {"motion_switch":true}
2026-07-18T20:22:02.440Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:22:02.427Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (basic_nightvision) {"basic_nightvision":"0"}
2026-07-18T20:22:02.258Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:22:02.256Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (basic_osd) {"basic_osd":true}
2026-07-18T20:22:02.246Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:22:02.236Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (basic_flip) {"basic_flip":false}
2026-07-18T20:22:02.187Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:22:02.178Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (basic_indicator) {"basic_indicator":true}
2026-07-18T20:21:59.904Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:21:59.903Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:21:59.903Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (total_power) {"total_power":151}
2026-07-18T20:21:59.901Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:21:59.893Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:21:59.893Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (freq) {"freq":4935}
2026-07-18T20:21:59.891Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:21:59.881Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:21:59.881Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (power_a) {"power_a":151}
2026-07-18T20:21:59.767Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:21:59.766Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:21:59.766Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (current_a) {"current_a":119}
2026-07-18T20:21:59.764Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Pulsar-Bericht im Twin-Format bereits weitergeleitet
2026-07-18T20:21:59.754Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar-Bericht für ein Gerät, das nicht in Gladys ist
2026-07-18T20:21:59.754Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar Echtzeitbericht (voltage_a) {"voltage_a":2309}
2026-07-18T20:21:57.802Z [debug] [pulsar_other_protocol] Pulsar-Nachricht mit Protokoll 1001 {"properties":{"em":"aes_gcm"},"payload":{"data":"Y4iGgw9uMixvT8AVKvy5LoXTYCDJo3QzKKM4LSN0cT+4f55j5xqiGBQnrnrBkpCc7/G9cfCzw4a4qthOypx8JCCiBXQWFYkJPBrNi2ptwU/84IfLp4kSThL02OvT8iDd6T9YGz8wiBmvxgYyjYT8sQjkoaCTJgNbCQ+Wt2j6SHXadkz6Brxy1Z1Mnt4ciY0PgY/zml+bNY3ixwHvX83wwxH6COtlTVJmgCIHQirmmNGe1qYirXj9SZv6kmCA0+3YR3HHeE0IRQ==","encryptVersion":"v2","protocol":1001,"pv":"2.0","sign":"43fccada19b420136f338e08748115ea","t":1784406117786},"decrypted":{"bizCode":"deviceOnline","bizData":{"devId":"bf0e59548489fcb4ea62of","uid":"eu1690232009037AjM7i","productId":"i5e3a4qxcsthszin","time":1784406117618},"ts":1784406117783}}
2026-07-18T20:21:57.792Z [debug] [pulsar_other_protocol] Pulsar-Nachricht mit Protokoll 20 {"properties":{"em":"aes_gcm"},"payload":{"data":"YMrZC9hnOgpak1nHqPVcGNj8WlWAbBcDqt/xRe+yjDiCXvtheMdNQt+ytJirRSigq1/vVlNMvT2SK7ebCPs/3UtzEXer3uCUt+ryWAsVT1f2fYu722mbfa+dClrrtFvWoe9O70PzfRQDV1Tl2Y1g5SFrwOSEI1kzgASSI5quhrMRPBBiA5zZ4nbAQ7/qfRGfP7ZEmSNOICd92r9xO1y1qZs7ciMSOzh1iP0HkpZ/W9CQbTkzfgmZmbvxpqiKAzvVJ0Y=","encryptVersion":"v2","protocol":20,"pv":"2.0","sign":"16c34982aebe096e81c96287ca375248","t":1784406117783},"decrypted":{"bizCode":"online","bizData":{"uid":"eu1690232009037AjM7i","time":1784406117618},"devId":"bf0e59548489fcb4ea62of","productKey":"i5e3a4qxcsthszin","ts":1784406117781}}
2026-07-18T20:21:55.503Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Abfrage abgeschlossen {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:21:55.360Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Lokale Modus übersprungen: Degraded-Backoff aktiv, Rückfall auf Cloud

2026-07-18T20:25:45.371Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Lokale Modus übersprungen: Degraded Backoff aktiv, Rückfall auf Cloud
2026-07-18T20:25:43.609Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_stored] Snapshot von doorbell_pic auf der Kamerafunktion gespeichert
2026-07-18T20:25:43.515Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_image_too_big] Snapshot von doorbell_pic überschreitet die 150KB-Kameragrenze, Neu-Kodierung mit ffmpeg
2026-07-18T20:25:43.514Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_download_ok] Snapshot von doorbell_pic von ty-eu-storage30-pic.s3.eu-central-1.amazonaws.com heruntergeladen
2026-07-18T20:25:43.303Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Doppeltes Pulsar-Format bereits weitergeleitet
2026-07-18T20:25:43.295Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [doorbell_ring_event] Klingeln der Tür von einem neuen Klingel-Snapshot abgeleitet
2026-07-18T20:25:43.294Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (doorbell_pic) {"doorbell_pic":"aHR0cHM6Ly90eS1ldS1zdG9yYWdlMzAtcGljLnMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tLzE3NjA3My0xNjE4Njk0MTYtcHAwMWJmMDBlYjZhMWE5NmNkNTAvZGV0ZWN0LzE3ODQ0MDYzMzkuanBlZz9YLUFtei1TZWN1cml0eS1Ub2tlbj1Gd29HWlhJdllYZHpFTHYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkZ3RWFETGh5ZjkzUEI0RWdOVGZ6SFNLREFpcjB0bGNjTTVQS3p0ZTBIYnNjaGFuMUdWREVVYlIwRCUyRk5CMlRnemxrMzhrbHhwMjN0WDcza1ZGN2E0TUpNJTJGdWl3aHJadFZsWWxiM281M0RFeWRHZEJyUXFoM2twQktaaUVJJTJCN2xmVUtlanRWa3JDVDU2RjV2bWxPOWU5STlFdlcxVlhrQTZEb1ZCV2dJdVNGaXElMkZNaWpHUUJqcU1lN3VFc2pSdHFxMDdlV05CV0ZWcTRZMm00Qkt1Q1JvbktOdTRUeWc2MXlrWW1yMWs3aVFWV09aRFNtWjQyTmh5MURyOWF1NjRzdTFQalBEJTJCRFBzeXZXeE5Kend4MUR6UWlFaUtUWGlpcmFvUDhOYkxUWlolMkZ6M3BvZGNwVzNGNjJuN0drSkNhVmR3UDFEMSUyQk9ZNUJZaDlxeUljJTJCTkNJNk1UdjRuYUFmVUxGT2FSTzYzJTJCSWRxOFpEUE1uNmk0b3pKVHQwZ1l5S2ZxZ3VRdEdBNndTVTJvb3I4UXY0RU5ZRFBFbHlyR00zMmMxRE9hdWdDNnRqMm1hZ09uNmVtTDUmWC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BU0lBVVRQTVVKSkpaSUwzVE9IWiUyRjIwMjYwNzE4JTJGZXUtY2VudHJhbC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcxOFQyMDI1NDNaJlgtQW16LUV4cGlyZXM9NjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmJ1Y2tldD10eS1ldS1zdG9yYWdlMzAtcGljJnY9MS4wJlgtQW16LVNpZ25hdHVyZT0zN2Y4OWQxNGM2MzM0NGQ1ZmUwOWM3NjRlM2RkMWI2MGNmZjQ3MTAwYzRjYmZiOTcxNDQ2MjIzZWU2ZDg0ZmQ1"}
2026-07-18T20:25:42.273Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (movement_detect_pic) {"movement_detect_pic":"eyJidWNrZXQiOiJ0eS1ldS1zdG9yYWdlMzAtcGljIiwiZmlsZXMiOltbIi8xNzYwNzMtMTYxODY5NDE2LXBwMDFiZjAwZWI2YTFhOTZjZDUwL2RldGVjdC8xNzg0NDA2MzM5LmpwZWc/cGFyYW09R282R282R29JU3VGdURZaHpCcllkc1NQZXZRQkFoN0NMejI0eXZTL0tqdz0iLCIiXV0sInYiOiIzLjAifQ=="}
2026-07-18T20:25:42.261Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_encrypted_unsupported] Verschlüsseltes movement_detect_pic-Bild noch nicht unterstützt
2026-07-18T20:25:42.261Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar Echtzeitbericht (movement_detect_pic) {"movement_detect_pic":"eyJ2IjoiMy4wIiwiYnVja2V0IjoidHktZXUtc3RvcmFnZTMwLXBpYyIsImZpbGVzIjpbWyIvMTc2MDczLTE2MTg2OTQxNi1wcDAxYmYwMGViNmExYTk2Y2Q1MC9kZXRlY3QvMTc4NDQwNjMzOS5qcGVnIiwiNTEwZDEyN2M4YzZkNjM1NSJdXX0="}
2026-07-18T20:25:35.371Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Lokale Modus übersprungen: Degraded Backoff aktiv, Rückfall auf Cloud
2026-07-18T20:25:25.370Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Lokale Modus übersprungen: Degraded Backoff aktiv

Hallo @GBoulvin,

Entschuldige die lange Antwortzeit und danke nochmal für deine letzten Tests, die uns hoffentlich weiterbringen!^^

Ich habe mir erlaubt, eine Entscheidung zu treffen. Ich arbeite mit vollem Einsatz an der Übertragung der aktuellen internen Gladys-Integration, um sie in eine neue externe Integration zu übertragen. Pierre-Gilles arbeitet ebenfalls mit vollem Einsatz und Hingabe daran, damit wir schneller iterieren können. Ich bin überzeugt, dass dies unsere Testphasen verbessern wird. Normalerweise musst du dann nur noch auf einen Knopf klicken, um das Testbild zu aktualisieren!^^ Ich bin total begeistert, wir betreten eine neue Ära.

Meine aktuelle Entwicklung funktioniert, sowohl in der Cloud als auch lokal. Sie bringt allerdings einige Einschränkungen mit sich, aber wir kommen damit klar.

Ein großer Rückschritt, zumindest vorerst, bei Tuya: Die automatische Erstellung von GitHub-Issues geht verloren. Aber ich bin überzeugt, dass wir eine Lösung finden werden. ^^

Ich hoffe, das ist für dich in Ordnung, aber bedenke, dass alle Fortschritte, die wir gemacht haben, und die gewonnenen Erfahrungen ultra nützlich für die Gestaltung der externen Integration sind. ^^

:heart_eyes: :heart_eyes:

Ich habe es gesehen! Und los geht’s!

Die Entwicklung dieser Arbeitsweise in Gladys scheint mir eine ausgezeichnete Idee!

Das war cool, aber es muss ersetzbar sein. Wenn wir vorschlagen, die Funktionen der Geräte, die der Benutzer-Server kopiert, in eine Grundvorlage einzufügen, die ihm durch Klicken auf einen Link erstellt wird, sollte das als Funktionsweise akzeptabel sein. Jedenfalls bedeutet dies, dass der Benutzer ein GitHub-Konto haben muss, was nicht oft der Fall ist.

Übrigens, sollte der Post im GitHub von Gladys oder der Integration erfolgen?

Ich bin natürlich immer noch bereit, Tests durchzuführen!

Der Integration :wink:

Also @GBoulvin, wenn du Lust hast, das Bild von Pierre-Gilles für die externen Integrationen zu starten und zu testen, kannst du das jederzeit für einen neuen Testlauf machen ^^

Claude Fable und ich arbeiten an der Integration von PR7 (LSC-Anschlüsse) in die externe Tuya-Integration!! Und nur du kannst das testen ^^

PR9 (Klimaanlagen) ist bereits integriert. PR8 (Thermostate) ist in Arbeit. Danach kommen wir zur Klingel ^^ Schon jetzt!

EDIT: PR8 integriert, Release 1.3.0 veröffentlicht => Package gladys-tuya · GitHub

:tada: Die externe Integration gladys-tuya geht in v1.5.0! Package gladys-tuya · GitHub

Kleine Zusammenfassung dessen, was die Integration heute alles enthält, für alle, die neu dabei sind :backhand_index_pointing_down:

Die verwalteten Geräte

:electric_plug: Intelligente Steckdosen (inklusive LSC FR mit Verbrauchsmessung)
:high_voltage: Energiemesser (auch dreiphasig)
:snowflake: Klimaanlagen (Ein/Aus, Modus, Solltemperatur, Temperatur)
:fire: Thermostat mit Vorlauf (inklusive Konyks eCosy): Modus, Solltemperatur, Temperatur, Kindersicherung, Verbrauch…
:light_bulb: Und die Basics: Schalter, Lichter, Rollläden

Cloud UND lokal, zur Auswahl

Jedes Gerät zeigt ein „Local“ oder „Cloud“-Label an, um zu zeigen, wie es kommuniziert. Ein einfacher „Lokale Verbindung bevorzugen“-Button lässt Sie entscheiden: lokal ist schneller und funktioniert sogar ohne Internet, mit automatischem Fallback auf die Cloud, falls nötig.

Sofortige Statusrückmeldung :high_voltage: (der große Brocken)

Kein Warten auf das Aktualisieren mehr: Wenn Sie ein Gerät einschalten (physisch, über die Tuya-App oder eine andere Fernbedienung), wird der Status in Gladys fast sofort aktualisiert, in beiden Modi:

Im lokalen Modus: Eine permanente Verbindung wird zu Ihren Netzwerkgeräten aufrechterhalten.
Im Cloud Modus: Über den Echtzeitdienst von Tuya, genannt Pulsar (optional aktivierbar, siehe unten).

Komfort im Alltag

:magnifying_glass_tilted_right: Automatische Erkennung von Geräten, mit manueller lokaler Erkennung (per IP) für diejenigen, die das Netzwerk nicht allein findet
:link: Cloud-Verbindungsstatus wird klar angezeigt (mit Grund bei Problemen)
:stop_sign: Button zum manuellen Trennen/Wiederverbinden mit der Cloud
:counterclockwise_arrows_button: Integration-Updates mit einem Klick, ohne Neuinstallation

Zum Thema Pulsar (Echtzeit-Cloud-Rückmeldung)

Das ist eine Option, die aktiviert werden muss, wenn Sie Geräte haben, die nicht lokal sind. Zwei kleine Schritte: „Message Service“ auf Ihrem Tuya IoT-Projekt aktivieren, dann die Option in der Integrationskonfiguration aktivieren. Eine detaillierte Anleitung wird dazu folgen. Hinweis: Einige Geräte melden alles sofort zurück, andere nur einen Teil — das hängt davon ab, was das Gerät selbst an die Cloud sendet.

Alles ist stabil und läuft kontinuierlich auf meinem Teststand (10 Geräte). Viel Spaß beim Testen und Feedback ist willkommen! :raising_hands:

ghcr.io/terdious/gladys-tuya:1.5.0

Erster Test!

Zuerst dachte ich, man müsste sich die Docker-Links suchen und merken, um eine Erweiterung zu installieren, aber… Das ist nicht einmal nötig, denn sie sind bereits aufgelistet!

Also, Installation mit einem einfachen Klick, super!

Dann, auf der Startseite (Geräte UND Entdeckung), fehlt erneut die Einladung, zur Seite « Konfiguration » zu gehen, beim ersten Mal. Oder könnte man beim ersten Mal direkt auf dieser Seite landen?

Auf der Konfigurationsseite muss die Erklärung, wie man ein Konto erstellt, wieder hinzugefügt werden.

Nach der Konfiguration deutet die Nachricht « Konfiguration gespeichert » nicht mehr darauf hin, dass die Verbindung gut ist. Kann man das hinzufügen?

Auf der Scan-Seite habe ich kein Zeichen für laufende Arbeit gesehen und dachte, es wäre nicht in Ordnung, aber ein paar Sekunden später, bingo! Die beiden Steckdosen und der Smart Meter funktionieren!

Aber um auf lokal zu wechseln, kein Scan? Trotzdem, im Tab « Protokolle » sieht man deutlich:

[2026-07-22T18:35:11.469Z] [INFO] [tuya] [Tuya][localScan] Found device bf0e59548489fcb4ea62of ip=192.168.1.205 version=3.3
[2026-07-22T18:35:11.469Z] [INFO] [tuya] [Tuya][localScan] Found device bf1d9d0b6ed2b5755fkt24 ip=192.168.1.42 version=3.4
[2026-07-22T18:35:11.470Z] [INFO] [tuya] [Tuya][localScan] Found device bf85d2ce4746ff3ebeifas ip=192.168.1.203 version=3.3

Tatsache ist, ich verstehe nicht ganz. Das Gerät wechselt automatisch in den lokalen Modus und geht dann wieder in die Cloud, wenn der Poll zu langsam ist? Ich habe gesehen, wie eines zwischen beiden hin und her wechselt, aber es ist unklar… Und es ist unmöglich, manuell einfach in den lokalen Modus zu wechseln.

Aber in der Cloud läuft es!

Bearbeitung: von den drei aufgelisteten Geräten ist eines eine Steckdose, das andere eine Kamera, das dritte die Klingel

Bearbeitung 2: Nach der Suche habe ich herausgefunden, dass man den lokalen Modus manuell einstellen kann, und es funktioniert!

Du hast recht, ich kümmere mich darum.

Teil 1: Routing nach der Installation: Nach der Installation wird nun direkt zum Tab Konfiguration weitergeleitet, sobald das Manifest ein config_schema deklariert (Kommunikationsintegrationen taten dies bereits). Eine Integration ohne Konfiguration landet weiterhin bei Geräte.

Teil 2: Leere Zustände: Wenn die Liste leer ist und das Manifest ein config_schema hat, wird eine Einladung mit einem klickbaren Link zum Konfigurationstab unter der bestehenden Nachricht angezeigt:

  • Geräte: « Wenn Sie diese Integration gerade installiert haben, beginnen Sie mit der Angabe im Tab Konfiguration, und starten Sie dann eine Entdeckung. »
  • Entdeckung: « Nichts gefunden? Überprüfen Sie, ob die Integration im Tab Konfiguration korrekt konfiguriert ist, und starten Sie dann einen neuen Scan. »

Hallo @GBoulvin,

Nach den Ergänzungen von Pierre-Gilles sind die meisten deiner Rückmeldungen behandelt :rocket:



Also:

  • Kannst du mir bestätigen, dass die Anweisungen jetzt ausreichend sind und die Dokumentation klar ist?
  • Du bestätigst mir, dass alle deine Geräte, die unterstützt werden sollten, erkannt werden und alle Funktionen haben? Denn ich dachte, du hättest:
    • Eine Steckdose LSC Smart Power Plug, die in der Core-Integration nicht vollständig unterstützt wurde, aber die wir in der Core-Dev-Integration getestet haben und die jetzt vollständig in der Test-Integration unterstützt werden sollte… Ist das der Fall?
    • Ein Smart Meter, der funktioniert hat… Aber der nicht sichtbar ist, soweit ich das verstehe, weil du nur 3 Geräte siehst?
    • Eine Kamera LSC PTZ Camera => Ah, sehr interessant! Gerätetyp, der auf der Netatmo-Integration funktioniert, also sollten wir ihn jetzt integrieren können ^^ Du kannst mir zeigen, was du hast (Entdeckung als Bild + falls möglich den entsprechenden Objekt in den DevTools des Browsers kopieren (Registerkarte Netzwerk / Anfrage Discovered_device / Registerkarte Vorschau und das richtige Gerät finden :slight_smile: )
    • Klingel Wifi video doorbell => Bisher nicht injiziert ^^

Nochmals vielen Dank an dich!

Hallo!

Falls es hilfreich ist, hier ist das vollständige Log der Integration:

[2026-08-01T05:46:16.640Z] [INFO] Starte die Tuya-Integration...
[2026-08-01T05:46:16.841Z] [INFO] [gladys-sdk] verbunden mit Gladys (http://172.30.0.1:80)
[2026-08-01T05:46:16.841Z] [INFO] WebSocket verbunden mit Gladys
[2026-08-01T05:46:16.851Z] [WARN] Tuya ist noch nicht konfiguriert: Füllen Sie die Integrationseinstellungen in Gladys aus
[2026-08-01T05:46:16.854Z] [WARN] Tuya-Erkennung übersprungen (status=not_initialized)
[2026-08-01T05:48:24.639Z] [INFO] onConfigUpdated -> neue Konfiguration empfangen
[2026-08-01T05:48:24.640Z] [INFO] [tuya] Trenne Verbindung zu Tuya... (manual=false)
[2026-08-01T05:48:24.641Z] [INFO] [tuya] Verbinde mit Tuya...
[2026-08-01T05:48:24.941Z] [INFO] [tuya] Verbunden mit Tuya
[2026-08-01T05:48:25.088Z] [INFO] [tuya] 6 Tuya-Geräte gefunden
[2026-08-01T05:48:25.363Z] [INFO] [tuya] [Tuya][localScan] Starte vermittelte UDP-Broadcast-Scan für 10s
[2026-08-01T05:48:31.375Z] [INFO] onScanRequest -> Erkennung von Tuya-Geräten
[2026-08-01T05:48:35.406Z] [INFO] [tuya] [Tuya][localScan] Gerät bf1d9d0b6ed2b5755fkt24 gefunden ip=192.168.1.42 version=3.4
[2026-08-01T05:48:35.406Z] [INFO] [tuya] [Tuya][localScan] Gerät bf9313bc9aa50670d9wf7x gefunden ip=192.168.1.182 version=3.3
[2026-08-01T05:48:35.406Z] [INFO] [tuya] [Tuya][localScan] Gerät bf0e59548489fcb4ea62of gefunden ip=192.168.1.205 version=3.3
[2026-08-01T05:48:35.407Z] [INFO] [tuya] [Tuya][localScan] Gerät bf85d2ce4746ff3ebeifas gefunden ip=192.168.1.203 version=3.3
[2026-08-01T05:48:35.408Z] [INFO] [tuya] [Tuya][localScan] Scan abgeschlossen. 4 Geräte gefunden.
[2026-08-01T05:48:35.412Z] [WARN] [tuya] Tuya-Funktion mit dem Code "basic_indicator" wird nicht verwaltet
[2026-08-01T05:48:35.412Z] [WARN] [tuya] Tuya-Funktion mit dem Code "doorbell_active" wird nicht verwaltet
[2026-08-01T05:48:35.412Z] [WARN] [tuya] Tuya-Funktion mit dem Code "doorbell_pic" wird nicht verwaltet
[2026-08-01T05:48:35.412Z] [WARN] [tuya] Tuya-Funktion mit dem Code "basic_device_volume" wird nicht verwaltet
[2026-08-01T05:48:35.413Z] [WARN] [tuya] Tuya-Funktion mit dem Code "fault" wird nicht verwaltet
[2026-08-01T05:48:35.415Z] [WARN] [tuya] Tuya-Funktion mit dem Code "basic_anti_flicker" wird nicht verwaltet
[2026-08-01T05:48:35.416Z] [WARN] [tuya] Tuya-Funktion mit dem Code "initiative_message" wird nicht verwaltet
[2026-08-01T05:49:05.706Z] [INFO] onDeviceCreated <- ext:ext-dev-tuya:device:bf9313bc9aa50670d9wf7x
[2026-08-01T05:49:05.861Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf9313bc9aa50670d9wf7x verbunden (192.168.1.182, 3.3)
[2026-08-01T05:49:09.345Z] [INFO] [tuya] [Tuya][poll] Gerät=bf9313bc9aa50670d9wf7x angefordert=local has_local=true mode=cloud strategy=legacy features=7 local_handled=0 local_changed=0 cloud_handled=6 cloud_changed=6 cloud_missing=0 fallback=local_poll_failed
[2026-08-01T05:49:11.605Z] [INFO] onDeviceCreated <- ext:ext-dev-tuya:device:bf85d2ce4746ff3ebeifas
[2026-08-01T05:49:11.622Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T05:49:12.714Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf9313bc9aa50670d9wf7x verbunden (192.168.1.182, 3.3)
[2026-08-01T05:49:14.842Z] [INFO] onDeviceCreated <- ext:ext-dev-tuya:device:bf0e59548489fcb4ea62of
[2026-08-01T05:49:14.909Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T05:49:15.201Z] [INFO] [tuya] [Tuya][poll] Gerät=bf85d2ce4746ff3ebeifas angefordert=local has_local=true mode=cloud strategy=legacy features=7 local_handled=0 local_changed=0 cloud_handled=6 cloud_changed=6 cloud_missing=0 fallback=local_poll_failed
[2026-08-01T05:49:17.552Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T05:49:17.988Z] [INFO] [tuya] [Tuya][poll] Gerät=bf0e59548489fcb4ea62of angefordert=local has_local=true mode=cloud strategy=legacy features=3 local_handled=0 local_changed=0 cloud_handled=3 cloud_changed=3 cloud_missing=0 fallback=local_poll_failed
[2026-08-01T05:49:20.715Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf9313bc9aa50670d9wf7x verbunden (192.168.1.182, 3.3)
[2026-08-01T05:49:21.851Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T05:49:23.718Z] [INFO] [tuya] [Tuya][poll] Gerät=bf9313bc9aa50670d9wf7x lokal geparkt 300s nach 3 Fehlschlägen (Local poll timeout) -> cloud
[2026-08-01T05:49:27.558Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T05:49:30.560Z] [INFO] [tuya] [Tuya][poll] Gerät=bf0e59548489fcb4ea62of lokal geparkt 300s nach 3 Fehlschlägen (Local poll timeout) -> cloud
[2026-08-01T05:49:30.714Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T05:49:33.717Z] [INFO] [tuya] [Tuya][poll] Gerät=bf85d2ce4746ff3ebeifas lokal geparkt 300s nach 3 Fehlschlägen (Local poll timeout) -> cloud
[2026-08-01T05:54:27.822Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf9313bc9aa50670d9wf7x verbunden (192.168.1.182, 3.3)
[2026-08-01T05:54:37.620Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T05:54:40.753Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T05:59:37.793Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf9313bc9aa50670d9wf7x verbunden (192.168.1.182, 3.3)
[2026-08-01T05:59:47.614Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T05:59:50.776Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T06:04:48.177Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf9313bc9aa50670d9wf7x verbunden (192.168.1.182, 3.3)
[2026-08-01T06:04:57.613Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T06:05:00.752Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T06:09:57.634Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf9313bc9aa50670d9wf7x verbunden (192.168.1.182, 3.3)
[2026-08-01T06:10:07.422Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T06:10:10.647Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T06:13:35.436Z] [INFO] onAction detect_protocol <- Gerät=caméra carport ip=192.168.1.203
[2026-08-01T06:13:35.437Z] [INFO] [tuya] [Tuya][detectProtocol] Gerät=bf85d2ce4746ff3ebeifas versuche 3.3 bei 192.168.1.203
[2026-08-01T06:13:40.438Z] [WARN] [tuya] [Tuya][localPoll] fehlgeschlagen für Gerät=bf85d2ce4746ff3ebeifas Fehler: Local poll timeout
    at Timeout.<anonymous> (file:///app/src/tuya/local/tuya.localPoll.js:110:47)
    at listOnTimeout (node:internal/timers:605:17)
    at process.processTimers (node:internal/timers:541:7)
[2026-08-01T06:13:40.439Z] [INFO] [tuya] [Tuya][detectProtocol] device=bf85d2ce4746ff3ebeifas trying 3.4 at 192.168.1.203
[2026-08-01T06:13:40.548Z] [INFO] [tuya] [Tuya][localPoll] socket error for device=bf85d2ce4746ff3ebeifas: Localer Socket-Fehler: HMAC-Fehler: erwartet da3b7d1ae2d6dbc6bf1279657789828004b18ef7fa6f49ad91c8b2991c9960d0, war 29a73a8f5cd185beb14cb4f8f20f4c51fe86f8d64ccf43382625de380a81825c. ... (abgeschnitten)
[2026-08-01T06:13:40.549Z] [INFO] [tuya] [Tuya][localPoll] letzter Socket-Fehler für device=bf85d2ce4746ff3ebeifas: Localer Socket-Fehler: HMAC-Fehler: erwartet da3b7d1ae2d6dbc6bf1279657789828004b18ef7fa6f49ad91c8b2991c9960d0, war 29a73a8f5cd185beb14cb4f8f20f4c51fe86f8d64ccf43382625de380a81825c. ... (abgeschnitten)
[2026-08-01T06:13:40.549Z] [WARN] [tuya] [Tuya][localPoll] fehlgeschlagen für device=bf85d2ce4746ff3ebeifas Error: Localer Socket-Fehler: HMAC-Fehler: erwartet da3b7d1ae2d6dbc6bf1279657789828004b18ef7fa6f49ad91c8b2991c9960d0, war 29a73a8f5cd185beb14cb4f8f20f4c51fe86f8d64ccf43382625de380a81825c. ... (abgeschnitten)
    at TuyaDevice.errorListener (file:///app/src/tuya/local/tuya.localPoll.js:114:20)
    at Object.onceWrapper (node:events:631:26)
    at TuyaDevice.emit (node:events:521:24)
    at Socket.<anonymous> (/app/node_modules/@demirdeniz/tuyapi-newgen/index.js:707:14)
    at Socket.emit (node:events:509:28)
    at addChunk (node:internal/streams/readable:563:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:514:3)
    at Readable.push (node:internal/streams/readable:394:5)
    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)
[2026-08-01T06:13:40.551Z] [INFO] [tuya] [Tuya][detectProtocol] Gerät=bf85d2ce4746ff3ebeifas versucht 3.5 bei 192.168.1.203
[2026-08-01T06:13:40.783Z] [INFO] [tuya] [Tuya][localPoll] Socket-Fehler für Gerät=bf85d2ce4746ff3ebeifas: Lokales Socket-Fehler
[2026-08-01T06:13:55.556Z] [WARN] [tuya] [Tuya][localPoll] fehlgeschlagen für Gerät=bf85d2ce4746ff3ebeifas Fehler: Lokales Polling-Timeout
    at Timeout.<anonymous> (file:///app/src/tuya/local/tuya.localPoll.js:110:47)
    at listOnTimeout (node:internal/timers:605:17)
    at process.processTimers (node:internal/timers:541:7)
[2026-08-01T06:13:55.557Z] [INFO] [tuya] [Tuya][detectProtocol] Gerät=bf85d2ce4746ff3ebeifas versucht 3.1 bei 192.168.1.203
[2026-08-01T06:13:55.618Z] [WARN] [tuya] [Tuya][localPoll] fehlgeschlagen für Gerät=bf85d2ce4746ff3ebeifas Fehler: Ungültige lokale Polling-Antwort: Datenanalysefehler
    at TuyaHandler.localPoll (file:///app/src/tuya/local/tuya.localPoll.js:151:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
    at async TuyaHandler.detectProtocol (file:///app/src/tuya/local/tuya.detectProtocol.js:50:22)
    at async file:///app/index.js:221:23
    at async GladysIntegration._runCommand (/app/node_modules/@gladysassistant/integration-sdk/lib/gladys-integration.js:1141:22)
    at async GladysIntegration._handleMessage (/app/node_modules/@gladysassistant/integration-sdk/lib/gladys-integration.js:1079:9)
[2026-08-01T06:14:21.630Z] [INFO] onAction detect_protocol <- Gerät=caméra carport ip=192.168.1.203
[2026-08-01T06:14:21.631Z] [INFO] [tuya] [Tuya][detectProtocol] Gerät=bf85d2ce4746ff3ebeifas versucht 3.3 bei 192.168.1.203
[2026-08-01T06:14:26.636Z] [WARN] [tuya] [Tuya][localPoll] fehlgeschlagen für Gerät=bf85d2ce4746ff3ebeifas Fehler: Lokales Polling-Timeout
    at Timeout.<anonymous> (file:///app/src/tuya/local/tuya.localPoll.js:110:47)
    at listOnTimeout (node:internal/timers:605:17)
[2026-08-01T06:14:26.637Z] [INFO] [tuya] [Tuya][detectProtocol] Gerät=bf85d2ce4746ff3ebeifas versucht 3.4 bei 192.168.1.203
    at process.processTimers (node:internal/timers:541:7)
[2026-08-01T06:14:26.693Z] [WARN] [tuya] [Tuya][localPoll] fehlgeschlagen für Gerät=bf85d2ce4746ff3ebeifas Fehler: Lokales Socket-Fehler: HMAC-Fehler: erwartet da3b7d1ae2d6dbc6bf1279657789828004b18ef7fa6f49ad91c8b2991c9960d0, war 29a73a8f5cd185beb14cb4f8f20f4c51fe86f8d64ccf43382625de380a81825c. ... (abgeschnitten)
    at TuyaDevice.errorListener (file:///app/src/tuya/local/tuya.localPoll.js:114:20)
    at Object.onceWrapper (node:events:631:26)
    at TuyaDevice.emit (node:events:521:24)
    at Socket.<anonymous> (/app/node_modules/@demirdeniz/tuyapi-newgen/index.js:707:14)
    at Socket.emit (node:events:509:28)
    at addChunk (node:internal/streams/readable:563:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:514:3)
    at Readable.push (node:internal/streams/readable:394:5)
    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)
[2026-08-01T06:14:26.691Z] [INFO] [tuya] [Tuya][localPoll] Socket-Fehler für Gerät=bf85d2ce4746ff3ebeifas: Lokales Socket-Fehler: HMAC-Fehler: erwartet da3b7d1ae2d6dbc6bf1279657789828004b18ef7fa6f49ad91c8b2991c9960d0, war 29a73a8f5cd185beb14cb4f8f20f4c51fe86f8d64ccf43382625de380a81825c. ... (abgeschnitten)
[2026-08-01T06:14:26.693Z] [INFO] [tuya] [Tuya][localPoll] letzter Socket-Fehler für Gerät=bf85d2ce4746ff3ebeifas: Lokales Socket-Fehler: HMAC-Fehler: erwartet da3b7d1ae2d6dbc6bf1279657789828004b18ef7fa6f49ad91c8b2991c9960d0, war 29a73a8f5cd185beb14cb4f8f20f4c51fe86f8d64ccf43382625de380a81825c. ... (abgeschnitten)
[2026-08-01T06:14:26.693Z] [INFO] [tuya] [Tuya][detectProtocol] Gerät=bf85d2ce4746ff3ebeifas versucht 3.5 bei 192.168.1.203
[2026-08-01T06:14:26.754Z] [INFO] [tuya] [Tuya][localPoll] Socket-Fehler für Gerät=bf85d2ce4746ff3ebeifas: Lokales Socket-Fehler: Fehler vom Socket: read ECONNRESET
[2026-08-01T06:14:26.918Z] [INFO] [tuya] [Tuya][localPoll] Socket-Fehler für Gerät=bf85d2ce4746ff3ebeifas: Lokales Socket-Fehler
[2026-08-01T06:14:36.758Z] [INFO] [tuya] [Tuya][localPoll] letzter Socket-Fehler für Gerät=bf85d2ce4746ff3ebeifas: Lokales Socket-Fehler: Fehler vom Socket: read ECONNRESET
[2026-08-01T06:14:36.758Z] [WARN] [tuya] [Tuya][localPoll] fehlgeschlagen für Gerät=bf85d2ce4746ff3ebeifas Fehler: Lokales Polling-Timeout
    at Timeout.<anonymous> (file:///app/src/tuya/local/tuya.localPoll.js:110:47)
    at listOnTimeout (node:internal/timers:605:17)
    at process.processTimers (node:internal/timers:541:7)
[2026-08-01T06:14:36.759Z] [INFO] [tuya] [Tuya][detectProtocol] Gerät=bf85d2ce4746ff3ebeifas versucht 3.1 bei 192.168.1.203
[2026-08-01T06:14:36.818Z] [INFO] [tuya] [Tuya][localPoll] Socket-Fehler für Gerät=bf85d2ce4746ff3ebeifas: Lokales Socket-Fehler: Fehler vom Socket: read ECONNRESET
[2026-08-01T06:14:36.819Z] [INFO] [tuya] [Tuya][localPoll] letzter Socket-Fehler für Gerät=bf85d2ce4746ff3ebeifas: Lokales Socket-Fehler: Fehler vom Socket: read ECONNRESET
[2026-08-01T06:14:36.819Z] [WARN] [tuya] [Tuya][localPoll] fehlgeschlagen für Gerät=bf85d2ce4746ff3ebeifas Fehler: Lokales Socket-Fehler: Fehler vom Socket: read ECONNRESET
    at TuyaDevice.errorListener (file:///app/src/tuya/local/tuya.localPoll.js:114:20)
    at Object.onceWrapper (node:events:631:26)
    at TuyaDevice.emit (node:events:521:24)
    at Socket.<anonymous> (/app/node_modules/tuyapi/index.js:688:12)
    at Socket.emit (node:events:509:28)
    at emitErrorNT (node:internal/streams/destroy:170:8)
    at emitErrorCloseNT (node:internal/streams/destroy:129:3)
    at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
[2026-08-01T06:15:17.464Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T06:15:20.606Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T06:16:28.156Z] [INFO] onAction detect_protocol <- Gerät=Visiophone WiFi ip=192.168.1.205
[2026-08-01T06:16:28.156Z] [INFO] [tuya] [Tuya][detectProtocol] Gerät=bf0e59548489fcb4ea62of versucht 3.3 bei 192.168.1.205
[2026-08-01T06:16:33.158Z] [WARN] [tuya] [Tuya][localPoll] fehlgeschlagen für Gerät=bf0e59548489fcb4ea62of Fehler: Lokales Polling-Timeout
    at Timeout.<anonymous> (file:///app/src/tuya/local/tuya.localPoll.js:110:47)
    at listOnTimeout (node:internal/timers:605:17)
    at process.processTimers (node:internal/timers:541:7)
[2026-08-01T06:16:33.159Z] [INFO] [tuya] [Tuya][detectProtocol] Gerät=bf0e59548489fcb4ea62of versucht 3.4 bei 192.168.1.205
[2026-08-01T06:16:33.171Z] [INFO] [tuya] [Tuya][localPoll] Socket-Fehler für Gerät=bf0e59548489fcb4ea62of: Lokales Socket-Fehler
[2026-08-01T06:16:33.192Z] [INFO] [tuya] [Tuya][localPoll] Socket-Fehler für Gerät=bf0e59548489fcb4ea62of: Lokales Socket-Fehler: HMAC-Fehler: erwartet 3edb24fc0923355ea5add79c0834f05124461cccbbd79c7be7fa5354097d58b0, war 6030b642613fcf3f6ed2000ee4ff55fd083c1338270573b621614548cef2dc73. ... (abgeschnitten)
[2026-08-01T06:16:33.193Z] [INFO] [tuya] [Tuya][localPoll] letzter Socket-Fehler für Gerät=bf0e59548489fcb4ea62of: Lokales Socket-Fehler: HMAC-Fehler: erwartet 3edb24fc0923355ea5add79c0834f05124461cccbbd79c7be7fa5354097d58b0, war 6030b642613fcf3f6ed2000ee4ff55fd083c1338270573b621614548cef2dc73. ... (abgeschnitten)
[2026-08-01T06:16:33.193Z] [WARN] [tuya] [Tuya][localPoll] fehlgeschlagen für Gerät=bf0e59548489fcb4ea62of Fehler: Lokales Socket-Fehler: HMAC-Fehler: erwartet 3edb24fc0923355ea5add79c0834f05124461cccbbd79c7be7fa5354097d58b0, war 6030b642613fcf3f6ed2000ee4ff55fd083c1338270573b621614548cef2dc73.. (abgeschnitten)
    at TuyaDevice.errorListener (file:///app/src/tuya/local/tuya.localPoll.js:114:20)
    at Object.onceWrapper (node:events:631:26)
    at TuyaDevice.emit (node:events:521:24)
    at Socket.<anonymous> (/app/node_modules/@demirdeniz/tuyapi-newgen/index.js:707:14)
    at Socket.emit (node:events:509:28)
    at addChunk (node:internal/streams/readable:563:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:514:3)
    at Readable.push (node:internal/streams/readable:394:5)
    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)
[2026-08-01T06:16:33.194Z] [INFO] [tuya] [Tuya][detectProtocol] device=bf0e59548489fcb4ea62of trying 3.5 at 192.168.1.205
[2026-08-01T06:16:48.196Z] [WARN] [tuya] [Tuya][localPoll] failed for device=bf0e59548489fcb4ea62of Error: Local poll timeout
    at Timeout.<anonymous> (file:///app/src/tuya/local/tuya.localPoll.js:110:47)
    at listOnTimeout (node:internal/timers:605:17)
    at process.processTimers (node:internal/timers:541:7)
[2026-08-01T06:16:48.197Z] [INFO] [tuya] [Tuya][detectProtocol] device=bf0e59548489fcb4ea62of trying 3.1 at 192.168.1.205
[2026-08-01T06:16:48.218Z] [WARN] [tuya] [Tuya][localPoll] failed for device=bf0e59548489fcb4ea62of Error: Ungültige lokale Poll-Antwort: Fehler beim Parsen der Daten
    at TuyaHandler.localPoll (file:///app/src/tuya/local/tuya.localPoll.js:151:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
    at async TuyaHandler.detectProtocol (file:///app/src/tuya/local/tuya.detectProtocol.js:50:22)
    at async file:///app/index.js:221:23
    at async GladysIntegration._runCommand (/app/node_modules/@gladysassistant/integration-sdk/lib/gladys-integration.js:1141:22)
    at async GladysIntegration._handleMessage (/app/node_modules/@gladysassistant/integration-sdk/lib/gladys-integration.js:1079:9)

Die erkannten Funktionen (eine wurde alleine lokal erkannt, die anderen beiden, siehe unten):

Und die unterstützten Funktionen:

Die Kamerageräte:

Die PTZ DualBand

{
    "name": "Caméra carport",
    "selector": "camera-carport-bf85d2ce4746ff3ebeifas",
    "features": [
        {
            "external_id": "ext:ext-dev-tuya:device:bf85d2ce4746ff3ebeifas:basic_flip",
            "selector": "camera-carport-bf85d2ce4746ff3ebeifas-basic-flip",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Image flip",
            "category": "switch",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf85d2ce4746ff3ebeifas:basic_private",
            "selector": "camera-carport-bf85d2ce4746ff3ebeifas-basic-private",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Privacy mode",
            "category": "switch",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf85d2ce4746ff3ebeifas:motion_switch",
            "selector": "camera-carport-bf85d2ce4746ff3ebeifas-motion-switch",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Motion detection",
            "category": "switch",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf85d2ce4746ff3ebeifas:record_switch",
            "selector": "camera-carport-bf85d2ce4746ff3ebeifas-record-switch",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Recording",
            "category": "switch",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf85d2ce4746ff3ebeifas:siren_switch",
            "selector": "camera-carport-bf85d2ce4746ff3ebeifas-siren-switch",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Siren",
            "category": "siren",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf85d2ce4746ff3ebeifas:motion_tracking",
            "selector": "camera-carport-bf85d2ce4746ff3ebeifas-motion-tracking",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Motion tracking",
            "category": "switch",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf85d2ce4746ff3ebeifas:humanoid_filter",
            "selector": "camera-carport-bf85d2ce4746ff3ebeifas-humanoid-filter",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Human detection filter",
            "category": "switch",
            "type": "binary"
        }
    ],
    "device_type": "camera",
    "external_id": "ext:ext-dev-tuya:device:bf85d2ce4746ff3ebeifas",
    "model": "LSC PTZ Camera Dualband",
    "product_id": "rogprwflblumx2co",
    "product_key": "rogprwflblumx2co",
    "poll_frequency": 10000,
    "should_poll": true,
    "params": [
        {
            "name": "DEVICE_ID",
            "value": "bf85d2ce4746ff3ebeifas"
        },
        {
            "name": "LOCAL_KEY",
            "value": "{_)U4X/l{l=T$.u["
        },
        {
            "name": "IP_ADDRESS",
            "value": "192.168.1.203"
        },
        {
            "name": "CLOUD_IP",
            "value": "62.235.111.222"
        },
        {
            "name": "LOCAL_OVERRIDE",
            "value": true
        },
        {
            "name": "PROTOCOL_VERSION",
            "value": "3.3"
        },
        {
            "name": "PRODUCT_ID",
            "value": "rogprwflblumx2co"
        },
        {
            "name": "PRODUCT_KEY",
            "value": "rogprwflblumx2co"
        },
        {
            "name": "CLOUD_READ_STRATEGY",
            "value": "legacy"
        },
        {
            "name": "DEVICE_TYPE",
            "value": "camera"
        }
    ],
    "online": true,
    "service_id": "252da07d-4027-45f0-8eff-1077631eddf0",
    "created": true,
    "structure_changed": false
}

Die PTZ 2.4GHz

{
    "name": "Kamera Eingang",
    "selector": "camera-entree-bf9313bc9aa50670d9wf7x",
    "features": [
        {
            "external_id": "ext:ext-dev-tuya:device:bf9313bc9aa50670d9wf7x:basic_flip",
            "selector": "camera-entree-bf9313bc9aa50670d9wf7x-basic-flip",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Bild umdrehen",
            "category": "switch",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf9313bc9aa50670d9wf7x:basic_private",
            "selector": "camera-entree-bf9313bc9aa50670d9wf7x-basic-private",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Privacy-Modus",
            "category": "switch",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf9313bc9aa50670d9wf7x:motion_switch",
            "selector": "camera-entree-bf9313bc9aa50670d9wf7x-motion-switch",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Bewegungserkennung",
            "category": "switch",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf9313bc9aa50670d9wf7x:record_switch",
            "selector": "camera-entree-bf9313bc9aa50670d9wf7x-record-switch",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Aufnahme",
            "category": "switch",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf9313bc9aa50670d9wf7x:siren_switch",
            "selector": "camera-entree-bf9313bc9aa50670d9wf7x-siren-switch",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Sirene",
            "category": "siren",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf9313bc9aa50670d9wf7x:motion_tracking",
            "selector": "camera-entree-bf9313bc9aa50670d9wf7x-motion-tracking",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Bewegungsverfolgung",
            "category": "switch",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf9313bc9aa50670d9wf7x:humanoid_filter",
            "selector": "camera-entree-bf9313bc9aa50670d9wf7x-humanoid-filter",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Menschen-Erkennungsfilter",
            "category": "switch",
            "type": "binary"
        }
    ],
    "device_type": "camera",
    "external_id": "ext:ext-dev-tuya:device:bf9313bc9aa50670d9wf7x",
    "model": "LSC PTZ Kamera",
    "product_id": "n7h0m2x7i2yzol0p",
    "product_key": "n7h0m2x7i2yzol0p",
    "poll_frequency": 10000,
    "should_poll": true,
    "params": [
        {
            "name": "DEVICE_ID",
            "value": "bf9313bc9aa50670d9wf7x"
        },
        {
            "name": "LOCAL_KEY",
            "value": "Y)j!-K2PD3{8GtL."
        },
        {
            "name": "IP_ADDRESS",
            "value": "192.168.1.182"
        },
        {
            "name": "CLOUD_IP",
            "value": "81.11.140.113"
        },
        {
            "name": "LOCAL_OVERRIDE",
            "value": true
        },
        {
            "name": "PROTOCOL_VERSION",
            "value": "3.3"
        },
        {
            "name": "PRODUCT_ID",
            "value": "n7h0m2x7i2yzol0p"
        },
        {
            "name": "PRODUCT_KEY",
            "value": "n7h0m2x7i2yzol0p"
        },
        {
            "name": "CLOUD_READ_STRATEGY",
            "value": "legacy"
        },
        {
            "name": "DEVICE_TYPE",
            "value": "camera"
        }
    ],
    "online": true,
    "service_id": "252da07d-4027-45f0-8eff-1077631eddf0",
    "created": true,
    "structure_changed": false
}

Und die Gegensprechanlage (ja, ich weiß, du hast sie schon, aber…)

{
    "name": "WLAN-Gegensprechanlage",
    "selector": "visiophone-wifi-bf0e59548489fcb4ea62of",
    "features": [
        {
            "external_id": "ext:ext-dev-tuya:device:bf0e59548489fcb4ea62of:basic_flip",
            "selector": "visiophone-wifi-bf0e59548489fcb4ea62of-basic-flip",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Bild umdrehen",
            "category": "switch",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf0e59548489fcb4ea62of:motion_switch",
            "selector": "visiophone-wifi-bf0e59548489fcb4ea62of-motion-switch",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Bewegungserkennung",
            "category": "switch",
            "type": "binary"
        },
        {
            "external_id": "ext:ext-dev-tuya:device:bf0e59548489fcb4ea62of:record_switch",
            "selector": "visiophone-wifi-bf0e59548489fcb4ea62of-record-switch",
            "read_only": false,
            "has_feedback": true,
            "min": 0,
            "max": 1,
            "name": "Aufnahme",
            "category": "switch",
            "type": "binary"
        }
    ],
    "device_type": "camera",
    "external_id": "ext:ext-dev-tuya:device:bf0e59548489fcb4ea62of",
    "model": "WLAN-Videotürsprechanlage",
    "product_id": "i5e3a4qxcsthszin",
    "product_key": "i5e3a4qxcsthszin",
    "poll_frequency": 10000,
    "should_poll": true,
    "params": [
        {
            "name": "DEVICE_ID",
            "value": "bf0e59548489fcb4ea62of"
        },
        {
            "name": "LOCAL_KEY",
            "value": "Rza7;L{]Lv-31q'H"
        },
        {
            "name": "IP_ADDRESS",
            "value": "192.168.1.205"
        },
        {
            "name": "CLOUD_IP",
            "value": "62.235.111.222"
        },
        {
            "name": "LOCAL_OVERRIDE",
            "value": true
        },
        {
            "name": "PROTOCOL_VERSION",
            "value": "3.3"
        },
        {
            "name": "PRODUCT_ID",
            "value": "i5e3a4qxcsthszin"
        },
        {
            "name": "PRODUCT_KEY",
            "value": "i5e3a4qxcsthszin"
        },
        {
            "name": "CLOUD_READ_STRATEGY",
            "value": "legacy"
        },
        {
            "name": "DEVICE_TYPE",
            "value": "camera"
        }
    ],
    "online": true,
    "service_id": "252da07d-4027-45f0-8eff-1077631eddf0",
    "created": true,
    "structure_changed": false
}

Das sieht doch ganz gut aus, oder? Jedenfalls sind die erkannten Funktionen und Schalter nicht nur zur Dekoration da, sie funktionieren! (Der „Sirene“-Knopf verleiht dem „Alarm“-Teil von Gladys eine neue Dimension! Das war genau das, was mir für ein „echtes“ Gefühl fehlte.)

Ich denke, das entspricht deinen Anforderungen, aber zögere nicht, mich zu fragen, wenn ich etwas übersehen habe!

Trop bien :heart_eyes: :joy: !!

Wir schauen uns das an und sagen dir Bescheid!! Das ist so cool!! Nein, aber das ist echt verrückt!! Wir fühlen uns gerade wie Kinder mit all dem :joy: :joy:

Wir entdecken eine gewisse Freude neu ^^ Und Blockaden lösen sich, die nur durch Zeitmangel bestanden!!

Während ich das schreibe, kommt schon die Version v1.7.0 mit der Kamera ^^ :face_with_peeking_eye: :sweat_smile: :

Was der Test beweist

  • Erkennung perfekt : die 3 Geräte → device_type: camera, mit den Schaltern. Sie antworten (Cloud). Die Sirene, die den Gladys-Alarm versorgt = genau der gewünschte Effekt. :white_check_mark:
  • Der „abgestufte“ Macaron funktioniert perfekt : Kamera Eingang ist lokal geworden (sie schiebt ihre DPS über die persistente Session), während Kamera Carport und Visiophon Cloud mit orangefarbenem Punkt bleiben — lokal-fähig, aber auf Cloud zurückgefallen. Das ist genau das geplante Verhalten.

Die echte technische Erkenntnis (lokale Kamera)

Die Logs zeigen localSession connected bei allen 3, aber poll … fallback=local_poll_failed und dann Cloud-Parkplatz. Und detect_protocol scheitert bei allen Protokollen (3.4 = HMAC mismatch = falsches Protokoll; 3.3/3.5 = Timeout).
Übersetzung: Die TCP-Session öffnet sich, aber diese Kameras antworten nicht auf die lokale DPS get-Anfrage — einige schieben ihre Änderungen (→ Lokal), andere nicht (→ Cloud). Das ist ein Kameras-Firmware-Verhalten, kein Bug.

Fazit: Für die Kameras ist der Cloud der zuverlässige Transport; das Lokale bleibt ein opportunistisches Bonus. Nichts zu korrigieren.

Und jetzt setzt er die Arbeit, die in der Core-Integration an der Klingel gemacht wurde, um sie zu implementieren!!

@GBoulvin ! :folded_hands:

Dank deiner ultra-vollständigen Logs (das Visiophon-Objekt + das doorbell_pic) konnte ich das Visiophon direkt zurückportieren, basierend auf dem Core-Zweig tuya-diagnostics-doorbell-ring, den wir vorbereitet hatten. Neues Testimage verfügbar:

ghcr.io/terdious/gladys-tuya:dev-doorbell

Was ist neu

Dein Visiophon ist keine „Kamera mit 3 Toggles“ mehr: Es wird ein echtes video-doorbell-Typ mit:

  • :bell: Klingel (Button-Funktion) — löst aus, wenn geklingelt wird
  • :camera_with_flash: Snapshot (Kamera/Bild-Funktion) — das Foto des Drückens/Erkennens wird im Widget angezeigt
  • Bewegungserkennung, Aufnahme, Status-LED, Bildumkehr, Bildschirmanzeige (Cloud + lokal)

:warning: Snapshot bei Ereignissen, kein Live-Video. Tuya-Kameras bieten keinen stabilen lokalen RTSP — daher kein Live-Stream wie bei Netatmo. Das Bild aktualisiert sich bei jedem Klingeldruck / Bewegungsmeldung. Das ist eine Tuya-Grenze, nicht Gladys.

Wie testen

  1. Bereitstelle den Container mit dem Tag :dev-doorbell — und starte den Container komplett neu (wie beim letzten Mal :wink:).
  2. Force Update (um das Manifest zu aktualisieren).
  3. Der Visiophon-Typ ändert sich → Lösche ihn und entdecke ihn neu, damit er als video-doorbell neu erstellt wird.
  4. Pulsar muss aktiviert sein (Bild und Echtzeit-Klingelton laufen über die signierte URL ~60 s, die von Pulsar bereitgestellt wird).

Was ich gerne überprüft hätte

  • Wird das Visiophon als video-doorbell mit den 7 oben genannten Funktionen angezeigt?
  • :bell: Löst ein Klingeldruck das Klingel-Ereignis in Gladys aus (Button-Funktion / Verlauf)?
  • :camera_with_flash: Zeigt das Bild-Widget den Snapshot nach einem Druck / einer Bewegungsmeldung an?
  • Reagieren die Toggles (Bewegung, Aufnahme, LED, Umkehr, OSD) in der Cloud?

:magnifying_glass_tilted_right: Wenn du die Logs genauer untersuchen möchtest, filtere nach [Tuya][media]: Du solltest doorbell ring, snapshot published oder encrypted … not supported yet sehen (das movement_detect_pic ist manchmal verschlüsselt → normal, dass es ignoriert wird, das doorbell_pic ist jedoch unverschlüsselt).

[details=« Wurde absichtlich vorerst weggelassen »]

  • Die enum-Einstellungen (Nachtsicht, Empfindlichkeit, Aufnahmemodus): Noch kein „Auswahltyp“ veröffentlicht auf der Core-Seite (gleicher Stau wie die Lüftergeschwindigkeit der Klimaanlage).
  • Der Klingelton-Lautstärke und der PTZ sind die nächsten Inkremente.
  • Die PTZ-Kameras bleiben vom Typ camera (Steuerungen), unverändert.
    [/details]

:latest ist nicht betroffen — nichts ändert sich an deiner Hauptinstallation, solange es nicht validiert ist. Vielen Dank im Voraus für den Test! :rocket:

Jackpot!

Wenn man klingelt:

Die Schalter funktionieren und senden tatsächlich an die Cloud (sofortige Änderung in der App (ich habe ‹ Aufnahme › nicht getestet, da keine µSD-Karte drin ist)).

Allerdings hat die Bewegungserkennung noch keine Benachrichtigung oder Bild gesendet.

Der Log:

[2026-08-01T07:51:49.304Z] [INFO] Starte die Tuya-Integration...
[2026-08-01T07:51:49.505Z] [INFO] [gladys-sdk] verbunden mit Gladys (http://172.30.0.1:80)
[2026-08-01T07:51:49.505Z] [INFO] WebSocket verbunden mit Gladys
[2026-08-01T07:51:49.570Z] [INFO] [tuya] Verbindung zu Tuya wird hergestellt...
[2026-08-01T07:51:50.038Z] [INFO] [tuya] Verbunden mit Tuya
[2026-08-01T07:51:50.126Z] [INFO] [tuya] 6 Tuya-Geräte gefunden
[2026-08-01T07:51:50.271Z] [INFO] [tuya] [Tuya][pulsar] verbunden mit dem Tuya-Nachrichtendienst (Echtzeit-Cloud-Events)
[2026-08-01T07:51:50.915Z] [INFO] [tuya] [Tuya][localScan] Starte vermittelten UDP-Broadcast-Scan für 10s
[2026-08-01T07:52:00.943Z] [INFO] [tuya] [Tuya][localScan] Gerät bf0e59548489fcb4ea62of gefunden, ip=192.168.1.205 version=3.3
[2026-08-01T07:52:00.943Z] [INFO] [tuya] [Tuya][localScan] Gerät bf9313bc9aa50670d9wf7x gefunden, ip=192.168.1.182 version=3.3
[2026-08-01T07:52:00.944Z] [INFO] [tuya] [Tuya][localScan] Gerät bf85d2ce4746ff3ebeifas gefunden, ip=192.168.1.203 version=3.3
[2026-08-01T07:52:00.944Z] [INFO] [tuya] [Tuya][localScan] Gerät bf1d9d0b6ed2b5755fkt24 gefunden, ip=192.168.1.42 version=3.4
[2026-08-01T07:52:00.946Z] [INFO] [tuya] [Tuya][localScan] Scan abgeschlossen. 4 Gerät(e) gefunden.
[2026-08-01T07:52:00.953Z] [WARN] [tuya] Tuya-Funktion mit „fault“-Code wird nicht verwaltet
[2026-08-01T07:52:00.956Z] [WARN] [tuya] Tuya-Funktion mit „basic_anti_flicker“-Code wird nicht verwaltet
[2026-08-01T07:52:00.956Z] [WARN] [tuya] Tuya-Funktion mit „initiative_message“-Code wird nicht verwaltet
[2026-08-01T07:52:44.105Z] [INFO] onScanRequest -> Entdeckung von Tuya-Geräten
[2026-08-01T07:52:44.253Z] [INFO] [tuya] 6 Tuya-Geräte gefunden
[2026-08-01T07:52:44.477Z] [INFO] [tuya] [Tuya][localScan] Starte vermittelten UDP-Broadcast-Scan für 10s
[2026-08-01T07:52:54.499Z] [INFO] [tuya] [Tuya][localScan] Gerät bf85d2ce4746ff3ebeifas gefunden, ip=192.168.1.203 version=3.3
[2026-08-01T07:52:54.499Z] [INFO] [tuya] [Tuya][localScan] Gerät bf1d9d0b6ed2b5755fkt24 gefunden, ip=192.168.1.42 version=3.4
[2026-08-01T07:52:54.499Z] [INFO] [tuya] [Tuya][localScan] Gerät bf0e59548489fcb4ea62of gefunden, ip=192.168.1.205 version=3.3
[2026-08-01T07:52:54.499Z] [INFO] [tuya] [Tuya][localScan] Gerät bf9313bc9aa50670d9wf7x gefunden, ip=192.168.1.182 version=3.3
[2026-08-01T07:52:54.500Z] [INFO] [tuya] [Tuya][localScan] Scan abgeschlossen. 4 Gerät(e) gefunden.
[2026-08-01T07:54:32.899Z] [INFO] onDeviceCreated <- ext:ext-dev-tuya-2:device:bf85d2ce4746ff3ebeifas
[2026-08-01T07:54:32.915Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T07:54:36.079Z] [INFO] [tuya] [Tuya][poll] Gerät=bf85d2ce4746ff3ebeifas angefordert=lokal hat_lokal=true modus=cloud strategie=legacy features=7 lokal_bearbeitet=0 lokal_geändert=0 cloud_bearbeitet=6 cloud_geändert=6 cloud_fehlt=0 fallback=local_poll_failed
[2026-08-01T07:54:36.163Z] [INFO] onDeviceCreated <- ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of
[2026-08-01T07:54:36.187Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T07:54:37.905Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T07:54:38.380Z] [INFO] onDeviceCreated <- ext:ext-dev-tuya-2:device:bf9313bc9aa50670d9wf7x
[2026-08-01T07:54:38.474Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf9313bc9aa50670d9wf7x verbunden (192.168.1.182, 3.3)
[2026-08-01T07:54:39.268Z] [INFO] [tuya] [Tuya][poll] Gerät=bf0e59548489fcb4ea62of angefordert=lokal hat_lokal=true modus=cloud strategie=legacy features=7 lokal_bearbeitet=0 lokal_geändert=0 cloud_bearbeitet=5 cloud_geändert=5 cloud_fehlt=0 fallback=local_poll_failed
[2026-08-01T07:54:41.552Z] [INFO] [tuya] [Tuya][poll] Gerät=bf9313bc9aa50670d9wf7x angefordert=lokal hat_lokal=true modus=cloud strategie=legacy features=7 lokal_bearbeitet=0 lokal_geändert=0 cloud_bearbeitet=6 cloud_geändert=6 cloud_fehlt=0 fallback=local_poll_failed
[2026-08-01T07:54:43.172Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T07:54:45.441Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf9313bc9aa50670d9wf7x verbunden (192.168.1.182, 3.3)
[2026-08-01T07:54:47.897Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T07:54:50.899Z] [INFO] [tuya] [Tuya][poll] Gerät=bf0e59548489fcb4ea62of lokal geparkt 300s nach 3 Fehlschlägen (Local poll timeout) -> cloud
[2026-08-01T07:54:50.968Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T07:54:53.971Z] [INFO] [tuya] [Tuya][poll] Gerät=bf85d2ce4746ff3ebeifas lokal geparkt 300s nach 3 Fehlschlägen (Local poll timeout) -> cloud
[2026-08-01T07:56:50.050Z] [INFO] onSetValue <- ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of:motion_switch = 1
[2026-08-01T07:56:50.536Z] [INFO] [tuya] [Tuya][pulsar] Gerät=bf0e59548489fcb4ea62of Echtzeitbericht veröffentlicht 1 Änderung(en)
[2026-08-01T07:58:40.650Z] [INFO] onSetValue <- ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of:basic_flip = 1
[2026-08-01T07:58:41.006Z] [INFO] [tuya] [Tuya][poll] Gerät=bf0e59548489fcb4ea62of angefordert=lokal hat_lokal=true modus=cloud strategie=legacy features=7 lokal_bearbeitet=0 lokal_geändert=0 cloud_bearbeitet=5 cloud_geändert=1 cloud_fehlt=0 fallback=local_cooldown
[2026-08-01T07:58:52.196Z] [INFO] onSetValue <- ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of:basic_flip = 0
[2026-08-01T07:58:52.579Z] [INFO] [tuya] [Tuya][pulsar] Gerät=bf0e59548489fcb4ea62of Echtzeitbericht veröffentlicht 1 Änderung(en)
[2026-08-01T07:58:57.161Z] [INFO] onSetValue <- ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of:basic_osd = 1
[2026-08-01T07:58:57.707Z] [INFO] [tuya] [Tuya][pulsar] Gerät=bf0e59548489fcb4ea62of Echtzeitbericht veröffentlicht 1 Änderung(en)
[2026-08-01T07:59:02.659Z] [INFO] onSetValue <- ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of:basic_osd = 0
[2026-08-01T07:59:03.112Z] [INFO] [tuya] [Tuya][pulsar] Gerät=bf0e59548489fcb4ea62of Echtzeitbericht veröffentlicht 1 Änderung(en)
[2026-08-01T07:59:06.243Z] [INFO] onSetValue <- ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of:basic_osd = 1
[2026-08-01T07:59:06.469Z] [INFO] [tuya] [Tuya][pulsar] Gerät=bf0e59548489fcb4ea62of Echtzeitbericht veröffentlicht 1 Änderung(en)
[2026-08-01T07:59:13.062Z] [INFO] onSetValue <- ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of:basic_indicator = 1
[2026-08-01T07:59:13.664Z] [INFO] [tuya] [Tuya][pulsar] Gerät=bf0e59548489fcb4ea62of Echtzeitbericht veröffentlicht 1 Änderung(en)
[2026-08-01T07:59:17.019Z] [INFO] onSetValue <- ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of:basic_indicator = 0
[2026-08-01T07:59:17.374Z] [INFO] [tuya] [Tuya][pulsar] Gerät=bf0e59548489fcb4ea62of Echtzeitbericht veröffentlicht 1 Änderung(en)
[2026-08-01T07:59:51.004Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T07:59:54.122Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T08:01:28.729Z] [WARN] [tuya] [Tuya][media] verschlüsseltes movement_detect_pic-Bild wird noch nicht unterstützt (Gerät=ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of)
[2026-08-01T08:01:29.002Z] [INFO] [tuya] [Tuya][media] Klingel (Gerät=ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of)
[2026-08-01T08:01:30.202Z] [INFO] [tuya] [Tuya][media] doorbell_pic-Snapshot veröffentlicht (Gerät=ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of)
[2026-08-01T08:03:38.490Z] [WARN] [tuya] [Tuya][media] verschlüsseltes movement_detect_pic-Bild wird noch nicht unterstützt (Gerät=ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of)
[2026-08-01T08:04:58.329Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf0e59548489fcb4ea62of verbunden (192.168.1.205, 3.3)
[2026-08-01T08:05:01.409Z] [INFO] [tuya] [Tuya][localSession] Gerät=bf85d2ce4746ff3ebeifas verbunden (192.168.1.203, 3.3)
[2026-08-01T08:05:35.255Z] [WARN] [tuya] [Tuya][media] verschlüsseltes movement_detect_pic-Bild wird noch nicht unterstützt (Gerät=ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of)

Bravo übrigens, ich hätte nie gedacht, dass das ohne alles zu verpfuschen möglich ist!

Edit: Ich habe mir mein T-Shirt gut ausgesucht, um es im Internet zu veröffentlichen… :upside_down_face: (Zur Info, das bezieht sich auf ein Lied von Arno: „Putain Putain, c’est vachement bien, on est quand même tous des Européens“)

Re @GBoulvin! Verfügbarkeit auf dem gleichen Tag :dev-doorbell (du musst nur das Bild aktualisieren, kein Tag-Änderungsbedarf):

Neu

  • :person_running: „Bewegung“-Ereignis: Eine Erkennung löst nun ein Ereignis in Gladys aus → nutzbar in deinen Szenen / Benachrichtigungen, sogar ohne Bild.
  • :framed_picture: Live-View: Beim Öffnen des Kamerawidgets zeigt Gladys das letzte bekannte Snapshot an (letzter Druck / letzte Erkennung). Tuya bietet keine On-Demand-Aufnahme, also ist es das letzte Ereignisbild.

Transparenz: „Bewegung“ wird als Event-Button exponiert, kein Bewegungssensor — Gladys hat noch keinen veröffentlichten „motion-sensor“-Typ für externe Integrationen (gleiche Einschränkung wie die Klimagerät-Geschwindigkeit). Und das Bewegungsbild fehlt vorerst: es ist verschlüsselt (im Gegensatz zum Klingelbild). Das Entschlüsseln ist der nächste Schritt, auf einem separaten Testbild.

:warning: Testprotokoll (wichtig)

Bevor du deine Klingel endgültig auf :latest (prod) umstellst, kannst du jedes Testbild testen und uns Feedback geben? Das verhindert, dass wir etwas Unausgereiftes in die Produktion bringen.

Goldene Regel: Habe NIEMALS deine Klingel gleichzeitig auf zwei verschiedenen Bildern (z. B. :latest und :dev-doorbell). Ein Tuya-Gerät akzeptiert nur einen Verbraucher — zwei parallele Integrationen würden sich gegenseitig blockieren (ring/Pulsar/lokale Session in Konflikt, Duplikate). Also nur ein Bild zur Zeit: Entferne die Klingel auf einer Seite bevor du sie auf der anderen hinzufügst.

Zu testen auf :dev-doorbell

  • nicht abgeschlossen :person_running: Bewege dich vor der Kamera → Löst das Bewegung-Ereignis aus (Button-Feature / Historie / eine kleine Test-Szene)?
  • nicht abgeschlossen :framed_picture: Öffne das Kamerawidget → Wird das letzte Bild (letzter Druck/Erkennung) angezeigt?
  • nicht abgeschlossen :bell: Funktioniert die Klingel + Snapshot noch?
  • nicht abgeschlossen :magnifying_glass_tilted_right: Logs [Tuya][media]: Du solltest movement_detect_pic event fired (Bewegung) und weiterhin encrypted movement_detect_pic image not supported yet (Bewegungsbild, normal) sehen.

Sobald du mir bestätigst, dass alles in Ordnung ist, merge ich in die Produktion und beginne mit der Entschlüsselung des Bewegungsbildes auf einem dedizierten :dev-Bild. Danke! :folded_hands:

Bewegung erkannt und Szene funktioniert!

[2026-08-01T08:53:28.976Z] [WARN] [tuya] [Tuya][media] encrypted movement_detect_pic image not supported yet (device=ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of)
[2026-08-01T08:53:28.985Z] [INFO] [tuya] [Tuya][media] movement_detect_pic event fired (device=ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of)

Das letzte Bild erscheint im Kamerawidget, der Knopf funktioniert perfekt, das Snapshot wird sofort aktualisiert…

Ich würde sagen: GO für die Produktion der Klingel!

Und das Verrückte ist, dass es viel besser funktioniert als die Tuya-App, die manchmal zwei Minuten (oder mehr) braucht, um mir eine Benachrichtigung zu senden (nicht praktisch, wenn jemand klingelt)!

EDIT: Nur zur Info, ich habe gerade die Bewegungserkennung an den PTZ-Kameras getestet und sie funktioniert!

image

@GBoulvin :tada: v1.9.0 ist in Produktion (:latest) — und das dank deiner letzten Rückmeldungen! Die Bewegung löst ein Ereignis aus (Szenen/Benachrichtigungen) und der Live-View zeigt das letzte Snapshot an. Deine Klingel ist bereit für die Produktion.

Bevor du sie endgültig auf :latest umstellst, würde mir ein letzter Test enorm helfen: Aktualisiere dein Bild :dev-doorbell (selber Tag), es enthält jetzt einen experimentellen Versuch, das Bewegungsbild zu extrahieren.

Warum dieser Test / was er bringt

Heute: Ein Klingeldruck → Bild :white_check_mark:, aber eine Bewegungserkennung → nur das Ereignis, kein Bild (es ist von Tuya verschlüsselt). Dieser Test versucht, dieses Bewegungsbild zu entschlüsseln. Wenn es funktioniert:

  • :camera_with_flash: die Bewegung zeigt auch ein Foto (nicht nur die Klingel),
  • :movie_camera: es würde auch das Bild auf deinen PTZ-Kameras freischalten (sie haben nur diesen Stream).

Es ist ein unsicheres Wagnis (sogar der interne Zweig hatte das offen gelassen). Wenn es nicht funktioniert, keine Rückschritte: Die Klingel bleibt perfekt in v1.9.0.

Zu testen auf :dev-doorbell (aktualisiert)

  • Bewege dich vor der Kamera → erscheint ein Bewegungsbild im Widget (zusätzlich zum Ereignis)?
  • :magnifying_glass_tilted_right: Das Wichtigste: Füge mir die Zeilen [Tuya][media] deiner Logs direkt nach einer Bewegung bei. Wir suchen einen dieser Fälle:
    • :white_check_mark: decrypted with aes-128-… + snapshot published → gewonnen!
    • :orange_circle: downloaded N bytes + decryption did not yield a JPEG → Download OK, aber falscher Algorithmus/Key (lehrreich, wir iterieren)
    • :red_circle: no candidate host served… / download failed → Die signierte URL geht nicht durch (andere Spur)

Das sind diese Logs, die uns sagen werden, ob die Hypothese stimmt. :folded_hands:

:warning: Erinnerung: nur ein Bild zur Zeit — habe nicht die Klingel auf :latest und :dev-doorbell gleichzeitig (Konflikt auf dem Tuya-Gerät). Bleibe für die Dauer des Tests bei :dev-doorbell, und schalte dann in die Produktion, wann du willst.