Pobieranie, integracja i prezentacja danych z eLicznik Tauron – elektrownia fotowoltaiczna z własnymi wykresami

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).
UPDATE: kwiecień 2020 – Tauron zmienił format danych – teraz jest to CSV. Proszę zaktualizować (Github – clone)

Nas interesuje natomiast sytuacja w której przechodzimy na umowę prosumencką – a więc zaczynamy generować własną energię elektryczną – najczęściej z systemu fotowoltaicznego, 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: fotowolaniczna) podłączona do sieci energetycznej, aktywna umowa prosumencka z Tauronem
  • opcjonalnie – możliwość pobierania danych online z własnej elektrowni

Software:

  • Linux: standardowy Raspberry Pi OS (wcześniej Raspbian) – 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:

tauron

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/

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 „Energia oddana do sieci”, następnie „Pobierz” i wybieramy zakres z menu obejmujący cały czas który nas interesuje – w ten sposób za pierwszym razem wprowadzimy do bazy danych wszystkie dane historyczne. Pobrany plik zapisujemy – domyślna nazwa to „Dane.xls”.

Jego format powinien być identyczny jak z załączonym zdjęciem, łącznie ze sklejeniem pierwszej kolumny godzinowej z datą:
dziwny_xls
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:

/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

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:
wynik_importu

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:

SELECT last("value") FROM "E5K_pobrana" WHERE $timeFilter GROUP BY time(1h) fill(none)

w pole B:

SELECT last("value") FROM "E5K_oddana" WHERE $timeFilter GROUP BY time(1h) fill(none)

wykres_w_grafanie

Efekt wykresu schodkowego, który odpowiada prezentowanym wartościom osiągamy w następujący sposób:
staircase
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. Aktualnie 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 wyprodukowanej – zmienić w skrypcie słowa „1 hour ago” na „2 hours ago”.

Automatyzacja procesu

Głównym celem jest automatyczne pobieranie i prezentowanie danych. W tym celu należy użyć dostarczonego skryptu:

./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żliwoś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 – automatyzujemy! Uruchamiamy jeszcze raz skrypt

./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:

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:

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:

crontab -e

a następnie dopisujemy na końcu:

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!

Previous Post Next Post


Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License (c) 2014-2024 Łukasz C. Jokiel, [CC BY-NC-SA 4.0 DEED](https://creativecommons.org/licenses/by-nc-sa/4.0/)