Sauvegarde et exportation des scripts LUA de la DB

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Sauvegarde et exportation des scripts LUA de la DB

Message 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
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

Re: Sauvegarde et exportation des scripts LUA de la DB

Message 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 ? :?
;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Sauvegarde et exportation des scripts LUA de la DB

Message 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'
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

Re: Sauvegarde et exportation des scripts LUA de la DB

Message 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
;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

Re: Sauvegarde et exportation des scripts LUA de la DB

Message 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 ?
;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Sauvegarde et exportation des scripts LUA de la DB

Message 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.
Dernière modification par Keros le 20 juil. 2021, 13:26, modifié 1 fois.
Raison : Merci de ne pas citer le message précédent lors d'une réponse directe
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
53l3cu5
Messages : 31
Inscription : 09 juil. 2021, 19:47

Re: Sauvegarde et exportation des scripts LUA de la DB

Message par 53l3cu5 »

Merci Denis d'avoir répondu à ma place. J'ai pas reçu de notif. Je vais regarder dans mes spams
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

Re: Sauvegarde et exportation des scripts LUA de la DB

Message 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 !

;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Sauvegarde et exportation des scripts LUA de la DB

Message 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.
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
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

Re: Sauvegarde et exportation des scripts LUA de la DB

Message par Doudy »

Quel est l'intérêt alors de créer des scripts dans les dossiers ou lieu de la DB ?
;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
Répondre