Domotiser sa chaudière Viessmann - nouknouk/ma-domotique GitHub Wiki

Le principe:

Les chaudières Viessmann ont (parfois derrière un cache) deux LEDs 'classiques' qui entourent une encoche en forme de 'V'; elles contiennent également un émetteur et un récepteur infra-rouge. Ces deux LEDs IR sont une interface série permettant au chauffagiste de dialoguer avec la chaudière:

  • pour récupérer des informations
  • pour envoyer des ordres (régler la température, mode éco, etc...)
  • l'encoche en forme de 'V' au milieu permet au chauffagiste de 'caler' son appareil bien en face des LEDs pour communiquer avec la chaudière.

LEDs interface IR viessmann

Au moyen d'un montage électronique simple, composé de deux LEDs infrarouges (éméteur/récepteur), on peut fabriquer un 'modem' qui permettra de dialoguer avec la chaudière (dans les deux sens).

La liste des valeurs et commandes disponibles dépend de la chaudière, mais ça peut aller loin dans le détail (c'est prévu à l'origine pour les chauffagistes). Exemples:

  • Température extérieure, chaudière, du réservoir de stockage, de départ, de retour, des gaz d'échappement, ...
  • Niveau actuel, performance actuelle, Panne du brûleur, Le brûleur démarre
  • Consommation de gaz, Heures de fonctionnement
  • Pompe de charge du réservoir de stockage, Pompe de circulation
  • Position du mélangeur, du papillon
  • Performances réelles de l'usine
  • Mode de fonctionnement: Économie, Party mode,
  • Phase de chauffage par minuterie, Dégagement d'eau chaude, Pompe de circuit de chauffage
  • Activation de la salle, Température cible de la pièce
  • Risque de gel,
  • etc...

Mon objectif:

  • Pouvoir commander à distance la chaudière.
  • Avoir dans mon soft domotique des remontées d'informations telles-que l'illustration ci-après (forum Bricozone) ... mais à ma sauce, intégrées dans mon écosystème domotique.
  • A terme,j'aimerais pouvoir remplacer complètement le panneau de contrôle de la chaudière d'origine par un écran tactile qui permettra de contrôler de la chaudière mais aussi plus largement l'ensemble de la domotique de la maison.

viessmann_dashboard

Ce que j'ai fait (pour le moment):

Choix du micro-contrôlleur

Il existe différents moyens de communiquer via une interface série: via un simple composant USB TTL, un Raspberry PI, un ESP8266, un ESP32, etc...

  • j'ai préféré un mini contrôleur à une simple interface USB TTL basique, car on peut y embarquer de la logique plus évoluée, rendant le montage potentiellement plus autonome.
  • ma chaudière étant située à moins de deux mètres de l'armoire réseau, je privilégie une interface filaire plutôt que WiFi, que je considère plus stable.
  • le raspbery pi est un bon choix, mais surdimensionné par rapport à mes besoins (petit boitier indépendant) ; tant qu'à faire, je préfère un micro-contrôleur plus simple, moins cher, et consommant moins d'énergie.

J'ai donc opté pour un montage à base d'ESP32 qui sera lui-même relié en USB à mon serveur domotique.

L'avantage de l'ESP32 par rapport à l'ESP8266 est qu'il expose plusieurs interfaces séries. Cela me permet d'avoir l'interface sérieprincipale qui sert de lien avec le serveur domotique, plus une seconde interface série pour la communication (via les LEDs IR) avec la chaudière.

Le circuit électronique:

Le circuit présenté sur OpenV pour un ESP32 ne fonctionnait pas bien chez moi ; l'absence de transistor entre les broches de l'ESP32 et les LEDs pousse le circuit dans ses retranchements, au delà de ses capacités normales, le rendant instable.

J'ai finalement opté pour le circuit présenté sur la page OpenV pour le Raspberry PI, parfaitement compatible avec l'ESP32.

Après un premier prototype, j'ai réalisé le petit circuit, que j'ai intégré dans un boitier fait sur mesure et imprimé en 3D.

montage ESP32 sur Viessmann

la partie logicielle:

Pour le moment, j'ai juste une ébauche de communication qui m'a permis de valider le bon fonctionnement du circuit électronique ; à terme je développerai mon propre 'driver' qui s'intégrera au mieux avec mon soft domotique personnel, domonode.

Pour ceux qui sont intéressés par un montage capable de s'intégrer dans une solution domotique 'classique', je conseille de jeter un oeil au projet GitHub bertmelis/VitoWiFi, prévu pour un ESP8266, ESP32 et qui permet de communiquer en WiFi de façon standardisée, grâce au protocole MQTT.

Infos techniques:

https://github.com/openv/openv/wiki/Die-Optolink-Schnittstelle

documentation:

Les composants électroniques:

En plus de quelques résistances et transistors standards, la communication est assurée par deux LEDs infrarouges (une pour la réception, l'autre pour l'émission). Les LEDs infrarouges sont des modèles particuliers (longueur d'onde, ...).

  • SFH 309 FA pour le récepteur
  • SFH 487 - 2 pour l'émetteur (trouvé sur eBay, mais produit en fin de vie, remplaçable par un Vishay TSHA4401 ?)

les modèles de chaudières

doc: https://github.com/openv/openv/wiki/Ger%C3%A4te

Différents protocoles en fonction du modèle de chaudière: GW, KW1, KW2, 300. Les adresses et le protocole diffèrent selon l'appareil.

forme, contenu des trames, etc...: https://github.com/openv/openv/wiki/Protokolle

Chaque famille de contrôle possède un ID d'appareil de deux octets. Dans de nombreux contrôleurs, cet ID de périphérique peut être interrogé à l'aide de l'adresse 0xf8.

Étant donné que les appareils d'une famille peuvent différer en termes de configuration matérielle et de version logicielle, un ID d'appareil étendu peut être nécessaire pour une identification précise.

Cet ID d'appareil étendu comprend généralement 4 octets à partir de l'adresse 0xf8 et se compose comme suit:

Type d'appareil: 0xf8, 0xf9
Révision matérielle: 0xfa
Index logiciel: 0xfb

Le protocole KW

Ce protocole est pris en charge par les commandes Vitotronic de la série KW. Il est similaire à l'ancien protocole GWG, mais prend également en charge les adresses d'une longueur de 2 octets.

Pour autant que l'on sache, tous les contrôleurs qui prennent en charge le protocole 300 sont rétrocompatibles avec le protocole KW et peuvent également être adressés via ce dernier protocole.

Interface série (Optolink):

4800 8 E 2, sans protocole de prise de contact

Communication (toutes les valeurs en hexadécimal)

  • Vitotronic envoie périodiquement 0x05
  • Immédiatement (xx msec) après avoir reçu 0x05, un télégramme peut être envoyé et recevra une réponse immédiatement.
  • Avant qu'un autre télégramme puisse être envoyé, vous devez attendre le prochain 0x05.
  • Au lieu d'attendre le prochain 0x05, le prochain télégramme peut également être envoyé immédiatement après avoir reçu une réponse. Le télégramme ne doit pas être initié avec 0x01 (logiquement parlant, 0x01 n'est donc pas un octet de début de télégramme mais un ACK à 0x05).

Détails du télégramme:

01 octet de début de télégramme (ACK sur 0x05) F7 Type F7 = lecture F4 = écriture XX XX adresse XX Nombre d'octets demandés

Exemple de requête de température extérieure (V200KW2)

TX: 01 TX: F7 55 25 02 RX: 5B 00> température extérieure 9,1 ° C

Exemple de requête ID d'appareil

TX: 01 TX: F7 00 F8 02 RX: 20 98 0x2098 = V200KW2

Réglez le circuit de chauffage A1 en mode économie (V200KW2)

TX: 01 TX: F4 23 02 01 01 RX: 00 = confirmation OK

liste des valeurs

Pour chaque protocole + modèle de chaudière, on a une liste des valeurs qu'on peut récupérer et des commandes qu'on peut exécuter.

doc: https://github.com/openv/openv/wiki/Adressen