Odczyt parametrów pracy kotła gazowego przez eBUS

Skoro mamy już skonfigurowane połączenie między kotłem a Raspberry Pi, pora zająć się jego praktycznym wykorzystaniem. Pierwszym krokiem będzie monitorowanie i prezentacja temperatur oraz innych parametrów pracy kotła Vaillant ecoTEC plus VC.

Do kominikacji z ebusd użyjemy skryptu php, który pobrane dane będzie odkładał w bazie danych narzędzia RRDtool, które było już wielokrotnie wykorzystywane przeze mnie do zbierania i prezentowania danych (choćby przy prezentacji komunikacji z systemem Bero czy opisie termometru wifi). Skrypt php będzie wywoływał program ebusctl, który służy do komunikacji z deamonem ebusd (w moim wypadku zdalnej komunikacji, co ostatnio opisałem). Zebrane dane będą gromadzone w bazie rrd z użyciem polecenia rrdtool update. Skrypt będzie wywoływany cyklicznie, co minutę, dzięki linuksowemu mechanizmowi crontab.

Wybór parametrów

W pierwszej kolejności trzeba wybrać dane, które będą nas interesować. Wybór jest duży, ale kilka rejestrów wydaje się najbardziej interesujących na początek.

  • FlowTemp – temperatura obiegu, czyli temperatura na wyjściu z kotła (do centralnego ogrzewania lub obiegu bojlera, zależnie od aktualnego ustawienia zaworu)
  • FlowTempDesired – oczekiwana temperatura obiegu centralnego ogrzewania, wynikająca przede wszystkim z krzywej grzewczej przy sterowaniu pogodowym
  • StorageTemp – temperatura w zasobniku ciepłej wody użytkowej
  • ReturnTemp – temperatura powrotu do kotła
  • OutdoorsTempSensor – temperatura zewnętrzna
  • Flame – informacja o obecności płomienia (czy kocioł aktualnie podgrzewa wodę)
  • WaterPressure – ciśnienie wody w instalacji
  • ModulationTempDesired – zadana aktualna moc kotła w procentach, czyli informacja z jaką aktualnie mocą pracuje palnik, o ile pracuje
  • PumpPower – moc, z jaką pracuje aktualnie pompa; od tego zależy prędkość przepływu wody w instalacji oraz zużycie prądu
  • RemainingBoilerblocktime – pozostały czas blokady czasowej ogrzewania
  • PositionValveSet – pozycja zaworu przełączającego między ogrzewaniem zasobnika ciepłej wody a centralnym ogrzewaniem
  • PrEnergy… – rejestry liczników zużycia prądu i gazu

Przygotwanie baz danych

Teraz należy przygotować pliki, w których będziemy gromadzić dane. Służy do tego polecenie rrdtool create. Zdefiniujemy liczniki typu gauge, najbardziej pasujące do rodzaju zbieranych danych, z domyślnym krokiem co 60 sekund. Dla temperatur i pozostałych danych użyjemy dwóch osobnych plików.

rrdtool create /tmp/ecotec-temperatures.rrd -s 60 DS:flowtemp:GAUGE:180:U:U DS:flowtempdesired:GAUGE:180:U:U DS:returntemp:GAUGE:180:U:U DS:storagetemp:GAUGE:180:U:U DS:outsidetemp:GAUGE:180:U:U RRA:AVERAGE:0.5:1:44640
rrdtool create /tmp/ecotec-params.rrd -s 60 DS:power:GAUGE:180:U:U DS:pumppower:GAUGE:180:U:U DS:blocktime:GAUGE:180:U:U DS:valve:GAUGE:180:U:U DS:pressure:GAUGE:180:U:U RRA:AVERAGE:0.5:1:44640

Poza plikami rrd będziemy na razie tworzyć także log tekstowy z najważniejszymi parametrami i dodatkowo co godzinę zapiszemy stan liczników zużycia.

Test odczytu

Na wszelki wypadek sprawdzimy, czy rejesrrdtool create /sciezka/rrd/kociol-parametry.rrd -s 60 DS:moc:GAUGE:180:U:U DS:mocpompy:GAUGE:180:U:U DS:blokada:GAUGE:180:U:U DS:zawor:GAUGE:180:U:U DS:cisnienie:GAUGE:180:U:U RRA:AVERAGE:0.5:1:44640try są odczytywane poprawnie przez ebusctl.

techniczny@raspberrypi /dom $ ebusctl -s 192.168.10.132 read -m 20 PrEnergySumHwc1
56702574

Przy odczycie lokalnym należałoby pominąć opcję -s oraz IP zdalnego serwera. Ja jednak nie zbieram danych na Raspberry Pi, na którym działa ebus. Opcja -m 20 zapobiega odczytowi starych danych z pamięci podręcznej.

Skrypt php do odczytu danych

Kluczową funkcją skryptu będzie odczyt rejestru wg podanej nazwy. Nic skompikowanego, wykorzystamy po prostu funkcję exec, czyli wywołanie polecenia systemu operacyjnego:

function getregister( $reg )
{
 global $ip;
 exec("/usr/bin/ebusctl -s $ip read -m 30 $reg", $output, $retcode);

 if($retcode==0 && substr($output[0],0,3)!="ERR" && substr($output[0],0,3)!="err" ) return($output[0]);
   else return("error");
}

Będzie to podstawa do odczytu wszystkich potrzebnych danych. Do wywołania rrdtool i zapisu danych do pliku tekstowego dla wygody także będziemy używać exec.

Cały skrypt umieściłem w repozytorium github, gdzie można go obejrzeć lub pobrać.

Zbieranie danych

W pierwszej kolejności warto wywołać skrypt ręcznie komendą php -f ebusget.php dla sprawdzenia czy wszystko jest w porządku. Jeżeli test wypadnie poprawnie, można poleceniem crontab -e zaplanować wykonywanie skryptu co minutę, dodając linię:

* * * * * php -f /dom/ebusget.php

To co powinno dać się łatwo zaobserwować, to zmiany zmiany czasu ostatniej modyfikacji plików *.rrd. Powinien też pojawić się plik vaillant-ecotec.log, a o pełnej godzinie dodatkowo vaillant-prenergy.log.

Prezentacja danych

Zaletą pakietu rrd jest łatwa prezentacja zebranych danych w postaci szeroko parametryzowalnych wykresów. Służy do tego polecenie rrdtool graph. W naszym przypadku, dla zachowania przejrzystości, warto podzielić dane na dwa wykresy. Na jednym przedstawione będą wszystkie zebrane temperatury, a na drugim – pozostałe parametry. Potrzebne komendy zostały zebrane w skrypcie draw-graphs.sh. Każdy z wykresów obejmuje ostatnie 6 godzin pracy kotła.

O tym, co można wyczytać z wykresów, powiemy już następnym razem…

Ten wpis został opublikowany w kategorii Non classé i oznaczony tagami , , , , , , , , , . Dodaj zakładkę do bezpośredniego odnośnika.

2 odpowiedzi na Odczyt parametrów pracy kotła gazowego przez eBUS

  1. Paweł pisze:

    Witam. Swietny material. Jest szansa na priv? Widze ze ma pan doswiadczenie , mam kilka pytan.

  2. Krzysztof pisze:

    Witam.
    Jestem elektronikiem, a nie informatykiem i widzę, że temat zobrazowania danych z kotła po prostu mnie przerasta. Czy mógłbym prosić o kontakt mailowy, bo w oparciu o opublikowany wyżej materiał nie jestem w stanie dobrnąć do szczęśliwego końca?
    Pozdrawiam.
    Krzysztof

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.