Este proyecto demuestra cómo enviar notificaciones push desde Raspberry Pi a dispositivos iOS y Android utilizando una aplicación push gratuita. La idea es activar un evento de envío de mensaje push utilizando un sensor de puerta magnético. Cuando se abre la puerta, la Raspberry Pi envía un mensaje. El sensor magnético de la puerta se puede reemplazar fácilmente en este proyecto con otro tipo de dispositivo de señalización, como un sensor de movimiento PIR, un cable de disparo infrarrojo u otros. También puede configurar el RPi para trabajar con múltiples sensores y enviar mensajes.
Divulgación: no soy un experto en codificación de Python ni un experto en Raspberry Pi (todavía). Aunque tengo mucha experiencia en el desarrollo de software y una vez fui desarrollador a tiempo completo, este es mi primer proyecto de Raspberry Pi y aplicación de Python. Mi principal motivación para este proyecto fue crear una solución que pudiera funcionar con las cámaras de seguridad CCTV y HD que suministra mi empresa. Desafortunadamente, la mayoría de los DVR de CCTV aún no admiten notificaciones automáticas. Así que pensé que un servidor de notificaciones push basado en Raspberry Pi sería una solución de bajo costo para trabajar con estos sistemas.
Es probable que el código de Python no sea el más limpio y puede haber mejores formas de configurar su Raspberry Pi. Por supuesto, estoy abierto a críticas constructivas y sugerencias. Por favor, deje comentarios al final de esta publicación si tiene alguno.
- Configuración de Raspberry Pi para enviar mensajes push
- Configuración de una cuenta Instapush e instalación de la aplicación
- Conectar el sensor de puerta a Raspberry Pi
- Instalar la biblioteca pycurl
- Código Python
- Lanzamiento de la aplicación Python
- Obtener una notificación push
- Trabajar con varios sensores de alarma y empujar mensajes
- Sobre Mike Haldas
Configuración de Raspberry Pi para enviar mensajes push
Esto es lo que hay que hacer.
- Configure un servicio push en Instapush e instale la aplicación móvil
- Conectar el sensor de puerta a Raspberry Pi
- Instalar la biblioteca pycurl
- Instalar código Python
- Ejecutar una aplicación Python
- Prueba y recibe notificaciones automáticas
Configuración de una cuenta Instapush e instalación de la aplicación
Para manejar las notificaciones push, utilicé el servicio push gratuito Instapush. Instapush tiene aplicaciones gratuitas para iOS y Android, y una API REST fácil de usar para desarrolladores de software.
- Registre una cuenta aquí: https://instapush. im/ e inicie sesión.
- Descarga aplicaciones aquí: Aplicación para iOS Aplicación para Android
- Inicie sesión en las aplicaciones con el mismo inicio de sesión que creó en el sitio.
- Después de iniciar sesión en la aplicación móvil en uno o más dispositivos, verá que su dispositivo está vinculado a su cuenta de Instapush en su tablero. Vaya aquí: https://instapush. im/dashboard.
- Luego vaya a la pestaña «Dispositivos». Tengo dos dispositivos vinculados a mi cuenta. Esto es lo que parece.
- A continuación, haga clic en la pestaña «Aplicaciones», luego en «Agregar aplicación».
- Elija un nombre para su aplicación y haga clic en el botón Agregar. Llamé a mi aplicación «Door Push».
- Después de agregar la aplicación, será llevado a la pantalla de eventos. Haga clic en Agregar eventos.
- Elige un nombre para tu evento. Recomiendo no usar espacios en el nombre del evento. Usé «DoorAlert».
- Debe agregar al menos un rastreador. Básicamente, es una variable que se utiliza en la notificación push. Usé «mensaje».
- Finalmente, ingrese lo que desea decir en su mensaje de inserción. Mi código Python pasa una variable al servicio Instapush, por lo que le recomiendo que simplemente la agregue al campo Mensaje sin nada más.
- Haz clic en Agregar evento.
- Vaya a la pestaña Información básica y eche un vistazo a los campos ID de la aplicación y Secreto de la aplicación. Los necesitará en su código python. Puedes ver cómo se ve a continuación. He bloqueado mi identificación y clave.
Conectar el sensor de puerta a Raspberry Pi
Estoy usando un kit de placa de prueba para facilitar la conexión de un sensor de puerta a la RasPi. Estoy usando el pin GPIO 23 y el pin de tierra para conectar el sensor de la puerta. No importa qué cable va al GPIO y cuál a tierra. Así es como se ve el cableado.
Instalar la biblioteca pycurl
La aplicación python utilizará la biblioteca pycurl para enviar una solicitud de API al servidor Instapush. Ejecute el siguiente comando en su Raspberry Pi para instalar esta biblioteca de Python.
sudo apt-get install python-pycurl
Código Python
Aquí hay una aplicación de python que escribí. Los comentarios en el código deberían explicar bastante bien lo que está pasando. Nombre su programa doorSensor. py. Estoy bastante seguro de que el formato del código se estropeará cuando lo pegue en este blog, por lo que puede descargar el código fuente de Python aquí.
# —————–Dorsensor. py ———————- # import Pycurl, JSON de STRINGO Importar rpi. gpio como gpio #setup gpio utilizando numerar el canal de SoC de Broadcom gpio. setMode (gpio. bcm) # Establecer en extracción (posición normalmente cerrada) gpio. setup (23, gpio. in, pull_up_down = gpio. pud_up) # #) Configuración de las variables de Instapush # Establecer esto en ID de aplicación desde Instapush Appid = «» # Establecer esto en el secreto de la aplicación desde Instapush AppSecret = «» # deje el valor de la puerta de la puerta si no llamó a su evento de otra manera en Instapush PushEvent = «DoorAlert » # Establezca el valor PushMessage =» ¡Puerta abierta! «# Usamos StringIO para obtener una respuesta de nuestro buffer de llamadas API de Push = StringO () # Use Curl para enviar un mensaje en Instapush API C = Pycurl. curl () api. instapush. IM/V1/Post ‘) # Establecer los titulares del usuario del usuario Para variables de alternancia y tipo de contenido C. Setopt (c. httpheader, [‘x-instapush-ppid:’ + appid, ‘x-instapush-appset: +’ + appSecret, ‘Conten t-Type: Application/JSON’])) # Cree una estructura de diccionario para datos JSON que se destinarán a Instapush JSON_FIELDS =.<># Establezca los valores de JSON JSON_FIELDS [‘Event’] = PushEvent JSON_FIELDS [‘Trackers’] =<>json_fields [‘rastreadores’] [‘Message’] = PushMessage Postfields = json. dumps (json_fields) # Definitivamente enviaremos JSON con un post c. setopt (c. postfields, postfields) en nuestro búfer c. SETOPT (C. WriteFunction, Buffer. Write) # Expanda para ver la publicación publicada # C. Setopt (C. verbose, verdadero) # Instale un ciclo interminable que la puerta está abierta / cerrada a la puerta GPIO. Wait_for_edge (23, GPIO . Rising) Imprimir («La puerta está abierta! \ n») #) # reinicie el búfer del búfer. Truncate (0) buffer. seek (0) # detección de la puerta gpio. wait_for_edge (23, gpio. falling) imprime («la puerta está cerrada! \ N») # limpieza c. close () gpio. cleanup () # # — —————— End Doorsensor. py ——————— # Guardar script de python en tu frambuesa Pi.
Lanzamiento de la aplicación Python
Para probar la notificación push desde el PI, ejecute la aplicación DoorSensor. py. Durante la aplicación, separe los sensores magnéticos de la puerta entre sí. En la pantalla de su Raspberry Pi, verá lo siguiente. La primera línea es un equipo para comenzar el programa. La segunda línea se imprime cuando abrimos la puerta. Inmediatamente después de esto, se imprime la respuesta recibida del servicio PUSH API. Y finalmente, imprimimos cuando la puerta está cerrada.
Pi@ranspberrypi~$ Sudo python doorsensor. py
Obtener una notificación push
Después de un segundo o dos, después de abrir el sensor de la puerta, debe recibir una notificación push a su aplicación para iOS o Android. Así es como se ve el mensaje de empuje cuando lo recibí en mi Samsung Galaxy. En mi iPhone, funciona como maravilloso.
Trabajar con varios sensores de alarma y empujar mensajes
Simplifiqué este proyecto integrando un sensor de ansiedad con mi Raspberry Pi. Es posible que desee usar varios sensores en su proyecto. Tal vez desee tener varios sensores de puerta, sensores de tráfico PIR o casi cualquier otro tipo de sensor que pueda conectarse a RPI.
Obviamente, desea que la notificación push le indique qué sensor funcionar. Es muy fácil hacer frente a esto.
De manera predeterminada, instalé la variable PushMessage usando el siguiente código.
PushMessage = «¡La puerta está abierta!».
Simplemente agregue un poco de lógica a su código y cambie la variable PushMessage dependiendo de qué sensor causó una alarma.
PushMessage = «¡La puerta trasera está abierta!»PushMessage = «¡Movimiento en la puerta principal!»
Sobre Mike Haldas
Mike Haldas es cofundador y socio gerente de CCTV Camera Pros. Mike se dedica al estudio y el desarrollo de productos de la empresa. Antes de la creación de CCTV Camera Pros, Mike trabajó como programador de ingenieros en la industria de las casas web. CCTV Camera Pros pertenece a los veteranos, ya que Mike sirvió con orgullo en el Cuerpo de Marines de los Estados Unidos (USMC) de 1993 a 1997. Puede comunicarse con Mike sobre cuestiones relacionadas con este artículo y todo lo relacionado con los sistemas de videovigilancia en mike@cctvcamerapros. net.