Intégrations externes dans Gladys Assistant

J’y penses, toi qui a pas mal de Shelly, une intégration Shelly ça serait cool aussi !! :smiley:

C’est vrai que je les gère tous sous node red pour le coup :sweat_smile: Bien vu, il y a de quoi faire ^^ Je commence a avoir une petite gamme ^^

Edit :
@pierre-gilles et pour Tuya, on fait quoi ? Je vois bien que je te demande beaucoup pour ces PR depuis janvier…
Ca pourrait rentrer dans ce format ?

Pour moi, Tuya est un candidat parfait pour les intégrations externes. Je vois bien qu’aujourd’hui je suis un goulot d’étranglement, alors qu’on pourrait avancer beaucoup plus vite si tu pouvais développer en toute autonomie. :slightly_smiling_face:

Je pense que tu peux demander à Claude de porter le travail que tu as déjà fait vers le nouveau format d’intégrations externes. Normalement, cette V1 couvre tout ce dont Tuya a besoin. Si tu identifies une limitation, dis-le-moi et on la fera évoluer.

Pareil pour Netatmo d’ailleurs. :slightly_smiling_face:

Et si, au fil du développement, tu te rends compte qu’il manque des composants d’interface, des API ou n’importe quelle capacité, fais-moi signe. Mon objectif est vraiment que les intégrations externes puissent faire exactement la même chose qu’une intégration interne.

Au fond, c’est toute la philosophie de cette architecture : aujourd’hui, le projet avance de manière assez linéaire parce que beaucoup de choses passent par moi. Je veux que Gladys puisse enfin tirer parti de la puissance du collectif et que son développement devienne exponentiel plutôt que linéaire.

Je n’avais pas encore donné mon avis même si je suivais le sujet de très près.

Je trouve que c’est une excellente idée et surtout que tout soit aussi bien borné.
Ça ressemble à du HA, ça ressemble à du Jeedom, mais c’est bien du Gladys !

Le fait que l’on ne puisse pas modifier le frontend est vraiment la base et c’est un super garde-fou aux developpements qui partent dans tous les sens et qui sont difficiles à maintenir.
Bon, c’est un non développeur qui dit ça mais je suis de ceux qui préfèrent blinder au départ pour avoir toujours quelque chose de fonctionnel par la suite.

Ceci étant écrit, je ne suis pas sûr d’avoir tout compris au niveau des dev : est-ce que ça va marcher comme pour l’usine à plugin matterbridge ?
Un non-dev pourra-t’il faire développer en automatique un plugin ?
J’aimerais bien développer un MELCloud Home en plus du MELCloud classique que j’ai essayé de faire avec l’usine. Malheureusement il manque des choses côté Matter pour tout gérer sur cette clim par exemple.
J’ai aussi de l’Onkyo et du MarantzDenon (pour la musique), de l’Ecovacs (robot tondeuse), de la Freebox, et pourquoi pas un watchdog des VM/LXC/docker/ordi/serveurs que je pensais faire avec l’intégration LAN Manager (qui ne fait que la présence).

Voilà, c’est tout pour moi pour l’instant :slight_smile:

On pourra imaginer à terme une usine à intégrations, mais pour l’instant l’objectif est surtout de réduire drastiquement la barrière à l’entrée du développement d’intégrations, et surtout de rendre la publication d’intégrations possible sans review de ma part.

L’idée est de rendre le processus tellement simple et accessible que n’importe quel développeur du projet puisse créer des intégrations rapidement, sans friction, et ainsi multiplier naturellement le nombre d’intégrations disponibles.

Après si tu es motivé pour aider, même sans être développeur, tu pourras nous aider dès le début, il faut juste un compte GitHub et un Claude/Cursor :grin:

@Terdious j’ai demandé à Fable de me faire une analyse des points manquants pour migrer netatmo et Tuya dans des intégrations externes :

Je vais faire évoluer la spec et l’implémentation !

Les trous — quatre, dont un bloquant

1. OAuth2 authorization-code : bloquant pour Netatmo. Le flow core (netatmo.retrieveTokens) est piloté par le front : il construit l’URL d’autorisation, l’utilisateur consent sur netatmo.com, est redirigé vers le front Gladys qui renvoie {codeOAuth, state, redirectUri} au service. Or l’écran Configuration généré n’a ni bouton « Connecter », ni route de callback, ni canal pour transmettre le code à l’intégration. Il faudrait : un type de champ oauth2 dans le config_schema (rendu = bouton), une route front générique de callback, et deux relais serveur→intégration (« donne-moi ton URL d’autorisation » et « voici le code ») — l’intégration échange ensuite les tokens elle-même et les range en config hors schéma.

2. command-result ne transporte pas de données. L’ack ne porte que success/error. Le point 1 exige que l’intégration réponde quelque chose (l’URL d’autorisation), et les commandes futures aussi (camera.get-image…). Il manque un champ data optionnel dans command-result — extension triviale, rétrocompatible, mais mieux vaut la figer dans les contrats v1 maintenant.

3. Le statut applicatif est invisible. Netatmo core affiche « Processing token », « Disconnected », « token expiré, reconnectez-vous ». Notre machine à états ne voit que la santé du conteneur : une intégration Netatmo dont le refresh token meurt serait RUNNING (WS connecté) mais cassée en silence. Il manque un petit POST /api/integration/v1/connection_status { connected, message: {en, fr} } affiché dans l’écran Configuration.

4. Découverte locale broadcast (Tuya mode local). tuya.localScan écoute des broadcasts UDP LAN (ports 6666/6667/7000) — un conteneur en bridge ne les reçoit pas (les broadcasts ne traversent pas le NAT Docker ; le core s’en sort uniquement parce qu’il est en network=host). Le poll local unicast vers une IP connue traverse le NAT, donc le mode local resterait partiellement possible (IPs obtenues via le cloud), mais le scan broadcast non — c’est exactement la « découverte médiée » déjà prévue en phase 2, confirmée nécessaire par ce cas.

Nouvelle spec : Gladys/PLAN_INTEGRATIONS_EXTERNES.md at claude/focused-turing-q9vf41 · GladysAssistant/Gladys · GitHub

Le core + le SDK en cours d’implémentation…

Ok, quasi tout a été implémenté par Fable :

Les mots de Claude :sweat_smile: :

Du coup en effet pour Tuya c’est indispensable.

As-tu besoin que je teste ? Comment ? ^^
Le seul point noir visible, c’est que sans scan UDP, l’utilisateur doit rentrer toutes les adresse IP de ses équipements. Un moindre mais dommage par rapport à aujourd’hui :sweat_smile:

Je pensais que Claude l’avait fait mince !! Je vais le relancer

Pour les tests je reprend lundi, après si tu veux tester tes développements contre les PRs que j’ai fais tu peux :grin:

Le flemmard !!

Je suis le sujet un peu de loin mais c’est vraiment une bonne idée :slight_smile:

Par contre sa risque pas d’être un peu de rentrer en doublon avec la matterbridge-ai-plugin-factory si on peut développer des plugins comme sur ce dernier mais directement intégré à Gladys ?

J’aurai bien du coup aimer un plugin daikin et overkiz dans les intégrations externes si possible :wink:

Merci

@terdious C’est bon ! :grin: La spec, Gladys et le SDK sont à jour avec le scan réseau intégré, donc normalement tu as tout ce qu’il faut pour Tuya. Je n’ai encore rien testé de mon côté, je reprends le sujet lundi.

@prohand C’est clairement en concurrence avec Matterbridge, mais l’avantage ici, c’est que c’est directement intégré à Gladys, donc plus simple à mettre en place et à maintenir. Je pense que les deux ont leur place : chacun a ses points forts et ses limites, et c’est toujours sain d’avoir un peu de concurrence. :wink:

Aujourd’hui je me posais un peu la même question, mais en relisant des demandes de fonctionnalités, je suis retombé sur une demande de plugin « prix des carburants ».

Et pour ce genre de choses, on est (il me semble) pile poil dans ce qu’une intégration externe est sensée faire, alors que le plugin Matterbridge n’est pas utile dans ce cas là.

J’ai bon ?

Complètement :slight_smile:

Test Tuya, Intégration externe vs Intégration core :



Ca cause dans les logs ^^ :

[2026-07-18T23:59:11.547Z] [WARN] [tuya] Tuya function with "child_lock" code is not managed
[2026-07-18T23:59:11.547Z] [WARN] [tuya] Tuya function with "unix_time" code is not managed
[2026-07-18T23:59:11.547Z] [WARN] [tuya] Tuya function with "log_server_url" code is not managed
[2026-07-18T23:59:11.547Z] [WARN] [tuya] Tuya function with "log_server_port" code is not managed
[2026-07-18T23:59:11.547Z] [WARN] [tuya] Tuya function with "dev_token" code is not managed
[2026-07-18T23:59:11.547Z] [WARN] [tuya] Tuya function with "hydraulic_pressure" code is not managed
[2026-07-18T23:59:11.547Z] [WARN] [tuya] Tuya function with "temp_mode_flag" code is not managed
[2026-07-18T23:59:11.547Z] [WARN] [tuya] Tuya function with "program_num" code is not managed
[2026-07-18T23:59:11.547Z] [WARN] [tuya] Tuya function with "irri_instant_flow" code is not managed
[2026-07-18T23:59:11.547Z] [WARN] [tuya] Tuya function with "soft_ver" code is not managed
[2026-07-18T23:59:11.547Z] [WARN] [tuya] Tuya function with "dev_state" code is not managed
[2026-07-18T23:59:11.547Z] [WARN] [tuya] Tuya function with "app_features" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "temp_set" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "temp_current" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "mode" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "heat" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "light" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "countdown_left" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "sleep" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "health" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "windspeed" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "mode_ECO" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "mode_dry" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "windshake" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "Fault" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "Countdown" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "use_number" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "total_time" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "electricity" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "electricity_number" code is not managed
[2026-07-18T23:59:11.548Z] [WARN] [tuya] Tuya function with "unit" code is not managed
[2026-07-18T23:59:11.549Z] [WARN] [tuya] Tuya function with "horizontal" code is not managed
[2026-07-18T23:59:11.549Z] [WARN] [tuya] Tuya function with "vertical" code is not managed
[2026-07-18T23:59:11.549Z] [WARN] [tuya] Tuya function with "swing3d" code is not managed
[2026-07-18T23:59:11.549Z] [WARN] [tuya] Tuya function with "clean" code is not managed
[2026-07-18T23:59:11.549Z] [WARN] [tuya] Tuya function with "type" code is not managed
[2026-07-18T23:59:11.549Z] [WARN] [tuya] Tuya function with "fault2" code is not managed
[2026-07-18T23:59:11.549Z] [WARN] [tuya] Tuya function with "current_mode" code is not managed
[2026-07-18T23:59:11.549Z] [WARN] [tuya] Tuya function with "heat8" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "fan_speed_enum" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "eco" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "drying" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "cleaning" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "temp_unit_convert" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "temp_set" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "temp_current" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "mode" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "heat" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "light" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "countdown_left" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "sleep" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "health" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "windspeed" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "mode_ECO" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "mode_dry" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "windshake" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "Fault" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "Countdown" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "use_number" code is not managed
[2026-07-18T23:59:11.550Z] [WARN] [tuya] Tuya function with "total_time" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "electricity" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "electricity_number" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "unit" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "horizontal" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "vertical" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "swing3d" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "clean" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "type" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "fault2" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "current_mode" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "heat8" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "temp_set" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "temp_current" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "mode" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "heat" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "light" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "countdown_left" code is not managed
[2026-07-18T23:59:11.551Z] [WARN] [tuya] Tuya function with "sleep" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "health" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "windspeed" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "mode_ECO" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "mode_dry" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "windshake" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "Fault" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "Countdown" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "use_number" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "total_time" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "electricity" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "electricity_number" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "unit" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "horizontal" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "vertical" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "swing3d" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "clean" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "type" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "fault2" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "current_mode" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "heat8" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "mode" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "child_lock" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "week_program_1" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "week_program_2" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "week_program_3" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "week_program_4" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "week_program_5" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "week_program_6" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "week_program_7" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "vacation_duration" code is not managed
[2026-07-18T23:59:11.552Z] [WARN] [tuya] Tuya function with "boost_duration" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "electricity_statistics" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "elec_statistics_day" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "elec_statistics_month" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "elec_statistics_year" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "temp_current" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "average_power" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "temp_correction" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "fault" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "air_pressure_index" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "support_features" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "window_check" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "window_state" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "window_keep_time" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "temp_set" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "temp_unit_convert" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "app_features" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "switch_diff" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "upper_temp" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "lower_temp" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "running_mode" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "night_led_config" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "ecowatt_url" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "fan_speed_enum" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "eco" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "drying" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "cleaning" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "temp_unit_convert" code is not managed
[2026-07-18T23:59:11.553Z] [WARN] [tuya] Tuya function with "temp_set" code is not managed
[2026-07-18T23:59:11.554Z] [WARN] [tuya] Tuya function with "temp_current" code is not managed
[2026-07-18T23:59:11.554Z] [WARN] [tuya] Tuya function with "mode" code is not managed
[2026-07-18T23:59:11.554Z] [WARN] [tuya] Tuya function with "heat" code is not managed
[2026-07-18T23:59:11.554Z] [WARN] [tuya] Tuya function with "light" code is not managed
[2026-07-18T23:59:11.554Z] [WARN] [tuya] Tuya function with "countdown_left" code is not managed
[2026-07-18T23:59:11.554Z] [WARN] [tuya] Tuya function with "sleep" code is not managed
[2026-07-18T23:59:11.554Z] [WARN] [tuya] Tuya function with "health" code is not managed
[2026-07-18T23:59:11.554Z] [WARN] [tuya] Tuya function with "windspeed" code is not managed
[2026-07-18T23:59:11.554Z] [WARN] [tuya] Tuya function with "mode_ECO" code is not managed
[2026-07-18T23:59:11.554Z] [WARN] [tuya] Tuya function with "mode_dry" code is not managed
[2026-07-18T23:59:11.554Z] [WARN] [tuya] Tuya function with "windshake" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "Fault" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "Countdown" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "use_number" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "total_time" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "electricity" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "electricity_number" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "unit" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "horizontal" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "vertical" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "swing3d" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "clean" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "type" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "fault2" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "current_mode" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "heat8" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "mode" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "temp_set" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "timer_switch" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "travel_switch" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "cur_mode" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "travel_time" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "week_data" code is not managed
[2026-07-18T23:59:11.555Z] [WARN] [tuya] Tuya function with "lock_switch" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "VoltageA" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "CurrentA" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "ActivePowerA" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "PowerFactorA" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "ReactivePowerA" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "EnergyConsumedA" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "VoltageB" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "CurrentB" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "ActivePowerB" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "PowerFactorB" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "ReactivePowerB" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "EnergyConsumedB" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "VoltageC" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "CurrentC" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "ActivePowerC" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "PowerFactorC" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "ReactivePowerC" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "EnergyConsumedC" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "EnergyConsumed" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "Current" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "ActivePower" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "ReactivePower" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "Frequency" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "Temperature" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "DeviceStatus" code is not managed
[2026-07-18T23:59:11.556Z] [WARN] [tuya] Tuya function with "voltage_phase_seq" code is not managed
[2026-07-18T23:59:12.193Z] [INFO] onScanRequest -> discovering Tuya devices
[2026-07-18T23:59:12.333Z] [INFO] [tuya] 10 Tuya devices found
[2026-07-18T23:59:13.233Z] [INFO] [tuya] [Tuya][localScan] Starting mediated udp-broadcast scan for 10s

On va maintenant tenter d’avancer ^^

A noter que pour le test, j’ai pris tes branches en cours de dev que j’ai lancé en local en mode dev (hors container).
Après quelques galères sur :

  • le manifest (description en/fr trop longue, Fable dis que ce n’est pas expliqué)
  • l’intégration du SDK, j’ai pu dl l’image tuya de ma branche test-e2e-sdk-pr5 : ghcr.io/terdious/gladys-tuya:dev

Je n’ai rien dans le menu découverte. Mais dans les logs, je pense voir le soucis :

2026-07-19T01:54:32+0200 <debug> externalIntegration.saveStatus.js:15 (ExternalIntegration.saveStatus) External integration ext-dev-tuya: status LOADING
2026-07-19T01:54:32+0200 <debug> gateway.forwardWebsockets.js:14 (Gateway.forwardWebsockets) Gateway: not connected. Prevent forwarding event.
2026-07-19T01:54:33+0200 <info> externalIntegration.integrationConnected.js:19 (ExternalIntegration.integrationConnected) External integration ext-dev-tuya connected in websocket
2026-07-19T01:54:33+0200 <debug> externalIntegration.saveStatus.js:15 (ExternalIntegration.saveStatus) External integration ext-dev-tuya: status RUNNING
2026-07-19T01:54:33+0200 <debug> gateway.forwardWebsockets.js:14 (Gateway.forwardWebsockets) Gateway: not connected. Prevent forwarding event.
2026-07-19T01:55:00+0200 <debug> scene.checkCalendarTriggers.js:25 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sat, 18 Jul 2026 23:55:00 GMT
2026-07-19T01:55:13+0200 <debug> lan-manager.scanPresence.js:25 (LANManager.scanPresence) LANManager: 0 presence sensor features
2026-07-19T01:56:00+0200 <debug> scene.checkCalendarTriggers.js:25 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sat, 18 Jul 2026 23:56:00 GMT
2026-07-19T01:57:00+0200 <debug> scene.checkCalendarTriggers.js:25 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sat, 18 Jul 2026 23:57:00 GMT
2026-07-19T01:57:13+0200 <debug> lan-manager.scanPresence.js:25 (LANManager.scanPresence) LANManager: 0 presence sensor features
2026-07-19T01:58:00+0200 <debug> scene.checkCalendarTriggers.js:25 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sat, 18 Jul 2026 23:58:00 GMT
2026-07-19T01:58:40+0200 <debug> errorMiddleware.js:26 (errorMiddleware) BadParameters [Error]: devices[0].poll_frequency: invalid poll frequency
    at /home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/lib/external-integration/externalIntegration.setDiscoveredDevices.js:43:13
    at Array.map (<anonymous>)
    at ExternalIntegration.setDiscoveredDevices (/home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/lib/external-integration/externalIntegration.setDiscoveredDevices.js:32:37)
    at publishDiscoveredDevices (/home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/api/controllers/integrationHost.controller.js:64:46)
    at /home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/api/middlewares/asyncMiddleware.js:4:26
From previous event:
    at /home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/api/middlewares/asyncMiddleware.js:4:18
    at Layer.handle [as handle_request] (/home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/node_modules/express/lib/router/route.js:144:13)
    at /home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/api/middlewares/externalIntegrationAuthMiddleware.js:30:5
2026-07-19T01:59:00+0200 <debug> scene.checkCalendarTriggers.js:25 (SceneManager.checkCalendarTriggers) Checking calendar triggers at Sat, 18 Jul 2026 23:59:00 GMT
2026-07-19T01:59:02+0200 <debug> errorMiddleware.js:26 (errorMiddleware) ConflictError: EXTERNAL_INTEGRATION_SCAN_ALREADY_RUNNING
    at ExternalIntegration.runNetworkDiscoveryScan (/home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/lib/external-integration/networkDiscovery/networkDiscovery.runScan.js:47:11)
    at networkDiscoveryScan (/home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/api/controllers/integrationHost.controller.js:104:54)
    at /home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/api/middlewares/asyncMiddleware.js:4:26
From previous event:
    at /home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/api/middlewares/asyncMiddleware.js:4:18
    at Layer.handle [as handle_request] (/home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/node_modules/express/lib/router/route.js:144:13)
    at /home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/api/middlewares/externalIntegrationAuthMiddleware.js:30:5
2026-07-19T01:59:02+0200 <debug> errorMiddleware.js:26 (errorMiddleware) BadParameters [Error]: devices[0].poll_frequency: invalid poll frequency
    at /home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/lib/external-integration/externalIntegration.setDiscoveredDevices.js:43:13
    at Array.map (<anonymous>)
    at ExternalIntegration.setDiscoveredDevices (/home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/lib/external-integration/externalIntegration.setDiscoveredDevices.js:32:37)
    at publishDiscoveredDevices (/home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/api/controllers/integrationHost.controller.js:64:46)
    at /home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/api/middlewares/asyncMiddleware.js:4:26
From previous event:
    at /home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/api/middlewares/asyncMiddleware.js:4:18
    at Layer.handle [as handle_request] (/home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/node_modules/express/lib/router/route.js:144:13)
    at /home/gladys/GladysDev/gladys-external-integration-test/Gladys/server/api/middlewares/externalIntegrationAuthMiddleware.js:30:5

Après correctifs, ca marche :raising_hands: :sweat_smile:

Mais du coup pas de local, car il faut déclarer l’adresse IP dans le device ainsi que la version de protocol (la version core de Tuya scan les différent protocoles pour déterminer le bon une fois l’IP entrée) :


Mais bon ca fonctionne à moitié pour le moment (commande OK, retours d’état KO.

A poursuivre ^^

Et pour Zendure :


Mais pas de valeur non plus :


Et les journaux + logs ne disent pas grand chose contrairement à Tuya. Surement problème de poll
^

Edit : Abonnement au topic mqtt cloud ok !! Valeurs ok :


Quelques remarques :

  • sauf si erreur de ma part, en dev, il serait possible de pouvoir mettre à jour plus facilement l’image, notamment quand le manifest ne change pas ?
    Et limite quand on est sur un tag dev ce ne serait pas possible de pouvoir modifier le manifest directement depuis là config.

  • On ne peut pas passer les intégrations externe en favoris

  • Pouvoir filtrer les intégrations externes pourrait être top