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