Page 48 sur 55
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Publié : 29 févr. 2020, 15:40
par berco63
Bonjour,
Je déterre ce sujet.
J'ai :
réalisé la carte de connexion par moi-même ( vérifiée et revérifiée x fois),
modifié le boot du rpi3
installé le soft vitalk de base.
Le premier message indique une connexion correcte,
mais le deuxième indique une erreur :
pi@rasppi-b:/var/viessmann/vitalk $ sudo ./vitalk -f -t /dev/ttyAMA0
Reset Communication to KW Proto..Success.
Try Proto 300 Init: failed! 5
Ici, je reçoisla valeur 5 alors que vitalk attend la valeur 6.
Problème de compatibilté avec ma chaudière ?
Chaudière : Vitodens 222-W type B2LB
Vitotronic HO2B
Raps ; Rpi3B
boot/config.txt
ajout : dtoverlay=pi3-disable-bt
cdmline.txt = ôter console=serial0, 115200
disable Bluetooth : sudo systemctl disable hciuart
Toute aide bien venue.
A+
Bernard
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Publié : 29 févr. 2020, 18:15
par js-martin
Bonjour,
ta chaudière est récente ? Peut-être que le protocole utilisé a changé.
La mienne est de 2009.
Sur ce sujet, regarde ici si tu ne peux pas avoir de l'aide :
https://www.bricozone.fr/t/interface-vi ... -pi.14671/
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Publié : 01 mars 2020, 15:42
par hestia
@berco63
berco63 a écrit : 29 févr. 2020, 15:40
Le premier message indique une connexion correcte,
mais le deuxième indique une erreur :
pi@rasppi-b:/var/viessmann/vitalk $ sudo ./vitalk -f -t /dev/ttyAMA0
Reset Communication to KW Proto..Success.
Try Proto 300 Init: failed! 5
Ici, je reçoisla valeur 5 alors que vitalk attend la valeur 6.
Je suppose que tu as lu tout de ce topic, mais au cas où, j'ai fait un bilan de mon installation (avec problèmes!) ici avec qq points d'attention.
viewtopic.php?f=17&t=1955&start=440#p62381
si cela peut servir.
Je ne comprends pas les 2 messages, connexion correcte, puis erreur, mais je ne me souvient plus....
Pour moi on doit avoir:
Try Proto 300 Init: Success.
Now Listening to telnet Port 83
As-tu ce messages?
Si oui, tu peux te connecter sur le port 83 et passer des commandes vitalk
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Publié : 01 mars 2020, 21:59
par berco63
@js-martin et @hestia
merci,
Grace à vos conseils , aux 48 pages de ce topic, j'ai réussi à faire fonctionner l'interface avec ma chaudière.
A+
Bernard
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Publié : 01 mars 2020, 22:11
par js-martin
Bravo.
Il faut beaucoup de motivation pour y arriver, mais le résultat est la récompense.
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Publié : 01 mars 2020, 22:24
par hestia
super!
+1
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Publié : 04 mars 2020, 01:01
par nini57
Bonjour à tous,
voilà j'ai un vitotronic 050, jusque là pas trop de problème vitalk fonctionne mais pas totalement.
Je m'expliquer certaines valeurs comme par exemple la température intérieur est toujours à 20°, or en réalité ce n'est pas le cas.
J'ai mené mon enquête, il s'avère que vitalk essaye de lire sur une adresse mémoire qui n'est pas bonne.
Personne n'a répertorié les adresses mémoires avec la correspondance de ces valeur du vitotronic 050.
J'ai donc voulu faire un scanner d'adresse et je bloque, je suis archi nul en python. Quelq'un sur un autre forum m'a envoyé ce code mais il ne fonctionne pas.
Code : Tout sélectionner
import telnetlib
tn = telnetlib.Telnet('192.168.0.148', 83)
tn.read_until(b'\x05')
print("\nwriting ..." )
tn.write(b'\x04')
tn.read_until(b'\x05')
i = 0
while i < 65535:
hexStr = hex(i)[2:]
if len(hexStr) == 1:
res = hexStr.rjust(1 + len(hexStr), '0')
else:
res = hexStr
byte = bytes.fromhex(res)
print("hexStr : "+hexStr)
print("hexbyte : "+str(byte))
tn.write(b'\x01')
tn.write(b'\xF7')
tn.write(byte)
tn.write(b'\x04')
tn.write(b'\x04')
print("reading ..." )
string = tn.read_until(b'\x05')
for char in string:
print(hex(int(char)), end=' ' )
i += 1
tn.close()
voici l'erreur
Code : Tout sélectionner
File "test.py", line 4, in <module>
tn.read_until(b'\x05')
File "/usr/lib/python3.7/telnetlib.py", line 313, in read_until
if selector.select(timeout):
File "/usr/lib/python3.7/selectors.py", line 415, in select
fd_event_list = self._selector.poll(timeout)
KeyboardInterrupt
Toute aide sera la bienvenue pour faire un scanner d'adresses afin que je puisse modifier vitalk
Merci d'avance
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Publié : 12 mars 2020, 23:38
par hestia
bonjour nini57
je l'avais fait, mais je ne l'ai pas gardé
J'étais simplement partir du pyton domo2vito qui a une fonction "def viTalk_read_address(addr)" et j'avais fait une boucle dessus.
Je ne sais pas si c'est dans le script initial, mais c'est dans un mien sur ce topic
Pour lire une adresse
Code : Tout sélectionner
#######################################################################
###### viTalk_read_address(addr) : read the value of an address
#######################################################################
def viTalk_read_address(addr):
global log_Info
global tn
retry=3
value=""
while retry!=0:
tn.read_until(b"$", 5)
tn.write(b"rg "+addr+"\n")
value=tn.read_until(b"$", 5).strip("\n$")
if value!="" and value!='NULL':
break
retry-=1
if retry==0:
print "Connection ERROR - I try to restart viTalk deamon"
os.system('sudo service vitalk restart')
#tn.close()
print(addr+": "+value+" error")
sys.exit()
value = value.strip("\n$")
if log_Detail:
print "read address "+addr+" : answer = "+value
return value
####
Il faut faire un boucle dessus
En espérant que ça aide...
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Publié : 13 mars 2020, 19:49
par hestia
j'ai refait qqch qui a l'air de fonctionner
Code : Tout sélectionner
#!/usr/bin/python
#
#Read and list vtalk addresses
import telnetlib
import sys
import os
import time
import datetime
import requests
from requests.auth import HTTPBasicAuth
import json
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Mode log_Info
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
log_Info=True # basic info about execution
log_Detail=False # more info about execution
print 'Start '+time.strftime("%H")+':'+time.strftime("%M")
#######################################################################
###### viTalk_connect() : connect to viTalk localhost:83
#######################################################################
def viTalk_connect():
global log_Info
retry=3
while retry!=0:
try:
# tn = telnetlib.Telnet("localhost", 83)
tn = telnetlib.Telnet("vito", 83)
if log_Info:
print "Connected to viTalk telnet !"
return tn
except:
print "Connection ERROR - I try to restart viTalk deamon"
#I try to restart viTalk
cmd = 'sudo service vitalk restart'
os.system(cmd)
time.sleep(10)
retry-=1
else:
tn.read_until(b"$", 5)
if retry==0:
tn.close()
print "Connection ERROR - I could not restart viTalk deamon"
sys.exit()
####
#######################################################################
###### viTalk_read_address(addr) : read the value of an address
#######################################################################
def viTalk_read_address(addr):
global log_Info
global tn
value=""
tn.read_until(b"$", 5)
tn.write(b"rg "+addr+"\n")
value=tn.read_until(b"$", 5).strip("\n$")
print "read address "+addr+" : answer = "+value
return value
####
#######################################################################
###### viTalk_check() : test viTalk and restart it if needed
#######################################################################
def viTalk_check():
global log_Info
global tn
retry=3
value=""
while retry!=0:
tn.read_until(b"$", 5)
tn.write(b"g saving \n")
value=tn.read_until(b"$", 5).strip("\n$")
if value!="" and value!='NULL':
if log_Info:
print "Check viTalk data OK ! (no NULL data received)"
break
retry-=1
if retry==0:
print "Connection ERROR - I try to restart viTalk deamon"
os.system('sudo service vitalk restart')
sys.exit()
####
#-----------------------------------### START ###--------------------------------------------#
##
tn=viTalk_connect()
viTalk_check()
# Addresses for reduce mode time intervals
i=1000
while i<2350:
istr=str(i)
viTalkAddress=viTalk_read_address(istr+" 8")
i+=1
il faut choisir le début et la fin de la boucle
A noter que je ne suis pas codeur et que j'ai découvert python dans ce topic et d'ailleurs je ne comprends pas tout à la fonction utilisée...
ça sort qqch comme ça
Start 19:42
Connected to viTalk telnet !
Check viTalk data OK ! (no NULL data received)
read address 1000 8 : answer = 128;19;16;145;5;16;0;64;
read address 1001 8 : answer = NULL
read address 1002 8 : answer = NULL
read address 1003 8 : answer = NULL
read address 1004 8 : answer = NULL
Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge
Publié : 13 mars 2020, 22:41
par nini57
Merci beaucoup j'arrive enfin à lire les adresses