[LUA] Repartition Consommation HC / HP...
Re: [LUA] Repartition Consommation HC / HP...
La différence ne serait pas que tu as un graphique en courbe et un graphique en barres (histogramme) ? J'ai l'impression qu'il y a bien les deux utilisations 1 et 2 correspondants à 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: [LUA] Repartition Consommation HC / HP...
Oui mais c'est le cas aussi pour la mesure en wifi.
Et je n'ai pourtant pas changé les paramètres dans le code.
Et je n'ai pourtant pas changé les paramètres dans le code.
Re: [LUA] Repartition Consommation HC / HP...
Les widgets que tu as créés ont le même type ?
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: [LUA] Repartition Consommation HC / HP...
Oui il me semble.
J'ai aussi été regardé les informations en JSON de chacun des devices pour voir s'il y avait des écarts.
Mais je n'ai rien trouvé...
Capteur mesure 79 WIFI
json.htm?type=command¶m=getdevices&rid=79
Capteur mesure 162 ZIGBEE
json.htm?type=command¶m=getdevices&rid=162
Capteur virtuel 81 WIFI
json.htm?type=command¶m=getdevices&rid=81
Capteur virtuel 167 ZIGBEE
json.htm?type=command¶m=getdevices&rid=167
J'ai aussi été regardé les informations en JSON de chacun des devices pour voir s'il y avait des écarts.
Mais je n'ai rien trouvé...
Capteur mesure 79 WIFI
json.htm?type=command¶m=getdevices&rid=79
Code : Tout sélectionner
{
"ActTime" : 1705002655,
"AstrTwilightEnd" : "19:07",
"AstrTwilightStart" : "06:35",
"CivTwilightEnd" : "17:54",
"CivTwilightStart" : "07:48",
"DayLength" : "09:00",
"NautTwilightEnd" : "18:31",
"NautTwilightStart" : "07:11",
"ServerTime" : "2024-01-11 20:50:55",
"SunAtSouth" : "12:51",
"Sunrise" : "08:21",
"Sunset" : "17:21",
"app_version" : "2024.1",
"result" :
[
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 100,
"CounterToday" : "3.098 kWh",
"CustomImage" : 0,
"Data" : "14114.021 kWh",
"Description" : "",
"EnergyMeterMode" : "0",
"Favorite" : 0,
"HardwareDisabled" : false,
"HardwareID" : 3,
"HardwareName" : "Dummy",
"HardwareType" : "Dummy (Does nothing, use for virtual switches only)",
"HardwareTypeVal" : 15,
"HaveTimeout" : false,
"ID" : "00082079",
"LastUpdate" : "2024-01-11 20:50:38",
"Name" : "Puissance r\u00e9seau",
"Notifications" : "false",
"PlanID" : "0",
"PlanIDs" :
[
0
],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : 10,
"SubType" : "kWh",
"SwitchTypeVal" : 0,
"Timers" : "false",
"Type" : "General",
"TypeImg" : "current",
"Unit" : 1,
"Usage" : "168 Watt",
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "79"
}
],
"status" : "OK",
"title" : "Devices"
}json.htm?type=command¶m=getdevices&rid=162
Code : Tout sélectionner
{
"ActTime" : 1705002638,
"AstrTwilightEnd" : "19:07",
"AstrTwilightStart" : "06:35",
"CivTwilightEnd" : "17:54",
"CivTwilightStart" : "07:48",
"DayLength" : "09:00",
"NautTwilightEnd" : "18:31",
"NautTwilightStart" : "07:11",
"ServerTime" : "2024-01-11 20:50:38",
"SunAtSouth" : "12:51",
"Sunrise" : "08:21",
"Sunset" : "17:21",
"app_version" : "2024.1",
"result" :
[
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 255,
"CounterToday" : "2.951 kWh",
"CustomImage" : 0,
"Data" : "81.310 kWh",
"Description" : "",
"EnergyMeterMode" : "0",
"Favorite" : 1,
"HardwareDisabled" : false,
"HardwareID" : 2,
"HardwareName" : "ZigbeeForDomoticz",
"HardwareType" : "Zigbee for domoticz plugin (zigpy enabled)",
"HardwareTypeVal" : 94,
"HaveTimeout" : false,
"ID" : "28dba7fffea61169",
"LastUpdate" : "2024-01-11 20:50:33",
"Name" : "Puissance zigbee",
"Notifications" : "true",
"PlanID" : "0",
"PlanIDs" :
[
0
],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : 4,
"SubType" : "kWh",
"SwitchTypeVal" : 0,
"Timers" : "false",
"Type" : "General",
"TypeImg" : "current",
"Unit" : 43,
"Usage" : "160 Watt",
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "162"
}
],
"status" : "OK",
"title" : "Devices"
}json.htm?type=command¶m=getdevices&rid=81
Code : Tout sélectionner
{
"ActTime" : 1705002658,
"AstrTwilightEnd" : "19:07",
"AstrTwilightStart" : "06:35",
"CivTwilightEnd" : "17:54",
"CivTwilightStart" : "07:48",
"DayLength" : "09:00",
"NautTwilightEnd" : "18:31",
"NautTwilightStart" : "07:11",
"ServerTime" : "2024-01-11 20:50:58",
"SunAtSouth" : "12:51",
"Sunrise" : "08:21",
"Sunset" : "17:21",
"app_version" : "2024.1",
"result" :
[
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 255,
"Counter" : "14114.021",
"CounterDeliv" : "0.000",
"CounterDelivToday" : "0.000 kWh",
"CounterToday" : "3.098 kWh",
"CustomImage" : 0,
"Data" : "1669479.0;12444542.0;0;0;168;0",
"Description" : "",
"Favorite" : 1,
"HardwareDisabled" : false,
"HardwareID" : 3,
"HardwareName" : "Dummy",
"HardwareType" : "Dummy (Does nothing, use for virtual switches only)",
"HardwareTypeVal" : 15,
"HaveTimeout" : false,
"ID" : "140A1",
"LastUpdate" : "2024-01-11 20:50:38",
"Name" : "Compteur r\u00e9seau",
"Notifications" : "false",
"PlanID" : "0",
"PlanIDs" :
[
0
],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : "-",
"SubType" : "Energy",
"SwitchTypeVal" : 0,
"Timers" : "false",
"Type" : "P1 Smart Meter",
"TypeImg" : "counter",
"Unit" : 1,
"Usage" : "168 Watt",
"UsageDeliv" : "0 Watt",
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "81"
}
],
"status" : "OK",
"title" : "Devices"
}json.htm?type=command¶m=getdevices&rid=167
Code : Tout sélectionner
{
"ActTime" : 1705002646,
"AstrTwilightEnd" : "19:07",
"AstrTwilightStart" : "06:35",
"CivTwilightEnd" : "17:54",
"CivTwilightStart" : "07:48",
"DayLength" : "09:00",
"NautTwilightEnd" : "18:31",
"NautTwilightStart" : "07:11",
"ServerTime" : "2024-01-11 20:50:46",
"SunAtSouth" : "12:51",
"Sunrise" : "08:21",
"Sunset" : "17:21",
"app_version" : "2024.1",
"result" :
[
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 255,
"Counter" : "81.310",
"CounterDeliv" : "0.000",
"CounterDelivToday" : "0.000 kWh",
"CounterToday" : "2.951 kWh",
"CustomImage" : 0,
"Data" : "57214.0;24096.0;0;0;159.0;0",
"Description" : "",
"Favorite" : 0,
"HardwareDisabled" : false,
"HardwareID" : 3,
"HardwareName" : "Dummy",
"HardwareType" : "Dummy (Does nothing, use for virtual switches only)",
"HardwareTypeVal" : 15,
"HaveTimeout" : false,
"ID" : "140F8",
"LastUpdate" : "2024-01-11 20:50:42",
"Name" : "Compteur zigbee",
"Notifications" : "false",
"PlanID" : "0",
"PlanIDs" :
[
0
],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : "-",
"SubType" : "Energy",
"SwitchTypeVal" : 0,
"Timers" : "false",
"Type" : "P1 Smart Meter",
"TypeImg" : "counter",
"Unit" : 1,
"Usage" : "159 Watt",
"UsageDeliv" : "0 Watt",
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "167"
}
],
"status" : "OK",
"title" : "Devices"
}Re: [LUA] Repartition Consommation HC / HP...
Les types et sous types sont identiques dans "Dispositifs":
La seule chose qui change c'est "Unit".
Mais je ne sais pas ce que ça représente. Une idée?
La seule chose qui change c'est "Unit".
Mais je ne sais pas ce que ça représente. Une idée?
Dernière modification par Keros le 11 janv. 2024, 21:02, modifié 1 fois.
Raison : Merci d'éditer votre message précédent pour y rajouter l'information complémentaire
Raison : Merci d'éditer votre message précédent pour y rajouter l'information complémentaire
Re: [LUA] Repartition Consommation HC / HP...
Je ne sais pas, désolé.
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: [LUA] Repartition Consommation HC / HP...
Bonjour,
J'ai le sript HP/HC avec un seul interrupteur qui pilote le bascule, depuis 2 ans aucun problème, et toujours ok.
Le wattmètre est un OWL180.
Je vais changer pour mettre une pince ampermetrique zigbee car j'ai besoin de connaitre le sens du courant donc idem que le OWL mais avec "-" si il y a injection :
Je viens d'installer des panneaux solaires.
Le problème avec ce script c'est qu'il additionne quelque soit le sens du courant. Ici j'injecte du courant, mais compte comme de la consommation.
Quelqu'un peut m'aider à retrouver le graphe suivant en HP/HC ?
J'ai le sript HP/HC avec un seul interrupteur qui pilote le bascule, depuis 2 ans aucun problème, et toujours ok.
Le wattmètre est un OWL180.
Je vais changer pour mettre une pince ampermetrique zigbee car j'ai besoin de connaitre le sens du courant donc idem que le OWL mais avec "-" si il y a injection :
Je viens d'installer des panneaux solaires.
Le problème avec ce script c'est qu'il additionne quelque soit le sens du courant. Ici j'injecte du courant, mais compte comme de la consommation.
Code : Tout sélectionner
function log(p_message)
-- print("[HPHC] " .. p_message)
end
function getdevname4idx(deviceIDX)
for i, v in pairs(otherdevices_idx) do
if v == deviceIDX then
return i
end
end
return 0
end
commandArray = {}
DEBUG = false
local nomCompteurPrincipal = getdevname4idx(3955) --counter a
local idxCompteurIntelligent = 3980
local nomCompteurIntelligent = getdevname4idx(idxCompteurIntelligent)--HPHC
local nomHeureCreuse = getdevname4idx(259) -- Switch Heures Creuses
for deviceName,deviceValue in pairs(devicechanged) do
if (deviceName==nomCompteurPrincipal) then
-- On récupère la valeur du compteur unique => consEnergy
ConsPower, consEnergy = string.match(otherdevices_svalues[nomCompteurPrincipal], "(%d+%.*%d*);(%d+%.*%d*)")
log(ConsPower.."-"..consEnergy)
--on somme les compteurs HP et HC => EnergyImport
--http://www.domoticz.com/wiki/Upload_energy_data_to_PVoutput
EnergyImportLow, EnergyImportHigh, EnergyExportLow, EnergyExportHigh, PowerImport, PowerExport = otherdevices_svalues[nomCompteurIntelligent]:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")
-- For the first time, the value are not initilize in the smart counter, we set 0 by default.
if(EnergyImportLow == nil)then
EnergyImportLow =0
EnergyImportHigh =0
EnergyExportLow = 0
EnergyExportHigh =0
PowerImport = 0
PowerExport = 0
end
-- Lors du changement de pile du compteur unique, consEnergy a été réinitialisé, faussant complémtement les valeurs de EnergyImportLow/EnergyImportHigh
if((EnergyImportLow+0) < 0 or (EnergyImportHigh+0) < 0) then
EnergyImportLow =0
EnergyImportHigh =0
log(" ----- Reinit de EnergyImportLow/EnergyImportHigh");
end
EnergyImport = EnergyImportLow + EnergyImportHigh
EnergyExport = EnergyExportLow + EnergyExportHigh
log(" ----- PowerImport = " .. PowerImport .. " W");
log(" ----- EnergyImportLow = " .. EnergyImportLow .. " Wh");
log(" ----- EnergyImportHigh = " .. EnergyImportHigh .. " Wh");
log(" ----- EnergyImport = " .. EnergyImport .. " Wh");
log(" ----- PowerExport = " .. PowerExport .. " W");
log(" ----- EnergyExportLow = " .. EnergyExportLow .. " Wh");
log(" ----- EnergyExportHigh = " .. EnergyExportHigh .. " Wh");
log(" ----- EnergyExport = " .. EnergyExport .. " Wh");
--On calcule le delta avec le compteur actuel
delta = consEnergy - EnergyImport
--On ajoute le delta sur le bon tarif
if (otherdevices[nomHeureCreuse] == 'Off') then
EnergyImportLow = EnergyImportLow + delta
else
EnergyImportHigh = EnergyImportHigh + delta
end
--On modifie le compteur intelligent
commandArray['UpdateDevice'] = idxCompteurIntelligent.."|0|"..EnergyImportLow..";"..EnergyImportHigh..";0;0;"..ConsPower..";0"
end
end
return commandArrayRe: [LUA] Repartition Consommation HC / HP...
Tu es sûr d'avoir mis le bon type de widget pour ton graphique ? Avec la téléinfo, j'ai un widget de type P1 smart meter energy pour les widgets avec la répartition HP/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: [LUA] Repartition Consommation HC / HP...
En fait c'est le bon c'est l'image qui n'est pas bonne pour rectifier l'illustration :
La source en entrée du script est : En sortie du script j'ai : Le fonctionnement est correct avec la bascule HP / HC au bon moment avec le device interrupteur ON/OFF.
Cependant, quand mon device idx 3955 (Consommation maison (crurent a) Général, kWh) a une valeur négative en entrée, mon script ressort une valeur absolue positive incohérent avec une notion de production électrique.
=> J'aurais besoin d'aide pour modifier ce script qui fonctionne en modifiant ou ajoutant une ou des lignes de code pour que quand le device d'entrée idx 3955 ("nomCompteurPrincipal" dans le script") prend une valeur négative, que le produit de sortie sur le device idx 3980 ("idxCompteurIntelligent") sort une valeur égale à "0".
Pourquoi "0" ? Car je renvoi du courant sur le réseau gratuitement, du coup cela ne fausse pas les compteur kWh qui serait décrémental en négatif avec un cout / kwa lui aussi à la baisse.
Merci pour votre aide pour modifier ce code
La source en entrée du script est : En sortie du script j'ai : Le fonctionnement est correct avec la bascule HP / HC au bon moment avec le device interrupteur ON/OFF.
Cependant, quand mon device idx 3955 (Consommation maison (crurent a) Général, kWh) a une valeur négative en entrée, mon script ressort une valeur absolue positive incohérent avec une notion de production électrique.
=> J'aurais besoin d'aide pour modifier ce script qui fonctionne en modifiant ou ajoutant une ou des lignes de code pour que quand le device d'entrée idx 3955 ("nomCompteurPrincipal" dans le script") prend une valeur négative, que le produit de sortie sur le device idx 3980 ("idxCompteurIntelligent") sort une valeur égale à "0".
Pourquoi "0" ? Car je renvoi du courant sur le réseau gratuitement, du coup cela ne fausse pas les compteur kWh qui serait décrémental en négatif avec un cout / kwa lui aussi à la baisse.
Merci pour votre aide pour modifier ce code
Re: [LUA] Repartition Consommation HC / HP...
J'avais le même problème que toi.
J'ai choisi une solution que je trouve encore meilleur.
En fait le P1 smartmeter gère aussi l'injection de courant (production solaire) et le rendu est même plutôt esthétique !
J'ai beaucoup galéré pour écrire le script mais voilà ce que ça donne :
J'ai choisi une solution que je trouve encore meilleur.
En fait le P1 smartmeter gère aussi l'injection de courant (production solaire) et le rendu est même plutôt esthétique !
J'ai beaucoup galéré pour écrire le script mais voilà ce que ça donne :
Code : Tout sélectionner
function log(p_message)
--print("[3_Compteur_réseau_bis] " .. p_message)
end
function getdevname4idx(deviceIDX)
for i, v in pairs(otherdevices_idx) do
if v == deviceIDX then
return i
end
end
return 0
end
function processEnergyValues(ConsumptionName)
-- On récupère les valeurs du compteur Solaire
local EnergyImportLow, EnergyImportHigh, EnergyExportLow, EnergyExportHigh, PowerImport, PowerExport = otherdevices_svalues[ConsumptionName]:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")
-- For the first time, the value are not initialized in the smart counter, we set 0 by default.
if EnergyImportLow == nil then
EnergyImportLow = 0
EnergyImportHigh = 0
EnergyExportLow = 0
EnergyExportHigh = 0
PowerImport = 0
PowerExport = 0
end
-- Lors du changement de pile du compteur unique, consEnergy a été réinitialisé, faussant complétement les valeurs de EnergyImportLow/EnergyImportHigh
if tonumber(EnergyImportLow) < 0 or tonumber(EnergyImportHigh) < 0 then
EnergyImportLow = 0
EnergyImportHigh = 0
log(" ----- Reinit de EnergyImportLow/EnergyImportHigh")
end
log(ConsumptionName .." ----- PowerImport = " .. PowerImport .. " W");
log(ConsumptionName .." ----- EnergyImportLow = " .. EnergyImportLow .. " Wh");
log(ConsumptionName .." ----- EnergyImportHigh = " .. EnergyImportHigh .. " Wh");
--log(ConsumptionName .." ----- EnergyImport = " .. EnergyImport .. " Wh");
log(ConsumptionName .." ----- PowerExport = " .. PowerExport .. " W");
log(ConsumptionName .." ----- EnergyExportLow = " .. EnergyExportLow .. " Wh");
log(ConsumptionName .." ----- EnergyExportHigh = " .. EnergyExportHigh .. " Wh");
--log(ConsumptionName .." ----- EnergyExport = " .. EnergyExport .. " Wh");
return EnergyImportLow, EnergyImportHigh, EnergyExportLow, EnergyExportHigh, PowerImport, PowerExport
end
commandArray = {}
local idxSolaire = 1609
local idxConsommation = 240
local idxReseau = 1774
local idxHeureCreuse = 92
local nomSolaire = getdevname4idx(idxSolaire)
local nomConsommation = getdevname4idx(idxConsommation)
local nomReseau = getdevname4idx(idxReseau)
local nomHeureCreuse = getdevname4idx(idxHeureCreuse)
--local nomCompteurPrincipal = getdevname4idx(240)
--local idxCompteurIntelligent = 242
--local nomCompteurIntelligent = getdevname4idx(idxCompteurIntelligent)--HPHC
for deviceName,deviceValue in pairs(devicechanged) do
if (deviceName==nomConsommation) then
-- On récupère la valeur du compteur unique => consEnergy
--ConsPower, ConsEnergy = string.match(otherdevices_svalues[nomConsommation], "(%d+%.*%d*);(%d+%.*%d*)")
--log(ConsPower.."-"..consEnergy)
-- On récupère les valeurs du compteur Réseau
REnergyImportLow, REnergyImportHigh, REnergyExportLow, REnergyExportHigh, RPowerImport, RPowerExport = processEnergyValues(nomReseau)
-- On récupère les valeurs du compteur Consommation
CPower, CEnergy = string.match(otherdevices_svalues[nomConsommation], "(%d+%.*%d*);(%d+%.*%d*)")
--CEnergyImportLow, CEnergyImportHigh, CEnergyExportLow, CEnergyExportHigh, CPowerImport, CPowerExport = processEnergyValues(nomConsommation)
-- On récupère les valeurs du compteur Solaire
SPower, SEnergy = string.match(otherdevices_svalues[nomSolaire], "(%d+%.*%d*);(%d+%.*%d*)")
--SEnergyImportLow, SEnergyImportHigh, SEnergyExportLow, SEnergyExportHigh, SPowerImport, SPowerExport = processEnergyValues(nomSolaire)
REnergyImport = REnergyImportLow + REnergyImportHigh
REnergyExport = REnergyExportLow + REnergyExportHigh
--CEnergyImport = CEnergyImportLow + CEnergyImportHigh
--SEnergyExport = SEnergyExportLow + SEnergyExportHigh
--On calcule le delta avec le compteur actuel
deltaImport = CEnergy - REnergyImport
deltaExport = SEnergy - REnergyExport
--On ajoute le delta sur le bon tarif
if (otherdevices[nomHeureCreuse] == 'Off') then
REnergyImportLow = REnergyImportLow + deltaImport
else
REnergyImportHigh = REnergyImportHigh + deltaImport
end
REnergyExportLow = REnergyExportLow + deltaExport
deltaPower = CPower - SPower
--On ajoute le delta sur le bon tarif
if deltaPower >= 0 then
RPower = RPowerImport + deltaPower
else
RPower = RPowerExport + deltaPower
end
REnergyImportLow=tostring(math.floor(REnergyImportLow))
REnergyImportHigh=tostring(math.floor(REnergyImportHigh))
REnergyExportLow=tostring(math.floor(REnergyExportLow))
RPower=tostring(math.floor(RPower))
--On modifie le compteur intelligent
commandArray['UpdateDevice'] = idxReseau.."|0|"..REnergyImportLow..";"..REnergyImportHigh..";"..REnergyExportLow..";0;"..CPower..";"..SPower
end
end
return commandArray