Gdy dwa lata temu tworzyłem poprzedni system podlewania ogródka, który opisałem gościnnie na Nibyblogu, wiedziałem, że musi być sterowany „przez Internet”, z możliwością autonomicznego działania. Nie znałem jeszcze wtedy Arduino, a rozwiązanie zostało oparte o kartę przekaźnikową podłączoną przez USB do routera. Nie powiem, żeby źle działało, ale pora w zabawie pójść dalej. Pretekstem ku temu jest chęć rozbudowy mojego systemu inteligentnego domu z użyciem Arduino. System podlewania ma być swego rodzaju poligonem doświadczalnym – na nim będę testował stabilność rozwiązania i tworzył pierwsze wersje oprogramowania, którego kawałki potem użyję potem w głównym module.
Nadal zakładam, że nadrzędnym elementem w systemie będzie router z OpenWRT z oprogramowaniem głównie w php. Arduino za to będzie posiadać większą autonomię. Nie będzie, jak karta przekaźnikowa, dostawać prostych poleceń – włącz, wyłącz, przełącz, tylko bardziej złożone, w rodzaju – podlewaj trawę przez 20 minut a pozostałe przez 15. Arduino będzie wykonywać te polecenia i raportować do routera. Co na tym zyskuję? Jeżeli podczas podlewania zawiesi się router, wystąpią problemy z programem w php (np. padnie system plików, pendrive albo hub usb), to czynność zostanie dokończona, a przede wszystkim zatrzymana zgodnie z planem. Jeżeli natomiast popsułoby się Arduino, to router mnie o tym poinformuje i będę miał szansę interweniować.
Co więcej, zyskuję możliwość wprowadzenia, przynajmniej częściowej, odporności na awarię głównego routera sterującego. W przypadku gdy przestanie on działać lub program sterujący nie będzie odpowiadać, chciałbym, żeby jego funkcję przejęło inne urządzenie. Wszak w domu są 3 routery z OpenWRT, więc możliwości jest sporo i zakładam, że przynajmniej część funkcji mogą realizować wymiennie. Co prawda innym założeniem jest, że system nie ma być używany do zastosowań „krytycznych”, czyli takich, których niewykonanie lub złe wykonanie mogłoby czymś poważnym zgrażać, ale czemu ma wyschnąć trawnik przez awarię routera, gdy można się przed tym zabezpieczyć? Będzie więc mój system podlewania pracował w „klastrze niezawodnościowym”… A co? Trzeba mieć fantazję. Oczywiście nie zabezpieczy to przed awarią Arduino, ale o tym zostałbym powiadomiony.
Czytaj dalej →