What is the « Index export » feature? ![]()
Hi @pierre-gilles,
This is the index of energy reinjected into the grid, i.e. the solar production surplus that is sent back. On Tuya, this corresponds to the reverse energy total.
« Export » for export to the grid.
Ok, I left a comment ![]()
It’s done @pierre-gilles, thanks to you!!
Hi @GBoulvin ![]()
I’ve made progress on several Tuya devices (up to PR10) and I’d like us to do a full validation pass, both locally AND in the cloud, before merging. I’ve pushed a test Docker image reusing the previous one so you can directly chain as if you were moving to the new version from your current test database (don’t hesitate to restart it once before updating the image to refresh the states and compare):
Test Image: terdious/gladys:tuya-smart-meter
Could you check the following points (tick local + cloud each time)? I indicate what works on my side.
| # | Device to test | Local | Cloud | At my place (Terdious) |
|---|---|---|---|---|
| Base | What already worked (PR1/PR4) — see your previous report | ☐ | ☐ | |
| PR5 (#2470) | Smart Meter | ☐ | ☐ | |
| PR7 (#2476) | LSC Power Plug | ☐ | ☐ | |
| PR8 (#2478) | Thermostat controller | ☐ | ☐ | |
| PR9 (#2591) | Air conditioner | ☐ | ☐ | |
| PR10 (#2594) | Video doorbell (settings) | ☐ | ☐ |
PR10 details (doorbell): for now only the 5 on/off settings (motion detection, recording, image flip, LED, OSD). Point to watch: the local poll of these P2P doorbells tends to timeout — if that’s your case, let me know, it will confirm that we stay in the cloud for this type of device. The bell and the camera will come in PR10-Bis.
Thanks a lot for the tests ![]()
Alright @pierre-gilles, on Tuya’s side, if you can, it would be great to review these 3 PRs.
PR6-Bis appeared while I was coding the doorbell device for GBoulvin, it turned out we found how to maintain a permanent connection to have live info locally.
I am therefore ready on:
All the following ones up to PR10 are also ready, only the tests are missing for PR7 and PR10. PR8 and PR9 are tested on my side with at least 2 types of corresponding devices each.
PR5 is ok and merged, can you update PR6 with master?
PR6 update ![]()
@GBoulvin (We’re starting to think it’s harassment… I’m sorry ^^ just let me know if it’s too much
),
After the tests requested in the post Tuya : Intégration chauffage et climatiseur - #85 par Terdious, could you continue with the doorbell for additional tests?
I’ve prepared (with my Glaude of course ^^) a small diagnostic view to try to retrieve everything in one go ^^ on your doorbell (and see others along the way like your cameras if you can)
For this second pass, this time it will be a new Docker image that I provide (you can start from the same database, no need to start from scratch): docker pull terdious/gladys:tuya-diag-video-doorbell-support.
What’s new: a « Diagnostic » page in the Tuya integration
This image includes a temporary diagnostic page, solely intended for debugging (it will be removed before the final PR — don’t be surprised by its « lab tool » side). You will find it directly in Integrations → Tuya → Diagnostic (left menu), or via the « Diagnostic » button on a device card.
What you will see (see my screenshots):
- A device selector at the top: « All devices » for the overall flow, or a specific device. When a device is selected, a status line is displayed (protocol, IP, persistent connection, degraded state).
- **« Feature values (live) »: 3 sections — Supported, Not supported and Ignored — with for each feature its Tuya code, its local DP, its cloud path, the raw value received from the device (with its origin: local push / cloud, and the time), and the Gladys transformed value. Each raw value has its small copy button, and the **« Copy content » button copies the entire card in Markdown.
- **« Live events »: the service log in real-time (connections, DPS pushed by the device with their raw payload, reads, commands, errors), filterable by level and by text, with pause and **« Copy content » also.
What we expect from you with your doorbell 
The goal: capture the raw payloads that your doorbell sends when it rings or detects motion — that’s what we’re missing to implement the display of photo snapshots in Gladys.
- Open the Diagnostic page and select your doorbell from the list.
- Press the doorbell button (real ring), and if possible also trigger a motion detection by passing in front.
- Leave the page open for a few moments, then:
- **« Copy content » of the Live events card → paste the result here (we are especially looking for the
push_dpsevents with the DP 136 (doorbell_active), 154 (doorbell_pic) and 115 (movement_detect_pic)); - **« Copy content » of the Feature values card → paste it too (the Not supported / Ignored sections should show the raw values of the photo DP).
- Check at the same time that the ring is reported in Gladys: this image adds a « Doorbell » feature (button) on your doorbell — after a real ring, you should see an event in its history, and be able to use it as a scene trigger. Let us know if it « ghosts » (trigger without press) or if a press is not reported.
Your doorbell is battery-powered, so it sleeps most of the time: it’s normal if it appears disconnected between two events. The important thing is to ring/pass in front while the page is open.
If you’re in doubt about what to copy: in doubt, copy everything
The photo payloads look like long base64 strings — that’s exactly what we’re looking for (they don’t contain your local key, only temporary encrypted references).
And of course, the page works for all your Tuya devices — if you see strange behavior on the outlets/other devices from previous PRs, a « Copy content » and we’ll have everything we need to investigate.
Don’t hesitate to try with your cameras as well and you can paste the contents in the corresponding issues ![]()
Thanks in advance, I’m available if needed, I’ll check the forum regularly! ![]()
Some images:
On the homepage, the first time, there should be a prompt saying that the service is not configured and that you need to go to the « configuration » page as in the other integrations.
For PR5, Smart Meter, everything is OK (local and cloud). However, once selected locally, the message « suggest new features » appears (I would find « features » more appropriate ![]()
PR7, LSC Power Plug in 3.5, everything is OK (local and cloud). The ‹ child Lock › has arrived!
For PR10, the doorbell is well detected in the cloud but does not poll locally. I will test the dedicated image right away.
Tuya device snapshot — Visiophone Wifi
- selector:
tuya-bf0e59548489fcb4ea62of— external_id:tuya:bf0e59548489fcb4ea62of - device_type:
video-doorbell— product_id:i5e3a4qxcsthszin - protocol: - — ip: - — local_override: 0
- persistent: none — degraded: no
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 (cloud) | 2026-07-05T21:12:48.132Z | 1 | 2026-07-05T21:12:17.898Z |
| Image flip | basic_flip | 103 | Vision Flip (dp 103) [spec.fn, spec.st, model, shadow] | false (cloud) | 2026-07-05T21:12:48.132Z | 0 | 2026-07-05T21:12:17.898Z |
| On-screen display | basic_osd | 104 | OSD Watermark (dp 104) [spec.fn, spec.st, model, shadow] | true (cloud) | 2026-07-05T21:12:48.132Z | 1 | 2026-07-05T21:12:17.898Z |
| Motion detection | motion_switch | 134 | Motion Alert (dp 134) [spec.fn, spec.st, model, shadow] | true (cloud) | 2026-07-05T21:12:48.132Z | 1 | 2026-07-05T21:12:17.898Z |
| Doorbell | doorbell_active | 136 | Doorbell Active (dp 136) [spec.st, model, shadow] | (cloud) | 2026-07-05T21:12:48.132Z | null | - |
| Recording | record_switch | 150 | Record Switch (dp 150) [spec.fn, spec.st, model, shadow] | true (cloud) | 2026-07-05T21:12:48.132Z | 1 | 2026-07-05T21:12:17.898Z |
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-05T21:12:48.132Z | - | - |
| sd_status | sd_status | - | Memory Card Status (dp 110) [spec.st, model, shadow] | 5 (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| motion_sensitivity | motion_sensitivity | - | Motion Sensitivity (dp 106) [spec.fn, spec.st, model, shadow] | 1 (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| record_mode | record_mode | - | Recording Mode (dp 151) [spec.fn, spec.st, model, shadow] | 2 (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| basic_nightvision | basic_nightvision | - | Night Vision (dp 108) [spec.fn, spec.st, model, shadow] | 0 (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| basic_device_volume | basic_device_volume | - | Device Volume Control (dp 160) [spec.fn, spec.st, model, shadow] | 10 (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| sd_storge | sd_storge | - | Get Memory Card Capacity (dp 109) [spec.st, model, shadow] | 100 | 0 | 100 (cloud) | 2026-07-05T21:12:48.132Z |
| sd_format | sd_format | - | Format Memory Card (dp 111) [spec.fn, spec.st, model, shadow] | false (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| doorbell_pic | doorbell_pic | - | Someone ring doorbell (dp 154) [spec.st, model, shadow] | (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| movement_detect_pic | movement_detect_pic | - | Motion Detected (dp 115) [spec.st, model, shadow] | eyJidWNrZXQiOiJ0eS1ldS1zdG9yYWdlMzAtcGljIiwiZmlsZXMiOltbIi8xNzYwNzMtMTYxODY5NDE2LXBwMDFiZjAwZWI2YTFhOTZjZDUwL2RldGVjdC8xNzgzMjg1ODQzLmpwZWc/cGFyYW09YUJyTFFoc1RvZVBqMzdWMHVCOWo5MHpoNVZzOEx2UGhSTHpZTklERGtjQT0iLCIiXV0sInYiOiIzLjAifQ== (cloud) | 2026-07-05T21:12:48.132Z | - | - |
2026-07-05T21:12:48.133Z \[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":"none"}
2026-07-05T21:12:17.897Z \[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":"none"}
2026-07-05T21:11:47.907Z \[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":"none"}
2026-07-05T21:11:17.901Z \[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":"none"}
2026-07-05T21:10:47.852Z \[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":"none"}
2026-07-05T21:10:17.896Z \[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":"none"}
2026-07-05T21:09:47.927Z \[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":"none"}
2026-07-05T21:09:17.892Z \[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":"none"}
2026-07-05T21:08:51.632Z \[debug\] \[Visiophone Wifi (bf0e59548489fcb4ea62of)\] \[poll_summary\] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":1,"cloud_missing":0,"fallback":"none"}
2026-07-05T21:08:50.566Z \[debug\] \[Visiophone Wifi (bf0e59548489fcb4ea62of)\] \[set_sent\] Command sent via cloud (motion_switch)
2026-07-05T21:08:50.324Z \[debug\] \[Visiophone Wifi (bf0e59548489fcb4ea62of)\] \[set_command\] Command motion_switch -> true {"command":"motion_switch","value":1,"transformed":true}
2026-07-05T21:08:47.924Z \[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":"none"}
2026-07-05T21:08:22.928Z \[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":"none"}
2026-07-05T21:07:47.891Z \[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":"none"}
2026-07-05T21:07:17.935Z \[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":"none"}
2026-07-05T21:06:47.920Z \[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":"none"}
2026-07-05T21:06:17.900Z \[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":"none"}
2026-07-05T21:05:47.847Z \[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":"none"}
2026-07-05T21:05:32.328Z \[debug\] \[Visiophone Wifi (bf0e59548489fcb4ea62of)\] \[poll_summary\] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":5,"cloud_missing":0,"fallback":"none"}
Ci-dessus donc le copier-coller ![]()
J’ai activé via Gladys la détection de mouvement. C’est bien activé dans l’app et sur l’appareil.
Par contre, le tableau de bord dit :
Après détection et appui sur le bouton…
Le mode local ne veut pas fonctionner (en 3.1 : Échec de la lecture locale : Invalid local poll response: parse data error, en 3.3 : Échec de la lecture locale : Local poll timeout)
La sonnette n’est pas sur batterie (c’est un ancien modèle, alimenté en 5V)
J’ai refais un test. Appui et detection de mouvement à 23h30 et le retour dans Gladys s’est fait plus d’une minute plus tard :
2026-07-05T21:33:17.949Z \[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":"none"}
2026-07-05T21:32:47.924Z \[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":"none"}
2026-07-05T21:32:17.922Z \[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":"none"}
2026-07-05T21:31:47.914Z \[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":"none"}
2026-07-05T21:31:17.919Z \[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":"none"}
2026-07-05T21:30:47.923Z \[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":"none"}
2026-07-05T21:30:17.943Z \[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":"none"}
2026-07-05T21:29:47.917Z \[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":"none"}
2026-07-05T21:29:17.919Z \[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":"none"}
2026-07-05T21:28:47.922Z \[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":"none"}
2026-07-05T21:28:17.951Z \[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":"none"}
2026-07-05T21:27:47.924Z \[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":"none"}
2026-07-05T21:27:17.918Z \[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":"none"}
2026-07-05T21:26:47.924Z \[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":"none"}
2026-07-05T21:26:17.918Z \[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":"none"}
2026-07-05T21:25:47.926Z \[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":"none"}
2026-07-05T21:25:17.929Z \[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":"none"}
2026-07-05T21:24:47.947Z \[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":"none"}
2026-07-05T21:24:17.916Z \[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":"none"}
2026-07-05T21:23:47.913Z \[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":"none"}
2026-07-05T21:23:17.935Z \[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":"none"}
2026-07-05T21:22:47.915Z \[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":"none"}
2026-07-05T21:22:17.915Z \[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":"none"}
2026-07-05T21:21:47.916Z \[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":"none"}
2026-07-05T21:21:17.906Z \[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":"none"}
2026-07-05T21:20:47.922Z \[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":"none"}
2026-07-05T21:20:17.940Z \[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":"none"}
2026-07-05T21:19:47.996Z \[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":"none"}
2026-07-05T21:19:17.910Z \[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":"none"}
2026-07-05T21:18:47.909Z \[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":"none"}
2026-07-05T21:18:17.902Z \[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":"none"}
2026-07-05T21:17:47.913Z \[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":"none"}
2026-07-05T21:17:17.938Z \[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":"none"}
2026-07-05T21:16:47.906Z \[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":"none"}
2026-07-05T21:16:18.078Z \[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":"none"}
2026-07-05T21:15:47.934Z \[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":"none"}
2026-07-05T21:15:17.906Z \[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":"none"}
2026-07-05T21:14:47.922Z \[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":"none"}
2026-07-05T21:14:17.930Z \[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":"none"}
2026-07-05T21:13:47.906Z \[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":"none"}
2026-07-05T21:13:18.067Z \[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":"none"}
2026-07-05T21:12:48.133Z \[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":"none"}
2026-07-05T21:12:17.897Z \[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":"none"}
2026-07-05T21:11:47.907Z \[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":"none"}
2026-07-05T21:11:17.901Z \[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":"none"}
2026-07-05T21:10:47.852Z \[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":"none"}
2026-07-05T21:10:17.896Z \[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":"none"}
2026-07-05T21:09:47.927Z \[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":"none"}
2026-07-05T21:09:17.892Z \[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":"none"}
2026-07-05T21:08:51.632Z \[debug\] \[Visiophone Wifi (bf0e59548489fcb4ea62of)\] \[poll_summary\] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":1,"cloud_missing":0,"fallback":"none"}
2026-07-05T21:08:50.566Z \[debug\] \[Visiophone Wifi (bf0e59548489fcb4ea62of)\] \[set_sent\] Command sent via cloud (motion_switch)
2026-07-05T21:08:50.324Z \[debug\] \[Visiophone Wifi (bf0e59548489fcb4ea62of)\] \[set_command\] Command motion_switch -> true {"command":"motion_switch","value":1,"transformed":true}
2026-07-05T21:08:47.924Z \[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":"none"}
2026-07-05T21:08:22.928Z \[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":"none"}
2026-07-05T21:07:47.891Z \[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":"none"}
2026-07-05T21:07:17.935Z \[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":"none"}
2026-07-05T21:06:47.920Z \[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":"none"}
2026-07-05T21:06:17.900Z \[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":"none"}
2026-07-05T21:05:47.847Z \[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":"none"}
2026-07-05T21:05:32.328Z \[debug\] \[Visiophone Wifi (bf0e59548489fcb4ea62of)\] \[poll_summary\] Poll completed {"mode":"cloud","local_handled":0,"local_changed":0,"cloud_handled":6,"cloud_changed":5,"cloud_missing":0,"fallback":"none"}
Tuya device snapshot — Visiophone Wifi
- selector:
tuya-bf0e59548489fcb4ea62of— external_id:tuya:bf0e59548489fcb4ea62of - device_type:
video-doorbell— product_id:i5e3a4qxcsthszin - protocol: - — ip: - — local_override: 0
- persistent: none — degraded: no
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 (cloud) | 2026-07-05T21:33:47.927Z | 1 | 2026-07-05T21:31:47.915Z |
| Image flip | basic_flip | 103 | Vision Flip (dp 103) [spec.fn, spec.st, model, shadow] | false (cloud) | 2026-07-05T21:33:47.927Z | 0 | 2026-07-05T21:31:47.916Z |
| On-screen display | basic_osd | 104 | OSD Watermark (dp 104) [spec.fn, spec.st, model, shadow] | true (cloud) | 2026-07-05T21:33:47.927Z | 1 | 2026-07-05T21:31:47.916Z |
| Motion detection | motion_switch | 134 | Motion Alert (dp 134) [spec.fn, spec.st, model, shadow] | true (cloud) | 2026-07-05T21:33:47.927Z | 1 | 2026-07-05T21:31:47.917Z |
| Doorbell | doorbell_active | 136 | Doorbell Active (dp 136) [spec.st, model, shadow] | (cloud) | 2026-07-05T21:33:47.927Z | null | - |
| Recording | record_switch | 150 | Record Switch (dp 150) [spec.fn, spec.st, model, shadow] | true (cloud) | 2026-07-05T21:33:47.927Z | 1 | 2026-07-05T21:31:47.917Z |
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-05T21:33:47.927Z | - | - |
| sd_status | sd_status | - | Memory Card Status (dp 110) [spec.st, model, shadow] | 5 (cloud) | 2026-07-05T21:33:47.927Z | - | - |
| motion_sensitivity | motion_sensitivity | - | Motion Sensitivity (dp 106) [spec.fn, spec.st, model, shadow] | 1 (cloud) | 2026-07-05T21:33:47.927Z | - | - |
| record_mode | record_mode | - | Recording Mode (dp 151) [spec.fn, spec.st, model, shadow] | 2 (cloud) | 2026-07-05T21:33:47.927Z | - | - |
| basic_nightvision | basic_nightvision | - | Night Vision (dp 108) [spec.fn, spec.st, model, shadow] | 0 (cloud) | 2026-07-05T21:33:47.927Z | - | - |
| basic_device_volume | basic_device_volume | - | Device Volume Control (dp 160) [spec.fn, spec.st, model, shadow] | 10 (cloud) | 2026-07-05T21:33:47.927Z | - | - |
| sd_storge | sd_storge | - | Get Memory Card Capacity (dp 109) [spec.st, model, shadow] | 100 | 0 | 100 (cloud) | 2026-07-05T21:33:47.927Z |
| sd_format | sd_format | - | Format Memory Card (dp 111) [spec.fn, spec.st, model, shadow] | false (cloud) | 2026-07-05T21:33:47.927Z | - | - |
| doorbell_pic | doorbell_pic | - | Someone ring doorbell (dp 154) [spec.st, model, shadow] | (cloud) | 2026-07-05T21:33:47.927Z | - | - |
| movement_detect_pic | movement_detect_pic | - | Motion Detected (dp 115) [spec.st, model, shadow] | eyJidWNrZXQiOiJ0eS1ldS1zdG9yYWdlMzAtcGljIiwiZmlsZXMiOltbIi8xNzYwNzMtMTYxODY5NDE2LXBwMDFiZjAwZWI2YTFhOTZjZDUwL2RldGVjdC8xNzgzMjg3MDA5LmpwZWc/cGFyYW09U3dnelJjQXYzMVhOelpvV2Z0ald5aHM1ckJVN09EcXhTbWpmQld5MlpUdz0iLCIiXV0sInYiOiIzLjAifQ== (cloud) | 2026-07-05T21:33:47.927Z | - | - |
Voilà, en espérant que cela a pu aider…
Dans tous le cas, Merci @Terdious pour ton investissement dans le projet !
Hi @GBoulvin,
A huge thank you for this test pass
.
Here is the handling of each of your points:
1. « Service not configured » message on the homepage
fixed You had the eye: the message only existed on the Configuration page, the Devices page (the landing page) gave no clue. This is corrected in PR6: it now displays the same type of warning as the Discovery page, with a direct link to the Tuya configuration page. You will see it in the next image.
2. Smart Meter: « propose new functions » that appears locally
need you to decide Two distinct things here:
- The label: corrected, the button now says « Propose features » — the goal was to shorten this text for a nicer display on smaller screen formats. But indeed, if needed, it will be part of a UI/UX review. Let’s stay consistent

- The substance: in local mode, this button appears when reading the DP returns DPS that are neither managed nor intentionally ignored — so either your meter exposes DPS that the cloud does not have (and the button then does exactly its job: inviting us to add them!), or there is a matching issue. To decide, can you simply click on the button and create the issue? It precisely lists the unknown DPS. Even better if you are on the diagnostic image: select the Smart Meter on the Diagnostic page and « Copy the content » of the Feature Values card — the Unsupported section will show us these DPS with their values. Depending on the result, we will complete the meter mapping. You can also do both, open the issue and paste the diagnostics in a follow-up message.
3. PR7 (LSC Power Plug 3.5)
Nothing to add: local + cloud + child lock validated — thanks to you, PR7 is now functionally validated from end to end. Thank you!





