Este ejemplo muestra cómo acceder a los datos de la bomba de calor de Valden desde su servidor, Raspberry Pi, etc.
Todo lo que necesitas es un convertidor USB-> RS485 y Python2 instalado.
Conecte su computadora a la línea RS485 como se muestra a continuación, conecte otro lado del cable como se describe en la página de visualización de Valden y ejecute el script de Python desde un ejemplo a continuación.
Recuerde, RS485 es una línea de 3 hilos. No use convertidores baratos sin "tierra de señal" y con solo A y B. Trabajarán a pocos metros de distancias.


# 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 ) Ejemplo de salida de script (haga clic para ampliar): 
Nombres cortos (claves) específicos para la comunicación JSON:
| Abbr. | Nombre completo |
|---|---|
| A1 | punto de ajuste |
| E1 | código de error |
| HPC | Bomba de calor conectada (a pantalla remota, 1 = sí, 0 = no) |
| W1 | Vatios |
Todas las abreviaturas y mensajes de estado que verá en la pantalla se enumeran en el Apéndice del controlador de la bomba de calor de Valden. Códigos de error también allí.
¿Qué sigue? Tiene toda la información que necesita integrar, por ejemplo, con el asistente de inicio u otro sistema de "hogar inteligente" que le guste. Simplemente analice las cuerdas (eso es muy fácil en una pitón) y alimente los pares de valor clave para su sistema favorito.
No uso sistemas "Smart Home", pero me gustan los gráficos. Los gráficos ayudan a analizar la dinámica de los procesos. Entonces, tengo un script (script mucho más complicado) en el lado del servidor, que obtienen estadísticas de todos mis dispositivos y dibujan gráficos para mí.
Por ejemplo, gráfico diario para una de mis bombas de calor (haga clic para agrandar): 
Para obtener gráficos, puede usar algo como el sistema de monitoreo de cactus.
Y uno más: puede usar comandos de "temperatura establecida" para cambiar automáticamente la temperatura de "punto de ajuste" para crear un equilibrio cómodo entre el ahorro de energía y la temperatura de la casa. O un sistema dependiente del día, dependiente de la hora o algo dependiente de la temperatura.
© 2015-2021 DAA Todos los derechos reservados; Gonzho en Web.de; https://github.com/openhp/hp-ingration-example/.
Texto, medios y otros materiales con licencia bajo la licencia CC-by-SA V4.0.
Atribución: debe atribuir claramente la integración de la bomba de calor de Valden (https://github.com/openhp/hp-ingration-example/) Trabajo original en cualquier trabajo derivado.
Compartir y compartir por igual: si realiza modificaciones o adiciones al contenido que reutiliza, debe licenciarlos bajo la licencia CC-by-SA V4.0 o posterior.
Indique cambios: si realiza modificaciones o adiciones, debe indicar de manera razonable que el trabajo original ha sido modificado.
Usted es libre: para compartir y adaptar el material para cualquier propósito, incluso comercialmente, siempre que siga los términos de la licencia.
El código fuente con licencia bajo GPLV3.
Este producto se distribuye con la esperanza de que sea útil, pero sin ninguna garantía; Sin siquiera la garantía implícita de comerciabilidad o estado físico para un propósito particular. Vea la Licencia Pública General de GNU para más detalles.
Para las licencias de bibliotecas de terceros utilizadas en este producto, consulte esas bibliotecas.