WES, Domoticz, photovoltaïque

Forums Serveur WES Votre installation… WES, Domoticz, photovoltaïque

  • Post
    Laurent32
    Participant

      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>

      0
      0
    Vous lisez 0 fil de discussion
    • Replies
        Laurent32
        Participant

          Bonjour,

          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>

          0
          0
      Vous lisez 0 fil de discussion

      Étiqueté : 

      • Vous devez être connecté pour répondre à ce sujet.