Test Damoclès 1208 via SNMP (part2)

Maintenant que les compteurs remontent sur domoticz, amusons nous un peu à « domotiser » la boite aux lettres et la sonnette.
J’ai préalablement passé un câble pour récupérer les impulsions de mon compteur de gaz, et éventuellement celle de mon compteur d’eau de ville (lorsqu’il sera équipé d’une sortie impulsion). J’ai profité de l’occasion pour prévoir deux paires de plus pour remonter les événements de la boite aux lettres.
j’ai choisi d’ajouter deux micro-contacts, un sur le volet du courrier, l’autre sur la porte.

IMG_3056IMG_3057

Le premier vient renseigner l’état d’un switch virtuel Lettres, le deuxième un switch paquet.
Il faut maintenant faire remonter ces informations ainsi que la future sonnette sur domoticz via le SNMP.
Petit « hic » le SNMP ce n’est pas instantané.
Il y a un certain délai entre le changement d’état et la scrutation via le script lancé par le crontab.
L’entrée sera repassée à zéro avant que le script soit lancé.
heureusement il existe les trap SNMP. Cela permet de remonter des informations type alarmes directement.
Le damoclés devient émetteur d’une alarme et le raspberry « écoute » un port dans l’éventualité d’une alarme.
penser à configurer l’ip de destination des trap dans le damoclès
snmp trap
Nous allons donc nous servir de cette fonction.

Editer le fichier

/etc/default/snmpd

et mettre le paramètre

TRAPDRUN=yes

relancer le service SNMPD via

sudo service snmpd restart

Ensuite éditer le fichier

/etc/snmp/snmptrapd.conf

Pour ajouter le lien vers le fichier dans lequel vous allez configurer les différentes alarmes à générer.

/home/pi/domoticz/scripts/sh/trap_handler

le contenu de mon fichier trap_handler :

#!/bin/sh -e
date=`date`
echo ">>>>>>>>>>> trap_handler " $date " < <<<<<<<<<<<<<<<<<<" >> /var/log/traps
read host
read ip
read uptime
read oid
read value
read value2
read state
read input
read name
case $input in 
		*1) etat=1 ;; #&& echo ">>>>>>>>>>>>>>>>>>UN< <<<<<<<<<<<<<<<<<<<<<<" >> /var/log/traps ;; 		
		*0) etat=0 ;; #&& echo ">>>>>>>>>>>>>>>>>>ZERO< <<<<<<<<<<<<<<<<<<<<<<<<" >> /var/log/traps ;; #/home/pi/domoticz/scripts/sh/sonnette.sh 
		*);;		
esac
case $state in 
		*Paquet*)  paquet=1 ;; #&& echo ">>>>>>>>>>>>>>>>>>appui Paquet< <<<<<<<<<<<<<<<<<<<<<<" >> /var/log/traps ;; 
		*Lettre*)  lettre=1 ;; #&& echo ">>>>>>>>>>>>>>>>>>appui Paquet< <<<<<<<<<<<<<<<<<<<<<<" >> /var/log/traps ;;
		*Sonnette*) sonnette=1 ;; #&& echo ">>>>>>>>>>>>>>>>>>appui Sonnette< <<<<<<<<<<<<<<<<<<<<<<<<" >> /var/log/traps ;; #/home/pi/domoticz/scripts/sh/sonnette.sh 
		*);; 		
esac
if [ $paquet = 1 ] && [ $etat = 1 ]; then
					/home/pi/domoticz/scripts/sh/out.sh paquet && echo "========================Paquet est à UN========================" >> /var/log/traps
elif  [ $paquet = 1 ] && [ $etat = 0 ]; then
					echo "========================Paquet est à ZERO========================" >> /var/log/traps
elif  [ $lettre = 1 ] && [ $etat = 1 ]; then
					/home/pi/domoticz/scripts/sh/out.sh lettre && echo "========================Lettre est à UN========================" >> /var/log/traps					
elif  [ $lettre = 1 ] && [ $etat = 0 ]; then
					echo "========================Lettre est à ZERO========================" >> /var/log/traps	
elif  [ $sonnette = 1 ] && [ $etat = 1 ]; then
					/home/pi/domoticz/scripts/sh/out.sh sonnette_ON && echo "========================Sonnette est à UN========================" >> /var/log/traps					
elif  [ $sonnette = 1 ] && [ $etat = 0 ]; then
					/home/pi/domoticz/scripts/sh/out.sh sonnette_OFF && echo "========================Sonnette est à ZERO========================" >> /var/log/traps	
fi

et celui de mon fichier out.sh

#!/bin/bash
# Settings
# chmod +x /home/pi/domoticz/scripts/sh/out.sh
# sudo /home/pi/domoticz/scripts/sh/out.sh
DAMOCLES_IP="192.168.10.200"         #  IP Address damocles
PASSWORD="private"         # SNMP Password
DOMO_IP="192.168.10.240"      # Domoticz IP Address
DOMO_PORT="8080"         # Domoticz Port
DAMOCLES_IDX="150"              # DAMOCLES IDX Etat équipement
DOMOTICZ_INT_1_IDX="157"        # DOMOTICZ IDX interrupteur1
DAMOCLES_OUT_1_IDX="158"        # DAMOCLES IDX Sortie1
DOMOTICZ_INT_2_IDX="159"        # DOMOTICZ IDX interrupteur2
DAMOCLES_OUT_2_IDX="160"        # DAMOCLES IDX Sortie2
DOMOTICZ_INT_3_IDX="161"        # DOMOTICZ IDX interrupteur3
DAMOCLES_OUT_3_IDX="162"        # DAMOCLES IDX Sortie3
PAQUET_IDX="308"
LETTRE_IDX="309"
SONNETTE_IDX="319"
case $1 in 
		allume1) DAMOCLES_CMD_1=`snmpset -c $PASSWORD -v1 -O qv  $DAMOCLES_IP .1.3.6.1.4.1.21796.3.4.2.1.2.1 i 1` && curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$DAMOCLES_OUT_1_IDX&switchcmd=On";;
		eteint1) DAMOCLES_CMD_1=`snmpset -c $PASSWORD -v1 -O qv  $DAMOCLES_IP .1.3.6.1.4.1.21796.3.4.2.1.2.1 i 0` && curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$DAMOCLES_OUT_1_IDX&switchcmd=Off";;
		allume2) DAMOCLES_CMD_2=`snmpset -c $PASSWORD -v1 -O qv  $DAMOCLES_IP .1.3.6.1.4.1.21796.3.4.2.1.2.2 i 1` && curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$DAMOCLES_OUT_2_IDX&switchcmd=On";;
		eteint2) DAMOCLES_CMD_2=`snmpset -c $PASSWORD -v1 -O qv  $DAMOCLES_IP .1.3.6.1.4.1.21796.3.4.2.1.2.2 i 0` && curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$DAMOCLES_OUT_2_IDX&switchcmd=Off";;
		allume3) DAMOCLES_CMD_3=`snmpset -c $PASSWORD -v1 -O qv  $DAMOCLES_IP .1.3.6.1.4.1.21796.3.4.2.1.2.3 i 1` && curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$DAMOCLES_OUT_3_IDX&switchcmd=On";;
		eteint3) DAMOCLES_CMD_3=`snmpset -c $PASSWORD -v1 -O qv  $DAMOCLES_IP .1.3.6.1.4.1.21796.3.4.2.1.2.3 i 0` && curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$DAMOCLES_OUT_3_IDX&switchcmd=Off";;
		paquet) curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$PAQUET_IDX&switchcmd=On";;
		lettre) curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$LETTRE_IDX&switchcmd=On";; 
		sonnette_ON) curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$SONNETTE_IDX&switchcmd=On";;
		sonnette_OFF) curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$SONNETTE_IDX&switchcmd=Off";;		 	
		*);;		
esac

Laisser un commentaire