Closed mariusz-schimke closed 1 year ago
Zaimplementowałem scraping stanu licznika, korzystając z parsera HTML i regexa. Wydaje się, że wszystko działa spoko, ale na razie testuję.
Starałem się podporządkować obecnej strukturze implementacji, ale nie mam pewności, czy dobrze ustawiłem parametry dla TYPE_CONSUMPTION_TOTAL i TYPE_GENERATION_TOTAL. Niby działa ;). Gdybyś mógł spojrzeć jako autor, będę Ci wdzięczny. Dzięki!
Druga sprawa to ustawianie self.params w sensor.py. Nie mogłem zrozumieć, do czego to jest wykorzystywane. Np. zastanawiam się, czy dałoby się przekazywać do HA datę odczytu, bo ją też odczytuję z odpowiedzi z Tauronu.
Dzięki!
Hej @mariusz-schimke!
Bardzo dziękuję za Twój wkład, niestety Tauron wczoraj wprowadził nową wersję systemu z całkowicie odświeżonymi interfejsem i API (#72).
Wrzuciłem na brancha dev
zmiany dostosowujące integrację, jeśli masz ochotę, to możesz spróbować dostosować ją do obsługi generacji oraz wielu liczników (ja nie mam takich danych na swoim koncie).
Hej @PiotrMachowski,
dzięki za informację. Postaram się na to spojrzeć w najbliższym czasie. Widzę, że już nie będzie trzeba uprawiać scrapingu HTML-a, bo zwracają ładnie dane z API, z podziałem na strefy. Jest to tablica wyników, ale widzę, że to dlatego, że to samo zapytanie jest po okres miesiąca i wtedy zwracają w tablicy dzień po dniu. Ciekawe tylko, skąd ta jednostka kWha – pierwszy raz widzę.
{
"success": true,
"data": [
{
"S1": "966",
"Date": "07.01.2023 23:59:59",
"S2": null,
"S3": null,
"C": 966,
"JM": "kWha"
}
]
}
Tak, API jest teraz bardziej cywilizowane ;) na branchu dev dodałem już obsługę tych wartości. Z tego co rozumiem, to kWha można traktować normalnie jak kWh, także bym się tym nie przejmował.
@PiotrMachowski, aa, czyli wszystko jest gotowe, nawet z bieżącymi odczytami, super! Właśnie to wrzuciłem do HA i działa fajnie.
Co do wielu liczników i produkcji energii, sam niestety nie mam do tego dostępu, ale może skorzystamy z uprzejmości @grest (https://github.com/PiotrMachowski/Home-Assistant-custom-components-Tauron-AMIplus/issues/54#issuecomment-1309887376)? :)
@grest, moglibyśmy Cię prosić o screenshot, jak wygląda u Ciebie interfejs i zwrotka z API w przeglądarce, gdy poprosisz o odczyt z konkretnego dnia? ;)
@PiotrMachowski, mam wrażenie, że pobiera mi odczyt sprzed dwóch dni. Spojrzałem na szybko na kod i tam pobierasz odczyty z dwóch dni za jednym zamachem, ale odczytujesz docelowo pierwszy z tablicy. Jeśli dobrze patrzę (nie weryfikuję tego dokładnie), tablica z API jest posortowana rosnąco, czyli raczej powinieneś wziąć ostatni element).
def update_readings(self, json_data, tariff):
reading = json_data["data"][0]
self._state = reading["C"]
partials = {s: reading[s] for s in ["S1", "S2", "S3"] if reading[s] is not None}
self.params = {"date": reading["Date"], **partials}
self.tariff = tariff
@mariusz-schimke dane z 2 dni powinny być pobierane tylko dla dziennych odczytów, stan licznika powinien być pobierany dla jednego dnia. Rzucę okiem jak to wygląda, pisałem to w nocy, może coś mi się namieszało
@PiotrMachowski , nie chcę się narzucać z rozwiązaniem – mam nadzieję, że nie masz mi za złe, ale zrobiłem od razu zmianę i PR.
Masz rację – pobierałeś go z jednego dnia. Na początku to źle zinterpretowałem. Zmieniłem kod tak, że pobiera od razu odczyty z dwóch dni, dzięki czemu nie będzie trzeba testować, czy odczyt z wczoraj już jest. Teraz po prostu w odpowiedzi dostaniemy 1-2 odczytów, gdzie ostatni będzie najnowszym dostępnym ;). Poprawiłem to i sprawdziłem – zdaje się działać.
@mariusz-schimke jest git, dzięki ;)
@mariusz-schimke dzięki za pomoc, zamknę teraz tego PRa, bo już jest nieaktualny
Adds support for reading the total consumption of the previous day.