Características
· Sistema de seguridad monitor 650 Spartan
· Monitor casa detectores de humo
· Basculante de monitor
· Controle la temperatura de
· Monitor de cambios en la red
· Enviar correos electrónicos y mensajes de texto sobre las condiciones de alerta
· Activación remota de alarmas de humo
· Activación remota de abrelatas de la puerta basculante
· Registro de eventos
· Nivel de la alerta sólo se envía a direcciones que coinciden con ese nivel (información, ADVERTENCIA, crítico) de correo electrónico
· Enviar SMS vía email
Cosas que aprendí:
· Como interfaz entre una base de datos SQL, bajo Python y GTK
· Cómo utilizar un nivelador de lógica
· Con varios subprocesos para supervisar las cosas al mismo tiempo
· Inter-programa de comunicación mediante sockets
· Interface entre un programa en C y Python, usando Cython
Nota
Estoy escribiendo esta unas semanas después de conseguir todos los de este trabajo, por lo que quizás no han incluido todos los detalles de los pasos para conseguir esto para trabajar. Si tienes preguntas, enviar un comentario y se devolverá a usted.
Sistema de seguridad casero 650 Spartan
Me interesé por el control en casa con la frambuesa PI cuando empecé a buscar en el hogar sistemas de seguridad a mi hijo y vi que todos tenían interfaces que se podrían acceder a través de internet. Me preguntaba si podría hacer lo mismo con mi sistema de seguridad de Spartan 650 30 año de edad. Lo que me decidí a hacer es el Raspberry Pi (RPI) actuar como un teclado. El teclado tiene 4 cables, que determiné ser energía, tierra, datos y reloj (basado en el manual y las etiquetas en el panel de lectura). He leído algunos en internet en los paneles de alarma DSC, por lo que espera a algún tipo de secuencia de pulso a comunicarse entre sí. El sistema de seguridad es a 12V y el IPC sólo quiere un voltaje máximo de 3, 3V. Usé un divisor del voltaje a la tensión de lo que necesitaba. Esto sólo iba a ser una forma y quería bidireccional, pero que podría funcionar por ahora (más en la bi-direccional más adelante). Una cosa que aprendí sobre divisores del voltaje es que necesita conectar la tierra en el sistema de seguridad y el RPI juntos. He intentado leer el cambio de bajo a alto en Python no consiguió por cualquier lectura consistente. Esperaba que al menos debo ver algo bastante regular en la línea de reloj, pero no lo hice. Necesitaba ver estas señales y comenzó a investigar con osciloscopios. Encontré una unidad USB que ejecuta en un equipo Windows y se lo ordenó y cuando para construir el programa iba a utilizar para realizar el monitoreo, alerta etc..
Python
Me decidí por usar Python, tener alguna experiencia con él fue jugó con Maemo en un Nokia N900 hace algunos años. Decidí que iba a dividir la funcionalidad en dos programas, uno para hacer el seguimiento y el otro usuario interfaz (GUI) y los programas de hablar. (Esto es antes de que comprendí sobre Xwindows y el IPC podría mostrar múltiples programas al mismo tiempo). Usé las bases de datos SQLite para guardar los datos. Estaba familiarizado con GTK, pero decidió que iba a utilizar GLADE para construir la interfaz. Pude hacer casi todo lo de la GUI de Windows y luego copie todo en el IPC. Cuando finalmente copiar a todo en el RPI, tenía un número de errores y descubrió que había desarrollado con Python3 y GTK2 +. Decidí que era uso que las mismas versiones en el IPC, pero esto causaron algunos problemas que debían superarse. Al acercarse la finalización del programa, fue a unas semanas de la entrega del osciloscopio USB. Comencé a investigar utilizando el IPC como un osciloscopio y es cuando me encontré con PIGPIO.
PIGPIO
Se trata de un conjunto de librerías y programas para interactuar con el IPC. Ellos también tienen un programa osciloscopio! Con esta herramienta he podido determinar que la señal del reloj era de sólo 20 microsegundos largo. ¡ Uy, Python es demasiado lento para procesar los cambios de señal que rápido. Yo iba a tener que utilizar algún otro lenguaje de programación para hacerlo. Googleando un poco más alrededor y decidí utilizar C. Por este tiempo estaba bastante invertí en Python, así que sólo quería implementar esta función específica en C y dejar el resto en Python. Usando las librerías de PIGPIO he podido conseguir el programa de C para extraer los datos del sistema de seguridad. ¡ sí! Ahora todo lo que tenía que hacer era interfaz el programa C con mi programa de Python.
Cython
Esto parece ser el método más fácil de conexión C y Python, me encontré con 2 problemas. La primera es que la versión instalada de Cython parece trabajar sólo con Python2. Tuve que reconstruir Cython bajo Python3 y el segundo problema que tuve fue con mis temas. Mi uso de PIGPIO utiliza un programa posterior llamada para obtener las lecturas del sistema de seguridad. También quería utilizar un programa de devolución de llamada que avise el programa Python cuando tuve algunos datos. Me encontré con errores de señal 11 (fallo de segmento). Lo cambié para que el programa de C devuelve datos en el subproceso principal en lugar de utilizar una llamada de vuelta. Esto funcionaba bien pero el siguiente problema que tuve fue que algunos de mis temas parecen colgar y no del proceso independientemente. Más investigación me dijo que esto es porque Python tiene candados que impiden la concurrencia en algunos casos. Fui capaz de superar este problema diciendo Cython que algunos programas deben ejecutarse como NOGIL y tiene esto en el hilo de colgar en problema. Los niveladores de lógica llegaron, así que voy a probar bi-direccional, de modo que puedo armar y desarmar el sistema de alarma de forma remota.
Niveladores de lógica para una comunicación bidireccional
Así que intenté utilizar los niveladores de lógica para transferir los impulsos en el sistema de alarma 12V a 3.3v de la RPI. No ir. Resulta que los niveladores de lógica sólo pueden responder a las señales que son un mínimo de 300 microsegundos. Necesito algo que responda a algo que es alrededor de 20 microsegundos. Yo estoy todavía sólo unidireccional con mi divisor de tensión. Ciertamente no soy experto en electrónica, pero de mi googleando alrededor, parece que no existe algo que se transferir pulsos de 12V de 20 micro segundos a 3.3 V.
Luego intenté utilizar los niveles de lógica con mi detector de humo (véase abajo). Básicamente quería un relé bidireccional. No funcionó. El problema es que cuando se quita la energía de la alta baja, el circuito finaliza en el alto lado. No es bueno que los detectores de humo que cada tiempo se quita energía de la RPI.
Control con el DS18B20 de la temperatura
Cuando compré el RPI, buyapi.ca también tenía un paquete de 5 de los sensores de temperatura. Estos son dispositivos muy sofisticados que miden la temperatura y transmiten digitalmente la temperatura 1-wire. Yo tuve uno trabajando mientras esperaba el osciloscopio llegar, así que hice más de 2, para controlar la temperatura en mi garaje individual, dentro de la casa y fuera. Afortunadamente, cuando un servicio de metro en el garaje hace unos años, me encontré un tubo adicional con 5 pares de cables telefónicos. Mi padre es electricista y cosas de estas cosas. Se sentaron sin uso para 30 años, pero ahora estoy haciendo buen uso de ellos. El monitor de temperatura exterior está atascado justo en la entrada de aire frío en mi horno. No totalmente exacta, pero suficiente para mis propósitos. Aprendí algunas cosas aquí. En primer lugar, poner una resistencia en cada sensor, pero como una lectura más, es simplemente un resistor de pull-down y puesto que todos los sensores están conectados a la RPI en paralelo, probablemente sólo necesita 1 resistor (parece que funciona bien con 1 resistencia por sensor. Segunda cosa que descubrí fue que no funcionaba mi sensores. Volví a tener un único sensor. Sigue sin ir. Pensé que tal vez me cagué el IPC, porque os adjunto los sensores para el IPC cuando fue accionado para arriba (ya sé, no es una buena idea), así que empecé a google para ver si podía usar un puerto otros la GPIO4. Es que cuando he encontrado una entrada que dice el siguiente cambio es necesario:
sudo nano /boot/config.txt
Agregue la línea siguiente en la parte inferior:
dtoverlay = w1-gpio, gpiopin = 4
Consiguió amar a Unix. Hacer cambios sin notificación. O al menos ninguno que he podido encontrar. La tercera cosa que he descubierto sobre sensores de temperatura es que a veces dan lecturas malas. Esto parece suceder en la primera lectura, así que supongo que es una cuestión de tiempo (como a partir de la lectura a medio camino a través de un envío). De todos modos, necesitaba añadir una prueba en el campo CRC de la lectura para asegurarse de que tenía buena lectura. A control de la puerta basculante de garaje.
Control de puerta basculante
Cuando compré mi nuevo abridor de puertas de garaje, vino con el monitor de puerta de garaje. Es un sistema inalámbrico simple que mostró una luz verde cuando la puerta estaba cerrada. Medí el voltaje del LED verde y era alrededor 2.7V, perfecto para el IPC. Además de registro con la puerta se abre y se cierra, envía una alerta si se abre la puerta para más de 10 minutos. Lo único que estoy teniendo problemas con es que los dos componentes del monitor de puerta de garaje parecen perder de vez en cuando se comunican entre sí. Yo todavía estoy probando cosas, pero probablemente hace una antena más grande, o mover las unidades entre sí o chatarra todo y poner un interruptor magnético.
Acceso remoto
A pesar de que tengo el sistema me alertas a eventos significativos, todavía quería ver la GUI en ocasiones. Lo que hice fue instalar OPENVPN y TightVNC. Ahora soy capaz de Conecte de forma segura a la red de mi casa y entonces conecte remotamente con el IPC. Como beneficio adicional, puedo acceder a mi NAS (aunque yo era capaz de hacer el servicio de nube DLINK para acceder a ella antes de configurar una VPN. Como un beneficio de lado, yo soy capaz de usar VPN a mi red local acceder a los servicios como Songza cuando estoy fuera del país.
Abrepuertas de garaje
Tomé el interruptor del abrepuertas de garaje en la puerta y encontró sólo un simple interruptor. Que soldar dos cables al interruptor y probado por tocar los cables. La puerta se abrió. Entonces compré un relé que es para un RPI y utiliza esto para simular el pulsar el botón abrir de la puerta de garaje.
Detección de intrusiones
Ya que tengo un ordenador en la red que se ejecutan en la red, pensé que podía controlar mi red. Ahora controlo para nuevos dispositivos en la red, que es como una detección de intrusión. Instalé un programa llamado ARPSCAN para obtener los datos. He aprendido un par de cosas de mirar los datos. Una, digo cuando la gente ir y venir en la casa, basado en sus teléfonos celulares, conexión y desconexión de la red doméstica. Dos – algunos centros tengo varios routers en casa – para múltiples cableados dispositivos en una habitación y algunos de los puntos de acceso inalámbricos en lugares que el router inalámbrico principal no recibe una buena señal. De todos modos, algunos de estos routers parecen desaparecen de vez en cuando.
Varios
Soy bastante anal sobre copias de seguridad, así que pensé que compartir con ustedes como hago mis copias de seguridad en el IPC. He instalado SAMBA en el IPC y de una computadora con windows, utilice el software de sincronización (sincronización de siempre) y copiar los directorios de PI a mi NAS. El software de sincronización es capaz de gestionar las versiones, para efectivamente tener gestión de versiones, así como copia de seguridad. Trimestral, tomo la tarjeta SD de la RPI y ponerlo en un lector de tarjetas en mi equipo Windows y usar True Image para tomar una copia exacta de la tarjeta. Creo que estoy cubierto para los desastres menores (aunque una también copiar el NAS frambuesa pi a la nube (ASUS Webstorage) no soy forro encima de mi copia de seguridad de tarjeta SD a la nube).