Jasne.
Narzędzie z grubsza składa się z kilku modułów:
- moduł przyjmujący dane (zbudowana wersja wewnętrzna, wersja dla użytkowników zewnętrznych: w trakcie prac),
- moduł trenowania / uczenia (gotowy, w trakcie trenowania),
- moduł generowania predykcji (opracowana wersja wewnętrzna)
- moduł pobierania predykcji przez zewnętrznych użytkowników (w trakcie prac).
Zbieramy dane historyczne z różnych systemów automatyki domowej. Ujednolicamy je do jednej struktury, dzięki czemu dla narzędzia jest transparentne czy uczy się z systemu Fibaro, Vera, Samsung czy z dowolnego innego. Przez dane historyczne rozumiemy historię zdarzeń w systemie połączoną z typami urządzeń i ich umiejscowieniem w domu (np. w przypadku Fibaro: wpis z historii + id/nazwa urządzenia + typ urządzenia + pokój + sekcja). Zbieramy informacje o wykonanych przez użytkownika akcjach, np. włączony włącznik, ściemniacz ustawiony na x% jasności, roleta otwarta na x%, uzbrojony alarm etc. oraz dane z czujników wewnętrznych i zewnętrznych. Dodatkowymi parametrami wejściowymi są czas zdarzenia oraz - w przypadku wykonania akcji - użytkownik, który to zdarzenie wykonał (zdajemy sobie sprawę, że nie wszystkie systemy oferują informację o użytkowniku, który wykonał dane zdarzenie - przygotowujemy system na rozróżnialnych użytkowników i jednego, ogólnego źródłowego użytkownika).
Dane trafiają do modułu uczenia maszynowego. Obecnie jest to klasyczny ML oparty o sieci neuronowe, jednak pracujemy też nad jego rozszerzeniem o bardziej zaawansowane narzędzia. Na bazie uzyskanych wyników generujemy predykcje oparte o czas (godzina, dzień tygodnia, etc.) oraz inne parametry środowiska.
Pierwsza wersja narzędzia będzie działała następująco:
1. System użytkownika podaje "na żywo" lub w określonym interwale czasowym nowe zaistniałe zdarzenia poprzez HTTP API.
2. Moduł ML uczy się na bieżąco systemu użytkownika.
3. Moduł ML uczy się również ogólnie zachowań użytkowników z wielu systemów.
4. Moduł generowania predykcji generuje sugestie co powinno zadziać się w systemie użytkownika.
5. System użytkownika poprzez HTTP API lub webhook może pobierać dla siebie sugestie działań.
Predykcje generowane będą w dwóch trybach: poprzez uczenie się konkretnego systemu (tak mamy to uruchomione w tej chwili) oraz poprzez naukę z wielu systemów i sugerowanie dodatkowych działań użytkownikowi z wzorców znalezionych w przekroju danych z różnych systemów.
W pierwszej wydawanej wersji skupiamy się na działaniach związanych z komfortem użytkownika. Kilka przykładów:
- Jeżeli dane światło jest wyłączane zawsze w określonych +/- godzinach i dniach i/lub gdy czujniki nie wykrywają żadnego ruchu (bo np. wszyscy domownicy są w pracy) - zasugeruj jego wyłączenie, jeśli pozostało włączone.
- Jeżeli rolety są zawsze zamykane na noc w dni powszednie - zasugeruj ich zamknięcie wieczorem, jeśli to się nie stało.
- Jeśli światło na piętrze / w przedpokoju jest zazwyczaj wyłączane, gdy czujniki ruchu nie wykrywają tam ruchu przez określoną ilość czasu - zasugeruj wyłączenie światła.
- Jeżeli użytkownik zazwyczaj zmienia nastawy termostatów przy określonej zmianie temperatury zewnętrznej, ale tylko gdy ktoś jest w domu - zasugeruj takie działanie.
- Wykryj, że użytkownik zapomniał wyłączyć żelazko i zasugeruj mu jego wyłączenie.
Następnie, jeżeli narzędzie będzie po dopracowaniu działało zadowalająco, rozszerzymy uczenie i predykcje o dodatkowe typy urządzeń np. związane z bezpieczeństwem. Przykładowo:
- Jeżeli w godzinach porannych drzwi zewnętrzne zostały zamknięte, brama otwarta i zamknięta, w domu nie ma żadnego ruchu od x czasu a alarm nie został uzbrojony (a zazwyczaj w takiej sytuacjach jest uzbrajany) - zasugeruj jego uzbrojenie.
Oczywiście są to tylko wymyślone przez nas przykłady oraz przykłady, które system nauczył się sugerować na próbkach danych, na których do tej pory bazowaliśmy. Im więcej dostaniemy danych, tym więcej sytuacji będziemy w stanie się uczyć i przewidywać. Również takich, na które nigdy byśmy nie wpadliśmy, aby podać je w przykładach.
Narzędzie będzie zwracać sugestie dla danego systemu / użytkownika co powinno wg wnioskowania zadziać się w danym czasie. Nie będzie wykonywało żadnych akcji w systemie użytkownika, nie będzie generowało scen - pozostawiamy użytkownikowi końcowemu co chce zrobić z takimi sugestiami. Producent automatyki domowej może wdrożyć to rozwiązanie masowo dla użytkowników, którzy wyrażą na to zgodę. Użytkownik indywidualny może stworzyć integrację czy widget - o ile pozwala mu na to rozwiązanie, które posiada - który wyświetli mu sugestie do wykonania np. w aplikacji mobilnej.
Z naszych doświadczeń wynika, że systemy Smart Home pozwalają po pierwsze na sterowanie urządzeniami bez konieczności podchodzenia do nich (np. z aplikacji mobilnej), po drugie na automatyzację pewnych serii zdarzeń (np. poprzez sceny). My chcemy wprowadzić w końcu do tych systemów trochę inteligencji.