UPDATE: kwiecień 2020 – Tauron zmienił format danych – teraz jest to CSV. Proszę zaktualizować (Github – clone)
Wstęp
Tauron Polska Energia jako jeden z kilku operatorów – udostępnia swoim Klientom zdalne odczyty odebranej energii z nowo instalowanych liczników energii elektrycznej z modułem bezprzewodowym – najczęściej oznaczane jako AMI, Smart lub 3G. Obecnie w pierwszej połowie 2019 z takich liczników mogą korzystać mieszkańcy Wrocławia oraz okolic (program AMI Plus).
Nas interesuje natomiast sytuacja w której przechodzimy na umowę prosumencką – a więc zaczynamy generować własną energię elektryczną – najczęściej z systemu fotowoltanicznego, chociaż . Tauron w czasie miesiąca od zgłoszenia prywatnej elektrowni prosumenckiej wymienia licznik na smart, a prosument otrzymuje dostęp do interesujących danych:
- zużycie energii elektrycznej z rozdzielczością godzinową
- generację energii elektrycznej z rozdzielczością godzinową
Pozostaje więc automatycznie pobierać te dane i zestawić je z danymi z własnej elektrowni. Po krótkiej wymianie pytań – Tauron odpowiedział, że nie udostępnia specjalnego API, ale można pobrać dane – uaktualniane codzinnie – w formacie pliku Microsoft Excel. Pobierzmy je więc i zintegrujmy z własnymi danymi
Czego będziemy potrzebować?
Hardware:
- Raspberry Pi (wersja 2 lub nowsza) lub inny serwer/komputer/mini komputer – SBC – z minimalnie 1GB RAM, dyskiem lub kartą flash 8GB
- własna elektrownia (np: fotowoltaniczna) podłączona do sieci energetycznej, aktywna umowa prosumencka z Tauronem
- opcjonalnie – możliwość pobierania danych online z własnej elektrowni
Software:
- Linux: standardowy raspbian (wersja ligth wystraczy), po angielsku – dla Raspberry Pi, lub pochodna Debiana na innych komputerach
- python, Firefox, instalowane jako pakiety systemu operacyjnego
- Uwaga – mimo że będziemy używać przeglądaki – nie potrzebujemy podłączać do RPi myszki, klawiatury czy monitora. Będziemy działać w wirtualnym ekranie
- Zainstalowana na Raspberry Pi – Grafana oraz InfluxDB – znajdziesz w tym przepisie
- aktywne konto na https://elicznik.tauron-dystrybucja.pl/
- opcjonalnie: oprogramowanie https://www.tightvnc.com/ – pozwalające na zdalną kontrolę komputera w trybie graficznym/GUI
Realizacja
Ponieważ interesowały mnie głównie dane – a nie dyskusje nad dostępem do danych w sposób online – postanowiłem, że po prostu złożę tzw. potworka – minimalnym kosztem czasu i nakładów – ale automatycznie i codziennie będę aktualizował wykresy na podstawie danych z elektrowni oraz Tauronu. Po niezbyt głębokiej analizie postanowiłem przyjąć następujący scenariusz:
- skrypt który pobiera dane ze strony Tauronu, zaznaczając podobnie jak człowiek pracujący z przeglądarką – interesujące mnie dane. Potrzebują danych z ostatniego dnia, które zawierają odebraną energię oraz oddaną energię do sieci. Dostanę z całego miesiąca i będę je nadpisywał, ale to koszt prostoty
- skrypt który przetwarza format XLS i umieszcza go w bazie InfluxDB, z której korzysta Grafana do generowania następującego wykresu:

Efekt można osiągnąć na wiele sposobów – można wykorzystać pracę jaką wykonał Piotr Machowski – zachęcam do sprawdzenia w jaki sposób pobiera dane dla stref G11/G12.
Po pierwsze – instalujemy InfluxDB i Grafanę – o ile oczywiście chcemy od razu wizualizować te dane: https://blog.jokielowie.com/2016/11/domoticz-cz-5-grafana-influxdb-telegraf-latwe-i-piekne-wykresy/
Następnie logujemy się do systemu – raspbiana, użytkownik pi, a następnie wprowadzamy serię komend:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
sudo su - apt update apt upgrade apt install git python-xlrd apt install python3-pip pip3 install python3-xlib apt-get install libjpeg-dev zlib1g-dev pip3 install pyautogui apt install scrot python3-tk python3-dev apt install firefox-esr x11vnc xvfb fluxbox exit touch /home/pi/.Xauthority git clone https://github.com/luciust/TauronPVtoGrafana cd ~/TauronPVtoGrafana git clone https://github.com/hempalex/xls2csv |
Czas na pierwsze uruchomienie i wproadzenie danych. W następnej części zajmiemy się automatyzacją całego procesu
Po instalacji przenosimy się na klasyczny komputer, którego używany codziennie – logujemy się na nasze konto w https://elicznik.tauron-dystrybucja.pl/ – zaznaczamy pole „
Jego format powinien być identyczny jak z załączonym zdjęciem, łącznie ze sklejeniem pierwszej kolumny godzinowej z datą:

Następnie, używając np: Filezilli (użytkownik pi, nasze hasło – adres IP Raspberry, port 22, łączymy się z Raspberry Pi i umieszczamy plik Dane.xsl w katalogu:
1 |
/home/pi/Downloads |
Pora na wprowadzenie do bazy – danych od Tauronu. W tym celu należy podać adres IP oraz nazwę bazy, opcjonalnie użytkownika/hasło lub klucz do zainstalowanej bazy:
edytujemy plik: convert_and_upload_to_influxdb.bash
Uruchamimy:
1 2 |
cd ~/TauronPVtoGrafana ./convert_and_upload_to_influxdb.bash |
W zależności od użytych rozwiazań – oraz ilości danych po kilku minutach powinniśmy otrzymać na ekranie:

Pora na wizualizację – w Grafanie tworzymy nowy „graph”, który jako źródło ma wybraną przez nas bazę danych. Następnie w zakładce Metrics wybieramy z prawej opcję „Toggle Edit Mode” i wklejamy w pole A:
1 |
SELECT last("value") FROM "E5K_pobrana" WHERE $timeFilter GROUP BY time(1h) fill(none) |
w pole B:
1 |
SELECT last("value") FROM "E5K_oddana" WHERE $timeFilter GROUP BY time(1h) fill(none) |
Efekt wykresu schodkowego, który odpowiada prezentowanym wartościom osiągamy w następujący sposób:

Uwaga – w zależności od ustawień zegara, oraz terminu zmiany czasu na letni zimowy – Tauron może podawać dane z różnicą np: godziny lub dwóch. Akutalnie od maja 2019 jest to przesunięcie od dwie godzony, wcześniej było o godzinę. Należy zatem – jeśli wykres nie pokrywa się – oddana energia wobec wyporodukowanej – zmienić w skrypcie słowa „1 hour ago” na „2 hours ago”.
Auomatyzacja procesu
Głownym celem jest automatyczne pobieranie i prezentowanie danych. W tym celu należy użyć dostarczonego skryptu:
1 |
./TauronPVtoGrafana/cli_get_tauron_data.bash |
Po jego uruchomieniu dostaniemy informację, że możemy się połączyć przez protokół VNC z uruchomionym środowiskiem GUI w którym działa Firefox. Używamy tutaj jednej z możlowości systemu X dla Linuksa, pozwalającego na stworzenie wirtualnego ekranu w którym działać moga programy tak jak w trybie graficznym Raspberry Pi. Uruchamiamy zatem klienta VCN (może to być np: TightVNC) i łaczymy się z adresem naszego Raspberry Pi, hasła nie potrzeba.
Powinniśmy otrzymać ekran logowania elicznika Tauronu w Firefoksie. Logujemy się i KONIECZNIE zapamiętujemy dane do logowania (email i hasło) w Firefoksie. Sprawdzamy czy dziala pobieranie danych – zapisujemy domyśnie w katalogu Downloads (jeśli zmieniłeś język na polski – będziesz musiał zmienić skrypty na Pobrane). Opuszczamy firefoksa, możemy zamknąć połączenie.
Teraz – autoamtyzujemy! Uruchamiamy jeszcze raz skrypt
1 |
./TauronPVtoGrafana/cli_get_tauron_data.bash |
łączymy się przez klienta VNC jak poprzednio, ale – wracamy do konsoli z której uruchomiliśmy skrypt i wpisujemy:
1 2 |
export DISPLAY=:1 ./tauron-cli-browser-job.py3 |
Po 4 sekundach kursor myszy powinien się zacząć poruszać, klikać, aż do pobrania danych i automatycznego zamknięcia Firefoksa – potrwa to trochę, ponieważ zostawiamy sobie czas na załadowanie się strony. Jeśli coś pójdzie nie tak – poniewaz zmieni się strona WWW elicznika – musimy w pliku:
1 |
tauron-cli-browser-job.py3 |
wprowadzić zmiany – przesunąć kursor, dodać trochę opóźnienia. To oczywiście łatwo się pisze, więc – nagrałem krótki film który pokazuje całą operację:
Działa? Zatem ostatni krok – uruchomienie automatu, który będzie sam w odpowiednim czasie pobierał dane i wrzucał je do InfluxDB:
1 |
crontab -e |
a następnie dopisujemy na końcu:
1 2 3 4 |
SHELL=/bin/bash PATH=~/bin:/usr/bin/:/bin 50 7 * * * /home/pi/TauronPVtoGrafana/get_tauron_data.bash > /tmp/log-tauron-get-data-cron.txt 2>&1 |
co pozwoli uruchomić się automatycznie o 7:50 codziennie, a to co skrypt zarejestrował podczas pracy – czyli log – znajdziemy w katalogu /tmp
To wszystko!