Page 32 sur 33

Re: Repartition Consommation HC / HP...

Publié : 08 août 2020, 07:47
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

Re: Repartition Consommation HC / HP...

Publié : 08 août 2020, 09:20
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

Re: Repartition Consommation HC / HP...

Publié : 08 août 2020, 14:02
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 ?

Re: Repartition Consommation HC / HP...

Publié : 08 août 2020, 20:05
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

Re: Repartition Consommation HC / HP...

Publié : 08 août 2020, 21:28
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 ?

Re: Repartition Consommation HC / HP...

Publié : 09 août 2020, 00:27
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

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

Publié : 09 sept. 2022, 12:12
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)...

LUA - Compteur heure pleine/creuse

Publié : 11 janv. 2024, 17:57
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é 914 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é 914 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é 914 fois


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

Si quelqu'un a une idée, je vous remercie.

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

Publié : 11 janv. 2024, 18:38
par Keros
Je viens de déplacer ton message dans le sujet traitant du script.

Tes scripts ont bien le même trigger ?

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

Publié : 11 janv. 2024, 20:18
par bartras
Merci.

Oui ils triggent tous les deux sur "Device".