ZABBIX_GATEWAY do SERWERA ZABBIX
Gateway dotyczy sterowników Sonoff-TH10 i Sonoff-TH16, które nie mają wbudowanej w firmware obsługi serwera Zabbix.
Ma on za zadanie przekazywać dane z serwera SUPLA do systemu ZABBIX poprzez odpytywanie serwera SUPLA co jedną minutę i zapisywanie tych danych na serwerze ZABBIX.
GATEWAY – INSTALACJA:
Gateway można uruchomić na dowolnym komputerze z systemem Linux. Może to być ten sam komputer, na którym jest uruchomiona własna instancja serwera SUPLA, najtańszy VPS lub dowolna wersja mikrokomputera z rodziny Raspberry (nawet nanoPi). Testy były przeprowadzone na VPS-ie z systemem Debian 9, na którym pracują serwery SUPLA, ZABBIX, GRAFANA oraz na mikrokomputerze NanoPi.
1. Aby skrypt działał poprawnie należy wykonać poniższe instrukcje:
Code: Select all
sudo apt-get update
sudo apt-get install bc
apt install jq -y
https://djack.com.pl/modules.php?name=D ... it&lid=350
3. Po rozpakowaniu kopiujemy pliki th_gateway.sh oraz zabbix_sender do katalogu /usr/bin
Dla komputera z rodziny Raspberry plik zabbix_sender kopiujemy z podkatalogu Raspberry.
4. Nadajemy im odpowiednie atrybuty:
Code: Select all
sudo chmod a+rwx /usr/bin/th_gateway.sh
sudo chmod a+rx /usr/bin/zabbix_sender
1. Na serwerze SUPLA, dla sterownka z miernikiem temperatury, należy utworzyć linki bezpośrednie („do odczytu”) dla kanału pomiaru temperatuiry i kanału przekaźnika. Linki ten należy wpisać w skrypcie th_gateway.sh, jak opisano w pkt.2
2. Otwieramy skrypt th_gateway.sh w zwykłym edytorze (vi, nano).
Na początku skryptu są linie, w które należy wpisać opisane parametry:
#== Adres IP serwera Zabbix =========================
ZABBIX_SERVER="xxx.xxx.xxx.xxx"
#== Nazwa hosta na serwerze Zabbix ==================
HOST="termometr"
# == Linki bezpośrednie z serwera SUPLA (json) ==========
# == Link do THERMOMETER Channel ==================
SUPLA_LINK_THERM="https://......................./read?format=json"
# == Link do RELAY Channel ==========================
SUPLA_LINK_STATE="https://......................./read?format=json"
#================================================
Nazwa hosta może być dowolna (zgodna z nazwą określoną na serwerze Zabbix). W powyższym przykładzie jest „termometr”.
3. Wykonujemy polecenie:
Code: Select all
crontab –e
*/1 * * * * th_gateway.sh > /dev/null 2>&1
Skrypt wykonywany jest co jedną minutę.
W przypadku posiadania większej liczby sterowników można powielać kod skryptu w jednym pliku lub kopiować plik skryptu zmieniając mu nazwę.
W takim przypadku dobrze jest uruchamiać skrypty w cron-ie z opóźnieniem:
*/1 * * * * th_gateway.sh > /dev/null 2>&1
*/1 * * * * (sleep 10; th_gateway1.sh > /dev/null 2>&1)
*/1 * * * * (sleep 20; th_gateway2.sh > /dev/null 2>&1)
*/1 * * * * (sleep 30; th_gateway3.sh > /dev/null 2>&1)
*/1 * * * * (sleep 40; th_gateway4.sh > /dev/null 2>&1)
.....
Sterowniki z firmware obsługującym raportowanie do serwera Zabbix przesyłają informacje o zmianie stanu niemal natychmiast, natomiast
w przypadku gateway'a może to być z opóźnieniem max 1 min.
Dlatego też, gdy potrzebne jest częstsze rejestrowanie danych niż co 1 minutę można uzyć konstrukcji:
*/1 * * * * th_gateway.sh > /dev/null 2>&1
*/1 * * * * (sleep 10; th_gateway.sh > /dev/null 2>&1)
*/1 * * * * (sleep 20; th_gateway.sh > /dev/null 2>&1)
*/1 * * * * (sleep 30; th_gateway.sh > /dev/null 2>&1)
*/1 * * * * (sleep 40; th_gateway.sh > /dev/null 2>&1)
.....