Repartition Consommation HC / HP...

Vous avez crée 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.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
Pinpin
Messages : 7
Inscription : 01 janv. 2016, 19:07

Re: Repartition Consommation HC / HP...

Messagepar Pinpin » 25 mars 2017, 17:20

Bonjour à tous,

Je lutte depuis plusieurs heure avec ce script ! J'ai utilisé le script de la première page et niveau compteurs, switchs et variables tout semble correct

Code : Tout sélectionner

LUA: -- Calcul Compteurs HC / HP --
2017-03-25 17:12:32.216 LUA: CapteurGlobal = CM180
2017-03-25 17:12:32.216 LUA: CapteurCptHP = Compteur Heures Pleines
2017-03-25 17:12:32.217 LUA: CapteurCptHC = Compteur Heures Creuses
2017-03-25 17:12:32.217 LUA: idxCptHP = 2131
2017-03-25 17:12:32.217 LUA: idxCptHC = 2132
2017-03-25 17:12:32.217 LUA: flagHP = EDF Heures Pleines
2017-03-25 17:12:32.217 LUA: flagHC = EDF Heures Creuses
2017-03-25 17:12:32.217 LUA: LastValueCptElecGlobal = 15920.76
2017-03-25 17:12:32.217 LUA: Conso Instant = 434 / Conso Cumule = 15921458
2017-03-25 17:12:32.217 LUA: Delta conso = 15905537.24
2017-03-25 17:12:32.217 LUA: Compteur cible = HP
2017-03-25 17:12:32.217 LUA: Valeur precedente = nil


Mais dans les logs j'ai toujour cette erreur là.

Code : Tout sélectionner

EventSystem: in LUA Compteur HC/HP: [string "-- script domoticz/scripts/lua/script_device_..."]:91: attempt to perform arithmetic on local 'consoCumuleCible' (a nil value)


Je vois pas comment récupérer l'info.

Si quelqu'un à la solution...

Bonne journée :)

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Starnight
Messages : 47
Inscription : 20 déc. 2016, 10:54

Re: Repartition Consommation HC / HP...

Messagepar Starnight » 25 mars 2017, 18:17

Est ce que la variable de idxcpthp est bien en nombre ? On dirait qu'il ne trouve pas une chaine arithmetic. Ou il y a une erreur dans le script qui empeche le calcul...

Pinpin
Messages : 7
Inscription : 01 janv. 2016, 19:07

Re: Repartition Consommation HC / HP...

Messagepar Pinpin » 25 mars 2017, 18:24

Oui, c'est 2131 comme dans mon post au-dessus.

Seb13
Messages : 118
Inscription : 07 janv. 2016, 23:46

Re: Repartition Consommation HC / HP...

Messagepar Seb13 » 25 mars 2017, 18:54

Tu peux nous donner la ligne 91 de ton script ?

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Pinpin
Messages : 7
Inscription : 01 janv. 2016, 19:07

Re: Repartition Consommation HC / HP...

Messagepar Pinpin » 25 mars 2017, 19:52

oui biensur et merci pour ton aide,

Code : Tout sélectionner

 print('Valeur ajustee = '..tostring(consoCumuleCible + consoDelta))


[Edit] Je rajoute les captures d'écran de mon installation et le script entier. Si ça peut servir...

Image
Image
Image
Image

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']
local lastValueCptElecGlobal = uservariables['LastValueCptElecGlobal']

-- 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))
        print('LastValueCptElecGlobal = '..tostring(lastValueCptElecGlobal))
    end
   
    -- Recuperation des valeurs du compteur global
    local consoCumule
    local consoInstant
    consoInstant, consoCumule = otherdevices_svalues[capteurGlobal]:match("([^;]+);([^;]+)")
    consoInstant = tonumber(consoInstant)
    consoCumule = tonumber(consoCumule)
   
    if (debug == 'OUI') then
        print('Conso Instant = '..tostring(consoInstant)..' / Conso Cumule = '..tostring(consoCumule)..' ')
    end

    -- Calcul de l'ecart avec le dernier envoi de donnees
    lastValueCptElecGlobal = tonumber(lastValueCptElecGlobal)
    local consoDelta = consoCumule - lastValueCptElecGlobal

    if (debug == 'OUI') then
        print('Delta conso = '..tostring(consoDelta))
    end

    local consoCumuleCible
    local consoInstantCible

    if (otherdevices[flagHC] == 'On') then
        -- Periode heures creuse
        -- Recuperation des valeurs du compteur global
        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))
            print('Valeur ajustee = '..tostring(consoCumuleCible + consoDelta))
        end

        consoCumuleCible = consoCumuleCible + consoDelta
        -- Mise à jour du compteur
        update(capteurCptHC, idxCptHC, consoInstant, consoCumuleCible, 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     
        -- Periode heures pleines
        -- Recuperation des valeurs du compteur global
        consoInstantCible, 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))
            print('Valeur ajustee = '..tostring(consoCumuleCible + consoDelta))
        end

        consoCumuleCible = consoCumuleCible + consoDelta
        -- Mise à jour du compteur
        update(capteurCptHP, idxCptHP, consoInstant, consoCumuleCible, 3)

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

    -- Sauvegarde de la valeur du compteur global pour prochain calcul
    commandArray['Variable:LastValueCptElecGlobal'] = tostring(consoCumule)

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

return commandArray

Starnight
Messages : 47
Inscription : 20 déc. 2016, 10:54

Re: Repartition Consommation HC / HP...

Messagepar Starnight » 26 mars 2017, 22:04

Je ne suis pas un expert mais ne faut il pas que ta ligne

Code : Tout sélectionner

consoCumuleCible = consoCumuleCible + consoDelta


Soit avant les print et non apres ? Car il appelle une valeur qui n'a pas encore ete calculee par le script.

En gros que ca donne ca :

Code : Tout sélectionner

-- 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))
consoCumuleCible = consoCumuleCible + consoDelta
            print('Valeur ajustee = '..tostring(consoCumuleCible + consoDelta))
        end

       


Jme trompe peut etre je debute...

Seb13
Messages : 118
Inscription : 07 janv. 2016, 23:46

Re: Repartition Consommation HC / HP...

Messagepar Seb13 » 27 mars 2017, 11:09

Je commencerai par mettre en commentaire :

print('Valeur ajustee = '..tostring(consoCumuleCible + consoDelta))

Pour voir si j'ai toujours un message d'erreur, histoire de valider la ligne.

Ensuite, je ferai un print de consoCumuleCible et un print de consoDelta sur 2 lignes, pour savoir qui a un problème.
Si pas de pb alors c'est le "+" qui ne va pas... c'est à dire que l'on peut pas faire d’addition dans un tostring (A confirmer)

Dit nous ce que cela donne avec ces tests.

Pinpin
Messages : 7
Inscription : 01 janv. 2016, 19:07

Re: Repartition Consommation HC / HP...

Messagepar Pinpin » 27 mars 2017, 14:56

Ok, merci pour votre aide.
Je pars au travail maintenant, je testerais ca demain matin.

Bonne journée

Starnight
Messages : 47
Inscription : 20 déc. 2016, 10:54

Re: Repartition Consommation HC / HP...

Messagepar Starnight » 02 avr. 2017, 11:06

Des news ca fonctionne ?

Pinpin
Messages : 7
Inscription : 01 janv. 2016, 19:07

Re: Repartition Consommation HC / HP...

Messagepar Pinpin » 03 avr. 2017, 09:28

Bonjours,
Non j'ai toujours des soucis dans les logs...je creuse mais je suis pas mal occupé ailleurs.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.



Revenir vers « La Bibliothèque Scripts et Tutos »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 6 invités