Uwaga!
Jeżeli trafiłeś tutaj szukając opinii o inteligentnym gniazdku WiFi Ferguson FS1PG – to raczej nie kupuj go, o ile nie masz zamiaru bawić się nim tak jak ja. Dostarczone przez producenta rozwiązania są dalekie od ideału.
W moim mieszkaniu mam jeden mały, ale bardzo dokuczliwy problem z ogrzewaniem gazowym. Kilka lat temu zainstalowany w nim Junkers zaczął się co jakiś czas wyłączać samoczynnie, sygnalizując alarm – początkowo zdarzało się to raz na kilka tygodni, ale ostatnią wiosną częstotliwość wzrosła i problem występuje już co około dwie godziny. Defekt został rozpoznany, ale jest bardzo trudny do naprawienia ze względu na dostępność części – pozostało mi więc czekać na reakcję właściciela mieszkania i przyzwyczaić się do wyłączania alarmu za pomocą świecącego, czerwonego guzika.

Przyzwyczajenie musiałem jednak szybko zmienić. Najpierw guzik się złamał i anulowanie alarmu możliwe było tylko przez wyłączenie i włączenie urządzenia, a dodatkowo nastąpiło nagłe załamanie pogody. A ja bardzo nie chcę spać bez ogrzewania i nie będę co godzinę wstawał żeby zresetować szwankujący piec – coś musi wyłączać ten alarm za mnie.
Pierwsze rozwiązanie o jakim pomyślałem to mikrokontroler z przekaźnikiem który symulowałby anulowanie alarmu, ale prawie od razu je odrzuciłem – grzebanie w starym Junkersie to nie jest najbezpieczniejsza zabawa, tak samo jak anulowanie alarmów bez zastanowienia i dodatkowo zanim zbuduję coś takiego, będę musiał przetrwać kilka zimnych nocy.
A może rozwiązanie szybkie i zupełnie nieinwazyjne? Które dodatkowo będzie w stanie inteligentnie wykryć stan alarmowy? Piec w takim stanie uruchamia pompę, więc analizując sam pobór mocy powinienem być w stanie wykryć co się z nim dzieje. A co pozwoli mi zmierzyć moc i jednocześnie odcinać resetować prądowo piec? „Inteligentne” gniazdko sterowane przez WiFi! Inteligentne w cudzysłowie, bo zanim takie się stanie, trzeba będzie odciąć się od tego co dostarczył do niego producent.

Gniazdko dotarło do mnie błyskawicznie i po jego uruchomieniu potwierdziła się pierwsza część moich obaw – aplikacja do sterowania nim mimo że wyglądała profesjonalnie, była toporna w obsłudze. Samo skonfigurowanie gniazdka udało mi się chyba tylko przypadkiem za trzecią z kolei próbą, a jego przełączanie działało losowo. Wyświetlanie poboru mocy nigdy nie zadziałało poprawnie. Koniec tej zabawy – pomyślałem – i zabrałem się za rozpracowywanie tego urządzenia.

Szybkie skanowanie portów nie pokazało niczego ciekawego, poza nazwą producenta wywiedzioną z adresu MAC – jest nią firma o swojsko brzmiącej nazwie Shenzhen Ogemray Technology. Sprzedaje ona te urządzenia po 16 dolarów w paczkach po 100 sztuk. Nazwa producenta pozwala znaleźć jeszcze jedno – kilka projektów które starały się rozpracować sterowanie tym urządzeniem i które okazały się bardzo pomocne.

Wystarczy wysłać jeden pakiet UDP i… już! Sterowanie działa! Wszystko czego trzeba, to być w tej samej sieci co gniazdko, znać jego adres MAC (co nie jest trudne, bo co kilka sekund wysyła ono wiadomość rozgłoszeniową przedstawiając się wszystkim) i można nim sterować do woli. Typowy dla internetu rzeczy dramat.
Wyłączać i włączać mogę, więc połowa zadania już gotowa. Niestety żaden znaleziony projekt nie analizował kwestii analizy poboru mocy, który jest dla mnie kluczowy. Żeby to zrobić, włączyłem Wiresharka i w pętli wysyłałem pakiet z zapytaniem o stan urządzenia co jedną sekundę.

Odkurzacz był doskonałym urządzeniem testowym – nie tylko musiałem poodkurzać, ale dzięki regulowanej mocy mogłem sprawdzić czy jakieś pole w zrzucie będzie zmieniać się zgodnie z ruchem pokrętła. Z włączonym Wiresharkiem regulowałem moc od najniższej do najwyższej.

Analiza była łatwiejsza niż myślałem – poza kilkoma licznikami w środku pakietu zwrotnego, zmienia się tylko jego końcówka. Łatwo można w niej zidentyfikować licznik sekund, licznik całkowitego poboru mocy i pobór chwilowy. Jednostek nie znam (miliwaty?), ale nie są dla mnie ważne – wszystko co muszę jeszcze zrobić to dopasować wartości tego pola do stanów pieca i zautomatyzować wyłączanie!
Napisałem krótki skrypt odpytujący gniazdko o pobieraną moc i podłączyłem Junkersa. Udało mi się zidentyfikować cztery poziomy wartości, zależne od stanu pieca:
Stan | Pobór mocy |
Wyłączony | 5800 |
Ogrzewanie mieszkania | 120000 |
Ogrzewanie wody | 110000 |
Praca pompy | 94000 |
Podczas stanu alarmowego pracuje tylko pompa i niestety nie da się go odróżnić od normalnej pracy pompy tylko za pomocą pomiaru prądu – pozostaje ona włączona przez około dwie minuty po tym, jak piec skończy ogrzewać mieszkanie. I właśnie połączenie wartości z tą obserwacją daje wszystko co jest potrzebne, aby ostatecznie rozwiązać mój problem.
Zaprogramowałem skrypt tak, aby resetował piec gdy pompa włączy się „sama” przy stanie czuwania i wtedy kiedy pompa pracuje dłużej niż 5 minut. Skrypt pracował przez całą noc i kiedy o poranku nie trząsłem się z zimna, już wiedziałem że spisał się doskonale – zresetował Junkersa poprawnie cztery razy.
Zostaje tylko przepisać skrypt tak, aby mógł pracować na jedynym ciągle włączonym komputerze w moim domu – routerze i oczywiście zablokować komunikację gniazda ze światem zewnętrznym. I można już spać spokojnie!
