WES, Domoticz, photovoltaïque

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

Mots-clés : 

Ce sujet a 1 réponse, 1 participant et a été mis à jour par  Laurent32, il y a 3 ans et 2 mois.

2 sujets de 1 à 2 (sur un total de 2)
  • Auteur
    Messages
  • #8749

    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>

    #8759

    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>

2 sujets de 1 à 2 (sur un total de 2)

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