[LUA] Repartition Consommation HC / HP...

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Repartition Consommation HC / HP...

Message par vil1driver »

T'as bien installé les pré-requis ?

Code : Tout sélectionner

sudo apt-get install build-essential -y
sudo apt-get install cmake libboost-dev libboost-thread-dev libboost-system-dev libsqlite3-dev subversion curl libcurl4-openssl-dev libusb-dev zlib1g-dev libssl-dev
Ps: pas acqueri mais acquis ;)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: Repartition Consommation HC / HP...

Message par jacques68 »

Faute corrigé...... :oops: :oops: :oops:

Code : Tout sélectionner

sudo apt-get install build-essential -y
:mrgreen: :mrgreen: suis pas sur d'avoir installé cette ligne......
Je recommence.... :geek:
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: Repartition Consommation HC / HP...

Message par jacques68 »

Bonjour à tous!!!

Comme je le disais dans mes précédents messages, j'avais un soucis dans la remontée des infos des deux compteurs heures creuses et heures pleines avec des valeurs totalement erronées.
Même soucis rencontrés par Avbox qui utilise comme moi un optocoupleur et non un CM 180 comme au début du tutos .

Travaillant actuellement de nuit j'ai la journée pour me reposer.....et chercher a comprendre ce qui cloche... :D
Et je pense être arrivé à trouver quelque chose, c'est que le CM180 ne récupère pas les mêmes valeurs (ou plutôt interprète les valeurs différemment).
Enfin c'est ma conclusion.......

Toujours est il que j'ai entrepris la modification du code. N'y connaissant rien du tout ça n'a pas été chose facile, mais avec un peu de logique et d'autres tutos j'arrive un peu à m'en sortir.
Bref j'ai réussi à faire fonctionner le compteur heures pleines. Actuellement il me donne bien la valeur en kwh de la consommation totale heures creuses, la consommation journalière heures pleines, et la puissance instantanée utilisée en watt .

C'est déjà pas mal et un bon début. Pour le compteur heures creuses, pour l'instant la conso journalière n'est pas bonne. J'ai modifié le code et j'attends le prochain passage en heures creuses pour voir ce qu'il me donne.
Autre point à vérifier, c'est comment ce comporte les 2 compteurs d'un jour à l'autre. En principe la conso journalière devrait se remettre à zéro a minuit.
D'après mes logs cela semble correct, mais à confirmer dans les prochains jours....

Voila si après tout est OK je mettrai le code ici et j'expliquerai plus en détail mes sources d'inspirations!!! :mrgreen: :mrgreen: :mrgreen:
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: Repartition Consommation HC / HP...

Message par jacques68 »

12h30 passage en heures creuses.
Compteur Heures pleines c'est arreté de comptabilisé et à gardé ça valeur en mémoire -- OK
Compteur Heures pleines à commencé a comptabiliser avec valeur exact de la consommation total actuel des heures creuses. LA consommation journalière elle est fausse. Normal cette nuit il ne c'est pas mis à zéro

Faudra attendre demain pour voir ce que ça donne, mais pour l'instant tout semble Ok je laisse tourner pour voir!!! :mrgreen: :mrgreen:
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: Repartition Consommation HC / HP...

Message par jacques68 »

:D :D :D
Ok le script fonctionne nickel!!! j'ai bien la répartition HC HP qui s'affiche dans mes logs comme l'on aperçoit sur la première page de ce tuto!!!

Bon faut que je nettoie un peu mon script car il est pas très propre, contient pleins de trucs inutiles!!! :mrgreen: :mrgreen:
AVBoX
Messages : 32
Inscription : 08 nov. 2014, 08:45

Re: Repartition Consommation HC / HP...

Message par AVBoX »

jacques68 a écrit ::D :D :D
Ok le script fonctionne nickel!!! j'ai bien la répartition HC HP qui s'affiche dans mes logs comme l'on aperçoit sur la première page de ce tuto!!!

Bon faut que je nettoie un peu mon script car il est pas très propre, contient pleins de trucs inutiles!!! :mrgreen: :mrgreen:
Excellent, quel est le script que tu as modifié ? tu pourras le mettre en ligne ?

Merci
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: Repartition Consommation HC / HP...

Message par jacques68 »

C'est le script présent sur la première page .
Je suis entrain de le fignoler pour le rendre plus compréhensible
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: Repartition Consommation HC / HP...

Message par jacques68 »

Alors voila. Après plusieurs jours de tests, je n'ai eu aucun bug. J'ai modifié donc le script de chandler45 afin d'obtenir les relevés conso des heures creuses et pleines de chaque jour.
A la base son script fonctionne pour ceux qui une sonde CM180 pour récupérer les infos du compteur EDF. Pour tous ceux qui comme moi ont mi un optocoupleur relié sur le compteur EDF, le script ne fonctionne pas.
Avant j'obtenais ceci:
domoticz conso.png
domoticz conso.png (83.82 Kio) Consulté 8477 fois

Maintenant après modif du script j'ai ceci:
EDF HC HP.png
EDF HC HP.png (40.03 Kio) Consulté 8477 fois
:D :D :D C'est déja plus parlant.

Maintenant la mise en place:

Il faut prendre tout le tuto de chandler45 présent sur la première page, faire l'étape 1 et l'étape 2
L'étape 3 il faut prendre mon code que voici:

Code : Tout sélectionner

-- script domoticz/scripts/lua/script_device_compteurHC-HP.lua

-- Initialisation des variables locales
local capteurGlobal = uservariables['CapteurGlobal']
local capteurCptHP = uservariables['CapteurCptHP']
local capteurCptHC = uservariables['CapteurCptHC']
local idxCptHP = uservariables['IdxCptHP']
local idxCptHC = uservariables['IdxCptHC']
local flagHC = uservariables['FlagHC']
local flagHP = uservariables['FlagHP']


-- Mode debug Oui / Non
local debug = uservariables['debug']

-- Fonction de mise à jour
function update(device, id, power, energy, index)
    commandArray[index] = {['UpdateDevice'] = id .. "|0|" .. power .. ";" .. energy}
    return
end

commandArray = {}

-- On prend en compte a chaque changement de valeur du compteur global 
if (devicechanged[capteurGlobal]) then
    if (debug == 'OUI') then
        print('-- Calcul Compteurs HC / HP --')
        print('CapteurGlobal = '..capteurGlobal)
        print('CapteurCptHP = '..capteurCptHP)
        print('CapteurCptHC = '..capteurCptHC)
        print('idxCptHP = '..tostring(idxCptHP))
        print('idxCptHC = '..tostring(idxCptHC))
        print('flagHP = '..tostring(flagHP))
        print('flagHC = '..tostring(flagHC))
        
    end
   
-- extraction de la puissance consommé en watt
-- Attention remplacer dans la ligne ci-dessous 'Compteur EDF' par le nom de votre capteur principal, ne pas mettre l'uservariable 'CapteurGlobal' ca ne marche pas
-- extraction de la valeur en watt , (P1 smart meter, ex: "Data" : "17564059;9855288;0;0;517;0")
a, b, x, y, watt, z = string.match(otherdevices_svalues['Compteur EDF'], "(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*)")
usage = tonumber(watt)



    -- Recuperation des valeurs du compteur principal 
    local heurescreuses
    local heurespleines
    heurespleines, heurescreuses = otherdevices_svalues[capteurGlobal]:match("([^;]+);([^;]+)")
    heurespleines = tonumber(heurespleines)
    heurescreuses = tonumber(heurescreuses)
    watt = tonumber(watt)
   
    if (debug == 'OUI') then
        print('Heures pleines = '..tostring(heurespleines)..' / Heures Creuses = '..tostring(heurescreuses)..' / Watt = '..tostring(usage)..' ')
    end

    local consoCumuleCible
    local consoInstantCible

    if (otherdevices[flagHC] == 'On') then

        -- Periode heures creuse
        -- Recupération des valeurs actuelles du compteur Heures Creuses
        consoInstantCible, consoCumuleCible = otherdevices_svalues[capteurCptHC]:match("([^;]+);([^;]+)")
        -- Seul le cumule du compteur nous interesse pour calculer la nouvelle valeur
        consoCumuleCible = tonumber(consoCumuleCible)


        if (debug == 'OUI') then
            print('Compteur cible = HC')
            print('Valeur precedente = '..tostring(consoCumuleCible))
        end

        -- Calcul de la conso journalière HC
        consoCumuleCible = consoCumuleCible + heurescreuses
        -- Mise à jour du compteur
        update(capteurCptHC, idxCptHC, usage , heurescreuses, 1)

        -- Mise à 0 de la conso intantanee du compteur HP
        consoInstantHP, consoCumuleHP = otherdevices_svalues[capteurCptHP]:match("([^;]+);([^;]+)")
        consoInstantHP = 0
        update(capteurCptHP, idxCptHP, consoInstantHP, consoCumuleHP, 2)
    else  




   if (otherdevices[flagHP] == 'On') then

        -- Periode heures pleines
        -- Récuperation des valeurs du compteur Heures Pleines
        consoInstancible, consoCumuleCible = otherdevices_svalues[capteurCptHP]:match("([^;]+);([^;]+)")
        -- Seul le cumule du compteur nous interesse pour calculer la nouvelle valeur
        consoCumuleCible = tonumber(consoCumuleCible)

        if (debug == 'OUI') then
            print('Compteur cible = HP')
            print('Valeur precedente = '..tostring(consoCumuleCible))
        end

        -- calcul de la conso journaliere HP
        consoCumuleCible = consoCumuleCible + heurespleines
        -- Mise à jour du compteur
        update(capteurCptHP, idxCptHP, usage , heurespleines, 3)

        -- Mise à 0 de la conso intantanée du compteur HC
        consoInstantHC, consoCumuleHC = otherdevices_svalues[capteurCptHC]:match("([^;]+);([^;]+)")
        consoInstantHC = 0
        update(capteurCptHC, idxCptHC, consoInstantHC, consoCumuleHC, 4)
    end


    if (debug == 'OUI') then
        print('-- Fin Calcul Compteur HC / HP --')
    end
end
end

return commandArray


Pour les variables :

CapteurGlobal : Nom du capteur physique que vous avez mi lors de la création de votre compteur EDF. Pour moi comme le montre l'image au dessus c'est "Compteur EDF"
CapteurCptHP : nom du capteur virtuelle HP (chez moi Compteur Electrique HP)
CapteurCptHC : nom du capteur virtuelle HC (chez moi Compteur Electrique HC)
idxCptHP : IDX du capteur virtuelle HP
idxCptHC : IDX du capteur virtuelle HC
flagHP : Nom du switch HP
flagHC : Nom du switch HC

Pas besoin de la variable LastValueCptElecGlobal pour mon script

Voila j'espère que cela fonctionne chez vous comme chez moi
AVBoX
Messages : 32
Inscription : 08 nov. 2014, 08:45

Re: Repartition Consommation HC / HP...

Message par AVBoX »

Je met en route le script, pour moi il fonctionne a voir pendant le switch en heure creuse (23h)

Par contre attention a bien modifier la ligne 41 du scripts par le nom du capteur principal:

Code : Tout sélectionner

-- extraction de la puissance consommé en watt
-- Attention remplacer dans la ligne ci-dessous 'Compteur EDF' par le nom de votre capteur principal, ne pas mettre l'uservariable 'CapteurGlobal' ca ne marche pas
-- extraction de la valeur en watt , (P1 smart meter, ex: "Data" : "17564059;9855288;0;0;517;0")
a, b, x, y, watt, z = string.match(otherdevices_svalues['Compteur EDF'], "(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*)")
usage = tonumber(watt)
Merci jacques68 pour cette modif ;)
jacques68
Messages : 241
Inscription : 10 mai 2015, 12:21

Re: Repartition Consommation HC / HP...

Message par jacques68 »

Oui comme tu dis la ligne 41 est la pus importante!! :lol: :lol: :lol:
Normalement il devrait bien switché en heure creuse. S'il ne le fait pas c'est p^lus en amont qu'il faudra voir le soucis.
Le premier jour le cumul peut etre erroné mais après une journée tout repartira a zéro et ce devr :mrgreen: ait rouler!!
Répondre