Po zainstalowaniu systemu i skonfigurowaniu domoticz'a oraz swoich skryptów warto by mieć jakiś programik, który pilnuje tego, aby skrypty były zawsze uruchomione a po ewentualnym zawieszeniu wznawiało ich pracę. I tu z pomocą przychodzi supervisor: http://supervisord.org
Instalacja supervisor sprowadza się do wydania polecenia: sudo apt-get install supervisor
Po instalacji konfigurujemy program: sudo nano /etc/supervisor/supervisord.conf
Otworzy nam się plik konfiguracyjny, który konfigurujemy w następujący sposób:
; supervisor config file
[unix_http_server]
file=/var/run/supervisor.sock ; (the path to the socket file)
chmod=0770 ; sockef file mode (default 0700)
chown=root:supervisor
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[inet_http_server] ; inet (TCP) server disabled by default
port=9001 ; (ip_address:port specifier, *:port for all iface)
username=użytkownik_logowania ; (default is no username (open server))
password=hasło_do_logowania; (default is no password (open server))
[include]
files = /etc/supervisor/conf.d/*.conf
W sekcji inet_http_server podajemy port pod którym będzie strona www, nazwa użytkownika i hasło, pod jakimi będziemy się logować. Strona wygląda następująco:
Jak widać mamy uruchomione (i monitorowane) 4 skrypty. Z poziomu www możemy je zatrzymać, zresetować zarówno pojedyńczo jak i wszystkie na raz.
Jeśli chcemy mieć jakiś skrypt monitorowany to tworzymy pllik *.conf w katalogu /etc/supervisor/conf.d np. sudo nano /etc/supervisor/conf.d/kamerka.conf i w otwarty plik wklejamy:
[program:kamerka]
command = /home/pi/domoticz/scripts/bash/kamerka.sh
directory = /home/pi/domoticz/scripts/bash
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/kamerka.log
stderr_logfile = /var/log/supervisor/kamerka_err.log
gdzie:
program: tu nazwa programu
command to ścieżka do naszego pliku
directory to katalog, gdzie ten plik się znajduje
autostart i autorestart: wyjaśniać chyba nie trzeba, same nazwy mówią wszystko
no i ostatnie 2 linijki to ścieżki do plikow, gdzie zapisywać będą się logi.
Plik o takiej treści tworzymy dla każdego skryptu, zmieniając tylko ścieżkę i nazwę pliku.
Jeśli mamy jakieś błędy w dostępie do plików to wykonujemy następujące polecenia:
sudo groupadd supervisor
sudo usermod -a nazwa_uzytkownika_np_pi -G supervisor
Po każdym dodaniu nowego configa musimy
przeładować supervisor poleceniem: supervisorctl reload
lub: supervisorctl reread
supervisorctl update
I to na tyle, mamy super narzędzie skonfigurowane w prosty sposób