_ projekt 06 · bazy danych i telemetria EV
Biling EV —
retencja SQLite
Precyzyjne rozliczanie ładowania BMW w taryfach Energa G12W
statystyki długoterminowe LTS, całka Riemanna i zero utraty danych po 10 dniach
01 · ARCHITEKTURA BAZY
Pułapka 10-dniowej
retencji SQLite
Home Assistant w instalacji produkcyjnej generuje potężny strumień zdarzeń.
Konfiguracja configuration.yaml z parametrem purge_keep_days: 10
oraz interwałem zapisu 15 sekund utrzymuje plik bazy SQLite w ryzach (ok. 1.1 GB).
Cena za stabilność jest wysoka: wszystkie surowe stany sensorów starsze niż 10 dni są bezpowrotnie kasowane. Jeśli moc ładowania (w watach lub kilowatach) zostanie zarejestrowana jako standardowy sensor, po dwóch tygodniach jakakolwiek retrospektywna analiza kosztów przestaje istnieć.
Rozwiązaniem jest wymuszenie zapisu do tabel Long-Term Statistics (LTS).
Mechanizm ten agreguje dane w interwałach godzinowych i nigdy nie podlega
procedurze purge. Warunek? Sensor musi posiadać parametr
state_class: total_increasing oraz klasę device_class: energy.
- Całka RiemannaPlatforma
integrationz metodą trapezów przelicza moc chwilową 3 faz (W) na narastający licznik energii (kWh) - Utility MeterWirtualne liczniki rozbijają energię na cykle dobowe, miesięczne i roczne, zachowując stan nawet po twardym resecie serwera
- Jedna prawdaWyjściowa encja
sensor.i4_breaker_koszt_realny_plnpodaje rzeczywisty koszt sesji w złotych z dokładnością do grosza
02 · LOGIKA ROZLICZENIOWA
Wielotaryfowy podział
kosztów sesji
- • Priorytet 1: Tuya Cloud breaker_phase_a/b/c_power (konwersja kW → W)
- • Priorytet 2: Telemetria pojazdu CarData (sensor.bmw_i4_moc_z_sieci)
- • Priorytet 3: Tuya Local na dedykowanym podliczniku garażowym (IP .171)
- • Stawka: 0.00 PLN/kWh (darmowa)
- • Warunek: moc PV pokrywa pobór breakera
- • Opcja kosztu alternatywnego RCEm w helperze
- • Stawka: 0.65 PLN/kWh brutto
- • Okna: 22:00–06:00, 13:00–15:00
- • Całe weekendy i święta w taniej strefie
- • Stawka: 1.30 PLN/kWh brutto
- • Godziny szczytowe w dni robocze
- • Blokada ładowania automatyzacją Homelab
- • Rejestracja w bazodanowych statystykach wieloletnich bez utraty danych
- • Wyliczanie sprawności sesji (energia przyjęta przez baterię vs energia pobrana z gniazda)
- • Automatyczny push na iPhone po odpięciu wtyczki typu 2 (Mennekes)
03 · IMPLEMENTACJA
Wyciąg z pakietu
YAML
Stawki taryfowe zostały wyniesione do encji input_number,
co pozwala korygować ceny prądu bez konieczności edytowania plików i restartowania serwera:
input_number:
i4_cena_dzien:
name: "i4 cena dzień G12W [PLN/kWh]"
min: 0
max: 5
step: 0.01
mode: box
i4_cena_noc:
name: "i4 cena noc/weekend G12W [PLN/kWh]"
min: 0
max: 5
step: 0.01
mode: box
i4_cena_pv:
name: "i4 cena PV [PLN/kWh]"
min: 0
max: 5
step: 0.01
mode: box
sensor:
- platform: integration
source: sensor.i4_moc_chwilowa_dzien
name: "i4 energia koszt dzien total"
unit_prefix: k
round: 2
method: left
- Sprawność ładowaniaDzięki zrównolegleniu danych z licznika i telemetrii BMW wyliczamy realną stratę na przetwornicy pokładowej (średnia sprawność: 89.2%)
- Zero wyciekówŻadne prywatne numery VIN ani dane lokalizacji nie są wiązane z encjami rozliczeniowymi
04 · DZIENNIK DZIAŁAŃ
Kalendarium
bilingu i bazy danych
Ewolucja architektury bilingowej i pokonywanie ograniczeń bazy SQLite w Home Assistant:
- 14.06.2026 · Diagnoza utraty danych po 10 dniach Wykrycie zjawiska czyszczenia historii przez standardowy proces recorder purge w SQLite. Zwykłe sensory mocy po 10 dniach traciły historię, uniemożliwiając rozliczenia miesięczne.
-
18.06.2026 · Wdrożenie całki Riemanna i tabel LTS
Przejście na
platform: integrationz narastającym licznikiem energii oraz przypisaniemstate_class: total_increasing. Trwały zapis w bazie bez limitu czasowego retencji. - 24.08.2026 · Zestrojenie taryf wielostrefowych Energa G12W Wprowadzenie podziału na 3 koszyki: autokonsumpcja PV (0.00 PLN), tania strefa nocna/weekendowa (0.65 PLN/kWh) oraz szczytowa dzienna (1.30 PLN/kWh).
- 01.09.2026 · Zabezpieczenie sprzętowe Veto 1.0 kW / 0.5 kW Eliminacja wyścigu zdarzeń pomiędzy opóźnionym statusem BMW CarData API a rzeczywistym ładowaniem. Sprzętowy licznik prądu stał się źródłem prawdy z prawem weta wobec fałszywych sygnałów zakończenia.
-
24.09.2026 · Wyliczanie kosztu sesji dla iOS Live Activity
Dodanie markerów całek na starcie i końcu ładowania (
bmw_i4_koszty.yaml). Wyliczanie rzeczywistego kosztu sesji co do grosza i przesyłanie na zablokowany ekran iPhone'a.