Page 1 sur 2
Vider le log d'un dispositif TEXT
Publié : 27 déc. 2018, 16:26
par e111111
Bonjour,
j'ai un dispositif TEXT qui enregistre des strings suivant les situations entre toutes les 5mn et tous les 1/4 d'heure.
Ce dispositif génère donc une énorme quantité de logs, qui ne me sont pas utiles passé un certain temps.
Comment vider les logs de ce dispositif et uniquement celui là automatiquement à l'aide d'un script ?
Merci d'avance pour votre aide.
Re: Vider le log d'un dispositif TEXT
Publié : 28 déc. 2018, 21:46
par e111111
Bon,
après pas mal de galères j'ai fini par trouver, reste plus qu'à exécuter le script tous les X jours ...
Je mets le script ici, si ça peut servir à quelqu'un :
Code : Tout sélectionner
commandArray = {}
curl = '/usr/bin/curl '
json = (loadfile "/volume1/@appstore/domoticz/var/scripts/lua/JSON.lua")()
domoticzIP = '192.168.1.44'
domoticzPORT = '8084'
domoticzURL = 'http://'..domoticzIP..':'..domoticzPORT
-- Delete datas of device log
-- >> OK en ligne d'adresse navigateur >> http://192.168.1.44:8084/json.htm?type=command¶m=clearlightlog&idx=48
os.execute(curl ..'"'.. domoticzURL ..'/json.htm?type=command¶m=clearlightlog&idx=48" ')
print(' ***** Delete des logs du device text XXXXXXXXXX ***** ')
return commandArray
Re: Vider le log d'un dispositif TEXT
Publié : 29 déc. 2018, 19:02
par vil1driver
Salut,
Merci je prends

Re: Vider le log d'un dispositif TEXT
Publié : 29 déc. 2018, 19:37
par e111111
Salut Vil1driver,
Je pioche dans tes scripts sur ce forum depuis mes débuts en domotique, et je suis très honoré
que ma modeste contribution puisse t'intéresser
Par contre, tu vas peut-être pouvoir m'aider, je coince pour le déclencher tous les X jours,
je suis parti d'un dispositif calendrier et ça marche,
mais j'aurais préféré que cela soit direct dans le code LUA.
Re: Vider le log d'un dispositif TEXT
Publié : 29 déc. 2018, 23:37
par thier
Merci, je prends aussi.
Transformé en fonction
Code : Tout sélectionner
function deleteLogtext(device)
os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=command¶m=clearlightlog&idx='..otherdevices_idx[device]..'" &')
log('Effacement de tous les logs du device text '..device,debug)
end
Re: Vider le log d'un dispositif TEXT
Publié : 30 déc. 2018, 15:15
par denis_brasseur
e111111 a écrit : 29 déc. 2018, 19:37
Salut Vil1driver,
Je pioche dans tes scripts sur ce forum depuis mes débuts en domotique, et je suis très honoré
que ma modeste contribution puisse t'intéresser
Par contre, tu vas peut-être pouvoir m'aider, je coince pour le déclencher tous les X jours,
je suis parti d'un dispositif calendrier et ça marche,
mais j'aurais préféré que cela soit direct dans le code LUA.
Tu peux faire quelque chose comme cela, c'et la méthode que j'utilise pour rebooter mon modem tous les X jours.
C'est complètement inspiré des codes de Vil1driver
Code : Tout sélectionner
-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/modules.lua')
local debugging = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local my_variable = "my_variable" --nom de la variable
t1 = os.time()
-- Get time/date of last update
s = uservariables[my_variable]
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
-- Difference between current time and last update on my_variable
difference = (os.difftime (t1, t2)) --resultat en secondes
commandArray = {}
--lancement tous les 3 jours
--1 jour = 86 400 s
if (time.min==10) then --toutes les heures, à xxh10
if(uservariables[my_variable] == nil) then -- Création de la variable car elle n'existe pas
voir_les_logs("--- --- --- La Variable " .. my_variable .." n'existe pas --- --- --- ",debugging)
voir_les_logs("--- --- --- Création de la Variable " .. my_variable .." manquante --- --- --- ",debugging)
creaVar(my_variable, os.date("%Y-%m-%d %H:%M:%S"),2)
elseif (difference >= 259200) then --3 jours = 259 200 s
--on exécute le code voulu
--commandArray[#commandArray + 1]={le code a éxécuter}
updateVar(my_variable,os.date("%Y-%m-%d %H:%M:%S"))
end
end
return commandArray
-------FIN
------------------------------------------------------------------------
Pour résumer, j'utilise :
- dofile('/home/pi/domoticz/scripts/lua/modules.lua') => fonctions de Vil1driver
- je créé une variable si elle n'existe pas (my_variable)
- toutes les 10 mn de chaques heures, je teste la valeur de ma variable my_variable
- si my_variable est supérieurs à 259200 s (soit 3 jours), j’exécute ce que je veux, et je réinitialise ensuite la variable.
J'ai résumé la fonction que j'utilise pour l'adapter a ta situation, a toi d'adapter pour obtenir le résultat voulu.
Re: Vider le log d'un dispositif TEXT
Publié : 30 déc. 2018, 18:53
par e111111
Super !
Merci, j'avais vu les codes de Vil1driver avec le "fourre-tout" à fonctions, mais je n'avais pas eu le temps de
me plonger la dedans, là ça va être l'occase de le faire, d'autant qu'il m'avait semblé voir que ça pouvait pas mal accélérer
certains traitements ...
Du boulot en perspective
PS: j'aurais besoin de petites précisions cependant :
- quel doit être le formalisme du nom du script ? toujours script_time ?
- A quoi sert la ligne :
Re: Vider le log d'un dispositif TEXT
Publié : 30 déc. 2018, 19:36
par vil1driver
Autrement tu sais que les logs se vident d'eux même après le delai défini dans les paramètres ?
Re: Vider le log d'un dispositif TEXT
Publié : 30 déc. 2018, 19:46
par e111111
oui, mais tous les logs, là je ne veux vider que celui-ci, qui génère énormément de pages de logs, à chaque déplacement de mon tel.
Les autres logs ne prennent pas autant de place, et j'hésite à manipuler des fonctions de Domoticz que je ne comprends pas, je n'ai pas envie de perdre mes relevés de température ... qui ont l'ai gérés comme les logs ...
Re: Vider le log d'un dispositif TEXT
Publié : 30 déc. 2018, 19:53
par e111111
Bon,
j'ai commencé à tester le code pour démarrer le script tous les x jours,
mais j'ai un retour d'erreur sur la ligne :
Code : Tout sélectionner
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
log :