C'est ici le noyau dur de la programmation.
Initier, si ce n'est déjà fait, les rules via Tools>Advanced Settings et cocher Rules dans Rules Settings
Puis faire un Submit
Ensuite cliquer sur un autre onglet pour faire apparaître l'onglet Rules
On voit ci-dessus un petit programme de test du servo pour en tester en http le fonctionnement avec un navigateur comme firefox
Une fois le test effectué, vider la feuille Rules Set 1 et copier le programme sur les trois autres feuilles de Rules.
Ne pas oublier de re-électionner l'onglet Rules ou la feuille Rules Set 1 avant de sélectionner Rules Set 1,2 ou 3 car le changement de feuilles est un peu 'buggy'.
// Rules Set 2 - PROGRAMME CHATIERE
On CHAT#A do
let,5,[var#4]
let,4,[var#3]
let,3,[var#2]
let,2,[CHAT#A]-[var#7]
// tarage auto
if [var#2]<400 and [var#2]>-400 and [var#6]<400 and [var#6]>-400 do
let,7,[var#7]+0.02*[CHAT#A]
let,7,[var#7]/1.02
endif
if [var#7]<-200 or [var#7]>200 do
tareChanA
end if
// Filtrage par poids
if [var#2]>7000 and [var#3]>7000 do
let,16,4
event,POM_DIAB
endif
if [var#2]>2700 and [var#2]<7000 and [var#3]>2700 and [var#3]<7000 do
let,16,3
event,CHAT_INCONNU
endif
if [var#2]>2000 and [var#2]<2700 and [var#3]>2000 and [var#3]<2700 do
let,16,2
event,POM_DIAB
endif
// RE-Ouverture par sécurité
if [var#2]<700 and [var#3]<700 and [var#4]<700 and [var#5]<700 do
event,LAISSE_ENTRER
endif
// debug
if [var#2]>50 or [var#3]>50 or [var#4]>50 or [var#5]>50 or [var#6]>50 or [var#4]<-50 do
logentry,type [var#16] verrou,[var#15] poidsA0s [var#2] poidsA1s [var#3] poidsA2s [var#4] poidsA3s [var#5] tare [var#7] CHAT_A [CHAT#A]
endif
// event,ENVOI_DAT_DEBUG
endon
Explications :
La première partie permet de mémoriser 4 secondes de mesures.
Pour des valeurs de mesure inférieures à 400 g on compense la dérive de tarage.
Le tarage automatique est un ajustement lent (environ 1 minute) qui, s'il se trouve en final supérieur à 200g, déclenche un tarage de base immédiat.
S'en suit le filtrage des trois gammes de poids.
Réouverture en cas de poids inférieur à 700 g pendant 4 secondes pour prévenir un éventuel bug ou commande http parasite.
Le Debug charge les données en Syslog (voir la fiche spécifique).
event,ENVOI_DAT_DEBUG envoie des données sur Domoticz pour la mise au point.
// Rules Set 3 - Actions
on POM_DIAB do
event,LAISSE_ENTRER
event,ENVOI_DATA
timerSet,2,300
endon
on CHAT_INCONNU do
event,VERROUILLAGE
event,ENVOI_DATA
timerSet,2,300
endon
on LAISSE_ENTRER do
if [var#15]=1
Servo,1,2,0
let,15,0 // statut servo ouvert
timerSet,1,3
endif
endon
on VERROUILLAGE do
if [var#15]=0
Servo,1,2,90
let,15,1 // statut servo ferme
timerSet,1,3
endif
endon
On Rules#Timer=1 do
gpio,2,1
//Servo,1,2,9000
endon
On Rules#Timer=2 do
let,16,0
event,ENVOI_DATA
endon
Explications :
A l'identification de POM ou DIAB, on ouvre avec le sous programme LAISSE-ENTRER qui actionne le servo du GPIO2.
L'envoi des données sur Domoticz est en cours d'affinage.
La ligne gpio,2,1 est là pour éteindre la led de l'ESP qui se trouve sur le même GPIO que le servo.
// Rules Set 4 - Envois sur Domoticz
on ENVOI_DATA do
let,1,[var#4]
let,10,[var#3]
SendToHTTP,192.168.0.105,8080,/json.htm?username=dG90bw==&password=bW9ucGFzcw==¶m=udevice&type=command&idx=35&nvalue=1&svalue=[var#1]
SendToHTTP,192.168.0.105,8080,/json.htm?username=dG90bw==&password=bW9ucGFzcw==¶m=udevice&type=command&idx=36&nvalue=1&svalue=[var#10]
SendToHTTP,192.168.0.105,8080,/json.htm?username=dG90bw==&password=bW9ucGFzcw==¶m=udevice&type=command&idx=37&nvalue=1&svalue=[var#16]
endon
on ENVOI_DAT_DEBUG do
SendToHTTP,192.168.0.105,8080,/json.htm?username=dG90bw==&password=bW9ucGFzcw==¶m=udevice&type=command&idx=42&nvalue=1&svalue=[var#15]
SendToHTTP,192.168.0.105,8080,/json.htm?username=dG90bw==&password=bW9ucGFzcw==¶m=udevice&type=command&idx=38&nvalue=1&svalue=[var#2]
SendToHTTP,192.168.0.105,8080,/json.htm?username=dG90bw==&password=bW9ucGFzcw==¶m=udevice&type=command&idx=39&nvalue=1&svalue=[var#9]
SendToHTTP,192.168.0.105,8080,/json.htm?username=dG90bw==&password=bW9ucGFzcw==¶m=udevice&type=command&idx=40&nvalue=1&svalue=[var#7]
SendToHTTP,192.168.0.105,8080,/json.htm?username=dG90bw==&password=bW9ucGFzcw==¶m=udevice&type=command&idx=41&nvalue=1&svalue=[CHAT#A]
endon
L'envoi vers Domo est réalisé via http pour gérer le mot de passe qui est encodé en 64 bits (ainsi que le user). Voir la doc :
exemple monpass donne bW9ucGFzcw==
Exemple d'encodeur :
http://www.utilities-online.info/base64/