Jako uzupełnienie poprzedniego wpisu dot. monitorowania inwertera SofarSolar z serii KTL-X, postanowiłem napisać także wersje dla osób które nie korzystają z Home Asistanta a chcą łatwo i szybko monitorować produkcje z fotowoltaiki.
Z pomocą przychodzi protokół Modbus serwowany przez oryginalny logger dołączony do zestawu z inwerterem LSW-3 / LSE-3.
Lista potrzebnych rzeczy
- RaspberryPI (min. 2G RAM) lub maszyna wirtualna na domowym serwerze / NAS-ie.
- Zewnętrzny dysk (opcjonalne) pod dane z InfluxDB gdzie będą zbierać się dane
- System operacyjny – Linux / poradnik opisuje z użyciem systemu Debian 11 na maszynie wirtualnej.
Zaczynamy od przygotowania systemu, pobieramy paczki:
apt install git python3-pip gnupg2 curl wget lsb-release sudo -y
Instalacja modułów python
pip3 install libscrc influxdb paho-mqtt
Kolejny etap to instalacja bazy Influxdb
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list apt update; apt install -y influxdb
Utworzenie bazy danych:
influx -execute 'create database sofar;'
Instalacja Grafany
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list apt update; apt install grafana -y
Start usług:
systemctl enable grafana-server.servicey systemctl enable influxdb.service systemctl start grafana-server.service systemctl start influxdb.service
Pozostaje zaciągnięcie kodu skryptu i jego konfiguracja
cd /opt git clone https://github.com/zdzichu6969/Sofar_LSW3.git cd /opt/Sofar_LSW3
Edycja pliku konfiguracyjnego:
nano config.cfg
Sekcja 1 Inverter:
[SofarInverter] inverter_ip=10.87.XX.XX inverter_port=8899 inverter_sn=21045XXXXX register_start1=0x0000 register_end1=0x0027 register_start2=0x0105 register_end2=0x0114 registerhw_start=0x2000 registerhw_end=0x200D lang=PL verbose=0
Sekcja 2 InfluxDB:
[InfluxDB] influxdb=1 influxdb_host=127.0.0.1 influxdb_port=8086 influxdb_user= influxdb_password= influxdb_dbname=sofar
Numer seryjny loggera znajdziesz tu:
http://IP_loggera -> logowanie -> Status -> Device information -> Device serial number
Domyślne dane logowania to: admin / admin
Po prawidłowej konfiguracji, można przystąpić do uruchomienia, przygotowałem prosty skrypt wysyłający dane tylko gdy inwerter odpowiada na ping, unikniemy wówczas w bazie niepotrzebnych danych gdy produkcja się skończy a sam inwerter przejdzie w stan uśpienia
nano ~/sofar_cron.sh
#!/bin/bash PING_CMD="ping -t 3 -c 1 10.87.XX.XX >> /dev/null 2&>1" pkill InverterData.py sleep 2 eval $PING_CMD if [[ $? -eq 0 ]]; then timeout 5 /usr/bin/python3 /opt/Sofar_LSW3/InverterData.py >> /dev/null 2&>1 sleep 2 pkill InverterData.py else echo -n "Inverter offline.." fi
Pamiętaj o podaniu właściwego (adresu logera) adresu IP tu: 10.87.XX.XX
I dodanie do crona
crontab -e
na końcu:
*/1 4-22 * * * sleep 30; /bin/bash ~/sofar_cron.sh>> /dev/null 2&>1
W efekcie, dane w bazie będą pojawiać się co minute.
Konfiguracja Grafany, przejdź do adresu: http://IP_RPI/MASZYNY:3000
Ikona ustawień -> Data Sources -> Add data source -> InfluxDB
Tak wygląda konfiguracja:
Klikamy “Save & test“. Jak przywita nas komunikat: Data source is working
Dodanie Dashboardu w grafanie:
Pobierz gotowy: https://pliki.linuxiarz.pl/07-2022/sofar.json
Klikamy w Dashboards -> Import i wskazujemy pobrany plik.