Le système électronique de commande du Rotex possède une interface RS232, pour la configuration et la sortie des données de température et d'état des pompes etc..
Nous n'avons pas trouvé de documentation sur internet, mais en connectant un PC en écoute sur le RS232, nous avons pu afficher des chaines de caractères qui après analyses et déductions correspondent aux données recherchées (Voir tableau).
De quoi donner des idées de le connecter sur un Raspberry PI2 sur lequel il y a Domoticz d'installé...
Partie électronique:
Attention la console RPS3 de Rotex délivre un signal en TTL en 5v alors que le Raspberry n’accepte que du 3,3V.
La console ne génère que les sorties de données RXD, ne raccorder que les contacts 6 et 10 du Raspberry.
Un petit montage électronique à base de 2 résistances permet de faire chuter la tension de sortie de 5v à 3.3v. Voir Schéma
Pour ne pas avoir de problèmes de conflit d’accès au port série, l’accès par la console série sur le Raspberry Pi a été désactivée dans le fichier de configuration du Raspberry PI (erreurs lors du chargement des données Rotex).
(Dans Raspberry Pi Configuration, onglet Interfaces, mettre en Desabled la ligne Serial )
Partie programme:
Pour tester la liaison, un petit programme proto en Python a été développé dans le Raspberry Pi (Voir ci-après)
Nota : Vérifier que le module Sérail est bien installé sur le Pi avec la commande:
apt-get install python3-serial
#!/usr/bin/env python import serial, time ### Prg proto. pour tester en lecture le port serie du Raspberry Pi -- Rotex xSerialPort='/dev/ttyAMA0' # Port xSerialSpeed=19200 # vitesse en bauds xSerialTimeout=15 # Time out en s None 0 RotexPort = serial.Serial( xSerialPort, baudrate=xSerialSpeed, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=xSerialTimeout ) ### Boucle de tentatives de lecture du port serie xCompteur = 1 while xCompteur <= 10: # print('test reception N ' + str(xCompteur) + ':') try: RotexData = RotexPort.readline() if len(RotexData) == 0: time.sleep(0.5) print('erreur Longueur 0') elif RotexData.find(";") == -1: print('erreur Pas de ;') time.sleep(0.5) else: print('%%%%%%%%%%%%%%%%%%%%%%%%%%%') print str(RotexData) xTabData = RotexData.split(";") print xTabData # Exemple de valeurs print xTabData[4] gValeur = xTabData[4] print("Temprature panneau = " + xTabData[4] + " Degre C") print("Temprature point bas = " + xTabData[5] + " Degre C") print("Temprature point milieu = " + xTabData[6] + " Degre C") print("Temprature arrivee panneaux = " + xTabData[7] + " Degre C") print("Debit circuit = " + xTabData[8] + " l/m ") break< except OSError as e: if e.errno == 11: # print('erreur 11 ...') time.sleep(0.5) xCompteur += 1 RotexPort.close()
Dans Domoticz, nous avons configuré des dispositifs correspondants aux différentes données en sorties
Tout ceci nous permet de suivre la production du Chauffe-eau, et même de piloter la partie appoint chauffage en fonction des prévisions de couverture nuageuse sur 3 jours
Le but de cette page n'était que de partager le principe de la connexion Raspberry Pi avec un chauffe-eau solaire Rotex.
Vous trouverez sur internet toutes les réponses à vos questions à propos de DomoticZ et Raspberry Pi.