Page 9 sur 33
Re: Repartition Consommation HC / HP...
Publié : 23 sept. 2015, 15:16
par Triple0s
Bonjour
Moi je rencontre un petit soucis
En fait pour le compteur total, j'utilise un compteur virtuel.
De ce fait, le script ne détecte pas le changement d'état
Quelqu'un aurait une solution, a part d'acheter un vrai compteur

Re: Repartition Consommation HC / HP...
Publié : 23 sept. 2015, 15:29
par jackslayter
faire pour que le script se lance toute les minutes
Re: Repartition Consommation HC / HP...
Publié : 23 sept. 2015, 15:58
par Triple0s
J'y est bien pensé à transformer en script_TIME et en enlevant du coup la condition de mise à jour du device mais j'obtient une belle erreur qui est incompréhensible pour moi pour le moment
".....2015-09-23 15:57:00.138 Error: EventSystem: /home/pi/domoticz/scripts/lua/script_time_cpthchp.lua:28: attempt to concatenate local 'capteurGlobal' (a nil value)"
autant j'arrive à relire et modifier quelques scripts mais la je n'y arrive pas

Re: Repartition Consommation HC / HP...
Publié : 24 sept. 2015, 22:30
par Triple0s
jackslayter a écrit :faire pour que le script se lance toute les minutes
Si quelqu'un aune solution

parce quela je ne vois pas

Re: Repartition Consommation HC / HP...
Publié : 25 sept. 2015, 11:34
par jacques68
Pour moi d'après ton erreur, ton capteur global n'a aucune valeur récupérable par le script!!!
Comment renseignes tu ce capteur global?
Re: Repartition Consommation HC / HP...
Publié : 25 sept. 2015, 11:35
par heartblood
Triple0s a écrit :jackslayter a écrit :faire pour que le script se lance toute les minutes
Si quelqu'un aune solution

parce quela je ne vois pas

Au pire, envoie ton script modifié, on verra comment ton capteur global est implémenté.
Re: Repartition Consommation HC / HP...
Publié : 25 sept. 2015, 13:50
par Triple0s
Pour le capteur global il s'agit d'un capteur virtuel electrique (Instant + Compteur)
Si je change le type, c'est mon script de chauffage qui plante.
Je me sert du script de ce topic
Code : Tout sélectionner
-- script domoticz/scripts/lua/script_device_compteurHCHP.lua
-- Initialisation des variables locales
local capteurGlobal = uservariables['Conso Totale']
local capteurCptHP = uservariables['Conso HPleines']
local capteurCptHC = uservariables['Conso HCreuses']
local idxCptHP = uservariables['112']
local idxCptHC = uservariables['111']
local flagHC = uservariables['HC_HP']
-- local flagHP = uservariables['FlagHP']
-- Mode debug Oui / Non
local debug = uservariables['OUI']
-- 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
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))
-- 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[capteurGlobal], "(%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)
print('Heures pleines = '..tostring(heurespleines)..' / Heures Creuses = '..tostring(heurescreuses)..' / Watt = '..tostring(usage)..' ')
local consoCumuleCible
local consoInstantCible
if (otherdevices[flagHP] == 'Off') 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)
print('Compteur cible = HC')
print('Valeur precedente = '..tostring(consoCumuleCible))
-- 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)
print('Compteur cible = HP')
print('Valeur precedente = '..tostring(consoCumuleCible))
-- 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
print('-- Fin Calcul Compteur HC / HP --')
end
end
return commandArray
le capteur "conso totale" est renseigné par ce script de chauffage
Code : Tout sélectionner
-- Ce script permet de maintenir la température
--------------------------------
------ Variables à éditer ------
--------------------------------
nom = 'chambre d amis' --Affichage dans le log
local consigne_conf = tonumber(otherdevices_svalues['Therm_Chambres']) -- Température de consigne confort
local consigne_eco = tonumber(otherdevices_svalues['Therm_Eco']) -- Température de consigne économique
local sonde = 'Temp Amis' -- Nom de la sonde de température
local mode = 'Chauffage_mode_confort' -- Nom de l'interrupteur virtuel de sélection de mode Off=eco On=confort
local presence = 'Presence' -- Nom de l'interrupteur virtuel de thermostat (Off=abscence prolongée)
local radiateur = 'Radiateur Amis' -- Nom de l'interrupteur de chauffage
local puissance = 1000 -- puissance du chauffage en watt
local conso = 'Conso_Amis' -- nom du capteur virtuel de consommation électrique
local conso_id = 102 -- idx du capteur virtuel de consommation électrique
local conso_total = 'Conso Totale' -- nom du capteur virtuel de consommation électrique totale
local conso_total_id = 117 -- idx du capteur virtuel de consommation électrique totale
--------------------------------
-- Fin des variables à éditer --
--------------------------------
commandArray = {}
local temperature = tonumber(string.sub(otherdevices_svalues[sonde],1,4)) -- Température relevée
-- si présence détectée et chauffage sur normal
if ((otherdevices[presence] == 'On') and (otherdevices[mode] == 'On')) then
consigne = consigne_conf
else
consigne = consigne_eco
end
if (temperature < consigne) then
commandArray[radiateur]='On'
print('Chauffage ' .. nom .. ' -. ON .-')
-- envoie de la conso dans le capteur virtuel d'énergie
npower, energy = string.match(otherdevices_svalues[conso], "(%d+%.*%d*);(%d+%.*%d*)")
energy = tonumber(energy) + (puissance / 60)
-- conso dans le capteur virtuel d'énergie total
npower2, energy2 = string.match(otherdevices_svalues[conso_total], "(%d+%.*%d*);(%d+%.*%d*)")
energy2 = tonumber(energy2) + (puissance / 60)
-- envoi
commandArray[1]={['UpdateDevice'] = conso_id .. '|0|' .. puissance .. ';' .. energy }
commandArray[2]={['UpdateDevice'] = conso_total_id .. '|0|' .. puissance .. ';' .. energy2 }
else
commandArray[radiateur]='Off'
print('Chauffage ' .. nom .. ' -. OFF .-')
-- envoie de la conso dans le capteur virtuel d'énergie
npower, energy = string.match(otherdevices_svalues[conso], "(%d+%.*%d*);(%d+%.*%d*)")
energy = tonumber(energy)
-- envoie de la conso dans le capteur virtuel d'énergie total
npower2, energy2 = string.match(otherdevices_svalues[conso_total], "(%d+%.*%d*);(%d+%.*%d*)")
energy2 = tonumber(energy2)
-- envoi
commandArray[1]={['UpdateDevice'] = conso_id .. '|0|' .. 0 .. ';' .. energy }
commandArray[2]={['UpdateDevice'] = conso_total_id .. '|0|' .. 0 .. ';' .. energy2 }
end
print('il fait '..temperature..'C pour une consigne de '..consigne..'C souhaite dans la ' .. nom .. '')
return commandArray
Re: Repartition Consommation HC / HP...
Publié : 25 sept. 2015, 14:31
par heartblood
"Conso Totale" est un module virtuel, dans le script, il ressort comme une variable. Je me trompe peut être mais le problème doit venir de là.
Re: Repartition Consommation HC / HP...
Publié : 25 sept. 2015, 14:37
par heartblood
Tu as bien fait les déclarations des variables en page 2 ?
Re: Repartition Consommation HC / HP...
Publié : 25 sept. 2015, 15:07
par Triple0s
Ok je crois bien que cela vient de la alors
Car mes consos sont des capteurs virtuel normalement
donc en virant uservariables[] et en laissant juste le nom du capteur, si ma logique est bonne, cela devrais fonctionner non ?
Que c'est dure de débuter
Heureusement que vous êtes la pour aider
