Qualcuno aveva chiesto nel forum come avere con una chiamata su Asterisk lo stato dei rel?. Ecco una soluzione non molto elaborata che restituisce lo stato dei rel? con SayDigits (lo stato pu? essere 0 o 1). Si potrebbero registrare dei file audio con i nomi dei dispositivi (tipo: Luce, Riscaldamento ... ecc) e altri 2 file: "Accesso" e "Spento" da utilizzare con la funzione Playback().
Ho creato dentro /etc/centralina il file astpassword che contiene la password per avere accesso allo stato dei rel? tramite telefono
In /etc/astrerisk/extensions.conf:
[macro-stato]
exten => s,1,Ringing()
exten => s,n,Answer()
exten => s,n,Read(INPUT|agent-pass|8||3|10)
exten => s,n,SayDigits(${INPUT})
exten => s,n,AGI(verifica.sh,${INPUT})
exten => s,n,GotoIf($[${answer} = 0]?exit:continua)
exten => s,n(exit),Playback(vm-goodbye)
exten => s,n,Hangup()
exten => s,n,Wait(2)
exten => s,n(continua),SayNumber(${answer9})
exten => s,n,Wait(2)
exten => s,n,SayNumber(${answer10})
exten => s,n,Wait(2)
exten => s,n,SayNumber(${answer25})
exten => s,n,Wait(2)
exten => s,n,Playback(vm-goodbye)
exten => s,n,Hangup()
exten => numero_VoIP,1,Macro(stato)
In /usr/lib/asterisk/cgi-bin/verifica.sh:
#!/bin/sh
/usr/sbin/stato.sh $1
exit 0
Che mi esegue lo script: /usr/sbin/stato.sh :
#!/bin/sh
#
###############################################################
###############################################################
#File: /usr/sbin/stato.sh #
###############################################################
###############################################################
passwd="$(cat /etc/centralina/astpassword | sed -n 1p)"
if [ $passwd != $1 ]; then
VALUE=0
echo -e "SET VARIABLE answer $VALUE"
exit 0 > /dev/null
fi
VALUE=1
echo -e "SET VARIABLE answer $VALUE"
for n in 9 10 25; do
gp="$(gpioctl get $n | sed -n '/Pin/p'| awk '{ print $4 }')"
if [ $gp == "HIGH" ]; then
VALUE2=0
echo -e "SET VARIABLE answer$n $VALUE2"
fi
if [ $gp == "LOW" ]; then
VALUE2=1
echo -e "SET VARIABLE answer$n $VALUE2"
fi
done
Il codice, ovviamente, pu? essere elaborato per gestire in modo migliore i GPIO ...
Visto che oggi mi ? appena arrivata la scheda relay, dovrei riscrivere il codice per poter gestire tutto tramite il bus i2c