Cet exemple montre comment accéder aux données de la pompe de chaleur Valden depuis votre serveur, Raspberry Pi, etc.
Tout ce dont vous avez besoin est un convertisseur USB-> RS485 et Python2 installé.
Connectez votre ordinateur à la ligne RS485 comme illustré ci-dessous, connectez un autre côté de fil comme décrit sur la page d'affichage Valden et exécutez le script Python à partir d'un exemple ci-dessous.
N'oubliez pas que RS485 est une ligne de 3 fils. N'utilisez pas de convertisseurs bon marché sans "sol de signal" et avec seulement A et B. ils fonctionneront sur quelques distances de quelques mètres.


# Communication example for:
# - Valden Display https://github.com/openhp/Display/
# - Valden Service Display https://github.com/openhp/ServiceDisplay/
#
# The source code licensed under GPLv3.
#
# This product is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
import serial
from time import sleep
import datetime
import string
import sys
#-------------------------------------------------------
#function to send commands and print answers
def SendCommand ( ID_to , command ):
#send command
towrite = str ( ID ) + str ( ID_to ) + command
print "> " + str ( datetime . datetime . now ())[ 0 : 19 ] + " we sent: " + towrite
try :
serial . write ( towrite )
except : #do not catch all exceptions in a real code
print "USB>Serial converter disconnected?" , sys . exc_info ()
line = None
return 0
#read result
try :
line = serial . readline () # read a 'n' terminated line
except : #do not catch all exceptions in a real code
print "USB>Serial converter disconnected?" , sys . exc_info ()
line = None
return 0
#print answer
if len ( line ) > 2 :
print "< " + str ( datetime . datetime . now ())[ 0 : 19 ] + " we got: " + line
else :
print "No answer from" , ID_to , " t t " , str ( datetime . datetime . now ())[ 0 : 19 ]
#-------------------------------------------------------
#open serial
print "Starting.."
try :
serial = serial . Serial ( '/dev/ttyUSB2' , 9600 , timeout = 3 ) #Change serial name to yours!
print "Opened: " , serial . name
except serial . serialutil . SerialException :
print "Serial open error! Change serial name to yours! (ex: /dev/ttyUSB5, or something like COM9 at win)"
exit ( 0 )
#-------------------------------------------------------
#some example values
eev_target = "02.50" #new eev temperature difference
newtemp = "31.50" #new setpoint temperature
ID = chr ( 0x30 ) #this script ID, 0x30 by default, default value supported by all Valden components so do not change it
remote_ID = chr ( 0x41 ) #Remote Display ID ( this display https://github.com/openhp/Display/ or that display https://github.com/openhp/ServiceDisplay/ )
#Remote Display ID can be changed, and yes: few devices with unique IDs can work together at the same time at same line
#-------------------------------------------------------
#example cycle, interaction with Remote Display
#commands:
#(G)et all
#new (T)emperature set (setpoint)
#new (E)EV difference set
#cycle sends 10 times (G)er all command
#then sends (T)emperature set
#then sends (E)EV difference set
#then cycle
while ( 1 == 1 ):
for i in xrange ( 10 ):
SendCommand ( remote_ID , "G" ) #sends 0AG : from ID 0 to ID A (G)et all
sleep ( 5 )
SendCommand ( remote_ID , "T" + newtemp ) #sends 0AT31.50, command format TNN.NN
sleep ( 5 )
SendCommand ( remote_ID , "E" + eev_target ) #sends 0AE02.50, command format ENN.NN
sleep ( 5 ) Exemple de sortie du script (cliquez pour agrandir): 
Noms courts (touches) spécifiques à la communication JSON:
| ABBR. | Nom et prénom |
|---|---|
| A1 | point de consigne |
| E1 | code d'erreur |
| HPC | Pompe à chaleur connectée (à l'affichage à distance, 1 = oui, 0 = non) |
| W1 | Watts |
Toutes les abréviations et les messages d'état que vous verrez à l'écran sont répertoriés à l'annexe du contrôleur de pompe de chaleur Valden. Les codes d'erreur là-bas.
Quelle est la prochaine étape? Vous avez toutes les informations dont vous avez besoin pour intégrer, par exemple, avec l'assistant à domicile ou un autre système "Smart Home" que vous aimez. Il suffit d'analyser les cordes (c'est très facile dans un python) et alimenter les paires de valeurs clés à votre système préféré.
Je n'utilise pas de systèmes "Smart Home", mais j'aime les graphiques. Les graphiques aident à analyser la dynamique des processus. Donc, j'ai un script (script beaucoup plus compliqué) du côté du serveur, qui obtient des statistiques de tous mes appareils et dessine des graphiques pour moi.
Par exemple, graphique quotidien pour l'une de mes pompes à chaleur (cliquez pour agrandir): 
Pour obtenir des graphiques, vous pouvez utiliser quelque chose comme le système de surveillance des cactus.
Et un de plus: vous pouvez utiliser les commandes "Set Temperature" pour modifier automatiquement la température du "point de consigne" pour créer un équilibre confortable entre la sauvegarde de puissance et la température de la maison. Ou le système dépendant de la température dépendant du jour, dépendant de l'heure ou quelque chose.
© 2015-2021 DAA Tous droits réservés; Gonzho sur web.de; https://github.com/openhp/hp-integration-example/.
Texte, médias et autres documents sous licence CC-BY-SA V4.0.
Attribution: vous devez clairement attribuer l'intégration de la pompe à chaleur Valden (https://github.com/openhp/hp-integration-example/) l'œuvre originale dans toutes les œuvres dérivées.
Partager et partager de la même façon: si vous apportez des modifications ou des ajouts au contenu que vous réutilisez, vous devez les concéder sous licence sous la licence CC-BY-SA V4.0 ou version ultérieure.
Indiquez les modifications: si vous apportez des modifications ou des ajouts, vous devez indiquer de manière raisonnable que l'œuvre originale a été modifiée.
Vous êtes libre: partager et adapter le matériel à quelque fin que ce soit, même dans le commerce, tant que vous suivez les termes de licence.
Le code source sous licence sous GPLV3.
Ce produit est distribué dans l'espoir qu'il sera utile, mais sans aucune garantie; Sans même la garantie implicite de qualité marchande ou d'adéquation à un usage particulier. Voir la licence publique générale GNU pour plus de détails.
Pour les bibliothèques tierces, les licences utilisées dans ce produit, veuillez vous référer à ces bibliothèques.