Je sollicite votre aide pour résoudre le problème suivant.
Situation
Grâce à un compteur d'eau à impulsion relié à mon ECO DEVICE, je peux suivre ma consommation d'eau via l'ECO DEVICE.
L'ECO DEVICE donne la consommation en L du jour, cette valeur s'actualise en permanence tout au long de la journée en fonction de l'eau consommé; l'ECO DEVICE donne aussi l'index compteur en M3: cela correspond au total consommé depuis le branchement du compteur à impulsions sur l'ECO DEVICE
Souhaitant remonter les informations relatives à ma consommation d'eau dans DOMOTICZ, je me suis mis à la recherche d'un script pouvant faire cela.
L'idée étant de les stocker dans un compteur incrémental:
Après quelques recherches, j'ai adapté le script time ci-dessous. Le script interroge le fichier XML généré par l'ECO DEVICE, enregistre le fichier XML et va récupérer dedans la conso du jour et l'index.
Code : Tout sélectionner
-- this script reads the ecodevice xml file and uploads current data to virtual device
commandArray = {}
--IDX du Compteur EAU dans Domoticz
local idx = 186 -- idx du compteur d'eau incrémental virtuel dans domoticz
-- IP EcoDevice :
os.execute('wget http://192.168.1.30:80/status.xml -O /home/pi/domoticz/scripts/lua/water.xml')
local filename = "/home/pi/domoticz/scripts/lua/water.xml"
local line = ''
local waterdata_l =0
local waterdata_m3 =0
for line in io.lines(filename) do
if string.find(line,"<c0day>") then
waterdata_l=line
end
if string.find(line,"<count0>") then
waterdata_m3=line
end
end
print('[ECODEVICE] -- COMPTEUR EAU --')
print("Compteur eau a impulsion: " .. waterdata_l .. " L consommé(s) aujourd'hui." )
commandArray['Variable:water_L'] = tostring(waterdata_l)
print("Index eau a impulsion: " .. waterdata_m3 .. " m3 consommé(s)depuis la pose du compteur." )
commandArray['Variable:water_m3'] = tostring(waterdata_m3)
commandArray['UpdateDevice'] = idx .. "|0|" .. 0 .. ";".. tostring(uservariables['water_m3']) .. ";" .. tostring(uservariables['water_L'])
return commandArrayconso instantanée=0 (je la mets volontairement à 0)
conso depuis le début en M3
conso du jour en M3
Par ailleurs, j'ai un souci avec waterdata_m3.
Dans le fichier XML, la valeur de l'index (qui se présente sous la forme X,XXX dans l'ECO DEVICE) ne comprend plus la virgule. Pour résoudre cela, je voulais divisier par 1000 en utilisant tonumber(waterdata_m3) mais le sys me renvoit systématiquement "attempt to perform arithmetic on a nil value"
Enfin même élément avec waterdata_l. Il faudrait que je multiplie par 0,001 pour transformer cela en m3 pour "coller" au format du compteur incrémental mais là également, même avec tonumber impossible de réaliser l'opération.
Quelqu'un pourrait-il m'aider?
Par avance je vous remercie.