Qu’est ce que la fonctionnalité « Index export » ? ![]()
Salut @pierre-gilles,
Il s’agit de l’index d’énergie réinjectée sur le réseau, soit le surplus de production solaire qui est renvoyé. Côté Tuya ça correspond au reverse energy total.
« Export » pour export vers le réseau.
Ok, j’ai mis un commentaire du coup ![]()
C’est fait @pierre-gilles, merci à toi !!
Salut @GBoulvin ![]()
J’ai avancé sur plusieurs devices Tuya (jusqu’à la PR10) et j’aimerais qu’on refasse une passe de validation complète, en local ET en cloud, avant merge. J’ai poussé une image Docker de test en réutilisant la précédente pour que tu puisse directement chain comme si tu passais à la nouvelle version depuis ta db de test actuelle (hésite pas à la relancer un coup avant de mettre à jour l’image pour refresh les états et comparer) :
Image de test : terdious/gladys:tuya-smart-meter
Peux-tu vérifier les points suivants (coche local + cloud à chaque fois) ? J’indique à côté ce qui fonctionne de mon côté.
| # | Device à tester | Local | Cloud | Chez moi (Terdious) |
|---|---|---|---|---|
| Base | Ce qui marchait déjà (PR1/PR4) — cf. ton rapport précédent | ☐ | ☐ | |
| PR5 (#2470) | Smart Meter | ☐ | ☐ | |
| PR7 (#2476) | LSC Power Plug | ☐ | ☐ | |
| PR8 (#2478) | Thermostat pilote | ☐ | ☐ | |
| PR9 (#2591) | Climatiseur | ☐ | ☐ | |
| PR10 (#2594) | Sonnette vidéo (réglages) | ☐ | ☐ |
Précisions PR10 (sonnette) : pour l’instant seulement les 5 réglages on/off (détection mouvement, enregistrement, retournement image, LED, OSD). Point à surveiller : le poll local de ces sonnettes P2P a tendance à timeout — si c’est ton cas, dis-le moi, ça confirmera qu’on reste en cloud pour ce type de device. La sonnerie et la caméra viendront en PR10-Bis.
Merci beaucoup pour les tests ![]()
Pour le coup @pierre-gilles, côté Tuya, si tu peux, ce serait review ces 3 PR.
La PR6-Bis est apparue pendant que je codais le device sonnette pour GBoulvin, il s’est avéré qu’on a trouvé comment conserver une connexion permanente pour avoir les infos live en local.
Je suis donc prêt sur :
Toutes les suivantes jusque PR10 sont prêtes également, il ne manque plus que les Tests pour les PR7 et PR10. PR8 et PR9 sont testées de mon côtés avec au moins 2 types de device correspondants chacun.
PR5 ok et mergé, tu peux mettre à jour la PR6 avec master?
PR6 mise à jour ![]()
@GBoulvin (On va en arriver à croire que c’est du harcélement … je suis désolé ^^ tu me dis surtout si c’est trop
),
Après les essais demandés dans le post Tuya : Intégration chauffage et climatiseur - #85 par Terdious, pourrais-tu poursuivre avec la sonnette sur des essais complémentaires ?
Je t’ai concocté (avec ma Glaude bien sûr ^^) une petite vue de diagnostic pour tenter de récupérer tout ce qu’il faut en One Shot ^^ sur ta sonnette (et voir d’autres au passage comme tes camera si tu y arrives)
Pour cette seconde passe, cette fois ce sera une nouvelle image Docker que je te fournis (tu peux tout à fait repartir de la même base de données, pas besoin de repartir de zéro) : docker pull terdious/gladys:tuya-diag-video-doorbell-support.
Ce qu’il y a de nouveau : une page « Diagnostic » dans l’intégration Tuya
Cette image embarque une page temporaire de diagnostic, uniquement destinée au debug (elle sera retirée avant la PR finale — ne t’étonne pas de son côté « outil de labo »). Tu la trouveras directement dans Intégrations → Tuya → Diagnostic (menu de gauche), ou via le bouton « Diagnostic » sur la carte d’un appareil.
Ce que tu y verras (voir mes captures) :
- Un sélecteur d’appareil en haut : « Tous les appareils » pour le flux global, ou un appareil précis. Quand un appareil est sélectionné, une ligne d’état s’affiche (protocole, IP, connexion persistante, état dégradé).
- « Valeurs des fonctionnalités (en direct) » : 3 sections — Prises en charge, Non prises en charge et Ignorées — avec pour chaque fonctionnalité son code Tuya, son DP local, son chemin cloud, la valeur brute reçue de l’appareil (avec sa provenance : push local / cloud, et l’heure), et la valeur Gladys transformée. Chaque valeur brute a son petit bouton copier, et le bouton « Copier le contenu » copie toute la carte en Markdown.
- « Événements en direct » : le journal du service en temps réel (connexions, DPS poussés par l’appareil avec leur payload brut, lectures, commandes, erreurs), filtrable par niveau et par texte, avec pause et « Copier le contenu » également.
Ce qu’on attend de toi avec ta sonnette 
Le but : capturer les payloads bruts que ta sonnette envoie quand elle sonne ou détecte un mouvement — c’est ce qui nous manque pour implémenter l’affichage des snapshots photo dans Gladys.
- Ouvre la page Diagnostic et sélectionne ta sonnette dans la liste.
- Appuie sur le bouton de la sonnette (vraie sonnerie), et si possible déclenche aussi une détection de mouvement en passant devant.
- Laisse la page ouverte quelques instants, puis :
- « Copier le contenu » de la carte Événements en direct → colle le résultat ici (on cherche notamment les événements
push_dpsavec les DP 136 (doorbell_active), 154 (doorbell_pic) et 115 (movement_detect_pic)) ; - « Copier le contenu » de la carte Valeurs des fonctionnalités → colle-le aussi (les sections Non prises en charge / Ignorées devraient montrer les valeurs brutes des DP photo).
- Vérifie au passage que la sonnerie remonte dans Gladys : cette image ajoute une fonctionnalité « Doorbell » (bouton) sur ta sonnette — après une vraie sonnerie, tu devrais voir un événement dans son historique, et pouvoir l’utiliser comme déclencheur de scène. Dis-nous si ça sonne « fantôme » (déclenchement sans appui) ou si un appui ne remonte pas.
Ta sonnette étant sur batterie, elle dort la plupart du temps : c’est normal si elle apparaît déconnectée entre deux événements. L’important est de sonner/passer devant pendant que la page est ouverte.
Si tu as un doute sur quoi copier : dans le doute, copie tout
Les payloads photo ressemblent à de longues chaînes en base64 — c’est exactement ce qu’on cherche (elles ne contiennent pas ta clé locale, uniquement des références temporaires chiffrées).
Et bien sûr, la page marche pour tous tes appareils Tuya — si tu vois un comportement bizarre sur les prises/autres devices des PRs précédentes, un coup de « Copier le contenu » et on aura tout ce qu’il faut pour investiguer.
N’hésite pas à essayer avec tes caméras également et limite tu peux coller les contenus dans les issues correspondantes ![]()
Merci beaucoup par avance, je reste dispo au besoin, je scruterais le forum régulièrement ! ![]()
Quelques images :
Sur la page d’accueil, la première fois, il faudrait un prompt disant que le service n’est pas configuré et qu’on doit se rendre sur la page « configuration » comme dans les autres intégrations.
Pour la PR5, Smart Meter, tout OK (local et cloud). Par contre, une fois sélectionné en local, le message « proposer de nouvelles fonctions » apparaît(d’ailleurs, je trouverais plus juste « fonctionnalités » ![]()
PR7, LSC Power Plug en 3.5, tout ok (local et cloud). Le ‹ child Lock › est arrivé !
La PR10, la sonnette est bien détectée en cloud mais ne poll pas en local. Je teste l’image dédiée de suite.
Capture d’écran du dispositif Tuya — Visiophone Wifi
- sélecteur :
tuya-bf0e59548489fcb4ea62of— identifiant_externe :tuya:bf0e59548489fcb4ea62of - type_de_dispositif :
sonnette_vidéo— identifiant_produit :i5e3a4qxcsthszin - protocole : - — ip : - — substitution_locale : 0
- persistant : aucun — dégradé : non
Fonctionnalités prises en charge
| Fonctionnalité | Code | DP local | Chemin cloud | Entrée brute (origine) | Brute à | Valeur Gladys | Dernier changement |
|---|---|---|---|---|---|---|---|
| LED d’état | indicateur_basique | 101 | Indicateur (dp 101) [spec.fn, spec.st, model, shadow] | true (cloud) | 2026-07-05T21:12:48.132Z | 1 | 2026-07-05T21:12:17.898Z |
| Image retournée | basique_retournement | 103 | Vision Retourner (dp 103) [spec.fn, spec.st, model, shadow] | false (cloud) | 2026-07-05T21:12:48.132Z | 0 | 2026-07-05T21:12:17.898Z |
| Affichage à l’écran | basique_osd | 104 | Filigrane OSD (dp 104) [spec.fn, spec.st, model, shadow] | true (cloud) | 2026-07-05T21:12:48.132Z | 1 | 2026-07-05T21:12:17.898Z |
| Détection de mouvement | interrupteur_mouvement | 134 | Alerte de Mouvement (dp 134) [spec.fn, spec.st, model, shadow] | true (cloud) | 2026-07-05T21:12:48.132Z | 1 | 2026-07-05T21:12:17.898Z |
| Sonnette | sonnette_active | 136 | Sonnette Active (dp 136) [spec.st, model, shadow] | (cloud) | 2026-07-05T21:12:48.132Z | null | - |
| Enregistrement | interrupteur_enregistrement | 150 | Interrupteur d’Enregistrement (dp 150) [spec.fn, spec.st, model, shadow] | true (cloud) | 2026-07-05T21:12:48.132Z | 1 | 2026-07-05T21:12:17.898Z |
Non pris en charge (brut uniquement)
| Fonctionnalité | Code | DP local | Chemin cloud | Entrée brute (origine) | Brute à | Valeur Gladys | Dernier changement |
|---|---|---|---|---|---|---|---|
Ignoré
| Fonctionnalité | Code | DP local | Chemin cloud | Entrée brute (origine) | Brute à | Valeur Gladys | Dernier changement |
|---|---|---|---|---|---|---|---|
| état_formatage_sd | état_formatage_sd | - | État Formaté (dp 117) [spec.st, model, shadow] | -20000 (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| statut_sd | statut_sd | - | Statut de la Carte Mémoire (dp 110) [spec.st, model, shadow] | 5 (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| sensibilité_mouvement | sensibilité_mouvement | - | Sensibilité de Mouvement (dp 106) [spec.fn, spec.st, model, shadow] | 1 (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| mode_enregistrement | mode_enregistrement | - | Mode d’Enregistrement (dp 151) [spec.fn, spec.st, model, shadow] | 2 (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| vision_nocturne_basique | vision_nocturne_basique | - | Vision Nocturne (dp 108) [spec.fn, spec.st, model, shadow] | 0 (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| volume_dispositif_basique | volume_dispositif_basique | - | Contrôle du Volume du Dispositif (dp 160) [spec.fn, spec.st, model, shadow] | 10 (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| stockage_sd | stockage_sd | - | Obtenir la Capacité de la Carte Mémoire (dp 109) [spec.st, model, shadow] | 100 | 0 | 100 (cloud) | 2026-07-05T21:12:48.132Z |
| formatage_sd | formatage_sd | - | Formater la Carte Mémoire (dp 111) [spec.fn, spec.st, model, shadow] | false (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| image_sonnette | image_sonnette | - | Quelqu’un sonne à la sonnette (dp 154) [spec.st, model, shadow] | (cloud) | 2026-07-05T21:12:48.132Z | - | - |
| image_détection_mouvement | image_détection_mouvement | - | Mouvement Détecté (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 terminé {"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 terminé {"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 terminé {"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 terminé {"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 terminé {"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 terminé {"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 terminé {"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 terminé {"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 terminé {"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\] Commande envoyée via cloud (motion_switch)
2026-07-05T21:08:50.324Z \[debug\] \[Visiophone Wifi (bf0e59548489fcb4ea62of)\] \[set_command\] Commande interrupteur_mouvement -> true {"command":"motion_switch","value":1,"transformed":true}
2026-07-05T21:08:47.924Z \[debug\] \[Visiophone Wifi (bf0e59548489fcb4ea62of)\] \[poll_summary\] Poll terminé {"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 terminé {"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 terminé {"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 terminé {"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 terminé {"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 terminé {"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 terminé {"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 terminé {"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 !
Salut @GBoulvin,
Un énorme merci pour cette passe de tests
.
Voici le traitement de chacun de tes points :
1. Message « service non configuré » sur la page d’accueil
corrigé Tu avais l’œil : le message n’existait que sur la page Configuration, la page Appareils (celle d’atterrissage) ne donnait aucune piste. C’est corrigé dans la PR6 : elle affiche maintenant le même type d’avertissement que la page Découverte, avec un lien direct vers la page de configuration Tuya. Tu le verras dans la prochaine image.
2. Smart Meter : « proposer de nouvelles fonctions » qui apparaît en local
besoin de toi pour trancher Deux choses distinctes ici :
- Le libellé : corrigé, le bouton dit maintenant « Proposer des fonctionnalités » — le but était de raccourcir ce texte pour un affichage plus sympa sur des formats d’écran plus petit. Mais en effet, au besoin ça fera partie d’une revue UI/UX. Restons cohérent

- Le fond : en mode local, ce bouton apparaît quand la lecture des DP remonte des DPS ni gérés ni volontairement ignorés — donc soit ton compteur expose des DPS que le cloud n’a pas (et le bouton fait alors exactement son travail : nous inviter à les ajouter !), soit on a un souci de correspondance. Pour trancher, peux-tu simplement cliquer sur le bouton et créer l’issue ? Elle liste précisément les DPS inconnus. Encore mieux si tu es sur l’image diagnostic : sélectionne le Smart Meter sur la page Diagnostic et « Copier le contenu » de la carte Valeurs des fonctionnalités — la section Non prises en charge nous montrera ces DPS avec leurs valeurs. Selon le résultat, on complètera le mapping du compteur. Tu peux également faire les 2, ouvrir l’issue et coller les diagnostic en suite dans un message complémentaire.
3. PR7 (LSC Power Plug 3.5)
Rien à ajouter : local + cloud + child lock validés — grâce à toi, la PR7 est maintenant fonctionnellement validée de bout en bout. Merci !





