Pomiar co minutę
Kolektor pyta każdy czujnik Matter raz na minutę i zapisuje odczyt z nazwą urządzenia, endpointem i jednostką. Nazwa siedzi w osobnej tabeli, więc jej zmiana obejmuje całą historię — czujnik nie rozdwaja się na wykresach.
jakub@quanetra:~/projects$ ssh pi@homestats
Raspberry Pi · Matter · SQLite
Kolektor odpytuje czujniki Matter co minutę i dopisuje pomiary do SQLite na Raspberry Pi. Ten sam komputer wystawia w sieci domowej dziesięć widoków: od odpowiedzi „co dzieje się teraz”, przez przebiegi, rytm i zależności, po koszt energii, zdarzenia, raport i surowe wiersze. Żadnej chmury, konta ani abonamentu.
Kolorowa ilustracja tekstowa: cztery przebiegi pomiarów z salonu, pod nimi wpis o wietrzeniu i licznik zapytań do chmury równy zeru.
// features
Kolektor pyta każdy czujnik Matter raz na minutę i zapisuje odczyt z nazwą urządzenia, endpointem i jednostką. Nazwa siedzi w osobnej tabeli, więc jej zmiana obejmuje całą historię — czujnik nie rozdwaja się na wykresach.
Z temperatury i wilgotności biorą się punkt rosy, wilgotność bezwzględna i temperatura odczuwalna — bez nowego czujnika i dla całej historii wstecz. Z mocy gniazdka: zużycie, koszt po Twojej taryfie, pobór jałowy i cykl pracy.
6 h, 24 h, 7 dni, 30 dni albo dowolny przedział. Jeden pasek steruje wszystkimi widokami danych: porównaniem z poprzednim okresem, profilem z wcześniejszych siedmiu dni, agregacją i eksportem CSV.
Interfejs jest podzielony według pytań: Teraz, Przebiegi, Dom, Rytm, Porównania, Energia, Zdarzenia i Raport. Każdy panel ma numer i własne miejsce w bocznej szynie, a skrót pod filtrami od razu podaje najważniejsze wnioski dla bieżącej strony.
Gdy najstarszy czujnik milczy dłużej niż próg z Konfiguracji, wchodzi czerwony baner na przyciemnionym tle: strona przestaje udawać, że pokazuje stan obecny. Ten sam baner, w bursztynie, mówi o błędzie pobierania.
Z nocnego stygnięcia wychodzi jedna liczba: jak dom trzyma ciepło. Liczona wobec zmierzonej różnicy temperatur, jeśli zaznaczysz, który czujnik stoi na zewnątrz — Matter tego nie zgłasza, a z samych pomiarów rozstrzygnąć się nie da.
// screenshots
Zrzuty pochodzą z działającego serwera, nie z makiety. Baza demonstracyjna zawiera cztery urządzenia, dwadzieścia dwie serie i dość historii, by pokazać profile, anomalie, sezon, koszt energii oraz kontrolowane przerwy w danych — bez ani jednego odczytu z czyjegoś mieszkania.












Nowa galeria prowadzi przez dwanaście kadrów: widok startowy, stan na żywo, karty urządzeń, pięć stron analitycznych, zdarzenia, rytm, kalendarz oraz dwa układy responsywne.

// right_now
Pulpit opisuje okno, a dom dzieje się teraz — to dwie różne rzeczy i sekcja „Na żywo” jest dla tej drugiej. Każda seria dostaje zdanie: ile wynosi, w którą stronę idzie i za ile minut przy obecnym tempie dojdzie do progu. Puls mówi, ile czujników odpowiada, a gdy zamilkną wszystkie naraz — mówi wprost, że to Raspberry Pi albo sieć, a nie czujniki.
// analysis
Linia mówi, co działo się po kolei. Te panele pytają o czas ponad granicą, wspólny ruch, pleśń, rachunek, wietrzenie i fizykę wilgotnego powietrza.

Ile czasu wartość leżała ponad granicą — a nie jak często się pojawiała. To dwie różne rzeczy i tylko pierwsza odpowiada na „ile godzin w tym miesiącu CO₂ było ponad tysiąc”.

Wszystkie pary pomiarów naraz, czujnik po czujniku. Stąd widać, że wilgotność w sypialni chodzi za temperaturą, a pył za oknem nie ma z żadnym z nich wiele wspólnego.

Wilgotność liczona przy najzimniejszej powierzchni w domu, a nie w środku pokoju: grzybnia rośnie już przy 80%, czyli długo zanim na ścianie pojawi się woda, o której mówi wykroplenie.

Kilowatogodziny, koszt po Twojej taryfie, pobór jałowy i cykl pracy urządzenia — z rozbiciem rachunku na to, co poszło na samo stanie w gnieździe, a co na pracę.

Szybki, utrzymujący się spadek CO₂ zostaje oznaczony jako prawdopodobne wietrzenie. Panel podaje czas, skuteczność i koszt cieplny, ale zachowuje uczciwe „prawdopodobne” — ten sam ślad może zostawić przeciąg albo wyjście domowników.

Punkty pomiarowe na wykresie psychrometrycznym, linie stałego punktu rosy i prostokąt komfortu. Widać, czy powietrze naprawdę nabrało wody, czy tylko zrobiło się chłodniejsze.
Poza nimi: gradienty między czujnikami, zmierzona krotność wymiany powietrza z zaniku CO₂, rozkłady dzień po dniu, pudełka dni tygodnia, nakładka kolejnych dób, tempo nagrzewania domu i różnica dwóch czujników w czasie.

// event_channel
Obok odchylenia od profilu dobowego i wyjścia poza próg stoją: trwała zmiana poziomu, dryf kalibracji między dwoma czujnikami, kombinacja wartości z osobna normalnych, front atmosferyczny z ciśnienia, otwarte okno odczytane bez czujnika CO₂ i obecność domowników oszacowana z tempa jego narastania. Zdarzenia kilku czujników mające wspólną chwilę zwijają się w incydent, a te sięgające końca okna stoją osobno, pod nagłówkiem „dzieje się teraz”, z licznikiem minut zamiast godziny zakończenia.
// report
Raport streszcza okno prozą, z jedną regułą bez wyjątków: żadnego zdania bez liczby. Obok niego stoi jakość danych — kompletność, przerwy, rozdzielczość i zamarznięcia wszystkich serii w jednej tabeli, uporządkowane od najsłabszej. Bo to ona rozstrzyga, ile z opisywanego okresu w ogóle zmierzono.


// beside_the_dashboard

Dziewięć metryk na osobnych wykresach, z warstwami min–maks, poprzednim okresem i profilem z siedmiu dni. Każdy wykres można przybliżyć i otworzyć na pełnym ekranie.

Panele wynikające z fizyki budynku: gradienty, wymiana powietrza, pleśń, wietrzenie, stała czasowa oraz wspólny obraz temperatury i wilgotności.

Mapa godzin, profil dobowy, dni tygodnia, nakładka okresów, rozkłady dzień po dniu i kalendarz roczny pokazują, co się powtarza, a co było jednorazowe.

Siedem paneli od tabeli i histogramu po korelację i różnicę dwóch czujników. To miejsce do sprawdzania hipotez, nie tylko oglądania przebiegu.

Klimat mieszkania, próg alarmu o ciszy, miejsce czujników, progi komfortu per czujnik i kubatury pomieszczeń. Wszystko zapisywane w bazie na Raspberry Pi, więc telefon i laptop czytają te same ustawienia.

Tabela surowych odczytów prosto z bazy, ze stronicowaniem i sortowaniem po stronie SQLite. Do tego eksport bieżącego okna do CSV, jednym przyciskiem z paska nad pulpitem.
Jedno ustawienie zmienia pięć rzeczy naraz: czujnik oznaczony jako zewnętrzny przestaje być oceniany progami pokoju, wypada z kafelka „warunki w normie”, przestaje udawać powierzchnię do wykroplenia i nie zasypuje kanału zdarzeniami o pogodzie — za to wnosi stałą czasową budynku i podpowiedź, kiedy otworzyć okno.
// privacy
$ homestats --network-check
✓ konta i logowanie do usługi 0
✓ pomiary wysyłane do chmury 0
✓ telemetria i analityka 0
✓ abonament za własne dane 0
status: wszystko zostaje na Raspberry Pi
Pomiary idą do homestats.sqlite w katalogu projektu. Kopia zapasowa to skopiowanie jednego pliku, a retencja surowych odczytów i agregatu godzinowego ustawia się osobno — godzina waży sześćdziesiąt razy mniej niż minuta, więc historia może zostać na lata po tym, jak minuty znikną.
Kto widzi port serwera w sieci domowej, ten widzi wszystkie pomiary. To świadoma decyzja dla instalacji w mieszkaniu i zarazem powód, dla którego tego portu nie wystawia się do internetu.
Jeden skrypt stawia usługi systemd, buduje serwer i sprawdza /api/health. Gdy aktualizacja padnie w połowie, przywraca usługi, które działały przed jej uruchomieniem — dom nie zostaje bez monitoringu dlatego, że coś nie poszło z instalacją.
jakub@quanetra:~/projects/homestats$ status