Comment transmettre l'heure courante sur le bus KNX avec la Lifedomus

L'heure est utilisée par de nombreux modules KNX mais pour la transmettre sur le bus, il faut traditionellement une horloge KNX. Apprenez comment vous en passer grâce à la Lifedomus !



La date et l'heure sont des informations essentielles pour une installation domotique puisque nos habitudes de vie sont souvent régies par des horaires. Certains modules KNX, comme les programmateurs horaires, tiennent la date et l'heure à jour (souvent par l'intermédiaire de l'émetteur radio DCF77) et utilisent cette information pour lancer des scénarios selon l'heure de la journée ou selon la date. Nous avons déjà vu dans un tutoriel précédent qu'il est tout à fait possible de se passer de ces modules si on dispose du superviseur Lifedomus.

D'autres modules KNX dépendent de ces programmeurs horaires pour recevoir, par le bus KNX, l'information "date/heure". C'est le cas par exemple du ZAS de chez Zennio.

Le ZAS incorpore une sonde de température ainsi que deux régulations de thermostats. Il dispose de 8 boutons tactiles qui permettent de piloter toutes sortes d'équipements dans votre installation KNX (éclairages, volets, chauffage, scénarios, etc.).

Le ZAS possède un petit écran (essentiellement) texte qui permet d'afficher une foultitude d'informations et de piloter votre installation. Lorsque le ZAS est inutilisé, l'écran passe en mode "sauvegarde d'énergie". On peut alors le configurer pour qu'il affiche la température ambiante et/ou l'heure actuelle.

Zennio propose ici un module extrêmement versatile et puissant. Le tout pour un prix défiant toute concurrence !

Donc, le ZAS de Zennio lit l'heure depuis le bus KNX. Voyons comment envoyer cette heure depuis la Lifedomus.

Adresse de groupe ETS

La première chose à faire est de définir sur notre bus KNX une adresse de groupe où l'heure sera envoyée et associée aux modules physiques KNX. Dans notre exemple, cette adresse de groupe se trouve en 0/0/1.

Lancez l'ETS et créez une adresse de groupe adaptée à la structure de groupes de votre bus KNX. Associez ensuite l'objet n°134 (General Time - Current Time) du ZAS de Zennio à cette adresse de groupe.

Cet objet est par défaut en lecture et écriture (tags R et W). Le tag W est indispensable pour pouvoir écrire (W=Write=Ecrire) dans l'objet Time du ZAS de Zennio. Le tag R (R=Read=Lire) n'est pas nécessaire sauf si on désire (re)lire l'heure de l'objet du ZAS. Cela pourrait être le cas par exemple si une autre supervision a besoin de l'heure.

Attention, si vous avez plus d'un ZAS dans votre installation, ne laissez qu'un seul tag R afin de ne pas envoyer de télégrammes inutiles sur le bus. En effet, en cas de lecture sur une adresse de groupe, tous les objets avec le tag R répondent et envoient un télégramme. Ce n'est normalement pas un problème mais il vaut mieux éviter de polluer le bus KNX avec des transmissions inutiles (voire des retransmissions s'il y a téléscopage de télégrammes).

Création et configuration d'un équipement KNX universel dans la Lifedomus

La Lifedomus dispose de deux objets préconfigurés permettant de lire l'heure depuis le bus KNX mais aucun permettant d'envoyer l'heure. On ne peut donc pas les utiliser et il va falloir qu'on crée notre propre équipement.

Lifedomus nous permet de créer des équipements personnalisés. Ces équipements s'appellent "équipements universels". Leur fonctionnement dépend essentiellement du connecteur Lifedomus auquel ils sont attachés. Si un équipement universel est attaché à un connecteur KNX, on pourra associer à cet équipement autant d'adresses de groupe KNX que nécessaire, que ce soit en lecture ou en écriture et définir pour chacun le type de données.

Lancez le Lifedomus Config Studio (CS) et créez un nouvel équipement universel (Domaine: équipement, Catégorie: universel, Type: générique). Editez-le (icône "crayon"), renommez-le en "Heure KNX" (ou le nom qu'il vous plaira) et attachez-le au connecteur KNX du bus KNX sur lequel se trouve le ZAS de Zennio.

Une fois votre équipement universel attaché au connecteur KNX, appuyez sur le "+" en bas à droite pour associer une nouvelle fonctionnalité à votre équipement.

Cette fonctionnalité s'appelle "Commande" pour le moment. Comme nous voulons envoyer l'heure sur le bus KNX, nous la renommons en "Envoi".

Il y a également un champ "Ecriture" et un champ "Lecture" dans lesquels nous pouvons renseigner l'adresse de groupe de notre fonctionnalité, respectivement en écriture vers le bus ou en lecture depuis le bus. Dans notre cas, seule l'écriture nous intéresse. Nous pouvons donc écrire "0/0/1" dans le champ "écriture", ce qui correspond à l'adresse de groupe où nous avons mis l'objet "Time" du ZAS de Zennio.

Il reste encore à spécifier quel type de données cette adresse de groupe va contenir. Cette information est primordiale car le KNX ne supporte pas (nativement) la conversion de données. Il est donc important de spécifier que l'adresse de groupe qui contient l'heure actuelle contient des données de type "Time" (codées sur 3 octets). La Lifedomus, lorsqu'elle écrira dans cette adresse de groupe, convertira son heure (dont le format interne nous est inconnu et d'ailleurs ne nous intéresse pas) en une heure codée sur 3 octets, compréhensible par tout participant KNX. Si nous avions choisi un type de données "caractères", la Lifedomus enverrait l'heure sur le bus KNX sous forme d'une chaîne de caractères (par ex: "10:02:24") ce qui est lisible par nous, humains, mais pas compréhensible par les participants KNX qui s'attendent à une heure respectant un format spécifique.

Pour changer le type de données, il suffit d'appuyer sur le "+" entre les champs "écriture" et "lecture". Du coté "écriture", choisissez "DPT 10.xxx (time)" et "10.001 (time of day)". Laissez tous les autres paramètres à leurs valeurs par défaut. Au final, votre équipement universel doit être configuré comme sur la capture d'écran à droite. N'oubliez pas de sauver votre équipement.

Nous disposons donc d'un équipement prêt à écrire une heure KNX sur une adresse de groupe spécifique mais il faut encore configurer la Lifedomus pour qu'elle active la commande "Envoi".

Création d'un automate pour l'envoi régulier de l'heure système sur le bus KNX

Toujours dans le Lifedomus Config Studio, allez dans la partie "Automatismes" (anciennement "Scénarios") et créez un nouvel automate. Appelez-le "Heure KNX" (ou "gloubi-boulga" si vous préférez, mais ne venez pas vous plaindre après que vous ne savez plus où se trouve l'automate qui gère l'heure sur le bus KNX).

L'automate que nous allons créer est extrêmement simple: la Lifedomus dispose d'une valeur système (ou "donnée système") appelée SYSTEM_TIME qui contient l'heure courante. Nous allons activer la commande "envoi" de l'objet "Heure KNX" que nous avons créé à l'étape précédente pour qu'il écrive la valeur de SYSTEM_TIME sur le bus KNX.

Malheureusement il n'est pas possible de faire cela directement: les automates de Lifedomus permettent d'écrire dans "envoi" une variable, mais pas directement une valeur. Or SYSTEM_TIME n'est pas une variable mais une valeur/donnée système. Il faut donc d'abord envoyer SYSTEM_TIME dans une variable. Nous appelerons cette variable "hActuelle". Prenez comme habitude de toujours préfixer vos variables d'un ou deux (ou trois) caractères donnant une indication sur son type. Dans notre cas, le "h" de hActuelle signifie que notre variable est de type "heure" (c'est très utile, notamment pour le debug, et ce, contrairement au "h" de "Hawaï" qui, lui, ne sert à rien, comme nous l'a appris Jean Dujardin, il y a longtemps).

Il reste à déterminer QUAND envoyer l'heure sur le bus KNX. Le ZAS de Zennio incrémente tout seul les minutes. Il suffirait donc de lui envoyer l'heure une seule fois et, tant que le bus KNX est alimenté (le ZAS ne nécessite pas d'alimentation supplémentaire) cette heure devrait être juste. C'est vrai pour autant que le ZAS ne dévie pas dans le temps.

La Lifedomus (version 1.3.63 au moment de la rédaction de ce tutoriel) possède plusieurs valeurs systèmes associées au temps:

  • SYSTEM_TIME donne l'heure et les minutes (mais pas les secondes). Cette valeur change donc toutes les minutes
  • SYSTEM_DATE donne la date (jour du mois, mois et année) et change tous les jours à minuit
  • SYSTEM_DAY_OF_MONTH donne le jour du mois, ce qui change tous les jours à minuit également
  • SYSTEM_DAY_OF_WEEK donne le jour de la semaine (lundi, mardi, etc.), cette valeur change bien sûr elle aussi tous les jours à minuit

Selon nos besoins nous pouvons donc utiliser n'importe laquelle de ces données systèmes pour déclencher automatiquement l'automate. Personnellement j'utilise souvent SYSTEM_TIME parce que comme je fais de nombreux essais sur mon bus KNX, celui-ci est parfois non-alimenté pendant plusieurs minutes et je n'ai pas envie d'attendre le lendemain pour avoir l'heure correcte sur mes Zennio.

Notez bien qu'il serait également possible de déclencher l'automate toutes les 5 minutes ou tous les quart d'heure ou toutes les demi-heures. Ce "petit truc" fera peut-être l'objet d'un tutoriel ultérieur.

Résumé de la logique de l'automate

Automate  : Heure KNX
Variables : hActuelle (type heure - public)
Démarrage auto : NON
Déclencheur : A chaque changement de SYSTEM_TIME
Logique     : - START
              - hActuelle = SYSTEM_TIME
              - Heure KNX/Envoi (équipement) == hActuelle
                         

N'oubliez pas d'activer votre automate après l'avoir sauvegardé !

Conclusion

Ici s'achève ce tutoriel. Vous savez à présent comment envoyer l'heure sur le bus KNX depuis la Lifedomus mais également comment configurer un équipement universel KNX et comment l'utiliser dans un automate Lifedomus. Rendez-vous prochainement pour d'autres tutoriels !



OSMOTIQ est votre partenaire pour toute installation domotique KNX avec ou sans serveur Lifedomus. Nous sommes à votre disposition.

N'hésitez pas à nous contacter. Vous trouverez nos coordonnées sur la page contact du site.