Sélectionner une page

Astuce jeedom : créer un lever/coucher de soleil virtuel dans Jeedom sans utiliser de plugin

par | Nov 25, 2021 | Jeedom

Voici un petit tutoriel pour créer un vituel dans Jeedom sans utiliser de plugin. Le virtuel utilitaire qui fait l’objet de ce tutoriel est : le lever et coucher de soleil. Ainsi, ce virtuel indiquera l’heure de l’aube et également l’heure du crépuscule et sans avoir recours à un service en ligne ou un plugin.

1 – Qu’est ce qu’un virtuel dans Jeedom

Les virtuels sont l’un des nombreux atouts du contrôleur domotique Jeedom. Si vous êtes un utilisateur Jeedom et que vous n’utilisez pas de virtuel, je vous conseil de prendre un peu de temps pour approfondir le sujet car cela offre beaucoup de possibilités avec Jeedom.

Dans Jeedom, il est possible et parfois recommandé d’utilisé un virtuel. Pour exemple : séparer un multicapteur dans plusieurs périphériques ou unifier plusieurs appareils dans un même périphérique, créer des macros, créer des actions sur des valeurs…

2 – Mise en place du virtuel

La première étape est d’installer et d’activer le plugin « Virtuel » si vous ne le possédez pas déjà. Ensuite pour vous rendre sur le plugin et créer un virtuel, nous irons dans le menu du haut, « Plugins » puis « Programmation » et « Virtuel ». 

Vous voici sur l’interface du plugin. Il faut cliquer sur « + » pour ajouter un nouveau virtuel. Comme pour tout autre périphérique dans Jeedom, il faut le nommer (ici: Soleil Bureau) et remplir les différents champs de la fenêtre de configuration, sans oublier de cocher les cases « Activer » et « Visible ». Quant au Cron, je l’ai configuré pour mettre à jour les valeurs « infos » de mon virtuel toutes les 15 minutes.

Une fois le virtuel créé, nous irons dans l’onglet « Commandes » et nous allons créer deux commandes de type « information ». Les commandes sont nommées « latitude » et « longitude ». Jeedom utilise cette position pour calculer l’heure du lever et coucher du soleil.

Pour connaître votre position exacte et obtenir la longitude et la latitude correspondantes, Google Maps est votre ami. Il vous suffit de saisir votre adresse, les coordonnées seront indiquées. Vous n’aurez qu’à copier la latitude et la longitude et les coller dans votre virtuel, dans les commandes d’information que nous venons de créer. Nous n’avons pas besoin d’afficher ces deux commandes dans l’interface Jeedom, ni de les « historiser », donc je n’ai pas coché ces cases.

LIRE
Découverte du détecteur 4 en 1 Z-Wave serie 700 Zooz ZSE40

Pour notre exemple, j’ai choisi Domadoo à Rillieux la pape comme emplacement:

3 – Calcul des heures de lever et de coucher du soleil

Ensuite, nous allons créer deux autres commandes de type « information ». Elles sont nommées : « se lève à » et « se couche à »:

Pour ces deux commandes il y a une formule de calcul à rentré et cela dans l’onglet « calcul » de ces nouvelles commandes du virtuel. Cette formule utilise une expression PHP qui permet de calculer l’heure du lever et du soir en fonction des coordonnées. La formule de calcul de l’heure du lever du soleil est la suivante :

date_sunrise(#timestamp#,1,#[Bureau][Soleil bureau][Latitude]#,#[Bureau][Soleil bureau][Longitude]#,90+35/60, date("Z",#timestamp#)/3600)

Inutile de dire que [Bureau][Soleil bureau][Latitude] et [Bureau][Soleil bureau][Longitude] sont les valeurs de latitude et longitude de mon virtuel. Si vous appelez vos commandes virtuelles et/ou les commandes d’une autre manière, vous devrez le modifier. De même pour l’objet parent du virtuel.

La formule pour calculer l’heure du coucher est très similaire :

date_sunset(#timestamp#,1,#[Bureau][Soleil bureau][Latitude]#,#[Bureau][Soleil bureau][Longitude]#,90+35/60, date("Z",#timestamp#)/3600)

Cela suffit pour calculer les heures de lever et de coucher du soleil. Dans ce cas, nous souhaitons afficher les commandes dans l’interface Jeedom et historiser. Le résultat que l’on obtient dans Jeedom Atlas est le suivant :

On voit déjà l’heure du lever et du coucher du soleil dans l’interface utilisateur de Jeedom. C’est bien, mais quand il s’agit de créer des scènes, ça ne va pas nous être d’une grande utilité parce que Jeedom comprend les heures mais pas avec ce format, mais avec un autre. Je m’explique. Pour Jeedom 07h34 est une valeur numérique, plus précisément 734. Par la même règle de trois, 19h15 pour Jeedom correspond à la valeur 1915. Nous devons utiliser d’autres fonctions pour obtenir l’heure du lever et du coucher du soleil dans le format que Jeedom comprend. Pour ce faire, nous allons créer deux autres commandes de type « information » dans notre virtuel, que nous appellerons respectivement « valeur_lever » et « valeur_coucher ». 

Voici les commandes du virtuel :

Encore une fois, l’important ici est la fonction et la formule que nous utilisons pour convertir l’heure dans un format compréhensible par Jeedom pour la création de scènes.

LIRE
Découverte de la double prise extérieure 16A NOUS A4Z Zigbee 3.0

Voici les formules pour les deux commandes :

str_replace(":","",#[Bureau][Soleil bureau][Se lève à]#)
str_replace(":","",#[Bureau][Soleil bureau][Se couche à]#)

Nous avons déjà les heures de lever et de coucher du soleil dans un format que nous pouvons utiliser pour créer des scènes dans Jeedom. Nous n’avons pas besoin d’afficher ces commandes dans l’interface Jeedom. 

4 – Finaliser le virtuel sur Jeedom

Maintenant que nous avons un virtuel pour connaître l’heure du lever et du coucher du soleil sans aide extérieure, et que l’on peut même créer des scènes sur cette base, je vous propose un nouveau paramètre pour faire en sorte que le widget du virtuel Jeedom indique à tout moment si il fait jour ou nuit. Pour ce faire, nous allons ajouter, à nouveau, deux autres commandes de type « information » dans notre virtuel. Nous les appellerons « calcul_lever » et « calcul_coucher » cette fois.

Si je vous propose ce challenge, ce n’est pas seulement parce qu’un widget de ce type peut être attractif sur le tableau de bord Jeedom, ou dans un design, mais parce que nous allons apprendre à utiliser un « opérateur ternaire » dans Jeedom. Un opérateur expliqué rapidement est une formule qui si elle est remplie, renvoie une valeur et si elle n’est pas remplie, elle renvoie une autre valeur.

Si nous appliquons ceci dans notre exemple, dans notre « Soleil » virtuel, pour savoir si le matin nous avons dépassé l’heure du lever du soleil ou non, notre opérateur ternaire serait le suivant :

(#[Bureau][Soleil bureau][valeur_lever]# > #time#) ? "0" : "1"

Cela signifie que si l’heure du lever du soleil que nous avons calculée avec notre virtuel est supérieure à l’heure actuelle, alors la valeur de cette commande sera 0, et dans le cas contraire ce sera 1. En d’autres termes, si elle n’est pas encore levée, cette commande aura la valeur 0.

Si nous appliquons cela dans notre exemple, mais cette fois pour savoir si oui ou non la nuit nous avons dépassé l’heure du soir, alors nous utiliserons cette formule :

(#[Bureau][Soleil bureau][valeur_coucher]# > #time#) ? "1" : "0"

Ce qui revient à dire que s’il fait encore jour, la valeur de cette commande sera 1 et s’il fait déjà nuit, la valeur sera 0. Le résultat dans notre virtuel est le suivant :

LIRE
HALLOWEEN 2023 ET LA DOMOTIQUE Z Wave et Zigbee 3.0

Ainsi, avec ces deux nouvelles commandes, nous savons déjà s’il fait jour ou pas le matin et s’il fait jour ou pas l’après-midi. Mais comment combiner ces deux valeurs pour savoir, à toute heure, s’il fait jour ou nuit ? C’est très simple.

Les deux dernières commandes que nous avons créées, qui nous disent s’il fait jour ou nuit le matin et l’après-midi, peuvent avoir chacune deux valeurs, qui sont 0 ou 1. Si nous multiplions ces deux valeurs, nous saurons avec certitude à chaque instant s’il fait jour ou nuit (1 multiplié par 1 est 1 et 1 multiplié par zéro est zéro). Voici la formule :

#[Bureau][Soleil bureau][calcul_lever]# * #[Bureau][Soleil bureau][calcul_coucher]#

Enfin, nous créerons une dernière commande dans notre virtuel, que nous appellerons « Il fait », que nous montrerons dans le widget et qui peut avoir la valeur 1 (quand il fait jour) ou 0 (quand il fait nuit). De plus, cette valeur sera très utile et simple à la fois, lors de la création de scènes. Une fois le widget personnalisé, vous pouvez enfin faire ressembler votre soleil virtuel à ceci dans l’interface de votre Jeedom :

Conclusion

Le virtuel que nous avons créé dans cet article n’est qu’un exemple. La création de virtuel peut être fortement utile. En effet :

  • Les virtuels sont un pilier de Jeedom, utilisez-les !
  • Les virtuels sont le meilleur moyen, à mon sens, de profiter des fonctions de calcul et des fonctions mathématiques de Jeedom et PHP, car bien qu’ils aient leur complexité, une fois les virtuels correspondants créés, il est beaucoup plus facile d’utiliser les fonctions via virtuel dans les scènes.
  • Consacrez du temps aux fonctions Jeedom et réfléchissez à tout ce que les fonctions peuvent apportées. Par exemple, « LastStateDuration » peut vous permettre de savoir combien de temps un périphérique a une valeur spécifique (une porte ouverte , une lumière allumée…).

J’espère que cet article vous sera utile. Des choses plus complexe et bien plus utiles peuvent être faites avec les virtuels, ce n’est qu’une question de créativité…à vos claviers!

Restez connecté sur l'actualité domotique!