Aide création scénario - Réveil

Bonjour à tous,
Je cherche un peu d’aide pour élaborer un scénario pour mon réveil.
J’ai un virtuel avec un bouton ON/OFF global, puis un ON/OFF et un horloge par jour.

Voici mon scénario qui est fonctionnel.

L’actualisation du scénario se faire au changement d’état du ON/OFF global et à 2h du matin.

Là où je bloque c’est sur l’affichage du prochain jour et de la prochaine heure du réveil.
Comment orchestrer cela ?
J’ai pensé à tester le jour J si je suis avant ou après l’heure de réveil, mais compliqué si le prochain jour est désactivé.

Si vous avez une idée :slight_smile:, n’hésitez pas à m’accompagner.

Merci

Mathieu

A mon avis il te faut un deuxième scénario provoqué par une action sur chacun des jours et des horloges et qui mettra à jour l’affichage des commandes « prochain jour » et « prochaine heure » (enfin j’imagine que ce sont des commandes).
Il faut alors mettre en forme cette logique de scénario :

  • commencer pas vérifier si un jour est coché, sinon → prochain jour = néant
  • pour chaque jour coché, faire ce calcul:
    si [numéro du jour coché - numéro du jour actuel] <0 alors distanceJi=[numéro du jour coché - numéro du jour actuel+7]
    sinon distanceJi = [numéro du jour coché - numéro du jour actuel] (il y a une fonction php qui retourne le numéro de jour il me semble).
  • identifier la distanceJi minimale et donc le prochain jour, et l’attribuer, ainsi que son heure, dans les commandes à afficher.
    (ces distances peuvent être des variables du scénario, elles ne servent que pour lui).

Attention il y a sûrement une condition supplémentaire à ajouter si la distance mini = 0 (donc on est le jour du réveil) pour comparer si heure actuelle < heure réveil , sinon prendre le prochain jour puisque l’heure du réveil.

Voilà, une fois que ça c’est dit je te souhaite bon courage :smiley:

Bonjour,

Le plugin plugin-programmateur" fait réveil :wink:

Pouvez vous regardez du coté de ce plugin ?

Exemple :
image

Et je l’auto programme avec ce scénario :

Hello @rom.jou ,
Je regarde :slight_smile:

@Fabrice ,
Je l’avais vu et testé, mais cela ne correspond pas à mes besoins. Il y a aussi le plugin-reveil .
Par exemple, on ne peut pas configurer des heures différentes au sein du widget.

Aujourd’hui mon scénario fonctionne, il me manque juste la partie « prévision ». :slight_smile:

Mathieu

@rom.jou ,
J’ai commencé à faire le scénario.
La première partie fonctionne, même si je suis très étonné du résultat de la commande

max(distanceLundi,distanceMardi,distanceMercredi,distanceJeudi,distanceVendredi,distanceSamedi,distanceDimanche)

qui dans l’exemple :

Lundi : -10
Mardi : -9
Mercredi : -8
Jeudi : 0
Vendredi : 1
Samedi : 2
Dimanche : -11

donne distanceVendredi

Il me reste la partie pour le Jour J,
Si distanceJour = 0
alors si #time# < #heurereveilJour#
alors j’affiche #heurereveilJour# et #JourJ#
sinon j’affiche #heurereveilDistanceJour# et #JourDistanceJour#

Je ne sais pas trop où l’intégrer, à la fin du bloc, ou entre les premières SI ?

Mathieu

Pour tes distances essaie de retirer la parenthèse pour que le +7 ne devienne pas un -7. L’idée est que toutes les distances soient positives, et de stocker le min dans le tag(jour) , pas le max.
D’ailleurs c’est peut-être plutôt +6 qu’il faut faire, je ne me souvenais plus que le numéro du jour était de 0 à 6.

Et pour le distanceJour = 0 je ne sais pas trop, faut que je planche d’avantage dessus :stuck_out_tongue:

1 « J'aime »

J’ai retiré les parenthèses.
Si je mets +6, voici le résultat :

Lundi : 3
Mardi : 4
Mercredi : 5
Jeudi : 0
Vendredi : 1
Samedi : 2
Dimanche : 2

Si je laisse +7, voici le résultat :

Lundi : 4
Mardi : 5
Mercredi : 6
Jeudi : 0
Vendredi : 1
Samedi : 2
Dimanche : 3

Dans ce dernier cas, le min me donne dimanche… Etrange.

Mathieu

Le calcul me paraît donc mieux avec +7 par contre que la formule min(…) te sorte le dimanche c’est bizarre.
Est ce que les conditions si tag(jour)==‹ distanceXx › ne devrait pas être si tag(jour)==taf(distanceXx) ?

Je ne pense pas.

[2024-04-25 15:21:39][SCENARIO] - Exécution du sous-élément de type [condition] : if tag(Jour) == 'distanceDimanche'
[2024-04-25 15:21:39][SCENARIO] Evaluation de la condition : ["distanceDimanche" == 'distanceDimanche'] = Vrai

par contre, tu as raison sur le min, il faut mettre tag(X).

min(tag(distanceLundi),tag(distanceMardi),tag(distanceMercredi),tag(distanceJeudi),tag(distanceVendredi),tag(distanceSamedi),tag(distanceDimanche))

et là, ça me donne 0, mais pas le jour.
Il y aura toujours un distanceJour à 0 dans tous les cas ?

Mathieu

Il y en aura toujours une si tu ne fais pas aussi un contrôle sur les cases qui sont cochées sur la tuile.

Excuse moi, je n’ai pas compris.

Dans ton scénario tu calcules la distance pour chaque jour, mais en fait il faut que tu la calcules uniquement pour les jours où le réveil est coché. Mais je ne sais pas si tu as cette info stockée dans une commande ?

C’est ce que je fais, ou alors je n’ai pas compris :slight_smile:

Ah oui au temps pour moi j’avais raté cette ligne (y en a beaucoup :smiley: ! ) . Alors je te propose dans ce cas d’ajouter à ce 'SI ReveilLundi ==1" une ligne « sinon tag distancelundi = 10 » comme ça t’es sur que ce sera jamais le minimum.
Donc, si on est lundi et que lundi n’est pas coché, lundi n’aura pas une distance = 0

1 « J'aime »