Sunshutter : problème de gardien

Hello all,

J’ai un problème de vérification de gardien pour une des conditions de mon Sunshutter :

Dans l’onglet « Positionnement » :


Explication : quand je suis en mode (télé)travail, je considère 5 jours de boulot et 2 jours de weekend.
Le but de la condition est assez simple :
Si : dans le mode travail (1)
ET
(
(Ni weekend Ni Férié) : pas lever le volet avant 7h30 (2)
OU
(Weekend OU Férié) : pas lever le volet avant 9h30 (3)
)
ALORS : lever le volet à 100% d’ouverture

Mon prob est que le volet se lève tjs à la même heure, à savoir 8h40 à cette saison puisque 0° élévation, là où je suis, correspond à 8h40.
(1) est donc bien respecté, ça j’en suis sûr via LABEL notif qui m’est envoyée (scenario à part)
(2) est PEUT-ETRE respecté (j’en sais rien car 0° ELEV est > 7h30 dans tous les cas à cette saison)
(3) n’est clairement pas respecté (j’imagine que (2) ne le sera pas non plus en été du coup, si je reste sur cette syntaxe).

J’ai testé mes gardiens individuellement dans des scenarios bidons, ça me semble OK. Du coup, je suspecte un problème de combinaison ou de ( ), mais je ne vois pas.

Merci pour vos lumières!
Meraxys.

PS :
Voici le bloc code à toute fin utile :

( #[Maison][Modes Régime Semaine][Mode]# == « Travail bureau » OU #[Maison][Modes Régime Semaine][Mode]# == « Télétravail » )
ET
(
( (#[Information][Semaine-Weekend-Fériés][Week-End]# == « Non » ET #[Information][Semaine-Weekend-Fériés][Férié]# == « Non ») ET #time# >= 730 )
OU
( (#[Information][Semaine-Weekend-Fériés][Week-End]# == « Oui » OU #[Information][Semaine-Weekend-Fériés][Férié]# == « Oui ») ET #time# >= 930 )
)

Les modes c’est le plugin MODES
Les weekend/fériés c’est DOMOGEEK.

Bonjour,

En lisant votre expression, c’est toujours vrais en fait !

Vous écrivez :
SI : A || B = 1 (dans ce cas, si je comprendre bien, bah c’est toujours vrais, car vous êtes soit A soit B)
=> donc déjà, pour moi, ce bloc est inutile, sauf s’il existe d’autres états de ce mode
ET
SI : (C && D) && #time# >= 730 OU (C || D) && #time# >=930
donc : C && D quoi qu’il arrive, il y toujours l’un des deux qui est VRAIS = ce bloc est utile.

Je résume :
1 && (1/0 || 1/0) = c’est toujours vrais !
En simplifiant, dans le testeur d’expression cela doit toujours être de type :
1 && (1 || 0) = true
ou
1 && (0 || 1) = true

Enfin, c’est comme cela que je le vois.

@Fabrice
A et B sont deux modes possibles parmi plusieurs autres modes en effet (congés par exemple).

C = est-ce le weekend ?
D = est-ce un férié ?

C’est donc possible d’avoir C = D = 0 (en pleine semaine, un jour qui n’est ni le WE, ni un férié). Dans ce cas, j’y ajoute la condition qu’il soit >=7h30 du matin avant d’autoriser l’ouverture du volet.

A l’inverse, si c’est le weekend OU que c’est un férié, j’y ajoute la condition qu’il soit >=9h30 du matin avant d’autoriser l’ouverture du volet.

Alors du coup oui, en fonction de l’heure qu’il est réellement, la condition générale sera à un moment toujours vraie, à partir de 9h31 dans tous les cas par ex, et c’est bien normal puisque je veux qu’à un moment mon volet s’ouvre pendant ma semaine, peu importe le jour :smiley: A moins que vous ne vouliez exprimer autre chose ?

Je ne sais pas si j’attaque le problème du WE ou du férié sous le bon angle. La racine du prob c’est que je veux différer l’ouverture du volet.
De base j’ai 4 modes : un mode travail au bureau, un mode télétravail, un mode congés à la maison et un mode congés hors maison. Les deux modes ‹ travail › diffèrent car je gère mon chauffage différemment dans les deux modes.