Page 2 sur 4
Re: DZVENTS : capteur de pluie fait maison...
Publié : 09 sept. 2021, 12:46
par inter-rupteur
Salut Keros,
merci beaucoup pour ses informations !!
Je suis en train de finaliser mon script...
Inter-rupteur
Re: DZVENTS : capteur de pluie fait maison...
Publié : 09 sept. 2021, 13:37
par inter-rupteur
Ca y est, le script est enfin terminé. Il peut-être certainement amélioré mais il tourne... Un grand merci à
Keros pour son aide qui a été précieuse...
Si tu vois qq chose...
Code : Tout sélectionner
return {
active = true,
on =
{
timer = {'every 1 minutes'},
devices = {'MD-WATER-01'},
},
data = { valon = { history = true, maxItems = 20 }},
execute = function(domoticz, stateon)
--------------------------------------------------------------------------------
---------------------------------- Variables -----------------------------------
--------------------------------------------------------------------------------
local nowdate = domoticz.time.rawDate
local valhistorylat = domoticz.data.valon.getLatest()
local hisdatelat = valhistorylat.time.rawDate
local chckbasehour = domoticz.time.dateToDate('09/09/2021 21:00:00','dd/mm/yyyy hh:MM:ss', 'hh:MM:ss')
local nowhour = domoticz.time.rawTime
print('-----------------------------------------------')
--print('last date history : ' .. hisdatelat)
--print('date now : ' .. nowdate)
--print('heure script : ' ..chckbasehour)
--print('Heure now : ' .. nowhour)
--print('value history last : ' .. valhistorylat.data)
--------------------------------------------------------------------------------
-------------------------------- Fin Variables ---------------------------------
--------------------------------------------------------------------------------
if (stateon.state == 'On') then
domoticz.data.valon.add(stateon.state)
domoticz.log('La value "On" a été ajouté dans l\'history du device !')
domoticz.log('Le : ' .. nowdate)
domoticz.email('Capteur de pluie : MD-WATER-01', 'Date : ' .. nowdate .. '<br>Il est en train de pleuvoir... <br>MD-WATER-01 a envoyé la value "On".', 'mail@mail.com')
end
--------------------------------------------------------------------------------
if (nowhour == chckbasehour) then
if (valhistorylat.data == "On") and (hisdatelat == nowdate) then
domoticz.log('La pluie est tombée aujourd\'hui, MD-WATER-01 a été actif !')
domoticz.email('Arrosage 1 (low) OFF', 'Date : ' .. nowdate .. '<br>Heure : ' .. nowhour .. '<br>Journée de pluie...', 'mail@mail.com')
else
domoticz.log('Il n\'a pas plu aujourd\'hui, pas de déclenchement du module MD-WATER-01 !')
domoticz.email('Start Arrosage 1 (low)', 'Date : ' .. nowdate .. '<br>Heure : ' .. nowhour .. '<br>Start Electrovanne low a 21 heures.', 'mail@mail.com')
--domoticz.devices('Electrovanne - LOW (ARO-01)').switchOn().forMin(3)
end
end
print('-----------------------------------------------')
end
}
Juste pour info et résumé du process :
J'ai deux électrovannes (fait maison) qui arrosent des plantes/fleurs :
- Electrovanne LOW => arrose des petites plantes/fleurs sur 3 min
- Electrovanne HIGH => arrose des grandes plantes/fleurs sur 5 min
J'ai un capteur de fuite d'eau à l'origine, transformé en capteur de pluie (fait maison également). Avant, mon arrosage ne s'occupait pas du temps (qu'il fasse soleil ou qu'il pleuve..). Au pire, je devais l'arrêter si il pleuvait (et encore, quand j'y pensais.. pas top..). Grâce à ce capteur et ce script, il gère tout seul l'arrosage maintenant...
Merci
Inter-Rupteur
Re: DZVENTS : capteur de pluie fait maison...
Publié : 09 sept. 2021, 19:00
par Keros
Bravo !!
Concernant la partie analyse, DzVents permet de gérer les timers très facilement en écrivant par exemple 'at 21h00'. Regarde mon guide, il y a un exemple avec "Every hour" : il y a une condition (.isTimer) qui vérifie que le trigger est le timer.
Re: DZVENTS : capteur de pluie fait maison...
Publié : 09 sept. 2021, 20:24
par Neutrino
En tant que grand fan de bidouillages et autre détournements, je suis curieux de voir tes capteurs/actionneurs.
Des photos ?
Re: DZVENTS : capteur de pluie fait maison...
Publié : 09 sept. 2021, 22:22
par inter-rupteur
@Keros, Oui j'ai lu et relue ton précieux sésame et vu la condition (.isTimer), je vais la tester en l'interfaçant avec le script...
Merci à toi...
Inter-rupteur
Yep Neutrino,
je vais te faire ca demain, des photos de ce que j'ai mis en place..
Inter-Rupteur
Re: DZVENTS : capteur de pluie fait maison...
Publié : 10 sept. 2021, 09:47
par inter-rupteur
Le système mis en place :

- 1.png (842.86 Kio) Consulté 2033 fois
Capteur sous ESPeasy
==>
Aliexpress

- 2.png (1.77 Mio) Consulté 2033 fois
2 Sonoff (sous ESPeasy) pour les électrovannes
==>
Aliexpress

- 3.png (1.64 Mio) Consulté 2033 fois
Electrovannes en 220v, en laiton.
Nourrice en laiton également.
==>
Aliexpress

- 4.png (1.61 Mio) Consulté 2033 fois
Les plastiques transparents, c'est pour les protéger de la pluie...
Inter-rupteur
Re: DZVENTS : Electrovanne + capteur de pluie fait maison...
Publié : 10 sept. 2021, 16:03
par inter-rupteur
J'ai apporté un lot de modifications au script :
Code : Tout sélectionner
return {
active = true,
on =
{
timer = {'at 21:00'},
devices = {'MD-WATER-01'},
},
data = { valon = { history = true, maxItems = 20 }},
execute = function(domoticz, stateon)
-------------------------------------------------------------------------------------------------------
------- Check si l'history est déjà rempli au moins avec une valeur (off : valeur par defaut) ---------
------- => sinon erreur d'index "NIL value" car l'history persistent data est vide ---------------
if domoticz.data.valon.getOldest() == nil then
domoticz.data.valon.add('Off')
end
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
---------------------------------- Variables ----------------------------------------------------------
-------------------------------------------------------------------------------------------------------
local nowdate = domoticz.time.rawDate
local valhistorylat = domoticz.data.valon.getLatest()
local hisdatelat = valhistorylat.time.rawDate
--local chckbasehour = domoticz.time.dateToDate('10/09/2021 15:17:00','dd/mm/yyyy hh:MM:ss', 'hh:MM:ss')
local nowhour = domoticz.time.rawTime
print('-----------------------------------------------')
print('last date history : ' .. hisdatelat)
print('date now : ' .. nowdate)
print('heure script : ' ..chckbasehour)
print('Heure now : ' .. nowhour)
print('value history last : ' .. valhistorylat.data)
-------------------------------------------------------------------------------------------------------
-------------------------------- Fin Variables --------------------------------------------------------
-------------------------------------------------------------------------------------------------------
if (stateon.state == 'On') then
domoticz.data.valon.add(stateon.state)
domoticz.log('La value "On" a été ajouté dans l\'history du device !')
domoticz.log('Le : ' .. nowdate)
domoticz.email('Capteur de pluie : MD-WATER-01', 'Date : ' .. nowdate .. '<br>Il est en train de pleuvoir... <br>MD-WATER-01 a envoyé la value "On".', 'jhon.mek.ouille@gmail.com')
end
-------------------------------------------------------------------------------------------------------
if (stateon.isTimer) then
if (valhistorylat.data == "On") and (hisdatelat == nowdate) then
domoticz.log('La pluie est tombée aujourd\'hui, MD-WATER-01 a été actif !')
domoticz.email('Arrosage 1 (low) OFF - Pluie', 'Date : ' .. nowdate .. '<br>Heure : ' .. nowhour .. '<br>Journée de pluie...', 'jhon.mek.ouille@gmail.com')
domoticz.email('Arrosage 2 (high) OFF - Pluie', 'Date : ' .. nowdate .. '<br>Heure : ' .. nowhour .. '<br>Journée de pluie...', 'jhon.mek.ouille@gmail.com')
--domoticz.data.valon.reset()
else
if (domoticz.devices('20.Electrovanne - LOW (ARO-01)').state=='Off') then
domoticz.log('(ARO-01 - Il n\'a pas plu aujourd\'hui, pas de déclenchement du module MD-WATER-01 !')
domoticz.email('Start Arrosage 1 (low)', 'Date : ' .. nowdate .. '<br>Heure : ' .. nowhour .. '<br>Start Electrovanne low a 21:00 heures.', 'jhon.mek.ouille@gmail.com')
domoticz.devices('20.Electrovanne - LOW (ARO-01)').switchOn().forMin(3)
end
if (domoticz.devices('21.Electrovanne - HIGH (ARO-02)').state=='Off') then
domoticz.log('ARO-02 - Il n\'a pas plu aujourd\'hui, pas de déclenchement du module MD-WATER-01 !')
domoticz.email('Start Arrosage 2 (high)', 'Date : ' .. nowdate .. '<br>Heure : ' .. nowhour .. '<br>Start Electrovanne high a 21:00 heures.', 'jhon.mek.ouille@gmail.com')
domoticz.devices('21.Electrovanne - HIGH (ARO-02)').switchOn().forMin(5)
end
end
end
print('-----------------------------------------------')
end
}
Inter-Rupteur
Re: DZVENTS : Electrovanne + capteur de pluie fait maison...
Publié : 10 sept. 2021, 22:23
par Neutrino
Beau boulot ! Bravo

Re: DZVENTS : Electrovanne + capteur de pluie fait maison...
Publié : 12 sept. 2021, 09:33
par inter-rupteur
Merci Neutrino !
Nouvelle correction de script :
Code : Tout sélectionner
local OnTimer1 = 'at 21:00'
local OnTimer2 = 'every 3 minutes'
return {
active = true,
on =
{
timer = {OnTimer1,OnTimer2},
devices = {'MD-WATER-01'},
},
data = { valon = { history = true, maxItems = 20 }},
execute = function(domoticz, stateon)
-------------------------------------------------------------------------------------------------------
------- Check si l'history est déjà rempli au moins avec une valeur (off : valeur par defaut) ---------
--------- => sinon erreur d'index "NIL value" car l'history persistent data est vide ---------------
if domoticz.data.valon.getOldest() == nil then
domoticz.data.valon.add('Off')
end
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
---------------------------------- Variables ----------------------------------------------------------
-------------------------------------------------------------------------------------------------------
--local chckbasehour = domoticz.time.dateToDate('10/09/2021 15:17:00','dd/mm/yyyy hh:MM:ss', 'hh:MM:ss')
local emailNotification = 'jhon.mek.ouille@gmail.com'
local nowdate = domoticz.time.rawDate
local nowhour = domoticz.time.rawTime
local valhistorylat = domoticz.data.valon.getLatest()
local hisdatelat = valhistorylat.time.rawDate
local hishourlat = valhistorylat.time.rawTime
-------------------------------------------------------------------------------------------------------
-------------------------------- Fin Variables --------------------------------------------------------
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
------------------------------------ Print ------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
if domoticz.time.matchesRule(OnTimer2) then
print('-----------------------------------------------')
--print('hour now : ' ..chckbasehour)
print('MD-WATER-01')
print('Last value history : ' .. valhistorylat.data)
print('Last date history : ' .. hisdatelat)
print('Last hour history : ' .. hishourlat)
print('******************************')
print('Nous sommes le : ' .. nowdate)
print('Il est : ' .. nowhour)
print('-----------------------------------------------')
end
-------------------------------------------------------------------------------------------------------
--------------------------------- Fin Print -----------------------------------------------------------
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
----------------------------------- Code --------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
if (stateon.state == 'On') then
domoticz.data.valon.add(stateon.state)
domoticz.log('La value "On" a été ajouté dans l\'history du device !')
domoticz.log('Le : ' .. nowdate)
domoticz.email('Pluie en cours : MD-WATER-01 actif', 'Date : ' .. nowdate .. '<br>Heure : ' .. nowhour .. '<br>Il est en train de pleuvoir... <br>MD-WATER-01 a envoyé la value "On".', emailNotification)
else
domoticz.log('Pas de nouvelle value "On" pour le moment.')
end
-------------------------------------------------------------------------------------------------------
if domoticz.time.matchesRule(OnTimer1) then
if (valhistorylat.data == "On") and (hisdatelat == nowdate) then
domoticz.log('La pluie est tombée aujourd\'hui, MD-WATER-01 a été actif !')
domoticz.email('[ARO-01] - OFF cause Pluie', 'Date : ' .. nowdate .. '<br>Heure : ' .. nowhour .. '<br>Journée de pluie...', emailNotification)
domoticz.email('[ARO-02] - OFF cause Pluie', 'Date : ' .. nowdate .. '<br>Heure : ' .. nowhour .. '<br>Journée de pluie...', emailNotification)
--domoticz.data.valon.reset()
else
if (domoticz.devices('20.Electrovanne - LOW (ARO-01)').state=='Off') then
domoticz.log('[MD-WATER-01 => ARO-01] - Pas de pluie aujourd\'hui : déclenchement de l\'arrosage [ARO-01] - LOW.')
domoticz.email('Start Arrosage 1 (low)', 'Date : ' .. nowdate .. '<br>Heure : ' .. nowhour .. '<br>Start Electrovanne low a 21:00 heures.', emailNotification)
domoticz.devices('20.Electrovanne - LOW (ARO-01)').switchOn().forMin(3)
end
if (domoticz.devices('21.Electrovanne - HIGH (ARO-02)').state=='Off') then
domoticz.log('[MD-WATER-01 => ARO-02] - Pas de pluie aujourd\'hui : déclenchement de l\'arrosage [ARO-02] - HIGH.')
domoticz.email('Start Arrosage 2 (high)', 'Date : ' .. nowdate .. '<br>Heure : ' .. nowhour .. '<br>Start Electrovanne high a 21:00 heures.', emailNotification)
domoticz.devices('21.Electrovanne - HIGH (ARO-02)').switchOn().forMin(5)
end
end
end
print('-----------------------------------------------')
end
}
-------------------------------------------------------------------------------------------------------
----------------------------------- Fin Code ----------------------------------------------------------
-------------------------------------------------------------------------------------------------------
Re: DZVENTS : Electrovanne + capteur de pluie fait maison...
Publié : 12 sept. 2021, 09:55
par Keros
Tu peux simplifier ton script et profiter des fonctions DzVents :
J'ai l'habitude de nommer le trigger des scripts
item (au lieu de stateon) car item correspond au déclencheur qui peut être un device, un timer, ect... et surtout tu peux utiliser le même nom entre tous tes scripts.
Ensuite, avec la condition if item.trigger == 'xxxxx' then tu peux exécuter des actions en fonction du déclencheur.
Dans ton cas :
Code : Tout sélectionner
execute = function(domoticz, item)
if item.trigger == 'OnTimer1' then
elseif item.trigger == 'OnTimer2' then
elseif item.trigger == 'MD-WATER-01' then
end
end