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:
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
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:
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
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ą:
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:
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)
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. 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”.
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!