Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

Récupérer le futur évènement

Pour toute question concernant le plugin agenda uniquement !! (et pas google agenda !!)
pj66
Timide
Messages : 32
Inscription : 27 févr. 2019, 21:36
Localisation : F-66200

Récupérer le futur évènement

Message par pj66 » 14 sept. 2019, 19:50

Bonjour,

Peut-on récupérer l'info du futur événement de l'agenda ?
Je voudrais récupérer l'information pour modifier un widget sur le ramassage de mes poubelles :mrgreen: qui n'est pas toujours avec un passage alterné : jaune-bleue-jaune-bleue
mais qui peut être des fois : bleue bleue bleue jaune

L'info du prochain passage est bien dispo sur le futur événement ,Poubelle bleue mardi 17.09 ...

Image

mais je ne sais pas comment l'exploiter pour modifier le widget en conséquence
Merci

Cruise
Timide
Messages : 7
Inscription : 27 janv. 2018, 19:52

Re: Récupérer le futur évènement

Message par Cruise » 15 sept. 2019, 09:55

Bonjour
On peut récupérer l'information via un bloc code dans un scénario.
Un exemple pour récupérer les événements et leur date de lancement pour un calendrier d'id 179 :

Code : Tout sélectionner

$id_calendar=179;
$events=[];
$calendar=eqLogic::byId($id_calendar);
if(isset($calendar)) {
  $events=$calendar->getEvents();
  }
if(isset($events) && is_array($events) && count($events)>0) {
   foreach ($events as $event) {
     $evenement = $event->getName(); // nom de l'evenement
     $nextstart=$event->nextOccurrence('start'); // prochain declenchement de l'evenement
     $scenario->setLog('Evénement '.$evenement.' programmé le '.$nextstart);
     }
   }
Reste à utiliser l'information ensuite pour modifier le widget.

pj66
Timide
Messages : 32
Inscription : 27 févr. 2019, 21:36
Localisation : F-66200

Re: Récupérer le futur évènement

Message par pj66 » 15 sept. 2019, 18:26

Impec ; Merci pour l'info
Je me suis donc farci ce qu'est un bloc code.
Effectivement par le biais d'un scénario je retrouve mon info manquante.
==> bien qu'elle ne se trouve pas en 1ere position dans les différents événements à venir.
C'est pas gagné ... :roll:

pj66
Timide
Messages : 32
Inscription : 27 févr. 2019, 21:36
Localisation : F-66200

Re: Récupérer le futur évènement

Message par pj66 » 24 oct. 2019, 19:31

Bonsoir

:? Beh comme j'avais dit c'est pas gagné ...
voici mon code un peu modifié par rapport à celui de Cruise

et la variable(poubelle) enregistrée est le dernier événement :roll:
c-a-d Poubelle Jaune Eté programmé le 2020-06-11 18:00:00 mais ce n'est pas ça que je veux !

Code : Tout sélectionner

$id_calendar=311;
$events=[];
$calendar=eqLogic::byId($id_calendar);
if(isset($calendar)) {
  $events=$calendar->getEvents();
  }
if(isset($events) && is_array($events) && count($events)>0) {
   foreach ($events as $event) {
     $scenario->setData(Poubelle,$event->getName());
     $evenement = $event->getName(); // nom de l'evenement
     $nextstart=$event->nextOccurrence('start'); // prochain declenchement de l'evenement
     $scenario->setLog('Evénement '.$evenement.' programmé le '.$nextstart);
     }
   }
Voici le log

Code : Tout sélectionner

------------------------------------
[2019-10-24 19:11:48][SCENARIO] Start : Scenario lance manuellement.
[2019-10-24 19:11:48][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-10-24 19:11:48][SCENARIO] Exécution d'un bloc code
[2019-10-24 19:11:49][SCENARIO] Evénement Poubelle Bleue Hivers programmé le 2019-10-28 18:00:00
[2019-10-24 19:11:49][SCENARIO] Evénement Poubelle Jaune Hivers programmé le 2019-10-30 18:00:00
[2019-10-24 19:11:49][SCENARIO] Evénement Poubelle Bleue Eté Mardi programmé le 2020-06-02 18:00:00
[2019-10-24 19:11:49][SCENARIO] Evénement Poubelle Bleue Eté Samedi programmé le 2020-06-06 18:00:00
[2019-10-24 19:11:49][SCENARIO] Evénement Poubelle Jaune Eté programmé le 2020-06-11 18:00:00
[2019-10-24 19:11:49][SCENARIO] Fin correcte du scénario
Je voudrais récupérer l'info :
Poubelle Bleue Hivers sur la ligne Poubelle Bleue Hivers programmé le 2019-10-28 18:00:00
c-à-d le prochain évènement.
Désolé , ch'suis pas programmeur , c'est du chinois pour moi

Merci d'avance

Naboleo
Actif
Messages : 745
Inscription : 20 janv. 2017, 09:57

Re: Récupérer le futur évènement

Message par Naboleo » 24 oct. 2019, 20:41

pj66 a écrit :
24 oct. 2019, 19:31
Je voudrais récupérer l'info :
Poubelle Bleue Hivers sur la ligne Poubelle Bleue Hivers programmé le 2019-10-28 18:00:00
c-à-d le prochain évènement.
Désolé , ch'suis pas programmeur , c'est du chinois pour moi

Merci d'avance
Salut,

Tu peux essayer ça

Code : Tout sélectionner

$id=139; //ID du calendrier
$event_names= ["Poubelle Bleue Hivers"];//Noms des événements séparés par des virgules
$events=[];
$calendar=eqLogic::byId($id);
$scenario->setLog("id :".$id);

if(isset($calendar)) {
	$events=$calendar->getEvents();
}

if(isset($events) && is_array($events) && count($events)>0) {
	foreach ($events as $event) {
		foreach ($event_names as $event_name) {
			if($event->getName() == $event_name)
            {
              	$EvtName=str_replace(" ","_",$event->getName());
				$nextstart=$event->nextOccurrence('start');
				$nextend=$event->nextOccurrence('end');
                $scenario->setLog("Check ID=".$event->getID()." : ".$EvtName);
                $scenario->setData($EvtName."_start", "");
                $scenario->setData($EvtName."_stop", "");
                if(isset($nextend))
                {
					$nextstart=(isset($nextstart)) ? $nextstart : "En cours";
					$scenario->setData($EvtName."_start", $nextstart);
					$scenario->setData($EvtName."_stop", $nextend);
					$scenario->setLog("Next : ".$EvtName." ".$nextstart." to ".$nextend);
					unset($event_names[array_search($event_name,$event_names)]);
				}
				break ;
			}
		}
	}
}	
A la fin tu dois avoir 2 variables jeedom : Poubelle_Bleue_Hivers_start et Poubelle_Bleue_Hivers_stop
Pi4/4Go +SSD 32Go (Wifi et bluetooth actifs) + Clé USB Z-Wave Everspring + rfxcom (RTS) + Google Home
7 Danfoss LC-13
2 velux module DIO
7 volets RTS
3 Sonoff
IFTTT
Capteur porte, de présence, et prise intelligente...

pj66
Timide
Messages : 32
Inscription : 27 févr. 2019, 21:36
Localisation : F-66200

Re: Récupérer le futur évènement

Message par pj66 » 24 oct. 2019, 21:51

Bonsoir,
Ouai , j'ai les 2 variables mais ,j'aurais aimé que la valeur de la variable soit "Poubelle bleue" ou " poubelle jaune" en fonction du prochain évènement.
Là j'ai l'heure de début et de fin mais que de la bleue
Image
Que se passera t-il quand se sera au tour de la jaune ?
Merci pour ta patience

Naboleo
Actif
Messages : 745
Inscription : 20 janv. 2017, 09:57

Re: Récupérer le futur évènement

Message par Naboleo » 25 oct. 2019, 01:08

pj66 a écrit :
24 oct. 2019, 21:51
Bonsoir,
Ouai , j'ai les 2 variables mais ,j'aurais aimé que la valeur de la variable soit "Poubelle bleue" ou " poubelle jaune" en fonction du prochain évènement.
Merci pour ta patience
Pour l'affichage dans l’ordre d'arrivée des événements, le widget fait déjà le boulot.
Capture.PNG
Capture.PNG (5.97 Kio) Consulté 380 fois
Donc je vois pas trop quel est ton besoin (le moyen de le faire est à déterminer et ça veut peu-être dire que le meilleur moyen c'est pas du code)

Pour les autres événements (jaune etc), regarde le 1er commentaire :

Code : Tout sélectionner

$event_names= ["Poubelle Bleue Hivers"];//Noms des événements séparés par des virgules
Donc à toi de mettre ce que tu veux dans les crochets.
Maintenant pour aller juste un peu plus loin, comme tu vas avoir les dates et heures dans 4 variables, tu vas pouvoir comparer la plus proche dans un virtuel info par exemple :

Code : Tout sélectionner

strtotime(variable(Poubelle_Bleue_Hivers_start))
Te donne un nombre plus ou moins grand
Pi4/4Go +SSD 32Go (Wifi et bluetooth actifs) + Clé USB Z-Wave Everspring + rfxcom (RTS) + Google Home
7 Danfoss LC-13
2 velux module DIO
7 volets RTS
3 Sonoff
IFTTT
Capteur porte, de présence, et prise intelligente...

Naboleo
Actif
Messages : 745
Inscription : 20 janv. 2017, 09:57

Re: Récupérer le futur évènement

Message par Naboleo » 25 oct. 2019, 10:46

Bon j'avais un peu de temps ce matin ... j'ai testé rapidement
Il faut corriger les 2 noms d’événements

Code : Tout sélectionner

$id=139; //ID du calendrier
$event_names= ["Poubelle verte","Poubelle jaune"];//Noms des événements séparés par des virgules
$events=[];
$calendar=eqLogic::byId($id);
$scenario->setLog("id :".$id);

if(isset($calendar)) {
	$events=$calendar->getEvents();
}
$firstdate="";
$firstevent="";
if(isset($events) && is_array($events) && count($events)>0) {
	foreach ($events as $event) {
		foreach ($event_names as $event_name) {
			if($event->getName() == $event_name)
            {
				$nextstart=$event->nextOccurrence('start');
				$scenario->setLog("Check ID=".$event->getID()." : ".$event_name." le ".$nextstart);
				if(strtotime($nextstart) <= strtotime($firstdate) || $firstdate == "")
				{
					$firstdate=$nextstart;
					$firstevent=$event_name;
				}
				break ;
			}
		}
	}
	$scenario->setData("Prochain Evenement", $firstevent);
  	$scenario->setLog("Prochain Evenement : ".$firstevent);
}
Pi4/4Go +SSD 32Go (Wifi et bluetooth actifs) + Clé USB Z-Wave Everspring + rfxcom (RTS) + Google Home
7 Danfoss LC-13
2 velux module DIO
7 volets RTS
3 Sonoff
IFTTT
Capteur porte, de présence, et prise intelligente...

pj66
Timide
Messages : 32
Inscription : 27 févr. 2019, 21:36
Localisation : F-66200

Re: Récupérer le futur évènement

Message par pj66 » 25 oct. 2019, 22:36

Bonsoir,

Impec :!: ! MERCI :!:
J'ai changé les 2 noms d'évènements , j'ai bien la valeur désirée dans la variable créée.

Le but des variables est de faire changer mon widget "poubelle"
==> le widget du calendrier suffit ,je suis d'accord il affiche en 1er le prochain évènement mais je voulais un widget poubelle en +.

J'arrange mes scénarios et je te tiens informé quand ce sera au tour de l'autre poubelle à être sortie.

Merci encore !

Répondre

Revenir vers « [Plugin officiel] Agenda »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité