Par défaut, le script de type time s'exécute à 05h01
Code : Tout sélectionner
Timer = os.date('%H:%M')
if Timer == '05:01' thenCode : Tout sélectionner
if devicechanged['sauvegarde_script'] == 'On' thenPar défaut, le script de type time s'exécute à 05h01
Code : Tout sélectionner
Timer = os.date('%H:%M')
if Timer == '05:01' thenCode : Tout sélectionner
if devicechanged['sauvegarde_script'] == 'On' thenJe ne comprends pas ce que tu veux dire. Désolédenis_brasseur a écrit : 20 juil. 2021, 05:47 Tu exécutes apparemment ton script hors base de données au vu de son nom.
Pas de traces dans "Configuration, Plus d'options, Evènements"denis_brasseur a écrit : 20 juil. 2021, 05:47 Tu as bien au moins un script depuis Configuration, Plus d'options, Evènements ?
Ma base de données se trouve bien là :'/home/pi/domoticz/domoticz.db'denis_brasseur a écrit : 20 juil. 2021, 05:47 Vérifie également le chemin de ta base de données : '/home/pi/domoticz/domoticz.db'
Code : Tout sélectionner
--
-- Domoticz passes information to scripts through a number of global tables
--
-- otherdevices, otherdevices_lastupdate and otherdevices_svalues are arrays for all devices:
-- otherdevices['yourotherdevicename'] = "On"
-- otherdevices_lastupdate['yourotherdevicename'] = "2015-12-27 14:26:40"
-- otherdevices_svalues['yourotherthermometer'] = string of svalues
--
-- uservariables and uservariables_lastupdate are arrays for all user variables:
-- uservariables['yourvariablename'] = 'Test Value'
-- uservariables_lastupdate['yourvariablename'] = '2015-12-27 11:19:22'
--
-- other useful details are contained in the timeofday table
-- timeofday['Nighttime'] = true or false
-- timeofday['SunriseInMinutes'] = number
-- timeofday['Daytime'] = true or false
-- timeofday['SunsetInMinutes'] = number
-- globalvariables['Security'] = 'Disarmed', 'Armed Home' or 'Armed Away'
--
-- To see examples of commands see: http://www.domoticz.com/wiki/LUA_commands#General
-- To get a list of available values see: http://www.domoticz.com/wiki/LUA_commands#Function_to_dump_all_variables_supplied_to_the_script
--
-- Based on your logic, fill the commandArray with device commands. Device name is case sensitive.
--
commandArray = {}
print ("Security based event fired");
-- loop through all the devices
function mysplit (inputstr, sep)
if sep == nil then sep = "%s" end
local t={}
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
table.insert(t, str)
end
return t
end
function os.capture(cmd)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
return s
end
function SaveTable(dbPath, matable, sortie)
local sql1='sqlite3 '..dbPath..' "select ID, name,status from '..matable..';"'
local result = os.capture(sql1)
local lignes = mysplit(result, '\n\r')
for i=1,#lignes,1 do
splited = mysplit(lignes[i], '|')
id = splited[1]
name = splited[2]
status = splited[3]
if status == '0' then
scriptDirName = sortie .. name ..'.inactive.lua'
else
scriptDirName = sortie .. name ..'.active.lua'
end
sql2 = 'sqlite3 ' .. dbPath .. ' "select XMLSTatement from '..matable..' WHERE ID = ' .. id .. '" > "' .. scriptDirName .. '"'
os.execute(sql2)
os.execute('chown pi "'..scriptDirName .. '"')
end
print("Les scripts LUA ont été sauvé")
end
Timer = os.date('%H:%M')
if Timer == '11:40' then
-- retourne le jour de l'année ex: "365"
jour = os.date("%j")
SaveTable('/home/pi/domoticz/domoticz.db', 'EventMaster', '/home/pi/domoticz/scripts/lua/logs/'..jour..'_')
end
return commandArray
Code : Tout sélectionner
"/home/pi/domoticz/scripts/lua/logs/201_Script_sauvegarde_script.active.lua"Ce fichier est bien la sauvegarde du script qui est lui même en base de données.
53l3cu5 a écrit : 14 juil. 2021, 17:17 Je cherche à sauvegarder régulièrement les scripts LUA, pas ceux dans les dossiers, mais dans la base de donné pendant que je développe.