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ę.