Bonjour à tous,
je vous expose mon soucis.
j'ai utilisé un script lua dans les events de domoticz pour m'envoyer un email avec vun rapport hebdomadaire de l'état des batteries de mes devices domoticz.
Ca fonctionne trop bien, ca me spam ma boite mail pendant la minute concernée et ca monte jusqu'à 132 mails par rapport.
comment pourrais-je limiter la casse? j'ai essayé de mettre une tempo avant la ligne return commandArray avec wait() contenant les secondes d'attente mais il me renvoi attempt to call a nil value (global 'wait').
script lua domoticz
Re: script lua domoticz
Bonjour dou_dou_69 et bienvenu sur le forum
Tu peux nous partager ton script et nous indiquer quel trigger tu as mis ?
Tu peux nous partager ton script et nous indiquer quel trigger tu as mis ?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
-
dou_dou_69
- Messages : 7
- Inscription : 03 sept. 2022, 18:22
Re: script lua domoticz
Bonjour à tous,
j'utilise le scripts de framboise comme base, rendons à césar ce qui est a césar.
le voici :
pour le trigger je suppose que c'est la condition de déclechement.
pour moi c'est jour + heure ou niveau de batterie + heure
j'utilise le scripts de framboise comme base, rendons à césar ce qui est a césar.
le voici :
Code : Tout sélectionner
-- User configuration
BatteryThreshold = 20 -- niveau mini à partir duquel nous souhaitons recevoir un mail.
WeeklySummary = true -- true ou false, suivant que lon souhaite ou pas avoir un récapitulatif de l'état des batteries une fois par semaine.
SummaryDay = 1 --si "WeeklySummary = true", quel jour sera envoyé le récapitulatif (1 = dimanche)
EmailTo = "mon email"
ReportHour = 08 -- Heure de déclenchement de la vérification.
ReportMinute = 30 -- Minute de déclenchement de la vérification.
ident = "mon ident de boite mail" --en base 64 solution longue à trouver
pass = "mon pass de boite mail" -- idem en base 64
Domoticz = -- Protocole et Adresse de Domoticz (par défaut, http://localhost")
DomoticzPort = -- Port de connexion à Domoticz (par défaut, 8080")
Sujet = '' -- // Ne pas modifier, Initialisation de la variable
Message = '' -- // Ne pas modifier, Initialisation de la variable
EnvoiMail = false -- // Ne pas modifier, Initialisation de la variable
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- linux
--json = (loadfile "C:\\Domoticz\\scripts\\lua\\json.lua")() -- windows
commandArray = {}
time = os.date("*t")
-- Weekly Device Battery Summary
if WeeklySummary == true and time.wday == SummaryDay and time.hour == ReportHour and time.min == ReportMinute then
-- Get a list of all devices
handle = io.popen("curl 'http://" .. Domoticz .. ":" .. DomoticzPort .. "/json.htm?username=" .. ident .. "=&password=" .. pass .. "=&type=devices&order=name'") -- j'ai trouver tant bien que mal comment intégrer mon ident et password à la connexion, si ca peut aider ceux qui en ont besoin.
devicesJson = handle:read('*all')
handle:close()
devices = json:decode(devicesJson)
BattToReplace = false
Sujet = 'Info Domoticz : Niveau des Batteries'
for i,device in ipairs(devices.result) do
if device.BatteryLevel < 100 then --and device.BatteryLevel ~=0 and device.Used == 1 then
Message = Message .. device.Name .. ' : Batteries = ' .. device.BatteryLevel .. '%<br>'
print(device.Name .. ' : Batteries = ' .. device.BatteryLevel .. '%')
EnvoiMail = true
end
end
-- Daily Low Battery Report
elseif time.hour == ReportHour and time.min == ReportMinute then
-- Get a list of all devices
handle = io.popen("curl 'http://" .. Domoticz .. ":" .. DomoticzPort .. "/json.htm?username=" .. ident .. "=&password=" .. pass .. "=&type=devices&order=name'")
devicesJson = handle:read('*all')
handle:close()
devices = json:decode(devicesJson)
BattToReplace = false
Sujet = 'Alerte Domoticz : Niveau Batteries faible'
for i,device in ipairs(devices.result) do
if device.BatteryLevel < BatteryThreshold then --and device.BatteryLevel~=0 and device.Used == 1 then
Message = Message .. device.Name .. ' : Batteries = ' .. device.BatteryLevel .. '%<br>'
print(device.Name .. ' : Batteries = ' .. device.BatteryLevel .. '%')
EnvoiMail = true
end
end
end
if EnvoiMail == true then
commandArray['SendEmail']=Sujet .. '#' .. Message .. '#' .. EmailTo
end
return commandArraypour moi c'est jour + heure ou niveau de batterie + heure
Dernière modification par Keros le 04 sept. 2022, 11:32, modifié 1 fois.
Raison : Ajout des balises code pour le script
Raison : Ajout des balises code pour le script
Re: script lua domoticz
Regarde dans ma présentation (lien en signature), j'ai écrit des petits guides et dans l'un deux, je parle des triggers. Documente-toi dessus pour comprendre le principe de déclenchement des scripts. Je pense que ton souci vient de là 
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
-
dou_dou_69
- Messages : 7
- Inscription : 03 sept. 2022, 18:22
Re: script lua domoticz
le trigger fonctionne vu que je reçois des mail mail il faudrait arrêter au 1er envoie valide lol