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.
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
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