[LUA] Consommation virtuelle

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.
foudepc83
Messages : 230
Inscription : 15 août 2016, 11:58

Re: Consommation virtuelle

Message par foudepc83 »

J'ai essayé de mettre un intérrupteur à la place du selecteur pour simuler, j’obtiens le même résultat.

J'ai essayé aussi de remplacer On et Off par Level 0 et Level 30. Idem ...

J'utilise le script lua directement dans domoticz, peut etre il faut faire un script dans un fichier non ?

Merci beaucoup !!!
Dernière modification par foudepc83 le 30 oct. 2017, 14:30, modifié 1 fois.
rapinou
Messages : 119
Inscription : 17 nov. 2016, 01:44

Re: Consommation virtuelle

Message par rapinou »

Et qu'est-il indiqué au niveau de ta variable ? Type et valeur ?
foudepc83 a écrit :J'utilise le script lua directement dans domoticz, peut etre il faut faire un script dans un fichier non ?
Non, moi tous mes scripts lua sont dans Dz, pas de soucis. Il faut juste faire attention à bien renseigner le type.
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
foudepc83
Messages : 230
Inscription : 15 août 2016, 11:58

Re: Consommation virtuelle

Message par foudepc83 »

rapinou a écrit :Et qu'est-il indiqué au niveau de ta variable ? Type et valeur ?
foudepc83 a écrit :J'utilise le script lua directement dans domoticz, peut etre il faut faire un script dans un fichier non ?
Non, moi tous mes scripts lua sont dans Dz, pas de soucis. Il faut juste faire attention à bien renseigner le type.
Ha ... alors je vais essayer d'etre plus précis possible :

Code : Tout sélectionner

local devices = {}

-- tableau a renseigner {'dispositif', puissance, 'compteur'}

devices[1] = { 'Chauffage Cuisine', 2000, 'Consommation Chauffage Cuisine'}
-- etc..
Chauffage Cuisine => Selector ( 0 = Off , 30 = On ) (j'ai même essayé avec un simple switch).
2000 => Puissance de mon chauffage
Consommation Chauffage Cuisine => Compteur electrique
rapinou
Messages : 119
Inscription : 17 nov. 2016, 01:44

Re: Consommation virtuelle

Message par rapinou »

La fonction stateChange de modules.lua crée la variable si elle n'existe pas au préalable :

Code : Tout sélectionner

-- vérifie s'il y a eu changement d'état
function stateChange(device)
	if (uservariables['lastState_'..device] == nil) then
		creaVar('lastState_'..device,otherdevices[device])
		log('stateChange : création variable manquante lastState_'..device,debug)
		return false
	elseif (devicechanged[device] == nil) then
		return false
	elseif (devicechanged[device] == uservariables['lastState_'..device]) then
		return false
	else
		duree = lastSeen(uservariables_lastupdate['lastState_'..device])
		updateVar('lastState_'..device,otherdevices[device])
		return otherdevices[device]
	end
end	
Donc si le script essaie sans cesse de l'enregistrer, c'est qu'il y a un problème de ce côté.

Qu'est-il indiqué pour la variable (type, valeur) dans Dz > Réglages > Plus d'options > Variables utilisateur ?
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
rapinou
Messages : 119
Inscription : 17 nov. 2016, 01:44

Re: Consommation virtuelle

Message par rapinou »

Après quelques test, voici mes modifs au script de vil1driver pour ajouter la gestion des coûts EDF et la gestion des heures pleines et creuses.
Il nécessite deux variables pour stocker les tarifs du kWh en HP et HC, un sélecteur pour enregistrer le planning des HP et HC, et un compteur par dispositif.

Code : Tout sélectionner

-- Chargement des modules vil1driver
dofile('/home/pi/domoticz/scripts/lua/modules.lua')

------------------------------------------------------------------
------------------------ Tableau à éditer ------------------------
-- {'dispositif', puissance, 'compteur conso', 'compteur coût'} --
------------------------------------------------------------------
local devices = {}
devices[1] = {'Fil pilote RDC', 3500, 'Consommation chauffage RDC', 'Coût chauffage RDC'}
--devices[2] = {'radiateur SDB', 1200, 'conso SDB'}
--devices[3] = {'radiateur salon', 3200, 'conso salon'}
--devices[4] = {'radiateur parents', 800, 'conso parents'}
-- etc..
------------------------------------------------------------------
------------------------- Fin du tableau -------------------------
------------------------------------------------------------------

--------------------------------
------ Variables à éditer ------
--------------------------------
local tarifhp = 'Tarif HP' -- Nom de la variable utilisateur Tarif HP
local tarifhc = 'Tarif HC' -- Nom de la variable utilisateur Tarif HC
local hp_hc = 'EDF HP / HC' -- Nom du sélecteur Heures pleines/Heures creuses
local lvl_hp = 10 -- Niveaux du sélecteur HP/HC
local lvl_hc = 20
--------------------------------
-- Fin des variables à éditer --
--------------------------------

commandArray = {}

for n,device in pairs(devices) do
	if stateChange(device[1]) == 'On' then -- Si l'état du device passe à On :
		-- Affichage puissance instantanée
		power, energy = string.match(otherdevices_svalues[device[3]], "(%d+%.*%d*);(%d+%.*%d*)") -- Récupération de la valeur du compteur de consommation électrique
		commandArray['UpdateDevice'] = otherdevices_idx[device[3]] .. '|0|' .. device[2] .. ';' .. energy -- Mise à jour du compteur (puissance instantanée)
		break
	end
	if stateChange(device[1]) == 'Off' then -- Si l'état du device passe à Off :
		log(device[1]..' est resté allumé '..duree..'s')
		-- Envoi de la consommation dans le compteur de consommation électrique
		power, energy = string.match(otherdevices_svalues[device[3]], "(%d+%.*%d*);(%d+%.*%d*)") -- Récupération de la valeur du compteur de consommation électrique
		local conso_cycle = tonumber(device[2] / 3600 * duree) -- Consommation du cycle
		energy = tonumber(energy + conso_cycle) -- Somme valeur initiale + consommation du cycle
		commandArray[1] = {['UpdateDevice'] = otherdevices_idx[device[3]] .. '|0|0;' .. energy} -- Mise à jour du compteur (puissance instantanée à zéro + conso du cycle)
		-- Calcul du coût EDF et envoi dans le compteur virtuel
		hp_hc = tonumber(otherdevices_svalues[hp_hc]) -- Récupération du planning HP/HC
		tarifhp = tonumber(uservariables[tarifhp]) -- Récupération des tarifs HP/HC
		tarifhc = tonumber(uservariables[tarifhc])
		if hp_hc == lvl_hp then -- Si on est en heures pleines :
			cout_cycle = tonumber(conso_cycle * tarifhp / 1000) -- On calcule le coût du cycle
		elseif hp_hc == lvl_hc then -- Si on est en heures creuses :
			cout_cycle = tonumber(conso_cycle * tarifhc / 1000) -- On calcule le coût du cycle
		end
		local compteur_init = tonumber(otherdevices_svalues[device[4]]) -- Récupération de la valeur initiale du compteur
		local compteur_maj = tonumber(compteur_init + cout_cycle) -- On ajoute le coût du cycle au compteur
		commandArray[2] = {['UpdateDevice'] = otherdevices_idx[device[4]] .. '|0|' .. compteur_maj} -- Mise à jour du compteur
		break
	end
end

return commandArray
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Consommation virtuelle

Message par vil1driver »

2017-10-30 12:50:17.305 dzVents: stateChange : création variable manquante
Ce devrait être indiqué 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
foudepc83
Messages : 230
Inscription : 15 août 2016, 11:58

Re: Consommation virtuelle

Message par foudepc83 »

Bonjour,

J'ai trouvé mon problème , c'est de ma faute , je suis allé trop vite,

En effet je n'ai pas rentré les informations ( IP ect...) dans le fichier module.lua.
foudepc83
Messages : 230
Inscription : 15 août 2016, 11:58

Re: Consommation virtuelle

Message par foudepc83 »

vil1driver a écrit :
2017-10-30 12:50:17.305 dzVents: stateChange : création variable manquante
Ce devrait être indiqué Lua..
C'est une bonne question , tous mes scripts affichent en dsVents , je n'ai pas fais attention.
Mais ou peut t'on configurer pour mettre en Lua , pourtant mes scripts fonctionnent bien.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Consommation virtuelle

Message par Neutrino »

C'est juste un problème de cache. ;)
J'ai eu la même chose après une MAJ.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
foudepc83
Messages : 230
Inscription : 15 août 2016, 11:58

Re: Consommation virtuelle

Message par foudepc83 »

Neutrino a écrit :C'est juste un problème de cache. ;)
J'ai eu la même chose après une MAJ.
D'accord merci beaucoup :)
Répondre