12 minut czytania
Temat odczytywania zużycia energii i wykorzystania odczytanych danych w systemie do automatyki był już kilka razy poruszany na łamach Forum Smart'ny Dom.
Nie raz zastanawiałem się jakie rozwiązanie zastosować we własnej instalacji
- dodatkowy licznik na szynie DIN zainstalowany w rozdzielni elektrycznej, dobrany tak, aby umożliwiał integrację z systemami automatyki
- jakieś rozwiązanie optyczne, a'la iNode, zliczające impulsy świetlne z licznika dostarczonego przez dostawcę energii
- czy też własna konstrukcja
Do pierwszego trzeba trochę przeorganizować rozdzielnię, wezwać elektryka, itd. Drugie, hm...zliczanie impulsów świetlnych, których określona ilość informuje o zużyciu 1kWh; te informacje następnie bluetooth'em do RPi; z RPi do ThingSpeak.com, a następnie do systemu automatyki.
Już prawie rozpocząłem projektować własne urządzenie, oparte właśnie o zliczanie impulsów diody LED licznika z wykorzystaniem sieci bezprzewodowej WiFi i przesyłaniem danych bezpośrednio do MQTT Brokera, kiedy trafiłem na urządzenie OneMeter.
OneMeter to niewielkie urządzenie - beacon, które odczytuje dane wprost z licznika energii elektrycznej dostarczonego przez dystrybutora energii i wyposażonego w port optyczny obsługujący protokoły IEC 62056-21 / IEC 1107 / SML / DLMS
Ten port wykorzystywany jest przez służby techniczne dystrybutorów energii do parametryzacji i odczytu danych z liczników energii elektrycznej.
OneMeter beacon odczytuje dane bezpośrednio z licznika.
Tak, nie są zliczane impulsy tylko wykonywane są odczyty danych z licznika. W zależności od licznika możemy mieć dostęp do takich danych jak:
- ile energii efektywnie zużyto / oddano do sieci
- ile energii zostało utraconej przy zużyciu / oddaniu do sieci
- ile energii o charakterze indukcyjnym zużyto / oddano do sieci
Ale nie tylko. Wymienione informacje dostępne są również w podziale na strefy czasowe, w których obowiązuje określona kwota za pobranie / oddanie energii. Lista dostępnych informacji jest dłuższa, wymieniłem te najczęściej wykorzystywane.
Kilka słów o samym urządzeniu
- Niewielkie urządzenie w formie beacona o średnicy 32mm i wysokości 15mm.
- Zasilanie jest bateryjne CR2032 z przewidywanym czasem pracy baterii około roku
- Transmisja danych odbywa się za pomocą Bluetooth LE; więc zasięg to do ok. 10m w trybie połączenia
- Dane są szyfrowane AES128b więc dopóki kwantowe komputery nie są dostępne; nikt tych danych nam nie ukradnie 😉
- Mocowany jest do licznika w wykorzystaniem wbudowanego magnesu neodymowego
- oraz pracuje w temperaturach -20 do 50stC
Urządzenie jest solidnie wykonane i dopieszczone detalami - chociażby grawerowany magnes, led informujący o stanie urządzenia. Samo opakowanie urządzenia daje pozytywne doświadczenia osobom, którym środowisko nie jest obojętne. To wszystko sprawia pozytywne wrażenie, że nie mamy do czynienia z samoróbką, czy jakąś tandetą wyprodukowaną na końcu świata.
Urządzenie jest produkowane w Polsce! przez technologiczny startup skoncentrowany na obszarze energetycznym, którego misją jest zapewnienie każdemu domowemu lub biznesowemu użytkownikowi energii dostępu i lepszego zrozumienia ich zużycia energii.
Jak działa urządzenie OneMeter?
Urządzenie odczytuje dokładne dane pomiarowe z licznika, które za pośrednictwem transmisji bezprzewodowej bluetooth przesyłane są do Smartfonu, a następnie do chmury OneMeter Cloud.
Urządzenie odczytuje dane z licznika w co 15-minutowych interwałach czasu i natychmiast przekazuje odczytane informacje do chmury jeśli beacon ma dostęp do Smartfonu.
Planując integrację odczytywanych danych z własnym systemem do automatyki, nie ukrywam, że zmartwiła mnie ta konieczna obecność smartfona, aby przesyłać dane do chmury
- Nie mam cały czas smartfonu w obrębie ok 10 metrów od urządzenia
- Nie jestem non-stop w domu
- Bateria się wyczerpie itp, itd.
Rozwiązanie problemu, to dodatkowy, stary, tani smartfon na stałe podpięty do zasilania w pobliżu urządzenia.
Ale, ale.... przeglądając dokumentację trafiłem, że mamy możliwość postawienia bramki nazwanej: OneMeter Gateway. Jest to specjalnie przygotowane oprogramowanie służące do ciągłego przesyłania danych z urządzenia OneMeter beacon do OneMeter Cloud
OneMeter Gateway, działa na urządzeniach z systemem Linux wyposażonych w Bluetooth. Dostępny jest pakiet instalacyjny OneMeter Gateway lub przygotowana dystrybucja Linux dla Raspberry Pi z zainstalowanym już oprogramowaniem wymagająca minimalnej konfiguracji. Oprogramowanie może swobodnie działać nawet na takim maleństwie, jak RPi Zero W.
Jak dla mnie, wystarczająco dobre rozwiązanie, aby mieć praktycznie zawsze aktualne dane w chmurze OneMeter i w systemie automatyki, o którym już za chwilę.
Czy urządzenie można ot tak stosować; co na to dystrybutorzy?
Na stronie producenta urządzenia można znaleźć taką notatkę:
OneMeter nie zakłóca pracy licznika. Nie ma więc powodu, dla którego operator miałby zabronić jego montażu. Użytkownik ma prawo odczytywać swój licznik w sposób analogiczny do operatora. Prawidłowe działanie urządzenia OneMeter Beacon potwierdzone zostało przez badanie wykonane przez Instytut Łączności (Potwierdzenie zgodności Nr 038/2016) oraz wystawioną Deklarację zgodności CE (oznaczenie CE 1471)
Instalacja
Nie ma się tutaj co rozwodzić. Jest tak banalnie prosta, że szkoda czasu, żeby specjalnie się rozpisywać:
- wyciągamy beacon z pudełka
- montujemy na porcie optycznym: trudność skali zero; przypominam mocowanie jest do licznika za pomocą wbudowanego w urządzenie magnesu
- otwieramy aplikację w smartfonie, logujemy się z wykorzystaniem jednej z sieci społecznościowych, wybieramy jaką mamy taryfę
- ... i koniec
Teraz kilka słów o stronie software'owej
Oczywiście nie zostajemy sami z urządzeniem ;). Do dyspozycji mamy dostęp do portalu, na którym możemy przeglądać i analizować informacje. Jest dostępna aplikacja na Androida, jeśli chodzi o iOS to jest w trakcie przygotowania (stan na czerwiec 2021)
Mamy dostępne statystyki, wykresy, tabele, koszty, prognozy, filtrowanie danych, jest tych informacji bardzo dużo i wydaje mi się dla większości użytkowników będzie tego wystarczająco.
Poniżej załączam galerię niektórych tylko informacji, które dostępne są przez portal
A tutaj screenshot'y z aplikacji mobilnej.
Integracja z systemem do automatyki
Powyżej napisałem kilka podstawowych informacji na temat urządzenia / oprogramowania. W dalszej części skupiam się na integracji OneMeter, a przede wszystkim dostępie do danych zbieranych przez urządzenie w ramach lokalnego systemu do automatyki.
Więc tak:
- urządzenie odczytuje dane co 15 minut
- mamy bramkę, która wysyła odczytane dane do chmury OneMeter
- możemy przeglądać dane przez przeglądarkę internetową lub aplikację mobilną
No, ale co gdybym chciał mieć te dane lokalnie w swojej bazie danych; analizować je na przeróżne sposoby; uruchamiać reguły za pomocą systemu do automatyki ,np.: na podstawie danych o zużyciu / oddaniu energii :
ooo produkuje więcej energii niż jestem w stanie zużyć, no to niech włączy się grzałka w basenie i zutylizuje nadprodukcję energii 😉
lub prezentować dane o zużyciu / wyprodukowaniu energii w naszym panelu , przykładowo:
Mamy taką możliwość. OneMeter udostępnia API, które pozwala na pobieranie danych z chmury OneMeter Cloud w formacie JSON.
Po zalogowaniu się do chmury mamy dostęp do naszego unikalnego klucza API, unikalnego ID urządzenia oraz dokumentacji do API, pozwalającej na pobranie szeregu różnych informacji w formie JSON.
Dokumentacja API zawiera opis, jak zintegrować się z HomeAssistant, Domoticz oraz OpenHab.
Nie przyglądałem się dokumentacji integracji: HA, Domoticz i nie mogę jej skomentować, natomiast konfigurację OpenHab przerobiłem. Jest poprawna, ale już trochę starawa i nie wykorzystująca komponentów OpenHab, jak np. Things. W dalszej części udostępniam bardziej rozbudowaną konfigurację, która umożliwia więcej niż przykład konfiguracji umieszczonej w dokumentacji OneMeter API.
Zanim przejdę do konkretów, jak co zrobić, to parę słów z czym trzeba się liczyć, jakie problemy rozwiązać, bo nie jest to integracja do zrobienia w dwóch, trzech krokach.
Jakie wyzwania musimy rozwiązać, z jakimi ograniczeniami musimy się liczyć?
1. Odczyty danych są co 15 minut, wiec nie mamy dostępu, do danych z licznika w czasie rzeczywistym.
- nic z tym nie zrobimy
- mamy dostęp do prawie rzeczywistych danych, czyli co ok. 15 minut
- Rozwiązanie:
- poczekanie na kolejną aktualizację firmware, która w momencie pisania tego artykułu jest opracowywana i będzie miała odczyty w czasie rzeczywistym. Natomiast trzeba poczekać na końcową wersję i jej możliwości, aby zrozumieć o czym tutaj mówimy i z czego rzeczywiście będziemy mogli skorzystać. Tak, czy inaczej dane co 15 minunt to nie taki zły interwał.
2. Trzeba zapewnić stabilne przesyłanie danych z beacona'a do chmury, po to aby mieć w systemie automatyki dane co 15min
- jeśli nie będzie stabilnie to będziemy mieli poszatkowane dane.
- jest to istotne jeśli zależy nam na własnej analizie danych, wykresach, czy regułach związanych z "aktualne" pobieraną / oddawaną energią elektryczną
- Rozwiązanie:
- Koniecznie Smartfon lub OneMeter Gateway np. na RPi, non-stop włączny w pobliżu urządzenia
- Smartfon, który miałem włączony non-stop w odległości ok. 2 metrów od licznika przez ścianę dawał bardzo stabilną transmisję danych do chmury - testowane przez ok 1 tydzień
- RPi4 z OneMeter Gateway około 6 metrów przez dwie ściany - nie działał stabilnie; transfery do chmury nie były wykonywane z sukcesem co 15 minut,
- RPi4 i 3 metry od licznika, jedna ściana dzieląca - działa b. stabilnie od 3 miesięcy kiedy testuję urządzenie
- Koniecznie Smartfon lub OneMeter Gateway np. na RPi, non-stop włączny w pobliżu urządzenia
3. Pobierane informacje z OneMeter Cloud to stan licznika zużycia energii (wartość) co 15 minut, a nie inkrementalne wartości zużycia energii w czasie
- o ile oczywiście może być interesujące jaki jest stan licznika, o tyle nas interesuje zużycie energii w czasie, czyli ile energii zużyliśmy w ciągu 15m, 1h , 1 dnia, itd.
- Rozwiązanie
- Reguła w systemie do automatyki załatwi nam dodatkowe przeliczenia jakich potrzebujemy
4. Co jeśli zawiódł któryś z naszych komponentów: wyłączony system do automatyki, baza danych i straciliśmy dane itp.
- Rozwiązanie:
- Jednym z rozwiązań może być uruchamiany w nocy skrypt, który za jednym "strzałem" pobierze dane z OneMeter Cloud z ostatnich 24 godzin. To umożliwi nam osiągnięcie 100% regularności zapisów danych w naszej lokalnej bazie danych
Przykład integracji dla systemu automatyki: openHab
Konfiguracja jest wykonana z wykorzystaniem plików konfiguracyjnych znajdujących się w /etc/openhab dla Linux'a w standardowej instalacji
Thing
Thing odczytuje dane z OneMeter Cloud w co 15-minutowych interwałach.
W ramach Thing można bezpośrednio wysyłać zapytania do OneMeter Cloud, jednak proponuję te zapytania wykonywać za pomocą Linux'owego CRON'a zapisującego wynik odczytanych danych w lokalnie przechowywanym pliku - czyli na naszym serwerze do automatyki. Następnie w ramach Thing odczytywać lokalnie pobrany już plik. Dlaczego?
- OneMeter regularnie odczytuje dane z licznika o konkretnej godzinie : 00, 15, 30, 45 minut ... itd. W ramach OH Thing nie kontrolujemy czasu, kiedy zostanie wykonane zapytanie o dane do chmury OneMeter. W OH parametryzujemy interwały odczytów na przykład: niech Thing odświeża dane co 15 minut. Problem jest taki, że możemy mieć sytuację, że OneMeter Beacon odczyta dane z licznika o 14:15; wyśle je natychmiast do OneMeter Cloud, a nasz openHab te dane pobierze na przykład o 14:28 - bo tak sobie ustawi początek odliczania co piętnasto-minutowych interwałów. Trochę słabo, jeśli chce się mieć dane w systemie do automatyki w miarę bliskie rzeczywistym informacjom o zużyciu / produkcji energii.
- Można odpytywać OneMeter Cloud częściej niż co 15 minut, ale według mnie to strata zasobów:
- będą szły do OneMeter Cloud tzw. suche przebiegi: odczyty danych, które niczego nowego nie dostarczą do naszego systemu automatyki.
W przypadku mojej konfiguracji Linux CRON odczytuje dane co 15 min startując: Godzina : 02, 17, 32, 47 minut - czyli z 2 minutowym przesunięciem w stosunku do odczytów wykonanych przez OneMeter Beacon.
Polecenie cron'a
Tutaj, jak może wyglądać polecenie CRON
curl -s -X GET --header 'Authorization: TUTAJ-API-TOKEN' 'https://cloud.onemeter.com/api/devices/TUTAJ-ID-URZADZENIA' -o /etc/openhab/html/onemeter/onemeter-device-data.json
Przykładowa konfiguracja Thing dla taryfy G12 odczytująca już lokalnie pobrany plik
OneMeter: openHab: things
Items
OneMeter: openHab: items
Reguła wykonująca konieczne obliczenia
OneMeter: openHab: rules
W GitHub umieściłem skrypt, który pobiera dane z OneMeter Cloud w regularnych 24 godzinnych interwałach i ładuje dane do bazy danych InfluxDBv2. Więcej informacji.
Skrypt zapewnia mi to, że jeśli miałem w czasie dnia jakieś zdarzenie, że nie działa regularna co-piętansto-minutowa wymiana informacji między beacon - chmurą - system automatyki (obojętnie gdzie był i jaki problem), skrypt zapewni odtworzenie poprawnych regularnych zapisów w lokalnej bazie danych.
Podsumowując
- (-) Trzeba liczyć się z ograniczeniami wynikającymi z transmisji danych bluetooth - odległości
- coś za coś; transmisja WiFi 2.4 lub 5Ghz szybko pochłonęłyby baterię
- informacyjnie: trwają prace nad nowym urządzeniem, które w linii prostej powinno umożliwić zasięg ok. 100m
- (-) Brak aplikacji mobilnej na iOS - w trakcie przygotowania
- (-) Nie wszystkie dostępne komendy API, byłem w stanie uruchomić z sukcesem.
- Nie wiem jeszcze jakie ciekawe informacje mogę pobrać. Dokumentacja tutaj nie jest wystarczająco jasna
- (-) Urządzenie nie wspiera wszystkich liczników energii.
- Konieczne jest sprawdzenie, czy nasz licznik energii OneMeter będzie obsługiwany; niektóre liczniki są blokowane przez dystrybutorów
- (+) Bardzo intuicyjna, prosta i nieinwazyjna instalacja urządzenia
- (+) Dostęp do aplikacji mobilnej (android). Aplikacja dobrze zaprojektowana i intuicyjna.
- (+) Wiele zestawień, wykresów, włącznie z kosztami, prognozami zużycia itp. dostępne z pudełka przez stronę www.
- (+) Dostęp do danych z licznika - zarówno pobór oraz produkcja energii; to nie jest zliczarka impulsów przeliczająca je na ilość zużytej energii - choć jest dostępna również taka opcja, z tego co wyczytałem
- (+) Dostęp do gromadzonych danych w chmurze dzięki udostępnieniu API
- (+) Dbałość o wykonanie urządzenia
- (+) Pozytywne doświadczenie z zespołem wsparcia
- (+) Rozsądne koszty urządzenia
- (+) Rodzimy produkt i produkcja
Co byłoby szczęściem dla osób chcących integrować urządzenie z lokalnym systemem 🙂
- bezpośredni dostęp do danych odczytywanych przez Beacon lub
- możliwość subskrypcji do OneMeter MQTT Brokera zamiast korzystania z API do Cloud - uprościłoby to sporo integrację
Przydałoby się:
- informacja o napięciu, np.: średnie z ostatnich 15 minut, albo jakieś chwilowe - tyle się słyszy o bardzo wysokim napięciu w sieci w słoneczne dni, kiedy pobliskie elektrownie fotowoltaiczne pracują pełną parą - ciekawe informacje do analizy
- możliwość pobrania informacji o kosztach za pomocą API
Na koniec jeszcze jedno zdanie ode mnie; zrozumienie, a przede wszystkim optymalizacja zużycia energii, czyli wspieranie ekologicznego i zrównoważonego stylu życia, są zachowaniami do których szczerze, szczerze i gorąco zachęcam, szczególnie myśląc o naszych dzieciakach, wnukach, czy przyszłych pokoleniach. OneMeter jest ciekawym urządzeniem wspomagającym ten cel.
@adrian Kapitalny opis , mimo, że jednak bardziej do mnie przemawia coś bez baterii i bluetooth , prawie mnie namówiłeś na testy tej pastylki :))
@Adrian Jestem użytkownikiem tegoż sprzętu (kolor zielony) od maja 2021r. Aplikacja - generalnie na telefonie działa poprawnie. Dodatkowo praktycznie od początku - uruchomiłem także bramkę OneMeter na Rpi 3+. Działa ok. Powyższy opis - praktycznie bez uwag - sama czysta prawda 😊 , Trochę niejasności było przy ustalaniu taryfy G11 - oraz z tym związanych stawek i kosztów. Jednakże , zmieniłbym RPi3+ na mniejszy model aby nie blokować sobie bramki tylko do tych celów. Gdybym mógł liczyć na wsparcie - integracji z HA na moim AiS Dom - byłoby fajnie (bramka DEV1), Może bym do testów przeznaczył ją na miesiąc 😎 . Mam jeszcze DEV3 - tak więc daję radę.
u mnie chodzi bez problemów również. Co potrzebujesz zintegrować?