[LUA+Bash] Calcul de DJU

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.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Calcul de DJU

Message par papoo »

benbidouille a écrit :
Les variables Tn, Tn_Hold, Tx et Nb Jours de Chauffage sont mises à jours conformément aux évolutions de température de la sonde utilisée ainsi que sous l'effet des deux scripts lancés à 6:00 et 18:00 par crontab.
La variable
local var_chauffage
existe elle et est elle > 0 ? lors de l'allumage de ton chauffage il te faut mettre cette variable à 1 automatiquement via un script, ou manuellement.
benbidouille a écrit : Je me suis lancé à regarder les codes et ai interprété que le script calcul_dju.lua situé dans le répertoire /lua_parser n'était jamais éxécuté.

Je crois comprendre que ce qui est dans le répertoire /lua est lancé périodiquement automatiquement à la différence de ce qui est situé dans /lua_parser aussi en regardant le script lance_calcul_dju.sh je me suis rendu compte qu'était commenté la commande suivante, que j'ai interprété comme nécessaire. (peut être à tord)

#curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevices&script=calcul_dju.lua"

Une fois rétablit, calcul_dju.lua s'éxécute désormais mais plante avec l'erreur suivante correspondant à la ligne de code ci-dessous associée.

CLuaHandler: /home/pi/domoticz/scripts/lua_parsers/calcul_dju.lua:49: attempt to index global 'uservariablechanged' (a nil value)
if uservariablechanged[var_chauffage] then

Je devine qu'il s'agit ici d'un test de mise a jour récente dans la base Domoticz de la variable Nb Jours de Chauffage, selon les log d’exécution du script lance_calcul_dju.sh, nul doute que la variable est-bien incrémentée juste avant le calcul des DJU attendu.

Mes hypothèses selon laquelle calcul_dju.lua doit être décoché pour être éxécuté est elle pertinente ?
non il n'existe pas dans la version finale.
il y a 4 fichiers à créer :
tn_hold.sh
script_variable_calcul_dju.lua
lance_calcul_dju.sh
script_device_temp_ext.lua
je ne comprend pas ou tu as trouvé le contenu d'un fichier calcul_dju.lua à placer dans lua_handler, car je ne l'ai pas posté
benbidouille a écrit : Si confirmé alors, bizarrement commenté, ce pourrai t’il que le script calcul_dju.lua proposé sur le forum ne soit pas dans sa version finale ? et que je sois le premier bizu à essayer ton script depuis le forum ?
tout est possible, et à la relecture de ce script qui date de mes débuts en lua, je me rend compte que je ne me suis pas facilité la tache et que du coup à vous non plus.
je tacherai de le reécrire pour qu'il soit simple à mettre en place et à utiliser.
le contenu des 4 fichiers

Code : Tout sélectionner

--[[   
~/domoticz/scripts/lua/script_device_temp_ext.lua
auteur : papoo
version : 1.01
MAJ : 11/08/2016
création : 06/05/2016
 tx = température maximale du jour J mesurée à 2 mètres du sol sous abri et relevée entre J à 6h et J+1 (le lendemain) à 6h UTC. 
 tn = température minimale du jour J mesurée à 2 mètres du sol sous abri et relevée entre J-1 (la veille) à 18h et J à 18h UTC. 
]]--
--------------------------------------------
------------ Variables à éditer ------------
-------------------------------------------- 
local debugging = false  					-- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local url = '127.0.0.1:8080'   			-- user:pass@ip:port de domoticz
local temp_ext  = 'Temperature exterieure' 	-- nom de la sonde extérieure
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------

--------------------------------------------
---------------- Fonctions -----------------
-------------------------------------------- 
function voir_les_logs (s, debugging)
    if (debugging) then 
		if s ~= nil then
        print ("<font color='#f3031d'>".. s .."</font>")
		else
		print ("<font color='#f3031d'>aucune valeur affichable</font>")
		end
    end
end	

-------------------------------------------- 

commandArray = {}
if (devicechanged[temp_ext])then
voir_les_logs("=========== Mini/Maxi Température Extérieure (v1.0) ===========",debugging)
		if(uservariables['Tx'] == nil) then
		-- Création de la variable Tx si elle n'existe pas
         commandArray['OpenURL']=url..'/json.htm?type=command&param=saveuservariable&vname=Tx&vtype=2&vvalue=150'
            voir_les_logs("--- --- --- Création Variable Tx manquante --- --- --- ",debugging)
        print('script supendu')
		end
		if(uservariables['Tn'] == nil) then
         commandArray['OpenURL']=url..'/json.htm?type=command&param=saveuservariable&vname=Tn&vtype=2&vvalue=-150'
		 -- Création de la variable Tn si elle n'existe pas
            voir_les_logs("--- --- --- Création Variable Manquante Tn --- --- --- ",debugging)
        print('script supendu')
		end
max_min = string.match(otherdevices_svalues[temp_ext], "%d+%.*%d*")
t_max_min = tonumber(max_min)
	voir_les_logs("--- --- --- Température Ext : "..t_max_min,debugging)
	if (t_max_min < tonumber(uservariables['Tn'])) then
		voir_les_logs("--- --- --- Température Extérieure inférieure à Variable Tn : "..uservariables['Tn'],debugging)
		commandArray['Variable:Tn'] = tostring(t_max_min) -- mise à jour de la variable tn
		voir_les_logs("--- --- --- mise à jour de la Variable Tn  --- --- --- ",debugging)
	elseif (t_max_min > tonumber(uservariables['Tx'])) then
		voir_les_logs("--- --- --- Température Extérieure supérieure à Variable Tx : "..uservariables['Tx'],debugging)
		commandArray['Variable:Tx'] = tostring(t_max_min) -- mise à jour de la variable tx
		voir_les_logs("--- --- --- mise à jour de la Variable Tx  --- --- --- ",debugging)	
	end
end
return commandArray


Code : Tout sélectionner

--[[     Calcul DJU du jour
name : script_variable_calcul_dju.lua
auteur : papoo
version : 1.15
mise à jour : 17/08/2016
création : 08/05/2016

Principe :
Un degré jour est calculé à partir des températures météorologiques extrêmes du lieu et du jour J : 
- Tn : température minimale du jour J mesurée à 2 mètres du sol sous abri et relevée entre J-1 (la veille) à 18h et J à 18h UTC. 
- Tx : température maximale du jour J mesurée à 2 mètres du sol sous abri et relevée entre J à 6h et J+1 (le lendemain) à 6h UTC. 
- S : seuil de température de référence choisi. 
- Moy = (Tn + Tx)/2 Température Moyenne de la journée
Pour un calcul de déficits  de température par rapport au seuil choisi : 
- Si S > TX (cas fréquent en hiver) : DJ = S - Moy 
- Si S ≤ TN (cas exceptionnel en début ou en fin de saison de chauffe) : DJ = 0 
- Si TN < S ≤ TX (cas possible en début ou en fin de saison de chauffe) : DJ = ( S –TN ) * (0.08 + 0.42 * ( S –TN ) / ( TX – TN ))
]]--
--------------------------------------------
------------ Variables à éditer ------------
-------------------------------------------- 

local debugging = false  					-- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local S = 18 								-- seuil de température de non chauffage (par convention : 18°C)
local temp_ext  = 'Temperature exterieure' 	-- nom de la sonde extérieure
local var_chauffage="Nb Jours de Chauffage" -- nom de la variable permettant de compter le nombre de jour de chauffage et de connaitre l'état du chauffage  0 = Arret, >0 Nb de jours
local url = '127.0.0.1:8080'   			-- user:pass@ip:port de domoticz
local idx_dju = 474 						-- IDX du compteur virtuel DJU à créer avant de lancer ce script
local name_dju = "DJU" 						-- Nomp du compteur virtuel DJU à créer avant de lancer ce script

--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------

--------------------------------------------
---------------- Fonctions -----------------
-------------------------------------------- 
function voir_les_logs (s, debugging)
    if (debugging) then 
		if s ~= nil then
        print ("<font color='#f3031d'>".. s .."</font>")
		else
		print ("<font color='#f3031d'>aucune valeur affichable</font>")
		end
    end
end	

function url_encode(str)
  if (str) then
    str = string.gsub (str, "\n", "\r\n")
    str = string.gsub (str, "([^%w %-%_%.%~])",
        function (c) return string.format ("%%%02X", string.byte(c)) end)
    str = string.gsub (str, " ", "+")
  end
  return str   
end 

function round(n)
    return n % 1 >= 0.5 and math.ceil(n) or math.floor(n)
end
--------------------------------------------
-------------- Fin Fonctions ---------------
--------------------------------------------
commandArray = {}

if uservariablechanged[var_chauffage] then

voir_les_logs("=========== Calcul DJU (v1.0) ===========",debugging)
--[[		if(uservariables[var_chauffage] == nil) then -- Création de la variable Tx car elle n'existe pas
		voir_les_logs("--- --- --- La Variable " .. var_chauffage .." n'existe pas --- --- --- ",debugging)
		         commandArray['OpenURL']=url..'/json.htm?type=command&param=saveuservariable&vname='..url_encode(var_chauffage)..'&vtype=2&vvalue=1'
		 adresse = url_encode(var_chauffage)
		voir_les_logs("--- --- --- adresse " .. adresse .."  --- --- --- ",debugging)
		voir_les_logs("--- --- --- Création Variable " .. var_chauffage .." manquante --- --- --- ",debugging)
        print('script supendu')
			else
]]--	
	total_dju = string.match(otherdevices_svalues[name_dju], "%d+%.*%d*")
			voir_les_logs("--- --- --- Total DJU : ".. total_dju .." DJU",debugging)
		
	if (tonumber(uservariables[var_chauffage]) > 0) then --le chauffage est allumé, calcul des DJU
		voir_les_logs("--- --- --- Nb de jour de chauffage : " .. tonumber(uservariables[var_chauffage]) .." --- --- --- ",debugging)
		
		max_min = string.match(otherdevices_svalues[temp_ext], "%d+%.*%d*")
		t_max_min = tonumber(max_min)
		voir_les_logs("--- --- --- Température Ext : "..t_max_min,debugging)

		TN = tonumber(uservariables['Tn_Hold'])
		TX = tonumber(uservariables['Tx'])
		MOY = tonumber((TN + TX) / 2)

		if (S > TX) then
			voir_les_logs("--- --- --- Température de référence supérieure à Variable Tx : ".. TX,debugging)
			voir_les_logs("--- --- --- Température de référence : ".. S,debugging)
			voir_les_logs("--- --- --- Variable TX : ".. TX,debugging)
			voir_les_logs("--- --- --- Moyenne : ".. MOY,debugging)
			DJ = round(S - MOY)
			voir_les_logs("--- --- --- DJU : ".. DJ,debugging)
			-- commandArray['UpdateDevice']= idx_dju ..'|0|'.. tostring(DJ)
			DJ = tonumber(DJ) + tonumber(total_dju) -- on ajoute les DJU du jour à l'index précédent
			commandArray[#commandArray+1] = {['UpdateDevice'] = idx_dju..'|0|'..tostring(DJ)}
			
			commandArray[#commandArray+1] = {['Variable:Tx'] = tostring(-50)} -- Réinitialisation variable Tx
			

		elseif (S <= TN) then
			voir_les_logs("--- --- --- Température de référence inférieure ou égale à Variable Tn : ".. TN,debugging)
		--commandArray['Variable:Tx'] = tostring(t_max_min) -- mise à jour de la variable tx
			voir_les_logs("--- --- --- Température de référence : ".. S,debugging)
			voir_les_logs("--- --- --- Variable Tn : ".. TN,debugging)
			voir_les_logs("--- --- --- Moyenne : ".. MOY,debugging)
			DJ = 0
			voir_les_logs("--- --- --- DJU : ".. DJ,debugging)	
			DJ = tonumber(total_dju) -- on renvoi l'index du jour précédent
			-- commandArray['UpdateDevice']= idx_dju ..'|0|'.. tostring(DJ)
			DJ = tonumber(DJ) + tonumber(total_dju) -- on ajoute les DJU du jour à l'index précédent
			commandArray[#commandArray+1] = {['UpdateDevice'] = idx_dju..'|0|'..tostring(DJ)}
			
			commandArray[#commandArray+1] = {['Variable:Tx'] = tostring(-50)} -- Réinitialisation variable Tx
			
		else 
			voir_les_logs("--- --- --- Température de référence comprise entre Tn et Tx",debugging)
			-- commandArray['Variable:Tx'] = tostring(t_max_min) -- mise à jour de la variable tx
			voir_les_logs("--- --- --- Température de référence : ".. S,debugging)
			voir_les_logs("--- --- --- Variable TN : ".. TN,debugging)
			voir_les_logs("--- --- --- Variable TX : ".. TX,debugging)
			voir_les_logs("--- --- --- Moyenne : ".. MOY,debugging)
			S_TN = 	S - TN
			voir_les_logs("--- --- --- S - TN : ".. S_TN,debugging)
			TX_TN = TX - TN
			voir_les_logs("--- --- --- TX - TN : ".. TX_TN,debugging)
			DJ =  round(S_TN  * ("0.08" + "0.42" * S_TN / TX_TN))
			--DJ = ( S – TN ) * ('0.08' + '0.42' * ( S – TN ) / ( TX - TN ))
			voir_les_logs("--- --- --- DJU : ".. DJ,debugging)
			--commandArray['UpdateDevice']= idx_dju ..'|0|'.. tostring(DJ)
			DJ = tonumber(DJ) + tonumber(total_dju) -- on ajoute les DJU du jour à l'index précédent
			commandArray[#commandArray+1] = {['UpdateDevice'] = idx_dju..'|0|'..tostring(DJ)}
			
			commandArray[#commandArray+1] = {['Variable:Tx'] = tostring(-50)} -- Réinitialisation variable Tx
	
		end
	--commandArray['Variable:'.. var_chauffage]=tostring(tonumber(uservariables[var_chauffage])+1)  -- Ajoute un jour de chauffage supplémentaire dans la variable			
	else -- Le chauffage est éteint, pas de calcul de DJU
		voir_les_logs("--- --- --- Nb de jour de chauffage : " .. tonumber(uservariables[var_chauffage]) .." --- --- --- ",debugging)
		voir_les_logs("--- --- --- Le chauffage est arrêté --- --- --- ",debugging)
		commandArray[#commandArray+1] = {['Variable:Tx'] = tostring(-50)} -- Réinitialisation variable Tx
		
		commandArray[#commandArray+1] = {['UpdateDevice'] = idx_dju..'|0|0'} -- Remise à zéro des Dju
		
	end

		
voir_les_logs("=========== Fin Calcul DJU (v1.0) ===========",debugging)
end	
return commandArray


Code : Tout sélectionner

#!/bin/bash

# Settings
#crontab -e
# */2 * * * * sudo /home/pi/domoticz/scripts/sh/tn_hold.sh
# chmod +x /home/pi/domoticz/scripts/sh/tn_hold.sh
# sudo /home/pi/domoticz/scripts/sh/tn_hold.sh


DOMO_IP="192.168.1.24"      # Domoticz IP Address
DOMO_PORT="8080"         # Domoticz Port

Tn_IDX="16"               # Idx de la variable Tn
Tn_uservariablename="Tn"  # Nom de la variable Tn

Tn_hold_IDX="17"        # Idx de la variable Tn_hold
Tn_hold_uservariablename="Tn_Hold"  # Nom de la variable Tn





	
        Tn=$(curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=getuservariable&idx=$Tn_IDX"| jq -r .result[].Value)
		echo "Recuperation valeur variable Tn"
		echo $Tn
		curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=updateuservariable&idx=$Tn_hold_IDX&vname=$Tn_hold_uservariablename&vtype=2&vvalue=$Tn" > /dev/null
		echo "Mise a jour valeur variable Tn_hold avec la Temperature mini"		
       curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=updateuservariable&idx=$Tn_IDX&vname=$Tn_uservariablename&vtype=2&vvalue=150" > /dev/null
		echo "Changement valeur variable Tn a 150 pour debuter un nouveau jour"

Code : Tout sélectionner

#!/bin/bash

# Settings
#crontab -e
# 0 18 * * * sudo /home/pi/domoticz/scripts/sh/calcul_dju.sh

# chmod +x /home/pi/domoticz/scripts/sh/calcul_dju.sh
# sudo /home/pi/domoticz/scripts/sh/calcul_dju.sh

#===============Principe========================
#Un degré jour est calculé à partir des températures météorologiques extrêmes du lieu et du jour J : 
#- Tn : température minimale du jour J mesurée à 2 mètres du sol sous abri et relevée entre J-1 (la veille) à 18h et J à 18h UTC. 
#- Tx : température maximale du jour J mesurée à 2 mètres du sol sous abri et relevée entre J à 6h et J+1 (le lendemain) à 6h UTC. 
#- S : seuil de température de référence choisi. 
#- Moy = (Tn + Tx)/2 Température Moyenne de la journée
#Pour un calcul de déficits  de température par rapport au seuil choisi : 
#- Si S > TX (cas fréquent en hiver) : DJ = S - Moy 
#- Si S ≤ TN (cas exceptionnel en début ou en fin de saison de chauffe) : DJ = 0 
#- Si TN < S ≤ TX (cas possible en début ou en fin de saison de chauffe) : DJ = ( S –TN ) * (0.08 + 0.42 * ( S –TN ) / ( TX – TN ))
#===============================================



DOMO_IP="192.168.1.24"      # Domoticz IP Address
DOMO_PORT="8080"         # Domoticz Port
S="2"					# seuil de température de non chauffage (par convention : 18°C)
Tx_IDX="15"               # Idx de la variable Tx
Tx_uservariablename="Tx"  # Nom de la variable Tx

Tn_hold_IDX="17"        # Idx de la variable Tn_hold
Tn_hold_uservariablename="Tn_Hold"  # Nom de la variable Tn

	
        Tx=$(curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=getuservariable&idx=$Tx_IDX"| jq -r .result[].Value) 
		echo "Recuperation valeur variable Tx"
		let Tx
		echo $Tx
		Tn=$(curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=getuservariable&idx=$Tn_hold_IDX"| jq -r .result[].Value) 
		let Tn
		echo "Recuperation valeur variable Tn memorisé"
		echo $Tn
		Moy= echo "($Tn+$Tx)/2" |bc -l
		echo $Moy
		
		#if [ $(($S)) -gt $(($Tx)) ] # > strictement superieur
		if expr $S \> $Tx
			then 
				echo $S ">" $Tx
		#elif [ $(($S)) -le $(($Tn))  ] # inférieur ou égal
		elif expr $S \< $Tn \| $S = $Tn
			then
				echo $S "<=" $Tn
		else #if [ $((Tn)) -lt $(($S)) || $(($S)) -le $(($Tx)) ]
			#then
				echo $Tn "<" $S "<=" $Tx
		fi
		#curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=updateuservariable&idx=$Tn_hold_IDX&vname=$Tn_hold_uservariablename&vtype=2&vvalue=$Tn"
		#echo "Mise a jour valeur variable Tn_hold avec la Temperature mini"		
       #curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=updateuservariable&idx=$Tx_IDX&vname=$Tx_uservariablename&vtype=2&vvalue=-150"
		#echo "Changement valeur variable Tx a -150 pour debuter un nouveau jour"

domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Calcul de DJU

Message par papoo »

thuglife a écrit :Bonjour,

J'ai cela comme erreur vous pouvez m'aider ?
2017-12-30 21:32:20.689 Error: EventSystem: in CalculDJU: [string "--[[ ..."]:118: attempt to concatenate field '?' (a nil value)
Cdt

PS : J'avais pas renseigné de valeur dans les variable user. Désolé

Par contre étant donné que le travail est fait pour les DJU, nous pourrions intégrer également dans le même script le calcul des DJC qui est simplement l'inverse ? Utile pour la clim.
heureux que cela fonctionne pour toi
pour les DJU réfrigération, je me le note pour la version 2
une question importante avant de me lancer, comment indiquer au script que l'on est en période de calcul chauffage ou climatisation?
1) automatiquement avec par exemple un contrôle de la saison? été = clim. automne, hiver, printemps = Chauffage
2) à partir d'une certaine date, fixé par l'utilisateur en début de script?
3) via deux switchs Marche chauffage, Marche climatisation
4)autre
Dernière modification par papoo le 31 déc. 2017, 14:12, modifié 2 fois.
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
benbidouille
Messages : 102
Inscription : 11 déc. 2017, 11:48

Re: Calcul de DJU

Message par benbidouille »

Et c'est beaucoup mieux désormais, :D les compteurs DJU Météo France et Intégrale sont updatés correctement.

En revanche me reste à régler une problème d'affichage de ces 2 compteurs DJU, les graphs de domoticz ne ressemblent pas a ceux présentés en exemples par papoo, A Suivre ............
RPI3 + WDPiDrive + UPS Pico HV3.0B HAT + Teleinfo USB (6) + 1Wire GPIO + DS18B20 (15)+ Gateway MySensor NRF24, Sensors , Relais ... + Gateway Velux .... + Gestion Pompe à Chaleur + NRFDoctor .... tout en DIY
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Calcul de DJU

Message par papoo »

une petite capture d'ecran? pour ce rendre compte?
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
benbidouille
Messages : 102
Inscription : 11 déc. 2017, 11:48

Re: Calcul de DJU

Message par benbidouille »

papoo a écrit : je tacherai de le reécrire pour qu'il soit simple à mettre en place et à utiliser.
Pas sur que cela soit nécessaire, c'est vrai que l'entête de ta publication initiale est différente de celle de ta publication de ce jour ci dessous et beaucoup mieux documentée :)

Code : Tout sélectionner

--[[     Calcul DJU du jour
name : script_variable_calcul_dju.lua
auteur : papoo
version : 1.15
mise à jour : 17/08/2016
création : 08/05/2016
Seuls les bizu se font avoir et c'est avec les erreurs que l'on apprend.
Ton codage de l'époque est parfait pour débuter, le temps passé a le décortiquer m'a permis de progresser.
Merci pour ton aide et dévouement
RPI3 + WDPiDrive + UPS Pico HV3.0B HAT + Teleinfo USB (6) + 1Wire GPIO + DS18B20 (15)+ Gateway MySensor NRF24, Sensors , Relais ... + Gateway Velux .... + Gestion Pompe à Chaleur + NRFDoctor .... tout en DIY
benbidouille
Messages : 102
Inscription : 11 déc. 2017, 11:48

Re: Calcul de DJU

Message par benbidouille »

papoo a écrit :une petite capture d'ecran? pour ce rendre compte?
Oups, trop tard, je viens d'effacer les 2 devices de ces 2 compteurs pour les recréer et repartir sur une base propre, cela je crois efface toutes les données de la base domoticz.

J'attends qu'ils soient mis à jours et reviendrait à toi si nécessaire et si j'ai toujours un problème, Merci
RPI3 + WDPiDrive + UPS Pico HV3.0B HAT + Teleinfo USB (6) + 1Wire GPIO + DS18B20 (15)+ Gateway MySensor NRF24, Sensors , Relais ... + Gateway Velux .... + Gestion Pompe à Chaleur + NRFDoctor .... tout en DIY
thuglife
Messages : 35
Inscription : 28 janv. 2017, 23:08

Re: Calcul de DJU

Message par thuglife »

papoo a écrit : heureux que cela fonctionne pour toi
pour les DJU réfrigération, je me le note pour la version 2
une question importante avant de me lancer, comment indiquer au script que l'on est en période de calcul chauffage ou climatisation?
1) automatiquement avec par exemple un contrôle de la saison? été = clim. automne, hiver, printemps = Chauffage
2) à partir d'une certaine date, fixé par l'utilisateur en début de script?
3) via deux switchs Marche chauffage, Marche climatisation
4)autre
Bonjour Pappo,
En faite pas besoin de tout cela. En effet, les calculs DJU et DJC dépendent de la température extérieure en fonction de la température de référence (qui est identique pour les deux calcul, souvent 18°C).
Pour faire simple, quand la température de référence est > à la moyenne extérieure il y a des DJU mais les DJC sont à 0.
quand la température de référence est < à la moyenne extérieure il y a des DJC mais les DJU sont à 0.

Donc pas besoin de bouton seul la température extérieure suffit.
Pour résumer quand il y a des DJU les DJC sont forcement = 0 tandis que quand les DJU = 0 il y a forcement des DJC non nul.

Ci-joint le calcul exact :
http://climatheque.meteo.fr/Docs/DJC-methode.pdf
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Calcul de DJU

Message par papoo »

donc tu cumul des DJU chauffage ou réfrigération sans que ton chauffage ou climatisation ne soient en fonctionnement?
effectivement c'est beaucoup plus simple.
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
thuglife
Messages : 35
Inscription : 28 janv. 2017, 23:08

Re: Calcul de DJU

Message par thuglife »

Oui.
Pour cela il faut en comprendre l’intérêt, l'utilité des DJU et DJC. Penons le cas du chauffage.
En faite la plupart des personnes compare leurs consommations de Chauffage suivant des dates équivalentes des années antérieures (par exemple comparaison des conso du 12/12/2016 avec le 12/12/2017). Cela ne sert à pas grand chose.
C'est là que les DJU rentre en compte, étant donné qu'ils sont calculés uniquement suivant la températures extérieures, pour faire des comparaisons de consommation de chauffage il faut prendre tous les jours d'une saison de chauffage ayant les mêmes DJU. Cela veux dire que nous comparons notre consommation de chauffage entre des jours ayant les mêmes rigueurs climatiques extérieure.
Ainsi concrètement si nous avons 4 jours avec des DJU identiques et les conso suivantes (chiffre pris au hasard) :
- 01/10/2017 => DJU = 10 => Conso = 45kwh
- 10/10/2017 => DJU = 10 => Conso = 65kwh
- 08/11/2017 => DJU = 10 => Conso = 43kwh
- 13/12/2017 => DJU = 10 => Conso = 39kwh
Nous voyons rapidement que pour le 10/10 nous étions au dessus de notre cible habituelle de notre installation => on surconsomme.
Bien entendu pour étudier cela, il faut impérativement avoir la consommation de chauffage et uniquement celle-ci (sans l'éclairage, machine a laver etc) sinon l'étude est faussée.

Pour les DJC et la clim c'est pareil.

PS : Pour info dans le lien donné précédemment qui explique la méthode officielle de calcul des DJU et DJC de météoFrance, vous pourrez voir que le calcul se fait presque 3 jours, et que le résultat donné est celui de la veille.

Du coup pour finir il serait interessant d'avoir un graphique représentant sur l'axe des X les DJU et l'axe Y les kwh chauffage, nous aurions ainsi la signature énergétique de notre installation.

En espérant avoir été clair.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Calcul de DJU

Message par papoo »

thuglife a écrit :
PS : Pour info dans le lien donné précédemment qui explique la méthode officielle de calcul des DJU et DJC de météoFrance, vous pourrez voir que le calcul se fait presque 3 jours, et que le résultat donné est celui de la veille.
tu prêche un convaincu sur l’utilité des DJU, ce pour quoi j'ai commis ces scripts
je ne parlais que du mode d'activation du comptage des DJU en relation avec la consommation de chauffage ou de climatisation. accumuler des données qui ne servaient pas ne m’étais pas apparu utilise au premier abord mais je me rangeais à tes arguments, le script étant beaucoup plus facile à ecrire
thuglife a écrit : Du coup pour finir il serait interessant d'avoir un graphique représentant sur l'axe des X les DJU et l'axe Y les kwh chauffage, nous aurions ainsi la signature énergétique de notre installation.
En espérant avoir été clair.
oui en effet mais pour l'instant je ne vois pas comment réaliser une telle chose dans domoticz.
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Répondre