Introduction
Plusieurs modules utilisent des règles de gestion sous forme d'une chaine de caractères (exemple : [I2="Not available"][ON][OFF]). Ces règles de gestion servent à déclencher des évènements Homeseer, tout en gardant la possibilité de les faire évoluer simplement. Par exemple, la règle ci-dessus signifie : "Si I2 = Not available Alors on renvoit ON, sinon on renvoit OFF".
Structure des règles
Une règle peut avoir la structure [si_expression][alors] ou la structure [si_expression][alors][sinon]. Lorsque l'expression "si_expression" est vrai, l'expression "alors" est calculée et retournée comme résultat. Si "si_expression" est faux, l'expression sinon est calculée et retournée comme résultat.
Bien sur, on peut cumuler les expressions pour gérer des règles complexes [expression1][alors1] | [expression2][alors2][sinon2]. Dans ce cas, si "expression1" est faux, le "|" est interprété comme un "ou" et le module va voir si "expression2" est vrai. Si "expression1" est vrai, le système calcule "alors1" et s'arrête en retournant la valeur de "alors1". Simple non !
On peut aussi faire [expression1] & [expression2][alors][sinon]. Dans ce cas, le "&" est vu comme un "et", il faut que "expression1" et "expression2" soit vrai pour retourner la valeur "alors" ...
Opérateurs possibles
Les opérateurs basiques sont possibles [I5=ON] ou [T1>10] ou [I2="Not available"]. Mais, il y a aussi des opérateurs complexes:
* [LASTCHANGE;F7,F8;D;1] regarde si F7 et F8 ont changé depuis 1 jour (D=Jour). Si F7 et F8 n'ont pas changé depuis plus d'un jour, l'expression retourne vrai. J'utilise ce type de règle pour vérifier si les piles des MS13 sont à remplacer.
* [CONTAINS;I1;Averses] retourne vrai si la chaine "Averse" est trouvée dans le device I1. Cet opérateur est utile pour programmer des évènements en fonction des valeurs de la météo.
* [EXECEVT;10;Mon event;Done] retourne "Done" et lance l'évènement Homeseer s'appelant "Mon event" dans les 10 secondes. Ce type d'opérateur est surtout utilisé dans les "alors".
* [EXECX10;X1,X2;ON;;;] retourne "ON" et lance un ordre x10 "On" vers X1 et X2. Ce type d'opérateur est surtout utilisé dans les "alors".
* [EXTRACTFROMTO;Vent:</font></td><td><font size=-1>;km/h] retourne la chaine de caractères qui se trouve entre "Vent:</font></td><td><font size=-1>" et "km/h". Ce type d'opérateur est utilisé pour extraire des données depuis une page web ou un fichier.
* [SPLIT;/;2] retourne la seconde chaine de caractères après que l'on ait découpé la chaine initiale pour chaque "/".
Depuis le framework 4.3.0, il est aussi possible d'utiliser les 3 propriétés suivantes ("A12∗∗STATUS" ou "A12∗∗STRING" ou "A12∗∗VALUE"). Vous avez réclamé cette évolution, elle vous permettra de mieux monitorer vos devices ACRF. Exemple :
* [A12∗∗STRING<>Alert] Regarde si A12 = "Alert". Cet opérateur est très utile pour récupérer les infos d'un DS10 ou d'un MS13.
Quelques exemples
Si vous voulez des exemples, il vous faut regarder les fichiers dev_xxx.ini du module WATCH.DOG, mais aussi du module GET.METEO.FROM.YAHOO.
Si on crée un de device A1 avec la règle [C5=ON][R.A.S.]|[C5=OFF]&[T2>30][Il faudrait allumer le récupérateur de chaleur][R.A.S.]. A1 prendra la valeur R.A.S si C5=ON. Si C5=OFF, et que T2 est plus grand que 30°, alors un message disant qu'il faut allumer le récupérateur de chaleur est émis.
Si on crée un device A2 avec la règle suivante : [Z2=Booted Automatically][R.A.S.]|[Z2=Booted Manually][PC Black vient de redémarrer manuellement !][R.A.S.] . Si le PC a rebooté automatiquement, A2 prendra R.A.S. Si le PC a rebooté manuellement, un message "PC Black vient de redémarrer manuellement !" est émis par mail ou SMS selon la gravité que vous donnez.
Si on crée un device A3 avec la règle suivante : [I5=ON][R.A.S.]|[I5=OFF]&[LASTCHANGE;F3,F4;D;1][Il ya des Piles à changer][R.A.S.]. A3 sera égal à R.A.S si I5=ON (I5=On signifie que je suis en vacances hors de chez moi). Si I5=OFF, et que F3/F4 n'a pas bougé depuis plus d'un jour (F3 et F4, c'est un de mes MS13). Dans ce cas A3 sera égal à " Il ya des Piles à changer", car je considère que ce MS13 doit changer d'état au moins une fois par jour ...

















