[LUA] Repartition Consommation HC / HP...
Re: Repartition Consommation HC / HP...
euh je suis en train de revoir mon script qui est plein de beugs 
Domoticz sur Linux Mint
boitier RFXtrx 433 (sondes température, température/hygro, zkp1a, chacon, blyss)
Mysensors (Capteurs PIR, Double relais, relais avec bouton)
boitier RFXtrx 433 (sondes température, température/hygro, zkp1a, chacon, blyss)
Mysensors (Capteurs PIR, Double relais, relais avec bouton)
Re: Repartition Consommation HC / HP...
Bon ben voila, après un gros travail de compréhension, j'ai modifié mon script, et je peux dire que celà fonctionne
Ci dessous mon script.
Un script par radiateur, un thermostat pour la zone, une sonde de température par radiateur, un switch virtuel pour savoir si température dite de confort ou economique, un switch qui permet de savoir si heure pleine ou pas pour edf, et un switch de présence ou pas.
Switch EDF:virtuel commandé par planning
Switch Confort ou Economique: virtuel commandé par planning google
Switch Présence: Virtuel commandé par la réponse au ping de certains équipements tel le téléphone ou tablette ou pc
Thermostat de zone: pour définir des températures de confort différentes si on est dans la chambre ou zone de vie ou SDB
Thermostat Eco: pour définir la température économique (Utilisé par tous les radiateurs)
Compteur virtuel pour chaque radiateur
Compteur virtuel Heures creuses
Compteur virtuel Heures Pleines
Compteur Virtuel Total.
Il ne manque que l'Hystérésis mais je me demande si bien nécessaire.
Le script est prévu pour tourner avec des radiateurs branchés sur des prises chacon (attention à la puissance du radiateur que vous mettez sur la prise !!!!).
Si vous souhaitez brancher vos radiateurs avec les modules chacon en ajoutant une diode pour ordonner sur le fil pilote, il suffit d'inverser les 2 ordres du commandArray[radiateur]='On' et commandArray[radiateur]='Off'
Ci dessous mon script.
Un script par radiateur, un thermostat pour la zone, une sonde de température par radiateur, un switch virtuel pour savoir si température dite de confort ou economique, un switch qui permet de savoir si heure pleine ou pas pour edf, et un switch de présence ou pas.
Switch EDF:virtuel commandé par planning
Switch Confort ou Economique: virtuel commandé par planning google
Switch Présence: Virtuel commandé par la réponse au ping de certains équipements tel le téléphone ou tablette ou pc
Thermostat de zone: pour définir des températures de confort différentes si on est dans la chambre ou zone de vie ou SDB
Thermostat Eco: pour définir la température économique (Utilisé par tous les radiateurs)
Compteur virtuel pour chaque radiateur
Compteur virtuel Heures creuses
Compteur virtuel Heures Pleines
Compteur Virtuel Total.
Il ne manque que l'Hystérésis mais je me demande si bien nécessaire.
Le script est prévu pour tourner avec des radiateurs branchés sur des prises chacon (attention à la puissance du radiateur que vous mettez sur la prise !!!!).
Si vous souhaitez brancher vos radiateurs avec les modules chacon en ajoutant une diode pour ordonner sur le fil pilote, il suffit d'inverser les 2 ordres du commandArray[radiateur]='On' et commandArray[radiateur]='Off'
Code : Tout sélectionner
-- Ce script permet de maintenir la température
--------------------------------
------ Variables à éditer ------
--------------------------------
nom = 'chambre d amis' --Affichage dans le log
local consigne_conf = tonumber(otherdevices_svalues['Therm_Amis']) -- Température de consigne confort
local consigne_eco = tonumber(otherdevices_svalues['Therm_Eco']) -- Température de consigne économique
local sonde = 'Temp Amis' -- Nom de la sonde de température
local mode = 'Chauffage_mode_confort' -- Nom de l'interrupteur virtuel de sélection de mode Off=eco On=confort
local presence = 'Presence' -- Nom de l'interrupteur virtuel de thermostat (Off=abscence prolongée)
local heures = 'HC_HP' -- Nom de l'interrupteur virtuel de choix heures creuses ou pleines
local radiateur = 'Radiateur Amis' -- Nom de l'interrupteur de chauffage
local puissance = 1000 -- puissance du chauffage en watt
local conso = 'Conso_Amis' -- nom du capteur virtuel de consommation électrique
local conso_id = 146 -- idx du capteur virtuel de consommation électrique
local conso_total = 'Conso TOTALE' -- nom du capteur virtuel de consommation électrique totale
local conso_total_id = 149 -- idx du capteur virtuel de consommation électrique totale
local conso_creuses = 'Conso HCreuses' -- nom du capteur virtuel de consommation électrique heures creuses
local conso_creuses_id = 147 -- idx du capteur virtuel de consommation électrique heures creuses
local conso_pleines = 'Conso HPleines' -- nom du capteur virtuel de consommation électrique heures pleines
local conso_pleines_id = 148 -- idx du capteur virtuel de consommation électrique heures pleines
--------------------------------
-- Fin des variables à éditer --
--------------------------------
commandArray = {}
local temperature = tonumber(string.sub(otherdevices_svalues[sonde],1,4)) -- Température relevée
-- si présence détectée et chauffage sur normal
if ((otherdevices[presence] == 'On') and (otherdevices[mode] == 'On')) then
consigne = consigne_conf
else
consigne = consigne_eco
end
if (temperature < consigne) then
commandArray[radiateur]='On'
print('Chauffage ' .. nom .. ' -. ON .-')
-- envoie de la conso dans le capteur virtuel d'énergie
npower, energy = string.match(otherdevices_svalues[conso], "(%d+%.*%d*);(%d+%.*%d*)")
energy = tonumber(energy) + (puissance / 60)
-- conso dans le capteur virtuel d'énergie total
npower2, energy2 = string.match(otherdevices_svalues[conso_total], "(%d+%.*%d*);(%d+%.*%d*)")
energy2 = tonumber(energy2) + (puissance / 60)
-- conso dans le capteur virtuel d'énergie heures creuses
npower3, energy3 = string.match(otherdevices_svalues[conso_creuses], "(%d+%.*%d*);(%d+%.*%d*)")
energy3 = tonumber(energy3) + (puissance / 60)
-- conso dans le capteur virtuel d'énergie heures pleines
npower4, energy4 = string.match(otherdevices_svalues[conso_pleines], "(%d+%.*%d*);(%d+%.*%d*)")
energy4 = tonumber(energy4) + (puissance / 60)
if (otherdevices[heures] == 'On') then
print('envoi dans les consos dont heures pleines')
commandArray[1]={['UpdateDevice'] = conso_id .. '|0|' .. puissance .. ';' .. energy }
commandArray[2]={['UpdateDevice'] = conso_total_id .. '|0|' .. puissance .. ';' .. energy2 }
commandArray[3]={['UpdateDevice'] = conso_pleines_id .. '|0|' .. puissance .. ';' .. energy4 }
else
print('envoi dans les consos dont heures creuses')
commandArray[1]={['UpdateDevice'] = conso_id .. '|0|' .. puissance .. ';' .. energy }
commandArray[2]={['UpdateDevice'] = conso_total_id .. '|0|' .. puissance .. ';' .. energy2 }
commandArray[3]={['UpdateDevice'] = conso_creuses_id .. '|0|' .. puissance .. ';' .. energy3 }
end
else
commandArray[radiateur]='Off'
print('Chauffage ' .. nom .. ' -. OFF .-')
end
print('il fait '..temperature..'C pour une consigne de '..consigne..'C souhaite dans la ' .. nom .. '')
return commandArray
Domoticz sur Linux Mint
boitier RFXtrx 433 (sondes température, température/hygro, zkp1a, chacon, blyss)
Mysensors (Capteurs PIR, Double relais, relais avec bouton)
boitier RFXtrx 433 (sondes température, température/hygro, zkp1a, chacon, blyss)
Mysensors (Capteurs PIR, Double relais, relais avec bouton)
Re: Repartition Consommation HC / HP...
Bonjour,
Je suis nouvel utilisateur de domoticz et je n'arrive pas à utiliser les scripts cité plus haut concernant les heures creuses et heures pleines.
Je suis équipé d'un téléinfo de chez cartelectronic usb 1 module. il est bien reconnu sous domoticz. mais je n'ai que la consomation instantané d'affiché. (j'ai pourtant fait comme indiqué
)
[img][/img]
dans le log j'obtien cela :
2015-12-09 10:08:25.838 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:08:38.554 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:08:51.300 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:09:04.046 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:09:16.793 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:09:29.498 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:09:42.246 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:09:54.972 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:10:07.717 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:10:20.435 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:10:33.151 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:10:45.887 (teleinfo edf) P1 Smart Meter (teleinfo edf)
quand je fait cat /dev/USB0 j'ai bien toute les informations qui arrivent.
Donc voilà j'aimerais recevoir l'index des heures creuses (HCHC) et celui des heures pleines (HCHP). sur le tableau de bord de domotics.
merci d'avance pour votre aide.
Je suis nouvel utilisateur de domoticz et je n'arrive pas à utiliser les scripts cité plus haut concernant les heures creuses et heures pleines.
Je suis équipé d'un téléinfo de chez cartelectronic usb 1 module. il est bien reconnu sous domoticz. mais je n'ai que la consomation instantané d'affiché. (j'ai pourtant fait comme indiqué
[img][/img]
dans le log j'obtien cela :
2015-12-09 10:08:25.838 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:08:38.554 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:08:51.300 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:09:04.046 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:09:16.793 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:09:29.498 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:09:42.246 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:09:54.972 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:10:07.717 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:10:20.435 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:10:33.151 (teleinfo edf) P1 Smart Meter (teleinfo edf)
2015-12-09 10:10:45.887 (teleinfo edf) P1 Smart Meter (teleinfo edf)
quand je fait cat /dev/USB0 j'ai bien toute les informations qui arrivent.
Donc voilà j'aimerais recevoir l'index des heures creuses (HCHC) et celui des heures pleines (HCHP). sur le tableau de bord de domotics.
merci d'avance pour votre aide.
Re: Repartition Consommation HC / HP...
Bonjour
Si tu es en version stable de domoticz 2.3530 essaie avec la version beta.
Si tu es en version stable de domoticz 2.3530 essaie avec la version beta.
RPI2 OSMC + domoticz + Rfx 433e + chacon dio, teleinfo 433 via arduino nano, sonde T° innovaley et TFA 303139, sonde T° piscine DIY 433 oregon, OWL 180, RPI zero W + camera
Re: Repartition Consommation HC / HP...
merci pour ta réponse mais malheureusement ça n'a rien changer !!
n'y a t'il pas moyen de dissocier les information donné par le téléinfo plus simplement que par le script. Comme j'ai dit je début avec domoticz et n'ai pas encore regardé tout les solutions mais si l'on pouvais m'aiguiller ce serait pas mal.
n'y a t'il pas moyen de dissocier les information donné par le téléinfo plus simplement que par le script. Comme j'ai dit je début avec domoticz et n'ai pas encore regardé tout les solutions mais si l'on pouvais m'aiguiller ce serait pas mal.
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Repartition Consommation HC / HP...
Salut,
As tu simplement regardé le rapport ? (bouton visible après avoir cliqué le bouton logs du module)
J'ai ce module et je trouve la page rapport au top
Détail HP HC et calcules des coûts...
As tu simplement regardé le rapport ? (bouton visible après avoir cliqué le bouton logs du module)
J'ai ce module et je trouve la page rapport au top
Détail HP HC et calcules des coûts...
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: Repartition Consommation HC / HP...
merci "vil1driver" ce sont bien les informations que je cherchais à obtenir.
Après je ne comprend pas pourquoi le script ne fonctionnais pas.
Savez vous si est possible de récupérer ces informations dans le dashbord directement.
Merci
Après je ne comprend pas pourquoi le script ne fonctionnais pas.
Savez vous si est possible de récupérer ces informations dans le dashbord directement.
Merci
Re: Repartition Consommation HC / HP...
bonjour
j'ai modifié un bout de script pour détecter les périodes HC/HP automatiquement
cela évite de creer le switch virtuel (ou deux) ainsi que le blocky
c'est en test ce jour, si le basculement se fait automatiquement ce soir ( heures creuses a 23 heures chez moi ) je posterai le bout de code modifié
(c'est le code préalablement modifié par Jacques68 donc pour l'optocoupleur fait maison) mais le principe reste le meme , ce ne doit pas etre difficile de l'appliquer au code initial du post
bonne journée
donc 23h00 est passé et le changement d'etat HP => HC a fonctionné parfaitement
je vous met le code
il faut créer donc 3 variables (1 chaine pour EtatHC et 2 decimal pour les Memo_HP/Memo_HC)
vs pouvez supprimer ensuite vos switch ainsi que vos planning dans blocky
j'ai modifié un bout de script pour détecter les périodes HC/HP automatiquement
cela évite de creer le switch virtuel (ou deux) ainsi que le blocky
c'est en test ce jour, si le basculement se fait automatiquement ce soir ( heures creuses a 23 heures chez moi ) je posterai le bout de code modifié
(c'est le code préalablement modifié par Jacques68 donc pour l'optocoupleur fait maison) mais le principe reste le meme , ce ne doit pas etre difficile de l'appliquer au code initial du post
bonne journée
donc 23h00 est passé et le changement d'etat HP => HC a fonctionné parfaitement
je vous met le code
Code : Tout sélectionner
-- script domoticz/scripts/lua/script_device_compteurHC-HP.lua
-- Initialisation des variables locales
local capteurGlobal = uservariables['CapteurGlobal']
local capteurCptHP = uservariables['CapteurCptHP']
local capteurCptHC = uservariables['CapteurCptHC']
local idxCptHP = uservariables['IdxCptHP']
local idxCptHC = uservariables['IdxCptHC']
local memo_hp = uservariables['Memo_HP']
local memo_hc = uservariables['Memo_HC']
local etathc = uservariables['EtatHC']
-- Mode debug Oui / Non
local debug = uservariables['debug']
-- Fonction de mise à jour
function update(device, id, power, energy, index)
commandArray[index] = {['UpdateDevice'] = id .. "|0|" .. power .. ";" .. ene$
return
end
commandArray = {}
-- On prend en compte a chaque changement de valeur du compteur global
if (devicechanged[capteurGlobal]) then
if (debug == 'OUI') then
print('-- Calcul Compteurs HC / HP --')
print('CapteurGlobal = '..capteurGlobal)
print('CapteurCptHP = '..capteurCptHP)
print('CapteurCptHC = '..capteurCptHC)
print('idxCptHP = '..tostring(idxCptHP))
print('idxCptHC = '..tostring(idxCptHC))
print('HC = '..tostring(etathc))
end
-- extraction de la puissance consommé en watt
-- Attention remplacer dans la ligne ci-dessous 'Compteur EDF' par le nom de vot$
-- extraction de la valeur en watt , (P1 smart meter, ex: "Data" : "17564059;985$
a, b, x, y, watt, z = string.match(otherdevices_svalues['Compteur EDF'], "(%d+%.$
usage = tonumber(watt)
-- Recuperation des valeurs du compteur principal
local heurescreuses
local heurespleines
heurespleines, heurescreuses = otherdevices_svalues[capteurGlobal]:match("([$
heurespleines = tonumber(heurespleines)
heurescreuses = tonumber(heurescreuses)
--Detection HP/HC en fonction du chgt de valeur du compteur EDF
if (tonumber(memo_hp)< heurespleines) then
if (debug == 'OUI') then
print('Détection Heures pleines')
end
etathc = 'Off'
elseif (tonumber(memo_hc)< heurescreuses) then
if (debug == 'OUI') then
print('Détection Heures Creuses')
end
etathc = 'On'
end
--memorisation des dernieres valeurs pour prochain calcul
commandArray['Variable:EtatHC'] = etathc
commandArray['Variable:Memo_HP'] = tostring(heurespleines)
commandArray['Variable:Memo_HC'] = tostring(heurescreuses)
watt = tonumber(watt)
if (debug == 'OUI') then
print('Heures pleines = '..tostring(heurespleines)..' / Heures Creuses =$
end
local consoCumuleCible
local consoInstantCible
--if (otherdevices[flagHC] == 'On') then
if (etathc == 'On') then
-- Periode heures creuse
-- Recupération des valeurs actuelles du compteur Heures Creuses
consoInstantCible, consoCumuleCible = otherdevices_svalues[capteurCptHC]$
-- Seul le cumule du compteur nous interesse pour calculer la nouvelle v$
consoCumuleCible = tonumber(consoCumuleCible)
if (debug == 'OUI') then
print('Compteur cible = HC')
print('Valeur precedente = '..tostring(consoCumuleCible))
end
-- Calcul de la conso journalière HC
consoCumuleCible = consoCumuleCible + heurescreuses
-- Mise à jour du compteur
update(capteurCptHC, idxCptHC, usage , heurescreuses, 1)
-- Mise à 0 de la conso intantanee du compteur HP
consoInstantHP, consoCumuleHP = otherdevices_svalues[capteurCptHP]:match$
consoInstantHP = 0
update(capteurCptHP, idxCptHP, consoInstantHP, consoCumuleHP, 2)
else
--if (otherdevices[flagHC] == 'Off') then
if (etathc == 'Off') then
-- Periode heures pleines
-- Récuperation des valeurs du compteur Heures Pleines
consoInstancible, consoCumuleCible = otherdevices_svalues[capteurCptHP]:$
-- Seul le cumule du compteur nous interesse pour calculer la nouvelle v$
consoCumuleCible = tonumber(consoCumuleCible)
if (debug == 'OUI') then
print('Compteur cible = HP')
print('Valeur precedente = '..tostring(consoCumuleCible))
end
-- calcul de la conso journaliere HP
consoCumuleCible = consoCumuleCible + heurespleines
-- Mise à jour du compteur
update(capteurCptHP, idxCptHP, usage , heurespleines, 3)
-- Mise à 0 de la conso intantanée du compteur HC
consoInstantHC, consoCumuleHC = otherdevices_svalues[capteurCptHC]:match$
consoInstantHC = 0
update(capteurCptHC, idxCptHC, consoInstantHC, consoCumuleHC, 4)
end
if (debug == 'OUI') then
print('-- Fin Calcul Compteur HC / HP --')
end
end
end
return commandArray
vs pouvez supprimer ensuite vos switch ainsi que vos planning dans blocky
Dernière modification par alpin38 le 18 déc. 2015, 10:05, modifié 1 fois.
Re: Repartition Consommation HC / HP...
Je viens de le mettre en route chez moi, pour le moment pas de message d'erreur dans le log
MERCI
MERCI
Re: Repartition Consommation HC / HP...
Hello à tous,
J'ai mis en fonction chez moi aussi, j'ai un TéléInfo EDF USB, donc, la solution de la page 1 ne fonctionne pas, il faut prendre la 2ème solution.
Pour les débutants comme moi
Il faut bien déclarer les variables via le menu de Domoticz et non dans le script.
Il faut relancer Domoticz via /home/pi/domoticz/scripts/restart_domoticz
Dans mon cas, j'avais une erreur ...nil... sur la variable HP ou HC... car j'ai fait les tests avant et après le passage en HC.
local capteurCptHP = uservariables['CapteurCptHP']
local capteurCptHC = uservariables['CapteurCptHC']
Je suis devenu fou... pendant 1h j'ai cherché...à la fin, j'ai dit... aller je relance...
Attention au Maj ou Min des variables...
Attention à votre Copier/Coller du dernier script... vous allez avoir des $ à la fin des lignes trop longue... je l'ai eu avec VI.
Pour l'instant, cela fonctionne... je regarde demain matin si le passage HP fonctionne.
Chez moi c'est HP de 7h00 à 23h10 et HC de 23h10 à 7h00
Encore merci pour votre aide sur les x sujets du forum... on avance très vite avec vos scripts déjà tout fait
J'ai mis en fonction chez moi aussi, j'ai un TéléInfo EDF USB, donc, la solution de la page 1 ne fonctionne pas, il faut prendre la 2ème solution.
Pour les débutants comme moi
Il faut bien déclarer les variables via le menu de Domoticz et non dans le script.
Il faut relancer Domoticz via /home/pi/domoticz/scripts/restart_domoticz
Dans mon cas, j'avais une erreur ...nil... sur la variable HP ou HC... car j'ai fait les tests avant et après le passage en HC.
local capteurCptHP = uservariables['CapteurCptHP']
local capteurCptHC = uservariables['CapteurCptHC']
Je suis devenu fou... pendant 1h j'ai cherché...à la fin, j'ai dit... aller je relance...
Attention au Maj ou Min des variables...
Attention à votre Copier/Coller du dernier script... vous allez avoir des $ à la fin des lignes trop longue... je l'ai eu avec VI.
Pour l'instant, cela fonctionne... je regarde demain matin si le passage HP fonctionne.
Chez moi c'est HP de 7h00 à 23h10 et HC de 23h10 à 7h00
Encore merci pour votre aide sur les x sujets du forum... on avance très vite avec vos scripts déjà tout fait