Aller au contenu principal

Intégration Devmel pour Gladys Assistant

Intégration Devmel pour Gladys Assistant

Pilotez volets, interrupteurs, lampes et capteurs d'une passerelle radio Devmel AirSend.

Cette intégration relie Gladys à une passerelle radio Devmel AirSend ou AirSend Duo, et à travers elle aux équipements 433 MHz / 868 MHz qu'elle pilote : volets roulants, interrupteurs, lampes variables, portails, et les capteurs qui émettent en retour (Somfy RTS, Chacon DiO, Nice, FAAC, Bubendorff…).

Avant de commencer

Vos appareils s'appairent dans l'application mobile AirSend ou sur airsend.cloud, pas dans Gladys : cette intégration rejoue les ordres radio qu'ils connaissent déjà. Faites-les d'abord fonctionner là-bas.

Tout passe ensuite par le canal local ci-dessous : l'intégration pilote votre boîtier sur votre propre réseau, et n'appelle jamais airsend.cloud pour envoyer un ordre.

Local

Le canal local dialogue avec le service web AirSend, le petit serveur HTTP fourni par Devmel pour piloter le boîtier depuis votre réseau.

Il est inclus. L'intégration le fait tourner dans son propre conteneur, sur http://127.0.0.1:33863, et le surveille : rien à installer à côté de Gladys, aucune URL à renseigner. C'est l'interrupteur Utiliser le service AirSend intégré, activé par défaut, qui le commande.

La seule chose que le canal local attend de vous est donc la chaîne de connexion exportée par airsend.cloud, de la forme :

sp://motdepasse@[fe80::xxxx:xxxx:xxxx:xxxx]?gw=0&rhost=192.168.1.50

Conservez toujours la partie ?gw=0&rhost=<IPv4 du boîtier> : sans elle le boîtier n'est joignable qu'en IPv6 lien-local et le service renvoie des erreurs inattendues.

Utiliser un service que vous faites déjà tourner

Si le service web AirSend tourne déjà quelque part sur votre réseau — l'add-on Home Assistant, le démon Jeedom, un conteneur à vous — renseignez simplement le champ URL du service AirSend (http://192.168.1.50:33863/). Une URL saisie là l'emporte : l'intégration l'utilise et ne démarre rien de son côté.

Configuration

  1. Ouvrez l'onglet Configuration de l'intégration.
  2. Collez la chaîne de connexion de votre boîtier. C'est suffisant : le service AirSend tourne déjà dans l'intégration.
  3. Collez votre liste d'appareils (voir plus bas).
  4. Enregistrez, puis cliquez sur Tester la connexion : le résultat indique l'état du service intégré, du canal local, et le nombre d'appareils compris.
  5. Les appareils apparaissent dans l'onglet Découverte, prêts à être ajoutés à Gladys.

L'URL du service AirSend ne sert que dans le cas décrit plus haut : un service à vous.

Chaque appareil affiche en pastille le canal qui a porté son dernier ordre : local quand votre boîtier a répondu, unreachable quand il n'a pas pu être joint.

La liste d'appareils

Sur airsend.cloud, ouvrez Import/Export et exportez vos appareils en JSON. Cet export est lu tel quel, y compris sur une seule ligne, ce qui est exactement ce qu'attend le champ Appareils.

L'export JSON

Il se présente ainsi — une liste, et le canal radio écrit à plat :

{
"devices": [
{
"name": "Baie vitrée",
"localip": "fe80::dcf6:e5ff:fe8f:89cd",
"type": 4098,
"pid": 25455,
"addr": 8295
}
]
}

Collez-le tel quel, y compris sur une seule ligne. pid et addr sont le canal radio de l'appareil : pid en est l'identifiant de canal (le protocole, partagé par tous les appareils pilotés de la même façon) et addr sa source (l'adresse de l'émetteur). localip est l'adresse du boîtier auquel l'appareil est rattaché ; le boîtier reste joint par la chaîne de connexion sp:// saisie plus haut.

Une entrée sans canal radio est ignorée : le boîtier n'aurait rien à émettre pour elle. Le boîtier lui-même (type: 0) fait exception — il répond toujours sur le canal 1.

Écrire la liste à la main

La même liste peut s'écrire à la main, indexée par nom, avec le canal imbriqué sous channel plutôt que le couple pid / addr à plat. Cela reste du JSON :

{
"devices": {
"Boîtier AirSend": { "type": 0, "sensors": true, "refresh": 300 },
"Volet salon": {
"type": 4098,
"invert": true,
"channel": { "id": 25455, "source": 94311 }
},
"Lumière pergola": { "type": 4100, "channel": { "id": 26848, "source": 1442421508 } },
"Capteur extérieur": {
"type": 1,
"features": ["temperature", "humidity"],
"channel": { "id": 1368, "source": 542 }
}
}
}

Types d'appareils

typeAppareilCe que vous obtenez dans Gladys
0Boîtier AirSendSes capteurs de température et de luminosité
1Capteur / télécommandeCe qu'il émet (voir features ci-dessous)
4096BoutonUn bouton poussoir qui envoie TOGGLE
4097InterrupteurMarche/Arrêt
4098VoletOuvrir / Stop / Fermer (+ position si chronométré)
4099Volet avec positionOuvrir / Stop / Fermer + une position 0-100 %
4100Lampe variableMarche/Arrêt + luminosité

Options d'un appareil

OptionSignification
typeType d'appareil (tableau ci-dessus), obligatoire
channelCanal radio (id, source, mac, seed), obligatoire
pidLe channel.id de l'export JSON (utilisez l'un ou l'autre)
addrLe channel.source de l'export JSON
remotesAutres émetteurs qui pilotent l'appareil (voir « La télécommande murale »)
spurlChaîne de connexion propre à cet appareil, si différente de la globale
waitAttendre la confirmation radio avant de répondre (false par défaut)
repeatÉmissions supplémentaires des ordres envoyés à cet appareil (voir plus bas)
invertInverser ouverture et fermeture, pour les volets posés à l'envers
travel_upSur un volet : durée d'une ouverture complète, en secondes (voir plus bas)
travel_downSur un volet : durée d'une fermeture complète, en secondes
travelLes deux à la fois, pour un moteur qui se comporte pareil dans les deux sens
favorite_positionSur un volet : la position programmée dans le moteur, en %
sensorsSur un boîtier (type: 0), exposer ses capteurs de température et lumière
refreshIntervalle de lecture de ces capteurs, en secondes
featuresSur un capteur (type: 1) : temperature, humidity, illuminance, click

Un boîtier déclaré sans sensors: true ne crée aucun appareil dans Gladys : il n'est là que pour porter la chaîne de connexion.

Faire passer un ordre

Rien n'accuse réception d'un ordre radio. Un volet 433 MHz n'a pas de voie de retour : le boîtier émet, et personne ne dira jamais si le moteur a entendu. Une trame perdue dans le bruit — un micro-ondes, la télécommande du voisin, une porte de garage — n'est donc pas une erreur affichée quelque part, c'est un clic sans effet. C'est exactement ce que décrit « il faut cliquer deux ou trois fois sur Ouvrir pour que ça parte ».

Trois choses y répondent, sans rien à régler :

  • les ordres passent un par un. Un boîtier n'a qu'une radio : pendant qu'il émet, il n'entend rien, et un deuxième ordre envoyé dans la foulée arrive sur un boîtier occupé. Les ordres font donc la queue, espacés d'un quart de seconde, dans l'ordre où vous les avez donnés ;
  • un ordre que le boîtier n'a pas pu porter est renvoyé. Un refus, lui, ne l'est pas : une chaîne de connexion rejetée et un canal inconnu répondront exactement pareil la seconde fois ;
  • un ordre est répété sur l'air, comme une vraie télécommande le répète tant qu'on garde le doigt appuyé. Par défaut, chaque ordre part deux fois.

Le champ Répétitions des commandes règle ce nombre d'émissions supplémentaires : montez-le à 2 ou 3 si un appareil ignore encore Gladys de temps en temps, 0 n'envoie chaque ordre qu'une fois. Un appareil têtu peut avoir la sienne, sans changer celle des autres :

{ "devices": { "Baie vitrée": { "type": 4098, "pid": 25455, "addr": 8295, "repeat": 3 } } }

Seuls les ordres qui veulent dire la même chose deux fois sont répétés — Ouvrir, Stop, Fermer, une position. Un TOGGLE de bouton poussoir, lui, part une seule fois : entendu deux fois, il revient d'où il part.

Gladys ne se prend pas pour la télécommande

Tout ce que l'intégration émet lui revient : le boîtier répond à l'ordre, et comme il écoute en permanence, il s'entend lui-même émettre. Cet écho porte l'ordre qui vient d'être envoyé — et le relire comme un ordre neuf défait ce que l'ordre était en train de faire. Un volet chronométré envoyé à 40 % en est l'exemple : l'écho de son « Ouvrir » le renvoyait à 100 % et annulait le Stop prévu à mi-course, si bien que le volet montait tout en haut. L'intégration reconnaît maintenant ses propres ordres et ne les rejoue pas.

Deux conséquences visibles :

  • une télécommande murale émet depuis une autre adresse : elle n'est jamais prise pour cet écho, et continue de piloter le volet dans Gladys ;
  • quand le boîtier répond qu'il n'a pas pu émettre, l'intégration l'écrit dans ses journaux, en nommant l'appareil. C'est la seule trace d'un ordre parti dans le vide, et elle vaut le coup d'œil si vous cliquez souvent deux fois.

La position d'un volet

Un volet 433 MHz ne dit jamais où il est : la radio transporte des ordres, pas des positions. Ce qu'il a, en revanche, c'est une durée — un moteur donné met toujours le même temps pour aller d'une butée à l'autre. Chronométrez cette course une fois, et la position devient calculable.

Chronomètre en main, du démarrage du volet jusqu'à son arrêt tout seul, notez les deux durées :

{
"devices": {
"Volet salon": {
"type": 4098,
"travel_up": 22,
"travel_down": 20,
"channel": { "id": 25455, "source": 94311 }
}
}
}

L'intégration suit alors le volet seconde par seconde, que l'ordre vienne de Gladys ou d'une télécommande murale entendue à la radio (ce qui suppose le canal d'écoute décrit plus bas). Trois conséquences :

  • un 4098 obtient lui aussi une position — la fonctionnalité apparaît dès que le volet est chronométré, et son curseur pilote le moteur par un Ouvrir/Stop minuté : l'intégration lance le volet dans le bon sens et lui envoie le Stop au moment où la course dit qu'il est arrivé ;
  • le stop ne ment plus : un volet arrêté à mi-course remonte la position qu'il a réellement atteinte, au lieu de conserver les 100 % annoncés par l'ordre ;
  • l'estimation se répare toute seule : un volet qu'on laisse aller jusqu'à sa butée est exactement à 0 % ou à 100 %, puisque le moteur s'y arrête physiquement. Chaque ouverture ou fermeture complète efface l'erreur accumulée par les courses partielles précédentes.

Comptez ±5 % de précision : un moteur ralentit en charge et par temps froid. Si un volet dérive, un scénario qui l'ouvre entièrement une fois par jour suffit à le remettre d'aplomb.

Un volet que vous n'avez pas chronométré garde le comportement précédent : Gladys affiche la destination du dernier ordre, ce qui est tout ce qu'un protocole unidirectionnel peut offrir.

Deux détails qui comptent :

  • tant qu'il n'a pas fait sa première course complète, la position d'un volet chronométré est inconnue, et l'intégration ne publie rien plutôt que d'inventer une valeur. Ouvrez-le ou fermez-le une fois et c'est réglé. Demander une position avant cela envoie le volet à la butée la plus proche, ce qui est précisément ce qui établit la référence ;
  • la position survit aux redémarrages de l'intégration : elle repart de la valeur conservée par Gladys.

La position favorite

Beaucoup de moteurs ont une position à eux, programmée dans le matériel (le bouton « my » de Somfy). La radio dit « va à ta position » sans jamais dire laquelle. Mesurez-la une fois et déclarez-la avec "favorite_position": 40 : appuyer sur ce bouton remonte alors 40 % dans Gladys. Sans elle, le volet est signalé arrêté quelque part entre les deux — la réponse honnête.

Écouter la radio

Le boîtier AirSend peut retransmettre chaque trame qu'il entend — une télécommande murale actionnée à la main, un capteur météo qui se réveille — pour que Gladys suive ce qui se passe dans la maison, et pas seulement ce qu'il a lui-même commandé. C'est ce qui fait bouger la position d'un volet quand on l'ouvre depuis sa télécommande.

C'est actif par défaut, et il n'y a rien à régler : l'intégration abonne le boîtier au protocole radio de vos appareils et reçoit les trames chez elle. Rien à installer, rien à lier.

L'abonnement est réarmé après chaque ordre, et renouvelé toutes les dix minutes. Émettre sort le boîtier de la réception, et un abonnement qui n'a pas survécu à une commande, c'est une télécommande murale que Gladys cesse de suivre sans rien en dire — jusqu'au renouvellement suivant.

Le canal d'écoute

Ce que le boîtier écoute est un protocole, pas un appareil : il n'a qu'une radio, et l'abonner le fait basculer en réception permanente d'un seul protocole à la fois. Le canal 1 est l'écoute générique 433 MHz, qui couvre les protocoles conçus pour y entrer — mais pas les autres, et un volet Somfy écouté sur le canal 1 reste silencieux exactement comme une télécommande sur laquelle personne n'appuie.

L'intégration n'a donc pas à le deviner : elle demande au service AirSend quel canal décode quel protocole, et abonne le boîtier à celui de vos appareils. Laissez le champ Canal d'écoute vide.

Renseignez-le seulement pour écouter autre chose : le pid d'un protocole que vous n'avez pas encore déclaré, 1 pour l'écoute générique, ou 0 pour couper l'écoute.

Pour vérifier, cliquez sur Tester la connexion : la ligne Écoute dit quel protocole est écouté, quels appareils il couvre, et vers où les trames sont poussées — ou pourquoi elles ne le sont pas.

Le 868 MHz et le code tournant

Le canal 1, l'écoute générique, c'est du 433 MHz. Un protocole 868 MHz — Profalux, Somfy io — n'y est pas entendu du tout. Or tant que vous n'avez rien déclaré, il n'y a rien à déduire, et l'intégration se rabat sur ce canal 1 par défaut : le boîtier écoute alors la mauvaise bande, et le silence qui en résulte ressemble trait pour trait à une télécommande sur laquelle personne n'appuie. L'intégration le dit désormais dans ses logs et dans Tester la connexion.

Deux façons d'en sortir : déclarer un appareil sur le protocole en question, ou renseigner son pid dans le champ Canal d'écoute.

Le code tournant de ces télécommandes, lui, n'est pas ce qui vous empêche de recevoir les trames. Il protège l'émission : pour commander un volet Profalux, le boîtier AirSend doit avoir été appairé au moteur, comme une télécommande supplémentaire. En réception, il ne gêne rien : le compteur et les champs mac / seed changent à chaque trame, et l'intégration les ignore délibérément — un émetteur est identifié par son pid et son addr, qui eux ne bougent pas.

Ce que le code tournant change, en revanche, c'est le décodage : le service AirSend ne décode ces protocoles que partiellement. La trame arrive, l'émetteur est nommé, mais elle ne porte aucune note exploitable. Ces trames-là sont maintenant journalisées avec leur pid et leur addr : c'est la preuve que la radio fonctionne, et de quoi rattacher l'émetteur à un appareil.

La télécommande murale

Un même volet est piloté par plusieurs émetteurs : le boîtier AirSend, et la télécommande vissée au mur. Ils parlent le même protocole depuis des adresses différentes, donc le boîtier les entend sur des canaux différents, et une trame venue du mur n'appartient à aucun appareil déclaré. Elle est notée dans les logs de l'intégration, avec son pid et son addr.

Rattachez cette adresse à l'appareil qu'elle pilote, et appuyer sur la télécommande murale met à jour le volet dans Gladys comme le ferait Gladys :

{
"devices": {
"Baie vitrée": {
"type": 4098,
"travel_up": 30,
"travel_down": 26,
"channel": { "id": 25455, "source": 8295 },
"remotes": [94311]
}
}
}

Une adresse seule est lue sur le protocole de l'appareil lui-même ; une télécommande sur un autre protocole s'écrit en entier : "remotes": [{ "pid": 1368, "addr": 542 }].

Laissez l'intégration écrire la ligne

Recopier un couple pid/addr depuis un log dans du JSON sur une seule ligne, en choisissant la bonne écriture, est exactement le genre de chose qu'on rate une fois sur deux. L'action Rattacher une télécommande le fait pour vous :

  1. appuyez sur la télécommande murale (l'intégration retient les émetteurs qu'elle entend, même ceux que personne ne déclare) ;
  2. dans l'écran de configuration, lancez Rattacher une télécommande et choisissez l'appareil qu'elle pilote ;
  3. l'action répond avec votre liste d'appareils, inchangée, télécommande rattachée en {"pid": …, "addr": …} : collez-la dans le champ Appareils et enregistrez.

Elle rattache le dernier émetteur entendu qu'aucun appareil ne déclare, et cite les autres sans y toucher. Elle dit aussi ce que ses trames ont donné au décodage, et prévient quand la télécommande parle un autre protocole que l'appareil : le boîtier n'en écoute qu'un à la fois.

Une trame écartée, ou sans adresse

Le boîtier note chaque trame qu'il décode, et l'intégration ignore celles qu'il note mal — exactement comme le plugin Jeedom officiel. Deux formes très différentes dans les journaux :

Ignored a radio frame (unreliable, graded 0): pid 14177, carrying no note the service could decode.
Ignored a radio frame (unreliable, graded 2): pid 25455, addr 94311, carrying level 100 (up).

Une trame avec une adresse, notée trop bas (deuxième ligne) : le boîtier a décodé l'émetteur et l'ordre, il n'est simplement pas sûr de lui — une télécommande en limite de portée, une bande encombrée. Activez Accepter les trames peu fiables : elles sont alors utilisées quand même, au prix d'une fausse détection de temps en temps.

Une trame sans adresse (première ligne, pid seul) : le boîtier a capté le protocole sans le décoder. Il n'y a ni émetteur à nommer, ni ordre à rejouer, et aucun réglage ne rend exploitable ce qui n'a pas été décodé. C'est la signature d'un boîtier à l'écoute du mauvais décodeur : renseignez ce pid dans le champ Canal d'écoute, pour que le boîtier écoute ce protocole sur son propre décodeur, puis relancez Tester la connexion. Si les trames reviennent alors avec une adresse, rattachez-la comme d'habitude.

Si même sur son propre canal le protocole reste sans adresse, c'est que le service AirSend ne le décode que partiellement (code tournant 868 MHz) : rien ne le rendra exploitable côté logiciel. En dernier recours, un appareil peut suivre toutes les trames non attribuées d'un protocole :

{
"devices": {
"Baie vitrée": { "type": 4098, "pid": 25455, "addr": 8295, "remotes": [{ "pid": 14177 }] }
}
}

Un remotes réduit au seul pid ne désigne plus une télécommande mais un protocole entier : la télécommande du voisin sur le même protocole pilotera votre volet. À n'utiliser qu'en connaissance de cause.

La télécommande est rattachée, et rien ne bouge

Une fois l'émetteur déclaré, la trame arrive bien à l'appareil — reste à savoir si elle porte un ordre. Commencez par Tester la connexion : la ligne Entendu répond sans passer par les logs (voir « Ce que le boîtier a entendu »). Elle distingue trois cas qui se ressemblent et n'ont rien à voir :

  • déclaré sur « Baie vitrée », mais ses trames ne portent aucun ordre rejouable — la trame est arrivée, l'appareil ne sait qu'en faire. C'est le lot des protocoles 868 MHz à code tournant : le service ne les décode que partiellement, la trame prouve que la radio marche mais ne porte aucun ordre à rejouer. La position ne peut pas suivre, et le rattachement n'y changera rien : à la première trame de cet émetteur, l'intégration le dit aussi dans ses logs, au niveau info (no note the service could decode) ;
  • aucun appareil ne le déclare — l'émetteur est bien entendu, il n'est simplement rattaché à rien : relancez Rattacher une télécommande ;
  • l'émetteur n'apparaît pas du tout — la trame n'arrive plus. Si la télécommande a été déclarée sur un autre protocole que l'appareil, la ligne Écoute la nomme comme non entendue, et son pid mis dans le Canal d'écoute rétablit l'écoute de son côté.

Rien dans les logs après un appui ? La ligne n'est écrite qu'à la réception d'une trame : appuyez sur la télécommande, puis relisez les logs de l'intégration. S'il n'y a toujours rien, c'est que la trame n'est jamais arrivée, et il n'y a que trois raisons possibles :

  • l'écoute n'est pas en place. Cliquez sur Tester la connexion : la ligne Écoute dit quel protocole est écouté et vers où les trames sont poussées — ou pourquoi elles ne le sont pas ;
  • la télécommande parle un autre protocole. Le boîtier n'en écoute qu'un seul à la fois, celui de vos appareils déclarés (voir « Le canal d'écoute »). Une télécommande murale utilise normalement le protocole du volet qu'elle pilote ; si la vôtre est d'une autre marque, mettez son pid dans le champ Canal d'écoute le temps de la repérer ;
  • la trame a été entendue, mais jugée trop douteuse pour être publiée. La radio est bruyante, et le boîtier note chaque trame qu'il décode. Activez Journaux détaillés (debug) : ces trames-là y sont tracées, avec leur pid, leur addr et la raison de leur abandon.

Ce que le boîtier a entendu

Toutes les vérifications ci-dessus répondent à « les trames peuvent-elles entrer ? ». La ligne Entendu de Tester la connexion répond à la question suivante, la seule qui compte une fois la télécommande rattachée : sont-elles entrées, et est-ce que quelque chose a bougé ?

L'intégration retient les émetteurs qu'elle entend, du plus récent au plus ancien, avec le nombre de trames, leur ancienneté, ce qu'elles ont donné au décodage et ce que les appareils en ont fait :

Entendu : 1 émetteur entendu : pid 14177, addr 3359265281 (3 trames, dernière
il y a 4 s, aucune note décodée) — déclaré sur Baie vitrée, mais ses trames ne
portent aucun ordre rejouable (protocole seulement partiellement décodé) : la
position ne peut pas suivre.

Trois verdicts possibles pour un émetteur :

VerdictCe que ça veut dire
suivi par <appareil>tout marche : ses trames pilotent bien l'appareil
aucun appareil ne le déclarel'émetteur est entendu, mais rattaché à rien — Rattacher une télécommande
ne portent aucun ordre rejouablela trame arrive à l'appareil et ne porte rien à rejouer (code tournant)

Le registre est vidé au démarrage de l'intégration : « aucune trame radio depuis le démarrage » veut dire « rien depuis », pas « jamais ». Appuyez sur la télécommande, puis relancez l'action.

Trois silences qui ne se ressemblent pas

« Aucune trame » recouvre trois problèmes très différents, et la ligne Entendu les distingue désormais :

Ce qu'elle ditCe qui se passe
aucune trame radio depuis le démarragerien n'entre du tout : ni les trames de la maison, ni les échos de vos propres ordres
aucune trame d'un autre émetteur, mais N échosla route fonctionne — le boîtier n'entend simplement rien sur le protocole écouté
N trames reçues et écartées avant tout appareilla radio fonctionne : ce sont les trames qui n'étaient pas exploitables

D'où le test à faire quand la ligne dit « aucune trame » : actionnez un appareil depuis Gladys, puis relancez l'action. Tout ce que l'intégration émet lui revient, donc l'écho de cet ordre doit apparaître dans le compteur.

  • l'écho revient → la route des trames est bonne, et c'est le protocole écouté qui n'est pas celui de votre télécommande. Relisez la ligne Écoute : elle dit quel canal est écouté et quels appareils il couvre. Une télécommande 868 MHz (Profalux, Somfy io) n'est jamais entendue sur le canal 1, qui est du 433 MHz ;
  • l'écho ne revient pas non plus → le problème est en amont de la radio : le service AirSend ne poste rien à l'intégration. Regardez la ligne Écoute (le boîtier a-t-il accepté l'abonnement ?) et la ligne Local (le service répond-il ?), puis les journaux détaillés.

Les journaux détaillés

La radio est la seule partie de l'intégration que personne ne peut observer : une télécommande qui ne remonte pas est soit inaudible, soit écartée comme peu fiable, soit entendue mais indécodable — et seuls les journaux de niveau debug distinguent ces trois cas.

Le champ Journaux détaillés (debug) de l'écran de configuration les active. Il prend effet immédiatement, sans redémarrer l'intégration : cochez, appuyez sur la télécommande, lisez les logs, décochez. C'est verbeux, ce n'est pas fait pour rester allumé.

Votre chaîne de connexion sp:// n'est jamais journalisée, quel que soit le niveau.

Si vous préférez la variable d'environnement du conteneur, LOG_LEVEL marche toujours et reste prioritaire : l'interrupteur monte le niveau à debug tant qu'il est activé, puis rend la main à votre LOG_LEVEL quand vous le coupez.

Si vous faites tourner le service AirSend ailleurs

Le service web AirSend pousse les trames depuis la machine où il tourne. Quand c'est l'intégration qui le fait tourner (le cas par défaut), il les pousse directement chez elle. Un service qui tourne sur une autre machine, lui, ne sait pas joindre l'intégration : les trames doivent alors passer par une URL publique, fournie par Gladys Plus. Liez votre compte Gladys Plus et collez votre clé Open API dans le bloc Webhooks de l'écran de configuration.

Actions

  • Tester la connexion — vérifie le canal local, dit quel protocole est écouté, ce que le boîtier a entendu et quels appareils ont été lus. Le moyen le plus rapide de repérer une chaîne de connexion mal saisie, une liste d'appareils qui n'a pas été comprise, ou une télécommande rattachée dont les trames ne portent aucun ordre.
  • Rattacher une télécommande — appuyez sur la télécommande, choisissez l'appareil qu'elle pilote : l'action écrit la liste d'appareils à recoller, télécommande comprise (voir « La télécommande murale »).
  • Identifier un appareil — choisissez un appareil, un PING lui est envoyé. Tous les équipements 433 MHz n'y réagissent pas.

Bon à savoir

  • Le 433 MHz est un protocole unidirectionnel pour la plupart des équipements : rien ne confirme qu'un ordre a été reçu, et Gladys affiche la valeur envoyée. L'écoute (ci-dessus) transforme cette hypothèse en état réel, et chronométrer un volet (ci-dessus) lui donne une position.
  • Les capteurs sont lus dans le boîtier, par le canal local.
  • Le service intégré joint votre boîtier depuis le conteneur de l'intégration, à travers votre réseau : le rhost=<IPv4> de la chaîne de connexion est l'adresse qu'il compose, et elle doit être routable depuis l'hôte Gladys.
  • Changer le type d'un appareil dans la liste crée un nouvel appareil dans Gladys (l'identifiant change) — sauf entre 4098 et 4099, qui le partagent.

En cas de problème

SymptômeÀ vérifier
Invalid connection stringL'URL sp://, et que son mot de passe correspond au boîtier
Invalid inputLe channel de l'appareil (id/pid et source/addr)
no radio channel (logs)L'entrée n'a pas de canal : il lui faut channel.id, ou le couple pid/addr
no radio confirmationNormal sans retour d'état : laissez wait: false
Aucun appareil dans « Découverte »Tester la connexion : la liste n'a sans doute pas été lue
Le boîtier est injoignableLa partie ?gw=0&rhost=<IPv4> de la chaîne de connexion
Service AirSend intégré indisponibleLes logs de l'intégration : le service y journalise son démarrage
Le boîtier répond à la main, pas iciL'IPv4 rhost= doit être joignable depuis le conteneur, pas seulement de votre PC
Il faut cliquer plusieurs foisMontez Répétitions des commandes à 2 ou 3, ou le repeat de l'appareil
Un volet n'affiche pas de positionChronométrez-le : travel_up / travel_down, puis ouvrez-le ou fermez-le à fond une fois
La position dérive avec le tempsRechronométrez la course, et ouvrez le volet à fond une fois par jour pour le recaler
Aucune trame d'une télécommande 868Tester la connexion : le canal 1 est du 433 MHz. Déclarez l'appareil, ou son pid
Télécommande rattachée, rien ne bougeTester la connexion, ligne Entendu : elle dit si les trames portent un ordre
unreliable, graded N (logs)Trame notée trop bas : Accepter les trames peu fiables, ou rapprochez le boîtier
Une trame avec un pid et sans addrLe protocole n'est pas décodé : mettez ce pid dans Canal d'écoute

L'intégration journalise tout ce qu'elle fait : consultez les logs de l'intégration depuis l'interface de Gladys (ou docker logs sur l'hôte), et cochez Journaux détaillés (debug) dans sa configuration pour le détail complet.

Paramètres de configuration

Voici les paramètres demandés par Devmel dans son écran de configuration dans Gladys.

ParamètreTypeObligatoireDescription
Pour commencersectionNonLe service AirSend est inclus : il tourne dans cette intégration, sur http://127.0.0.1:33863, et il n'y a rien à installer sur votre réseau. Il lui faut seulement la chaîne de connexion sp:// de votre boîtier. Les appareils se configurent dans l'application AirSend, puis s'exportent depuis airsend.cloud (Import/Export, JSON) : collez cet export ci-dessous, l'intégration le lit tel quel.
Utiliser le service AirSend intégrébooleanNonFait tourner le service AirSend dans l'intégration, sur http://127.0.0.1:33863. Laissez activé, sauf si vous faites déjà tourner ce service ailleurs sur votre réseau.
URL du service AirSendstringNonUniquement si vous faites tourner le service AirSend vous-même (add-on Home Assistant, démon Jeedom, votre propre conteneur) : son adresse sur votre réseau, par exemple http://192.168.1.50:33863/. Laissez vide pour utiliser celui intégré.
Chaîne de connexion localesecretNonL'URL sp:// exportée par airsend.cloud, par exemple sp://motdepasse@[fe80::...]?gw=0&rhost=192.168.1.50
AppareilsstringNonVotre export JSON airsend.cloud, collé tel quel : une entrée par appareil, avec son type et son canal radio (écrit pid/addr). Voir la documentation.
Canal d'écoutenumberNonLaissez vide : le boîtier écoute alors le protocole radio des appareils que vous avez déclarés, ce qui remonte vers Gladys ce qu'il entend (télécommandes murales, capteurs). Ne le renseignez que pour écouter un autre protocole, par son pid : 1 correspond à l'écoute générique 433 MHz, sur laquelle aucune télécommande 868 MHz (Profalux, Somfy io) n'est entendue. 0 désactive l'écoute.
Répétitions des commandesnumberNonNombre d'émissions supplémentaires d'un ordre radio, comme une vraie télécommande le répète tant qu'on appuie. Rien n'accuse réception d'un ordre radio : une trame perdue dans le bruit, c'est un clic sans effet. Montez à 2 ou 3 si un appareil ignore parfois Gladys. 0 n'envoie chaque ordre qu'une fois. Un appareil peut la surcharger avec sa propre valeur repeat.
Intervalle de rafraîchissement (s)numberNonFréquence de lecture des capteurs du boîtier, en secondes. Un appareil peut la surcharger avec sa propre valeur refresh.
Accepter les trames peu fiablesbooleanNonLe boîtier note chaque trame qu'il décode, et celles qu'il note mal sont ignorées — comme le fait le plugin Jeedom officiel. Activez ceci si une télécommande est entendue sans jamais être suivie : ses trames seront alors utilisées quand même, au risque d'une fausse détection de temps en temps. Sans effet sur un protocole que le boîtier capte sans le décoder (aucune adresse dans les journaux) : celui-là demande son pid dans le canal d'écoute.
Journaux détaillés (debug)booleanNonJournalise chaque trame radio entendue par le boîtier, y compris celles écartées comme peu fiables ou non décodées. Activez-le pour comprendre pourquoi une télécommande ne remonte pas, puis désactivez-le : c'est verbeux. Votre chaîne de connexion n'est jamais journalisée.

Comment installer Devmel dans Gladys

  1. Dans Gladys, ouvrez Intégrations : Devmel apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
  2. Cliquez sur Installer. Gladys télécharge l'image Docker (ghcr.io/prohand/gladys-devmel:1.0.11), 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).
  3. Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
  4. Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/prohand/gladys-devmel.

Devmel nécessite Gladys >=4.86.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

Devmel 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 prohand, et non par l'équipe cœur de Gladys.

Inscrivez-vous à la newsletter Gladys Assistant

Quelques emails par mois sur les nouveautés et l'actualité du projet. Envoyés par Pierre-Gilles Leymarie, le fondateur du projet. Désinscription possible à tout moment 🙂