[LUA] LowBat --> alerte mail ou plus si affinité

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

[LUA] LowBat --> alerte mail ou plus si affinité

Message par vil1driver »

Salut,

je poste ici un script qui va nous alerter d'aller changer les piles de nos modules
serte domoticz intègre déjà cette fonction mais perso je n'aime pas trop me faire réveiller tous les soirs à minuit
parce-qu’un module réclame une pile neuve :twisted:

alors voici le script qui va ne faire cette vérification que tous les dimanches midi

Code : Tout sélectionner

--[[

domoticz/scripts/lua/script_time_lowBatAlert.lua

ce script vérifie une fois par semaine (le dimanche à midi) l'état des piles de différents équipements
si le niveau est jugé insuffisant, un mail d'alerte est envoyé


--]]

-- chargement des modules
dofile("/home/pi/domoticz/scripts/lua/modules.lua")

local debug = false  -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir

local lowBat = 30	-- niveau de batterie en deçà duquel il y a déclenchement de l'alerte

local capteurs = {}

-- liste de modules à contrôler
capteurs['0']='bureau'
capteurs['1']='fuite deau'
capteurs['2']='salle serveur'
capteurs['3']='douche'
capteurs['4']='chambre'
capteurs['5']='piscine'
capteurs['6']='thomas'
capteurs['7']='salon'


commandArray = {}

if (jour == 'dimanche' and heure == '12:00') then
	for i, module in pairs(capteurs) do
		local capteur = jsonInfos(module)
		if (capteur.BatteryLevel >= lowBat) then
			log('Batterie '..module..' : '..capteur.BatteryLevel..'%',debug)
		else
			warn('Batterie low /!\\ '..module..' : '..capteur.BatteryLevel..'%')
			commandArray[tonumber(i)]={['SendEmail']='Battery Low#'..module..' (Level: Low)#'..admin}
		end	
	end
end

return commandArray
ce script utilise différentes fonctions que j'aime avoir dans un fichier séparé que j'ai nommé modules.lua (notamment utilisé dans speedUp)
ce fichier est chargé en début de script et évite d'avoir sans cesse à recopier les même fonctions.. ou d'aller modifier n scripts parce-que l'on a changé le port de domoticz etc.. et ça allège considérablement la lecture du script ce qui n'est pas non plus négligeable..
d'ailleurs tous les futurs scripts que je partagerai seront créés sur ce principe
pensez donc bien à créer ce fichier, sans quoi rien ne va fonctionner (voir ma signature)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

Re: LowBat --> alerte mail ou plus si affinité

Message par Doudy »

Hello,

J'ai une petite erreur dans l’exécution de ce script :

Code : Tout sélectionner

2020-01-21 10:44:00.891 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_lowBatAlert.lua:
/home/pi/domoticz/scripts/lua/script_time_lowBatAlert.lua:44: 
attempt to concatenate global 'admin' (a nil value)
Je ne sais pas d'ou vient "admin" :oops:
Une idée ?
Merci
;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: LowBat --> alerte mail ou plus si affinité

Message par vil1driver »

Salut,

admin est une variable contenant l'adresse mail (initialement dans modules.lua mais supprimée).
Indique ton mail à la place tout simplement
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: LowBat --> alerte mail ou plus si affinité

Message par vil1driver »

Good ?
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Répondre