Połączenie z piecem Vaillant EcoTec poprzez Raspberry Pi 2, ebusd i adapter ebus 1.6

///Połączenie z piecem Vaillant EcoTec poprzez Raspberry Pi 2, ebusd i adapter ebus 1.6

Połączenie z piecem Vaillant EcoTec poprzez Raspberry Pi 2, ebusd i adapter ebus 1.6

2020-12-04T15:32:44+01:00 4 grudnia, 2020|Categories: Automatyka Domowa, Home Assistant|Tags: , , , , , |

W niniejszym znajdziesz informacje jak połączyć się z kotłem Vaillant przy użyciu RaspberryPi + ebusd Adapter (w wersji 1.6).

Budując swoje rozwiązanie posiłkowałem się na bardzo dobrym wpisie blogowym stąd : https://blog-techniczny.pl/2017/10/06/laczenia-kotla-vaillant-z-raspberry-pi-przez-ebus/ aczkolwiek i tak napotkałem wiele problemów, których być może Tobie uda się uniknąć dzięki temu wpisowi.

Zacznę od skompletowania części. I tutaj uwaga pierwsza :

Można to zrobić na kilka sposobów.

Mój pierwszy pomysł to użycie adaptera z OLX + wemos d1 mini z odpowiednim firmware. Co ważne – adapter jest w wersji 1.6. 

Niestety – co okazało się w trakcie moich prób – nie da się go spiąć z Wemos d1 mini i oprogramowaniem https://github.com/john30/ebusd-esp .

Moja teza: firmware nie działa z płytką adaptera w wersji 1.6 (to ta z pokrętłem regulacyjnym, którą posiadam).

 

Prawdopodobnie firmware jest przeznaczony do adaptera w wersji 2. Niestety znalazłem tylko może jedną aukcję tego adaptera, gdzie był dość drogi (poza tym ja już miałem ten w poprzedniej wersji). Tutaj informacje jak zbudować ebus adapter w wersji 2: https://ebus.github.io/adapter/index.en.html

Niestety większość stron jest w języku niemieckim.

 

Opiszę zatem poniżej jak połączyłem swój kocioł przy użyciu raspberry.

Co będzie potrzebne?

  • Kabel dwużyłowy dowolny do podłączenia linii eBus z pieca do adaptera
  • Adapter 1.6 z OLX lub innej platformy
  • RaspberryPi (ja mam model 2)
  • Konwerter USB TTL (raczej dowolny, użyłem pierwszego lepszego który miałem)
  • Konwerter poziomów logicznych 3.3 – 5v. To taka mała płytka z rezystorami, do kupienia na aukcji już od 2 zł.

I tutaj od razu uwaga. Wykonałem połączenie zgodnie z opisem na blogu „techniczny” do którego wrzuciłem linka na początku wpisu, jednak w moim przypadku ono nie działało.

Albo działało połowicznie – dostałem informację o złapaniu sygnału, wykrył mi nawet model kotła itd.. Pierwsze wrażenie było całkiem dobre, jednak w praktyce nic nie działało. Nie można było odczytać żadnej wartości.

Przy użyciu adaptera USB TTL nie zanotowałem problemów, wszystko zadziałało od razu i znacznie szybciej. Być może coś z moim serialportem w Rpi2 jest nie tak.

Otwieramy kocioł i podłączamy kabel do złącz eBus

Opis dotyczy kotła Vaillant EcoTec Pro.

Odłączamy piec z prądu

Na dole jest śrubka – odkręcamy ją. Potem są takie 2 zatrzaski metalowe – wciskamy je palcami do góry i odciągamy białą obudowę frontową.

Ten front można zdjąć łatwo całkowicie unosząc go do góry i lekko szarpiąc.

 

Naszym oczom ukaże się piec, ale elektronika powinna być zakryta kolejną pokrywą. Odczepiamy ją, jest na 4 zatrzaskach. Odginamy je w przeciwną stronę i podnosimy.

Naszym oczom powinna ukazać się elektronika kotła.

 

Teraz znajdujemy złącze ebus (czasem opsisane jako BUS) i dopinamy się do niego. Jeśli masz moduł VR61 lub regulator, będą tam już wpięte 2 kable. Dołączamy swój kabel jako kolejny.

 

Moje nowe kable które idą do adaptera mają kolor czarny.

Przerzuciłem je przez przepusty obok kabli, które już tutaj szły. Czarnym dwużyłowym kablem wyszedłem na dole po lewej stronie pieca.

 

 

Podłączenie adaptera

Kabel wychodzący z pieca podłączamy do adaptera eBus, polaryzacja dowolna.

 

Piny adaptera podłączamy do konwertera sygnałów 5V <–> 3.3V jako że konwerter USB przyjmuje napięcia 3.3V (tutaj nie mam 100% pewności, być moze uda się bez konwertera, ja nie próbowałem). Podłączamy również komunikację szeregową na zasadzie TX do TX, RX do RX poprzez konwerter poziomów logicznych.
W niektórych rozwiązaniach należy podłączyć TX z jednej do RX z drugiej (co wydaje mi się bardziej logiczne). Tutaj jednak zawsze TX do TX, RX do RX.

 

 

 

Co istotne – napięcie 5V z konwertera musimy rozgałęzić na dwa. Jeden pin wejdzie nam wtedy do konwertera stanów logicznych oznaczony jako HV, drugi pójdzie do adaptera eBus.

Adapter eBus 1.6 wymaga zasilania 5V.

Tutaj profesjonalny schemat jak podłączałem komponenty:

Jeśli wszystko jest dobrze podłączone, uruchom piec.

Podłącz również adapter TTL USB do raspberry i uruchom je.

Dostrajanie rezystancji na rezystorze wieloobrotowym

Nie zawsze jest wymagane. Jeśli jednak rozregulowałeś go z rozpędu tak jak ja, zrób tak:

  1. Podłącz wszystkie kable jak wyżej, włóż adapter TTL do USB w raspberry. Przyjmuję, że masz czystą instalację Raspbiana 10 specjalnie pod czytanie z ebus.
  2. Kręć w cały czas w lewo rezystorem aż usłyszysz takie „cykanie” blaszki w środku. To znaczy, że jesteś już z jednej strony w maksymalnej pozycji.
    UWAGA! Rezystor wieloobrotowy ma swój zakres regulacji około 25 obrotów, trzeba się trochę nakręcić. Moja pierwsza myśl była taka, że moze coś jest skopane.. :)
  3. Uruchom minicom na raspberry – terminal szeregowy. Pomoże Ci określić czy dobrze jest ustawiony rezystor
    apt-get install minicomminicom -b 2400 -o -D /dev/ttyUSB0
  4. Teraz kręć rezystorem w prawo, u mnie było to ok 3-4 obroty i zaczęły się pojawiać znaki na terminalu. Kręć z wyczuciem, żeby znaki pojawiały się regularnie, bez wyraźnych przerw.
  5. Używając samego terminala nie ustawisz idealnie tego połączenia, ale złapiesz mniej więcej zakres obrotów kiedy w ogóle ono działa.

Instalacja eBusd na Raspberry, łączenie z kotłem

W tym kroku pobierzemy pakiet ebusd ze strony https://github.com/john30/ebusd jako pakiet z repozytorium dla raspberry.

Wchodzimy na nasze Rpi i przeklejamy

wget -qO – https://raw.githubusercontent.com/john30/ebusd-debian/master/ebusd.gpg.key|apt-key add –

następnie

wget -O /etc/apt/sources.list.d/ebusd.list https://raw.githubusercontent.com/john30/ebusd-debian/master/ebusd-armhf-default.list

i ostatnie – odświeżenie informacji z repozytoriów i instalacja

apt-get update && apt-get install ebusd

Teraz uruchamiamy daemona w trybie interaktywnym, jako aplikacja a nie jako serwis. Robimy to dopóki nie ustawimy poprawnie komunikacji.

ebusd -f –scanconfig -d /dev/ttyUSB0 –receivetimeout 10000

Powinniśmy zobaczyć komunikaty z aplikacji w stylu:

 

2020-12-04 11:31:34.335 [main notice] ebusd 3.4.v3.3-51-g57eae05 started with auto scan
2020-12-04 11:31:34.786 [bus notice] bus started with own address 31/36
2020-12-04 11:31:34.820 [bus notice] signal acquired

Komunikat który pogrubiłem oznacza nawiązanie komunikacji z szyną. Jeśli go nie uzyskałeś to w tym momencie:

  1. wróc do kroku minicom, zobacz czy dalej pojawiają Ci się dziwne znaki i krzaczki w terminalu. Jeśli nie – sprawdź połączenia kablowe.
  2. reguluj niebieskim potencjometrem ustawienie o np. ćwierć obrotu, wyjdź z ebusd klawiszem CTRL+C i uruchom jeszcze raz polecenie skanowania
    ebusd -f –scanconfig -d /dev/ttyUSB0 –receivetimeout 10000

Jeśli otrzymasz komunikat w stylu: scan 15 timeout – to może to oznaczać problemy z adapterem USB. Wymień adapter na inny, możesz też spróbować wpiąć się do portu szeregowego w Raspie (przy czym u mnie działało to fatalnie, ale może masz inną wersję raspberry i okaże się to lepsze?)

 

Musisz doprowadzić do sytuacji w której otrzymasz mniej więcej takie logi z ebus:

2020-12-04 11:31:34.335 [main notice] ebusd 3.4.v3.3-51-g57eae05 started with auto scan
2020-12-04 11:31:34.786 [bus notice] bus started with own address 31/36
2020-12-04 11:31:34.820 [bus notice] signal acquired
2020-12-04 11:31:35.500 [bus notice] new master 10, master count 2
2020-12-04 11:31:37.452 [bus notice] new master 03, master count 3
2020-12-04 11:31:44.915 [bus notice] scan 08: ;Vaillant;BAI00;0608;5502
2020-12-04 11:31:44.915 [update notice] store 08 ident: done
2020-12-04 11:31:44.915 [update notice] sent scan-read scan.08 QQ=31: Vaillant;BAI00;0608;5502
2020-12-04 11:31:44.915 [bus notice] scan 08: ;Vaillant;BAI00;0608;5502
2020-12-04 11:31:45.389 [main notice] read common config file vaillant/scan.csv
2020-12-04 11:31:45.495 [main notice] read common config file vaillant/general.csv
2020-12-04 11:31:45.542 [update notice] received unknown MS cmd: 1050b505023001 / 0101
2020-12-04 11:31:45.628 [main notice] read common config file vaillant/broadcast.csv
2020-12-04 11:31:45.834 [main notice] read scan config file vaillant/08.bai.csv for ID „bai00”, SW0608, HW5502

 

Jeśli udał Ci się ten krok, zatrzymaj aplikację klawiszem CTRL + C.

Następnie wyedytuj plik:

nano /etc/default/ebusd

i spraw żeby linijka EBUSD_OPTS wyglądała mniej więcej tak:

EBUSD_OPTS=”–scanconfig -d /dev/ttyUSB0 –receivetimeout 10000 -l /var/log/ebusd.log

 

Ostatni krok – autostart serwisu i uruchomienie

systemctl enable ebusd && systemctl start ebusd

Aby teraz podejrzeć co się dzieje pod spodem, wyświetl sobie plik loga :

less /var/log/ebusd.log

Odczekaj około minuty i uruchom polecenie

ebusctl info

 

Powinieneś dostać podobny wynik do:

root@raspberrypi:/home/pi# ebusctl info
version: ebusd 3.4.v3.3-51-g57eae05
access: *
signal: acquired
symbol rate: 101
max symbol rate: 144
min arbitration micros: 55
max arbitration micros: 160
min symbol latency: 4
max symbol latency: 5
reconnects: 0
masters: 3
messages: 568
conditional: 7
poll: 1
update: 9
address 03: master #11
address 08: slave #11, scanned „MF=Vaillant;ID=BAI00;SW=0608;HW=5502”, loaded „vaillant/bai.308523.inc”, „vaillant/08.bai.csv”
address 10: master #2
address 15: slave #2, scanned „MF=Vaillant;ID=47000;SW=0420;HW=1403”, loaded „vaillant/15.470.csv”
address 31: master #8, ebusd
address 36: slave #8, ebusd
address 50: slave, scanned „MF=Vaillant;ID=V6100;SW=0418;HW=1902”, loaded „vaillant/50.v61.mc.csv”

Jeśli udało się połączyć z piecem i jego modułami (regulatorem, modułami rozszerzającymi) to będziesz miał dostępne multum wartości, które możesz odczytać.

ebusctl find

Nie przejmuj się informacją NO DATA STORED. To normalne. Żeby odczytać wartość rejestru, musisz o to poprosić.

A w ten sposób zobaczysz ile jest dostępnych pól do odczytania z pieca:

ebusctl find -r | wc -l

U mnie wynik komendy to 418. Jeśli masz mniej niż 10 – albo za krótko odczekałeś, albo coś nie tak z komunikacją.

Każde urządzenie ma swój id który widać w pierwszej kolumnie po wykonaniu polecenia ebusctl find. W moim przypadku mam 3 różne ID modułów:

  • bai – to id pieca,
  • 470 – to id regulatora pokojowego
  • mc – to id modułu VR61 do którego mam podłączone pompy i mieszacz

 

Mając tę wiedzę możesz zajrzeć do mojego skryptu, który wyciąga wszystkie wartości z danego modułu po podaniu jego id.

To w zasadzie tyle. Kolejne kroki które możesz podjąć zależą od przypadku użycia. Możliwe jest np. odczytanie wartości z użyciem PHP i prezentacja w formie wykresów, można też otrzymane dane wrzucić do serwera MQTT i odczytywać za pomocą np. HomeAssistant czy Domoticz i wiele więcej.

Natomiast jeśli interesuje Cię następnie integracja tego rozwiązania z HomeAssistant, przejdź do kolejnej części.

Tam będzie też krok ustawiania ebusd jako usługa systemowa, dodawanie parametrów do komunikacji mqtt i więcej.

Facebook - komentarze