miércoles, 19 de diciembre de 2012

Control Domótico desde el teléfono

Asterisk es tu amigo, y ahora el de tu casa

Buenas noches, hace tiempo que estaba preparando este post, pero no acababa ... de acabarlo. Más de uno me ha comentado que Asterisk es tal vez el Superpoder menos útil, yo no lo veo así. En este post os voy a enseñar como controlar una instalación domótica vía teléfono, usando el RaspberryPi como core de la instalación. No os lo perdáis ...

Lo primero es volver a explicar brevemente mi instalación domótica y vozip. Para la parte de telefonía uso Asterisk, explicado en este post y para la domótica, uso X10. Como todo está centralizado en el RaspberryPi, me permite integrar estos servicios.
Una vez instalado Asterisk y Mochad, configuramos Asterisk:
[from-internal]
exten => 300,1,Answer()
same => n,Playback(beep)
same => n(read),Read(clave,mensajes/domopass,4,,1,5)
same => n,GotoIf($["${clave}" != "1234"]?nulo,s,1)
same => n(ok),Read(opcion,beep,1,,2,5)
same => n,Macro(domo,${opcion})
same => n,Goto(ok)

[macro-domo]
exten => s,1,NoOp(macro domo, funcion ${ARG1})
same => n,Set(modulo=${DB(domo/${ARG1}/modulo)})
same => n,Set(accion=${DB(domo/${ARG1}/accion)})
same => n,System(echo pl ${modulo} ${accion} | nc localhost 1099 > /dev/null)
same => n,Playback(mensajes/${accion}&mensajes/${modulo})
same => n,MacroExit()

Bastante cortito y fácil de entender. Ahora en la BBDD interna de Asterisk, creamos las entradas de los módulos y las acciones:
# asterisk -r
raspberrypi*CLI> database put domo 0/accion off
Updated database successfully
raspberrypi*CLI> database put domo 0/modulo a5
Updated database successfully

y así tantos como queramos controlar. La idea es llamar a la extensión 300, marcar el password y comenzar a pulsar números. El 0 por ejemplo, controla el apagado del micromódulo de aparato que controla la luz de la cocina. ¿A que ahora interesa más? y de regalo ... un vídeo del resultado:

¿sabías que un sistema de este tipo vale más de 2000€? Y aquí lo hemos montado por 4 duros y además aprendiendo.

9 comentarios:

  1. Simplemente... brillante.

    Ahora solo me falta que el señor Rajoy baje de precio los pisos y poder comprarme uno para controlarlo con la raspi... o llegar a un acuerdo con mi casera y me regale un año de alquiler si la dejo montado el sistema :P

    Gracias de nuevo Juanmol.

    ResponderEliminar
    Respuestas
    1. si te regala un año de alquiler por montarle domótica ... avísanos ;)

      Eliminar
  2. Una pregunta, aun sigues con la version de asterisk-10.4?

    Al poner la nueva imagen de Raspbian, la 2012-12-16-wheezy-raspbian, al instalar asterisk-10 o asterisk-11 se me cuelga, y a veces al hacer apt-get build-dep asterisk me actualiza algo del apt, con una version que no soportamos y me deja de poder instalar o desinstalar o actualizar nada... Ala, vuelta a empezar....

    Por tu post, como siempre es la leche, pero lo mejor sera hacerlo fuera de casa, no? porque sino, para que sirven los interruptores. tardo mas en llamar y marcar codigos que en dar la boton on/off. :)

    ResponderEliminar
    Respuestas
    1. desde dentro de casa, no tiene mucho sentido. Con un par de líneas "extra" en el dialplan, tu y yo sabemos que podemos controlarlo desde fuera de casa. Tambien puedes tener levantada la VPN en el móvil, registrado contra tu Asterisk y aunque estés fuera, llamarías como si estuvieses en casa ;)

      Lo otro que comentas de Asterisk ... ni idea, no he actualizado, cuando lo haga lo comparto.

      Eliminar
  3. En el vídeo se ve que tienes conectado el teléfono de casa a la RaspBerry, ¿cómo lo ha has hecho?

    ResponderEliminar
    Respuestas
    1. Ayudaremos un poco a Juan Mol. Para conectar el telefono de la casa al RaspBerry como dices, recomiendo que leas este post donde lo explicaba:
      http://rsppi.blogspot.com.es/2012/06/spa3102-y-raspberry-pi.html

      De nada :)

      Eliminar
  4. Buen Día,

    Estoy iniciando en el tema/tecnología "Domotica" y pretendo utilizar un sistema Raspberry PI B+ en conjunto con z-wave y asterisk, y quisiera saber si lo has podido implementar o me puedas orientar.

    Quedo a la espera de tus comentarios. mi correo. Smirnoffice507@gmail.com

    Saludos y felicidades excelente post.

    ResponderEliminar
    Respuestas
    1. hola, un compañero del curro lo está montando con z-wave, sin problemas. Realmente la comunicacion entre los modulos no debe preocuparte, lo que necesitas es un cacharrin que hable con los modulos y que tenga un puerto de comunicaciones compatible con raspberrypi.

      Eliminar
  5. Hola Amigos, alguno me podria ayudar a realizar este proyecto pero utilizando las salidas de arduino?...alguna idea. gracias.

    ResponderEliminar