2. Co to jest?
● wielowarstwowy system do zdalnego
monitorowania i sterowania
● zdalny – aplikacja internetowa
● uniwersalny – brak ograniczeń co do
zastosowania
● modułowy – proste włączanie modułów które
są potrzebne
● otwarty – GPLv3 (wyjątki w przyszłości)
3. Historia
Czas Wydarzenie
2007, wakacje instalacja obiektu (el. wiatrowa)
2008, marzec awaria, rozpoczęcie prac nad
poprzednikiem HomeIO
2008.08.22 14:21:50 pierwszy zarejestrowany pomiar
2009, styczeń rozpoczęcie rejestracji danych
pogodowych
2010, listopad rozpoczęcie prac nad HomeIO
2011.04.24 rozpoczęcie migracji poprzedniego
systemu na HomeIO
2011.04.25 30M zarejestrowanych pomiarów w
bazie
5. Hardware/firmware
● Udział w projektowaniu
● Atmega32
● Firmware w C
● Dowolny typ urządzeń wejścia i wyjścia:
– czujniki (napięcie, prąd, temperatura, …)
– el. wykonywawcza (przekaźniki, ...)
6. Backend (1)
● pobieranie pogody
– czym się różni METAR od „zwykłej” pogody
(pewność, niedokładne opady, częstotliwość)
● MetarLogger
● WeatherRipper
● dostawcy pogody
● pobieranie pomiarów
– jak działa pobieranie pomiarów (IoServer), kiedy
są zapisywane
● MeasurementFetcher
7. Backend (2)
● wykonywanie akcji
– czym się różni akcja od pomiaru:
● pomiary: nie zmieniają stanu, wykonywane regularnie
● akcje: mogą zmieniać stan systemu, wykonywane
przez użytkownika lub Overseer
– ActionManager
● nadzorcy:
– idea działania Overseer'ów, specjalne typy
Overseer
– OverseerManager
8. Backend (3)
● zachowywanie danych
– dlaczego na początku sqlite i pliki tekstowe
● komunikacja
– port szeregowy a ruby (pod windowsem)
– dlaczego IoServer (100ms vs 4.5ms)
● inne
– boty IM (xmpp, problemy z ruby 1.9, gg)
– prosty serwer http/json dla pomiarów
– kolejka zadań
– analiza spalania w piecu a temperatura, wiatr
9. Frontend (1)
● administrator:
– zarządzanie kontami użytkowników
– określanie uprawnień do frontendu oraz akcji
(backendu)
– edycja ustawień Overseer'ów
– ...
10. Frontend (2)
● użytkownik:
– aktualne pomiary
– archiwalne pomiary
– lista wykonanych akcji
– przeglądanie ustawień Overseer'ów
– wykresy: pomiary, dane pogodowe
– powiadamianie: ustawienia
– edycja harmonogramu akcji (np. wyłączenie
obiektu w nocy)
– statystyki i analizy
– ...
11. Gemy (backend)
● rubyserialport – komunikacja przez RS232
– instalacja pod windowsem
– kwestie wydajności
● foreigner – więzy integralności w migracjach
– on update no action
● geokit – obliczenia geograficzne
● robustthread
– wątek nie umiera gdy proces umiera
● xmpp4r (użyty) vs jabber4r
● rgadu
12. Gemy (frontend)
● simplenavigation – ujednolicone menu
● authlogic
● gRaphael (JS) – biblioteka do wykresów
– niska popularność wykresów generowanych przez
serwer
– imagemagick (konieczność instalacji)
13. Problemy
● Czas
– aktualizacja testów
– wykorzystanie gemów lub wyrzucenie fragmentu
kodu jako własny gem
– optymalizacja, refaktoring i inne porządki
– dokończenie funkcjonalności