Demande d'aide Variable booléen pour sortir d'une boucle "While" [Résolu]
#1
Bonjour à Tous,

J'ai une question :

Je travaille sur un programme de "sun traking" pour mon installation. L'idée est qu'au long de la journée, Lifedomus ferme les volets des fenêtres exposées au soleil. N'ayant pour le moment pas de de station météo, je me sert de l'azimut.

Donc lorsque le soleil dépasse un certain azimut, l'automate se déclenche puis il entre dans un "while" qui contient comme condition de sortie le dépassement de l'azimut après lequel la fenêtre n'est plus exposée.

Seulement, comme je ne me base pas sur les données d'une station météo, j'ai besoin de pouvoir désactiver le sun tracking a tout moment (les jours où il n'y a pas de soleil par exemple...). J'ai donc créer une variable Booléen liée à un widget dans DS pour le désactiver. le widget change bien la variable et empêche le lancement du scénario s'il elle est sur faux, pas de problème de ce coté là.

En revanche, lorsque l’automate est lancé et que la boucle "While" tourne, je ne parviens pas à faire en sorte que la désactivation du sun tracking, donc le passage de la variable de vrai à faux, stop la boucle et mette fin à l'automate ...

Avez vous des suggestions ?
Répondre
#2
Je ne vais pas répondre à ta question, mais juste un avertissement concernant l'azimut donné par la LD, il est FAUX à cause des changements heure d'été/hiver.
Répondre
#3
Bonjour,
Je suis étonné que la condition d'exécution de la boucle ne fonctionne pas (mais je n'ai plus d'automate avec boucle while pour vérifier) mais une solution alternative consiste à lancer un second automate qui stoppe l’exécution du premier lorsque que le sun tracking est à off.
Répondre
#4
(05-30-2020, 12:41 PM)jdrenne a écrit : Je ne vais pas répondre à ta question, mais juste un avertissement concernant l'azimut donné par la LD, il est FAUX à cause des changements heure d'été/hiver.

Ah ... ! Ca m'intéresse d'en savoir un peu plus ! Ca veut dire quoi ? qu'il faut décaler l'Azimut lorsque l'heure change ?

(05-30-2020, 02:12 PM)Ives a écrit : une solution alternative consiste à lancer un second automate qui stoppe l’exécution du premier lorsque que le sun tracking est à off.

Merci pour cette piste. Mais comment on stop un automate dans la syntaxe ?


Merci pour vos réponses Amen-1fb6
Répondre
#5
Exemple avec un automate
Situation initiale : les deux vantaux de la fenêtre sont fermés
Ouverture du vantail droit --> clignotement de la lampe "Bureau-Meuble" jusqu'à l'ouverture du vantail gauche (sans oublier l'extinction de la lampe en sortie de boucle car l'ouverture du vantail peut éventuellement se produire lorsque la lampe est allumée et, dans ce cas, elle resterait allumée)
[Image: 200531103323989396.jpg]

Exemple avec deux automates
Le 1er automate est iidentique
Le second automate provoque l'arrêt de l'exécution de l'automate 1 lorsque la lumière Bureau-Spots bureau est allumée
[Image: 200531104512613875.jpg]
Répondre
#6
Merci Ives pour ces explication.

Avec les actuateurs comme dans ton exemple ca semble fonctionner. Mais avec ma variable il ne veut rien savoir ...

Voici ce que j'ai mis comme conditions de sortie du While:

   

Pour l'azimut pas de pb, mais pour la variable, aucun effet
Répondre
#7
(05-31-2020, 03:54 PM)MaxLightyear a écrit : Merci Ives pour ces explication.

Avec les actuateurs comme dans ton exemple ca semble fonctionner. Mais avec ma variable il ne veut rien savoir ...

Voici ce que j'ai mis comme conditions de sortie du While:



Pour l'azimut pas de pb, mais pour la variable, aucun effet

Essaye en inversant la logique : suntracking=vrai AND azimuth compris entre X et Y.
De cette manière si l'une des 2 conditions est à faux tu sortiras de la boucle.
Le perfectionnement de soi et l'accession à sa légende personnelle passe obligatoirement par le partage de son savoir et de son expérience avec les profanes en demande d'initiation. (R. Bach)
Likes Received: 8 in 6 posts
Likes Given: 7
Répondre
#8
(06-01-2020, 12:57 PM)Pollux06 a écrit :
(05-31-2020, 03:54 PM)MaxLightyear a écrit : Merci Ives pour ces explication.

Avec les actuateurs comme dans ton exemple ca semble fonctionner. Mais avec ma variable il ne veut rien savoir ...

Voici ce que j'ai mis comme conditions de sortie du While:



Pour l'azimut pas de pb, mais pour la variable, aucun effet

Essaye en inversant la logique : suntracking=vrai AND azimuth compris entre X et Y.
De cette manière si l'une des 2 conditions est à faux tu sortiras de la boucle.

Bingo ! Yahoo-1ea1

C'est bien çà ! Ca marche comme je voulais.

Merci à tous pour votre aide, avec mention spéciale pour Pollux Eek-1e6fb
Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Demande d'aide Changement d'état d'un variable "booléen" [Résolu] MaxLightyear 5 659 04-20-2020, 05:32 PM
Dernier message: MaxLightyear
  Boucle dans automate syndrom 3 574 04-03-2020, 06:41 PM
Dernier message: Al_Bla
  Automate pour arrosage Daniel 21 7,830 09-11-2019, 03:09 PM
Dernier message: Pollux06
  Persistence variable Pollux06 3 1,356 06-20-2019, 09:18 AM
Dernier message: tonyb0t77
  Récupération variable pour action sirdjey 9 3,558 11-28-2018, 09:15 PM
Dernier message: sirdjey
  passer une variable à une commande d'un équipement générique Jey 7 3,575 02-20-2018, 10:24 AM
Dernier message: Hsd
  Modification valeur variable dans le DS Sirius65 12 6,951 12-03-2017, 12:05 PM
Dernier message: jojo
  Transférer une requête SNMP en variable Gurvan 1 1,712 08-12-2017, 10:29 PM
Dernier message: Hsd
  Demande d'aide pour la mise à jour d'une variable Date Gégé12 10 6,391 05-21-2017, 10:23 AM
Dernier message: Gégé12
  décimale Variable ngm47 0 985 11-07-2016, 10:01 AM
Dernier message: ngm47



Utilisateur(s) parcourant ce sujet : 1 visiteur(s)