[LUA] Repartition Consommation HC / HP...

Vous avez créé 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.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Repartition Consommation HC / HP...

Message par vil1driver »

Nom de la variable:
CONSO_LAST
Type de variable:
Chaîne
Valeur de la variable:
HP;0

Ne fais pas de modifications dans le code pour le moment s'il te plaît
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
dg-59
Messages : 34
Inscription : 09 juil. 2020, 11:09

Re: Repartition Consommation HC / HP...

Message par dg-59 »

Oui sa va mieux comme ça :oops:
mais il a du mal avec l'heure il fait les changement en décaler fin hp 09:14 il change a 09:16
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Repartition Consommation HC / HP...

Message par vil1driver »

Ah ça c'est normal, on ne va rien pouvoir y faire. C'est dépendant de la mise à jour de ton capteur qui envoie les infos tous les x temps, ce ne sera jamais vraiment synchro avec les heures de changement de cycle.
Mais c'est pas bien méchant.

Donc la t'es avec le script sans modification c'est ça ?
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
dg-59
Messages : 34
Inscription : 09 juil. 2020, 11:09

Re: Repartition Consommation HC / HP...

Message par dg-59 »

Salut, oui merci, aucune motif faite tout fonctionne je referai une instal de domoticz pour voir je trouve que l'heure saccade, elle reste figé passe de 19h50 à 19h59 par exemple
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Repartition Consommation HC / HP...

Message par vil1driver »

Comme je le disais il faudra travailler encore un peu dessus, les HC vont certainement avoir un soucis de comptage en fin de journée.

C'était un premier jet sans trop de perfectionnement. Mais probablement plus simple à comprendre ainsi.

Pour ton histoire d'heures, je ne comprends pas trop. Un problème de rafraîchissement de l'interface de Domoticz ?
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
dg-59
Messages : 34
Inscription : 09 juil. 2020, 11:09

Re: Repartition Consommation HC / HP...

Message par dg-59 »

oui je sais pas l'heure ne défile pas, bloque peux être ma clef usb qui déconne, je vais le faire sur une autre ou sur disque dur je sais pas encore
Darkneo
Messages : 68
Inscription : 16 déc. 2018, 08:50

Re: [LUA] Repartition Consommation HC / HP...

Message par Darkneo »

Hello à tous!

Je déterre ce topic car je vais changer (demain) mon abonnement pour passer en heure pleines et en heures creuses.

J'ai réussi à faire les 2 compteurs virtuels, j'ai mon OWL qui communique (pas de télétransmission),à priori tout va bien. Mais je me demande comment Domoticz fait les calculs avec les couts T1 et T2 (et est ce qu'il le fait vraiment?).

Car au final, le capteur virtuel HP devrait utiliser T1, et celui HC devrait utiliser T2 pour les rapports.
Et je suis preneur du graph que tu as partagé @vil1driver (ca dépends peut etre de la version de Domoticz), car je n'ai que 3 graphes séparés (un pour chaque device virtuel HP/HC et un autre pour mon OWL)...
bartras
Messages : 140
Inscription : 17 mars 2017, 17:44
Localisation : Saint Etienne (42)

LUA - Compteur heure pleine/creuse

Message par bartras »

Bonjour,

J'ai un compteur qui fonctionne en wifi et j'ai créé un compteur virtuel pour les heures pleine et creuse.
Sur la base de ce topic : lien forum

Voici le script LUA en question :

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(79)
local idxCompteurIntelligent = 81
local nomCompteurIntelligent = getdevname4idx(idxCompteurIntelligent)--HPHC
local nomHeureCreuse = getdevname4idx(82) -- 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 commandArray
Aucun souci je retrouve bien, les heures creuses et pleines:
wifi
wifi
wifi.jpg (259.24 Kio) Consulté 899 fois

Le problème, j'ai ajouté un capteur Zigbee.
Côté zigbee tout fonctionne correctement.
J'ai donc dupliqué le code précédent en changeant le IDX.

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(162)
local idxCompteurIntelligent = 167
local nomCompteurIntelligent = getdevname4idx(idxCompteurIntelligent)--HPHC
local nomHeureCreuse = getdevname4idx(82) -- 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 commandArray

Et là, magie, ça ne fonctionne pas :
zigbee
zigbee
zigbee.jpg (260.65 Kio) Consulté 899 fois


Et bizarrement, par contre le total (2.448kWh) est correct.. C'est l'affichage qui pose problème.
total
total
total.jpg (64.66 Kio) Consulté 899 fois


Je ne comprends pas pourquoi je n'ai que des points ponctuellement...

Si quelqu'un a une idée, je vous remercie.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [LUA] Repartition Consommation HC / HP...

Message par Keros »

Je viens de déplacer ton message dans le sujet traitant du script.

Tes scripts ont bien le même trigger ?
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
bartras
Messages : 140
Inscription : 17 mars 2017, 17:44
Localisation : Saint Etienne (42)

Re: [LUA] Repartition Consommation HC / HP...

Message par bartras »

Merci.

Oui ils triggent tous les deux sur "Device".
Répondre