[LUA] Repartition Consommation HC / HP...
Re: Repartition Consommation HC / HP...
Le principe est que les scripts écrivent dans les capteurs virtuels : une fois le(s) capteur(s) créé(s), il faut aller dans le script et modifier les lignes en fonction du nom de ton capteur (ou de son idx).
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...
la j'ai tout fait


mais je cherche ou on modifier le capteur virtuel"Compteur_general"
Code : Tout sélectionner
-- script domoticz/scripts/lua/script_device_compteurHC-HP.lua
-- Initialisation des variables locales
local capteurGlobal = uservariables['Compteur_general']
local capteurCptHP = uservariables['Compteur Electrique HP']
local capteurCptHC = uservariables['Compteur Electrique HC']
local idxCptHP = uservariables['22']
local idxCptHC = uservariables['21']
local flagHC = uservariables['EDF Heures Creuses']
local flagHP = uservariables['EDF Heures Pleines']


mais je cherche ou on modifier le capteur virtuel"Compteur_general"
Re: Repartition Consommation HC / HP...
Si j'ai bien compris, le compteur général semble celui de ta conso totale : cela doit être un compteur physique. Les deux capteurs virtuels à créer sont pour les HP et HC.Etape 1: les capteurs
Nous avons un déjà capteur électrique qui cumule tout ("Compteur Electrique Global"). Il faut maintenant créer 2 capteurs virtuels de type "Electrique (Instant + Compteur)". Dans mon cas, il s'agit de "Compteur Electrique HC" et "Compteur Electrique HP" comme vous pouvez le voir ci-dessus.
Par contre, attention à local capteurGlobal = uservariables['Compteur_general'] : ce sont des variables utilisateurs et non des devices. Il semblerait que le nom des capteurs soient renseignés dans les variables utilisateurs ... Pourquoi
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...
slt, j'ai juste repris le tuto pour le modifier mais en remplaçant :local capteurGlobal = uservariables['Compteur_general']
par local capteurGlobal = uservariables['OWL_Intuition']
il ne ce passe rien j'essais de trouver comment faire mais je débute donc pas évident de comprendre
Apres je me demande si mon problème ne viendrai pas du fait que mon capteur OWL_Intuition et la pince donne 2 information le capteur OWL_Intuition les kWh et la pince les watts
il faudrait un capteur qui donne les 2 informations instant + compter non ?
par local capteurGlobal = uservariables['OWL_Intuition']
il ne ce passe rien j'essais de trouver comment faire mais je débute donc pas évident de comprendre
Apres je me demande si mon problème ne viendrai pas du fait que mon capteur OWL_Intuition et la pince donne 2 information le capteur OWL_Intuition les kWh et la pince les watts
il faudrait un capteur qui donne les 2 informations instant + compter non ?
Re: Repartition Consommation HC / HP...
C'est bien ça, aucune "donnée/paramètre" n'est stockée dans le script. Toutes les infos sont normalement à mettre dans des variables locales.
EDIT : Tout était déjà expliqué en page 2 : https://easydomoticz.com/forum/viewtopi ... ae9e#p4192
Une autre solution est de l'écrire comme ceci (à condition que les valeurs correspondent à celles de tes devices):
Le capteurGlobal doit être le device physique de ta mesure (celui qui est lu).
Les capteurCptHP et capteurCptHC sont les devices virtuels que tu doit créer pour enregistrer l'info de mesure.
Les idxCptHP et idxCptHC correspondent aux IDX des capteurCptHP et capteurCptHC (oui le script a besoin du non et du numéro...)
Les flagHC et flagHP sont deux devices virtuels dans lesquels tu dois programmer les états de HP et HC.
EDIT : Tout était déjà expliqué en page 2 : https://easydomoticz.com/forum/viewtopi ... ae9e#p4192
Une autre solution est de l'écrire comme ceci (à condition que les valeurs correspondent à celles de tes devices):
Code : Tout sélectionner
-- Initialisation des variables locales
local capteurGlobal = 'Compteur_general'
local capteurCptHP = 'Compteur Electrique HP'
local capteurCptHC ='Compteur Electrique HC'
local idxCptHP = '22'
local idxCptHC ='21'
local flagHC = 'EDF Heures Creuses'
local flagHP = 'EDF Heures Pleines'Les capteurCptHP et capteurCptHC sont les devices virtuels que tu doit créer pour enregistrer l'info de mesure.
Les idxCptHP et idxCptHC correspondent aux IDX des capteurCptHP et capteurCptHC (oui le script a besoin du non et du numéro...)
Les flagHC et flagHP sont deux devices virtuels dans lesquels tu dois programmer les états de HP et HC.
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...
voila je l'ai refait
Maintenant j'ai ceci :
une erreur :
Code : Tout sélectionner
-- Initialisation des variables locales
local capteurGlobal = 'OWL_Intuition'
local capteurCptHP = 'Compteur Electrique HP'
local capteurCptHC ='Compteur Electrique HC'
local idxCptHP = '22'
local idxCptHC ='21'
local flagHC = 'FlagHC'
local flagHP = '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[OWL_Intuition], "(%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 commandArrayCode : Tout sélectionner
2020-08-02 09:43:10.938 Status: LUA: -- Calcul Compteurs HC / HP --
2020-08-02 09:43:10.938 Status: LUA: CapteurGlobal = OWL_Intuition
2020-08-02 09:43:10.938 Status: LUA: CapteurCptHP = Compteur Electrique HP
2020-08-02 09:43:10.938 Status: LUA: CapteurCptHC = Compteur Electrique HC
2020-08-02 09:43:10.938 Status: LUA: idxCptHP = 22
2020-08-02 09:43:10.938 Status: LUA: idxCptHC = 21
2020-08-02 09:43:10.938 Status: LUA: flagHP = FlagHPCode : Tout sélectionner
2020-08-02 09:44:10.956 Error: EventSystem: in script_device_compteurHC-HP: [string "-- Initialisation des variables locales ..."]:37: bad argument #1 to 'match' (string expected, got nil)Re: Repartition Consommation HC / HP...
C'est à toi de faire le boulot de débogage
Le message d'erreur t'indique la ligne qui pose problème : dans ton cas, c'est la 37 : a, b, x, y, watt, z = string.match(otherdevices_svalues[OWL_Intuition], "(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*)")
Alors oui la ligne semble compliquée, mais il faut regarder en premier les choses que tu as modifiées ... tu devrais trouver ton erreur
Alors oui la ligne semble compliquée, mais il faut regarder en premier les choses que tu as modifiées ... tu devrais trouver ton erreur
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...
j'ai trouver mon erreur mais j'en ai une nouvelle
sinon ;
la j'ai 2 équipement qui me donne les infos
OWL_Intuition idx 91 qui me donne les kWh mais pas les Watts:
OWL_Intuition idx 83 qui me donne les Watts mais pas les kWh :
le problème ne viendrai pas de la ?
Code : Tout sélectionner
2020-08-02 10:43:10.907 Error: EventSystem: in script_device_compteurHC-HP: [string "-- Initialisation des variables locales ..."]:16: attempt to concatenate a nil value (local 'power')sinon ;
Code : Tout sélectionner
2020-08-02 10:42:10.927 Status: LUA: -- Calcul Compteurs HC / HP --
2020-08-02 10:42:10.927 Status: LUA: CapteurGlobal = OWL_Intuition
2020-08-02 10:42:10.927 Status: LUA: CapteurCptHP = Compteur_Electrique_HP
2020-08-02 10:42:10.927 Status: LUA: CapteurCptHC = Compteur_Electrique_HC
2020-08-02 10:42:10.927 Status: LUA: idxCptHP = 22
2020-08-02 10:42:10.927 Status: LUA: idxCptHC = 21
2020-08-02 10:42:10.927 Status: LUA: flagHP = FlagHP
2020-08-02 10:42:10.927 Status: LUA: Heures pleines = 0.0 / Heures Creuses = 10268.0 / Watt = nil
2020-08-02 10:42:10.927 Status: LUA: Compteur cible = HP
2020-08-02 10:42:10.927 Status: LUA: Valeur precedente = 0.0
2020-08-02 10:42:22.154 Status: User: DG-59 initiated a switch command (102/FlagHP/Off)
2020-08-02 10:42:23.199 Status: User: DG-59 initiated a switch command (103/FlagHC/On)
2020-08-02 10:43:10.907 Status: LUA: -- Calcul Compteurs HC / HP --
2020-08-02 10:43:10.907 Status: LUA: CapteurGlobal = OWL_Intuition
2020-08-02 10:43:10.907 Status: LUA: CapteurCptHP = Compteur_Electrique_HP
2020-08-02 10:43:10.907 Status: LUA: CapteurCptHC = Compteur_Electrique_HC
2020-08-02 10:43:10.907 Status: LUA: idxCptHP = 22
2020-08-02 10:43:10.907 Status: LUA: idxCptHC = 21
2020-08-02 10:43:10.907 Status: LUA: flagHP = FlagHP
2020-08-02 10:43:10.907 Status: LUA: Heures pleines = 0.0 / Heures Creuses = 10270.0 / Watt = nil
2020-08-02 10:43:10.907 Status: LUA: Compteur cible = HC
2020-08-02 10:43:10.907 Status: LUA: Valeur precedente = 0.0
la j'ai 2 équipement qui me donne les infos
OWL_Intuition idx 91 qui me donne les kWh mais pas les Watts:
Code : Tout sélectionner
{
"ActTime" : 1596362276,
"AstrTwilightEnd" : "00:01",
"AstrTwilightStart" : "03:42",
"CivTwilightEnd" : "22:06",
"CivTwilightStart" : "05:38",
"DayLength" : "15:11",
"NautTwilightEnd" : "22:56",
"NautTwilightStart" : "04:47",
"ServerTime" : "2020-08-02 11:57:56",
"SunAtSouth" : "13:52",
"Sunrise" : "06:17",
"Sunset" : "21:27",
"app_version" : "2020.2",
"result" :
[
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 255,
"CounterToday" : "1.991 kWh",
"CustomImage" : 0,
"Data" : "10.416 kWh",
"Description" : "",
"EnergyMeterMode" : "0",
"Favorite" : 1,
"HardwareID" : 2,
"HardwareName" : "RFlink",
"HardwareType" : "RFLink Gateway USB",
"HardwareTypeVal" : 46,
"HaveTimeout" : false,
"ID" : "0000030A",
"LastUpdate" : "2020-08-02 11:57:10",
"Name" : "OWL_Intuition",
"Notifications" : "false",
"PlanID" : "0",
"PlanIDs" :
[
0
],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : "-",
"SubType" : "kWh",
"SwitchTypeVal" : 0,
"Timers" : "false",
"Type" : "General",
"TypeImg" : "current",
"Unit" : 1,
"Usage" : "0 Watt",
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "91"
}
],
"status" : "OK",
"title" : "Devices"
}Code : Tout sélectionner
{
"ActTime" : 1596365660,
"AstrTwilightEnd" : "00:01",
"AstrTwilightStart" : "03:42",
"CivTwilightEnd" : "22:06",
"CivTwilightStart" : "05:38",
"DayLength" : "15:11",
"NautTwilightEnd" : "22:56",
"NautTwilightStart" : "04:47",
"ServerTime" : "2020-08-02 12:54:20",
"SunAtSouth" : "13:52",
"Sunrise" : "06:17",
"Sunset" : "21:27",
"app_version" : "2020.2",
"result" :
[
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 255,
"CounterToday" : "0.000 kWh",
"CustomImage" : 0,
"Data" : "0.000 kWh",
"Description" : "",
"EnergyMeterMode" : "0",
"Favorite" : 1,
"HardwareID" : 2,
"HardwareName" : "RFlink",
"HardwareType" : "RFLink Gateway USB",
"HardwareTypeVal" : 46,
"HaveTimeout" : false,
"ID" : "0000000A",
"LastUpdate" : "2020-08-02 12:54:10",
"Name" : "OWL_Intuition",
"Notifications" : "false",
"PlanID" : "0",
"PlanIDs" :
[
0
],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : "-",
"SubType" : "kWh",
"SwitchTypeVal" : 0,
"Timers" : "false",
"Type" : "General",
"TypeImg" : "current",
"Unit" : 1,
"Usage" : "3712 Watt",
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "83"
}
],
"status" : "OK",
"title" : "Devices"
}Re: Repartition Consommation HC / HP...
Non, ton problème est : attempt to concatenate a nil value (local 'power') C'est écrit dans les logs.
Il y a des infos de débogage, il faut essayer de les comprendre :
2020-08-02 10:42:10.927 Status: LUA: Heures pleines = 0.0 / Heures Creuses = 10268.0 / Watt = nil
print('Heures pleines = '..tostring(heurespleines)..' / Heures Creuses = '..tostring(heurescreuses)..' / Watt = '..tostring(usage)..' ')
Usage = tonumber(watt)
a, b, x, y, watt, z = string.match(otherdevices_svalues['OWL_Intuition'], "(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*)")
Il faut que tu renseignes la valeur de watt d'une autre façon.
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...
sa vient pas du fait que les informations ne vienne pas du même capteur ?