[LUA] Consommation virtuelle
Re: Consommation virtuelle
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 !!!
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.
Re: Consommation virtuelle
Et qu'est-il indiqué au niveau de ta variable ? Type et valeur ?
Non, moi tous mes scripts lua sont dans Dz, pas de soucis. Il faut juste faire attention à bien renseigner le type.foudepc83 a écrit :J'utilise le script lua directement dans domoticz, peut etre il faut faire un script dans un fichier non ?
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
Re: Consommation virtuelle
Ha ... alors je vais essayer d'etre plus précis possible :rapinou a écrit :Et qu'est-il indiqué au niveau de ta variable ? Type et valeur ?
Non, moi tous mes scripts lua sont dans Dz, pas de soucis. Il faut juste faire attention à bien renseigner le type.foudepc83 a écrit :J'utilise le script lua directement dans domoticz, peut etre il faut faire un script dans un fichier non ?
Code : Tout sélectionner
local devices = {}
-- tableau a renseigner {'dispositif', puissance, 'compteur'}
devices[1] = { 'Chauffage Cuisine', 2000, 'Consommation Chauffage Cuisine'}
-- etc..
2000 => Puissance de mon chauffage
Consommation Chauffage Cuisine => Compteur electrique
Re: Consommation virtuelle
La fonction stateChange de modules.lua crée la variable si elle n'existe pas au préalable :
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 ?
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 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
Re: Consommation virtuelle
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.
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
Ce devrait être indiqué Lua..2017-10-30 12:50:17.305 dzVents: stateChange : création variable manquante
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
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: Consommation virtuelle
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.
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.
Re: Consommation virtuelle
C'est une bonne question , tous mes scripts affichent en dsVents , je n'ai pas fais attention.vil1driver a écrit :Ce devrait être indiqué Lua..2017-10-30 12:50:17.305 dzVents: stateChange : création variable manquante
Mais ou peut t'on configurer pour mettre en Lua , pourtant mes scripts fonctionnent bien.
Re: Consommation virtuelle
C'est juste un problème de cache.
J'ai eu la même chose après une MAJ.
J'ai eu la même chose après une MAJ.
Re: Consommation virtuelle
D'accord merci beaucoupNeutrino a écrit :C'est juste un problème de cache.![]()
J'ai eu la même chose après une MAJ.