Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Crépusculaire logiciel
#1
Question 
Pour simuler un détecteur crépusculaire, il suffit d'une petite règle en linknx qui pilote une variable.
Les autres règles peuvent modifier leur comportement en fonction de cela.

<rule id="poormanlightdetector" init="true">
<condition type="timer" trigger="true">
<at type="sunset" offset="-30m"/>
<until type="sunrise" offset="-31m"/>
</condition>
<actionlist type="if-true">
<action type="script">
print("Detecteur -> nuit")
set("BesoinLumiere","on")
</action>
</actionlist>
<actionlist type="if-false">
<action type="script">
print("Detecteur -> jour")
set("BesoinLumiere","off")
</action>
</actionlist>
</rule>

Petit souci, cette règle n'est pas évaluée (du tout) au démarrage de linknx, mais est mise en attente d'évaluation pour le prochain lever ou coucher de soleil. Entretemps, pas de valeur correcte pour la variable et comportements imprévus des éclairages...Madame n'aime pas...

Les actions sont en Lua pour garder une trace des évaluations des règles via le print.

Apparemment, et contrairement à ce qui dit sur le wiki, linknx ne tient pas compte de l'attribut "init" des règles.

Avez-vous une idée pour résoudre ceci ?

Merci d'avance !
Répondre
#2
Suite de l'histoire pour ceux que cela intéresseHuh

Linknx n'évalue pas les rules au démarrage et ne tient pas compte de leurs attributs inits.
Elles sont associées selon le cas à un échéancier ou au surveillant du bus et restent donc en attente d'être déclenchées.

Pas de souci, il suffit de créer une rule d'initialisation pour faire le boulot.
Rule récurrente mais qui se saborde après la première utilisation, dans le genre de ceci.

<rule id="onlyonce">
<condition type="timer" trigger="true">
<every>60</every>
</condition>
<actionlist>
<action type="script">
print("LINKNX restarted")
print("starting execution of rule onlyonce")
</action>

<action type=...>
... actions d'initialisation à mettre ici...
</action>

<action type="set-rule-active" active="no" rule-id="onlyonce" />
<action type="script">
print("ending execution of rule onlyonce")
</action>
</actionlist>
</rule>

Pratique pour envoyer un message mail/sms au (re)démarrage du système ou forcer des valeurs initiales.
Ok pour executer les actions vraies ou fausses d'une rule mais pas moyen de demander l'évaluation de la rule et des actions correspondantes.

Une solution est modifier le code de Linknx et de créer la nouvelle fonction lua tryrule pour permettre cela.

La rule définitive est alors comme ceci:

<rule id="onlyonce">
<condition type="timer" trigger="true">
<every>60</every>
</condition>
<actionlist>
<action type="script">
print("LINKNX restarted")
print("starting execution of rule onlyonce")
print("tried rule poormanlightdetector: ",tryrule("poormanlightdetector"))
print("Rule disactivated succes ?:",setruleactive("onlyonce",false))
print("ending execution of rule onlyonce")
</action>
</actionlist>
</rule>

Et voilà, un crépusculaire logiciel (et gratuit) sans souci de démarrage.
Répondre
#3
A quoi peut bien servir un détecteur crépusculaire ?

A permettre des fonctionnalités différentes selon qu'il fasse jour ou nuit, pardi !

Exemple réel:

L'éclairage du palier/hall de nuit est temporisé, comme une cage d'escalier, avec préavis et possibilité d'extension. Pas de détecteur de présence/passage. Rien de bien spécial donc..

Le WC sur ce palier est une pièce sans fenêtre, donc on allume/éteint dans cette pièce à chaque utilisation.
Une solution à extinction temporisée a été abandonnée, peu pratique car non adaptée au temps variable d'utilisation de cette pièce.

Par contre, sans rajouter de matériel, on peut faire un peu mieux..
Si il fait nuit, l'extinction de la lumière du WC enclenche ou prolonge la minuterie de l'éclairage du palier, de quoi retourner à la chambre sans tâtonner pour trouver l'interrupteur du palier ni trébucher dans le noir...
Répondre
#4
Salut,

C'est ce genre d'explications / astuces / usages de la domotique avec du KNX que j'adore lire sur ce forum !

merci de partager Wink

Vincent
Répondre


Atteindre :


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