Auteur Sujet: importer xml itow vers domoticz  (Lu 6847 fois)

Hors ligne Nld

  • Très assidu
  • ***
  • Messages: 147
  • Sexe: Homme
Re : importer xml itow vers domoticz
« Réponse #45 le: 10 février 2015 - 22:27:09 pm »
 :D
Qui vivra verra

Hors ligne Pojojo

  • Actif
  • *
  • Messages: 48
  • Sexe: Homme
Re : importer xml itow vers domoticz
« Réponse #46 le: 10 février 2015 - 22:42:08 pm »
Bonsoir,

J’essaie de participer avec mes petits moyen, voici se que donne le log:Error: Warning: lua script C:\Program Files (x86)\Domoticz\scripts\lua\script_time_itow.lua has been running for more than 10 seconds.
en attendant merci pour tout se travail. ^-^ :argh:
Joêl

Hors ligne elf

  • Administrator
  • Scotché
  • *****
  • Messages: 2131
  • Sexe: Homme
    • iTow - Intégré Téléinfo One Wire
Re : importer xml itow vers domoticz
« Réponse #47 le: 10 février 2015 - 23:44:30 pm »

Créer un répertoire C:\xmlitow

Dans le code changer dirXml par :
local dirXml = "C:\\xmlitow\\"
elf - admin
Me contacter uniquement par mail,
les MP à ma destination sont désactivés.

Hors ligne huggy

  • Très assidu
  • ***
  • Messages: 122
  • Sexe: Homme
Re : importer xml itow vers domoticz
« Réponse #48 le: 11 février 2015 - 00:43:03 am »
Ah ça marche  ;)

J'ai des valeurs dans la représentation de Domoticz.
Le bouton interrupteur "RaspiTow" passe OFF au bout d'une minute ; c'est lié au "script_time_ping.lua" ?

edit : ah oui (cf page 1), tu as écrit que cela permet de savoir sur le raspi répond ou non (cad s'il est bien en fonctionnement).

En tout cas, cela ne gêne pas l'actualisation des mesures, le fichier "itow.xml" dans est bien rafraîchit toutes les minutes.

Tu as prévu une intégration d'iTow Elf, en terme de présentation ou autre ?

Bon on en recause demain,  :dodo:

Nld, je regardais ton plan de maison avec les infos que tu exploites ; c'est toi qui a passé tous les câbles ? J'imagine qu'il y en a pas mal dans le faux plafond ?  :!)
J'ai l'impression que l'on peut faire pas mal de choses avec ce type d'outils ... A mettre sur un raspi pour la consommation en tout cas pour du 24/24 ...
« Modifié: 11 février 2015 - 00:58:11 am par huggy »

Hors ligne elf

  • Administrator
  • Scotché
  • *****
  • Messages: 2131
  • Sexe: Homme
    • iTow - Intégré Téléinfo One Wire
Re : importer xml itow vers domoticz
« Réponse #49 le: 11 février 2015 - 06:09:38 am »
Citer
Le bouton interrupteur "RaspiTow" passe OFF au bout d'une minute ; c'est lié au "script_time_ping.lua" ?
Pas normal, la modif pour Windows dans script_time_ping.lua

remplacer la ligne ping_success=os.execute('ping -c1 -w1 '..ip)

par ping_success=os.execute('ping '..ip..' -n 1 -w 100>nul')

C'est sur cela devrait mieux fonctionner.

elf - admin
Me contacter uniquement par mail,
les MP à ma destination sont désactivés.

Hors ligne huggy

  • Très assidu
  • ***
  • Messages: 122
  • Sexe: Homme
Re : importer xml itow vers domoticz
« Réponse #50 le: 11 février 2015 - 07:32:11 am »
Je fais chauffer le café et teste la modif.

Pas évident de coder sur 2 systèmes, ça change pas mal qd même  :argh:

edit : le bouton reste bien sur ON à présent.
« Modifié: 11 février 2015 - 08:09:15 am par huggy »

Hors ligne Nld

  • Très assidu
  • ***
  • Messages: 147
  • Sexe: Homme
Re : importer xml itow vers domoticz
« Réponse #51 le: 11 février 2015 - 17:27:21 pm »
 ^-^
Citer
Nld, je regardais ton plan de maison avec les infos que tu exploites ; c'est toi qui a passé tous les câbles ? J'imagine qu'il y en a pas mal dans le faux plafond ?  :!)
J'ai l'impression que l'on peut faire pas mal de choses avec ce type d'outils ... A mettre sur un raspi pour la consommation en tout cas pour du 24/24 ...

oui j'ai tout passe tout seul, c une partie de mon métier de monter des réseaux, donc effectivement y'a un bon 400 m de câble RJ45 qui court dans toute la maison autant en faux plafond, qu'en dessous du ourdi en sous sol (garage)
oui le rasp est très bien niveau conso comparer aux anciens serveurs que j'avais mais le top c quand même linux et la stabilité ;)
Et re oui il y a un nombre incalculable de possibilités avec ces petite bêtes, surtout avec l'arrivé du RPI2, qui vu les performances va ouvrir encore d'autres portes a mon avis
Qui vivra verra

Hors ligne yan1950

  • Très assidu
  • ***
  • Messages: 215
  • Sexe: Homme
Re : importer xml itow vers domoticz
« Réponse #52 le: 12 février 2019 - 12:42:51 pm »
Bonjour à tous

J'envisage d'afficher mes données Itow dans mon domoticz( itow et domoticz sont sur deux Raspberry 3 distincts )

Je vais suivre le tuto de Elf du début de ce post qui date quand même de 2015... .

Je voudrai savoir si des modifications a ce tuto doivent être faites car Domoticz a évolué pas mal depuis 2015, surtout que mes connaissances en linux sont proches du zéro absolu.

Bonne journée
Yannick
Yannick
Raspitow  pour la Pac, Cptr général et Cptr chauffe eau thermodyn, et sondes temp

Hors ligne yan1950

  • Très assidu
  • ***
  • Messages: 215
  • Sexe: Homme
Re : importer xml itow vers domoticz
« Réponse #53 le: 12 février 2019 - 17:00:31 pm »
J'ai tout bien fait( ? ) mais j'ai ce message d'erreur dans Domoticz:

2019-02-12 16:54:00.130 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_itow.lua: /home/pi/domoticz/scripts/lua/script_time_itow.lua:1: unexpected symbol near '15'

Il semble qu'il n'y ai pas de message d'erreur pour le script du ping.

Voici mon script:

15:59 12/02/2019-- Initialise la commande de retour finale
commandArray={}

local prefixe = "(ITOW) "
local raspitow_ip = "192.168.1.166:8166"
local domoticz_ip = "192.168.1.55:8084"

-- les devices : les sondes (max 15) au début suivies des compteurs électriques (max 5)
local devices = {
{
["type"] = "sonde",
["idx"] = 140F3,
["name"] = "T_"
},
{
["type"] = "sonde",
["idx"] = 140F4,
["name"] = "retour_forages"
},
{
["type"] = "sonde",
["idx"] = 140F5,
["name"] = "T_piece"
},
{
["type"] = "sonde",
["idx"] = 140F6,
["name"] = "T_extérieure"
},
{
["type"] = "sonde",
["idx"] = 140F7,
["name"] = "départ_plancher"
},
{
["type"] = "sonde",
["idx"] = 140F8,
["name"] = "T_refoulement"
},
{
["type"] = "sonde",
["idx"] = 140F9,
["name"] = "départ_forages"
},
{
["type"] = "sonde",
["idx"] = 140FA,
["name"] = "retour_plancher"
},
{
["type"] = "sonde",
["idx"] = 140FB,
["name"] = "T_chauff"
},
{
["type"] = "sonde",
["idx"] = 140FC,
["name"] = "T_salon"
},
{
["type"] = "sonde",
["idx"] = 140FD,
["name"] = "T_studio"
},
{
["type"] = "sonde",
["idx"] = 140FE,
["name"] = "T_studio_in"
},
{
["type"] = "sonde",
["idx"] = 140FF,
["name"] = "T_studio_out
},
{
["type"] = "compteur",
["idx"] = 00082176,
["name"] = "compteur général"
},
{
["type"] = "compteur",
["idx"] = 00082177,
["name"] = "compteur PAC"
},
{
["type"] = "compteur",
["idx"] = 00082178,
["name"] = "Compteur Chauffe eau Thermo"
}
}

-- Lit un fichier
local function lectureFichier(fname)
fp = io.open(fname, "r")
if fp == nil then
print(prefixe.."Erreur ouverture fichier '"..fname.."'.")
os.exit(1)
end
rss = fp:read("*a")
fp:close()
return rss
end -- end lectureFichier

-- Extrait les éléments constitutifs du fichier
local function extractElements(maxTag, tag, xml)
result = {}
i = 0
while i < maxTag do
i = i+1
local pattern = "<"..tag..i..">(.-)</"..tag..i..">"
for var in xml:gmatch(pattern) do
table.insert(result, var)
end
end
return result
end -- end extractElements

-- Connexion au Fichier xml du RaspiTow
local fname = "itow.xml"
os.execute("wget -q -O "..fname.." http://"..raspitow_ip.."/X")
local rss = lectureFichier(fname)

-- Extraction des données et affichage
local temperatures = extractElements(15, "ow_temp_", rss)
local kwh = extractElements(5, "kwh", rss)

-- affichage dans domoticz
for i, device in pairs(devices) do
if (device.type == "sonde") then
--print(prefixe .."Mise à jour du device "..device.name.." = "..temperatures[i])
commandArray[i]={["UpdateDevice"] = device.idx.."|0|"..temperatures[i]}
j=i
else
local watts = kwh[i-j]*1000
--print(prefixe .."Mise à jour du device "..device.name.." = "..watts)
commandArray[i]={["UpdateDevice"] = device.idx.."|0|"..watts..";0"}
end
end

return commandArray

J'ai deux sous répertoires pour mettre les scripts lua: un nommé"lua" et l'autre "lua_parsers"
Je les ai mis dans Lua...

Yannick
« Modifié: 12 février 2019 - 17:12:33 pm par yan1950 »
Yannick
Raspitow  pour la Pac, Cptr général et Cptr chauffe eau thermodyn, et sondes temp

Hors ligne elf

  • Administrator
  • Scotché
  • *****
  • Messages: 2131
  • Sexe: Homme
    • iTow - Intégré Téléinfo One Wire
Re : importer xml itow vers domoticz
« Réponse #54 le: 12 février 2019 - 18:40:47 pm »
 ^-^
Dans la 1ère ligne du script, un copier/coller malheureux ? 15:59 12/02/2019-- Initialise la commande de retour finale
à supprimer ;)

Mes scripts LUA dans Domoticz sont maintenant dans le menu : Réglages/Plus d'options/Evènements ce qui permet de sauvegarder les scripts en même temps que la config Domotique

Voici le dernier script :
local tracesTemp = false -- pour afficher les traces mettre true
local tracesWatts = false -- pour afficher les traces mettre true

local prefixe = "(ITOW) "
local raspitow_ip = "192.168.0.166:8166"
local domoticz_ip = "192.168.0.148:8080"
local fname = "itow.xml"

-- les devices : les sondes (max 15) au début suivies des compteurs électriques (max 5)
local devices = {
{
["type"] = "sonde",
["idx"] = 16,
["name"] = "Départ Fluide"
},
{
["type"] = "sonde",
["idx"] = 14,
["name"] = "Départ eau"
},
{
["type"] = "sonde",
["idx"] = 17,
["name"] = "Retour Fluide"
},
{
["type"] = "sonde",
["idx"] = 13,
["name"] = "Extérieur"
},
{
["type"] = "sonde",
["idx"] = 15,
["name"] = "Retour eau"
},
{
["type"] = "sonde",
["idx"] = 19,
["name"] = "ECS CESI"
},
{
["type"] = "sonde",
["idx"] = 18,
["name"] = "Entrée CESI"
},
{
["type"] = "sonde",
["idx"] = 124,
["name"] = "Cellier"
},
{
["type"] = "compteur",
["idx"] = 20,
["name"] = "Compteur EDF"
},
{
["type"] = "compteur",
["idx"] = 21,
["name"] = "Compteur PAC"
},
{
["type"] = "compteur",
["idx"] = 22,
["name"] = "Compteur Piscine"
}
}

-- Lit un fichier
local function lectureFichier(fname)
fp = io.open(fname, "r")
if fp == nil then
print(prefixe.."Erreur ouverture fichier '"..fname.."'.")
os.exit(1)
end
rss = fp:read("*a")
fp:close()
return rss
end -- end lectureFichier

-- Extrait les éléments constitutifs du fichier
local function extractElements(maxTag, tag, xml)
result = {}
i = 0
while i < maxTag do
i = i+1
local pattern = "<"..tag..i..">(.-)</"..tag..i..">"
for var in xml:gmatch(pattern) do
table.insert(result, var)
end
end
return result
end -- end extractElements

function round(num, dec)
  local mult = 10^(dec or 2)
  return math.floor(num * mult + 0.5) / mult
end

-- Initialise la commande de retour finale
commandArray = {}

-- Connexion au Fichier xml du RaspiTow
local exitCode = os.execute("wget -q -O "..fname.." http://"..raspitow_ip.."/X")
if (exitCode ~= false) then
local rss = lectureFichier(fname)
if (rss ~= "") then

-- Extraction des données
local temperatures = extractElements(15, "ow_temp_", rss)
local kwh = extractElements(5, "kwh", rss)

local WhEDF = tonumber(uservariables["WhEDF"])
local WhPAC = tonumber(uservariables["WhPAC"])
local WhPiscine = tonumber(uservariables["WhPiscine"])

-- affichage dans domoticz
local ok = 0;
local cumul = 0;
for i, device in pairs(devices) do
if (device.type == "sonde") then
if (tracesTemp) then print(prefixe..device.name.." = "..temperatures[i].."°C") end

local OLD = round(tonumber(otherdevices_temperature[device.name]));
local NEW = tonumber(temperatures[i]);
if (OLD ~= NEW) then
if (tracesTemp) then
nomSonde = device.name..string.rep("&nbsp;",16-string.len(device.name))
print (nomSonde.." "..OLD.."°C > "..NEW.."°C")
end
commandArray[i]={["UpdateDevice"] = device.idx.."|0|"..temperatures[i]}
end
j = i
ok = 1
else
local Watt = kwh[i-j] * 1000
local Wh = Watt / 60

if (device.idx == 20) then
cumul = WhEDF + Wh
commandArray['Variable:WhEDF'] = tostring(cumul);
end
if (device.idx == 21) then
cumul = WhPAC + Wh
commandArray['Variable:WhPAC'] = tostring(cumul);
end
if (device.idx == 22) then
cumul = WhPiscine + Wh
commandArray['Variable:WhPiscine'] = tostring(cumul);
commandArray['Variable:WhPiscineCourant'] = tostring(Watt);
end
cumul = tonumber(string.format("%.0f", cumul))
if (tracesWatts) then print(prefixe..device.name.." = "..Watt.." W - "..cumul.." Wh") end

commandArray[i]={["UpdateDevice"] = device.idx.."|0|"..Watt..";"..cumul}
ok = 1
end
end
if (ok == 0) then
print(prefixe .."Mise à jour des données iTow ==> KO !!!")
--else
-- print(prefixe .."Mise à jour des données iTow.")
end
else
print(prefixe .."Données iTow non reçues, fichier '"..fname.."' vide ! iTow à l'arrêt ?")
end
else
print(prefixe .."Erreur exécution os.execute recupération fichier '"..fname.."' !")
end
return commandArray
elf - admin
Me contacter uniquement par mail,
les MP à ma destination sont désactivés.

Hors ligne yan1950

  • Très assidu
  • ***
  • Messages: 215
  • Sexe: Homme
Re : importer xml itow vers domoticz
« Réponse #55 le: 13 février 2019 - 09:14:50 am »
Bonjour,
Merci Elf ça maaa :O:...aaarche !
En plus j'avais aussi des erreurs sur les idx.
Bonne journée
Yannick
Yannick
Raspitow  pour la Pac, Cptr général et Cptr chauffe eau thermodyn, et sondes temp