﻿#!/bin/bash
#exit code 0 - нет проблем
#exit code 1 - проблемы с snmp
#exit code 2 - датчик не подкдлючен или не исправен
#exit code 3 - Ниже нормы
#exit code 4 - выше нормы
#exit code 9 - что то пошло не так с получением информации с датчика

ip="192.168.0.100"
community="SWITCH"
humN=$1

if [ $1 = "-h" ] ; then
echo "get_relhumtemp1w.sh tempN"
exit
fi

currentTemp=$(snmpget -v1 -c ${community} -Ov -Oq ${ip} .1.3.6.1.4.1.25728.8400.1.1.4.${humN}) # текущая температура
statusTemp=$(snmpget -v1 -c $community -Ov -Oq $ip .1.3.6.1.4.1.25728.8400.1.1.5.${humN}) #статус датчика температуры
memo=$(snmpget -v1 -c $community -Ov -Oq $ip .1.3.6.1.4.1.25728.8400.1.1.6.${humN}) #памятка
botTemp=$(snmpget -v1 -c $community -Ov -Oq $ip .1.3.6.1.4.1.25728.8400.1.1.10.${humN}) #Нижняя граница температуры
topTemp=$(snmpget -v1 -c $community -Ov -Oq $ip .1.3.6.1.4.1.25728.8400.1.1.9.${humN}) #Верхняя граница температуры

currentHum=$(snmpget -v1 -c $community -Ov -Oq $ip .1.3.6.1.4.1.25728.8400.1.1.2.${humN}) # текущая влажность
statusHum=$(snmpget -v1 -c $community -Ov -Oq $ip .1.3.6.1.4.1.25728.8400.1.1.3.${humN}) # статус датчика влажности
botHum=$(snmpget -v1 -c $community -Ov -Oq $ip .1.3.6.1.4.1.25728.8400.1.1.8.${humN}) # нижняя граница влажности
topHum=$(snmpget -v1 -c $community -Ov -Oq $ip .1.3.6.1.4.1.25728.8400.1.1.7.${humN}) # верхняя граница влажности

#проверка на успешность получения данных
error=$?
if [ $error -ne 0 ] ; then
echo "Error code from SNMP - $error"
exit 1
fi


if [[ "$statusTemp" = "0" || "$statusHum" = "0" ]] ; then # датчик неисправен или не подключен
echo "Sensor not working or not connected"
exit 2
elif [[ "$statusTemp" = "1" || "$statusHum" = "1" ]] ; then # ниже нормы
	curl -s -i -XPOST "http://localhost:8086/write?db=netping" --data-binary "HT1 valueT=${currentTemp},lowT=${botTemp},highT=${topTemp},valueH=${currentHum},lowH=${botHum},highH=${topHum}" > /dev/null
echo "H${humN}=${currentHum} (${botHum}..${topHum}) | T${humN}=${currentTemp} (${botTemp}..${topTemp}) - один из показателей ниже нормы ${memo}"
exit 3
elif [[ "$statusTemp" = "3" || "$statusHum" = "3" ]] ; then # выше нормы
	curl -s -i -XPOST "http://localhost:8086/write?db=netping" --data-binary "HT1 valueT=${currentTemp},lowT=${botTemp},highT=${topTemp},valueH=${currentHum},lowH=${botHum},highH=${topHum}" > /dev/null
echo "H${humN}=${currentHum} (${botHum}..${topHum}) | T${humN}=${currentTemp} (${botTemp}..${topTemp}) - один из показателей выше нормы ${memo}"
exit 4
elif [[ "$statusTemp" = "2" || "$statusHum" = "2" ]] ; then # в норме
curl -s -i -XPOST "http://localhost:8086/write?db=netping" --data-binary "HT1 valueT=${currentTemp},lowT=${botTemp},highT=${topTemp},valueH=${currentHum},lowH=${botHum},highH=${topHum}" > /dev/null
echo "H${humN}=${currentHum} (${botHum}..${topHum}) | T${humN}=${currentTemp} (${botTemp}..${topTemp}) - в норме ${memo}"
exit 0
else
echo "Problem with H/T(${humN}). Please check manually."
exit 9
fi