Este exemplo mostra como acessar os dados da bomba de calor valden do seu servidor, Raspberry Pi e assim por diante.
Tudo o que você precisa é de um conversor USB-> RS485 e Python2 instalado.
Conecte o seu computador à linha RS485, conforme mostrado abaixo, conecte outro lado do fio como descrito na página Valden Display e execute o script Python a partir de um exemplo abaixo.
Lembre-se, o RS485 é uma linha de 3 fios. Não use conversores baratos sem "terreno de sinal" e apenas A e B. eles funcionarão por algumas distâncias de alguns metros.


# 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 ) Exemplo de saída de script (clique para ampliar): 
Nomes curtos (chaves) específicos para comunicação JSON:
| Abbr. | Nome completo |
|---|---|
| A1 | ponto de ajuste |
| E1 | código de erro |
| HPC | Bomba de calor conectada (à tela remota, 1 = sim, 0 = não) |
| W1 | Watts |
Todas as abreviações e mensagens de status que você verá na tela estão listadas no Apêndice Valden Heat Pump Controller. Códigos de erro também lá.
O que vem a seguir? Você tem todas as informações que precisa integrar, por exemplo, com o Assistente de casa ou outro sistema de "casa inteligente" que você gosta. Apenas Parse obteve cordas (isso é muito fácil em um python) e alimentar pares de valor-chave para o seu sistema favorito.
Não uso sistemas "Smart Home", mas gosto de gráficos. Os gráficos ajudam a analisar os processos dinâmicos. Então, eu tenho um script (script muito mais complicado) no lado do servidor, que obtém estatísticas de todos os meus dispositivos e desenham gráficos para mim.
Por exemplo, gráfico diário para uma das minhas bombas de calor (clique para ampliar): 
Para obter gráficos, você pode usar algo como o sistema de monitoramento de cactos.
E mais um: você pode usar os comandos de "temperatura definida" para alterar automaticamente a temperatura "ponto de ajuste" para criar um equilíbrio confortável entre economia de energia e temperatura da casa. Ou sistema dependente de um dia, dependente de uma hora ou algo dependente da temperatura.
© 2015-2021 DAA Todos os direitos reservados; gonzho em web.de; https://github.com/openhp/hp-integration-example/.
Texto, mídia e outros materiais licenciados sob licença CC-BY-SA v4.0.
Atribuição: você deve atribuir claramente a integração da bomba de calor Valden (https://github.com/openhp/hp-integration-example/) trabalho original em qualquer trabalho derivado.
Compartilhe e compartilhe da mesma forma: se você fizer modificações ou adições ao conteúdo que reutiliza, deverá licenciá-las sob a licença CC-BY-SA v4.0 ou posterior.
Indique alterações: se você fizer modificações ou adições, deverá indicar de maneira razoável que o trabalho original foi modificado.
Você é gratuito: compartilhar e adaptar o material para qualquer finalidade, mesmo comercialmente, desde que siga os termos da licença.
O código -fonte licenciado no GPLV3.
Este produto é distribuído na esperança de que seja útil, mas sem garantia; sem a garantia implícita de comercialização ou aptidão para uma finalidade específica. Veja a licença pública geral da GNU para obter mais detalhes.
Para licenças de bibliotecas de terceiros usadas neste produto, consulte essas bibliotecas.