09/05/2014, 17:10:39
Suite de l'histoire pour ceux que cela intéresse
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.
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.