monit - interfejs web

Domoticz cz. 8 – Stabilny Domoticz pracujący w trybie 24/7/365 – wysoka dostępność w domu

Domoticz od początku swojego istnienia próbował pogodzić wiele różnych celów:

  • dostępność róznych wtyczek i sprzętu
  • pomysły na automatyzację użytkowników
  • skrypty (LUA i niedawno Python) i mechanizmy if, then, else
  • integrację gotowych rozwiązań firm trzecich
  • integrację bibliotek open-source
  • obsługę różnych platform sprzętowych, w tym SBC, które często mają własne ograniczenia sprzętowe oraz wydajnościowe

W efekcie często początkujący jak i zaawansowany użytkownik system trafia na sytuację, gdy działający do dziś system – przestaje działać w ogóle, wymaga częstych restartów lub wznawiania usługi, albo też powoduje szybsze zużycie nośników danych – które są narażone na szybsze zużycie.

Czy istnieje proste  i skuteczne rozwiązanie podnoszące dostępność Domoticza na Raspberry Pi/Orange Pi?

 

Oczywiście. Najpierw KONIECZNIE zrób kopię karty (micro)SD z Raspberry Pi/Orange Pi.

UWAGA: Będziemy wykonywać operacje które mogą doprowadzić do utraty wszystkich danych – upewnij się więc że masz kopię!

Czego będziemy potrzebować?

Software:

  • monit
  • rsync

Hardware:

  • dysk twardy HDD lub SSD, mały dysk SSD jest preferowany – od 32GB do 128GB
  • trzy sztuki radiatorów dla Raspberry Pi/Orange Pi
  • adapter USB 2.0 lub 3.0 do SATA do podłączenia dysku przez wolny port USB

Do dzieła!

Plan jest bardzo prosty – należy podłączyć dysk twardy, przenieść (skopiować dane) na koniec sprawdzić czy mamy radiatory. Dysk typu SSD jest zalecany ze względu na długą żywotność i bezawaryjność oraz niewielki pobór mocy. Nawet dość stare konstrukcyjnie dyski, lub dyski z pamięcami NAND typu MLC/TLC – będą nam służyć bardzo długo. Na dysk przeniesiemy następujące zasoby:

  • /home – dom dla domoticza przy typie starszej instalacji
  • /root – tutaj także możemy spotkać domoticz’a
  • /var – często zmieniające się pliki

Wraz z przejściem na dysk twardy – nie należy zaniedbywać karty microSD; unikajmy kart no-name, o marnej reputacji, ale też weryfikujmy poprzez rejestrację na stronie producenta. Możemy również rozważyć karty „endurance”, ale zwykle ich cena zbliża się do ceny dysku twardego.

Po przeniesieniu szybko zmieniających się danych – ryzyko uszkodzenia karty ze względu na nieplanowany reset, czy też zużycie samej karty – będzie zdecydowanie zredukowane.

Pamiętaj także o umieszczeniu radiatorów – głównie na CPU, pamięci i kontrolerze. Stabilnie działające RPi – szczególnie wersja 3 – wymaga radiatorów.

Hardware – dysk SSD

Stojąc przed wyborem dysku musimy pamiętać o:

  • interfejs SATA
  • zasilanie 5V
  • pobór mocy – możliwe minimalny, najlepiej max 50% budżetu 800mA portu USB w Raspberry Pi 3, lub przy max_current=1 dla Raspberry Pi 2

Aby podłączyć dysk z interfejsem SATA, należy nabyć adapter USB-SATA dla dysków 2,5″ – przenoszący zintegrowane zasilanie. Godnymi polecenia są adaptery z jednym złączem USB 3.0 (niebieskie), zgodne z USB 2.0 oraz oparte na chipsecie JMicron. W przykładzie używam starego „mostka”, bez obsługi trim/ATA.

Należy przetestować podłączenie dysku do działającego Raspberry Pi, oraz podczas restartu – zwracamy uwagę czy nie zgaśnie czerwony LED, lub pojawi się ikona błyskawicy w przypadku podłączonego monitora przez HDMI/CVSB.

Po podłączeniu – identyfikujemy nowy dysk, dzięki komendzie „dmesg”:

Interpretując dane zauważamy, że jeśli jest to jedyny zewnętrzny dysk, to będzie w systemie widziany jako /dev/sda, a dodatkowo pierwsza partycja to /dev/sda1. Należy następnie sforatować nasz nowy dysk (utracimy na nim wszystkie dane!) – wybieramy bezpieczny format – ext4. (można też rozważyć B-tree File System zwany też Butter FS – ale jednak mówimy tu o stabilności).

Zainstalujmy nowe oprogramowanie:

Formatujemy komendą na Raspberry Pi/Orange Pi, upewniając się, że jest to podłączony przez nas dysk! Formatowanie usunie wszystkie dane jakie znajdują się aktualnie na dysku.

Następnie aby przetestować – montujemy – a więć mówimy systemowi operacyjnemu aby zaczął używać dysku:

W dmesg powinniśmy zobaczyć log:

Uzupełniamy plik /etc/fstab o następujące wpisy na początku:

Teraz należy wyłączyć wszystkie usługi oprócz sshd – po to aby przenieść ważne pliki systemowe na dysk SSD. Praktycznie taką operacją zgodnie ze sztuką należałoby wykonać na osobnym komputerze, bez uruchomionego systemu – ale ryzyko jest minimalne.

Kopiujemy zawartość /home /root i /var na SSD.

Weryfikujemy:

Powinno nam dać długą listę plików i katalogów.
Reboot i po restarcie powinnyśmy zobaczyć:

Wynik:

Stabilne oprogramowanie – monit

Domoticz to program rozbudowany, często złożny z kodu o różnej jakości i dynamice rozwoju. W rezultacie, dodanie nawet niewinnego czujnika czy funkcji może spowodować destabilizację – nawet wersji stabilnej. Niezłym lekarstwem na syndrom „Domoticz offline” jest monit – program monitorujący działanie domoticza (oczywiście nie tylko) uruchamiający go ponownie, oraz posiadający schludny interfejs WWW.

Edytujemy plik /etc/monit/monitrc i odnajdujemy sekcję – która modyfikujemy (port ‚httpd’ oraz TAJNE_HASLO):

Następnie na końcu tworzymy sekcję dla domoticza (zakładamy że pracuje na porcie 8080 i nie wymaga username/password dla połączeń z localhost):

Uruchamiamy monit:

Uruchamiamy przegladarkę i logujemy się na stronę adres IP domoticza, na wybrany port – tutaj 8888, logujemy się zgodnie z konfiguracją i powinniśmy otrzymać:

monit - interfejs web
monit – interfejs web

Kilka uwag na koniec pierwszej części: Dyski SSD najlepiej używać wraz z obsługą trim, której większość mostków nie przenosi. Oznacza to, że najlepiej raz na pół roku – warto podłączyć przy okazji backupu karty micro SD nasz dysk SSD do większego PC z interfejsem SATA, a następnie wykonać komendę fstrim.

Jednocześnie pamiętaj – że takie rozwiązanie nie daje 100% gwaracji, ale jest krokiem do podniesienia stabilności i żywności systemu. W następnej części opiszę kopię i montowanie zasobów sieciowych (NFS) na zewnętrzny NAS, oraz użycie zasilania zapasowego (UPS).