Accueil › Forums › Serveur WES › Votre installation… › WES, Domoticz, photovoltaïque
Mots-clés : WES Domoticz scripts
Ce sujet a 1 réponse, 1 participant et a été mis à jour par Laurent32, il y a 3 ans et 2 mois.
-
AuteurMessages
-
15 janvier 2020 à 14 h 44 min #8749
Bonjour,
Mon installation :
- 3kw de photovoltaïque en auto-consommation (Depuis 08/2019)
- Serveur WES avec la téléinfo(mode historique) et 4 pinces ampèremétriques.
- Domoticz sur Olinuxino A20 avec 1wire, RFXcom, SbFspot(communication avec l’onduleur)
- 2 cumulus modifiés
Actuellement la communication entre le WES et domoticz se fait via des scripts en lua.
Le petit cumulus avait 2 résistance de 600W, j’en ai débranché une. celle qui reste est piloté par le relais2 du WES. Le gros cumulus avait 3 résistances de 3kW, une résistance est débranchée. Une est pilotée par le relais1 du WES. La dernière est pilotée par le relais1 du WES et le commutateur jour/nuit. La dernière résistance sert l’hiver.
Le WES alimente les cumulus de 00h00 à 06h00 et quand la production PV est supérieure à la somme des consommations et d’une résistance de cumulus. En été les cumulus ne fonctionnent quasiment pas la nuit.
Mes objectifs :
- Revendre le moins possible d’électricité
- Faire communiquer domoticz et WES via M2M
- Avoir la téléinfo en mode standard
- Exporter les données dans une base de données pour faire des graphes avec Grafana (Déja pas mal avancé)
J’attends vos suggestions.
Cordialement,
<div id= »tap-translate »></div>17 janvier 2020 à 19 h 12 min #8759Bonjour,
Voici les scripts qui me servent à faire communiquer domoticz et WES
Script pour envoyer les données de la téléinfo vers Domoticz
Script de récupération des valeurs des téléinfo du serveur WES -- commandArray={} local prefixe = "WES TIC-1 -- " local WES_url = "http://adminwes:******@192.168.***.150/tic1.cgx" local fname = "/home/***/domoticz/scripts/XML/tic1.xml" -- Emplacement du fichier téléchargé du WES sur le Domoticz -- le device de téléinfo sur Domotics local device = "Elec" -- 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 xml = fp:read("*a") fp:close() return xml end -- end lectureFichier -- Extrait les éléments constitutifs du fichier local function extractElements(tag, xml) result = {} local pattern = "<"..tag..">(.-)</"..tag..">" --print(prefixe.."TAG = " ..tag) for var in xml:gmatch(pattern) do --print(prefixe.."VAR = " ..var) table.insert(result, var) end return result end -- end extractElements -- Récupération du Fichier xml des pinces --print("wget -q -O "..fname.." "..WES_url) os.execute("wget -q -O "..fname.." "..WES_url) local xml = lectureFichier(fname) --print(prefixe.. "XML = " ..xml) -- Extraction des données et affichage local HC = extractElements("HCHC", xml) local HP = extractElements("HCHP", xml) local Pw_I = extractElements("PAP", xml) local Prod = extractElements("INJECTION", xml) local PHC = extractElements("PHC", xml) local PHP = extractElements("PHP", xml) -- affichage dans domoticz print(prefixe .."Mise à jour du device "..device.." HC = "..tostring(HC[1]) .." HP = " ..tostring(HP[1]).." PHC = "..tostring(PHC[1]).. " PHP = " ..tostring(PHP[1]).." Pw_I = "..tostring(Pw_I[1]).. " Prod solaire = " ..tostring(Prod[1]).." " ) commandArray = {['UpdateDevice'] = otherdevices_idx[device] .. "|0|" .. tostring(HC[1]) .. ";" .. tostring(HP[1]) ..";" ..tostring(PHC[1])..";" ..tostring(PHP[1]).. ";" ..tostring(Pw_I[1])..";" ..tostring(Prod[1])} --commandArray = {['UpdateDevice'] = otherdevices_idx[device] .. "|0|" .. HC .. ";" .. HP ..";" ..B..";" ..C.. ";" ..Pw_I..";" ..Prod} return commandArray
Script pour envoyer les données des pinces vers Domoticz
-- Script de récupération des valeurs des pinces ampèremétrique du serveur WES -- commandArray={} -------------------------------------------- ------------ Variables à éditer ------------ -------------------------------------------- local debug = false -- true pour voir les logs dans la console log ou false pour ne pas les voir local prefixe = "WES pinces -- " local WES_url = "http://adminwes:******@192.168.***.150/pince.cgx" local fname = "/home/***/domoticz/scripts/XML/pince.xml" -- Emplacement du fichier téléchargé du WES sur le Domoticz local U = 230 -- Valeur tension secteur -- les devices : les pinces -- Les emplacements de pinces non raccordés doivent être marqué Vide local devices = {"Eclairages","Prises courants","Cumulus","Gros appareils"} -------------------------------------------- ---------------- Fonctions ----------------- -------------------------------------------- -- ci-dessous les lignes à décommenter en cas d'utilisation des fonctions directement dans ce script( supprimer --[[ et --]]) function Loggeur (s, debug) -- nécessite la variable local debug if (debug) then if s ~= nil then print (prefix.." --" ..s) else print (prefix.."aucune valeur affichable") end end end -- usage Loggeur(" ??????? ",debug) -- 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 = {} local 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 -- Récupération du Fichier xml des pinces Loggeur("wget -q -O "..fname.." "..WES_url, debug) os.execute("wget -q -O "..fname.." "..WES_url) local rss = lectureFichier(fname) -- Extraction des données et affichage local VAi = extractElements(4, "I", rss) local VAc = extractElements(4, "INDEX", rss) -- affichage dans domoticz for i, device in pairs(devices) do if ( device ~= "Vide" ) then local vaI = VAi[i]*U local vaC = VAc[i] print(prefixe .."Mise à jour du device "..device.." = "..vaI.. " Index = " ..vaC) commandArray[i] = {['UpdateDevice'] = otherdevices_idx[device] .. "|0|" .. vaI .. ";" .. vaC} end end return commandArray
<div id= »tap-translate »></div>
<div id= »tap-translate »></div> -
AuteurMessages
Vous devez être connecté pour répondre à ce sujet.