Page 2 sur 3

Re: Sauvegarde et exportation des scripts LUA de la DB

Publié : 18 juil. 2021, 16:03
par denis_brasseur
Doudy a écrit : 18 juil. 2021, 08:32 Comment démarrer ce script ?
:oops:
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' then
Tu peux aussi le modifier en type device avec un déclencheur de type push on

Code : Tout sélectionner

if devicechanged['sauvegarde_script'] == 'On' then

Re: Sauvegarde et exportation des scripts LUA de la DB

Publié : 19 juil. 2021, 08:27
par Doudy
Hello,

Après avoir modifié l'heure de démarrage de script_time_sauvegarde_script.lua
J'ai bien le message "2021-07-19 08:15:00.646 Status: LUA: Les scripts LUA ont été sauvé" dans mes logs. :)
Mais ou sont les sauvegardes ? :?:
J'ai bien créé un dossier "logs" dans /home/pi/domoticz/scripts/lua/
Mais il est vide !

IL doit manquer quelque chose quelque part non ? :?
;)

Re: Sauvegarde et exportation des scripts LUA de la DB

Publié : 20 juil. 2021, 05:47
par denis_brasseur
Comme indiqué dans le titre, le script sauvegarde ceux en base de données.
Tu exécutes apparemment ton script hors base de données au vu de son nom.
Tu as bien au moins un script depuis Configuration, Plus d'options, Evènements ?
Vérifie également le chemin de ta base de données : '/home/pi/domoticz/domoticz.db'

Re: Sauvegarde et exportation des scripts LUA de la DB

Publié : 20 juil. 2021, 07:52
par Doudy
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.
Je ne comprends pas ce que tu veux dire. Désolé :oops:
denis_brasseur a écrit : 20 juil. 2021, 05:47 Tu as bien au moins un script depuis Configuration, Plus d'options, Evènements ?
Pas de traces dans "Configuration, Plus d'options, Evènements" :?
Je n'ai jamais utilisé cette option :!:
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'
Ma base de données se trouve bien là :'/home/pi/domoticz/domoticz.db' :)

Une idée ?
Merci
;)

Re: Sauvegarde et exportation des scripts LUA de la DB

Publié : 20 juil. 2021, 11:47
par Doudy
En cherchant un peu, j'ai trouvé comment mettre le script dans "Evénements"

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
Je l'ai mit dans "Trigger/Time"
Dans "/home/pi/domoticz/scripts/lua/logs" j'ai trouvé le fichier qui commence par 201

Code : Tout sélectionner

"/home/pi/domoticz/scripts/lua/logs/201_Script_sauvegarde_script.active.lua"
Mais ou est la sauvegarde ?
;)

Re: Sauvegarde et exportation des scripts LUA de la DB

Publié : 20 juil. 2021, 13:00
par denis_brasseur
Doudy a écrit : 20 juil. 2021, 11:47 Mais ou est la sauvegarde ?
;)
Ce fichier est bien la sauvegarde du script qui est lui même en base de données.
201_ est le jour de l'année, Script_sauvegarde_script est le nom de ton script, active signifie qu'il s'agit d'un script actif.
Tu retrouve ainsi, après l'exécution de ce script, préfixé du jour et du nom du script, l'ensemble des scripts existant en base de données. Dans ton cas, le script de sauvegarde ne fait qu'une sauvegarde de lui même.

Re: Sauvegarde et exportation des scripts LUA de la DB

Publié : 22 juil. 2021, 09:21
par 53l3cu5
Merci Denis d'avoir répondu à ma place. J'ai pas reçu de notif. Je vais regarder dans mes spams

Re: Sauvegarde et exportation des scripts LUA de la DB

Publié : 22 juil. 2021, 11:50
par Doudy
Hello,

Si j'ai bien compris ce sont uniquement les scripts lua qui se trouvent dans la db qui sont sauvegardés.
Les scripts lua qui se trouvent dans /domoticz/scripts/lua ou dzvents/scripts ne sont pas sauvegardés !

;)

Re: Sauvegarde et exportation des scripts LUA de la DB

Publié : 22 juil. 2021, 12:26
par Keros
Exact :
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.

Re: Sauvegarde et exportation des scripts LUA de la DB

Publié : 22 juil. 2021, 13:45
par Doudy
Quel est l'intérêt alors de créer des scripts dans les dossiers ou lieu de la DB ?
;)