Budując system automatyki domowej, prędzej czy później, przychodzi refleksja – a co ze zużyciem prądu? Wiadomo, że komfort i bezpieczeństwo kosztuje, więc trzeba się z tym w jakimś stopniu liczyć. Natomiast należy szukać też oszczędności przez optymalizacje i tutaj inteligentny dom może pomóc. Choć może chodzi bardziej o świadomość konieczności oszczędzania. Żeby jednak wiedzieć, że chce się oszczędzić, najpierw trzeba zużycie prądu mierzyć. Przyda się dokładność nieco większa niż jeden rachunek za prąd na dwa miesiące.
Gdzie mierzyć zużycie prądu? Najlepiej użyć licznika, który już to robi. Oczywistą zaletą takiego rozwiązania jest spójność między tym co odczytamy, a rachunkami, które przychodzą do domu lub zasileniami w systemie pre-paid, jak w moim przypadku. Równie oczywistą wadą jest to, że jeżeli licznik przekłamuje odczyty, to nie będziemy tego wiedzieć. Tak się składa, że większość współczesnych liczników prądu posiada diodę led, błyskającą w rytm zużycia energii, co jest dla nas idealnym interfejsem do odczytu zużycia prąd. A ilość zużytego prądu w jednostce czasu to nic innego jak pobierana moc. Będziemy mieli więc przynajmniej dwie przydatne wartości – wykorzystywaną moc i koszt zużywanej energii.
Odczyt zużycia prądu z licznika
W pierwszym podejściu do temu postanowiłem zbudować własne urządzenie – ESP8266 z podłączonym fotorezystorem, zasilany przez powerbank, ponieważ nie mam przy liczniku gniazdka do podłączenia zasilacza. Projekt wykonany w godzinę, może dwie, sprawdził się bardzo dobrze do testowania zużycia przez pierwszy dzień. Bardzo dobre doraźne rozwiązanie, jednak na dłuższą metę zupełnie niepraktyczne. Mimo, że zwykle stawiam na doskonalenie swoich projektów zamiast użycia gotowych produktów, które często są niewspółmiernie drogie do możliwości, tym razem zainteresowałem się gotowym rozwiązaniem.
iNode Enery Meter, to miniaturowe urządzenie o bardzo przystępnej cenie a jednocześnie niezwykle praktyczne. Jego sercem jest okrągła płytka, zasilana baterią CR2032, zamknięta w przezroczystej obudowie. Na liczniku montuje się je z użyciem, dołączonej do zestawu „gumy do żucia”. Serio, materiał umożliwiający przyklejenie urządzenia do licznika kojarzy się z gumą do żucia, choć oczywiście nią nie jest. Rozwiązanie bardzo proste, ale skuteczne. Przed przyklejeniem należy odnaleźć fotorezystor i przyłożyć iNode do licznika, dla sprawdzenia czy błyski diody licznika są odczytywane. Nie jest to czynność specjalnie trudna i tylko za pierwszym razem może chwilę zająć.
Ze światem zewnętrznym iNode komunikuje się z użyciem technologii Bluetooth Low Energy (BLE, część Bluetooth 4.0), co zapewnia długie działanie mimo niewielkiej baterii. Po przyklejeniu urządzenia iNode na liczniku, wbudowany fotorezystor zlicza błyski diody, a samo urządzenie udostępnia wartość całkowitego licznika zużytej energii, jak i informację o liczbie błysków w ostatniej minucie, co przekłada się na średnią moc w ciągu 60 sekund. Zebrane wartości wysyłane są cyklicznie przez ramkę rozgłoszeniową, którą spokojnie możemy odczytać czy to dzięki Raspberry Pi czy przez ESP32.
Konfiguracja
W pierwszej kolejności należy jednak urządzenie skonfigurować. Można do tego użyć komputera lub telefonu z Androidem, o ile obsługują BT 4.0. Oczywiście wygodniejszy jest telefon, a przynajmniej powinien być. Z jakiegoś powodu aplikacje iNode nie są dostępne w sklepie Play, a dodatkowo nie są one dobrze dopracowane. Przynajmniej iNode Setup, z której korzystałem. Przede wszystkim wejście do konfiguracji urządzenia i zapis parametrów wymagał wielokrotnych prób, niezależnie od użytego telefonu. Nie jest to natomiast bardzo duża wada, bo konfigurację wykonujemy raz, a potem problemów już nie ma. Przynajmniej w przypadku użycia z Raspberry Pi.
Narzekać na pewno nie można na opcje konfiguracyjne, wśród których najbardziej przydatne mogą być moc i częstotliwość nadawania sygnałów. Szczególnie ten pierwszy okazał się kluczowy w moim przypadku. Licznik mam zamknięty w metalowej szafce, a Raspberry Pi znajduje się piętro niżej w metalowej szafie rack. Niestety nawet przy pełnej mocy nadawania, sygnał nie jest poprawnie odbierany przez Raspberry Pi, jeżeli drzwi do obu szafek są zamknięte. Nie ma się co jednak za bardzo dziwić, metalowe obudowy są świetnym ekranem, który trudno przeniknąć falom radiowym. Ja na razie, jako obejście problemu, zostawiam uchylone drzwi od szafy z Raspberry. Docelowo pewnie wykorzystam ESP32 jako bramkę BLE-WiFi. Zresztą, żeby być sprawiedliwym, trzeba zaznaczyć, że oferta sklepu iNode.pl jest szeroka i obejmuje m.in. urządzenie zbierające informacje BLE i udostępniająca je przez TCP z użyciem złącza Ethernet. Mogłoby ono być użyte do rozwiązania mojego problemu z zasięgiem. Istotnym parametrem do ustawienia jest też liczba błysków emitowanych przez licznik energii elektrycznej na jedną kWh. To dzięki temu parametrowi iNode potrafi podać wynik także w tych jednostkach, a nie tylko w liczbie błysków.
Pomiar zużycia energii przez skrypt
To co mi się spodobało najbardziej, gdy trafiłem na ofertę iNode i chyba nawet spowodowało, że zdecydowałem się kupić urządzenie, to udostępniony skrypt bash dla Raspberry, który pozwala odbierać dane z licznika energii. Niby drobiazg i taki skrypt można napisać samemu, natomiast kupując urządzenie z myślą o integracji z istniejącym systemem automatyki domowej, często nie ma pewności czy konfiguracja będzie prosta lub wogóle możliwa. Tu natomiast od początku było jasne, że będzie. Co więcej, udostępniona jest też dokumentacja opisująca format ramki BLE, więc implementacja z użyciem innego urządzenia niż Raspberry też będzie prosta.
Skrypt wymaga instalacji pakietów bluez-hcidump (do komunikacji z bluetooth) i bc (do obliczeń). W zamian pozwala na bezproblemowe wysyłanie danych do Domoticza, Emon CMS czy dowolnego sysloga. To już właściwie wystarczyłoby do dowolnej integracji, bo zawsze można ją przeprowadzić na poziomie sysloga. Nic nie stoi jednak na przeszkodzie, żeby skrypt lekko zmodyfikować, żeby zapisywał dane w dwóch dodatkowych miejscach. U mnie jednym z nich jest baza RRD, którą szeroko wykorzystuję np. do zbierania informacji o temperaturach czy parametrach pracy kotła. Drugim jest log tekstowy, w którym co godzinę zapisuję informacje o stanie licznika. Dzięki temu mam po pierwsze wykresy użycia mocy w ciągu doby, które łatwo pozwalają dostrzec trendy i sprawdzic co i kiedy powoduje zwiększone zużycie prądu. Po drugie mam też informację o średniej mocy z ostatnich godzin oraz koszcie prądu w ostatnim dni, tygodniu i miesiącu.
Co wysyła iNode Energy Meter?
Według udostępnionej dokumentacji ramka BLE zawiera:
- dwa bajty będące identyfikacją urządzenia, jednak 2 bity pierwszego bajtu dodatkowo zawierają informację braku odczytu w ostatniej dobie i alarmie niskiego stanu energii
- dwa bajty zużycia energii (lub średniej mocy) w ostatniej minucie
- cztery bajty stanu licznika
- dwa bajty zawierające:
– stałą licznika (liczbę impulsów licznika na kWh)
– jednostkę licznika (kWh czy liczba błysków) - jeden bajt zawierający:
– poziom baterii
– poziom odczytu czujnika światła - dwa bajty zużycia w poprzednim dniu oraz dzień tygodnia
Czego według mnie brakuje? Jednej istotnej rzeczy – czasu między ostatnimi dwoma błyskami. Dzięki tej informacji można by dość precyzyjnie określić aktualnie wykorzystywaną moc. Mając tylko liczbę błysków z ostatniej pełnej minuty jesteśmy ograniczeni do zaokrąglenia do pełnego błysku – czyli na przykład przy stałym zużyciu przez minutę dostajemy wartość 10, a potem 11 i tak na przemian. Przy liczniku z 1000 błysków na kWh mamy więc błąd zaokrąglenia pomiaru minutowego rzędu 1Wh, więc do 60W – czyli dość dużo. Przy dłuższych okresach pomiar oczywiście jest w pełni prawidłowy, bo zaokrąglenia nie ma. Informacja o czasie między błyskami przydałaby się np. dla wygodnego sprawdzania poboru prądu przez poszczególne urządzenia.
Po co monitorować zużycie energii?
Po co mi świadomość zużycia prądu? Żeby oszczędzać, żeby wiedzieć, żeby zauważyć gdy coś niepokojącego zacznie się dziać w instalacji i nagle pojawi się nadmiarowe zużycie. Dzięki temu zacząłem się zastanawiać ile można zaoszczędzić i w jaki sposób, żeby nie rezygnować z wygody. Pierwszym elementem, który został dzięki temu zoptymalizowany są sprzęty przy telewizorze. Gdy przez dłuższy czas czujnik alarmu w salonie nie rejestruje ruchu, telewizor ani projektor nie odpowiadają na ping, to przekaźnik odcina zasilanie gniazdek. Jest ono przywracane, gdy ktoś wejdzie do salonu. Teoretycznie nie powinno mieć to sensu, bo nowoczesne urządzenia w stanie czuwania nie powinny zużywać wiele prądu, a jednak kilka ich tam jest i nie wszystkie są nowoczesne, co skutkowało stałym zużywaniem prawie 30W mocy. Niby nie dużo, ale przy założeniu, że wyłączę je na około 10 godzin dziennie, to da to oszczędność ponad 50zł rocznie. Znowu niby nie jest to jakiś olbrzymi koszt, ale ta energia była do tej pory po prostu marnowana.
Ekosystem iNode.pl
Na koniec warto wspomnieć, że licznik energii to tylko jeden z wielu czujników BLE, które są dostępne. Co więcej, przyglądając się ofercie można dojść do wniosku, że ich „ekosystem” jest całkiem przemyślany i otwarty. Poza obsługą liczników (także wodociągowych i gazowych) mamy czujniki temperatury, ciśnienia, wilgotności, położenia czy pola magnetycznego. Ich urządzenia mogą też pomagać w lokalizacji, monitoringu czy sterowaniu urządzeniami. Ja w każdym razie widzę masę zastosować w automatyce domowej. Podoba mi się otwartość, energooszczędność i prostota instalacji. Trzymam kciuki za rozwój.
Witam,
przeglądając Pana bardzo fajne projekty zastanawiam się czy nie próbował pan spiąć tego wszystkiego pod takie koncentratory jak Domoticz lub home assistant?
I czy nie przyglądał się Pan produktom Xiaomi pracującymi w protokole zigbee (bateria na rok/dwa pracy).
Pozdrawiam i gratuluję bloga.
PS. Wykorzystam bloga do podłączenia mojego Vaillanta 🙂
mnie tylko jedno interesuje – co na to pracownicy firm energetycznych podczas spisywania licznikow – jak zobacza cos przyklejone do licznika, czy od razu tego nie odkleja … (przy okazji zakladajac, ze jest to proba wplywania na licznik … )
Właśnie – jak to z tym jest? Nie będzie jakichś problemów? Dostęp do skrzynki prądowej zamkniety jest na kłódkę (do której klucz każdy ma)
Fajny artykuł, a może jakiś opis jak to spiąć np. z Domoticzem i co trzeba wykonać żeby zadziałało 🙂 pozdrawiam
Mam problem ze skryptem iNode-BashScript_03.12.2017.tgz
TOTAL nie zmienia mi się praktycznie przez ostatni dzień – to raczej niemożliwe.
NIe mam także chwilowych wartości POWER jest tylko ciągle 0.00
pi@raspberrypi:~/INODE $ sudo ./iNode.sh
2018-08-08 22:29:46 MAC: D0F01843DE8C POWER: 0.00 kW TOTAL: 364.000 kWh
2018-08-08 22:29:48 MAC: D0F01843DE8C POWER: 0.00 kW TOTAL: 364.000 kWh
2018-08-08 22:29:49 MAC: D0F01843DE8C POWER: 0.00 kW TOTAL: 364.000 kWh
2018-08-08 22:29:53 MAC: D0F01843DE8C POWER: 0.00 kW TOTAL: 364.000 kWh
gdzie szukać błędu?
chciałem openhaba (openhab natywnie używa RRD) zasilić danymi z tego czujnika poprzez mqtt. Niestety utknąłem na skrypcie i brakuje mi pomysłu 🙁