Voici quelques scénarios en code PHP que j’ai repiqué sur le net et plus ou moins modifiés pour fonctionner sous Jeedom.
Ils concernent l’astronomie (lever et coucher de la lune et du soleil, position dans le ciel, etc.).
Fonctionnement (Jeedom v3.x & v4.x) :
- vous allez dans le menu des scénarios et vous cliquer sur « Ajouter »,
- vous lui donnez un nom à votre convenance,
- sur l’onglet « Général » :
- vous ajoutez une programmation automatique, ou bien un déclenchement manuel,
- dans l’onglet « Scénario » :
- vous ajoutez un bloc « Code »,
- vous collez dedans le contenu du scénario qui vous intéresse.
Vous verrez qu’à la fin de chaque scénario, j’affecte les résultats souhaités à une variable Jeedom qui est globale. Vous pouvez donc ensuite créer un ou plusieurs virtuels auxquels vous n’avez qu’à affecter lesdites variables.
Par exemple, dans le scénario de la lune, vous voyer à la fin le code :
$scenario->setData('v_lune_age',$age);
Cela veut dire que la variable Jeedom qui est créée s’appelle « v_lune_age » et vous pouvez donc l’affecter à un virtuel en collant « variable(v_lune_age) » dans son champ « Équipement ».
Libre à vous de modifier les codes à votre convenance, je suis loin d’être un expert en programmation, donc c’est très certainement à optimiser…
Lune - Calculs divers :
Scenario - Lune (divers).txt (15,7 Ko)
Programmation idéale : 1 fois par jour devrait suffire
Les variables créées sont :
$scenario->setData('v_lune_age',$age); // Age de la lune (le jour du cycle)
$scenario->setData('v_lune_pourcent',round($moon->phase()*100,0)); // Pourcentage du cycle (~29.53 jours)
$scenario->setData('v_lune_phase',$quelle_phase); // Phase (quartier, pleine, croissant, etc.)
$scenario->setData('v_lune_etat',$stage); // Etat : montante ou descendante
$scenario->setData('v_lune_visibilite',$illumination); // Pourcentage de visibilité
$scenario->setData('v_lune_distance',$distance); // Distance depuis la Terre
$scenario->setData('v_lune_next_pleine',$date_pleine_lune); // Prochaine pleine lune
$scenario->setData('v_lune_next_nouv',$date_nouvelle_lune); // Prochaine nouvelle lune
Lune et Soleil - Lever et coucher :
Scenario - Lune et soleil (lever et coucher).txt (13,2 Ko)
Programmation : 1 fois par jour, par exemple peu après minuit.
Les variables créées sont :
$scenario->setData('v_soleil_lever', $sunriseStr);
$scenario->setData('v_soleil_zenith', $sunNoonStr);
$scenario->setData('v_soleil_coucher', $sunsetStr);
$scenario->setData('v_lune_lever', $moonriseStr);
$scenario->setData('v_lune_coucher', $moonsetStr);
N’oubliez pas d’aller saisir vos latitudes et longitudes ici :
// Définitions de variables perso :
$LatObservateur = 50.12345678901234;
$LongObservateur = -1.1234567890123456;
Soleil - Azimuth et élévation :
Scenario - Soleil (azimuth et élévation).txt (3,1 Ko)
Programmation : toutes les 5 minutes par exemple.
Les variables créées sont :
$scenario->setData('v_soleil_azimuth', $Sun[0]); // Azimuth
$scenario->setData('v_soleil_altitude', $Sun[1]); // Élévation
$scenario->setData('v_soleil_declinaison', $Sun[2]); // Déclinaison
$scenario->setData('v_soleil_ra', $Sun[3]); // Ascension droite
Comme pour le précédent, saisir lat et long ici :
// Définitions de variables perso :
$LatObservateur = 50.12345678901234;
$LongObservateur = -1.1234567890123456;
Voilà, à vos claviers
Petit exemple de virtuel rapide que j’ai fait avec ces scénarios :
Nota : ça me fait remarquer que j’ai du faire une modif qq part, parce que la distance Terre-Lune est en milliers de km et pas en km
Edit : Pas de soucis, c’est dans mon virtuel, le code posté ici est OK.
PS : en rédigeant le mien, je suis tombé sur une proposition d’un topic de @kiboost qui est excellent et pourras vous aider si mes maigres explications ne sont pas claires : Jeedom v4 Petits codes entre amis | Jeedom by KiboOst
Merci à lui