Request for integration with Tuya

For fun, Claude is happy, I’ll give you his complete recap :joy: :

Condensed Recap of Posts #98/#99/#100 — It’s Even Better Than « Not Bad »: Double Jackpot :slot_machine::slot_machine:

:white_check_mark: Pulsar Finally Running at Home

Checked toggle, pulsar_connected in diagnostics, latency < 2 s on the test plug. The doubt is lifted — everything else follows from this.

:slot_machine: Jackpot #1 — The Ring Photo is Acquired (Test C)

At the doorbell ring, Pulsar delivers doorbell_pic = a complete pre-signed S3 URL in base64 (https://ty-eu-storage30-pic.s3.eu-central-1.amazonaws.com/...jpeg?X-Amz-...&X-Amz-Expires=60). Our code rejects it (media_invalid_payload) because it only expects the JSON bucket/files. The fix is trivial: accept this format and download it as is. Bonus: this explains our 403s — the correct host was indeed our S3 candidate, but only the Pulsar message URL carries the AWS pre-signature; the ?param= of the shadow is not downloadable. (The motion photo, on the other hand, arrives encrypted with its AES key but without a downloadable URL — to be handled later, the ring is the priority.)

Another lesson: DP 136 (doorbell_active) never emits any value on any channel → the « Doorbell » event will have to be derived from the arrival of a new doorbell_pic (our existing event-gate already does this for other DPs).

:slot_machine: Jackpot #2 — The Doorbell Speaks Locally, We Finally Know How (Test B)

Reads 3.1 still fail (the 3rd method times out too), BUT the new push_frame_raw frames have revealed everything: the doorbell pushes frames in 3.3 format (prefix "3.3" + encrypted payload) on our 3.1 socket — large frames of 1-2 KB right at the moments of rings and movements. Conclusion: it’s a 3.3 device that pushes its states; the direct 3.3 connection only died because our initial encrypted request caused it to hang up. Next iteration: « pure listen » mode — persistent in 3.3 without any request on connection → tuyapi will natively decode the pushes → instant local ring very likely.

:warning: The Point from Post #100 (Local Commands)

The local SET (persistent and dedicated) never gets an ACK (« Timeout waiting for status response ») → the cloud fallback takes over and works. The « sent via persistent » isolated at 09:59 is a probable false ACK (some frame resolved the promise) — to harden. For the doorbell, commands remain cloud for now; its impression of non-propagation comes from refresh delays + this false ACK.

Plan for the Next Iteration (in Order of Value)

  1. Media: Accept the direct URL payload → download → ring photo in the Camera widget;
  2. Ring: Trigger the Doorbell CLICK on new doorbell_pic;
  3. Local: Persistent « pure listen » 3.3 for device22;
  4. Harden the false ACK of the persistent SET.

Everything is logged in the handoff (part 21). Tell me go and I’ll start the iteration — points 1 and 2 are short and unlock the most visible deliverable (photo + real-time doorbell event).

Hi @GBoulvin,

Thanks again for these new tests. And here’s another round for you (not so easy this doorbell ^^ But we’re clearly getting closer to the goal ^^). Below is the report and the list of new tests to be carried out by Claude :

Your three posts are a goldmine: **double jackpot** :slot_machine::slot_machine: We found the photo AND the local channel. Report, then the new batch (this might be the last one before the split into clean PRs!).

Report of your tests

1. Pulsar: confirmed operational on your end :white_check_mark: (`pulsar_connected`, reaction < 2 s). It’s the one that unlocked everything.

2. :slot_machine: Photo jackpot (Test C): at the ring, the Pulsar message `doorbell_pic` contains the complete and signed download URL of the photo (valid for 60 s). Our code was stupidly rejecting it (it was waiting for another format) — fixed: the photo from your ring will finally display in the Camera widget. Bonus: this explains all our 403s — the S3 server was the right one from the start, but only the URL of the Pulsar message carries the correct signature.

3. :slot_machine: Local jackpot (Test B): the new `push_frame_raw` cards show that your doorbell pushes frames in 3.3 format (encrypted) on the persistent socket, right at the moments of your rings and movements. It speaks locally! The direct 3.3 connection only failed because our initial request made it hang up. The new image therefore opens for it a 3.3 socket mute (zero request, we just listen) — its pushes should be decoded natively.

4. Your « 100% local » test from post #100 — small correction :upside_down_face:: cutting Pulsar is not enough. In your logs, the states and the detection were still going through periodic cloud reading (it’s still running), and your commands were going via the cloud after two failed local attempts (hence the ~10 s latency and the impression of non-propagation!). The real 100% local test is Test C below.

5. The « Doorbell » event (Button click): we understood why it was empty — your doorbell never emits a value on its doorbell DP, on any channel. The new image triggers the event upon receipt of a new ring photo (with anti-duplicate): history and scenes will finally react.

New image (same tag, re-pull) — what’s new

  1. Ring photo downloaded from the Pulsar message URL → Camera widget;

  2. « Doorbell » event triggered on each new ring (instantaneous via Pulsar, with anti-duplicate if the same photo comes through multiple channels);

  3. Pure local listening for the doorbell: persistent socket without any request (this is what was making it hang up);

  4. Doorbell commands directly in the cloud: no more ~10 s latency on your toggles (local attempts doomed to failure are skipped).

Test A — The deliverable: ring + photo + event (5 min) :camera_with_flash::bell:

Doorbell in cloud mode (local substitution unchecked), Pulsar active:

  1. Re-pull the image, restart, open the Doorbell Diagnostic page + the dashboard with the Camera widget.

  2. Ring the doorbell.

  3. Expected: the « Doorbell » event in the history (instantaneous) + the photo in the Camera widget.

  4. → For us to copy: the `doorbell_ring_event` / `media_download_ok` / `media_stored` cards (or their failure variants) — and your visual verdict on the photo!

Test B — Pure local listening (10 min)

  1. Doorbell page: save in 3.3 + local substitution (forced save, as usual). :information_source: We recommend 3.3 because your observed frames are in this format — but nothing is locked, and you won’t have to guess: see step 4.

  2. Wait for persistent: connected on the Diagnostic page. The socket is now mute: you won’t see the « parse data error » every 10 s, it’s normal (and thus « connected » is not enough to prove that the protocol is the right one — only an event will tell).

  3. Ring, then move in front (movement).

  4. The Diagnostic responds immediately, without guessing:

    • push_dps\ cards with real values (DP 136, 154, 115…) → good protocol, local channel decoded — champagne :bottle_with_popping_cork:

    • orange push_frame_version_mismatch\ card → the doorbell speaks another protocol and the card tells you which one (« save the device with protocol 3.X ») → re-save with that one and re-ring;

    • in 3.4/3.5, a bad choice fails outright at connection (no persistent: connected) — immediate elimination.

  5. → For us to copy: the `push_dps` / `push_frame_raw` / `push_frame_version_mismatch` cards around the events.

Test C — The REAL 100% local (5 min, if Test B showed push_dps)

  1. Still in 3.3 + local substitution: uncheck « Real-time events (Pulsar) » AND click « Disconnect » on the Configuration page → Gladys has NO MORE access to the Tuya cloud.

  2. Ring. If the « Doorbell » event still appears in the history: it’s 100% local certified. (The photo, however, cannot be displayed in this mode: its download URL only exists in the Pulsar message — Tuya limitation, not Gladys.)

  3. Reconnect (« Save ») and re-check Pulsar at the end.

Summary :clipboard:

  1. Test A: ring → photo widget + Doorbell event + `media_*`/`doorbell_ring_event` cards;

  2. Test B: pure 3.3 listening → `push_dps`/`push_frame_raw` cards at ring/movement;

  3. Test C (if B conclusive): Pulsar cut + cloud disconnected → does the event arrive?

  4. Your feeling about the latency of the toggles (motion detection) — it should be much better.

A huge thank you — thanks to your captures, we should go from a silent doorbell to a doorbell (almost) fully integrated! :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:

Hi @GBoulvin,

Sorry for the response time, and thanks again for your last tests which should still move things forward!^^

I took the initiative to make a decision; I’m working hard on transposing the current internal Gladys integration into a new external integration. This is something Pierre-Gilles is currently working on intensely to be able to iterate faster. I’m convinced this will improve our testing phases. Normally, you’ll just have to click to update the test image to test!!^^ I’m totally hyped, we’re entering a new era.

My current development works, both Cloud and Local. It does bring some constraints, but we’re managing.

A major regression, at least for now, on the Tuya side: we lose the automatic creation of GitHub issues. But I’m convinced we’ll find a solution^^.

I hope this suits you, but know that all the progress we’ve made here and the experience gained are ultra useful for designing the external integration^^.

:heart_eyes: :heart_eyes:

I saw! And go for it!

Developing this way of working in Gladys seems like an excellent idea to me!

It was cool but it must be replaceable. If we offer to copy the features of the devices that the server user pastes into a base template that would be created for them by clicking on a link, that should be acceptable as a way of working. In any case, this implies that the user has a GitHub account, which is not often the case.

By the way, should the post be made in Gladys’s GitHub or in the integration’s?

I’m obviously always available to do tests!

The integration one :wink:

Well then @GBoulvin, if you’re up for launching and testing Pierre-Gilles’ image for external integrations, it’s whenever you want for a new test run ^^

We’re working with Claude Fable on integrating PR7 (LSC Outlets) into the Tuya external integration!! And you’re the only one who can test it ^^

PR9 (Air Conditioners) is already integrated. PR8 (Thermostats) is in progress. Next up is the doorbell ^^ Already!

EDIT: PR8 integrated, release 1.3.0 out → Package gladys-tuya · GitHub

:tada: The gladys-tuya external integration is now v1.5.0! Package gladys-tuya · GitHub

A quick recap of everything the integration includes today, for those joining us :backhand_index_pointing_down:

Managed Devices

:electric_plug: Smart plugs (including the LSC FR with power consumption measurement)
:high_voltage: Energy meters (including three-phase)
:snowflake: Air conditioners (on/off, mode, setpoint, temperature)
:fire: Pilot wire thermostats (including Konyks eCosy): mode, setpoint, temperature, child lock, consumption…
:light_bulb: And the basics: switches, lights, shutters

Cloud AND local, your choice

Each device displays a Local or Cloud badge to show how it communicates. A simple “Prefer local connection” button lets you decide: local is faster and works even without internet, with automatic fallback to the cloud if needed.

Instant status update :high_voltage: (the big feature)

No more waiting for refreshes: when you turn on a device (physically, from the Tuya app, or another remote), the status updates in Gladys almost immediately, in both modes:

In local mode: a permanent connection is maintained with your network devices.
In cloud mode: via Tuya’s real-time service, called Pulsar (enable as an option, see below).

Daily Comfort

:magnifying_glass_tilted_right: Automatic device discovery, with manual local detection (by IP) for those the network doesn’t find on its own
:link: Cloud connection status displayed clearly (with the reason if there’s an issue)
:stop_sign: Button to disconnect/reconnect from the cloud on demand
:counterclockwise_arrows_button: Integration updates with one click, without reinstalling anything

About Pulsar (real-time cloud feedback)

This is an option to enable if you have devices not in local mode. Two simple steps: enable “Message Service” on your Tuya IoT project, then check the option in the integration config. Detailed documentation will be available for this. Note: some devices send all data instantly, others only part of it — it depends on what the device itself sends to the cloud.

Everything is solid and runs continuously on my test bench (10 devices). Happy testing, and feedback is welcome! :raising_hands:

ghcr.io/terdious/gladys-tuya:1.5.0

First test!

First, I thought I had to struggle to find and remember the Docker links to install an extension, but… Even that is not necessary because it’s already listed!

So, one-click installation, great!

Then, on the home page (Devices AND Discovery), the invitation to go to the « configuration » page is missing again the first time. Or this first time, we could directly land on this page?

On the configuration page, we need to put back the explanation on how to create an account, etc.

After configuration, the message « configuration saved » no longer implies that the connection is good. Can we add that?

In the scan page, I didn’t see any sign of work in progress and I thought it wasn’t working, but a few seconds later, bingo! The two outlets and the Smart Meter are working!

But to go local, no scan? Yet, in the « Logs » tab, we can see:

[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

Actually, I don’t quite understand. The device goes to local automatically and then goes back to the cloud if the poll is too slow? I saw one switch from one to the other, but it’s blurry… And it’s impossible to switch to local mode manually easily.

But in the cloud, it’s working fine!

Edit: out of the three listed devices, one is an outlet, another is a camera, and the third is the doorbell

Edit 2: After looking, I found that we can manually set the local mode, and it works!

Tab 1: post-install routing: after installation, you now land on the Configuration tab as soon as the manifest declares a config_schema (communication integrations already did this). An integration without configuration still goes to Devices.

Tab 2: empty states: when the list is empty and the manifest has a config_schema, an invitation with a clickable link to the Configuration tab appears under the existing message:

  • Devices: „If you just installed this integration, start by filling out the Configuration tab, then launch a discovery.‟
  • Discovery: „Nothing found? Check that the integration is properly configured in the Configuration tab, then run a scan again.‟

Hi @GBoulvin,

Following Pierre-Gilles’ additions, most of your feedback has been addressed :rocket:



So:

  • Can you confirm that the instructions are now sufficient and that the documentation is clear?
  • Can you confirm that all your devices that are supposed to be supported are recognized and have all their functionalities? Because I thought you had:
    • A plug LSC Smart Power Plug which wasn’t fully supported in the core integration, but we tested it in the core dev integration and it should now be fully supported directly in the test integration… Is that the case?
    • A Smart Meter which worked… But which isn’t seen, from what I understand, because you only see 3 devices?
    • A camera LSC PTZ Camera → Oh, that’s very interesting! Device type functional on the Netatmo integration, so we should be able to integrate it now ^^ You can show me what you have (Discovery in images + if possible, copy the corresponding object in the browser’s devtools (Network tab / Discovered_device request / Preview tab and find the right device :slight_smile: )
    • Doorbell Wifi video doorbell → Not injected yet ^^

Thanks again!

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 !

So awesome :heart_eyes: :joy: !!

We’re checking it out and we’ll tell you again!! It’s so cool!! But seriously, it’s crazy!! We feel like kids right now with all this :joy: :joy:

We’re rediscovering a certain pleasure ^^ And some locks are being unlocked, which were only present due to lack of time for everyone!!

Well, by the time I write this, the v1.7.0 release is already here with the camera ^^ :face_with_peeking_eye: :sweat_smile: :

What the test proves

  • Perfect detection: the 3 devices → device_type: camera, with the toggles. They respond (cloud). The siren that powers the Gladys alarm = exactly the intended effect. :white_check_mark:
  • The « degraded » sticker works perfectly: Entrance Camera switched to Local on its own (it pushes its DPS via the persistent session), while Carport Camera and Intercom remain Cloud with orange dot — locally capable but reverted to cloud. This is exactly the designed behavior.

The real technical lesson (local camera)

The logs show localSession connected on all 3, but poll … fallback=local_poll_failed then cloud parking. And detect_protocol fails on all protocols (3.4 = HMAC mismatch = wrong protocol; 3.3/3.5 = timeout).
Translation: the TCP session opens, but these cameras do not respond to the DPS get request locally — some push their changes (→ Local), others do not (→ Cloud). This is a camera firmware behavior, not a bug.

Conclusion: for cameras, the cloud is the reliable transport; local remains an opportunistic bonus. Nothing to fix.

And now he’s going to take the work done in the core integration on the doorbell to implement it!!

@GBoulvin ! :folded_hands:

Thanks to your ultra-complete logs (the Visiophone object + the doorbell_pic), I was able to backport the visiophone directly, relying on the core branch tuya-diagnostics-doorbell-ring that we had prepared. New test image available:

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

What’s New

Your Visiophone is no longer a „3-toggle camera‟: it becomes a real video-doorbell type with:

  • :bell: Doorbell (button feature) — triggers when someone rings
  • :camera_with_flash: Snapshot (camera/image feature) — the photo of the press/detection is displayed in the widget
  • Motion detection, Recording, Status LED, Image flip, On-screen display (cloud + local)

:warning: Snapshot on event, no live video. Tuya cameras do not expose stable local RTSP — so no live stream like Netatmo. The image refreshes with each doorbell press / motion detection. This is a Tuya limitation, not Gladys.

How to Test

  1. Redeploy the container on the :dev-doorbell tag — and perform a full container restart (as last time :wink:).
  2. Force update (to refresh the manifest).
  3. The Visiophone changes type → delete it and rediscover it so it is recreated as a video-doorbell.
  4. Pulsar must be enabled (the image and real-time doorbell go through the signed URL ~60 s provided by Pulsar).

What I Would Like You to Verify

  • not finishedThe Visiophone appears as a video-doorbell with the 7 features above?
  • not finished​:bell: Does a doorbell press trigger the Doorbell event in Gladys (button feature / history)?
  • not finished​:camera_with_flash: Does the image widget display the snapshot after a press / motion detection?
  • not finishedDo the toggles (motion, recording, LED, flip, OSD) respond in the cloud?

:magnifying_glass_tilted_right: If you want to dig into the logs, filter on [Tuya][media]: you should see doorbell ring, snapshot published, or encrypted … not supported yet (the movement_detect_pic is sometimes encrypted → normal that it is ignored, the doorbell_pic is in plain text).

[details=« Left intentionally aside for now »]

  • The enum settings (night vision, sensitivity, recording mode): no „selector‟ type published on the core side yet (same blockage as the fan-speed of the air conditioner).
  • The doorbell volume and the PTZ: next increments.
  • The PTZ cameras remain in camera type (controls), unchanged.
    [/details]

:latest is not affected — nothing changes on your main installation until it is validated. Thanks in advance for the test! :rocket:

Jackpot!

When you ring:

The toggles work and send data to the cloud (immediate change in the app (I haven’t tested ‹ Recording › because there’s no µSD card in it)).

However, motion detection hasn’t (yet) sent a notification or an image.

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

Well done anyway, I never would have thought it was possible without messing everything up!Edit: I chose my T-shirt well for posting online… :upside_down_face: (For info, this is a reference to a song by Arno: « Putain Putain, it’s really great, we’re all Europeans after all »)

Re @GBoulvin! Availability on the same tag :dev-doorbell (you just need to update the image, no need to change the tag):

New

  • :person_running: « Movement » Event: A detection now triggers an event in Gladys → usable in your scenes / notifications, even without the image.
  • :framed_picture: Live-view: When opening the camera widget, Gladys re-displays the last known snapshot (last press / last detection). Tuya does not provide on-demand capture, so it’s the last event image.

Transparency: the « Movement » is exposed as a button-event, not a motion sensor — Gladys does not yet have a published « motion-sensor » type for external integrations (same limitation as the fan-speed of the air conditioner). And the movement image is still missing for now: it is encrypted (unlike the ring image). Decryption is the next step, on a separate test image.

:warning: Test Protocol (Important)

Before definitely switching your doorbell to :latest (prod), can you test each test image and give us feedback? This avoids locking something shaky into production.

Golden rule: NEVER have your doorbell added at the same time on 2 distinct images (e.g. :latest and :dev-doorbell). A Tuya device only accepts one consumer — two parallel integrations would step on each other (ring/Pulsar/local session conflict, duplicates). So one image at a time: remove the doorbell from one side before adding it to the other.

To test on :dev-doorbell

  • not finished​:person_running: Move in front of the camera → does the Movement event trigger (button feature / history / a small test scene)?
  • not finished​:framed_picture: Open the camera widget → does the last image (last press/detection) display?
  • not finished​:bell: Does the ring + snapshot still work?
  • not finished​:magnifying_glass_tilted_right: Logs [Tuya][media]: you should see movement_detect_pic event fired (movement) and always encrypted movement_detect_pic image not supported yet (movement image, normal).

As soon as you confirm everything is good, I’ll merge into production and tackle the decryption of the movement image on a dedicated :dev image. Thanks! :folded_hands:

Motion detected and functional scene!

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

The latest image appears in the camera widget, the button works perfectly, and the snapshot is updated immediately…

I’d say GO for the production release of the doorbell!

And what’s crazy is that it works much better than the Tuya app, which sometimes takes two minutes (or more) to send me a notification (not practical when someone rings the doorbell)!

EDIT: For info, I just tested motion detection on PTZ cameras and it works!

image

@GBoulvin :tada: v1.9.0 is in production (:latest) — and it’s thanks to your last feedback! The movement triggers an event (scenes/notifications) and the live-view re-displays the last snapshot. Your doorbell is ready for production.

But before switching it definitively to :latest, a final test would help me enormously: update your :dev-doorbell image (same tag), it now contains an experimental attempt to retrieve the MOVEMENT image.

Why this test / what it brings

Today: a doorbell press → image :white_check_mark:, but a motion detection → only the event, no image (it is encrypted by Tuya). This test attempts to decrypt this motion image. If it works:

  • :camera_with_flash: the motion will also display a photo (not just the ring),
  • :movie_camera: it would unlock the image on your PTZ cameras too (they only have this stream).

This is an uncertain bet (even the internal branch had left this open). If it doesn’t work, no regression: the doorbell remains perfect in v1.9.0.

To test on :dev-doorbell (updated)

  • Move in front of the camera → does a motion image appear in the widget (in addition to the event)?
  • :magnifying_glass_tilted_right: The most important : paste the [Tuya][media] lines from your logs right after a motion. We are looking for one of these cases:
    • :white_check_mark: decrypted with aes-128-… + snapshot publishedwon!
    • :orange_circle: downloaded N bytes + decryption did not yield a JPEG → download OK but wrong algo/key (informative, we iterate)
    • :red_circle: no candidate host served… / download failed → the signed URL doesn’t pass (another lead)

These are the logs that will tell us if the hypothesis holds. :folded_hands:

:warning: Reminder: one image at a time — don’t have the doorbell on :latest and :dev-doorbell at the same time (conflict on the Tuya device). Stay on :dev-doorbell for the test, then switch to production whenever you want.