Witam,
posiadam falownik bbeco, który podobno ma "bebechy" sofara.
Po zalogowaniu się na adres IP falownika, można podejrzeć moc chwilową (webdata_now_p) oraz dzisiejszą (webdata_today_e)
Zmodyfikowałem skrypt, ale niestety wyświetla tylko 0. Czy ktoś może nakierować mnie co jeszcze muszę zmienić? Ewentualnie podrzucić jakieś materiały, które nauczą mnie ekstrakcji danych w skryptach shell:)
Załączam mój skrypt:
#!/usr/bin/env bash
username=admin
password=admin #Your admin password if different than default
inverter=192.168.2.108 # Change to your inverter's IP/hostname
curlOpts="-s -o - --user ${username}:${password}"
poll(){
curl ${curlOpts} http://${inverter}/index_cn.html.html 2>&1 |\ #/status.html
egrep '^var webdata_now_p' |\ #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 "http8082/json.htm?type=command¶m=udevice&idx=45&nvalue=0&svalue=$output" #YOUR_$
else
echo "FAIL"
fi
EDIT:
coś namodziłem w pythonie i na innych stronach działa, więc w następnym tygodniu jak będę miał czas to spróbuję już pobrać dane bezpośrednio w falownika:
#!/usr/bin/env python
from bs4 import BeautifulSoup
import requests
url='http://192.168.2.108/index_cn.html'
page = requests.get(url).text
soup = BeautifulSoup(page, "html.parser")
klasy_div=soup.findAll('div', class_='lab_r2')
print(klasy_div[7].text)
Moim zdaniem podstawowy powód to
curl -s --connect-timeout 2 --max-time 5 "http8082/json.htm?type=command¶m=udevice&idx=45&nvalue=0&svalue=$output" #YOUR_$
Tu powinien być pełny json czyli IP domoticz z portem
Witam ponownie,
próbowałem jeszcze wyskrobać tę wartość za pomocą pythona i biblioteki BeautifulSoup.
Niestety kod źródłowy strony i to co udaje mi się pobrać za pomocą pythona znacznie sięróżni od siebie. Według kodu źródłowego z przeglądarki wartość mocy aktualnej jest zakodowana w elemencie class "lab_r2". Niestety strona, którą importuję za pomocą pythona jest "zakodowana" i nie posiada takiej zmiennej. Wydaje mi się, że problem leży po stronie pythona, który nie loguje usera i dlatego dostaje inną treść.
Sposób logowania jest zawarty w adresie strony tj. url='http://admin:admin@192.168.18.110/index_cn.html'.
Możliwe, że występuje też inny sposób na zalogowanie się, który by pomógłw zaistniałej sytuacji.
Zamieszczam kod źródłowy python oraz printscreeny.
#!/usr/bin/env python
from bs4 import BeautifulSoup
import requests
import re
DOMOTICZ_IP = 'http://192.168.18.101'
DEVICE_IDX_total = '45'
DEVICE_IDX_today = '46'
DEVICE_IDX_power = '47'
#url='http://192.168.18.110/index_cn.html'
url='http://admin:admin@192.168.18.110/index_cn.html'
page = requests.get(url).text
soup = BeautifulSoup(page, "html.parser")
klasy_div=soup.findAll('div', class_='lab_r2')
print(klasy_div)
#print(klasy_div[0].text)
#total = klasy_div[6].text
#today = klasy_div[7].text
#power = klasy_div[8].text
#requests.get(DOMOTICZ_IP + "/json.htm?type=command¶m=udevice&idx=" + DEVICE_IDX_total + "&svalue=" + total)
#requests.get(DOMOTICZ_IP + "/json.htm?type=command¶m=udevice&idx=" + DEVICE_IDX_today + "&svalue=" + today)
#requests.get(DOMOTICZ_IP + "/json.htm?type=command¶m=udevice&idx=" + DEVICE_IDX_power + "&svalue=" + power)
Tu masz inna możliwość odczytania danych z falownika tyle tylko że z sofara, a że bbeco to przemalowany sofar to może zadziałać.
https://github.com/pawelka/sofarsolar_esp_rs485_logger
@lukas121 dzięki za linka.
Akurat mam falownik obok rpi i konwenter USB RS 485 to spróbuję bezpośrednio się połączyć:)
Muszę tylko iść sprawdzić czy mój falownik ma dodatkowe wyjścia rj do komunikacji bus.






