Witam wszystkich,
Jakiś czas temu zainstalowałem u siebie instalację fotowoltaiczną i niestety nie miałem wielkiego wyboru w zakresie inwertera. Finalnie skończyło się na Afore, który nie pozwala w łatwy sposób zintegrowac go z Domoticzem. Finalnie udało mi się przerobić znaleziony gdzieś w sieci skrypt wykorzystjący wbudowane w shell narzędzia do analizy tekstu, tak aby pobierał z lokalnej strony www inwertera aktulną moc produkcji i przesyłał ją do Domoticza. Działa to już od jakiegoś czasu bez problemu, więc chętnie podzielę się tym rozwiązaniem. Mnie osobiście zajęło to trochę czasu, a posiadaczy tego inwertera jest pewnie w Polsce więcej 🙂
Skrypt jest napisany w shellu (Raspberry PI)
W załączonym skrypcie trzeba wprowadzić swoje adresy w sieci lokalnej: inwertera, domoticza, hasło do inwertera jeśli inne niż admin oraz numer czujnika w domoticzu, który ma być aktualizowany.
Skrypt najlepiej umieścić w domyślnym katalogu:
/home/pi/domoticz/scripts
Aby skrypt wykonywał się automatycznie (co 30 sekund), wpisujemy:
crontab -e
i dodajemy ścieżkę:
* * * * * /bin/bash -l -c "/home/pi/domoticz/scripts/Afore.sh; sleep 30 ; /home/pi/domoticz/scripts/Afore.sh"
I to tyle, powinno działać 🙂
Skrypt można jeszcze rozszerzyć o pobieranie pozostałych danych dostępnych na stronie, ale według mnie nie ma to większego sensu. Osobiście używam zliczanie produkcji dziennej w domoticzu jako "computed". Działa to bardzo dobrze (różnice w stosunku do danych z inwertera są kosmetyczne), a jak brałem z urządzenia to zdarzało się że domoticz dodawał produkcję z dnia poprzeniego przy zanikach zasilania.
Mam nadzięję że komuś się przyda.
Edit: Nie udało misię dołączyć pliku ze skryptem, więc wklejam:
#!/usr/bin/env bash
username=admin
password=admin #Your admin password if different than default
inverter=192.168.1.20 # Change to your inverter's IP/hostname
curlOpts="-s -o - --user ${username}:${password}"
poll(){
curl ${curlOpts} http://${inverter}/status.html 2>&1 |\
egrep '^var webdata_(now)' |\
sed 's/var webdata_//' |\
sed 's/[^0-9]//g' |\
sed 's/\r$//g'
}
output=$(poll)
if [[ ! -z "${output}" ]]; then
echo -e "${output}"
curl -s --connect-timeout 2 --max-time 5 "http://IP_OF_Domoticz:8080/json.htm?type=command¶m=udevice&idx=YOUR_IDX&nvalue=0&svalue=$output" #YOUR_IDX is your device number in Domoticz; IP_OF_Domoticz is your Domoticz address, change 8080 port if different
else
echo "FAIL"
fi
Plik należy nazwać Afore.sh, aby działał wpis do crona.
Czy moglbys podpowiedziec jak ustawic skad skrypt ma pobrac liczbe (miejsce na stronie www)?
Co trzeba zmienic w skrypcie aby pobral odpowiednie dane?