Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną

pixel7 17 Jul 2022 17:00 3630 26
IGE-XAO
  • Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną

    Dzień dobry,

    Poniżej chcę zaprezentować swoją konstrukcję systemu wykorzystującego sztuczną inteligencję, którego celem jest wykrywanie podłączonych urządzeń elektrycznych do domowej sieci. Motywacją była próba stworzenia czegoś do kontroli aktualnie podłączonych urządzeń korzystających z energii elektrycznej i informowanie o tym użytkownika.
    Układ podzieliłem na dwa podstawowe elementy - jednym z nich jest moduł pomiarowy oparty o ESP32 i ADS1115, a z drugiej strony Raspberry Pi z logiką (python, keras, tensorflow).


    Realizacja pomiaru - skąd brać dane?

    Moduł pomiarowy zbudowałem na bazie ESP32cam, z 2 powodów, po pierwsze urwałem taśmę od kamery i została sama płytka, po drugie ma 2 rdzenie co ułatwia jednoczesny odczyt natężenia i obsługę sieci. Jest to bardzo prosta i prymitywna konstrukcja, zlutowałem bez schematu, dzielniki z rezystorów na wejściu przetwornika ADS1115, odczyt realizowany za pomocą przekładników prądowych założonych na 3 poszczególne fazy pomiędzy licznikiem a skrzynką bezpieczników. Całość zamknięta w obudowie na szynę DIN.
    Odczyt nie jest super dokładny ale nie to było celem (nawet zasadne jest aby nie był doskonały).
    Oprogramowanie układowe napisałem w arduino, dodałem front html z wykresami i PWA (ładniej wygląda).
    Ze sterownika odczytuje również JSON-a który zawiera tablicę 500 sek pomiarów wstecz (wyrażonych w Watach) dla każdej fazy.
    Tak przygotowane urządzenie jest źródłem danych dla kolejnego etapu.

    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną



    Luna - Sztuczna Sieć Neuronowa w praktyce.

    Luna jest siecią neuronowa zaprojektowaną w oparciu o popularne biblioteki Keras i TensorFlow 2.
    Zbudowałem sekwencyjny model składający się z kilku warstw.
    Sieć na wejściu otrzymuje tablicę 500 sek zapisów które odczytuje przez wifi z modułu pomiarowego.
    Dla każdego rozpoznawanego urządzenia sieć posiada wyjście na którym w procentach wyraża wyliczony wynik.

    Tego typu sieć uczy się metodą propagacji wstecznej, co wymaga przygotowania odpowiednich zestawów uczących.
    W moim przypadku są to owe 500 elementowe tablice które zapisuje jako kolejne klatki.
    Całość podzielona jest na foldery (z nazwami urządzeń) w których przechowuje poszczególne sample (jako tablica numpy):
    Code: dos
    Log in, to see the code

    Dopisałem dodatkowe narzędzia do zbierania i kategoryzowania próbek - wystarczy podłączyć nowe urządzenie, podać jego nazwę i Luna samodzielnie zapisze odpowiednie dane i się ich "nauczy".
    Poniżej przykładowe wykresy przebiegu zużycia energii służące jako zestawy uczące. Widać na nich np. charakterystyczne szpilki silników hydroforu i lodówki. Swoją drogą czy można by po ich kształcie kontrolować kondycję silnika, wyższe, niższe?.

    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną

    Zgrywa kilka - kilkadziesiąt ramek i dopisuje je do istniejącej kategorii (urządzenia) lub do nowo utworzonej.

    Tak przygotowana struktura jest gotowa do rozpoczęcia nauczania.
    Parametry sieci w moim przypadku dobierałem doświadczalnie - z pewnością wymaga to jeszcze dokładniejszego tuningu.
    Obecnie sieć składa się z kilku warstw. Pierwsza zmienia kształt danych na obraz (10,50,1),
    potem kilka konwolucji 2d i poolingów, spłaszczanie i na końcu warstwy dense sprowadzające wyjścia do kategorii:

    Code: dos
    Log in, to see the code

    Ilość neuronów jest zależna od ilości wyjść (obecnie 9 urządzeń)- sieć skaluje się zgodnie z aktualną ilością kolejno poznawanych (foldery z zestawami uczącymi).
    Poniżej listing z uczenia sieci:
    Code: dos
    Log in, to see the code

    Sieć wytrenowała się na poziomie 92%, nie jest to idealny wynik ale i przy takim poziomie radzi sobie dobrze.
    Powyższy przykład to ok 10000 próbek, po ok 1200 próbek dla każdego urządzenia.


    Predykcja - czyli co w prądzie piszczy.

    Sieć uruchomiłem na rpi4. Pracuje non stop, zapisując dane z predykcji co kilka minut. Cały czas ją testuję, a i tak jestem bardzo zadowolony wyników. Mój zestaw uczący składa się obecnie z ponad 10 tyś ramek dla 9 urządzeń (kategorii)
    Luna widzi 9 minut wstecz i taki zakres analizuje.
    Wynik prezentowany jest w postaci listy wykrytych urządzeń wraz z procentowym prawdopodobieństwem jego wystąpienia.
    Poniżej kilka porównań wykresu z przewidywaniem.

    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną

    Sieć radzi sobie zarówno z wykresem o dużej dynamice np włączenie urządzenia dużej mocy, jak i z płaskimi złożonymi przebiegami w których rozpoznaje lodówkę, laptop i tv jednoczenie pracujące.
    Czasem ma problem np czajnik vs hydrofor - podobne przebiegi o dużym skoku, czasem w przypadku kilku urządzeń dostrzega tylko najbardziej charakterystyczne.

    Zapis z predykcji zapisuje się co kilka minut i tworzy tabelę procentowego wystąpienia w czasie.
    Kilka wykresów prezentujących wykryte załączenia urządzeń w ciągu ok doby:

    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną

    W przypadku laptopa widać początkowe błędy uczenia, wykrywany był prawie zawsze. Po korekcie zestawów uczących (usunąłem wybrane) sieć zaczęła pracować poprawnie.


    Przyszłość - jak użyć tę wiedzę?

    Planuję dodać szereg powiadomień (użyje push i PWA) do informowania mnie o użyciu energii w domu.
    Sieć potrafi rozpoznać moment naładowania się laptopa - ma inny przebieg na pełnej baterii,
    potrafi dostrzec podłączone i nieużywane żelazko - rzadsze cykle załączenia i poinformować o tym.
    Rozpoznaje programy pralki - każdy zostawia charakterystyczny ślad.
    Nic nie stoi na przeszkodzie aby dodać układy wykonawcze (przekaźniki) i automatycznie nadzorować dystrybucję energii,
    odłączać niepotrzebne odbiorniki itp.
    Z każdym dniem umie coraz więcej i jest dokładniejsza, zwiększam liczbę kategorii,
    specjalnie komplikuje przebiegi podłączając wiele urządzeń na raz..

    Ilość zastosowań jest nieograniczona, a użycie pythona umożliwia uruchomienie na wielu różnych platformach.
    Dodatkowo ta sieć pracuje tak, że na wejściu może odczytać dowolny wykres, a odpowiednio skategoryzowany będzie rozpoznawalny. Mogą to być pliki wave (NLP) czy nawet wykres drgań - planuje przykleić akcelerometr do drogi i analizować przejazd pojazdu - każdy inaczej "brzmi", można rozpoznawać rodzaj (wielkość), może prędkość.


    Zagrożenia - wszystko może być trucizną.

    W kontekście wymiany naszych liczników energii na te "inteligentne" pojawia się pytanie, czy ktoś nie będzie chciał wykorzystać do swoich celów z tak dość zaawansowanej możliwość analizy zachowań odbiorcy.
    A jak powyżej udowodniłem jest to możliwe.
    Urządzenie zastosowane mobilnie może też "szpiegować" jakie odbiorniki włączamy, kiedy itp (obecność). W zasadzie opowiada o wszystkich naszych codziennych nawykach...



    Dodaję kod źródłowy do ESP32 (platformio), reszta wymaga jeszcze pracy.

    Pozdrawiam,
    p.

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    pixel7
    Level 22  
    Offline 
    Has specialization in: python
    pixel7 wrote 481 posts with rating 59, helped 48 times. Live in city Warszawa. Been with us since 2007 year.
  • IGE-XAO
  • #2
    Karol966
    Level 30  
    pixel7 wrote:
    Dodaję kod źródłowy do ESP32 (platformio),
    Pytanie laika, jak się uruchamia istniejący projekt w VSC+platformio? Czy poprzez "Open Projekt" wskazać tylko folder z projektem a potem wybrać "open MiernikEnergi_32" czy przez otwarcie folderu? Po otwarciu projektu mam całą masę problemów:
    Quote:
    [{
    "resource": "/e:/_POBIERANIE/ESP32 ESP8266 itd/MiernikEnergii_32/MiernikEnergii_32/src/main.cpp",
    "owner": "C/C++",
    "severity": 2,
    "message": "Nie znaleziono pliku dyrektywy include w ścieżce browse.path.",
    "source": "C/C++",
    "startLineNumber": 1,
    "startColumn": 1,
    "endLineNumber": 1,
    "endColumn": 18
    }][\quote]

    PS. o VSC nie mogę nic co z Phytonem związane doinstalować bo mam windowsa 7 (i opieram się przed zmianą bo to szybki/ stabilny i prosty system). Pojawia mi się komunikat "nie wybrano interpretera jezyka Phyton..." Będzie działać mi platformio bez tego?
  • #3
    khoam
    Level 41  
    pixel7 wrote:
    Nic nie stoi na przeszkodzie aby dodać układy wykonawcze (przekaźniki) i automatycznie nadzorować dystrybucję energii,
    odłączać niepotrzebne odbiorniki itp.

    To byłaby najciekawsza część projektu ;)
  • IGE-XAO
  • #4
    xury
    Automation specialist
    Fajny projekt. Wreszcie bym wiedział kiedy sąsiad na kawę przychodzi kiedy mnie nie ma :)
    A na poważnie, fajnie wiedzieć kiedy załączał się czajnik kiedy, kocioł CO a kiedy żelazko itd.
    Wprawdzie mam pomiar dokładny całego domu na MEW-01 i fajnie by było wykorzystać te dane zamiast dokładać nowe przekładniki.
    Wcześniej miałem pomiar na ESP32 i SCT013 ale po dołożeniu PV nie wiedziałem jak to mierzyć.
    Dla mnie najważniejszą sprawą było by wykrywanie anomalii poboru mocy.
  • #5
    Mlody_Zdolny
    Level 15  
    Ostrożnie z tym, poprzez analizę zużycia prądu Luna odkryje swoje istnienie i uzyska samoświadomość :D

    A jeśli chodzi o dane z pomiaru - jak dokładne są to dane? Sieć otrzymuje informacje nt przesunięcia fazy? Jakie jest próbkowanie? To jest na pewno istotne podczas klasyfikacji odbiorników na podstawie impulsów prądowych podczas załączania albo wyłączania urządzenia.
  • #6
    czareqpl
    Level 31  
    tu pytanie:
    pixel7 wrote:
    Swoją drogą czy można by po ich kształcie kontrolować kondycję silnika, wyższe, niższe?.


    Tu odpowiedź :)
    pixel7 wrote:
    planuje przykleić akcelerometr do drogi i analizować przejazd pojazdu - każdy inaczej "brzmi"


    Jak chcesz to zgłoś się na prv. Mam mały modulik z ADXL372 z wyprowadzonym złączem na spi i punktem montażowym na PCB.
    Wymienię modulik za trochę Twojej wiedzy na discordzie.
  • #7
    waldi_8601
    Level 13  
    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną

    Czyli system wyglada tak jak na obrazku powyżej.
    Ciekawi mnie serce systemu czyli to co się dzieje na RPi:
    1. Czy jest to mocno skomplikowane, a może wspomniane biblioteki powodują że aplikacja jest dość prosta.
    2. Czy jest pisane od zera, a może bazuje na jakimś innym rozwiązaniu?
    3. Czy są gdzieś dostępne źródła aby zobaczyć jak to jest napisane, jak sie uczy, jak wykrywa?

    Ogólnie ciekawy temat, zwłaszcza wykorzystanie do analizy sieci w celu wykrywania anomalii zanim dojdzie do awarii.
  • #8
    Dariusz Goliński
    Level 22  
    Takie coś już istnieje od kilku lat.
    Jest firma która oferuje projekt zespołu z Krakowa.
    Montujesz w podstawowej wersji przekładniki na przewodach fazowych a w bardziej rozbudowanej instalacji czujniki wibracji i przesyłasz dane do chmury.
    Po pewnym czasie system powie Ci czy zespół napędowy ma się ku końcowi czy może jeszcze trochę pociągnie.
  • #9
    pixel7
    Level 22  
    @karol966 Na forum z pewnością znajdziesz odpowiedzi.

    @mlodyzdolny1 Próbkowanie co sek, dokładności nie gwarantuje, chociaż wyniki zużycia na podobnym poziomie co licznik.
    Ale myślę żeby sprawdzać przejście przez zero, przy odpowiednio szybkim przetworniku można by analizować poszczególne połówki sinusa.
    Patrząc na wykres to przy obecnym próbkowaniu jest wystarczająco charakterystyczny dla danego urządzenia.

    @czareqpl Dzięki za propozycje ale mam podobne w swoich zasobach.


    @waldi8601 Tak rysunek odpowiada obecnej konfiguracji. Projekt powstał od zera, jest moim autorskim dziełem.
    Budowałem na podstawie dokumentacji wspomnianych bibliotek. A python zawodowo.


    @khoam @xury

    W międzyczasie skonstruowałem na szybko "zarządzane gniazdko". Budowa banalna, wemos + przekaźnik + switch.

    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną

    Zasada działania na przykładzie lutownicy, podczas pracy generuje przebieg:

    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną

    Po odłożeniu zaś taki:

    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną


    Gdy Luna stwierdzi że kolba została odłożona czeka jeszcze 10 min i wyłącza gniazdko, za pomocą zwykłego requesta (GET).
    Dodałem przycisk reset i jak zechcemy pracować dalej, naciskamy i proces rozpoczyna się od nowa.

    Co do badania anomalii.
    Mam gazowy piec (buderus) i zasymulowałem mu brak gazu (nomen omen!)

    Dwa przebiegi. Prawidłowy:

    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną

    błędny:
    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną

    Luna potrafi rozpoznać błędny - brak charakterystycznych szpilek przy uruchamianiu pomp w trakcie cyklu i zasygnalizować jego wystąpienie.

    Dariusz Goliński wrote:
    Takie coś już istnieje od kilku lat.
    Jest firma która oferuje projekt zespołu z Krakowa.
    Montujesz w podstawowej wersji przekładniki na przewodach fazowych a w bardziej rozbudowanej instalacji czujniki wibracji i przesyłasz dane do chmury.
    Po pewnym czasie system powie Ci czy zespół napędowy ma się ku końcowi czy może jeszcze trochę pociągnie.


    Nie znam tego rozwiązania, z pewnością świetnie działa.
    Mi bardziej zależało na kontroli zużycia energii nie zaś samych urządzeń.
    Ale okazuje się że i ten cel realizuję.
    Na marginesie - do chmury, po pewnym czasie, u mnie jest tu i teraz.

    Mam rpi zero, jest na tyle małe że zmieści się w obudowie przedłużacza, wtedy cała logika będzie w jednym urządzeniu.
    I tu będę mógł zaryzykować stwierdzenie że posiadam inteligentny przedłużacz!


    p.
  • #10
    chemik_16
    Level 25  
    xury wrote:
    Wprawdzie mam pomiar dokładny całego domu na MEW-01

    o, czegoś takiego szukam, ten MEW nie ma problemu przy zanikach napięcia że zlicza głupoty ? Na jakim to jest układzie oparte ?
    obecnie mam w skrzynce kanapkę esp8266+ 3x PZEM004 V3 w obudowie od różnicówki, ale pomijając fakt że już 3x wymianiałem stabilizator napięcia, bo się palił, to co zanik napięcia zlicza bzdury typu dzienne zużycie prądu 10MWat ;D

    na większy licznik jak 3 sloty nie mam miejsca w skrzynce.

    btw. jest jeszcze moze wersja z rozróżnieniem energii pobranej i oddanej do sieci ?
  • #11
    Mlody_Zdolny
    Level 15  
    pixel7 wrote:
    Predykcja - czyli co w prądzie piszczy.

    Sieć uruchomiłem na rpi4. Pracuje non stop, zapisując dane z predykcji co kilka minut.

    pixel7 wrote:
    Zapis z predykcji zapisuje się co kilka minut i tworzy tabelę procentowego wystąpienia w czasie.

    O co chodzi z tą predykcją? coś prognozujesz, zużycie energii? nie bardzo rozumiem
  • #12
    pixel7
    Level 22  
    @mlodyzdolny1

    Predykcja jest pojęciem używanym jako określenie wyniku działania sieci. W moim przypadku na podstawie przyjmowanych danych szacuje jakie urządzenie obecnie używa prąd, czyli wskazuje jakie odbiorniki w danym czasie pracują. Dalej już logika która definiuje zachowanie się systemu na podstawie tychże wyników (włącz, wyłącz itp).
  • #13
    Mlody_Zdolny
    Level 15  
    pixel7 wrote:
    Predykcja jest pojęciem używanym jako określenie wyniku działania sieci.

    A to ciekawe, podasz jakieś źródła gdzie "predykcja" oznacza wyjście sieci?

    Dodano po 56 [sekundy]:

    pixel7 wrote:
    W moim przypadku na podstawie przyjmowanych danych szacuje jakie urządzenie obecnie używa prąd, czyli wskazuje jakie odbiorniki w danym czasie pracują.

    To jest klasyfikacja nie predykcja.
  • #15
    Mlody_Zdolny
    Level 15  
    pixel7 wrote:
    Wynikiem predykcji w mojej sieci jest właśnie klasyfikacja.

    Stwierdzenie, że coś nastąpiło to nie jest predykcja lecz klasyfikacja. Predykcja to prognoza, że coś nastąpi.
    Gdyby Twoja sieć realizowała predykcję to byłaby w stanie włączyć ekspres do kawy w momencie kiedy wyjmujesz filiżanki, włączać żelazko, gdy szykujesz desķę, albo lutownicę gdy siadasz z płytką do lutowania.
  • #16
    pixel7
    Level 22  
    Mlody_Zdolny wrote:
    pixel7 wrote:
    Wynikiem predykcji w mojej sieci jest właśnie klasyfikacja.

    Stwierdzenie, że coś nastąpiło to nie jest predykcja lecz klasyfikacja. Predykcja to prognoza, że coś nastąpi.
    Gdyby Twoja sieć realizowała predykcję to byłaby w stanie włączyć ekspres do kawy w momencie kiedy wyjmujesz filiżanki, włączać żelazko, gdy szykujesz desķę, albo lutownicę gdy siadasz z płytką do lutowania.


    Potrafi odłączyć lutownicę gdy jej nie używam..

    Po kolei, mały zakres pracy nie oznacza pozbawienie funkcjonalności.
    Kamerę już ma i niebawem zacznie widzieć. Na razie via opencv, rozpoznaje twarze, przedmioty i będę budował dalszą logikę. Rozpoznawanie pozy siadania czy wstawania też nie jest kłopotem.

    Możemy spierać się o słownictwo ale chyba nie to jest tu sednem?

    Swoją drogą sama dokumentacja tak charakteryzuje i nazywa ten proces:

    https://www.tensorflow.org/api_docs/python/tf/keras/Model#predict
  • #17
    Mlody_Zdolny
    Level 15  
    Jak dla mnie są to istotne różnice, dobrze wyjaśnione tutaj

    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną
  • #18
    pixel7
    Level 22  
    Nie widziałem tego porównania, podaj proszę źródło.

    Ja sugeruję się analogią jak u wróżki:

    Jeśli mówi o mnie np zgduje kim jestem, co robię, ile mam lat itp to wróży czy nie? Przecież opisuje rzeczywistość.
    Jeśli mówi o przyszłości, co będę robił ok, tu w 100% wróży.

    Ja traktuje oba procesy jednakowo, z resztą mając do dyspozycji jedną wspomnianą metodę inaczej nie użyje kerasa...
  • #19
    Mlody_Zdolny
    Level 15  
    pixel7 wrote:
    Nie widziałem tego porównania, podaj proszę źródło.


    Link

    Są też polskojęzyczne źródła, np Link
    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną
  • #20
    pixel7
    Level 22  
    No i to jest dokładnie co opisałem.
    Na początku nie wiemy, wprowadzamy do sieci (u mnie tablica), czekamy - sieć realizuje obliczenia, na końcu otrzymujemy wynik (klasyfikacja).
    Identyczna sytuacja jest w mojej sieci.

    Rozumiem że dyskutujemy o czasie? Niestety sieci nie rozumieją czy maja dane stare, czy nowe, czy aktualne.
    Policzą tak samo.
    Czy w przypadku teoretycznej sieci która przewiduje wyniki giełdowe, po wprowadzeniu na wejście starych danych odmówi pracy twierdząc że to nie predykcja?

    Po prostu nie ma sensu jak widać w przykładzie kerasa na rozbijanie tych procesów bo są identyczne.
    Predykcja wydaje się więc procesem zachodzącym w samej strukturze sieci, bez względu jakie dane dostaje.
  • #21
    Mlody_Zdolny
    Level 15  
    pixel7 wrote:
    Po prostu nie ma sensu jak widać w przykładzie kerasa na rozbijanie tych procesów bo są identyczne.
    Predykcja wydaje się więc procesem zachodzącym w samej strukturze sieci, bez względu jakie dane dostaje.

    Załóżmy, że ciąg wartości mocy, które rejestrujesz w swoim urządzeniu należy do zbioru X a zbiór urządzeń, które podłączasz do gniazdek należą do zbioru Y.
    Twoja sieć Luna na ciąg x0, x1, ... , xn odpowiada wektorem y0, y1, ... , yn. Nie może być mowy o predykcji bo na podstawie x otrzymujesz y.

    Predykcja by była, gdybyś na podstawie ciągu x0, x1, ... , xn otrzymał na wyjściu sieci wartość x(n+1).

    W praktyce predykcja byłaby wtedy, gdybyś wziął ciąg zarejerestowanych wartości pobieranej mocy, a sieć odpowiedziała wartością, którą za chwilę zarejestrujesz.
    Przykład: sieć "widzi", że użytkownik wyłącza TV, laptopa, gasi światło w salonie. Zwykle po takiej sekwencji użytkownik wchodzi do sypialni, zapala światło na 5 min, gasi i idzie spać.
    Sieć w momencie wykrycia sekwencji TV-laptop-światło potrafi przewidzieć, że użytkownik ma zamiar wejść do sypialni, włączyć światło, za chwilę zgasić i iść spać. Więc to robi - włącza światło i za chwilę gasi. W ten sposób wpływa na ciąg wartości zmierzonej mocy.

    W przypadku danych historycznych sieć można sprawdzić czy posiada zdolność predykcji usuwając pewien zakres wartości xi, ... , xj. Sieć na podstawie ciągu x0, x1, ..., xi potrafi przewidzieć wartości x(i+1), x(i+2), ... x(j).
  • #22
    xury
    Automation specialist
    chemik_16 wrote:
    xury wrote:
    Wprawdzie mam pomiar dokładny całego domu na MEW-01

    o, czegoś takiego szukam, ten MEW nie ma problemu przy zanikach napięcia że zlicza głupoty ? Na jakim to jest układzie oparte ?
    obecnie mam w skrzynce kanapkę esp8266+ 3x PZEM004 V3 w obudowie od różnicówki, ale pomijając fakt że już 3x wymianiałem stabilizator napięcia, bo się palił, to co zanik napięcia zlicza bzdury typu dzienne zużycie prądu 10MWat ;D

    na większy licznik jak 3 sloty nie mam miejsca w skrzynce.

    btw. jest jeszcze moze wersja z rozróżnieniem energii pobranej i oddanej do sieci ?

    Mew-01 liczy idealnie. Od lutego, kiedy mam go założonego to różnica pomiędzy licznikiem PGE a MEW-01 nie przekroczyła 0,1kWh. Po zaniku zasilania też nic się dziwnego nie dzieje. MEW-01 liczy zbilansowaną energię czyli różnicę między poborem a oddaniem. Do pełni szczęścia potrzeba tylko mieć dane z produkcji z logera Sofara. Z Mewy można korzystać na dwa sposoby. Pierwszy to chmura ipla drugi to dane MQTT. Ja korzystam z danych MQTT i w ogóle nie zalogowałem się nawet do chmury. Wcześniej miałem też ESP32 i trzy SCT-013 ale musiałem zrezygnować po montażu PV.
    Wracając do tematu szanowny Autorze to może znasz jakąś implementację Luny na linuxa co by nie dawać kolejnych przekładników, a skorzystać z danych np. Influxdb lub zapodać przez MQTT ?
    BTW Czemu użyłeś ADS1115 zamiast ADS samego ESP32?. Ja miałem u siebie ESP32 z trzema przekładnikami STC-013 podłączonymi poprzez dzielnik bezpośrednie do pinów ADC i powiem, że liczyło to mi pobór prądu zadziwiająco dokładnie.
  • #23
    pixel7
    Level 22  
    Mlody_Zdolny wrote:
    Załóżmy, że ciąg wartości mocy, k


    Nic nie zakładam, opieram się na wiedzy i korzystam z m in, z tego przykładu:

    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną

    Żródło: Link

    Jesteś młody i zdolny, nic nie stoi na przeszkodzie abyś skontaktował się z twórcami tej biblioteki i wytłumaczył im swój punkt widzenia, może nawet dodał (tzn skopiował metodę predict) i nazwał ją classification dodając do obiektu model.
    Mam nadzieję że na tym możemy zakończyć tą dyskusję?

    Tu masz Link do:

    Quote:
    Anyone is free to send out API proposals.
    Anyone is free to comment on API proposals or ask questions.


    Dodano po 30 [minuty]:

    xury wrote:
    Wracając do tematu szanowny Autorze to może znasz jakąś implementację Luny na linuxa co by nie dawać kolejnych przekładników, a skorzystać z danych np. Influxdb lub zapodać przez MQTT ?


    Nie mam jeszcze jeszcze wersji produkcyjnej.
    Prawdopodobnie zamknę ją w dockerze i będzie uniwersalna, chciałbym żeby miała interfejs webowy (flask).
    I tak czeka mnie refaktoryzacja.
    Co do innych źródeł - może być dowolne, aby ustrukturyzowane.
    Sam trzymam dane na aws (podobnie jak influx) tylko że mam swoje api (serwer i klient). Postaram się też zaimplementować MQTT, mam już w planie.

    xury wrote:

    BTW Czemu użyłeś ADS1115 zamiast ADS samego ESP32?. Ja miałem u siebie ESP32 z trzema przekładnikami STC-013 podłączonymi poprzez dzielnik bezpośrednie do pinów ADC i powiem, że liczyło to mi pobór prądu zadziwiająco dokładnie.

    Z głupiej przyczyny, płytka ESP32cam nie ma na pinach ADC... A ADS leżał w szufladzie.
  • #24
    chemik_16
    Level 25  
    xury wrote:
    MEW-01 liczy zbilansowaną energię czyli różnicę między poborem a oddaniem

    a co liczyło esp z STC-013 ? nie czasem sumę ? nie wystarczyłoby odjąć od tej wartości informacji z falownika ?
    Pzem chyba tak samo liczy
  • #25
    aadeer
    Level 14  
    Mlody_Zdolny ma rację, to co robisz jest to klasyfikacja. Predykcja byłaby, gdybyś na przykład próbował do przodu przewidywać przebieg mocy.
    To, że przyjęło się, że metoda uruchamiająca nauczony model w większości bibliotek (również np. w SkLearn, PyTorch etc) ma w swojej nazwie _predict_, nie znaczy, że wykonuję on predykcję. Warto jednak używać prawidłowych nazw, bo predykcja, klasyfikacja (u Ciebie przy wykorzystaniu uczenia nadzorowanego, bo uczysz na przykładach) to jedne z podstawowych określeń dla grup zadań AI/ML i błędne ich nazywanie może wprowadzać w błąd.

    Poza tym projekt fajny, chyba jeden z pierwszych na elektrodzie wykorzystujący AI/ML, chociaż twoją strukturę sieci da się jeszcze zoptymalizować bo używanie tylu warstw konwolucyjnych niekoniecznie jest potrzebne. Chociaż skoro dla Ciebie działa i masz wystarczająco mocy obliczeniowej to można przyjąć, że jest ok. W zastosowaniach przemysłowych takie rzeczy robi się obecnie za pomocą sieci rekurencyjnych (RNN, ale najczęściej ich podgrupa LSTM).

    To co zrobiłeś to jest tzw. NILM (Non intrusive load monitoring) i polega właśnie na rozłożeniu sumarycznego sygnału o poborze mocy na przebiegi poszczególnych urządzeń, można też szukać pod hasłami "load dissagregation". Rozwój i dostępność sieci neuronowych znacznie ułatwiły prace nad tymi zagadnieniami.

    Wrzucam linki, gdyby ktoś chciał coś więcej poczytać:
    https://www.ims.fraunhofer.de/en/Business_Units_and_Core_Competencies/Electronic-Assistance-Systems/Applications/NILM.html
    https://bisite.usal.es/archivos/non_intrusive_load_monitoring_nilm.pdf

    Myślałeś o tym, żeby spróbować uruchomić nauczoną sieć bezpośrednio w ESP32 (np. z TinyML)?
  • #26
    Mlody_Zdolny
    Level 15  
    pixel7 wrote:
    Jesteś młody i zdolny, nic nie stoi na przeszkodzie abyś skontaktował się z twórcami tej biblioteki i wytłumaczył im swój punkt widzenia, może nawet dodał (tzn skopiował metodę predict) i nazwał ją classification dodając do obiektu model.
    Mam nadzieję że na tym możemy zakończyć tą dyskusję?

    To, że używasz metody o nazwie "predict" nie znaczy, że sieć realizuje predykcję.
    Słowo "predict" w języku angielskim ma szersze znaczenie niż jego odpowiednik w języku polskim "predykcja".
    Luna - Sztuczna Inteligencja i zarządzanie energią elekryczną
    Po prostu źle użyłeś tego słowa przez co tekst wygląda jakby był tłumaczony bezrefleksyjnie przez automat.
    I na tym kończę dyskusję.