[Tuto] Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
berco63
Messages : 7
Inscription : 18 déc. 2017, 19:54

Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge

Message 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
js-martin
Messages : 487
Inscription : 22 mars 2015, 22:08
Contact :

Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge

Message 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/
Domotisation de : mes compteurs EDF, solaire, eau / mon alarme / ma Chaudière Viessamnn / mon congel / ma sonnette. Matériels : Pi2 - RFXTrx433e - Zwave+ Aeotec, ampoules Hue - Détecteur et prises Fibaro - Capteurs Oregon - présentation installation => lien
hestia
Messages : 397
Inscription : 12 sept. 2018, 22:36

Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge

Message 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
berco63
Messages : 7
Inscription : 18 déc. 2017, 19:54

Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge

Message 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
js-martin
Messages : 487
Inscription : 22 mars 2015, 22:08
Contact :

Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge

Message par js-martin »

Bravo.

Il faut beaucoup de motivation pour y arriver, mais le résultat est la récompense.
Domotisation de : mes compteurs EDF, solaire, eau / mon alarme / ma Chaudière Viessamnn / mon congel / ma sonnette. Matériels : Pi2 - RFXTrx433e - Zwave+ Aeotec, ampoules Hue - Détecteur et prises Fibaro - Capteurs Oregon - présentation installation => lien
hestia
Messages : 397
Inscription : 12 sept. 2018, 22:36

Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge

Message par hestia »

super!
+1
nini57
Messages : 11
Inscription : 03 oct. 2019, 00:18

Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge

Message 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
hestia
Messages : 397
Inscription : 12 sept. 2018, 22:36

Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge

Message 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...
hestia
Messages : 397
Inscription : 12 sept. 2018, 22:36

Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge

Message 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
nini57
Messages : 11
Inscription : 03 oct. 2019, 00:18

Re: Contrôler sa chaudière Viessmann avec Domoticz via une interface infrarouge

Message par nini57 »

Merci beaucoup j'arrive enfin à lire les adresses
Répondre