From eb264ba0833d0c721df1638704f5693d790b02b5 Mon Sep 17 00:00:00 2001 From: Daniel Wenzel Date: Mon, 31 Jan 2022 22:21:26 +0100 Subject: [PATCH] =?UTF-8?q?'check=5Floxone=5Fklima.sh'=20hinzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- check_loxone_klima.sh | 85 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 check_loxone_klima.sh diff --git a/check_loxone_klima.sh b/check_loxone_klima.sh new file mode 100644 index 0000000..15c513e --- /dev/null +++ b/check_loxone_klima.sh @@ -0,0 +1,85 @@ +#!/bin/bash +# Return Codes: +# 0 - Ok! - Up +# 1 - Warning - Flaky +# 2 - Critical - Down +# 3 - Unknown - Ummm... What happened?! + +print_usage() { + echo "Usage: check_loxone_klima.sh [Raumkürzel] [Abweichung Warning] [Abweichung Critical]" + echo "Beispiel: check_loxone_klima.sh AK 2 3" +} + +function beenden { + exit $1 +} + +#Parameter prüfen +if [ $# -ne 3 ]; then + print_usage + beenden 3 +fi + +RAUMNAME=$1 +WARNSCHWELLE=$2 +CRITSCHWELLE=$3 + +TEMPIST=$(curl -s http://nhi-00-sl-iobk:1880/Icinga_${RAUMNAME}_Temp_Ist) +if [ $? -ne 0 ] ; then + echo "Fehler beim Abrufen der Temperatur" + beenden 3 +fi + +echo $TEMPIST | grep "Cannot GET" > /dev/null +if [ $? -eq 0 ] ; then + echo "NodeRED hat den Wert nicht gefunden" + beenden 3 +fi + +TEMPSOLL=$(curl -s http://nhi-00-sl-iobk:1880/Icinga_${RAUMNAME}_Temp_Soll) +if [ $? -ne 0 ] ; then + echo "Fehler beim Abrufen der Temperatur" + beenden 3 +fi + +echo $TEMPSOLL | grep "Cannot GET" > /dev/null +if [ $? -eq 0 ] ; then + echo "NodeRED hat den Wert nicht gefunden" + beenden 3 +fi + +#if [ $TEMPIST -eq $TEMPSOLL ] ; then +if (( $(echo "$TEMPIST == $TEMPSOLL" | bc -l) )); then + echo "Soll- und Ist-Temperatur von ${RAUMNAME} ist gleich | temp_soll=${TEMPSOLL} temp_ist=${TEMPIST} temp_diff=0" + beenden 0 +fi + +if (( $(echo "$TEMPIST < $TEMPSOLL" | bc -l) )); then + TEMPDIFF=$(echo "$TEMPSOLL - $TEMPIST" | bc) +else + TEMPDIFF=$(echo "$TEMPIST - $TEMPSOLL" | bc) +fi + +if (( $(echo "$TEMPDIFF < 1" | bc -l) )); then + TEMPDIFFNULL="0${TEMPDIFF}" +else + TEMPDIFFNULL=${TEMPDIFF} +fi + +if (( $(echo "$TEMPDIFF < 0" | bc -l) )); then + echo "Fehler bei der Differenzberechnung" + beenden 3 +fi + +if (( $(echo "$TEMPDIFF > $CRITSCHWELLE" | bc -l) )); then + echo "Critical: Temperaturdifferenz von ${RAUMNAME} bei ${TEMPDIFFNULL}°C | temp_soll=${TEMPSOLL} temp_ist=${TEMPIST} temp_diff=${TEMPDIFFNULL}" + beenden 2 +elif (( $(echo "$TEMPDIFF > $WARNSCHWELLE" | bc -l) )); then + echo "Warning: Temperaturdifferenz von ${RAUMNAME} bei ${TEMPDIFFNULL}°C | temp_soll=${TEMPSOLL} temp_ist=${TEMPIST} temp_diff=${TEMPDIFFNULL}" + beenden 1 +else + echo "OK: Raumtemperatur von ${RAUMNAME} ist im Sollbereich, Abweichung ${TEMPDIFFNULL}°C | temp_soll=${TEMPSOLL} temp_ist=${TEMPIST} temp_diff=${TEMPDIFFNULL}" + beenden 0 +fi + +beenden 0 \ No newline at end of file