Tuya : Intégration chauffage et climatiseur

Pour le fun, Claude est content, je te met son récap complet :joy: :

Récap condensé des posts #98/#99/#100 — c’est même mieux que « pas mal » : double jackpot :slot_machine::slot_machine:

:white_check_mark: Pulsar tourne enfin chez lui

Toggle coché, pulsar_connected au diag, latence < 2 s sur le test prise. Le doute est levé — tout le reste en découle.

:slot_machine: Jackpot n°1 — la photo du ring est acquise (Test C)

Au coup de sonnette, Pulsar livre doorbell_pic = une URL S3 présignée complète en base64 (https://ty-eu-storage30-pic.s3.eu-central-1.amazonaws.com/...jpeg?X-Amz-...&X-Amz-Expires=60). Notre code la jette (media_invalid_payload) car il n’attend que le JSON bucket/files. Le fix est trivial : accepter ce format et télécharger tel quel. Bonus : ça explique nos 403 — le bon host était bien notre candidat S3, mais seule l’URL du message Pulsar porte la présignature AWS ; le ?param= du shadow n’est pas téléchargeable. (La photo mouvement, elle, arrive chiffrée avec sa clé AES mais sans URL téléchargeable — à traiter plus tard, le ring est la priorité.)

Autre enseignement : le DP 136 (doorbell_active) n’émet jamais de valeur, sur aucun canal → l’événement « Sonnette » devra être dérivé de l’arrivée d’un nouveau doorbell_pic (notre event-gate existant fait déjà ça pour d’autres DP).

:slot_machine: Jackpot n°2 — la sonnette parle en local, on sait enfin comment (Test B)

Les lectures 3.1 échouent toujours (la 3e méthode timeout aussi), MAIS les nouveaux push_frame_raw ont tout révélé : la sonnette pousse des trames au format 3.3 (préfixe "3.3" + payload chiffré) sur notre socket 3.1 — de grosses trames de 1-2 Ko pile aux instants des rings et mouvements. Conclusion : c’est un appareil 3.3 qui pousse ses états ; la connexion 3.3 directe mourait uniquement parce que notre requête initiale chiffrée la faisait raccrocher. Prochaine itération : mode « écoute pure » — persistante en 3.3 sans aucune requête à la connexion → tuyapi décodera nativement les push → ring local instantané très probable.

:warning: Le point du post #100 (commandes en local)

Le SET local (persistant et dédié) n’obtient jamais d’ACK (« Timeout waiting for status response ») → le fallback cloud prend le relais et fonctionne. Le « sent via persistent » isolé de 09:59 est un faux ACK probable (une trame quelconque a résolu la promesse) — à durcir. Pour la sonnette, les commandes restent cloud pour l’instant ; son impression de non-propagation vient des délais de refresh + de ce faux ACK.

Plan de la prochaine itération (dans l’ordre de valeur)

  1. Média : accepter le payload URL-directe → télécharger → photo du ring dans le widget Caméra ;
  2. Ring : déclencher le CLICK Sonnette sur nouveau doorbell_pic ;
  3. Local : persistante « écoute pure » 3.3 pour les device22 ;
  4. Durcir le faux ACK du SET persistant.

Tout est consigné au handoff (part 21). Dis-moi go et j’attaque l’itération — les points 1 et 2 sont courts et débloquent le livrable le plus visible (photo + événement de sonnette temps réel).

Salut @GBoulvin,

Encore merci pour ces nouveaux tests. Et voilà une nouvelle passe pour toi (pas si évidente cette sonnette ^^ Mais on approche du but visiblement ^^). Ci-dessous le CR et la liste des nouveaux tests à réaliser par Claude :

Tes trois posts sont une mine : **double jackpot** :slot_machine::slot_machine: On a trouvé la photo ET le canal local. Compte-rendu, puis la nouvelle salve (c’est peut-être la dernière avant la découpe en PRs propres !).

Compte-rendu de tes tests

1. Pulsar : confirmé opérationnel chez toi :white_check_mark: (`pulsar_connected`, réaction < 2 s). C’est lui qui a tout débloqué.

2. :slot_machine: Jackpot photo (Test C) : au ring, le message Pulsar `doorbell_pic` contient l’URL de téléchargement complète et signée de la photo (valable 60 s). Notre code la rejetait bêtement (il attendait un autre format) — corrigé : la photo de ton ring va enfin s’afficher dans le widget Caméra. Bonus : ça explique tous nos 403 — le serveur S3 était le bon depuis le début, mais seule l’URL du message Pulsar porte la bonne signature.

3. :slot_machine: Jackpot local (Test B) : les nouvelles cartes `push_frame_raw` montrent que ta sonnette pousse des trames au format 3.3 (chiffrées) sur le socket persistant, pile aux instants de tes rings et mouvements. Elle parle en local ! La connexion 3.3 directe échouait uniquement parce que notre requête initiale la faisait raccrocher. La nouvelle image ouvre donc pour elle un socket 3.3 muet (zéro requête, on ne fait qu’écouter) — ses push devraient être décodés nativement.

4. Ton test « 100 % local » du post #100 — petite correction :upside_down_face: : couper Pulsar ne suffit pas. Dans tes logs, les états et la détection passaient encore par la lecture cloud périodique (elle tourne toujours), et tes commandes partaient via le cloud après deux tentatives locales en échec (d’où les ~10 s de latence et l’impression de non-propagation !). Le vrai test 100 % local, c’est le Test C ci-dessous.

5. L’événement « Sonnette » (Clic bouton) : on a compris pourquoi il restait vide — ta sonnette n’émet jamais de valeur sur son DP sonnette, sur aucun canal. La nouvelle image déclenche l’événement à l’arrivée d’une nouvelle photo de ring (avec anti-doublon) : historique et scènes vont enfin réagir.

Nouvelle image (même tag, re-pull) — ce qui change

1. Photo du ring téléchargée depuis l’URL du message Pulsar → widget Caméra ;

2. Événement « Sonnette » déclenché sur chaque nouveau ring (instantané via Pulsar, avec anti-doublon si la même photo revient par plusieurs canaux) ;

3. Écoute pure locale pour la sonnette : socket persistant sans aucune requête (c’est ce qui la faisait raccrocher) ;

4. Commandes sonnette directement en cloud : fini les ~10 s de latence sur tes toggles (les tentatives locales vouées à l’échec sont sautées).

Test A — Le livrable : ring + photo + événement (5 min) :camera_with_flash::bell:

Sonnette en mode cloud (substitution locale décochée), Pulsar actif :

1. Re-pull l’image, redémarre, ouvre la page Diagnostic de la sonnette + le dashboard avec le widget Caméra.

2. Sonne à la porte.

3. Attendu : l’événement « Sonnette » dans l’historique (instantané) + la photo dans le widget Caméra.

4. → À nous copier : les cartes `doorbell_ring_event` / `media_download_ok` / `media_stored` (ou leurs variantes d’échec) — et ton verdict visuel sur la photo !

Test B — Local écoute pure (10 min)

1. Page de la sonnette : sauvegarde en 3.3 + substitution locale (sauvegarde forcée, comme d’habitude). :information_source: On recommande 3.3 parce que tes trames observées sont à ce format — mais rien n’est verrouillé, et tu n’auras pas à deviner : voir l’étape 4.

2. Attends `persistant : connecté` sur la page Diagnostic. Le socket est maintenant muet : tu ne verras plus les « parse data error » toutes les 10 s, c’est normal (et du coup « connecté » ne suffit pas à prouver que le protocole est le bon — seul un événement le dira).

3. Sonne, puis passe devant (mouvement).

4. Le Diagnostic te répond immédiatement, sans deviner :

  • cartes push_dps\ avec de vraies valeurs (DP 136, 154, 115…) → bon protocole, canal local décodé — champagne :bottle_with_popping_cork:

  • carte orange push_frame_version_mismatch\ → la sonnette parle un autre protocole et la carte te dit lequel (« save the device with protocol 3.X ») → re-sauvegarde avec celui-là et re-sonne ;

  • en 3.4/3.5, un mauvais choix échoue carrément à la connexion (pas de `persistant : connecté`) — élimination immédiate.

5. → À nous copier : les cartes `push_dps` / `push_frame_raw` / `push_frame_version_mismatch` autour des événements.

Test C — Le VRAI 100 % local (5 min, si le Test B a montré des push_dps)

1. Toujours en 3.3 + substitution locale : décoche « Événements temps réel (Pulsar) » ET clique « Déconnecter » sur la page Configuration → Gladys n’a plus AUCUN accès au cloud Tuya.

2. Sonne. Si l’événement « Sonnette » apparaît quand même dans l’historique : c’est du 100 % local certifié. (La photo, elle, ne peut pas s’afficher dans ce mode : son URL de téléchargement n’existe que dans le message Pulsar — limitation Tuya, pas Gladys.)

3. Reconnecte-toi (« Enregistrer ») et re-coche Pulsar à la fin.

Récap :clipboard:

1. Test A : ring → photo widget + événement Sonnette + cartes `media_*`/`doorbell_ring_event` ;

2. Test B : écoute pure 3.3 → cartes `push_dps`/`push_frame_raw` au ring/mouvement ;

3. Test C (si B concluant) : ring Pulsar coupé + cloud déconnecté → l’événement arrive-t-il ?

4. Ton ressenti sur la latence des toggles (détection de mouvement) — elle doit être bien meilleure.

Un immense merci — grâce à tes captures on devrait passer d’une sonnette muette à une sonnette (presque) entièrement intégrée ! :door::bell:

Bonne nouvelle !

Bon, ma réponse s’est perdue trois fois dans le forum et j’avoue que la réécrire encore me saoule :wink:

MAIIIIISS Ca a marché !

Je ne sais pas pourquoi mais avant d’avoir un résultat, il a fallut que je redémarre le container complètement malgré la suppression de container, le pull et démarrage.

J’ai oublié de cliquer sur « vider » entre les tests donc le log est long.

Juste une précision, la pression de sonnette fonctionne, la détection de mouvement dit « pas encore ! » :

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="}

Le log complet :

2026-07-18T20:22:47.158Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:47.147Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (sd_status) {"sd_status":5}
2026-07-18T20:22:45.547Z [debug] [Prise frigo (bf1d9d0b6ed2b5755fkt24)] [poll_summary] Poll completed {"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] Poll completed {"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] Poll completed {"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] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:22:42.720Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:42.719Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:42.719Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (total_power) {"total_power":150}
2026-07-18T20:22:42.718Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:42.716Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:42.716Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (power_factor) {"power_factor":54}
2026-07-18T20:22:42.708Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:42.707Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:42.707Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (power_a) {"power_a":150}
2026-07-18T20:22:42.706Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:42.696Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:42.696Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (voltage_a) {"voltage_a":2312}
2026-07-18T20:22:42.578Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:42.566Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:42.566Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (current_a) {"current_a":118}
2026-07-18T20:22:35.470Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"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] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:22:32.076Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:32.076Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:32.075Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (power_factor) {"power_factor":55}
2026-07-18T20:22:32.074Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:32.067Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:32.067Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (power_a) {"power_a":148}
2026-07-18T20:22:31.961Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:31.960Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:31.960Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (total_power) {"total_power":148}
2026-07-18T20:22:31.951Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:31.949Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:31.949Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (current_a) {"current_a":117}
2026-07-18T20:22:31.948Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:31.938Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:31.938Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (voltage_a) {"voltage_a":2309}
2026-07-18T20:22:25.586Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"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] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:22:25.167Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_stored] Snapshot of doorbell_pic stored on the camera feature
2026-07-18T20:22:25.056Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_image_too_big] Snapshot of doorbell_pic exceeds the 150KB camera limit, re-encoding with ffmpeg
2026-07-18T20:22:25.055Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_download_ok] Snapshot of doorbell_pic downloaded from ty-eu-storage30-pic.s3.eu-central-1.amazonaws.com
2026-07-18T20:22:24.871Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:24.863Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [doorbell_ring_event] Doorbell ring derived from a new ring snapshot
2026-07-18T20:22:24.862Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (doorbell_pic) {"doorbell_pic":"aHR0cHM6Ly90eS1ldS1zdG9yYWdlMzAtcGljLnMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tLzE3NjA3My0xNjE4Njk0MTYtcHAwMWJmMDBlYjZhMWE5NmNkNTAvZGV0ZWN0LzE3ODQ0MDYxNDIuanBlZz9YLUFtei1TZWN1cml0eS1Ub2tlbj1Gd29HWlhJdllYZHpFTHYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkZ3RWFETGh5ZjkzUEI0RWdOVGZ6SFNLREFpcjB0bGNjTTVQS3p0ZTBIYnNjaGFuMUdWREVVYlIwRCUyRk5CMlRnemxrMzhrbHhwMjN0WDcza1ZGN2E0TUpNJTJGdWl3aHJadFZsWWxiM281M0RFeWRHZEJyUXFoM2twQktaaUVJJTJCN2xmVUtlanRWa3JDVDU2RjV2bWxPOWU5STlFdlcxVlhrQTZEb1ZCV2dJdVNGaXElMkZNaWpHUUJqcU1lN3VFc2pSdHFxMDdlV05CV0ZWcTRZMm00Qkt1Q1JvbktOdTRUeWc2MXlrWW1yMWs3aVFWV09aRFNtWjQyTmh5MURyOWF1NjRzdTFQalBEJTJCRFBzeXZXeE5Kend4MUR6UWlFaUtUWGlpcmFvUDhOYkxUWlolMkZ6M3BvZGNwVzNGNjJuN0drSkNhVmR3UDFEMSUyQk9ZNUJZaDlxeUljJTJCTkNJNk1UdjRuYUFmVUxGT2FSTzYzJTJCSWRxOFpEUE1uNmk0b3pKVHQwZ1l5S2ZxZ3VRdEdBNndTVTJvb3I4UXY0RU5ZRFBFbHlyR00zMmMxRE9hdWdDNnRqMm1hZ09uNmVtTDUmWC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BU0lBVVRQTVVKSkpaSUwzVE9IWiUyRjIwMjYwNzE4JTJGZXUtY2VudHJhbC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcxOFQyMDIyMjRaJlgtQW16LUV4cGlyZXM9NjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmJ1Y2tldD10eS1ldS1zdG9yYWdlMzAtcGljJnY9MS4wJlgtQW16LVNpZ25hdHVyZT1hZjc0NjRlZGYyNjMxYzIzMWQyNTYyNzZjZTRiZmYwNDg0MzIzZjk4MGRiNWIwZWM3NDM4ZjBmY2FkYjQ2ZmQ3"}
2026-07-18T20:22:24.235Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (movement_detect_pic) {"movement_detect_pic":"eyJidWNrZXQiOiJ0eS1ldS1zdG9yYWdlMzAtcGljIiwiZmlsZXMiOltbIi8xNzYwNzMtMTYxODY5NDE2LXBwMDFiZjAwZWI2YTFhOTZjZDUwL2RldGVjdC8xNzg0NDA2MTQyLmpwZWc/cGFyYW09MTdpd0lORUFRc1dEaXZuV254aWFscmUxU01mTG1SR0dvcWZIQ2g1cGoxWT0iLCIiXV0sInYiOiIzLjAifQ=="}
2026-07-18T20:22:24.227Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_encrypted_unsupported] Encrypted movement_detect_pic image not supported yet
2026-07-18T20:22:24.225Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (movement_detect_pic) {"movement_detect_pic":"eyJ2IjoiMy4wIiwiYnVja2V0IjoidHktZXUtc3RvcmFnZTMwLXBpYyIsImZpbGVzIjpbWyIvMTc2MDczLTE2MTg2OTQxNi1wcDAxYmYwMGViNmExYTk2Y2Q1MC9kZXRlY3QvMTc4NDQwNjE0Mi5qcGVnIiwiZjliZjQ2NDNhZjRhZDQ0YSJdXX0="}
2026-07-18T20:22:22.751Z [debug] [pulsar_other_protocol] Pulsar message with protocol 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] Twin-format Pulsar report already routed
2026-07-18T20:22:21.241Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:21.241Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (total_power) {"total_power":149}
2026-07-18T20:22:21.232Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:21.231Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:21.231Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (power_a) {"power_a":149}
2026-07-18T20:22:21.229Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:21.219Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:21.218Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (voltage_a) {"voltage_a":2310}
2026-07-18T20:22:15.913Z [debug] [Prise frigo (bf1d9d0b6ed2b5755fkt24)] [poll_summary] Poll completed {"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] Poll completed {"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] Poll completed {"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] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:22:10.569Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:10.568Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:10.568Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (total_power) {"total_power":150}
2026-07-18T20:22:10.565Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:10.562Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:10.562Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (freq) {"freq":4934}
2026-07-18T20:22:10.561Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:10.560Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:10.560Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (power_a) {"power_a":150}
2026-07-18T20:22:10.556Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:10.546Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:22:10.546Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (voltage_a) {"voltage_a":2313}
2026-07-18T20:22:05.466Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"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] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:22:02.509Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.504Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_device_volume) {"basic_device_volume":10}
2026-07-18T20:22:02.503Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.502Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (record_mode) {"record_mode":"2"}
2026-07-18T20:22:02.500Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.494Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (record_switch) {"record_switch":true}
2026-07-18T20:22:02.493Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.492Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (sd_storge) {"sd_storge":"100|0|100"}
2026-07-18T20:22:02.491Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.481Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (sd_status) {"sd_status":5}
2026-07-18T20:22:02.460Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.453Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (motion_sensitivity) {"motion_sensitivity":"1"}
2026-07-18T20:22:02.452Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.450Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (motion_switch) {"motion_switch":true}
2026-07-18T20:22:02.440Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.427Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_nightvision) {"basic_nightvision":"0"}
2026-07-18T20:22:02.258Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.256Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_osd) {"basic_osd":true}
2026-07-18T20:22:02.246Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.236Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_flip) {"basic_flip":false}
2026-07-18T20:22:02.187Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.178Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_indicator) {"basic_indicator":true}
2026-07-18T20:21:59.904Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:21:59.903Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:21:59.903Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (total_power) {"total_power":151}
2026-07-18T20:21:59.901Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:21:59.893Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:21:59.893Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (freq) {"freq":4935}
2026-07-18T20:21:59.891Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:21:59.881Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:21:59.881Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (power_a) {"power_a":151}
2026-07-18T20:21:59.767Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:21:59.766Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:21:59.766Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (current_a) {"current_a":119}
2026-07-18T20:21:59.764Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:21:59.754Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_unknown_device] Pulsar report for a device not in Gladys
2026-07-18T20:21:59.754Z [debug] [bf8a5bf8acc4540a41rere] [pulsar_report] Pulsar real-time report (voltage_a) {"voltage_a":2309}
2026-07-18T20:21:57.802Z [debug] [pulsar_other_protocol] Pulsar message with protocol 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 message with protocol 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] Poll completed {"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] Local mode skipped: degraded backoff active, falling back to cloud

2026-07-18T20:25:45.371Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:25:43.609Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_stored] Snapshot of doorbell_pic stored on the camera feature
2026-07-18T20:25:43.515Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_image_too_big] Snapshot of doorbell_pic exceeds the 150KB camera limit, re-encoding with ffmpeg
2026-07-18T20:25:43.514Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_download_ok] Snapshot of doorbell_pic downloaded from ty-eu-storage30-pic.s3.eu-central-1.amazonaws.com
2026-07-18T20:25:43.303Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:43.295Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [doorbell_ring_event] Doorbell ring derived from a new ring snapshot
2026-07-18T20:25:43.294Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (doorbell_pic) {"doorbell_pic":"aHR0cHM6Ly90eS1ldS1zdG9yYWdlMzAtcGljLnMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tLzE3NjA3My0xNjE4Njk0MTYtcHAwMWJmMDBlYjZhMWE5NmNkNTAvZGV0ZWN0LzE3ODQ0MDYzMzkuanBlZz9YLUFtei1TZWN1cml0eS1Ub2tlbj1Gd29HWlhJdllYZHpFTHYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkZ3RWFETGh5ZjkzUEI0RWdOVGZ6SFNLREFpcjB0bGNjTTVQS3p0ZTBIYnNjaGFuMUdWREVVYlIwRCUyRk5CMlRnemxrMzhrbHhwMjN0WDcza1ZGN2E0TUpNJTJGdWl3aHJadFZsWWxiM281M0RFeWRHZEJyUXFoM2twQktaaUVJJTJCN2xmVUtlanRWa3JDVDU2RjV2bWxPOWU5STlFdlcxVlhrQTZEb1ZCV2dJdVNGaXElMkZNaWpHUUJqcU1lN3VFc2pSdHFxMDdlV05CV0ZWcTRZMm00Qkt1Q1JvbktOdTRUeWc2MXlrWW1yMWs3aVFWV09aRFNtWjQyTmh5MURyOWF1NjRzdTFQalBEJTJCRFBzeXZXeE5Kend4MUR6UWlFaUtUWGlpcmFvUDhOYkxUWlolMkZ6M3BvZGNwVzNGNjJuN0drSkNhVmR3UDFEMSUyQk9ZNUJZaDlxeUljJTJCTkNJNk1UdjRuYUFmVUxGT2FSTzYzJTJCSWRxOFpEUE1uNmk0b3pKVHQwZ1l5S2ZxZ3VRdEdBNndTVTJvb3I4UXY0RU5ZRFBFbHlyR00zMmMxRE9hdWdDNnRqMm1hZ09uNmVtTDUmWC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BU0lBVVRQTVVKSkpaSUwzVE9IWiUyRjIwMjYwNzE4JTJGZXUtY2VudHJhbC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcxOFQyMDI1NDNaJlgtQW16LUV4cGlyZXM9NjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmJ1Y2tldD10eS1ldS1zdG9yYWdlMzAtcGljJnY9MS4wJlgtQW16LVNpZ25hdHVyZT0zN2Y4OWQxNGM2MzM0NGQ1ZmUwOWM3NjRlM2RkMWI2MGNmZjQ3MTAwYzRjYmZiOTcxNDQ2MjIzZWU2ZDg0ZmQ1"}
2026-07-18T20:25:42.273Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (movement_detect_pic) {"movement_detect_pic":"eyJidWNrZXQiOiJ0eS1ldS1zdG9yYWdlMzAtcGljIiwiZmlsZXMiOltbIi8xNzYwNzMtMTYxODY5NDE2LXBwMDFiZjAwZWI2YTFhOTZjZDUwL2RldGVjdC8xNzg0NDA2MzM5LmpwZWc/cGFyYW09R282R282R29JU3VGdURZaHpCcllkc1NQZXZRQkFoN0NMejI0eXZTL0tqdz0iLCIiXV0sInYiOiIzLjAifQ=="}
2026-07-18T20:25:42.261Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_encrypted_unsupported] Encrypted movement_detect_pic image not supported yet
2026-07-18T20:25:42.261Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (movement_detect_pic) {"movement_detect_pic":"eyJ2IjoiMy4wIiwiYnVja2V0IjoidHktZXUtc3RvcmFnZTMwLXBpYyIsImZpbGVzIjpbWyIvMTc2MDczLTE2MTg2OTQxNi1wcDAxYmYwMGViNmExYTk2Y2Q1MC9kZXRlY3QvMTc4NDQwNjMzOS5qcGVnIiwiNTEwZDEyN2M4YzZkNjM1NSJdXX0="}
2026-07-18T20:25:35.371Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:25:25.370Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:25:23.843Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.842Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.842Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.842Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.842Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.841Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.841Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.840Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.840Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.840Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.839Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.839Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.838Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.838Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.837Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.837Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.836Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.835Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.834Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.833Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.822Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:23.817Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.836Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.835Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.835Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.835Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.834Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.834Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.834Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.833Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.833Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.833Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.832Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.832Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.832Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.831Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.831Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.830Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.830Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.829Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.818Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.818Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.817Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:19.812Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:17.267Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:17.259Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (record_mode) {"record_mode":"2"}
2026-07-18T20:25:17.196Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:17.160Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_device_volume) {"basic_device_volume":10}
2026-07-18T20:25:17.159Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:17.156Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (record_switch) {"record_switch":true}
2026-07-18T20:25:17.146Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:17.145Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (sd_storge) {"sd_storge":"100|0|100"}
2026-07-18T20:25:17.142Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:17.133Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (sd_status) {"sd_status":5}
2026-07-18T20:25:17.023Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:17.016Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (motion_sensitivity) {"motion_sensitivity":"1"}
2026-07-18T20:25:17.016Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:17.015Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (motion_switch) {"motion_switch":true}
2026-07-18T20:25:17.014Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:17.003Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_nightvision) {"basic_nightvision":"0"}
2026-07-18T20:25:16.767Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:16.765Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_osd) {"basic_osd":true}
2026-07-18T20:25:16.760Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:16.759Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_flip) {"basic_flip":false}
2026-07-18T20:25:16.756Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:25:16.746Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_indicator) {"basic_indicator":true}
2026-07-18T20:25:15.369Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:25:05.368Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:24:55.367Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:24:45.368Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:24:35.367Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:24:35.016Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:24:35.006Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_device_volume) {"basic_device_volume":10}
2026-07-18T20:24:34.764Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:24:34.754Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (record_mode) {"record_mode":"2"}
2026-07-18T20:24:34.509Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:24:34.502Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (record_switch) {"record_switch":true}
2026-07-18T20:24:34.500Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:24:34.490Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (sd_storge) {"sd_storge":"100|0|100"}
2026-07-18T20:24:34.385Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:24:34.384Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (sd_status) {"sd_status":5}
2026-07-18T20:24:34.382Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:24:34.380Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (motion_sensitivity) {"motion_sensitivity":"1"}
2026-07-18T20:24:34.379Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:24:34.375Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (motion_switch) {"motion_switch":true}
2026-07-18T20:24:34.372Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:24:34.363Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_nightvision) {"basic_nightvision":"0"}
2026-07-18T20:24:34.268Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:24:34.265Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_osd) {"basic_osd":true}
2026-07-18T20:24:34.264Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:24:34.260Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_flip) {"basic_flip":false}
2026-07-18T20:24:34.257Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:24:34.247Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_indicator) {"basic_indicator":true}
2026-07-18T20:24:25.367Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:24:15.366Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:24:08.722Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (movement_detect_pic) {"movement_detect_pic":"eyJidWNrZXQiOiJ0eS1ldS1zdG9yYWdlMzAtcGljIiwiZmlsZXMiOltbIi8xNzYwNzMtMTYxODY5NDE2LXBwMDFiZjAwZWI2YTFhOTZjZDUwL2RldGVjdC8xNzg0NDA2MjQ4LmpwZWc/cGFyYW09VEpIUkpkQmY0QjVwVEVyV3U4clgvWFZWZngxemhvS1BUbkRHMmlTcmFHST0iLCIiXV0sInYiOiIzLjAifQ=="}
2026-07-18T20:24:08.711Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_encrypted_unsupported] Encrypted movement_detect_pic image not supported yet
2026-07-18T20:24:08.711Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (movement_detect_pic) {"movement_detect_pic":"eyJ2IjoiMy4wIiwiYnVja2V0IjoidHktZXUtc3RvcmFnZTMwLXBpYyIsImZpbGVzIjpbWyIvMTc2MDczLTE2MTg2OTQxNi1wcDAxYmYwMGViNmExYTk2Y2Q1MC9kZXRlY3QvMTc4NDQwNjI0OC5qcGVnIiwiYTUzYTc3ZGI1NzY1NmM3OSJdXX0="}
2026-07-18T20:24:05.366Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:23:55.366Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:23:45.365Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:23:35.366Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:23:25.473Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:23:25.365Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:23:15.475Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:23:15.364Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:23:05.476Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:23:05.363Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:22:55.459Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:22:55.362Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:22:47.158Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:47.147Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (sd_status) {"sd_status":5}
2026-07-18T20:22:45.480Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"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.361Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:22:35.470Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"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] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:22:25.586Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"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] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:22:25.167Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_stored] Snapshot of doorbell_pic stored on the camera feature
2026-07-18T20:22:25.056Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_image_too_big] Snapshot of doorbell_pic exceeds the 150KB camera limit, re-encoding with ffmpeg
2026-07-18T20:22:25.055Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_download_ok] Snapshot of doorbell_pic downloaded from ty-eu-storage30-pic.s3.eu-central-1.amazonaws.com
2026-07-18T20:22:24.871Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:24.863Z [info] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [doorbell_ring_event] Doorbell ring derived from a new ring snapshot
2026-07-18T20:22:24.862Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (doorbell_pic) {"doorbell_pic":"aHR0cHM6Ly90eS1ldS1zdG9yYWdlMzAtcGljLnMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tLzE3NjA3My0xNjE4Njk0MTYtcHAwMWJmMDBlYjZhMWE5NmNkNTAvZGV0ZWN0LzE3ODQ0MDYxNDIuanBlZz9YLUFtei1TZWN1cml0eS1Ub2tlbj1Gd29HWlhJdllYZHpFTHYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkZ3RWFETGh5ZjkzUEI0RWdOVGZ6SFNLREFpcjB0bGNjTTVQS3p0ZTBIYnNjaGFuMUdWREVVYlIwRCUyRk5CMlRnemxrMzhrbHhwMjN0WDcza1ZGN2E0TUpNJTJGdWl3aHJadFZsWWxiM281M0RFeWRHZEJyUXFoM2twQktaaUVJJTJCN2xmVUtlanRWa3JDVDU2RjV2bWxPOWU5STlFdlcxVlhrQTZEb1ZCV2dJdVNGaXElMkZNaWpHUUJqcU1lN3VFc2pSdHFxMDdlV05CV0ZWcTRZMm00Qkt1Q1JvbktOdTRUeWc2MXlrWW1yMWs3aVFWV09aRFNtWjQyTmh5MURyOWF1NjRzdTFQalBEJTJCRFBzeXZXeE5Kend4MUR6UWlFaUtUWGlpcmFvUDhOYkxUWlolMkZ6M3BvZGNwVzNGNjJuN0drSkNhVmR3UDFEMSUyQk9ZNUJZaDlxeUljJTJCTkNJNk1UdjRuYUFmVUxGT2FSTzYzJTJCSWRxOFpEUE1uNmk0b3pKVHQwZ1l5S2ZxZ3VRdEdBNndTVTJvb3I4UXY0RU5ZRFBFbHlyR00zMmMxRE9hdWdDNnRqMm1hZ09uNmVtTDUmWC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BU0lBVVRQTVVKSkpaSUwzVE9IWiUyRjIwMjYwNzE4JTJGZXUtY2VudHJhbC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcxOFQyMDIyMjRaJlgtQW16LUV4cGlyZXM9NjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmJ1Y2tldD10eS1ldS1zdG9yYWdlMzAtcGljJnY9MS4wJlgtQW16LVNpZ25hdHVyZT1hZjc0NjRlZGYyNjMxYzIzMWQyNTYyNzZjZTRiZmYwNDg0MzIzZjk4MGRiNWIwZWM3NDM4ZjBmY2FkYjQ2ZmQ3"}
2026-07-18T20:22:24.235Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (movement_detect_pic) {"movement_detect_pic":"eyJidWNrZXQiOiJ0eS1ldS1zdG9yYWdlMzAtcGljIiwiZmlsZXMiOltbIi8xNzYwNzMtMTYxODY5NDE2LXBwMDFiZjAwZWI2YTFhOTZjZDUwL2RldGVjdC8xNzg0NDA2MTQyLmpwZWc/cGFyYW09MTdpd0lORUFRc1dEaXZuV254aWFscmUxU01mTG1SR0dvcWZIQ2g1cGoxWT0iLCIiXV0sInYiOiIzLjAifQ=="}
2026-07-18T20:22:24.227Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [media_encrypted_unsupported] Encrypted movement_detect_pic image not supported yet
2026-07-18T20:22:24.225Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (movement_detect_pic) {"movement_detect_pic":"eyJ2IjoiMy4wIiwiYnVja2V0IjoidHktZXUtc3RvcmFnZTMwLXBpYyIsImZpbGVzIjpbWyIvMTc2MDczLTE2MTg2OTQxNi1wcDAxYmYwMGViNmExYTk2Y2Q1MC9kZXRlY3QvMTc4NDQwNjE0Mi5qcGVnIiwiZjliZjQ2NDNhZjRhZDQ0YSJdXX0="}
2026-07-18T20:22:15.809Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"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] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:22:05.466Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"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] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:22:02.509Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.504Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_device_volume) {"basic_device_volume":10}
2026-07-18T20:22:02.503Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.502Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (record_mode) {"record_mode":"2"}
2026-07-18T20:22:02.500Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.494Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (record_switch) {"record_switch":true}
2026-07-18T20:22:02.493Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.492Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (sd_storge) {"sd_storge":"100|0|100"}
2026-07-18T20:22:02.491Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.481Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (sd_status) {"sd_status":5}
2026-07-18T20:22:02.460Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.453Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (motion_sensitivity) {"motion_sensitivity":"1"}
2026-07-18T20:22:02.452Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.450Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (motion_switch) {"motion_switch":true}
2026-07-18T20:22:02.440Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.427Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_nightvision) {"basic_nightvision":"0"}
2026-07-18T20:22:02.258Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.256Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_osd) {"basic_osd":true}
2026-07-18T20:22:02.246Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.236Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_flip) {"basic_flip":false}
2026-07-18T20:22:02.187Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_duplicate_skipped] Twin-format Pulsar report already routed
2026-07-18T20:22:02.178Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [pulsar_report] Pulsar real-time report (basic_indicator) {"basic_indicator":true}
2026-07-18T20:21:55.503Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"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] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:21:45.487Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:21:45.359Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:21:35.512Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:21:35.358Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:21:27.438Z [error] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [persistent_failed] Giving up persistent connection after 3 retries; scheduled poll takes over
2026-07-18T20:21:27.437Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [persistent_connect_failed] Connect failed: connect ECONNREFUSED 192.168.1.205:6668
2026-07-18T20:21:27.436Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [persistent_error] Persistent socket error: Error from socket: connect ECONNREFUSED 192.168.1.205:6668
2026-07-18T20:21:25.510Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:21:25.357Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:21:15.476Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:21:15.360Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:21:05.476Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:21:05.357Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:20:57.427Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [persistent_connect_failed] Connect failed: connect ECONNREFUSED 192.168.1.205:6668
2026-07-18T20:20:57.425Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [persistent_error] Persistent socket error: Error from socket: connect ECONNREFUSED 192.168.1.205:6668
2026-07-18T20:20:55.430Z [debug] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [poll_summary] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":0,"cloud_missing":0,"fallback":"device_degraded"}
2026-07-18T20:20:55.359Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [degraded_skip] Local mode skipped: degraded backoff active, falling back to cloud
2026-07-18T20:20:47.393Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [persistent_connect_failed] Connect failed: connect ECONNREFUSED 192.168.1.205:6668
2026-07-18T20:20:47.392Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [persistent_error] Persistent socket error: Error from socket: connect ECONNREFUSED 192.168.1.205:6668
2026-07-18T20:20:44.381Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [persistent_connect_failed] Connect failed: connect ECONNREFUSED 192.168.1.205:6668
2026-07-18T20:20:44.380Z [warn] [Visiophone Wifi (bf0e59548489fcb4ea62of)] [persistent_error] Persistent socket error: Error from socket: connect ECONNREFUSED 192.168.1.205:6668

Tuya device snapshot — Visiophone Wifi

  • selector: tuya-bf0e59548489fcb4ea62of — external_id: tuya:bf0e59548489fcb4ea62of
  • device_type: video-doorbell — product_id: i5e3a4qxcsthszin
  • protocol: 3.3 — ip: 192.168.1.205 — local_override: 1
  • persistent: failed — degraded: degraded

Supported features

Feature Code Local DP Cloud path Raw input (origin) Raw at Gladys value Last change
Status LED basic_indicator 101 Indicator (dp 101) [spec.fn, spec.st, model, shadow] true (pulsar) 2026-07-18T20:25:16.746Z 1 2026-07-18T20:24:34.248Z
Image flip basic_flip 103 Vision Flip (dp 103) [spec.fn, spec.st, model, shadow] false (pulsar) 2026-07-18T20:25:16.759Z 0 2026-07-18T20:24:34.260Z
On-screen display basic_osd 104 OSD Watermark (dp 104) [spec.fn, spec.st, model, shadow] true (pulsar) 2026-07-18T20:25:16.765Z 1 2026-07-18T20:24:34.265Z
Motion detection motion_switch 134 Motion Alert (dp 134) [spec.fn, spec.st, model, shadow] true (pulsar) 2026-07-18T20:25:17.015Z 1 2026-07-18T20:24:34.375Z
Doorbell doorbell_active 136 Doorbell Active (dp 136) [spec.st, model, shadow] (cloud) 2026-07-18T20:23:25.472Z 1 2026-07-18T20:25:43.301Z
Recording record_switch 150 Record Switch (dp 150) [spec.fn, spec.st, model, shadow] true (pulsar) 2026-07-18T20:25:17.156Z 1 2026-07-18T20:24:34.503Z
Snapshot doorbell_pic - Someone ring doorbell (dp 154) [spec.st, model, shadow] aHR0cHM6Ly90eS1ldS1zdG9yYWdlMzAtcGljLnMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tLzE3NjA3My0xNjE4Njk0MTYtcHAwMWJmMDBlYjZhMWE5NmNkNTAvZGV0ZWN0LzE3ODQ0MDYzMzkuanBlZz9YLUFtei1TZWN1cml0eS1Ub2tlbj1Gd29HWlhJdllYZHpFTHYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkYlMkZ3RWFETGh5ZjkzUEI0RWdOVGZ6SFNLREFpcjB0bGNjTTVQS3p0ZTBIYnNjaGFuMUdWREVVYlIwRCUyRk5CMlRnemxrMzhrbHhwMjN0WDcza1ZGN2E0TUpNJTJGdWl3aHJadFZsWWxiM281M0RFeWRHZEJyUXFoM2twQktaaUVJJTJCN2xmVUtlanRWa3JDVDU2RjV2bWxPOWU5STlFdlcxVlhrQTZEb1ZCV2dJdVNGaXElMkZNaWpHUUJqcU1lN3VFc2pSdHFx… (truncated) (pulsar) 2026-07-18T20:25:43.294Z 2026-07-18T20:25:43.598Z

Unsupported (raw only)

Feature Code Local DP Cloud path Raw input (origin) Raw at Gladys value Last change

Ignored

Feature Code Local DP Cloud path Raw input (origin) Raw at Gladys value Last change
sd_format_state sd_format_state - Formatted State (dp 117) [spec.st, model, shadow] -20000 (cloud) 2026-07-18T20:23:25.472Z - -
sd_status sd_status - Memory Card Status (dp 110) [spec.st, model, shadow] 5 (pulsar) 2026-07-18T20:25:17.133Z - -
motion_sensitivity motion_sensitivity - Motion Sensitivity (dp 106) [spec.fn, spec.st, model, shadow] 1 (pulsar) 2026-07-18T20:25:17.016Z - -
record_mode record_mode - Recording Mode (dp 151) [spec.fn, spec.st, model, shadow] 2 (pulsar) 2026-07-18T20:25:17.259Z - -
basic_nightvision basic_nightvision - Night Vision (dp 108) [spec.fn, spec.st, model, shadow] 0 (pulsar) 2026-07-18T20:25:17.003Z - -
basic_device_volume basic_device_volume - Device Volume Control (dp 160) [spec.fn, spec.st, model, shadow] 10 (pulsar) 2026-07-18T20:25:17.160Z - -
sd_storge sd_storge - Get Memory Card Capacity (dp 109) [spec.st, model, shadow] 100 0 100 (pulsar) 2026-07-18T20:25:17.145Z
sd_format sd_format - Format Memory Card (dp 111) [spec.fn, spec.st, model, shadow] false (cloud) 2026-07-18T20:23:25.472Z - -
movement_detect_pic movement_detect_pic - Motion Detected (dp 115) [spec.st, model, shadow] eyJidWNrZXQiOiJ0eS1ldS1zdG9yYWdlMzAtcGljIiwiZmlsZXMiOltbIi8xNzYwNzMtMTYxODY5NDE2LXBwMDFiZjAwZWI2YTFhOTZjZDUwL2RldGVjdC8xNzg0NDA2MzM5LmpwZWc/cGFyYW09R282R282R29JU3VGdURZaHpCcllkc1NQZXZRQkFoN0NMejI0eXZTL0tqdz0iLCIiXV0sInYiOiIzLjAifQ== (pulsar) 2026-07-18T20:25:42.273Z - -

Donc BRAVO ! MERCI !

Je referai un test plus précis demain matin.

Précision : Il semble que la sonnette redémarre entre chaque changement de mode. J’ai constaté cela car pour une fois, j’ai pris le PC avec moi. Il faut savoir que cette sonnette se trouve à 45m de la maison :smiley:

Salut @GBoulvin ,

Désolé pour le temps de réponse, et merci encore pour tes dernier tests qui normalement font encore avancer !^^

Je me suis permis de prendre une décision, je travail à fond sur la transposition de l’intégration interne Gladys actuelle pour la transposer en nouvelle intégration externe, sujet sur lequel Pierre-Gilles travail à fond et assidûment en ce moment pour pouvoir itérer plus vite. Je suis persuader que cela améliorera nos phases de test. Normalement, tu n’auras plus qu’à faire un clic pour mettre à jour l’image de test pour tester !!^^ Je suis totalement hypé, on entre dans une autre air.

Mon dev actuel fonctionne, Cloud et Local. Il amène toutefois quelques contrainte , mais on s’en sort.

Une grosse régression, pour le moment en tout cas, côté Tuya : on perd la création automatique d’issue Github. Mais je suis persuadé qu’on trouvera une solution ^^

J’espère que cela te convient, mais sache que toutes les avancées qu’on a fait là et l’expérience acquise sont uuultra utile pour la conception de l’intégration externe ^^

:heart_eyes: :heart_eyes:

J’ai vu ! Et vas-y !

Le développement de cette manière de travailler dans Gladys me semble une excellente idée !

C’était cool mais ça doit pouvoir se substituer. Si on propose de copier les features des devices que l’utilisateur serveur coller dans un template de base qui lui serait créé en cliquant sur un lien, ça doit être acceptable comme fonctionnement. De toutes façons, cela implique que l’utilisateur ait un compte GitHub ce qui n’est pas souvent le cas.

D’ailleurs, le post devait se faire dans le GitHub de Gladys ou de l’intégration ?

Je suis évidemment toujours dispo pour faire des tests !

De l’intégration :wink:

Bon et bien @GBoulvin, si tu es chaud pour lancer et tester l’image de Pierre-Gilles pour les intégrations externes, c’est quand tu veux pour une nouvelle passe de test ^^

Nous en sommes avec Claude Fable à l’intégration de la PR7 (Prises LSC) dans l’intégration externe Tuya !! Et il n’y a que toi qui peut tester ^^

La PR9 (Climatisations) est déjà intégrée. La PR8 (Thermostats) est en cours. Ensuite on arrive à la sonnette ^^ Déjà !

EDIT : PR8 intégrée, release 1.3.0 sortie => Package gladys-tuya · GitHub

:tada: L’intégration externe gladys-tuya passe en v1.5.0 ! Package gladys-tuya · GitHub

Petit récap de tout ce que contient l’intégration aujourd’hui, pour ceux qui nous rejoignent :backhand_index_pointing_down:

Les appareils gérés

:electric_plug: Prises connectées (dont la prise LSC FR avec mesure de conso)
:high_voltage: Compteurs d’énergie (y compris triphasé)
:snowflake: Climatiseurs (marche/arrêt, mode, consigne, température)
:fire: Thermostats fil pilote (dont Konyks eCosy) : mode, consigne, température, verrou enfant, conso…
:light_bulb: Et les basiques : interrupteurs, lumières, volets

Cloud ET local, au choix

Chaque appareil affiche un macaron Local ou Cloud pour savoir comment il communique. Un simple bouton « Préférer la connexion locale » vous laisse décider : le local est plus rapide et fonctionne même sans internet, avec repli automatique sur le cloud si besoin.

Retour d’état instantané :high_voltage: (le gros morceau)

Fini d’attendre le rafraîchissement : quand vous allumez un appareil (physiquement, depuis l’appli Tuya ou une autre télécommande), l’état remonte dans Gladys quasi immédiatement, dans les deux modes :

En local : une connexion permanente est maintenue avec vos appareils du réseau.
En cloud : via le service temps réel de Tuya, appelé Pulsar (activable en option, voir plus bas).

Confort au quotidien

:magnifying_glass_tilted_right: Découverte automatique des appareils, avec détection locale manuelle (par IP) pour ceux que le réseau ne trouve pas seul
:link: État de connexion au cloud affiché en clair (avec la raison en cas de souci)
:stop_sign: Bouton pour se déconnecter/reconnecter au cloud à la demande
:counterclockwise_arrows_button: Mises à jour de l’intégration en un clic, sans rien réinstaller

À propos du Pulsar (retour cloud temps réel)

C’est une option à activer si vous avez des appareils qui ne sont pas en local. Deux petites étapes : activer « Message Service » sur votre projet Tuya IoT, puis cocher l’option dans la config de l’intégration. Une doc détaillée arrivera pour ça. À noter : certains appareils remontent tout en instantané, d’autres seulement une partie — ça dépend de ce que l’appareil envoie lui-même au cloud.

Le tout est solide et tourne en continu sur mon banc de test (10 appareils). Bon test à vous, et retours bienvenus ! :raising_hands:

ghcr.io/terdious/gladys-tuya:1.5.0

Premier test !

Tout d’abord, j’avais pensé qu’il fallait se décarcasser à chercher et retenir les liens docker pour installer une extension mais… Même ça n’est pas nécessaire car c’est déjà listé !

Installation d’un simple clic donc, nickel !

Alors, sur la page d’accueil (Appareils ET Découverte), il manque de nouveau l’invitation à se rendre sur la page « configuration » la première fois. Ou cette première fois, on pourrait directement atterrir sur cette page ?

Sur la page configuration, il va falloir remettre l’explication sur la manière de créer un compte etc.

Après config, jle message « configuration enregistrée » ne sous-entend plus que la connexion est bonne. Possible d’ajouter ?

Dans la page de scan, je n’ai pas vu de signe de travail en cours et j’ai cru que ce n’était pas bon alors que quelques secondes plus tard, bingo ! Les deux prises et le Smart Meter fonctionnent !

Par contre, pour passer en local, pas de scan ? Pourtant, dans l’onglet « Journaux », on voit bien :

[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

En fait, je ne comprends pas bien. L’appareil passe en local automatiquement puis repasse en cloud si le poll est trop lent ? J’en ai vu un passer de l’un à l’autre mais c’est flou… Et impossible de passer en mode local manuellement facilement.

Mais en cloud, ça roule !

Edit : sur les trois appareils listés, un est une prise, l’autre une caméra, le troisième la sonnette

Edit 2 : Après avoir cherché, j’ai trouvé qu’on pouvait mettre le mode local manuellement, et ça marche !

Tu as raison, je traites ça

Volet 1 : routing post-install : après l’installation, on atterrit désormais sur l’onglet Configuration dès que le manifeste déclare un config_schema (les intégrations communication le faisaient déjà). Une intégration sans configuration continue d’arriver sur Appareils.

Volet 2 : états vides : quand la liste est vide et que le manifeste a un config_schema, une invitation avec lien cliquable vers l’onglet Configuration s’affiche sous le message existant :

  • Appareils : « Si vous venez d’installer cette intégration, commencez par renseigner l’onglet Configuration, puis lancez une découverte. »
  • Découverte : « Rien trouvé ? Vérifiez que l’intégration est bien configurée dans l’onglet Configuration, puis relancez un scan. »

Salut @GBoulvin,

Suite aux ajout de Pierre-Gilles la majorité de tes retours sont traités :rocket:



Du coup :

  • Peux-tu me confirmer que les indications sont maintenant suffisante et que la documentation est claire ?
  • tu me confirmes que tout tes appareils censé être pris en charge sont reconnus et ont toutes leurs fonctionnalités ? Car il me semblait que tu avais :
    • Une prise LSC Smart Power Plug qui elle n’était pas entierement prise en charge dans l’intégration core, mais qu’on a testé en intégration core dev et qui est censée être prise en charge entierement maintenant directement dans l’intégration de test … Est-ce bien le cas ?
    • Un Smart Meter qui lui fonctionnait … Mais qui ne serait pas vu de ce que je comprend car tu ne vois que 3 appareils ?
    • Une camera LSC PTZ Camera => Ah très intéressant ça !! Type d’équipement fonctionnel sur l’intégration Netatmo, donc on devrait pouvoir l’intégrer maintenant ^^ Tu pourras me montrer ce que tu as (Découverte en image + si possible me copier l’objet correspondant dans le devtools du navigateur (Onglet réseau / requete Discovered_device / Onglet Aperçu et trouver le bon appareil :slight_smile: )
    • Sonnette Wifi video doorbell => Pour le moment pas injecté ^^

Merci encore à toi !

Salut !

Sans savoir si c’est utile, voici le log complet de l’intégration :

[2026-08-01T05:46:16.640Z] [INFO] Starting the Tuya integration...
[2026-08-01T05:46:16.841Z] [INFO] [gladys-sdk] connected to Gladys (http://172.30.0.1:80)
[2026-08-01T05:46:16.841Z] [INFO] WebSocket connected to Gladys
[2026-08-01T05:46:16.851Z] [WARN] Tuya is not configured yet: fill in the integration settings in Gladys
[2026-08-01T05:46:16.854Z] [WARN] Tuya discovery skipped (status=not_initialized)
[2026-08-01T05:48:24.639Z] [INFO] onConfigUpdated -> new configuration received
[2026-08-01T05:48:24.640Z] [INFO] [tuya] Disconnecting from Tuya... (manual=false)
[2026-08-01T05:48:24.641Z] [INFO] [tuya] Connecting to Tuya...
[2026-08-01T05:48:24.941Z] [INFO] [tuya] Connected to Tuya
[2026-08-01T05:48:25.088Z] [INFO] [tuya] 6 Tuya devices found
[2026-08-01T05:48:25.363Z] [INFO] [tuya] [Tuya][localScan] Starting mediated udp-broadcast scan for 10s
[2026-08-01T05:48:31.375Z] [INFO] onScanRequest -> discovering Tuya devices
[2026-08-01T05:48:35.406Z] [INFO] [tuya] [Tuya][localScan] Found device bf1d9d0b6ed2b5755fkt24 ip=192.168.1.42 version=3.4
[2026-08-01T05:48:35.406Z] [INFO] [tuya] [Tuya][localScan] Found device bf9313bc9aa50670d9wf7x ip=192.168.1.182 version=3.3
[2026-08-01T05:48:35.406Z] [INFO] [tuya] [Tuya][localScan] Found device bf0e59548489fcb4ea62of ip=192.168.1.205 version=3.3
[2026-08-01T05:48:35.407Z] [INFO] [tuya] [Tuya][localScan] Found device bf85d2ce4746ff3ebeifas ip=192.168.1.203 version=3.3
[2026-08-01T05:48:35.408Z] [INFO] [tuya] [Tuya][localScan] Scan complete. Found 4 device(s).
[2026-08-01T05:48:35.412Z] [WARN] [tuya] Tuya function with "basic_indicator" code is not managed
[2026-08-01T05:48:35.412Z] [WARN] [tuya] Tuya function with "doorbell_active" code is not managed
[2026-08-01T05:48:35.412Z] [WARN] [tuya] Tuya function with "doorbell_pic" code is not managed
[2026-08-01T05:48:35.412Z] [WARN] [tuya] Tuya function with "basic_device_volume" code is not managed
[2026-08-01T05:48:35.413Z] [WARN] [tuya] Tuya function with "fault" code is not managed
[2026-08-01T05:48:35.415Z] [WARN] [tuya] Tuya function with "basic_anti_flicker" code is not managed
[2026-08-01T05:48:35.416Z] [WARN] [tuya] Tuya function with "initiative_message" code is not managed
[2026-08-01T05:49:05.706Z] [INFO] onDeviceCreated <- ext:ext-dev-tuya:device:bf9313bc9aa50670d9wf7x
[2026-08-01T05:49:05.861Z] [INFO] [tuya] [Tuya][localSession] device=bf9313bc9aa50670d9wf7x connected (192.168.1.182, 3.3)
[2026-08-01T05:49:09.345Z] [INFO] [tuya] [Tuya][poll] device=bf9313bc9aa50670d9wf7x requested=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] device=bf85d2ce4746ff3ebeifas connected (192.168.1.203, 3.3)
[2026-08-01T05:49:12.714Z] [INFO] [tuya] [Tuya][localSession] device=bf9313bc9aa50670d9wf7x connected (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] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T05:49:15.201Z] [INFO] [tuya] [Tuya][poll] device=bf85d2ce4746ff3ebeifas requested=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] device=bf85d2ce4746ff3ebeifas connected (192.168.1.203, 3.3)
[2026-08-01T05:49:17.988Z] [INFO] [tuya] [Tuya][poll] device=bf0e59548489fcb4ea62of requested=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] device=bf9313bc9aa50670d9wf7x connected (192.168.1.182, 3.3)
[2026-08-01T05:49:21.851Z] [INFO] [tuya] [Tuya][localSession] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T05:49:23.718Z] [INFO] [tuya] [Tuya][poll] device=bf9313bc9aa50670d9wf7x local parked 300s after 3 failures (Local poll timeout) -> cloud
[2026-08-01T05:49:27.558Z] [INFO] [tuya] [Tuya][localSession] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T05:49:30.560Z] [INFO] [tuya] [Tuya][poll] device=bf0e59548489fcb4ea62of local parked 300s after 3 failures (Local poll timeout) -> cloud
[2026-08-01T05:49:30.714Z] [INFO] [tuya] [Tuya][localSession] device=bf85d2ce4746ff3ebeifas connected (192.168.1.203, 3.3)
[2026-08-01T05:49:33.717Z] [INFO] [tuya] [Tuya][poll] device=bf85d2ce4746ff3ebeifas local parked 300s after 3 failures (Local poll timeout) -> cloud
[2026-08-01T05:54:27.822Z] [INFO] [tuya] [Tuya][localSession] device=bf9313bc9aa50670d9wf7x connected (192.168.1.182, 3.3)
[2026-08-01T05:54:37.620Z] [INFO] [tuya] [Tuya][localSession] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T05:54:40.753Z] [INFO] [tuya] [Tuya][localSession] device=bf85d2ce4746ff3ebeifas connected (192.168.1.203, 3.3)
[2026-08-01T05:59:37.793Z] [INFO] [tuya] [Tuya][localSession] device=bf9313bc9aa50670d9wf7x connected (192.168.1.182, 3.3)
[2026-08-01T05:59:47.614Z] [INFO] [tuya] [Tuya][localSession] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T05:59:50.776Z] [INFO] [tuya] [Tuya][localSession] device=bf85d2ce4746ff3ebeifas connected (192.168.1.203, 3.3)
[2026-08-01T06:04:48.177Z] [INFO] [tuya] [Tuya][localSession] device=bf9313bc9aa50670d9wf7x connected (192.168.1.182, 3.3)
[2026-08-01T06:04:57.613Z] [INFO] [tuya] [Tuya][localSession] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T06:05:00.752Z] [INFO] [tuya] [Tuya][localSession] device=bf85d2ce4746ff3ebeifas connected (192.168.1.203, 3.3)
[2026-08-01T06:09:57.634Z] [INFO] [tuya] [Tuya][localSession] device=bf9313bc9aa50670d9wf7x connected (192.168.1.182, 3.3)
[2026-08-01T06:10:07.422Z] [INFO] [tuya] [Tuya][localSession] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T06:10:10.647Z] [INFO] [tuya] [Tuya][localSession] device=bf85d2ce4746ff3ebeifas connected (192.168.1.203, 3.3)
[2026-08-01T06:13:35.436Z] [INFO] onAction detect_protocol <- device=caméra carport ip=192.168.1.203
[2026-08-01T06:13:35.437Z] [INFO] [tuya] [Tuya][detectProtocol] device=bf85d2ce4746ff3ebeifas trying 3.3 at 192.168.1.203
[2026-08-01T06:13:40.438Z] [WARN] [tuya] [Tuya][localPoll] failed for device=bf85d2ce4746ff3ebeifas 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: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: Local socket error: HMAC mismatch: expected da3b7d1ae2d6dbc6bf1279657789828004b18ef7fa6f49ad91c8b2991c9960d0, was 29a73a8f5cd185beb14cb4f8f20f4c51fe86f8d64ccf43382625de380a81825c. ... (truncated)
[2026-08-01T06:13:40.549Z] [INFO] [tuya] [Tuya][localPoll] last socket error for device=bf85d2ce4746ff3ebeifas: Local socket error: HMAC mismatch: expected da3b7d1ae2d6dbc6bf1279657789828004b18ef7fa6f49ad91c8b2991c9960d0, was 29a73a8f5cd185beb14cb4f8f20f4c51fe86f8d64ccf43382625de380a81825c. ... (truncated)
[2026-08-01T06:13:40.549Z] [WARN] [tuya] [Tuya][localPoll] failed for device=bf85d2ce4746ff3ebeifas Error: Local socket error: HMAC mismatch: expected da3b7d1ae2d6dbc6bf1279657789828004b18ef7fa6f49ad91c8b2991c9960d0, was 29a73a8f5cd185beb14cb4f8f20f4c51fe86f8d64ccf43382625de380a81825c. ... (truncated)
    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)
[2026-08-01T06:13:40.551Z] [INFO] [tuya] [Tuya][detectProtocol] device=bf85d2ce4746ff3ebeifas trying 3.5 at 192.168.1.203
    at Readable.push (node:internal/streams/readable:394:5)
    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)
[2026-08-01T06:13:40.783Z] [INFO] [tuya] [Tuya][localPoll] socket error for device=bf85d2ce4746ff3ebeifas: Local socket error
[2026-08-01T06:13:55.556Z] [WARN] [tuya] [Tuya][localPoll] failed for device=bf85d2ce4746ff3ebeifas 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:13:55.557Z] [INFO] [tuya] [Tuya][detectProtocol] device=bf85d2ce4746ff3ebeifas trying 3.1 at 192.168.1.203
[2026-08-01T06:13:55.618Z] [WARN] [tuya] [Tuya][localPoll] failed for device=bf85d2ce4746ff3ebeifas Error: Invalid local poll response: parse data error
    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 <- device=caméra carport ip=192.168.1.203
[2026-08-01T06:14:21.631Z] [INFO] [tuya] [Tuya][detectProtocol] device=bf85d2ce4746ff3ebeifas trying 3.3 at 192.168.1.203
[2026-08-01T06:14:26.636Z] [WARN] [tuya] [Tuya][localPoll] failed for device=bf85d2ce4746ff3ebeifas Error: Local poll 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] device=bf85d2ce4746ff3ebeifas trying 3.4 at 192.168.1.203
    at process.processTimers (node:internal/timers:541:7)
[2026-08-01T06:14:26.693Z] [WARN] [tuya] [Tuya][localPoll] failed for device=bf85d2ce4746ff3ebeifas Error: Local socket error: HMAC mismatch: expected da3b7d1ae2d6dbc6bf1279657789828004b18ef7fa6f49ad91c8b2991c9960d0, was 29a73a8f5cd185beb14cb4f8f20f4c51fe86f8d64ccf43382625de380a81825c. ... (truncated)
    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 error for device=bf85d2ce4746ff3ebeifas: Local socket error: HMAC mismatch: expected da3b7d1ae2d6dbc6bf1279657789828004b18ef7fa6f49ad91c8b2991c9960d0, was 29a73a8f5cd185beb14cb4f8f20f4c51fe86f8d64ccf43382625de380a81825c. ... (truncated)
[2026-08-01T06:14:26.693Z] [INFO] [tuya] [Tuya][localPoll] last socket error for device=bf85d2ce4746ff3ebeifas: Local socket error: HMAC mismatch: expected da3b7d1ae2d6dbc6bf1279657789828004b18ef7fa6f49ad91c8b2991c9960d0, was 29a73a8f5cd185beb14cb4f8f20f4c51fe86f8d64ccf43382625de380a81825c. ... (truncated)
[2026-08-01T06:14:26.693Z] [INFO] [tuya] [Tuya][detectProtocol] device=bf85d2ce4746ff3ebeifas trying 3.5 at 192.168.1.203
[2026-08-01T06:14:26.754Z] [INFO] [tuya] [Tuya][localPoll] socket error for device=bf85d2ce4746ff3ebeifas: Local socket error: Error from socket: read ECONNRESET
[2026-08-01T06:14:26.918Z] [INFO] [tuya] [Tuya][localPoll] socket error for device=bf85d2ce4746ff3ebeifas: Local socket error
[2026-08-01T06:14:36.758Z] [INFO] [tuya] [Tuya][localPoll] last socket error for device=bf85d2ce4746ff3ebeifas: Local socket error: Error from socket: read ECONNRESET
[2026-08-01T06:14:36.758Z] [WARN] [tuya] [Tuya][localPoll] failed for device=bf85d2ce4746ff3ebeifas 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:14:36.759Z] [INFO] [tuya] [Tuya][detectProtocol] device=bf85d2ce4746ff3ebeifas trying 3.1 at 192.168.1.203
[2026-08-01T06:14:36.818Z] [INFO] [tuya] [Tuya][localPoll] socket error for device=bf85d2ce4746ff3ebeifas: Local socket error: Error from socket: read ECONNRESET
[2026-08-01T06:14:36.819Z] [INFO] [tuya] [Tuya][localPoll] last socket error for device=bf85d2ce4746ff3ebeifas: Local socket error: Error from socket: read ECONNRESET
[2026-08-01T06:14:36.819Z] [WARN] [tuya] [Tuya][localPoll] failed for device=bf85d2ce4746ff3ebeifas Error: Local socket error: Error from 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] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T06:15:20.606Z] [INFO] [tuya] [Tuya][localSession] device=bf85d2ce4746ff3ebeifas connected (192.168.1.203, 3.3)
[2026-08-01T06:16:28.156Z] [INFO] onAction detect_protocol <- device=Visiophone WiFi ip=192.168.1.205
[2026-08-01T06:16:28.156Z] [INFO] [tuya] [Tuya][detectProtocol] device=bf0e59548489fcb4ea62of trying 3.3 at 192.168.1.205
[2026-08-01T06:16:33.158Z] [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:33.159Z] [INFO] [tuya] [Tuya][detectProtocol] device=bf0e59548489fcb4ea62of trying 3.4 at 192.168.1.205
[2026-08-01T06:16:33.171Z] [INFO] [tuya] [Tuya][localPoll] socket error for device=bf0e59548489fcb4ea62of: Local socket error
[2026-08-01T06:16:33.192Z] [INFO] [tuya] [Tuya][localPoll] socket error for device=bf0e59548489fcb4ea62of: Local socket error: HMAC mismatch: expected 3edb24fc0923355ea5add79c0834f05124461cccbbd79c7be7fa5354097d58b0, was 6030b642613fcf3f6ed2000ee4ff55fd083c1338270573b621614548cef2dc73. ... (truncated)
[2026-08-01T06:16:33.193Z] [INFO] [tuya] [Tuya][localPoll] last socket error for device=bf0e59548489fcb4ea62of: Local socket error: HMAC mismatch: expected 3edb24fc0923355ea5add79c0834f05124461cccbbd79c7be7fa5354097d58b0, was 6030b642613fcf3f6ed2000ee4ff55fd083c1338270573b621614548cef2dc73. ... (truncated)
[2026-08-01T06:16:33.193Z] [WARN] [tuya] [Tuya][localPoll] failed for device=bf0e59548489fcb4ea62of Error: Local socket error: HMAC mismatch: expected 3edb24fc0923355ea5add79c0834f05124461cccbbd79c7be7fa5354097d58b0, was 6030b642613fcf3f6ed2000ee4ff55fd083c1338270573b621614548cef2dc73. ... (truncated)
    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: Invalid local poll response: parse data error
    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)

Les fonctionnalités détectées (une est passée en local toute seule, les deux autres, voir ci-dessous) :

Et les fonctionnalités prises en charge :

Les objets caméras :

La 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
}

La PTZ 2.4GHz

{
    "name": "Caméra entrée",
    "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": "Image flip",
            "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 mode",
            "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": "Motion detection",
            "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": "Recording",
            "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": "Siren",
            "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": "Motion tracking",
            "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": "Human detection filter",
            "category": "switch",
            "type": "binary"
        }
    ],
    "device_type": "camera",
    "external_id": "ext:ext-dev-tuya:device:bf9313bc9aa50670d9wf7x",
    "model": "LSC PTZ Camera",
    "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
}

Et le visiophone (oui, je sais, tu l’as déjà mais…)

{
    "name": "Visiophone Wifi",
    "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": "Image flip",
            "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": "Motion detection",
            "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": "Recording",
            "category": "switch",
            "type": "binary"
        }
    ],
    "device_type": "camera",
    "external_id": "ext:ext-dev-tuya:device:bf0e59548489fcb4ea62of",
    "model": "Wifi video doorbell",
    "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
}

Ca a l’air pas mal tout ça, non ? En tout cas, les fonctionnalités détectées et les toggles ne sont pas là pour la décoration, ils fonctionnent ! (Le bouton ‹ sirène › donne une nouvelle dimension à la partie ‹ alarme › de Gladys ! C’était ce qu’il me manquait pour que ça fasse ‹ vrai ›)

Je pense que tout ceci répond à tes demandes mais n’hésite surtout pas si j’ai raté quelque-chose !

Trop bien :heart_eyes: :joy: !!

On zieute ça et on te redis !! C’est trop classe !! Non mais c’est fou en vrai !! On se sent comme des gosses en ce moment avec tout ça :joy: :joy:

On redécouvre un certains plaisir ^^ Et des verrous se débloquent, qui n’étaient présent que par manque de temps de chacun !!

Bon le temps que j’écrive cela, la release v1.7.0 arrive déjà avec la caméra ^^ :face_with_peeking_eye: :sweat_smile: :

Ce que le test prouve

  • Détection nickel : les 3 appareils → device_type: camera, avec les toggles. Ils répondent (cloud). La sirène qui alimente l’alarme Gladys = exactement l’effet visé. :white_check_mark:
  • Le macaron « dégradé » fonctionne parfaitement : Caméra entrée est passée Local toute seule (elle pousse ses DPS via la session persistante), tandis que Caméra carport et Visiophone restent Cloud avec point orange — local-capables mais retombées cloud. C’est pile le comportement conçu.

Le vrai enseignement technique (local caméra)

Les logs montrent localSession connected sur les 3, mais poll … fallback=local_poll_failed puis parking cloud. Et detect_protocol échoue sur tous les protocoles (3.4 = HMAC mismatch = mauvais protocole ; 3.3/3.5 = timeout).
Traduction : la session TCP s’ouvre, mais ces caméras ne répondent pas à la requête DPS get en local — certaines poussent leurs changements (→ Local), d’autres non (→ Cloud). C’est un comportement firmware caméra, pas un bug.

Conclusion : pour les caméras, le cloud est le transport fiable ; le local reste un bonus opportuniste. Rien à corriger.

Et maintenant il reprend le travail fait dans l’integration core sur la sonnette pour l’implémenter !!

@GBoulvin ! :folded_hands:

Grâce à tes logs ultra-complets (l’objet du Visiophone + le doorbell_pic), j’ai pu backporter le visiophone directement, en m’appuyant sur la branche core tuya-diagnostics-doorbell-ring qu’on avait préparé. Nouvelle image de test dispo :

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

Ce qui est nouveau

Ton Visiophone n’est plus une « caméra à 3 toggles » : il devient un vrai type video-doorbell avec :

  • :bell: Sonnerie (feature bouton) — se déclenche quand on sonne
  • :camera_with_flash: Snapshot (feature caméra/image) — la photo de l’appui/détection s’affiche dans le widget
  • Motion detection, Recording, Status LED, Image flip, On-screen display (cloud + local)

:warning: Snapshot sur événement, pas de live vidéo. Les caméras Tuya n’exposent pas de RTSP local stable — donc pas de flux live comme Netatmo. L’image se rafraîchit à chaque appui sonnette / détection de mouvement. C’est une limite Tuya, pas Gladys.

Comment tester

  1. Redéploie le conteneur sur le tag :dev-doorbell — et fais un redémarrage complet du conteneur (comme la dernière fois :wink:).
  2. Force update (pour rafraîchir le manifeste).
  3. Le Visiophone change de type → supprime-le puis re-découvre-le pour qu’il soit recréé en video-doorbell.
  4. Pulsar doit être activé (l’image et la sonnerie temps réel passent par l’URL signée ~60 s fournie par Pulsar).

Ce que j’aimerais que tu vérifies

  • Le Visiophone apparaît bien en video-doorbell avec les 7 features ci-dessus ?
  • :bell: Un appui sonnette déclenche-t-il l’événement Sonnerie dans Gladys (feature bouton / historique) ?
  • :camera_with_flash: Le widget image affiche-t-il le snapshot après un appui / une détection de mouvement ?
  • Les toggles (motion, recording, LED, flip, OSD) répondent-ils en cloud ?

:magnifying_glass_tilted_right: Si tu veux creuser les logs, filtre sur [Tuya][media] : tu devrais voir doorbell ring, snapshot published, ou encrypted … not supported yet (le movement_detect_pic est parfois chiffré → normal qu’il soit ignoré, le doorbell_pic lui est en clair).

[details=« Resté volontairement de côté pour l’instant »]

  • Les réglages enum (vision nocturne, sensibilité, mode d’enregistrement) : pas encore de type « sélecteur » publié côté core (même blocage que le fan-speed de la clim).
  • Le volume de sonnerie et le PTZ : prochains incréments.
  • Les caméras PTZ restent en type camera (contrôles), inchangées.
    [/details]

:latest n’est pas touché — rien ne bouge sur ton install principale tant que ce n’est pas validé. Merci d’avance pour le test ! :rocket:

Jackpot !

Quand on sonne :

Les toggles fonctionnent et envoient bien vers le cloud (modification immédiate dans l’appli (je n’ai pas testé ‹ Recording › car il n’y a pas de carte µSD dedans).

Par contre, la détection de mouvement n’as pas (encore) envoyé de notif ni d’image.

Le log :

[2026-08-01T07:51:49.304Z] [INFO] Starting the Tuya integration...
[2026-08-01T07:51:49.505Z] [INFO] [gladys-sdk] connected to Gladys (http://172.30.0.1:80)
[2026-08-01T07:51:49.505Z] [INFO] WebSocket connected to Gladys
[2026-08-01T07:51:49.570Z] [INFO] [tuya] Connecting to Tuya...
[2026-08-01T07:51:50.038Z] [INFO] [tuya] Connected to Tuya
[2026-08-01T07:51:50.126Z] [INFO] [tuya] 6 Tuya devices found
[2026-08-01T07:51:50.271Z] [INFO] [tuya] [Tuya][pulsar] connected to the Tuya message service (real-time cloud events)
[2026-08-01T07:51:50.915Z] [INFO] [tuya] [Tuya][localScan] Starting mediated udp-broadcast scan for 10s
[2026-08-01T07:52:00.943Z] [INFO] [tuya] [Tuya][localScan] Found device bf0e59548489fcb4ea62of ip=192.168.1.205 version=3.3
[2026-08-01T07:52:00.943Z] [INFO] [tuya] [Tuya][localScan] Found device bf9313bc9aa50670d9wf7x ip=192.168.1.182 version=3.3
[2026-08-01T07:52:00.944Z] [INFO] [tuya] [Tuya][localScan] Found device bf85d2ce4746ff3ebeifas ip=192.168.1.203 version=3.3
[2026-08-01T07:52:00.944Z] [INFO] [tuya] [Tuya][localScan] Found device bf1d9d0b6ed2b5755fkt24 ip=192.168.1.42 version=3.4
[2026-08-01T07:52:00.946Z] [INFO] [tuya] [Tuya][localScan] Scan complete. Found 4 device(s).
[2026-08-01T07:52:00.953Z] [WARN] [tuya] Tuya function with "fault" code is not managed
[2026-08-01T07:52:00.956Z] [WARN] [tuya] Tuya function with "basic_anti_flicker" code is not managed
[2026-08-01T07:52:00.956Z] [WARN] [tuya] Tuya function with "initiative_message" code is not managed
[2026-08-01T07:52:44.105Z] [INFO] onScanRequest -> discovering Tuya devices
[2026-08-01T07:52:44.253Z] [INFO] [tuya] 6 Tuya devices found
[2026-08-01T07:52:44.477Z] [INFO] [tuya] [Tuya][localScan] Starting mediated udp-broadcast scan for 10s
[2026-08-01T07:52:54.499Z] [INFO] [tuya] [Tuya][localScan] Found device bf85d2ce4746ff3ebeifas ip=192.168.1.203 version=3.3
[2026-08-01T07:52:54.499Z] [INFO] [tuya] [Tuya][localScan] Found device bf1d9d0b6ed2b5755fkt24 ip=192.168.1.42 version=3.4
[2026-08-01T07:52:54.499Z] [INFO] [tuya] [Tuya][localScan] Found device bf0e59548489fcb4ea62of ip=192.168.1.205 version=3.3
[2026-08-01T07:52:54.499Z] [INFO] [tuya] [Tuya][localScan] Found device bf9313bc9aa50670d9wf7x ip=192.168.1.182 version=3.3
[2026-08-01T07:52:54.500Z] [INFO] [tuya] [Tuya][localScan] Scan complete. Found 4 device(s).
[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] device=bf85d2ce4746ff3ebeifas connected (192.168.1.203, 3.3)
[2026-08-01T07:54:36.079Z] [INFO] [tuya] [Tuya][poll] device=bf85d2ce4746ff3ebeifas requested=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-01T07:54:36.163Z] [INFO] onDeviceCreated <- ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of
[2026-08-01T07:54:36.187Z] [INFO] [tuya] [Tuya][localSession] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T07:54:37.905Z] [INFO] [tuya] [Tuya][localSession] device=bf85d2ce4746ff3ebeifas connected (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] device=bf9313bc9aa50670d9wf7x connected (192.168.1.182, 3.3)
[2026-08-01T07:54:39.268Z] [INFO] [tuya] [Tuya][poll] device=bf0e59548489fcb4ea62of requested=local has_local=true mode=cloud strategy=legacy features=7 local_handled=0 local_changed=0 cloud_handled=5 cloud_changed=5 cloud_missing=0 fallback=local_poll_failed
[2026-08-01T07:54:41.552Z] [INFO] [tuya] [Tuya][poll] device=bf9313bc9aa50670d9wf7x requested=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-01T07:54:43.172Z] [INFO] [tuya] [Tuya][localSession] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T07:54:45.441Z] [INFO] [tuya] [Tuya][localSession] device=bf9313bc9aa50670d9wf7x connected (192.168.1.182, 3.3)
[2026-08-01T07:54:47.897Z] [INFO] [tuya] [Tuya][localSession] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T07:54:50.899Z] [INFO] [tuya] [Tuya][poll] device=bf0e59548489fcb4ea62of local parked 300s after 3 failures (Local poll timeout) -> cloud
[2026-08-01T07:54:50.968Z] [INFO] [tuya] [Tuya][localSession] device=bf85d2ce4746ff3ebeifas connected (192.168.1.203, 3.3)
[2026-08-01T07:54:53.971Z] [INFO] [tuya] [Tuya][poll] device=bf85d2ce4746ff3ebeifas local parked 300s after 3 failures (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] device=bf0e59548489fcb4ea62of real-time report published 1 change(s)
[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] device=bf0e59548489fcb4ea62of requested=local has_local=true mode=cloud strategy=legacy features=7 local_handled=0 local_changed=0 cloud_handled=5 cloud_changed=1 cloud_missing=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] device=bf0e59548489fcb4ea62of real-time report published 1 change(s)
[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] device=bf0e59548489fcb4ea62of real-time report published 1 change(s)
[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] device=bf0e59548489fcb4ea62of real-time report published 1 change(s)
[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] device=bf0e59548489fcb4ea62of real-time report published 1 change(s)
[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] device=bf0e59548489fcb4ea62of real-time report published 1 change(s)
[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] device=bf0e59548489fcb4ea62of real-time report published 1 change(s)
[2026-08-01T07:59:51.004Z] [INFO] [tuya] [Tuya][localSession] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T07:59:54.122Z] [INFO] [tuya] [Tuya][localSession] device=bf85d2ce4746ff3ebeifas connected (192.168.1.203, 3.3)
[2026-08-01T08:01:28.729Z] [WARN] [tuya] [Tuya][media] encrypted movement_detect_pic image not supported yet (device=ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of)
[2026-08-01T08:01:29.002Z] [INFO] [tuya] [Tuya][media] doorbell ring (device=ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of)
[2026-08-01T08:01:30.202Z] [INFO] [tuya] [Tuya][media] doorbell_pic snapshot published (device=ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of)
[2026-08-01T08:03:38.490Z] [WARN] [tuya] [Tuya][media] encrypted movement_detect_pic image not supported yet (device=ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of)
[2026-08-01T08:04:58.329Z] [INFO] [tuya] [Tuya][localSession] device=bf0e59548489fcb4ea62of connected (192.168.1.205, 3.3)
[2026-08-01T08:05:01.409Z] [INFO] [tuya] [Tuya][localSession] device=bf85d2ce4746ff3ebeifas connected (192.168.1.203, 3.3)
[2026-08-01T08:05:35.255Z] [WARN] [tuya] [Tuya][media] encrypted movement_detect_pic image not supported yet (device=ext:ext-dev-tuya-2:device:bf0e59548489fcb4ea62of)

Bravo en tout cas, je n’aurais jamais cru que ça soit possible sans tout bidou-bousiller !

Edit : J’ai bien choisi mon T-shirt pour publier sur le net… :upside_down_face: (Pour info, ça fait référence à une chanson d’Arno : « Putain Putain, c’est vachement bien, on est quand même tous des Européens »)

Re @GBoulvin ! Suite dispo sur le même tag :dev-doorbell (tu n’as qu’à mettre à jour l’image, pas besoin de changer de tag) :

Nouveau

  • :person_running: Événement « Mouvement » : une détection déclenche désormais un événement dans Gladys → utilisable dans tes scènes / notifs, même sans l’image.
  • :framed_picture: Live-view : en ouvrant le widget caméra, Gladys ré-affiche le dernier snapshot connu (dernier appui / dernière détection). Tuya ne fournit pas de capture à la demande, donc c’est la dernière image d’événement.

Transparence : le « Mouvement » est exposé comme un bouton-événement, pas un capteur de mouvement — Gladys n’a pas encore de type « motion-sensor » publié pour les intégrations externes (même limite que le fan-speed de la clim). Et l’image de mouvement reste absente pour l’instant : elle est chiffrée (contrairement à l’image de sonnerie). Le déchiffrement, c’est l’étape d’après, sur une image de test séparée.

:warning: Protocole de test (important)

Avant de basculer définitivement ta sonnette sur :latest (prod), est-ce que tu peux tester chaque image de test et nous faire un retour ? Ça nous évite de figer quelque chose de bancal en prod.

Règle d’or : n’aie JAMAIS ta sonnette ajoutée en même temps sur 2 images distinctes (ex. :latest et :dev-doorbell). Un appareil Tuya n’accepte qu’un seul consommateur — deux intégrations en parallèle se marcheraient dessus (ring/Pulsar/session locale en conflit, doublons). Donc une seule image à la fois : supprime la sonnette d’un côté avant de l’ajouter de l’autre.

À tester sur :dev-doorbell

  • non terminé🏃 Bouge devant la caméra → l’événement Mouvement se déclenche-t-il (feature bouton / historique / une petite scène de test) ?
  • non terminé🖼️ Ouvre le widget caméra → la dernière image (dernier appui/détection) s’affiche-t-elle ?
  • non terminé🔔 La sonnerie + snapshot fonctionnent toujours ?
  • non terminé🔎 Logs [Tuya][media] : tu devrais voir movement_detect_pic event fired (mouvement) et toujours encrypted movement_detect_pic image not supported yet (image de mouvement, normal).

Dès que tu me confirmes que tout est bon, je merge en prod et j’attaque le déchiffrement de l’image de mouvement sur une image :dev dédiée. Merci ! :folded_hands:

Mouvement détecté et scène fonctionnelle !

[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)

La dernière image apparaît bien dans le widget camera, le bouton fonctionne parfaitement, le snapshot est mis à jour immédiatement…

Je dirais GO pour la mise en prod de la sonnette !

Et ce qui est dingue, c’est que ça fonctionne bien mieux que l’app Tuya qui met parfois deux minutes (voire plus) à m’envoyer une notif (pas pratique quand quelqu’un sonne) !

EDIT : Pour info, je viens de tester le motion detection sur les caméras PTZ et il fonctionne !

image

@GBoulvin :tada: v1.9.0 est en prod (:latest) — et c’est grâce à tes derniers retours ! Le mouvement déclenche un événement (scènes/notifs) et le live-view ré-affiche le dernier snapshot. Ta sonnette est prête pour la prod.

Mais avant de la basculer définitivement sur :latest, un dernier test m’aiderait énormément : mets à jour ton image :dev-doorbell (même tag), elle contient maintenant une tentative expérimentale de récupérer l’image de MOUVEMENT.

Pourquoi ce test / ce que ça apporte

Aujourd’hui : un appui sonnette → image :white_check_mark:, mais une détection de mouvement → seulement l’événement, pas d’image (elle est chiffrée par Tuya). Ce test tente de déchiffrer cette image de mouvement. Si ça marche :

  • :camera_with_flash: le mouvement affichera aussi une photo (pas juste la sonnerie),
  • :movie_camera: ça débloquerait l’image sur tes caméras PTZ aussi (elles n’ont que ce flux-là).

C’est un pari incertain (même la branche interne avait laissé ça ouvert). Si ça ne marche pas, aucune régression : la sonnette reste parfaite en v1.9.0.

À tester sur :dev-doorbell (mis à jour)

  • Bouge devant la caméra → une image de mouvement apparaît-elle dans le widget (en plus de l’événement) ?
  • :magnifying_glass_tilted_right: Le plus important : colle-moi les lignes [Tuya][media] de tes logs juste après un mouvement. On cherche l’un de ces cas :
    • :white_check_mark: decrypted with aes-128-… + snapshot publishedgagné !
    • :orange_circle: downloaded N bytes + decryption did not yield a JPEG → téléchargement OK mais mauvais algo/clé (instructif, on itère)
    • :red_circle: no candidate host served… / download failed → l’URL signée ne passe pas (autre piste)

Ce sont ces logs qui nous diront si l’hypothèse tient. :folded_hands:

:warning: Rappel : une seule image à la fois — n’aie pas la sonnette sur :latest et :dev-doorbell en même temps (conflit sur l’appareil Tuya). Reste sur :dev-doorbell le temps du test, puis bascule en prod quand tu veux.