Réveil avec Macrodroid

Bonjour à tous,
J’ai appliqué ce tuto Utilisation de la donnée Réveil avec Macrodroid sur mon Pi4 pour lancer des scénarios et qui fonctionnent à merveille.

Lorsque je l’applique sur mon Pi5, l’alarme programmée dans le viruel de Jeedom ne s’efface pas, lorsque j’annule celle-ci sur mon téléphone. La requête HTTP est pourtant bien envoyée mais l’alarme reste active dans mon virtuel :frowning: :frowning: :frowning:

exemple : je règle l’heure sur mon téléphone ==> la requête HTTP est bien envoyée par macrodroid et l’alarme s’affiche bien sur mon virtuel.

j’annule l’alarme sur mon téléphone ==> la requête est toujours bien envoyée par macrodroid mais celle-ci reste active dans le virtuel alors que sur le Pi4, elle s’efface…

Si quelqu’un aurait une idée ??? :slight_smile:

page santé :

Merci pour vos retours.

2 « J'aime »

Tu peux nous mettre les requêtes HTTP envoyées dans les deux cas ?

Norbert

Bonjour @ngrataloup

Merci pour ton retour.

Là, je n’ai plus accès à mon PI4 pour le moment mais je sais que ça fonctionnait très bien…

Voici une image des Log des requêtes HTTP envoyées par Macrodoid…

lorsque je désactive l’alarme de mon téléphone, la requête se termine par
value=’

Je viens d’essayer avec une requête HTTP au lieu d’ouvrir un site web mais c’est le même résultat…
Après, je ne vois rien dans les log du plugin virtuel ou jeedom…

J epense que tu as ta reponse, le value= ne doit pas etre interpreter comme une commande correcte. il attend je pense quelquechose derreire … Essaye en collant la requette et en ajoutant value=0

Je pense que ca marchera

Norbert

Bonjour Norbert,

Du coup, j’ai mis des guillemets après value ( value=«  »{setting_…etc} ) et du coup l’info est bien effacé dans le virtuel :+1:

Maintenant, je rencontre un nouveau soucis dans le bloc code suivant :

$value = cmd::byString(#[Chambre parents][Réveil famille][Réveil]#);
$value = cmd->execCmd()
  
// Extraction de l'heure du Réveil
$detail =  explode(" ",$value);
$detail2 = $detail[1];
$detail3 = str_replace(":","");
$scenario->setData($Variable="clock",$detail3);

// Extraction et convertion du Jour du Réveil
$detail4 = explode(" ",$value);
$detail5 = $detail4[0];
$healthy = array("lun.", "mar.", "mer.", "jeu.", "ven.", "sam.", "dim.");
$yummy   = array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche");
$detail6 = str_replace($healthy, $yummy, $detail5);
$scenario->setData($Variable="Jour",$detail6);

lorsque j’exécute la première partie du code dans le testeur d’expression je fais bien l’extraction du jour et de l’heure :

Par contre, lorsque j’exécute un scénario,

Celui-ci renvoie une erreur . Je vois bien une erreur de syntaxe dans le log mais ne ne vois pas comment la corriger…
Est-ce que c’est du à PHP 8 vu que ça fonctionnait sur un PI4 ou ça vient de l’utilisateur :rofl:???

Merci par avance

Non, ca ne mar che pas comme ca !
Ta premiere ligne renvoie l’objet commande, dans ta seconde ligne tu souhaites la valeur de cet objet, donc plutot

$cmdReveil= cmd::byString(#[Chambre parents][Réveil famille][Réveil]#);
$value = $cmdReveil->execCmd()

ou en plus cours :

$value = $cmd::byString(#[Chambre parents][Réveil famille][Réveil]#)->execCmd()

Et tu ne peux pas utiliser le testeur d’expression pour ca, dans ta copie d’écran, il ne fait que interpréter la valeur de ta commande #[Chambre parents][Réveil famille][Réveil]# au milieu des parenthèses

Ensuite, dans tes setData, le $variable= n’est pas utile

Impossible que ce que tu as ecrit ait pu marché avant !

Une lien http avec des guillements :thinking:

Norbert

Merci pour ton retour,
Je vais voir ça du coup :slight_smile:

PS:

J’ai modifier le bloc code comme suit :

$value = $cmd::byString(#[Chambre parents][Réveil famille][Réveil]#)->execCmd()
  
// Extraction de l'heure du Réveil
$detail =  explode (" ",$value);
$detail2 = $detail[1];
$detail3 = str_replace(":","");
$scenario->setData($Variable="clock",$detail3);

// Extraction et convertion du Jour du Réveil
$detail4 = explode(" ",$value);
$detail5 = $detail4[0];
$healthy = array("lun.", "mar.", "mer.", "jeu.", "ven.", "sam.", "dim.");
$yummy   = array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche");
$detail6 = str_replace($healthy, $yummy, $detail5);
$scenario->setData($Variable="Jour",$detail6);

erreur de syntaxe suivante :

[2024-11-15 18:54:39][SCENARIO] -- Début : Scenario lance manuellement.
[2024-11-15 18:54:39][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-11-15 18:54:39][SCENARIO] Exécution d'un bloc code
[2024-11-15 18:54:39][SCENARIO] syntax error, unexpected token ";", expecting ")"
[2024-11-15 18:54:39][SCENARIO] - Exécution du sous-élément de type [condition] : if variable("clock") == #time# && variable("jour") == #sday#
[2024-11-15 18:54:39][SCENARIO] Evaluation de la condition : ["" == 1854 && "" == "Vendredi"] = Faux
[2024-11-15 18:54:39][SCENARIO] - Exécution du sous-élément de type [action] : else
[2024-11-15 18:54:39][SCENARIO] Fin correcte du scénario

Désolé de t’embêter avec ça mais je ne suis pas doué sur le code :sweat_smile: même pas du tout :disappointed_relieved:

tu peux mettre tout ton scenario ?

Voilà, pour le moment je l’exécute manuellement mais je compte faire une programation

J’ai juste ajouté la journée…

la requête que j’envoie via Macrodroid :
https://xxxxxx.eu.jeedom.link/core/api/jeeApi.php?apikey=ixxxxxxxxxxxxxxxxxxxxxxD&type=cmd&id=5068&value=«  »{setting_global=next_alarm_clock_formatted}

la bonne réception de la requête dans le pluging virtuel :

encore merci pour le temps que tu passes.
je viens de voir que les guillemets sont reformatés…
image

bonsoir @ngrataloup
Je viens de retenter avec le code que j’ai trouvé sur le tuto et la, ça fonctionne…
la seule chose que j’ai changé, j’ai modifié le Bloc A par un bloc SI…

voici le code :

// Récupération de la valeur du Réveil
$cmd = cmd::byString("#[Chambre parents][Réveil famille][Réveil]#");
$value = $cmd->execCmd();

// Extraction de l'heure du Réveil
$detail =  explode(" ",$value);
$detail2 = $detail[1];
$detail3 = str_replace(":","",$detail2);
$scenario->setData($Variable="clock",$detail3);

// Extraction et convertion du Jour du Réveil
$detail4 = explode(" ",$value);
$detail5 = $detail4[0];
$healthy = array("lun.", "mar.", "mer.", "jeu.", "ven.", "sam.", "dim.");
$yummy   = array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche");
$detail6 = str_replace($healthy, $yummy, $detail5);
$scenario->setData($Variable="Jour",$detail6);

le résultat :

2024-11-15 20:49:39][SCENARIO] -- Début : Scenario lance manuellement.
[2024-11-15 20:49:39][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-11-15 20:49:39][SCENARIO] Exécution d'un bloc code
[2024-11-15 20:49:39][SCENARIO] - Exécution du sous-élément de type [condition] : if variable("clock") == #time# && variable("jour") == #sday#
[2024-11-15 20:49:39][SCENARIO] Evaluation de la condition : [0615 == 2049 && "Samedi" == "Vendredi"] = Faux
[2024-11-15 20:49:39][SCENARIO] - Exécution du sous-élément de type [action] : else
[2024-11-15 20:49:39][SCENARIO] Fin correcte du scénario

Après, je ne sais pas ce que tu en penses, c’est à cause du « Bloc A » que ça ne fonctionnait pas ???

Pas de raison, ton bloc A avait l’air correct … Est-ce qu’il n’y aurait pas des espaces devant ou derierre qui pose pb ?

je vois qu’il manque une parenthèse ) mais je ne vois pas où la positionner…

on ouvre une parenthèse au début avec : $value = $cmd::byString(
mais elle n’est pas fermée plus loin…

Je n’y connais rien donc je dis peut-être des bétises :rofl:

$value = $cmd::byString(#[Chambre parents][Réveil famille][Réveil]#)->execCmd()
  
// Extraction de l'heure du Réveil
$detail =  explode (" ",$value);
$detail2 = $detail[1];
$detail3 = str_replace(":","");
$scenario->setData($Variable="clock",$detail3);

// Extraction et convertion du Jour du Réveil
$detail4 = explode(" ",$value);
$detail5 = $detail4[0];
$healthy = array("lun.", "mar.", "mer.", "jeu.", "ven.", "sam.", "dim.");
$yummy   = array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche");
$detail6 = str_replace($healthy, $yummy, $detail5);
$scenario->setData($Variable="Jour",$detail6);

laisse tomber, je dis des c… elle est fermée après réveil…

1 « J'aime »

Il n’y a pas un soucis au niveau de la parenthèse quand même ? pourquoi elle est en blanc d’un coté et en grisé de l’autre ???

il manque déjà un ; à la fin

Bonjour @ngrataloup

je viens te donner quelques nouvelles :slight_smile:

Effectivement, il manquait le ; au bout de la 1ère ligne mais bon, cela ne change
pas grand chose, :disappointed_relieved: j’ai toujours cette erreur de syntaxe :

Le bloc code modifié :

// Récupération de la valeur du Réveil
$value = $cmd::byString(#[Chambre parents][Réveil famille][Réveil David]#)->execCmd();
  
// Extraction de l'heure du Réveil
$detail =  explode(" ",$value);
$detail2 = $detail[1];
$detail3 = str_replace(":","",$detail2);
$scenario->setData($Variable="clock",$detail3);

// Extraction et convertion du Jour du Réveil
$detail4 = explode(" ",$value);
$detail5 = $detail4[0];
$healthy = array("lun.", "mar.", "mer.", "jeu.", "ven.", "sam.", "dim.");
$yummy   = array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche");
$detail6 = str_replace($healthy, $yummy, $detail5);
$scenario->setData($Variable="Jour",$detail6);

l’erreur signale qu’il y a un ; à la place d’une parenthèse mais je ne vois vraiment pas où la positionner :sweat_smile:

[2024-11-16 14:42:09][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-11-16 14:42:09][SCENARIO] Exécution d'un bloc code
[2024-11-16 14:42:09][SCENARIO] syntax error, unexpected token ";", expecting ")"

En revanche, Avec ce bloc code et son scénario :

// Récupération de la valeur du Réveil
$cmd = cmd::byString("#[Chambre parents][Réveil famille][Réveil David]#");
$value = $cmd->execCmd();

// Extraction de l'heure du Réveil
$detail =  explode(" ",$value);
$detail2 = $detail[1];
$detail3 = str_replace(":","",$detail2);
$scenario->setData($Variable="clock",$detail3);

// Extraction et convertion du Jour du Réveil
$detail4 = explode(" ",$value);
$detail5 = $detail4[0];
$healthy = array("lun.", "mar.", "mer.", "jeu.", "ven.", "sam.", "dim.");
$yummy   = array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche");
$detail6 = str_replace($healthy, $yummy, $detail5);
$scenario->setData($Variable="Jour",$detail6);

[2024-11-16 15:30:19][SCENARIO] -- Début : Scenario lance manuellement.
[2024-11-16 15:30:19][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-11-16 15:30:19][SCENARIO] Exécution d'un bloc code
[2024-11-16 15:30:19][SCENARIO] - Exécution du sous-élément de type [condition] : if #[Chambre parents][Réveil famille][Réveil David]# != "" et #[Domicile][présence famille][David]# == 1
[2024-11-16 15:30:19][SCENARIO] Evaluation de la condition : ["dim. 07:00" != "" et 1 == 1] = Vrai
[2024-11-16 15:30:19][SCENARIO] - Exécution du sous-élément de type [action] : then
[2024-11-16 15:30:19][SCENARIO] Exécution d'un bloc élément : 549
[2024-11-16 15:30:19][SCENARIO] - Exécution du sous-élément de type [condition] : if variable("clock") == #time# && variable("jour") == #sday#
[2024-11-16 15:30:19][SCENARIO] Evaluation de la condition : [0700 == 1530 && "Dimanche" == "Samedi"] = Faux
[2024-11-16 15:30:19][SCENARIO] - Exécution du sous-élément de type [action] : else
[2024-11-16 15:30:19][SCENARIO] Exécution d'un bloc élément : 553
[2024-11-16 15:30:19][SCENARIO] - Exécution du sous-élément de type [condition] : at time_op(variable("clock"), -70)
[2024-11-16 15:30:19][SCENARIO] Evaluation de la condition : [550] = 550
[2024-11-16 15:30:19][SCENARIO] Tâche : 553 programmée à : 2024-11-17 05:50:00
[2024-11-16 15:30:19][SCENARIO] Exécution d'un bloc élément : 554
[2024-11-16 15:30:19][SCENARIO] - Exécution du sous-élément de type [condition] : at time_op(variable("clock"), -30)
[2024-11-16 15:30:19][SCENARIO] Evaluation de la condition : [630] = 630
[2024-11-16 15:30:19][SCENARIO] Tâche : 554 programmée à : 2024-11-17 06:30:00
[2024-11-16 15:30:19][SCENARIO] Fin correcte du scénario

Le scénario se déroule bien et les programmations sont toutes lancées :

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.