check_loxone_klima.sh 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/bin/bash
  2. # Return Codes:
  3. # 0 - Ok! - Up
  4. # 1 - Warning - Flaky
  5. # 2 - Critical - Down
  6. # 3 - Unknown - Ummm... What happened?!
  7. print_usage() {
  8. echo "Usage: check_loxone_klima.sh [Raumkürzel] [Abweichung Warning] [Abweichung Critical]"
  9. echo "Beispiel: check_loxone_klima.sh AK 2 3"
  10. }
  11. function beenden {
  12. exit $1
  13. }
  14. #Parameter prüfen
  15. if [ $# -ne 3 ]; then
  16. print_usage
  17. beenden 3
  18. fi
  19. RAUMNAME=$1
  20. WARNSCHWELLE=$2
  21. CRITSCHWELLE=$3
  22. TEMPIST=$(curl -s http://nhi-00-sl-iobk:1880/Icinga_${RAUMNAME}_Temp_Ist)
  23. if [ $? -ne 0 ] ; then
  24. echo "Fehler beim Abrufen der Temperatur"
  25. beenden 3
  26. fi
  27. echo $TEMPIST | grep "Cannot GET" > /dev/null
  28. if [ $? -eq 0 ] ; then
  29. echo "NodeRED hat den Wert nicht gefunden"
  30. beenden 3
  31. fi
  32. TEMPSOLL=$(curl -s http://nhi-00-sl-iobk:1880/Icinga_${RAUMNAME}_Temp_Soll)
  33. if [ $? -ne 0 ] ; then
  34. echo "Fehler beim Abrufen der Temperatur"
  35. beenden 3
  36. fi
  37. echo $TEMPSOLL | grep "Cannot GET" > /dev/null
  38. if [ $? -eq 0 ] ; then
  39. echo "NodeRED hat den Wert nicht gefunden"
  40. beenden 3
  41. fi
  42. #if [ $TEMPIST -eq $TEMPSOLL ] ; then
  43. if (( $(echo "$TEMPIST == $TEMPSOLL" | bc -l) )); then
  44. echo "Soll- und Ist-Temperatur von ${RAUMNAME} ist gleich | temp_soll=${TEMPSOLL} temp_ist=${TEMPIST} temp_diff=0"
  45. beenden 0
  46. fi
  47. if (( $(echo "$TEMPIST < $TEMPSOLL" | bc -l) )); then
  48. TEMPDIFF=$(echo "$TEMPSOLL - $TEMPIST" | bc)
  49. else
  50. TEMPDIFF=$(echo "$TEMPIST - $TEMPSOLL" | bc)
  51. fi
  52. if (( $(echo "$TEMPDIFF < 1" | bc -l) )); then
  53. TEMPDIFFNULL="0${TEMPDIFF}"
  54. else
  55. TEMPDIFFNULL=${TEMPDIFF}
  56. fi
  57. if (( $(echo "$TEMPDIFF < 0" | bc -l) )); then
  58. echo "Fehler bei der Differenzberechnung"
  59. beenden 3
  60. fi
  61. if (( $(echo "$TEMPDIFF > $CRITSCHWELLE" | bc -l) )); then
  62. echo "Critical: Temperaturdifferenz von ${RAUMNAME} bei ${TEMPDIFFNULL}°C | temp_soll=${TEMPSOLL} temp_ist=${TEMPIST} temp_diff=${TEMPDIFFNULL}"
  63. beenden 2
  64. elif (( $(echo "$TEMPDIFF > $WARNSCHWELLE" | bc -l) )); then
  65. echo "Warning: Temperaturdifferenz von ${RAUMNAME} bei ${TEMPDIFFNULL}°C | temp_soll=${TEMPSOLL} temp_ist=${TEMPIST} temp_diff=${TEMPDIFFNULL}"
  66. beenden 1
  67. else
  68. echo "OK: Raumtemperatur von ${RAUMNAME} ist im Sollbereich, Abweichung ${TEMPDIFFNULL}°C | temp_soll=${TEMPSOLL} temp_ist=${TEMPIST} temp_diff=${TEMPDIFFNULL}"
  69. beenden 0
  70. fi
  71. beenden 0