Re: [LUA] Exporter vos données vers une base MySQL
Publié : 27 déc. 2022, 08:56
Bonjour Keros,
Après de multiples essais j'obtiens un résultat sans erreur dans domoticz mais dans ma table phpmyadmin rien du tout.
Script LUA trigger Time
Et ça donne dans le Log
Après de multiples essais j'obtiens un résultat sans erreur dans domoticz mais dans ma table phpmyadmin rien du tout.
Script LUA trigger Time
Code : Tout sélectionner
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local nom_script = "export mysql"
local version = "0.10"
local debugging = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local url = "localhost/loggemulti.php"
local les_devices = {};
-- si vous souhaitez remonter les valeurs d'un device qui en comporte plusieurs (ex: température et hygrometrie extérieure)
-- renseigner le nom de la valeur à remonter (à partir de la deuxieme valeur) ainsi que le numero d'ordre dans canal (voir exemples ci dessous Puissance Lave Linge et Puissance Sèche Linge )
les_devices[#les_devices+1] = {device="Congélateur",nom="Congélateur",canal = "1"}
les_devices[#les_devices+1] = {device="B.O.F",nom="B.O.F",canal="1"}
les_devices[#les_devices+1] = {device="Viandes",nom="Viandes",canal="1"}
les_devices[#les_devices+1] = {device="Légumes",nom="Légumes",canal="1"}
les_devices[#les_devices+1] = {device="Mise en place",nom="Mise en place",canal="1"}
--les_devices[#les_devices+1] = {device="Tem extérieure"}
local feeds =""
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------
function voir_les_logs (s, debugging) -- nécessite la variable local debugging
if (debugging) then
if s ~= nil then
print ("<font color='#f3031d'>".. s .."</font>")
else
print ("<font color='#f3031d'>aucune valeur affichable</font>")
end
end
end -- usage voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
--==============================================================================================
function sans_accent(str) -- supprime les accents de la chaîne str
if (str) then
str = string.gsub (str,"Ç", "C")
str = string.gsub (str,"ç", "c")
str = string.gsub (str,"[-èéêë']+", "e")
str = string.gsub (str,"[-ÈÉÊË']+", "E")
str = string.gsub (str,"[-àáâãäå']+", "a")
str = string.gsub (str,"[-@ÀÁÂÃÄÅ']+", "A")
str = string.gsub (str,"[-ìíîï']+", "i")
str = string.gsub (str,"[-ÌÍÎÏ']+", "I")
str = string.gsub (str,"[-ðòóôõö']+", "o")
str = string.gsub (str,"[-ÒÓÔÕÖ']+", "O")
str = string.gsub (str,"[-ùúûü']+", "u")
str = string.gsub (str,"[-ÙÚÛÜ']+", "U")
str = string.gsub (str,"[-ýÿ']+", "y")
str = string.gsub (str,"Ý", "Y")
end
return (str)
end
--==============================================================================================
function urlencode(str) -- encode la chaine str pour la passer dans une url
if (str) then
str = string.gsub (str, "\n", "\r\n")
str = string.gsub (str, "([^%w ])",
function (c) return string.format ("%%%02X", string.byte(c)) end)
str = string.gsub (str, " ", "+")
end
return str
end
--==============================================================================================
function split(inputstr, sep)
if sep == nil then
sep = "%s"
end
local t={} ; i=1
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
t[i] = str
i = i + 1
end
return t
end -- usage : valeurs = split(variable,";")
--==============================================================================================
--------------------------------------------
-------------- Fin Fonctions ---------------
--------------------------------------------
commandArray = {}
time=os.date("*t")
if ((time.min-1) % 2) == 0 then -- export des données toutes les 2 minutes
--if ((time.min-1) % 15) == 0 then -- export des données toutes les 15 minutes
voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
for i,d in ipairs(les_devices) do
v=otherdevices[d.device]
c=tonumber(d.canal)
voir_les_logs("--- --- --- ".. sans_accent(d.device) .." = "..(v or "nil"),debugging)
print(sans_accent(d.device))
voir_les_logs("--- --- --- canal = "..(c or "nil"),debugging)
if v~= nil then v,nbCommas=string.gsub(v,";",";") end-- verification de la presence d'un ou plusieurs point virgule => valeurs multiples
if nbCommas >= 1 and c ~= nil then
voir_les_logs("--- --- --- valeurs multiples dans ".. sans_accent(d.device) .." = ".. v,debugging)
voir_les_logs("--- --- --- Nb de point virgule = "..(nbCommas or "nil"),debugging)
local valeurs = split(v,";")
voir_les_logs("--- --- --- valeur 1 = "..(valeurs[1] or "nil"),debugging)
voir_les_logs("--- --- --- valeur 2 = "..(valeurs[2] or "nil"),debugging)
voir_les_logs("--- --- --- valeur 3 = "..(valeurs[3] or "nil"),debugging)
voir_les_logs("--- --- --- valeur 4 = "..(valeurs[4] or "nil"),debugging)
feeds = feeds .. '&f'.. i .. '=' .. urlencode(d.nom) .. '&v' .. i .. '=' .. valeurs[c]
elseif d.nom ~= nil then
feeds = feeds .. '&f'.. i.. '=' .. urlencode(d.nom) .. '&v' .. i .. '=' .. v
else
feeds = feeds .. '&f'.. i.. '=' .. urlencode(d.device) .. '&v' .. i .. '=' .. v
end
I = i
end
feeds = string.gsub (feeds, ".000", "")
url = url .. "?feeds=" .. I
voir_les_logs("--- --- ---Envoi valeurs dans la base de données",debugging)
voir_les_logs("curl -m5 " .. "'".. url .. feeds .."'",debugging)
voir_les_logs("--- --- ---i a une valeur de : "..I,debugging)
os.execute("curl -m5 " .. "'".. url .. feeds .."'")
voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging)
end -- if time
-- ============================================================================
return commandArray2022-12-27 08:45:00.290 Status: LUA: <font color='#f3031d'>=========== export mysql (v0.10) ===========</font>
2022-12-27 08:45:00.290 Status: LUA: <font color='#f3031d'>--- --- --- Congelateur = -14.50</font>
2022-12-27 08:45:00.290 Status: LUA: Congelateur
2022-12-27 08:45:00.290 Status: LUA: <font color='#f3031d'>--- --- --- canal = 1</font>
2022-12-27 08:45:00.291 Status: LUA: <font color='#f3031d'>--- --- --- B.O.F = 7.25</font>
2022-12-27 08:45:00.291 Status: LUA: B.O.F
2022-12-27 08:45:00.291 Status: LUA: <font color='#f3031d'>--- --- --- canal = 1</font>
2022-12-27 08:45:00.291 Status: LUA: <font color='#f3031d'>--- --- --- Viandes = 15.75</font>
2022-12-27 08:45:00.291 Status: LUA: Viandes
2022-12-27 08:45:00.291 Status: LUA: <font color='#f3031d'>--- --- --- canal = 1</font>
2022-12-27 08:45:00.291 Status: LUA: <font color='#f3031d'>--- --- --- Legumes = 15.75</font>
2022-12-27 08:45:00.291 Status: LUA: Legumes
2022-12-27 08:45:00.291 Status: LUA: <font color='#f3031d'>--- --- --- canal = 1</font>
2022-12-27 08:45:00.291 Status: LUA: <font color='#f3031d'>--- --- --- Mise en place = 15.25</font>
2022-12-27 08:45:00.291 Status: LUA: Mise en place
2022-12-27 08:45:00.291 Status: LUA: <font color='#f3031d'>--- --- --- canal = 1</font>
2022-12-27 08:45:00.291 Status: LUA: <font color='#f3031d'>--- --- ---Envoi valeurs dans la base de données</font>
2022-12-27 08:45:00.291 Status: LUA: <font color='#f3031d'>curl -m5 'localhost/loggemulti.php?feeds=5&f1=Cong%C3%A9lateur&v1=-14.50&f2=B%2EO%2EF&v2=7.25&f3=Viandes&v3=15.75&f4=L%C3%A9gumes&v4=15.75&f5=Mise+en+place&v5=15.25'</font>
2022-12-27 08:45:00.291 Status: LUA: <font color='#f3031d'>--- --- ---i a une valeur de : 5</font>
2022-12-27 08:45:00.316 Status: LUA: <font color='#f3031d'>========= Fin export mysql (v0.10) =========</font>