Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

Opentherm

klona
Timide
Messages : 60
Inscription : 24 mars 2018, 20:04

Opentherm

Message par klona » 02 juil. 2018, 07:58

Bonjour,
je lance ce sujet car je suis à la recherche d'infos et je me dis que je ne dois pas être tout seul..

La question est de savoir comment piloter une chaudière à condensation, et ce pas au travers d'un bête contact sec, mais en utilisant un bus permettant de réguler la température de sortie d'eau, la vitesse de circulation, de modifier la courbe de chauffe, et de récupérer des informations comme la température de retour du circuit voir même la consommation de gaz.
Sur plusieurs chaudieres se trouvent ce bus opentherm qui doit permettre tout cela.
Personnellement, j'ai une Saunier Duval avec un bus propriétaire ebus, mais, il existe une carte Opentherm pour cette chaudière, trouvé grâce à cet excellent post : https://www.bricozone.be/t/thermostat-n ... rm.102710/

Maintenant la question est de savoir comment se connecter à de l'opentherm depuis Jeedom...
Merci à matt73210 qui m'a dirigé vers
cette carte https://www.nodo-shop.nl/en/opentherm-g ... &results=5
et ce le logiciel http://otgw.tclcode.com/download.html?o ... nload.html

Cela semble faire une bonne solution, même s'il y a une couche en trop vu que l'on passe par le serveur web otgw

Est ce que quelqu'un a d'autres pistes pour supporter opentherm dans Jeedom ?

matt73210
Timide
Messages : 72
Inscription : 18 nov. 2016, 23:54

Re: Opentherm

Message par matt73210 » 09 juil. 2018, 11:11

Hello,

A l'époque l'un des dev avait pour idée de crée un plugin mais il n'était pas trop chaud car pour lui, le plugin thermostat faisait l'affaire.
Le logiciel est codé en assembleur si je ne me trompe pas, dans les semaines a venir je vais me pointer dans le code pour essayer de commprendre comment il a fait.
Si j'arrive a commprendre je vais tenter sous python3 car il est bien fait pour ce genre de senario, en plus il me permettra d'integrer des commandes d'automatique telle que une PID avec predicteur de Smith ou une command H_infinie voir H_2 si j'y arrive. Tout ça dans le plugin script.

Coté HW ce n'est pas tres compliqué, la logique est en 24v ou autour de ça donc un peux chiant initialement, puis suffit via un MCU de faire la conversion. Je pense rester sur l'idée de otgw car il suffit, une fois lancé de se connecter via un port tcp_serial.

Je continuerai mes recherches dans la semaines.

Matthew

Avatar de l’utilisateur
poluket
Helper
Messages : 1908
Inscription : 19 août 2017, 17:02
Localisation : Chastre - Belgique
Contact :

Re: Opentherm

Message par poluket » 10 juil. 2018, 09:52

Il y a un sujet pour vaillant vers ip. C'est la même marque que toi de mémoire. Fait une recherche dans le forum. Tu devrais trouver ton bonheur. Pas besoin de passer par opentherm

viewtopic.php?f=59&t=34225
Helper Officiel Jeedom

Installation KNX + Sonos + Xiaomi Yeelight + Jeedom sur VM Proxmox + wifi unifi avec contrôleur + NAS DS1513+ + UPS + PFsense FW

matt73210
Timide
Messages : 72
Inscription : 18 nov. 2016, 23:54

Re: Opentherm

Message par matt73210 » 13 juil. 2018, 07:41

J'avais un vaillant il y a longtemps, à l'époque l'une des 1ere à condensation. Cependant il y avait un souci lors de l'installation, si le vent soufflait vers le Nord la chaudière se transformait en corne de brume.
Puis un jour elle a pris feux, la vanne de sécu s'est bloqué ouvert. Après une investigation de leurs part il ne savent toujours pas pourquoi le feux s'est vraiment déclanché, mais que le système de sécurité n'a pas fonctionné. Bref l'idée de l'openterm est que le protocole est un standard, est donc applicable à tout les chaudière.

Matthew

matt73210
Timide
Messages : 72
Inscription : 18 nov. 2016, 23:54

Re: Opentherm

Message par matt73210 » 16 août 2018, 20:11

Hello,

Du coup j'ai trouvé une solution que j'ai mit dans l'autre discussion; en gros suffit d'utiliser du TELNET et ne plus passer par une 3eme server externe.

A bientot,

Matthew

matt73210
Timide
Messages : 72
Inscription : 18 nov. 2016, 23:54

Re: Opentherm

Message par matt73210 » 31 août 2018, 10:34

Hey,

Je continue, j'ai regardé ce que font nos allié chez domoticz. Pour leurs parts ils se connectent bien en telnet mais ne decode pas chaque tramme qui arrive. Ils utilisent la commande "PS=1" qui renvoie une tramme de message et puis attends la prochaine commande.
Je vais done me partir de la.

Je me tate a partir du plugin pionner dans le market car j'ai deja reussi a envoyer des commandes "cs=x". A suivre !
Python me semble un peux chiant avec le telnet, parfois je reussi a me connecter. D'autre fois non.

Vous avez des idée ?

Titof2375
Helper
Messages : 656
Inscription : 22 août 2017, 18:59

Re: Opentherm

Message par Titof2375 » 02 sept. 2018, 10:17

salut, je suis intéressé pas plugin car ma chaudière idéal standard fonctionne q'avec Opentherm pour un retour information
Rpi 3 avec jeedom
Plugins zwave, Plugins volets, Plugins rflinq, Plugins blea,Plugin

klona
Timide
Messages : 60
Inscription : 24 mars 2018, 20:04

Re: Opentherm

Message par klona » 20 sept. 2018, 19:50

Finalement, je suis parti sur une carte de conversion Ebus-Opentherm plus une opentherm gateway.
Ce post : https://www.bricozone.be/t/thermostat-n ... rm.102710/ m'a beaucoup aidé.

la carte pour ma saunier duval :

Une gateway opentherm sauf qu'au bout d'un mois enregistré pour connaitre la dispo j'ai laissé tombé : https://www.nodo-shop.nl/en/opentherm-g ... &results=5

La gateway que j'ai prise finalement , en kit :
https://www.kiwi-electronics.nl/openthe ... =opentherm

Et le logiciel qui va bien : http://otgw.tclcode.com/

Ca discute entre l'appli Opentherm Monitor et ma chaudiere, depuis 1 heure, et j'arrive a lancer la chauffe et la couper, et à priori contrôler la T° de chauffe.
En virant le thermostat Exacontrol en Ebus , sinon rien ne marche..

Avec le MQTT je remonte les infos dans Jeedom facilement.
Par contre ca pilote pas. Mais je pense pas que le module de Opentherm Monitor le permette.
En minicom ou en cu j'arrive à me connecter sur mon USB et je récupère les données opentherm mais je peux rien envoyer..
Bref, faut que je creuse un peu plus.

klona
Timide
Messages : 60
Inscription : 24 mars 2018, 20:04

Re: Opentherm

Message par klona » 01 oct. 2018, 01:01

Hello,
j'ai pu trouvé un peu de temps pour avancer.
Avec un petit script python, je peux envoyer une commande sur le bus opentherm, et récupérer la valeur de retour.

Code : Tout sélectionner

#!/usr/bin/env python

import time
import serial
import sys

text=sys.argv[1]


serialport = serial.Serial(
    port='/dev/ttyUSB0',
    baudrate = 9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=1
)
text=text + chr(13)

serialport.write(text)
status = serialport.readline()
value = serialport.readline()

print status.rstrip() + "-" + value
et pour le lancer, on passe la commande en parametre de mon scrypt serial_test.py

python /home/pi/python_serial/serial_test.py PS=1

J'ai pris SSH commander et je peux ainsi lancer des commandes depuis Jeedom et surtout récupérer les infos dela chaudiere


Il faut juste que je trouve comment faire pour splitter en plusieurs morceaux ma commande de status PS=1 qui répond selon un format :

PS=1 PS: 1-00000011/00000000,0.00,00000001/00000001,0.00,0/0,0.00,0.00,0.50,0.00,41.00,0.00,0.00,42.50,60/45,0/0,0.00,0.00,0,0,0,0,0,0,0,0

Et pourquoi j'arrive pas à récupérer les retour de SSH commander dans une variable virtuelle..

klona
Timide
Messages : 60
Inscription : 24 mars 2018, 20:04

Re: Opentherm

Message par klona » 08 oct. 2018, 14:38

J'avance , manque de temps surtout;.

J'ai fait un script complet en python qui permet de récupérer les valeurs sur le bus Opentherm, et qui permet d'envoyer les commandes que l'on veut.

J'appelle ce script depuis SSH commander.

exemples :

LECTURE

/usr/bin/python /usr/bin/opentherm.py r ALL ==> récupére la totalité des infos
réponse : 00000011/00000000,0.00,00000001/00000001,0.00,0/0,0.00,0.00,0.50,0.00,38.50,0.00,0.08,37.50,60/45,0/0,0.00,0.00,0,0,0,0,0,0,0,0


/usr/bin/python /usr/bin/opentherm.py r 28 ==> Va lire (r) le MsgID 28 (Return water temperature)
réponse : 30.00

/usr/bin/python /usr/bin/opentherm.py r 48 ==> Va lire (r) le MsgID 48 (DHW setpoint boundaries)
réponse : 60/45
Pour récuperer de manière plus utile directement dans Jeedom :
/usr/bin/python /usr/bin/opentherm.py r L48
réponse : 60
/usr/bin/python /usr/bin/opentherm.py r H48
réponse : 45

ECRITURE :
/usr/bin/python /usr/bin/opentherm.py w HW=0 (HotWater = 0 : coupure chauffage de l'eau sanitaire)
Reponse: HW: 0

On peut en fait envoyer toutes les commandes supportées par la gateway. Apres c'est selon sa chaudiere et son thermostat.
08-10-2018 14-45-37.jpg
08-10-2018 14-45-37.jpg (78.12 Kio) Consulté 2410 fois
Perso, ma chaudiere n'est pas terrible et je récupère peu d'infos et j'ai peu d'actions qui fonctionnent, mais j'ai l'essentiel :
Lecture :
T° d'eau chauffage dans la chaudiere
T° de retour d'eau chauffage à la chaudiere
Pression circuit chauffage
Pourcentage de modulation de la flamme
Limite de T° d'eau de chauffage


Ecriture :
HW à 0 ou 1 : Eau sanitaire ou pas
CH à 0 ou 1 : chauffage actif ou pas
CS = T° : Température de chauffe de l'eau pour le circuit de chauffage

Coté thermostat Opentherm, et bien je n'en ai pas donc...
J'avais l'impression que le thermostat d'origine en ebus de ma chaudiere (+ sonde externe T°) entrait en conflit avec l'opentherm, donc c'est débranché totalement pour l'instant. Je retesterais plus tard.

Code : Tout sélectionner


#!/usr/bin/env python

import time
import serial
import sys
import os.path
import logging
from logging.handlers import RotatingFileHandler

# Constants

StatusCommand = "PS=1" + chr(13) # Status Command on Serial
ReadCache = 90  # Time in sec for cache on opentherm bus (only for reading values, no cache for writing)
cachefile = "/tmp/opentherm.values"
logfile ="/home/pi/opentherm.log"
MaxLogFileSize = 5*1024*1024 # max size for log file in Bytes x*1024*1024 ==> x MB max 

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s :: %(levelname)s :: %(message)s')
file_handler = RotatingFileHandler(logfile, 'a', MaxLogFileSize, 1)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)


	
#Parameters
Operation = sys.argv[1].lower() # Read or write (r or R or w or W)


if  Operation =='r':

	MsgID=sys.argv[2] # MsgID concerned
	logger.info('Reading Requested on MsgID ' + MsgID)
	
	#Dictionnaries
	equivalence={} # MsgID requested to Array position
	equivalence['0']=0 # Status Full field
	equivalence['1']=1 # Control setpoint
	equivalence['6']=2 # Remote parameter flags
	equivalence['14']=3 # Maximum relative modulation level
	equivalence['15']=4 # Boiler capacity and modulation limits
	equivalence['16']=5 # Room Setpoint
	equivalence['17']=6 # Relative modulation level
	equivalence['18']=7 # CH water pressure
	equivalence['24']=8 # Room temperature
	equivalence['25']=9 # Boiler water temperature
	equivalence['26']=10 # DHW temperature
	equivalence['27']=11 # Outside temperature
	equivalence['28']=12 # Return water temperature
	equivalence['48']=13 # DHW setpoint boundaries
	equivalence['49']=14 # Max CH setpoint boundaries
	equivalence['56']=15 # DHW setpoint
	equivalence['57']=16 # Max CH water setpoint
	equivalence['116']=17 # Burner starts
	equivalence['117']=18 # CH pump starts
	equivalence['118']=19 # DHW pump/valve starts
	equivalence['119']=20 # DHW burner starts
	equivalence['120']=21 # Burner operation hours
	equivalence['121']=22 # CH pump operation hours
	equivalence['122']=23 # DHW pump/valve operation hours
	equivalence['123']=24 # DHW burner operation hours

	#####  #Read from Opentherm Bus or from file depending cache value
	if (not os.path.exists(cachefile)) or int(time.time() - os.path.getctime(cachefile)) > ReadCache:
		logger.info('Reading from Bus, cache too old')
		# Open serial port
		serialport = serial.Serial(
			port='/dev/ttyUSB0',
			baudrate = 9600,
			parity=serial.PARITY_NONE,
			stopbits=serial.STOPBITS_ONE,
			bytesize=serial.EIGHTBITS,
			timeout=1
		)

		serialport.write(StatusCommand) 	# Send command
		ACK = serialport.readline() 		# Get Aknowledge
		logger.info('Acknowledge on command ' + ACK.replace("\n",""))
		StatusValueRead = serialport.readline()	# Get all values

		file = open(cachefile,"w")
		file.write(StatusValueRead)	
		file.close()

	else:
			logger.info('Using cache file')
			file = open(cachefile,"r")
			StatusValueRead = file.read()
			file.close()


	values=StatusValueRead.split(",") # Store values in an Array 



	#####  Send result from read

	try:
		if  MsgID[0]=='L':
			answer = values[equivalence[MsgID[1:]]].split('/')[0]
			print answer
			logger.info('Answer sent (1st Byte) : ' + answer)
		elif  MsgID[0]=='H':
			answer = values[equivalence[MsgID[1:]]].split('/')[1]
			print answer
			logger.info('Answer sent (2nd Byte) : ' + answer)
		elif MsgID=='ALL' or MsgID=='all':
			answer = StatusValueRead
			print answer
			logger.info('ALL: Raw Answer sent : ' + answer)
		else:
			answer = values[equivalence[MsgID]]
			print answer
			logger.info('Answer sent : ' + answer)
			
	except: # If MsgID is not valid, answer with Error with '-1'
		print '-1'
		logger.warning('MsgID not valid, "-1" Error code Sent')

		
elif Operation =='w':


	Command=sys.argv[2] + chr(13)# Command to send
	logger.info('Write Requested with command ' + Command)	
	# Open serial port
	serialport = serial.Serial(
		port='/dev/ttyUSB0',
		baudrate = 9600,
		parity=serial.PARITY_NONE,
		stopbits=serial.STOPBITS_ONE,
		bytesize=serial.EIGHTBITS,
		timeout=1
		)

	serialport.write(Command) 	# Send command
	ACK = serialport.readline() 		# Get Aknowledge

	print ACK
	logger.info('Acknowledge on command ' + ACK.replace("\n",""))

else:
	print -1
	logger.error('Unknown Command : ' + Operation)	



Ascari
Timide
Messages : 35
Inscription : 13 sept. 2017, 14:32

Re: Opentherm

Message par Ascari » 12 juin 2019, 08:38

Ta solution m'intéresse très très fort.
As tu avancer plus ?

JuCornet
Timide
Messages : 1
Inscription : 04 janv. 2019, 13:16

Re: Opentherm

Message par JuCornet » 14 juin 2019, 18:28

Je suis également intéressé.
J'ai commandé la gateway OTGW sur Nodo-shop.
https://www.nodo-shop.nl/en/opentherm-g ... teway.html

De mon côté j'ai une chaudière SIME et un thermostat SIME qui à priori communique avec la chaudière en Opentherm.

Je vais suivre les évolutions de près et reste à disposition pour effectuer des tests si l'un d'entre vous le souhaite.

A terme, un plugin serait le MUST :)

Avatar de l’utilisateur
philmo
Timide
Messages : 68
Inscription : 24 janv. 2018, 02:07

Re: Opentherm

Message par philmo » 22 juil. 2019, 14:41

Bonjour, j'ai une chaudière De Dietrich twineo et on vient de me confirmer qu'elle sait parler l'opentherm :) .
Qu'avez-vous utilisé au final pour relier Jeedom avec votre "otgw" qui ne multiplie pas trop les couches protocolaires ?
philmo

Avatar de l’utilisateur
philmo
Timide
Messages : 68
Inscription : 24 janv. 2018, 02:07

Re: Opentherm

Message par philmo » 10 août 2019, 01:45

Bonjour, j'ai à présent une passerelle OTGW opérationnelle (celle de nodo-shop avec module ethernet) et les échanges avec la chaudière fonctionnent :) .
Je compte conserver mon thermostat à contact sec pour conserver un contrôle manuel en cas de pépin.
Lorsque le thermostat s'active, on perd le fonctionnement selon la loi d'eau paramétrée dans la chaudière, la passerelle demande à la chaudière de chauffer à son maximum, c'est du véritable tout ou rien.
Si je comprends bien, il va falloir que je crée moi-même l’algorithme de loi d'eau que je souhaite utiliser en jouant sur le paramètre de température de l'eau de chauffage (CS) et de modulation (MM) ?
J'utilise le plugin thermostat, selon vous serait-il judicieux d'en utiliser les valeurs, pour la modulation par exemple ?
A part recréer une loi d'eau classique déterminant la température de chauffage par rapport à la température extérieure, comment procéderiez-vous ?
philmo

Titof2375
Helper
Messages : 656
Inscription : 22 août 2017, 18:59

Re: Opentherm

Message par Titof2375 » 10 août 2019, 07:04

Salut tu peut me dire qu'elle infomation te remonte la passerelle otgw de ta chaudière?
Rpi 3 avec jeedom
Plugins zwave, Plugins volets, Plugins rflinq, Plugins blea,Plugin

Avatar de l’utilisateur
philmo
Timide
Messages : 68
Inscription : 24 janv. 2018, 02:07

Re: Opentherm

Message par philmo » 12 août 2019, 21:26

Pour le moment je ne fais pas encore dialoguer la passerelle avec Jeedom, je ne vois pas encore trop comment mettre en œuvre le dialogue en telnet, et je cherche un moyen de gérer un mode dégradé sortant la passerelle du circuit en cas de plantage Jeedom/Plugin/VM/NUC/Réseau (je réfléchis à un relais inverseur 4 pôles contrôlé par un module Qubino à contact sec sur lequel j'aurais une action temporisée à la manière de ce que je fais ici, vous auriez d'autres idées ?).

Voilà les informations auxquelles j'ai accès (sachant que c'est un thermostat à contact sec qui est connecté) :
Sans titre.jpg
Sans titre.jpg (140.59 Kio) Consulté 1120 fois
philmo

Titof2375
Helper
Messages : 656
Inscription : 22 août 2017, 18:59

Re: Opentherm

Message par Titof2375 » 12 août 2019, 21:33

Salut tout les valeurs que tu remonte sont des informations de la chaudière en faite
Rpi 3 avec jeedom
Plugins zwave, Plugins volets, Plugins rflinq, Plugins blea,Plugin

Avatar de l’utilisateur
philmo
Timide
Messages : 68
Inscription : 24 janv. 2018, 02:07

Re: Opentherm

Message par philmo » 13 août 2019, 10:23

Oui, si j'avais un thermostat opentherm et pas à contact sec, j'aurais sûrement les éléments type "room temperature" et "room setpoint" qui remonteraient.
J'ai une tête thermostatique par pièce, donc j'en connais la température et la consigne, ainsi que la température extérieure.
Reste à trouver un algorithme intéressant pour déterminer la température de l'eau à faire circuler dans les radiateurs et son pourcentage de modulation... (d'ailleurs si vous avez des information sur ce que signifie cette modulation je suis preneur)
philmo

Titof2375
Helper
Messages : 656
Inscription : 22 août 2017, 18:59

Re: Opentherm

Message par Titof2375 » 13 août 2019, 11:46

Tu a pas la régulation dircetement sur ta chaudière?
Rpi 3 avec jeedom
Plugins zwave, Plugins volets, Plugins rflinq, Plugins blea,Plugin

Avatar de l’utilisateur
philmo
Timide
Messages : 68
Inscription : 24 janv. 2018, 02:07

Re: Opentherm

Message par philmo » 13 août 2019, 13:31

J'ai une régulation à loi d'eau "simple" sur la chaudière qui fonctionne uniquement si on utilise un thermostat à contact sec, dès que l'on connecte la passerelle opentherm, il faut déterminer soi-même la température de l'eau qui circule, sinon elle se met au maximum autorisé sur la loi d'eau de la chaudière.

Je voudrais améliorer les choses car la configuration de la maison et les besoins variables selon les pièces et les moments de la journée, fait qu'une loi d'eau unique ne semble pas adaptée. En plus de la chaudière, j'ai des sèches serviettes mixtes (eau chaude de la chaudière + électrique) qui ne doivent pas fonctionner lorsque l'eau circule et probablement bientôt de la climatisation réversible. Il faut également prendre en compte des problématiques de délestage électrique et le fait que lorsque la chaudière produit de l'eau chaude sanitaire, elle ne chauffe pas la maison.

Bref : il n'y a que Jeedom qui puisse coordonner le tout
philmo

Répondre

Revenir vers « Do-It-Yourself ("Faire-soi-même") »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité