[LUA] Repartition Consommation HC / HP...
Re: Repartition Consommation HC / HP...
C'est DomoticZ qui gère les deux usages jours/nuit nativement dans le device de compteur (ce n'est pas celui de puissance)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Repartition Consommation HC / HP...
ah ok il prend les infos d'un compteur total moi en étant juste en hc ou hp sa ne le fera pas
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Repartition Consommation HC / HP...
bon j'étais optimiste avec mon script à 5 ou 6 lignes
j'ai écris ceci, pas de domoticz sous la main donc pas testé
J'ai tenté de faire simple
peux tu essayer (pense à désactiver l'autre)
ce script doit être de type (trigger) DEVICE !

pas certain que ça fonctionne sans couac (il faudra probablement aller lire le compteur HC pour ajouter sa valeur au changement de cycle..hp->hc.) mais on est sur une meilleure base je pense.
Sur ce bonnes vacances à tous
j'ai écris ceci, pas de domoticz sous la main donc pas testé
J'ai tenté de faire simple
peux tu essayer (pense à désactiver l'autre)
ce script doit être de type (trigger) DEVICE !

Code : Tout sélectionner
-- script de type DEVICE
local capteurKWH = 'OWL_Intuition' -- nom du capteur remontant des kwh
local capteurW = 'OWL1' -- nom du capteur remontant des watt
local memo = 'CONSO_LAST' -- nom de la variable utilisateur de type chaîne pour mémo
local CptHP = 'Compteur Electrique HP' -- nom du capteur virtuel de type intant+compter pour les heures pleines
local CptHC = 'Compteur Electrique HC' -- nom du capteur virtuel de type intant+compter pour les heures creuse
local debutHP = '07:00' -- heure au format '00:00' de début de la plage heures pleines
local finHP = '22:00' -- heure au format '00:00' de fin de la plage heures pleines
-- initialisation
local init = true -- true = mettre les capteurs virtuels à zero
-- false = fonctionnement normal du script
-- fin de la partie modifiable
commandArray = {}
-- initialisation
if init then
commandArray['Variable:'..memo] = 'HP;0'
commandArray[#commandArray+1] = {['UpdateDevice'] = otherdevices_idx[CptHP] .. "|0|0;0"}
commandArray[#commandArray+1] = {['UpdateDevice'] = otherdevices_idx[CptHC] .. "|0|0;0"}
print("script HP HC initialisé")
print("penser à passer init à false")
do return end
end
-- récupère l'heure actuelle au format '00:00'
local heure = string.sub(os.date("%X"), 1, 5)
-- lancement du script sur détection maj compteur
if devicechanged[capteurW] then
-- extraction valeurs compteurs physiques
val_1, val_2 = otherdevices_svalues[capteurW]:match("([^;]+);([^;]+)")
local watt = tonumber(val_1)
val_1, val_2 = otherdevices_svalues[capteurKWH]:match("([^;]+);([^;]+)")
local kwh = tonumber(val_2)
-- lecture memo
val_1, val_2 = uservariables[memo]:match("([^;]+);([^;]+)")
local cycle_last = val_1
local kwh_last = tonumber(val_2)
-- en HP
if heure > debutHP and heure < finHP then
-- détection changement de cycle
if cycle_last == 'HC' then
-- écriture memo
commandArray['Variable:'..memo] = 'HP;'..kwh
end
-- calcul écart
if kwh >= kwh_last then
kwh = kwh - kwh_last
end
-- maj compteur HP
commandArray[#commandArray+1] = {['UpdateDevice'] = otherdevices_idx[CptHP] .. "|0|" .. watt .. ";" .. kwh}
-- maj compteur HC
commandArray[#commandArray+1] = {['UpdateDevice'] = otherdevices_idx[CptHC] .. "|0|0;" .. kwh_last}
-- en HC
else
-- détection changement de cycle
if cycle_last == 'HP' then
-- écriture memo
commandArray['Variable:'..memo] = 'HC;'..kwh
end
-- calcul écart
if kwh >= kwh_last then
kwh = kwh - kwh_last
end
-- maj compteur HP
commandArray[#commandArray+1] = {['UpdateDevice'] = otherdevices_idx[CptHP] .. "|0|0;" .. kwh_last}
-- maj compteur HC
commandArray[#commandArray+1] = {['UpdateDevice'] = otherdevices_idx[CptHC] .. "|0|" .. watt .. ";" .. kwh}
end
end
return commandArray
Sur ce bonnes vacances à tous
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
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Repartition Consommation HC / HP...
il ne veux pas importé dans Blockly script data n'es pas valide
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Repartition Consommation HC / HP...
J'ai pris la première photo sur Google qui montre le Trigger
Mais il va de soi que c'est un script lua.
Mais il va de soi que c'est un script lua.
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
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Repartition Consommation HC / HP...
ok mais vue que Blockly je ne connais pas du tout lol
écrire ça comme ça sens rien chapeau
ok mais vue que Blockly je ne connais pas du tout lol
cette ligne me renvoie une erreur
écrire ça comme ça sens rien chapeau
ok mais vue que Blockly je ne connais pas du tout lol
cette ligne me renvoie une erreur
Code : Tout sélectionner
commandArray['Variable:'..memo] = 'HP;0'
attempt to index a nil value (global 'commandArray')
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Repartition Consommation HC / HP...
Ahh 
Autant pour moi
Il manque cette ligne
Que tu peux placer juste après celle ci
Autant pour moi
Il manque cette ligne
Code : Tout sélectionner
commandArray = {}
Code : Tout sélectionner
-- fin de la partie modifiable
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
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Repartition Consommation HC / HP...
il aime pas cette partie comme pour l'autre script
si je met une valeur famtome plus d"erreur pour ces ligne alors que la formule dit bien de prendre la 1er ou 2eme valeur ("([^;]+);([^;]+)")
pour cette partie j'ai pas encore réussis a trouver l'erreur
il faudrai un capteur virtuel instantane + constant 640.000;18882.000
j'ai pas encore trouver pour le faire
Code : Tout sélectionner
-- extraction valeurs compteurs physiques
val_1, val_2 = otherdevices_svalues[capteurW]:match("([^;]+);([^;]+)")
local watt = tonumber(val_1)
val_1, val_2 = otherdevices_svalues[capteurKWH]:match("([^;]+);([^;]+)")
local kwh = tonumber(val_2)
-- lecture memo
val_1, val_2 = uservariables[memo]:match("([^;]+);([^;]+)")Code : Tout sélectionner
print(otherdevices_svalues['OWL_Intuition'])
print(otherdevices_svalues['OWL1'])
2020-08-07 15:16:09.564 Status: LUA: 0.000;18882.000
2020-08-07 15:16:09.564 Status: LUA: 640.000;0.000
Code : Tout sélectionner
-- extraction valeurs compteurs physiques
--val_1, val_2 = otherdevices_svalues[capteurW]:match("([^;]+);([^;]+)")
val_1 = otherdevices_svalues[capteurW]:match("([^;]+)")
val_2 = otherdevices_svalues[capteurW]:match("([^;]+)")
local watt = tonumber(val_1)
--val_1, val_2 = otherdevices_svalues[capteurKWH]:match("([^;]+);([^;]+)")
val_0, val_1 = otherdevices_svalues[capteurKWH]:match("([^;]+);([^;]+)")
val_0, val_2 = otherdevices_svalues[capteurKWH]:match("([^;]+);([^;]+)")
local kwh = tonumber(val_2)Code : Tout sélectionner
val_1, val_2 = uservariables[memo]:match("([^;]+);([^;]+)")
attempt to index a nil value (field '?')
j'ai pas encore trouver pour le faire
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Repartition Consommation HC / HP...
Tu as bien créé la variable utilisateur ?

Pour les erreurs avec val_1 val_2,
que te dit domoticz au juste ?
Code : Tout sélectionner
local memo = 'CONSO_LAST'
-- nom de la variable utilisateur de type chaîne pour mémo

Pour les erreurs avec val_1 val_2,
que te dit domoticz au juste ?
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
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Repartition Consommation HC / HP...
Bonjour, oui mais je sais pas si je l'ai bien rentré
pour
l'erreur est
Code : Tout sélectionner
Nom de la variable:
memo
Type de variable:
Chaîne
Valeur de la variable:
CONSO_LAST
Code : Tout sélectionner
val_1, val_2 = uservariables[memo]:match("([^;]+);([^;]+)")Code : Tout sélectionner
attempt to index a nil value (field '?')