Je viens de finaliser l'installation matérielle de mon arrosage :
- 9 électrovannes alimentant 9 zones différentes (aussi bien du gazon que du "goutte à goutte"
- un raspberry avec Domoticz
- une carte relais, 16 entrées.
L'instal de ma carte relais, pas de pb. J'ai bien dans mon interface 16 interrupteurs qui ouvrent/ferment les 16 relais de ma carte.
Je viens de créer un interrupteur virtuel (Dummy) nommé 'Programmateur' qui lors de son changement d'état, permet d'alimenter ou non un groupe dans lequel se trouve mes 9 relais d'arrosage.
L'utilisation de cet interrupteur me permet d'activer ou de désactiver l'arrosage, par exemple, si je m'aperçois qu'il pleut, je passe l'interrupteur sur off et le programme ne lance pas. Dans un deuxième temps, j'intègrerai une variable pluie ou humidité mais je n'en suis pas encore là
Voilà ce que je voudrai, autant vous dire que j'ai rapidement abandonné l'idée de faire ça en blockly et que je me suis lancé dans le DZevents... sauf que je débute et ne connais rien en programmation.
Bref au grès des forums et du wiki, j'ai fait le script suivant (pour le moment, avec deux interrupteurs virtuels "Test" et "Test 2", qui me permettent de teste et symboliser les vannes) :
Code : Tout sélectionner
-- Programmation Arrosage
-- Conçu par Sébastien ANDEVERT - sebastien@uppo.fr
-- Lancement du script
return {
-- Etat du script
active = true, -- à basculer à 'false' pour désctiver le lancement de ce script
-- condition de lancement : état sur 'on' des devices nommées dans la liste suivante
on = {
devices = {
'Programmateur', -- nom du premier device
-- 'abc*', -- à utiliser si vous souhaitez faire démarrer tous les devices dont le nom commence par 'abc'
-- 258, -- id du device à activer
},
--[[timer = {
-- timer triggers.. if one matches with the current time then the script is executed
'at 13:45',
'at 18:37',
'every 3 minutes on mon,tue,fri at 16:00-15:00'
}]]--
},
-- on nomme la fonction
execute = function(domoticz, Arrosage)
-- on précise la condition, ici la fonction arrosage doit etre à on pour se lancer
if (Arrosage.state == 'On') then
domoticz.devices('Test').switchOn().forMin(1)-- on défini le device à allumer et pendant combien de temps
if (device.name == 'Test' and device.lastUpdate.minutesAgo > 1) then
--je vérifie si le device precedent est sur off depuis mini une minute
domoticz.devices('Test 2').switchOn().forMin(1) -- je lance alors l'arrosage Test 2 pour une minute
end
end
end
}
Voilà les évolutions que je souhaiterai :
- j'ai 9 zones, dont 2 avec du goutte à goutte (dont des temps d'arrosage différents)
- grâce à des variables utilisateurs, je voudrai définir les temps d'arrosage de chacune des zones => comment appeler cette variable dans mon script dans 'forMin(nomdemavariable)' ?
- je vais arroser tous les jours, une fois par jour, sauf les GàG qui seront arrosés deux fois => quelle est la solution la plus propre pour l'intégrer dans mon script ?
- Question bonus : Je lance mon arrosage avec mon fameux bouton "Programmateur". L'arrosage se lance, au bout de la 3° vannes, je m'aperçois qu'il pleut... si j'éteins mon "Programmateur", le script va t'il continuer ?
Enfin, je ne suis pas sur de la dernière partie de mon script. Je ne peux pas lancer 2 zones à la fois (la pompe va y rester, sinon !). Comment, en langage de programmation, je peux dire mon : "un tu lance Test. Quand test est éteint, tu enchaine sur Test 2." ? Le "lastUpdate" semble ne pas fonctionner...
Merci beaucoup à tous !