[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.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Repartition Consommation HC / HP...

Message par Keros »

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
dg-59
Messages : 34
Inscription : 09 juil. 2020, 11:09

Re: Repartition Consommation HC / HP...

Message par dg-59 »

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...

Message par vil1driver »

bon j'étais optimiste avec mon script à 5 ou 6 lignes :D

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 !
Image

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
	

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 ;)
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 »

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...

Message par vil1driver »

J'ai pris la première photo sur Google qui montre le Trigger

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
dg-59
Messages : 34
Inscription : 09 juil. 2020, 11:09

Re: Repartition Consommation HC / HP...

Message par dg-59 »

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

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...

Message par vil1driver »

Ahh :D

Autant pour moi

Il manque cette ligne

Code : Tout sélectionner

commandArray = {}
Que tu peux placer juste après celle ci

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
dg-59
Messages : 34
Inscription : 09 juil. 2020, 11:09

Re: Repartition Consommation HC / HP...

Message par dg-59 »

il aime pas cette partie comme pour l'autre script

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
  
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 ("([^;]+);([^;]+)")

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)
pour cette partie j'ai pas encore réussis a trouver l'erreur

Code : Tout sélectionner

val_1, val_2 = uservariables[memo]:match("([^;]+);([^;]+)")

attempt to index a nil value (field '?')
il faudrai un capteur virtuel instantane + constant 640.000;18882.000
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...

Message par vil1driver »

Tu as bien créé la variable utilisateur ?

Code : Tout sélectionner

local memo = 'CONSO_LAST'					
-- nom de la variable utilisateur de type chaîne pour mémo
Image

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
dg-59
Messages : 34
Inscription : 09 juil. 2020, 11:09

Re: Repartition Consommation HC / HP...

Message par dg-59 »

Bonjour, oui mais je sais pas si je l'ai bien rentré

Code : Tout sélectionner

Nom de la variable:	
memo 
Type de variable:	
Chaîne
Valeur de la variable:	
CONSO_LAST
pour

Code : Tout sélectionner

 val_1, val_2 = uservariables[memo]:match("([^;]+);([^;]+)")
l'erreur est

Code : Tout sélectionner

attempt to index a nil value (field '?')
Répondre