Mesure puissance OWL

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
aleph0
Messages : 328
Inscription : 27 avr. 2016, 08:06
Localisation : Hérault (34)

Re: Mesure puissance OWL

Message par aleph0 »

Oui, 0,9 c'était l'ordre de grandeur dans le temps où l'on s'éclairait avec des lampes à incandescences, on n'avait que quelques moteurs (frigo, machine à laver) et le reste n'était que des résistances chauffantes (convecteur, four...). Depuis la généralisation des lampes éco (fluo ou led) et le nombre croissant d'appareils électroniques dans nos foyers la tendance est à la baisse !

Pour tenir compte de ça dans domoticz, voici à titre d'exemple le script que j'utilise :

Code : Tout sélectionner

-- Script pour transférer la consommation électrique lue par le owl 
-- dans un compteur P1 gérant les heures pleine et creuses, en tenant compte du cos phi

-- Liste à adapter en fonction du nom des devices et variables
local dev_owl      = "owl_3ph"
local dev_HC     = "Heures creuses EDF"
local dev_conso    = "Électricité"
local var_cosPhi   = "cosPhi"
local var_index    = "index_elec"
local dbPath="/var/domoticz/domoticz.db"
-- Fin de la liste

local debug=0

function UpdateVar(variable,valeur)
    --Update une variable Domoticz
    commandArray[#commandArray+1] = {['Variable:'..variable] = tostring(valeur)}
end

function UpdateDev(device,nvalue,svalues)
    --Met à jour un device numérique Domoticz
    if device~=nil then
        commandArray[#commandArray+1] = {['UpdateDevice'] = otherdevices_idx[device]..'|'..tostring(nvalue)..'|'..tostring(svalues)}
    end
end

function getPref(dbName,key)
    -- Retourne une valeur depuis les préférences de domoticz
    -- Key doit correspondre à l'une des lignes de la table preference
    sql='sqlite3 '..dbName..' "select nValue,sValue from Preferences where Key=\''..tostring(key)..'\'"'

    nV,sV=string.match(os.capture(sql),"(.*)|(.*)")
    -- print("getpref",sql,nV,sV)
    return tonumber(nV),tostring(sV)
end

commandArray = {}
if (devicechanged[dev_owl]) then
        OldIndex = uservariables[var_index]
        val_cosPhi = uservariables[var_cosPhi]
        
        U,dum=getPref(dbPath,"ElectricVoltage") -- Tension en volt depuis les préférences de domoticz

        L1,L2,L3,compteur,dum1 = string.match(otherdevices_svalues[dev_owl],"(%d+.%d*);(%d+.%d*);(%d+.%d*);(%d+).(%d*)")
        usage1, usage2 = string.match(otherdevices_svalues[dev_conso],"(%d+);(%d+);.*")
       
        actual_conso=round(val_cosPhi*U*(L1+L2+L3))
        Wh=round(math.max(0,val_cosPhi*(compteur-OldIndex))) -- des fois que l'index de l'owl soit ré-initialisé (changement de pile...)
        
        if otherdevices[dev_HC] == 'Off' then
                UpdateDev(dev_conso,0,tostring(usage1+Wh)..';'..tostring(usage2)..';0;0;'..tostring(actual_conso)..';0')
        else
                UpdateDev(dev_conso,0,tostring(usage1)..';'..tostring(usage2+Wh)..';0;0;'..tostring(actual_conso)..';0')
        end
    
        if debug==1 then
            U1=round(val_cosPhi*U*L1)
            U2=round(val_cosPhi*U*L2)
            U3=round(val_cosPhi*U*L3)
            print("U "..U.." V ; U1 "..U1.." W ; U2 "..U2.." W ; U3 "..U3.." W ; Total "..actual_conso.." W")
        end
        
        UpdateVar(var_index,compteur)     
end

return commandArray
Attention ! J'utilise un CM180 triphasé ! Pour la version monophasée, il faut adapter les lignes 44, 47 et 57..60

Les choses à créer :
- un device pour l'owl (owl_3ph chez moi)
- un switch sur planning pour les heures creuses (=1 en HC, =0 en HP)
- un P1 smart counter pour la consomation électrique
- une variable "Décimal" pour le cos phi, à initialiser à 0.9
- une variable "Entier" pour l'index de l'owl, à initialiser à l'index de l'owl
La tension en volt est récupérée depuis les préférences de domoticz

Pour les pzem, il y a un excellent tuto là : viewtopic.php?f=24&t=4687#p40253
Freddy69j
Messages : 15
Inscription : 17 sept. 2019, 14:31

Re: Mesure puissance OWL

Message par Freddy69j »

Bonjour aleph0,
Merci pour toutes ces infos et surtout pour le script Lua. Bon Je ne comprends pas tout sur le script car je ne suis pas franchement à l'aise dans ce domaine... Mais je vais quand même regarder tout cela et voir si je peux l'adapter pour mon cas qui est certes moins compliqué que le tiens car je suis en "monophasé" et uniquement en heures pleines (pas de HC).

Si vraiment je n'y arrive pas je ferai appel à tes compétences si cela ne te dérange pas.

Concernant le PZEM, j'avais vu le topic... Intéressant ...

Merci
Freddy69j
Messages : 15
Inscription : 17 sept. 2019, 14:31

Re: Mesure puissance OWL

Message par Freddy69j »

Bonjour, Bon, j'ai regardé le script LUA et essayé de l'adapter à mon cas. Franchement je ne sais pas si c'est parce que je suis hermétique au langage de programmation mais je n'ai pas tout compris. je ne vois pas par exemple la raison pour moi de créer un P1 Smart Meter vu que dans les matériels ne figurent que ce type sous USB ou Lan..que je ne possède pas... et bien d'autres choses... Enfin bref, à ma grande désolation, je n'ai pas les connaissances et suis très très léger avec tout cela... :(
Donc une aide ne sera pas de trop si vous avez un peu de temps... ;)
Mon besoin est simple :
j'ai un dispositif OWL_CM180 (IDX201)qui récupère les valeurs de puissance instantanée (W) et de puissance consommée (Wh), voir l'image jointe (dispositif OWL_CM10).
En se basant sur ce dispositif, je voudrais créer un autre dispositif équivalent (virtuel sûrement) nommé "OWL_CM180 corrigé" par exemple, me remontant les mêmes valeurs (W et Wh) diminuées de 20% (ces 20% pouvant être la valeur du cosphi à 0,8 configuré dans "UserVariables en décimal" dans les paramètres de domoticz).
Ceci à partir d'un script LUA ou autres.
Pour Info je suis en monophasé et pas de HCreuses, tout en HPleines...

Grand merci
Cdlt
Pièces jointes
dispositif OWL_180.jpg
dispositif OWL_180.jpg (9.28 Kio) Consulté 1897 fois
Répondre