#!/bin/bash
#
# Initialisierung
stty -F /dev/ttyUSB0 19200 min 0 -icanon -ixon brkint imaxbel
echo -en '\0001\0001\0000\0000' > /dev/ttyUSB0
#
# Endlosschleife
while true ; do
  LAMP=0
  RESULT=`echo "
    SELECT instance_id
    FROM nagios_hoststatus
    WHERE current_state <> 0
    AND problem_has_been_acknowledged = 0;"
    | mysql -u nagios -h db_host nagios | wc -l`
  if (( $RESULT > 0 )) ; then
    # Ein Host hat ein Problem -> Rotes Licht
    echo -en '\0003\0001\0004\0006' > /dev/ttyUSB0
    LAMP=1
    # Lampe ist gesetzt
  fi

  if [[ $LAMP = "0" ]] ; then
    RESULT=`echo "
      SELECT nagios_servicestatus.service_object_id
      FROM ((nagios_servicestatus
      INNER JOIN nagios_services
        ON nagios_servicestatus.service_object_id=nagios_services.service_object_id)
      INNER JOIN nagios_hosts
        ON nagios_services.host_object_id=nagios_hosts.host_object_id)
      INNER JOIN nagios_hoststatus
        ON nagios_hosts.host_id=nagios_hoststatus.hoststatus_id
      WHERE nagios_servicestatus.current_state > 1 AND
        nagios_servicestatus.problem_has_been_acknowledged=0 AND
        nagios_hoststatus.problem_has_been_acknowledged=0;"
      | mysql -u nagios -h db_host nagios | wc -l`
    if (( $RESULT > 0 )) ; then
      # Service ist kritisch -> Rote Lampe.
      echo -en '\0003\0001\0004\0006' > /dev/ttyUSB0
      LAMP=1
    fi
  fi

  if [[ $LAMP = "0" ]] ; then
    RESULT=`echo "
      SELECT nagios_servicestatus.service_object_id
      FROM ((nagios_servicestatus
      INNER JOIN nagios_services
        ON nagios_servicestatus.service_object_id=nagios_services.service_object_id)
      INNER JOIN nagios_hosts
        ON nagios_services.host_object_id=nagios_hosts.host_object_id)
      INNER JOIN nagios_hoststatus
        ON nagios_hosts.host_id=nagios_hoststatus.hoststatus_id
      WHERE nagios_servicestatus.current_state = 1 AND
        nagios_servicestatus.problem_has_been_acknowledged=0 AND
        nagios_hoststatus.problem_has_been_acknowledged=0;"
      | mysql -u nagios -h db_host nagios | wc -l`
    if (( $RESULT > 0 )) ; then
      # Service zeigt Warnung -> Gelbe Lampe.
      echo -en '\0003\0001\0002\0000' > /dev/ttyUSB0
      LAMP=1
    fi
  fi

  if [[ $LAMP = "0" ]] ; then
    # Keine Probleme -> GrĂ¼ne Lampe
    echo -en '\0003\0001\0001\0003' > /dev/ttyUSB0
  fi

  sleep 30
  LAMP=0
done