Intégration domotique JUNG HOME, gratuite et open source

Lumières, volets, prises et thermostats JUNG HOME, par la passerelle. Non officiel.
Cette intégration relie votre installation JUNG HOME à Gladys par l'API locale de la passerelle JUNG HOME (Bluetooth Mesh vers IP). Tout reste sur votre réseau local. Non officiel, sans lien avec JUNG (Albrecht JUNG GmbH & Co. KG).
Jamais testé avec un vrai appareil pour l'instant : l'intégration a été
écrite d'après la documentation du protocole de la bibliothèque de référence
junghome (MIT) et testée contre une passerelle simulée. Vos retours sont les
bienvenus.
Ce que vous obtenez
Dans l'onglet Découverte :
- Lumières (marche/arrêt) et variateurs (luminosité) ;
- Volets roulants et stores : ouvrir, fermer, arrêter, position (les lamelles ne sont pas encore pilotées) ;
- Prises : leur état, un bouton « Éteindre », et leur puissance quand la prise la mesure ; une prise déclarée sûre devient un interrupteur ;
- Thermostats d'ambiance : température ambiante, consigne, bouton « Hors gel » ;
- Boutons à bascule : un appui haut ou bas arrive à vos scènes Gladys ;
- Capteurs : température, luminosité, puissance ;
- Scènes JUNG HOME : un bouton « Lancer » chacune.
Les identifiants des appareils sont liés au numéro de série de la passerelle
et à l'identifiant de chaque fonction (function:sn<série>_<fonction>) : ils
ne changent pas avec une mise à jour, mais une fonction réappairée dans l'app
JUNG HOME devient un nouvel appareil. Sur un micrologiciel sans numéro de série,
l'adresse MAC le remplace.
Configuration
- Saisissez l'adresse IP de la passerelle (visible dans l'app JUNG HOME ou
dans votre box) et enregistrez. Les noms en
.localne sont pas résolus dans le conteneur. - Cliquez sur Demander l'accès. L'intégration lit d'abord le certificat de la passerelle et l'épingle (son empreinte SHA-256 s'affiche), puis envoie une seule demande au nom de « Gladys ».
- Dans l'app JUNG HOME : Réglages, Passerelle, Autorisations d'accès, Demandes ouvertes, acceptez « Gladys » dans les 3 minutes. Le jeton est enregistré tout seul et la connexion démarre.
- Ajoutez les appareils voulus depuis l'onglet Découverte.
Le jeton est gardé par Gladys dans sa base, jamais réaffiché, envoyé seulement à la passerelle à l'adresse saisie, et seulement sur une connexion dont le certificat est celui épinglé.
Certificat de la passerelle
La passerelle a un certificat auto-signé. L'intégration n'accepte que celui épinglé : appris à votre premier clic sur « Demander l'accès » ou « Tester la connexion », ou saisi dans le champ Empreinte du certificat. Si un autre certificat se présente (passerelle remplacée, carte réinstallée, ou un autre appareil à cette adresse), rien n'est envoyé, pas même un arrêt, et le statut affiche l'empreinte vue. Pour lui faire confiance : cliquez deux fois sur Faire confiance au nouveau certificat (le second clic dans les 2 minutes), ou saisissez cette empreinte dans la configuration.
Ce qui part toujours, ce qui est désactivé par défaut
Partent toujours : éteindre une lumière ou une prise, arrêter un volet, fermer un volet, le hors gel d'un thermostat. Ni une option, ni une pause 429, ni une lecture ou une commande en cours, ni le numéro de série pas encore relu ne les retiennent. Elles annulent les commandes de la même cible encore en attente : rien de ce qui a été demandé avant un arrêt ne part après lui.
Un arrêt ne part pas seulement dans ces cas, et il est alors gardé (le statut le dit) puis envoyé dès que possible :
- adresse ou jeton absent ou invalide, ou jeton refusé par la passerelle : il part en premier dès qu'un nouveau jeton est enregistré ou que « Tester la connexion » réussit ;
- pas de certificat épinglé, ou certificat changé : il part dès que le certificat est épinglé ou de nouveau reconnu ;
- passerelle injoignable, ou route refusée (401/403) alors que la liste des fonctions accepte encore le jeton : il est renvoyé toutes les 5 secondes, sans limite de durée (seul un refus de la liste des fonctions vaut jeton refusé) ;
- avant la première lecture de la configuration dans Gladys (démarrage du conteneur) : il est refusé, rien n'est envoyé (le jeton n'est pas encore connu).
Une extinction ou un hors gel reste gardé, aussi dans /data (un redémarrage
du conteneur le renvoie en premier, dès la configuration lue), jusqu'à ce
qu'une lecture partie après la réponse de la passerelle le montre appliqué.
Si la lecture montre le contraire, il est renvoyé ; seuls les envois auxquels
la passerelle a répondu comptent, 4 au plus (après un redémarrage du
conteneur, il part encore une fois au moins). Après
4 refus de la passerelle (appareil verrouillé, alarme vent) ou 4 envois non
appliqués, il reste gardé et affiché, sans nouvel envoi, jusqu'à une lecture
qui le montre appliqué ou une commande plus récente. Une commande plus récente de la
même cible, prise par la passerelle, le remplace. Un mouvement de volet
(fermer, arrêter) est terminé dès que la passerelle l'a pris, et n'est jamais
rejoué après un redémarrage. Une fermeture qui n'a pas atteint la passerelle
est d'abord retentée deux fois dans les 250 ms environ qui suivent votre clic
(c'est encore votre clic : un volet ouvert à la main pendant ces 250 ms peut
être refermé) ; ensuite, elle n'est renvoyée qu'après une lecture du volet, une
fois par lecture : fermé ou en train de se fermer, c'est fait ; lu plus ouvert
qu'au clic deux fois de suite, il a été ouvert à la main entre-temps et la
fermeture est abandonnée. Une ouverture à la main entre cette lecture et
l'envoi (quelques millisecondes) ne peut pas être vue.
Désactivé par défaut :
- Prises : une prise peut alimenter n'importe quoi, et un « allume tout »
d'un assistant vocal ou d'une scène atteint chaque interrupteur. Une prise
n'est donc qu'un état et un bouton « Éteindre », tant que vous ne la
déclarez pas sûre (champ Prises déclarées sûres, avec l'identifiant
JUNG_FUNCTIONaffiché dans la Découverte) ; elle devient alors un interrupteur après un nouveau Scan. - Consignes de chauffage : en lecture seule tant que vous ne les autorisez pas ; ensuite entre 5 et 30 °C (les bornes du thermostat), par pas de 0,5 °C arrondi vers le bas.
- Scènes JUNG HOME : une scène peut allumer n'importe quelle prise ; leur bouton ne fait rien tant que vous ne les autorisez pas.
L'option est relue juste avant l'envoi : décochée pendant qu'une commande attend, la commande est refusée.
Ce que dit une commande refusée
Une commande (autre qu'un arrêt) part dans les 3,5 secondes ou pas du tout : « rien envoyé » dit qu'elle n'est jamais partie. « Refusée par la passerelle » reprend sa raison (appareil verrouillé, alarme vent...). « Envoyée, sans confirmation » dit qu'elle est partie sans réponse ; « pas encore appliquée » qu'une relecture ne la montre pas encore. Dans ces deux derniers cas, l'appareil est relu après 5 et 20 secondes et son badge le signale en attendant.
Lectures et mises à jour en direct
Avec les mises à jour en direct (par défaut), la passerelle envoie chaque changement par WebSocket ; la liste complète est relue toutes les 5 minutes. Sans elles, ou si la connexion est perdue, la liste est relue à l'intervalle choisi (60 s par défaut). Jamais plus vite : ni le bouton Scan (qui republie la Découverte sans relire), ni le bouton « Tester la connexion » (qui dit alors quand il pourra tester), ni un redémarrage du conteneur ne relisent avant l'intervalle après la dernière lecture ; une nouvelle adresse ou un nouveau jeton enregistré relit tout de suite. Une lecture faite par le bouton Test est la lecture de l'intégration : sa liste sert aussitôt (connectée dès le test réussi) et la lecture suivante vient à l'intervalle après elle. Tant que le jeton est refusé (aucune lecture ne tourne alors) ou qu'une autre passerelle répond (les lectures continuent, ses fonctions ne sont pas proposées), le bouton Test essaie tout de suite, une fois par 10 secondes, chaque essai lisant la liste des fonctions. Pendant une pause demandée par la passerelle (429), ni le bouton Test ni « Demander l'accès » n'envoient aucune requête ; seuls les arrêts partent.
Un appui sur un bouton à bascule est vu seulement en direct. Le micrologiciel 2.2.0 des boutons envoie chaque appui deux fois, à environ 1 s : un second appui sur le même bouton dans les 1,2 s est ignoré.
Limites connues
- Les lamelles des stores, la température de couleur et les stores bannes (sens inversé) ne sont pas encore pilotés.
- Le compteur d'énergie des prises (accessible seulement par une route expérimentale de la passerelle) n'est pas lu.
- Un appui long et un double appui ne sont pas distingués.
- La demande d'accès par mot de passe de la clé réseau n'est pas proposée : seulement par accord dans l'app JUNG HOME.
Dépannage
- « Le certificat de la passerelle a changé » : voir plus haut.
- « La passerelle a refusé le jeton » : l'accès a été retiré dans l'app ; cliquez sur « Demander l'accès » de nouveau.
- « Une autre passerelle répond à cette adresse » : le numéro de série lu n'est plus celui appris ; « Tester la connexion » accepte la nouvelle passerelle.
- « /data est illisible » : l'intégration fonctionne, mais n'apprend ni ne garde rien (certificat, identité, arrêts) ; saisissez l'empreinte du certificat dans la configuration.
Paramètres de configuration
Voici les paramètres demandés par JUNG HOME dans son écran de configuration dans Gladys.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| Votre installation JUNG HOME dans Gladys | section | Non | Les fonctions de votre passerelle JUNG HOME sont proposées dans l'onglet Découverte : lumières et variateurs, volets roulants et stores, prises, thermostats d'ambiance, boutons à bascule, capteurs, et vos scènes JUNG HOME. Tout reste sur votre réseau local, par l'API locale de la passerelle, avec des mises à jour en direct. Enregistrez l'adresse, cliquez sur « Demander l'accès » et acceptez « Gladys » dans l'app JUNG HOME. Jamais testé avec un vrai appareil pour l'instant. Non officiel, sans lien avec JUNG. |
| Adresse de la passerelle | string | Oui | L'adresse IP locale de votre passerelle JUNG HOME, par exemple 192.168.1.30 (visible dans l'app JUNG HOME ou dans votre box). Le jeton est envoyé à cette adresse seulement, sur son certificat épinglé. |
| Jeton de la passerelle | secret | Non | Rempli par le bouton « Demander l'accès » ci-dessous une fois « Gladys » accepté dans l'app JUNG HOME. Gardé par Gladys dans sa base, jamais réaffiché, et envoyé seulement à la passerelle à l'adresse ci-dessus. |
| Empreinte du certificat (facultatif) | string | Non | L'empreinte SHA-256 du certificat de la passerelle. Vide : apprise à votre premier clic sur « Demander l'accès » ou « Tester la connexion », puis vérifiée à chaque connexion (le jeton ne part jamais vers un autre certificat). |
| Mises à jour en direct | boolean | Non | Écoute le WebSocket de la passerelle : les états suivent en une seconde et les appuis sur les boutons arrivent à vos scènes. Désactivé : les états sont lus à l'intervalle ci-dessous et les appuis ne sont pas vus. |
| Intervalle de lecture sans mises à jour en direct (s) | number | Non | Fréquence de lecture des états quand les mises à jour en direct sont désactivées ou perdues (30 à 3600 s). Avec elles, toutes les 5 minutes. Jamais plus vite, même après un redémarrage. |
| Commandes | section | Non | Éteindre, arrêter ou fermer un volet et le hors gel d'un thermostat partent toujours, quelles que soient les options ci-dessous. Une prise peut alimenter n'importe quoi (un radiateur, un congélateur, une pompe) et un « allume tout » d'un assistant vocal ou d'une scène atteint chaque interrupteur : une prise n'a que « Éteindre » tant que vous ne la déclarez pas sûre. Les consignes de chauffage et les scènes JUNG HOME (qui peuvent commander n'importe quelle prise) restent désactivées tant que vous ne les autorisez pas. |
| Prises déclarées sûres | string | Non | Les identifiants de fonction des prises qu'on peut allumer à tout moment (paramètre JUNG_FUNCTION dans l'onglet Découverte), séparés par des virgules. Elles deviennent des interrupteurs après un nouveau Scan. Seulement des prises de lampe ou d'appareil qui peut démarrer à tout moment. |
| Autoriser les consignes de chauffage | boolean | Non | Désactivé par défaut : les consignes des thermostats d'ambiance sont en lecture seule (le hors gel part quand même). Activé : Gladys peut les régler, entre 5 et 30 °C. |
| Autoriser les scènes JUNG HOME | boolean | Non | Désactivé par défaut : une scène JUNG HOME peut allumer n'importe quelle prise, sûre ou non. Activé : leur bouton « Lancer » les exécute, depuis le tableau de bord et les scènes de Gladys. |
| Langue des noms des fonctionnalités | select | Non | Sert aux noms des fonctionnalités des appareils ajoutés désormais, et aux refus. |
Comment installer JUNG HOME dans Gladys
- Dans Gladys, ouvrez Intégrations : JUNG HOME apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
- Cliquez sur Installer. Gladys télécharge l'image Docker (
ghcr.io/lm1lc3n7/gladys-jung-home:0.1.1), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration). - Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
- Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/LM1LC3N7/gladys-jung-home.
JUNG HOME nécessite Gladys >=5.1.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.
Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.
À propos des intégrations externes
JUNG HOME est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par LM1LC3N7, et non par l'équipe cœur de Gladys.
- Parcourir toutes les intégrations, natives et communautaires
- Créer et publier votre propre intégration externe
- Code source sur GitHub — source de cette documentation