[LUA] Chauffage PID

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.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: chauffage PID

Message par vil1driver »

@lmet, t'as rien suivi :D
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
lmet
Messages : 252
Inscription : 30 juin 2017, 18:16
Localisation : Val d'Oise
Contact :

Re: chauffage PID

Message par lmet »

Bah, je ne parlais pas de modules.lua mais des scripts en général. Pour une fois que je lis le wiki
Edit : Oups tu as raison, j'ai compris l'inverse de ce qui a été écrit. Désolé
Domoticz : V4.10717
Zigate : V4.11230 plugin:4.5.4 firmware:031a
Mon petit blog domotique
Djodo
Messages : 86
Inscription : 23 févr. 2016, 12:32

Re: chauffage PID

Message par Djodo »

Ok pas de problème si ce n'est pas possible. Le jour où je restaurerai le système et que j'oublierai le fichier 'modules.lua', Domoticz me l'indiquera dans les logs...

Par contre j'ai un problème avec ce fichier !
Domoticz m'indique dans les logs :
Error: EventSystem: in Script module chauffage: [string "--[[ ..."]:66: cannot open --[[ "puis il me cite le script en entier..."
J'ai augmenté les autorisations du fichier jusqu'à 777 mais ça ne change rien. Est ce que ce serait lié au fait que j'utilise la distribution DietPi avec je pense une disposition différente des dossiers ?
Ah non excusez moi j'ai fait une boulette... :oops:
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: chauffage PID

Message par vil1driver »

tu as le fichier JSON.lua dans le dossier ?
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
Djodo
Messages : 86
Inscription : 23 févr. 2016, 12:32

Re: chauffage PID

Message par Djodo »

Non non t'inquiète pas vil1driver, c'était parce que j'avais laissé le fichier 'modules.lua' dans les événements. :roll:
rapinou
Messages : 119
Inscription : 17 nov. 2016, 01:44

Re: chauffage PID

Message par rapinou »

Salut vil1driver,

J'étais en train d'essayer de décrypter ton script, car j'aime bien comprendre plutôt que d'appliquer simplement, et je me demandais l'intérêt de ce passage là sur le second système intégrale :

Code : Tout sélectionner

			-- Aux abords de la consigne, passage au second système intégrale
			if somme_erreurs < 2 then
				somme_erreurs = tonumber(uservariables['PID_integrale_'..pid['zone']])
				-- Re-calcul intégrale si hors hysteresis
				-- A plus ou moins 2 dixièmes de degrés d'écart avec la consigne
				-- Le ratrapage est considéré OK, l'intégrale n'est pas recalculée
				if math.abs(erreur) > 0.11 then
					-- Calcul intégrale
					somme_erreurs = round(constrain(somme_erreurs+erreur/2,0,2),2)
					-- Màj
					commandArray['Variable:PID_integrale_'..pid['zone']] = tostring(somme_erreurs)
				end
			end
Pourquoi ne pas continuer à calculer l'intégrale de la même façon ?

Au passage, une coquille : "A plus ou moins 2 dixièmes de degrés" à modifier comme tu as changé pour 0.11 il y a quelques jours.
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
jackslayter
Messages : 1040
Inscription : 30 sept. 2014, 14:40
Localisation : Isère (38)

Re: chauffage PID

Message par jackslayter »

une idee pourquoi j'ai des erreurs

Code : Tout sélectionner

2017-11-07 02:09:20.425 Error: EventSystem: in thermostat2: [string "commandArray = {}..."]:40: attempt to perform arithmetic on global 'duree' (a string value)
alors que ça marche bien

Code : Tout sélectionner

time = os.date("*t")
local radiateur = 'radiateur salon'

function lastSeen(device)
  timestamp = otherdevices_lastupdate[device] or device
  y, m, d, H, M, S = timestamp:match("(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)")
  difference = os.difftime(os.time(), os.time{year=y, month=m, day=d, hour=H, min=M, sec=S})
  return difference
end


function stateChange(device)
	if (devicechanged[device] == nil) then
		return false
	elseif (devicechanged[device] == uservariables['lastState_'..device]) then
		return false
	else
		duree = lastSeen(uservariables_lastupdate['lastState_'..device])
		commandArray[120] = {['Variable:lastState_'..device] = otherdevices[device]}
		--updateVar('lastState_'..device,otherdevices[device])
		return otherdevices[device]
	end
end	

if stateChange(radiateur) == 'Off' then
      power, energy = string.match(otherdevices_svalues["conso_rad_salon"], "(%d+%.*%d*);(%d+%.*%d*)")
      commandArray['UpdateDevice'] = otherdevices_idx["conso_rad_salon"] .. '|0|2020;' .. energy
end
if stateChange(radiateur) == 'On' then
      power, energy = string.match(otherdevices_svalues["conso_rad_salon"], "(%d+%.*%d*);(%d+%.*%d*)")
      energy = tonumber(energy + (2020 / 3600 * duree))
      commandArray['UpdateDevice'] = otherdevices_idx["conso_rad_salon"] .. '|0|0;' .. energy
end
merci
Raspberry Pi + RFLink + Domoticz Beta
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
Snake29
Messages : 40
Inscription : 09 avr. 2016, 22:03
Localisation : Finistère

Re: chauffage PID

Message par Snake29 »

Bonjour à tous,

Et un grand merci pour toutes vos contributions...

Vil1driver, je suis hyper intéressé par ton script PID.
En effet, je gère le chauffage sur 4 zones (2 pièces de vie + 2 chambres) avec un script "classique". Mes radiateurs sont à inertie et le résultat me satisfait moyennement.
Aussi je voulais tester ton script.

J'ai donc pris modules.lua, et créé un script suivant ton modèle en première page.

Et je bute désespérement sur cette erreur
Error: EventSystem: in script_time_test: /home/pi/domoticz/scripts/lua/modules.lua:7: unexpected symbol near '<
Je ne vois pas bien d'où vient le souci...
Raspb. Pi 2b - Domoticz v3.5877 - Aeotec Z-stick S5 - RFXtrx 433 + Tabl. murale ImperiHome
5 Qubino fil pilote v2
4 Détect. fumée Popp + Chacon
Cpt. élec. OWL CM160
10 Oregon THGN132N + Lacrosse WS2300

Prises DIO, ZMNHND1, etc...
rapinou
Messages : 119
Inscription : 17 nov. 2016, 01:44

Re: chauffage PID

Message par rapinou »

Tu as dû modifié le script de vil1driver.
Qu'as-tu en ligne 7 ?
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
Snake29
Messages : 40
Inscription : 09 avr. 2016, 22:03
Localisation : Finistère

Re: chauffage PID

Message par Snake29 »

J'ai simplement modifié l'IP par mon IP locale.

Voilà les premières lignes, je sèche ?
Capture.JPG
Capture.JPG (43.05 Kio) Consulté 9086 fois
Raspb. Pi 2b - Domoticz v3.5877 - Aeotec Z-stick S5 - RFXtrx 433 + Tabl. murale ImperiHome
5 Qubino fil pilote v2
4 Détect. fumée Popp + Chacon
Cpt. élec. OWL CM160
10 Oregon THGN132N + Lacrosse WS2300

Prises DIO, ZMNHND1, etc...
Répondre