Calcul de différence entre 2 heures - Temps médian

Bonjour,
Je suis à la recherche de la méthode pour calculer la différence entre 2 temps, le temps médian.
L’idée est de connaitre la différence entre le coucher et le lever du soleil pour en connaitre le milieu.
Je voudrai gérer la luminosité d’une lampe grâce à ça. Plus je me rapproche de ce milieu plus l’intensité sera faible, plus je m’en éloigne, plus l’intensité sera forte.

Le coucher et le lever sont au format 730 pour 7h30.
J’ai commencé à faire ça à l’aide du forum

time_diff(time_op(#[Jardin][XXX][Coucher du soleil]#),time_op(#[Jardin][XXX][Lever du soleil]#),m)/2

ce qui me donne par exemple 437.5
Je tente un formatTime, mais j’ai un retour très bizarre

Mise à jour du tag #Temps_median# => 437.5
Mise à jour du tag #Temps_format# => Tehmp

Mon idée d’après c’est d’ajouter ce temps au coucher du soleil ce qui me donnerait le « milieu ».
Auriez-vous fait ça également ?
Sauriez-vous me guider ?

J’ai également regarde ce scénario, mais cela ne semble pas fonctionner quand minuit est entre les 2 heures.

Ainsi, avec heure 1 = 21h01 et heure 2 = 6h26
La moyenne est : 13h43

Merci
Mathieu

Salut
comme ça , je ne trouve pas mais si tu prends le plugin Heliotrope tu auras l’heure du Zénith du soleil …

Hello @pj66,
L’idée est d’avoir non pas le zénith mais l’inverse.

Mathieu

Salut.

Désolé je réponds pas à ta question directement mais si tu veux avoir l’heure du zénith du soleil, tu peux l’avoir via la fonction php date_sun_info.
Je m’en sers pour maintenir un éphéméride calculé sur mon jeedom pour ne pas dépendre d’un plugin pour avoir ces infos.

Exemple :

// Step 1
$scenario->setLog('Récupération de la latitude et longitude à partir des paramètres de Jeedom');

$latitude						= config::bykey('info::latitude');
$longitude						= config::bykey('info::longitude');

$scenario->setLog('Récupération du calendrier solaire du jour');

$sun_info      					= date_sun_info(time(), $latitude, $longitude);
$leverSoleil   					= $sun_info['sunrise'];
$coucherSoleil 					= $sun_info['sunset'];
$zenithSoleil  					= $sun_info['transit'];

Ben justement perso je ferais le calcul de la différence entre l’heure actuelle et l’heure du delta du zénith : plus elle est faible plus tu baisse ton éclairage, plus elle est élevée plus tu l’augmente

Pas sur que ta commande soit juste.

Time_op attend une heure suivi de + ou - des minutes.

Donc a voir ta commande je suis loin d’être convaincu

@Aurel, ok je vois, faire l’inverse de ce que je fais.
@anon53349806 , pourtant

Sinon, pour avoir la durée de la journée, c’est :

cmd::byString('#[Système][Soleil][Journée]#')->event(gmdate("Hi",$sun_info["sunset"]-$sun_info["sunrise"]));

Après, peut-être qu’en divisant par 2, mais je doute. Cela reste des calculs d’heures donc, la base n’est pas décimale, il faudra convertir.

1 « J'aime »

et le zénith - 1200 ça fait pas le job ?

A moins que je ne me trompe, time_diff fait des calculs sur dates pas sur heures.

Bonsoir,
vous devez être TRÈS au nord pour avoir le couché du soleil après minuit ?
:slight_smile:

@Henri non, mais minuit est forcement entre le coucher et le lever :wink:

Oui… mais pas entre le levé et le couché du soleil…
Du coup, si tu utilises mon scénario, il faut mettre comme :

  • « heure 1 » : le levé du soleil
  • « heure 2 » : le couché du soleil
    Dans ce cas, il n’y aura pas minuit entre les deux (sauf à allé TRES au nord)…

Ceux-ci étant, dans ton cas, l’information donnée par @Aurel : zenith du soleil, parait très pertinente.

image

hé hé

// Step 1
$scenario->setLog('Récupération de la latitude et longitude à partir des paramètres de Jeedom');

$latitude						= config::bykey('info::latitude');
$longitude						= config::bykey('info::longitude');

$scenario->setLog('Récupération du calendrier solaire du jour');

$sun_info      					= date_sun_info(time(), $latitude, $longitude);
$leverSoleil   					= $sun_info['sunrise'];
$coucherSoleil 					= $sun_info['sunset'];
$zenithSoleil  					= $sun_info['transit'];

$scenario->setLog('Lever du soleil :'.$leverSoleil. ' Coucher du soleil :'.$coucherSoleil. ' Zenith :' .$zenithSoleil);

$heureznithSoleil = date('Hi', $zenithSoleil+43200);
$scenario->setLog($heureznithSoleil);
$lat = config::byKey('info::latitude');
$long = config::byKey('info::longitude');

  $sunAuj = date_sun_info(strtotime('today'),$lat,$long);
    $scenario->setLog( "Aujourd'hui Coucher:  " .date('d-m-Y H:i:s', $sunAuj['sunset']));
  $sunDem = date_sun_info(strtotime('tomorrow'),$lat,$long);
    $scenario->setLog("Demain Lever: " .date('d-m-Y H:i:s', $sunDem['sunrise']));
  $milieuCoucherLever = ($sunAuj['sunset'] + $sunDem['sunrise']) / 2;

  $scenario->setLog("Heure coucher/lever: " .date('d-m-Y H:i:s', $milieuCoucherLever));
  $scenario->setLog("Heure zenith aujourd'hui +12h: " .date('d-m-Y H:i:s', $sunAuj['transit']+43200));

image

Moins d’une minute entre le zénith d’aujourd’hui +12h et la moyenne du coucher lever.

Bonjour bonjour,
Désolé pour le délai de réponse…
J’ai bien avancé et j’ai fait ce bloc code qui me calcul le Nadir (Point du ciel à la verticale de l’observateur, vers le bas (opposé à zénith).).
Ainsi je peux générer une luminosité en fonction de l’heure actuelle et de l’heure Nadir.

// Récupération des informations
$scenario->setLog('Récupération de la latitude et longitude à partir des paramètres de Jeedom');

$latitude						= config::bykey('info::latitude');
$longitude						= config::bykey('info::longitude');

$scenario->setLog('Récupération du calendrier solaire du jour');

$sun_info      					= date_sun_info(time(), $latitude, $longitude);
$leverSoleil   					= $sun_info['sunrise'];
$coucherSoleil 					= $sun_info['sunset'];
$zenithSoleil  					= $sun_info['transit'];
$heureNadir						= $zenithSoleil+43200;
$today							= time();

//Affichage des heures et calcul de Nadir
$scenario->setLog('Coucher du soleil:'.$coucherSoleil.' Lever du soleil:'.$leverSoleil. ' Zenith:' .$zenithSoleil. ' Nadir:' .$heureNadir);
$diff = $heureNadir - $today;
$scenario->setLog('Diff :'.$diff);
$scenario->setLog('Diff2 :'.date('H:i:s', $diff));
$coucherSoleil = date('Y-m-d H:i:s', $coucherSoleil);
$leverSoleil = date('Y-m-d H:i:s', $leverSoleil);
$zenithSoleil = date('Y-m-d H:i:s', $zenithSoleil);
$heureNadir = date('Y-m-d H:i:s', $heureNadir);
$scenario->setLog('Coucher du soleil:'.$coucherSoleil. ' Lever du soleil:'.$leverSoleil. ' Zenith:' .$zenithSoleil. ' Nadir:'.$heureNadir);
$today = date('Y-m-d H:i:s', time());
$scenario->setLog($today);
$scenario->setLog($diff);
//calcul luminosité, si 6h eentre l'heure actuelle et Nadir alors 254
$luminosite = round($diff * 0.01411111111);
$scenario->setLog($luminosite);
$tags['#luminosite#'] = $luminosite;