Rekuperator Brink Renovent Excellent 450 - integracja OpenTherm

Jakiś czas temu stwierdziłem, że przyszła pora na zintegrowanie rekuperatora z HA. Dostępne integracje z HA wymagają urządzenia BrinkConnect, które przez eBus komunikuje się z rekuperatorem (koszt urządzenia ok 2000zł).

W instrukcji Brinka rzuciła się w oczy wzmianka o możliwości sterowania rekuperatorem za pomocą OpenTherm i zacząłem szukać informacji na ten temat. Niestety do mojego rekuperatora nie mogłem niczego znaleźć.
Znalazłem natomiast repozytorium dotyczące integracji rekuperatora Brink HR z openHAB’em (GitHub - raf1000/brink_openhab: Brink Renovent HR and Openhab integration - wielkie dzięki autorowi!) co pozwalało przypuszczać, że i z moim rekuperatorem może się udać. Postanowiłem się zaczepić.
Kupiłem OpentTherm Shield (od autora biblioteki OpenTherm do Arduino -GitHub - ihormelnyk/opentherm_library: Arduino/ESP8266 OpenTherm Library for HVAC system control communication - również wielkie dzięki!) do D1 Mini i zacząłem próby.

Początkowo były spore problemy ze stabilnością połączenia i sterowaniem rekuperatorem z wykorzystaniem protokołu OpenTherm, ale po drobnych korektach w kodzie i sporej liczbie testów udało się osiągnąć zamierzony cel.
Najważniejszą zmianą mającą wpływ na stabilność połączenia było dodanie drobnego delay przed pobraniem każdej kolejnej wartości z rekuperatora oraz zmiana częstotliwości odczytu danych powyżej maksimum zakładanego przez autora repozytorium.

Całość komunikuje się z HA z wykorzystaniem MQTT.

Do integracji wykorzystałem:

  1. Wemos D1 mini
  2. Master OpenTherm Shield - Master OpenTherm Shield - DIYLESS Electronics
  3. Arduino IDE - https://www.arduino.cc/en/software

Jeżeli ktoś będzie zainteresowany, to po uporządkowaniu kodu mogę załączyć zmodyfikowane przeze mnie pliki konieczne do kompilacji programu w D1 mini oraz konfigurację YAML z samego HA.

2 Likes

Jak najbardziej jestem zainteresowany, tym bardziej że konwerter pod OpenTherm nie dość że jest 3x tańszy niż pod eBUS to jeszcze jest dostępny (czy OpenTherm i eBUS są zgodne pod względem napięć ?).
Jaki sygnał wychodzi z Master OpenTherm Shield i na czym można go odbierać ? czy to jest np ttl ?
D1 konwertuje protokół OpenTherm ? czy jedynie jest bramką MQTT/WIFI ?
Pytam o sygnał ttl bo wtedy mógłbym zrobić transmisję np przez ttl/RS485 lub ttl/Ethernet która będzie stabilniejsza niż wifi na ESP8266 (lub chociaż kompilacja pod ESP32 - tutaj byłaby opcja zewnętrznej anteny)
A skoro rozpracowujesz reku Brinka to może coś pomożesz i w tym temacie
https://www.elektroda.pl/rtvforum/topic3860823.html
bo ceny fabrycznych akcesoriów są nienormalne

Czy po przeklikaniu w centrali interfejsu z eBUS (domyślny) na OpenTherm działa Ci dalej sterownik pokojowy (on też jest eBUS/OpenTherm czy tylko eBUS)? Ja mam poprzednika AirControl - z dwoma pokrętłami.

Możesz kupić przecież gotową bramkę OpenTherm, która ma port ethernet na płytce, np. rozwiązanie ze sklepu OpenTherm , kilka osób na forum korzysta już z tego produktu, napewno podzielą się opinią.

A skoro rozpracowujesz reku Brinka

Ja Brinka nie rozpracowuję, to robili koledzy wymienieni w pierwszym poście, mnie tylko udało się ich rozwiązanie przenieść na mój rekuperator :wink:

Pytam o sygnał ttl bo wtedy mógłbym zrobić transmisję np przez ttl/RS485 lub ttl/Ethernet która będzie stabilniejsza niż wifi na ESP8266 (lub chociaż kompilacja pod ESP32 - tutaj byłaby opcja zewnętrznej anteny)

Tak jak pisze @macek można próbować innych rozwiązań, natomiast ja wybrałem sprawdzone (przynajmniej częściowo). O wymienionej przez kolegę bramce OpenTherm wspomniał też na forum openHABa autor repozytorium z githhuba:

I have bought an OpenTherm Gateway (from nodo-shop) and connected it to Brink Renovent and to openHAB using the existing OpenTherm binding. Unfortunately, after several attempts I was not able to get a stable connection between Opentherm Gateway and my Brink.

Nie byłem pewny, czy w ogóle będę w stanie to zintegrować dlatego wybór padł na master-opentherm-shield (D1 mini zawsze jakieś luźne leży w szufladzie).

Czy po przeklikaniu w centrali interfejsu z eBUS (domyślny) na OpenTherm działa Ci dalej sterownik pokojowy (on też jest eBUS/OpenTherm czy tylko eBUS)? Ja mam poprzednika AirControl - z dwoma pokrętłami.

U siebie miałem AirControl i po zmianie komunikacji na OpenTherm mój sterownik pokojowy nie działa.
Natomiast wg informacji zawartych na githubie działa przełącznik 3-pozycyjny:

I have noticed that Opentherm protocol connection can work in parallel with multiple switch (3 way switch). After switching from U1 to U2/U3, the 3 way switch overrides the ventilation capacity set up by OpenTherm.

PS.
W pierwszym poście zapomniałem dodać, że po 5 latach użytkowania rekuperator stał się bardzo głośny. Postanowiłem i w tym zakresie zadziałać i wymienić łożyska w wentylatorach posiłkując się informacjami zawartymi tutaj:https://majsterkowo.pl/jak-wymienic-lozyska-w-brink-renovent-excellent-400/.
Po wymianie łożysk rekuperator pracuje jak nowy.

Ok chyba chaotycznie napisałem poprzedniego posta
Produkty gotowe są zapewne przefajne ale w moim przypadku smart home to majsterkowanie/użyteczność więc kilkaset złotych + przesyłka niewiele tańsza nieco przyćmiewa użyteczność i żadnego w tym majsterkowania.
Niestety OpenTherm z moim Brinkiem odpada z dość prozaicznego powodu - sterownik pokojowy z programatorem czasowym-tygodniowym jest na eBUS wiec jak zmienię na centrali protokół z eBUS na OpenTherm to sterownik pokojowy będzie martwy. Domownicy cenią sobie wygodę jego stosowania w zakresie wydajności rekuperatora - jedno przyciśnięcie i przekręcenie pokrętła a na wyświetlaczu widać wykres intensywności przewietrzania. Tak więc OpenTherm odpada.
Chciałbym dobrać się do mojego rekuperatora bo dość opornie ale rzeźbię stację pogodową z deszczomierzem, anemometrem, kierunkiem wiatru, ciśnieniem, temp, wilgotnością, luxomierzem i czujnikiem zapylenia PM2,5 i PM10. I tak sobie wykombinowałem żeby pod HA sterować oświetleniem zewnętrznym czy roletami według czujnika oświetlenia i np. roletami wg porywów wiatru na anemometrze a wg wskazań czujnika pyłu zawieszonego np czasowo automatycznie zmniejszać wydajność rekuperacji. Smog smogiem (z roku na rok się poprawiało - aż do teraz) ale uroki mieszkania pod miastem to też np koszenie zboża/kukurydzy czy bronowanie okolicznych pól - wtedy chciałbym na te kilka godzin przydławić rekuperator.
Oczywiście Brink Renowent ma możliwość sterowania wydajnością w prosty sposób przełączając styki na kablu w konfiguracji biegu I, II i III - czyli do ogarnięcia na przekaźnikach ale w tej opcji nie ma niczego więcej - nawet wyłączania rekuperatora.

O ttl pytałem bo mam w tym samym pomieszczeniu konwerter ttl/ethernet z podwójnym serialem ttl i jeden serial port ttl mam w nim wolny Port szeregowy przez konwerter rs ttl - ethernet

Szukam dalej jakiegoś prostego projektu konwertera eBUS <-> ttl tak żeby był plik wsadowy do zamówienia płytki i własnego polutowania. To co oferują to albo fabryczne i koszmarnie drogie, albo jak na nasze przeliczniki waluty drogie i zazwyczaj niedostępne - zapisy chętnych itp…

Ale @ fronteri jak najbardziej opisz jak tego Brinka na OpenTherm zrobiłeś bo nigdy nie wiadomo do czego się może przydać a niejednemu głowę pełną pomysłów Brink studzi.

Cześć,
Zainspirował mnie twój sukces i postanowiłem zabrać się za mój rekuperator.
Wiem, że nie zajmowałeś się BRIKIEM, ale będę wdzięczny jeśli podpowiesz jak na bazie plików od kolegi raf1000 udało ci się uruchomić rekuperator… wspominałeś o modyfikacjach kodu.

Mnie udało się na bazie wspomnianego hardware’u uruchomić komunikację po OT z Ubinkiem (to rekuperator, który był poprzednikiem Brink Renoventa HR, firma chyba szwedzka zdecydowała się w pewnym momencie na zmianę marki i wprowadzenie rekuperatorów pod nowym logotypem na rynek europejski - Ubink, czy Brink - działa tak samo tylko drzwiczki filtrów są czerwone a nie niebieskie).
Potrafię zmieniać nastawy parametrów U oraz I… oraz odczytywać wszystkie parametry. Nie potrafię natomiast zmienić głównego parametru VentilationMode. Funkcja getVentilationMode ciągle zwraca 0 - co jest zgodne z prawdą bo reku nie rusza.

Klasycznie bez płytki podłączonej do złącza OT do rekuperatora na jego wyświetlaczu pojawia się zapis 1.100 co odpowiada wartości przepływu ustawionej dla 1 biegu. Regulator ręczny 3-biegowy działa bez zarzutu (2-200, 3-300 m3/h). Jak podłączę płytkę D1 mini, to na wyświetlaczu pojawia się napis “o.0” (małe “o” w górnej części wyświetlacza 8 segmentowego . klasyczne zero). Rekuperator w tym stanie loguje dane po MQTT, ale stoi. Pozwala na zmiany parametrów U oraz I, ale nie reaguje na zmianę na przykład parametru CurrentVentilation. Zakładam, że przyczyna leży w konieczności zmiany bitu odpowiedzialnego za parametr VentilationMode (2b 00000000 00000010), czego nie potrafię zrobić. Zatem ponawiam prośbę kolegi @abaku o zamieszczenie kodu.

Z góry dziękuję - ku uldze kolejnych testerów.

Cześć,

Jak podłączę płytkę D1 mini, to na wyświetlaczu pojawia się napis “o.0”

To prawdopodobnie znaczy tylko tyle, że rekuperator komunikuje się przez protokół OpenTherm. U mnie po podłączeniu D1 też pojawia się “o” w miejscu gdzie normalnie widoczna jest wartość aktualnie aktywnego biegu.

getVentilationMode ciągle zwraca 0 - co jest zgodne z prawdą bo reku nie rusza.

Aktualne ustawienie przepływu sprawdzaj za pomocą CurrentVolume

nie reaguje na zmianę na przykład parametru CurrentVentilation. Zakładam, że przyczyna leży w konieczności zmiany bitu odpowiedzialnego za parametr VentilationMode

Parametry CurrentVolume i VentilationMode są parametrami READ.

Ja swoim rekuperatorem steruję z użyciem brink/VentNomValue/set co zmienia parametr setVentilation
gdzie:
0 - rekuperator wyłączony
1 - pierwszy bieg
2 - drugi
3 - trzeci
wartości od 10 - 100 odpowiadają procentowemu przepływowi w odniesieniu do maksymalnego przepływu.

Zatem ponawiam prośbę kolegi @abaku o zamieszczenie kodu

Nie udało się jeszcze tego uporządkować, ale zmiany w kodzie są raczej kosmetyczne. Teraz brakuje trochę czasu, ale wrzucę to jak znajdzie się chwila.

Dziękuję, to już pomogło…
Potwierdzam, że rekuperator Ubink jest również sterowany parametrem setVentillation (brink/VentNomValue/set). Wszystko ruszyło. Dziękuję za bezcenną wskazówkę.

Hej,
Czy mógł byś udostępnić finalną wersję kodu. Wgrałem na żywca z git-a raf1000 ,ale dane schodzą raz na jakiś czas , a i sterowanie raz działa a raz nie.
Wolałbym nie odkrywać Ameryki na nowo …

Cześć,
Wklejam ostatnią używaną przeze mnie wersje kodu (plik *.ino), który modyfikowałem.
Z najistotniejszych różnic do pliku dodałem obsługę statycznego IP, czujnika temperatury, delay przed odczytaniem danego parametru i wydłużyłem czas między odczytami powyżej zalecanego max (5000) do 7000 i dodatłem kawałek kodyu służący do restartu ESP przez MQTT.
U mnie wystarczyło to do sprawnego sterowania rekuperatorem w takim zakresie jaki potrzebuję.

Nie jest to ostateczna wersja pliku i całkiem możliwe, że tak już zostanie. Po korektach w kodzie w repozytorium użytkownika raf1000, zacząłem dostosowywać swoją wersję, ale nie ma czasu żeby to skończyć.
Nie odczytuję też wszystkich dostępnych parametrów, część jest ‘zakomentowana’, część nie dodana.

Plik trzeba traktować jako wersję roboczą.

brink.zip (4,1 KB)

*Załączam jako zip, ze względu na ograniczenie dotyczące załączanych plików na forum

@fronteri

Dzięki za podzielenie się swoim projektem. Mam model Excellent 400. Zakupiłem ten sam sprzęt i próbuję dokonać podobnej integracji jak Ty. Pracuję nad plikiem .ino, ale otrzymuję wiele komunikatów o błędach. Czy mógłbyś podzielić się również swoimi plikami .cpp i .h?

Zarówno linki Raf1000, jak i Ihor mają różne pliki .cpp i .h, i nie jestem pewien, który z nich użyć ani jak je połączyć! Nie jestem programistą/programistką, ale potrafię zrozumieć kody.

Cześć
Brink - cpp, h.zip (9,1 KB)

1 Like

dziękujemy za udostępnienie plików. Mam zamiar je wypróbować.

Daj znać, czy udało się uruchomić. W razie czego mogę spróbować pomóc.

1 Like

Cześć. @fronteri czy mógłbym prosić o udostępnienie wpisów w configuration.yaml z HA. O ile temperatury nawiewu/czerpni udaje mi się odczytać to ze sterowaniem mam problem. NIestety dopiero raczkuję w MQTT. Moja jednostka to Brink Excellent 400.

Cześć,
Ja wszystkie automatyzacje realizuje z wykorzystaniem Node-RED.
Generalnie musisz publikować payload dla konkretnego tematu.

Tak jak pisałem wyżej:

Ja swoim rekuperatorem steruję z użyciem brink/VentNomValue/set co zmienia parametr setVentilation
gdzie:
0 - rekuperator wyłączony
1 - pierwszy bieg
2 - drugi
3 - trzeci

Czyli do testów najprościej tak:

Rozumiem że w to samo powinienem uzyskać w konfiguracji integracji mqtt wysyłając telegram powinien mi rekuperator ruszyć na biegu 3 czyli w moim przypadku 400m3/h

Niestety tak się nie dzieje. Dodatkowo mam pytanie o brink/UX/set żeby uzyskać 400m3/h payload musiałem wprowadzić 144. To przypadłość u mnie czy to jakiś dziwny przelicznik ?

Dokładnie tyle powinno wystarczyć.

brink/UX/set a co to za topic?
którego pliku *.ino używasz?

UX w sensie X wartość 1,2,3 dla poszczególnych biegów. I np dla wartości 400m3/h muszę payload ustawić 144