Domótica en RaspberryPi (parte 3)
Domótica en RaspberryPi (parte 3)
... demonio para monitorizar
Hola de nuevo!. Este post es la continuación de este y de este, así no te servirá de mucho, si aún no has realizado los dos anteriores. Hasta ahora hemos mandado comandos x10 desde el RaspberryPi, hacia el CM15PRO. Ahora vamos a hacer lo contrario, vamos a leer la información que llega al CM15PRO, con la ayuda de un demonio de fabricación casera. Al lío.Antes de nada, volveré a deciros que no tengo ni idea de programar, por ello este demonio es un poco ... casero. Cubre las necesidades al 100% pero sólo es elegante en un 50%, si alguien quiere regalarme tiempo y un par de cursos de perl y python, se lo agradeceré ;)
Vamos al demonio, lo primero es ver que es lo que pasa por el CM15PRO, en nuestro RaspberryPi:
1
| nc localhost 1099 |
1
2
3
4
5
| 06 /13 21:40:04 Rx RF HouseUnit: A2 Func: On 06 /13 21:40:04 Tx PL HouseUnit: A2 06 /13 21:40:04 Tx PL House: A Func: On 06 /13 21:40:05 Rx PL HouseUnit: A2 06 /13 21:40:06 Rx PL House: A Func: On |
1
2
3
4
5
| 06 /13 21:40:12 Rx RF HouseUnit: A2 Func: Off 06 /13 21:40:12 Tx PL HouseUnit: A2 06 /13 21:40:12 Tx PL House: A Func: Off 06 /13 21:40:13 Rx PL HouseUnit: A2 06 /13 21:40:13 Rx PL House: A Func: Off |
¿cómo mantengo la conexión abierta con el mochad y actúo en consecuencia? Pues vamos a usar un poco de perl y ngrep:
1
| apt-get install ngrep |
1
| ngrep -d any 'HouseUnit' port 1099 | perl - ne 'system("/usr/local/bin/ejecutadorx10.sh $_") if (/HouseUnit/)' |
1
2
| 06 /13 21:40:04 Rx RF HouseUnit: A2 Func: On 06 /13 21:40:12 Rx RF HouseUnit: A2 Func: Off |
1
2
| #!/bin/bash ngrep -d any 'HouseUnit' port 1099 | perl - ne 'system("/usr/local/bin/ejecutadorx10.sh $_") if (/HouseUnit/)' |
1
| chmod +x /usr/local/bin/demoniox10 .sh |
1
2
3
4
5
6
7
8
9
| #!/bin/bash correcto=$( echo $@ | grep Func | wc -l) # 1 ok - 0 fail if [ $correcto = 1 ]; then modulo=$( echo $@ | cut -f6 -d\ ) funcion=$( echo $@ | cut -f8 -d\ ) echo se recibe $modulo $funcion >> /usr/local/bin/recibido .txt fi |
1
| chmod +x /usr/local/bin/ejecutadorx10 .sh |
1
| /bin/bash /usr/local/bin/demoniox10 .sh |
1
2
| touch /usr/local/bin/recibido .txt tail -f /usr/local/bin/recibido .txt |
y en el minimando pulsamos A3 On (por ejemplo), en el nuevo terminal tiene que salir:
1
| se recibe A3 On |
jejejeje que bueno, solo queda parar el demonio (CTRL+c) y añadimos:
1
| /bin/bash /usr/local/bin/demoniox10 .sh |
al archivo (antes del exit 0):
1
| /etc/rc . local |