Caractéristiques
· Surveiller le système de sécurité de 650 spartiate
· Surveiller les avertisseurs de fumée maison
· Garage basculantes moniteur
· Moniteur de température
· Moniteur des changements au réseau
· Envoyer des emails et des SMS sur les conditions de l’alertes
· Activation à distance des détecteurs de fumée
· Activation à distance d’ouvre-portes de garage basculantes
· Journalisation des événements
· Niveau de l’alerte est envoyée uniquement aux adresses qui correspondent à ce niveau (infos, avertissement, critique) e-mail
· Envoyer des SMS par email
J’ai appris les choses :
· Comment faire pour interface entre GTK et une base de données SQL, sous Python
· Comment utiliser un niveleur de logique
· En utilisant plusieurs threads de surveiller simultanément les choses
· Communication entre les programmes à l’aide de sockets
· Interfaçage entre un programme en C et Python, à l’aide de Cython
Remarque
Je vous écris ce quelques semaines après l’obtention de ce travail, donc je ne pourrais pas compris tous les détails des étapes que j’ai pris pour obtenir cela pour travailler. Si vous avez des questions, poster un commentaire et je vais revenir à vous.
Système de sécurité résidentiel 650 spartiate
Je me suis intéressé en surveillance à domicile avec le Raspberry PI quand j’ai commencé à chercher des systèmes de sécurité à la maison pour mon fils et j’ai vu qu’ils avaient tous des interfaces qui peuvent être accessibles sur internet. Je me demandais si je pouvais faire la même chose avec mon système de sécurité de 650 spartiate 30 an. Ce que j’ai décidé de faire, c’est avoir le Raspberry Pi (RPI) agissent comme un clavier. Le clavier dispose de 4 conducteurs, dont j’ai considérée comme puissance, sol, données et horloge (d’après lecture du manuel et les étiquettes sur le panneau). J’ai lu sur internet sur les panneaux d’alarme DSC, donc je m’attendais à une sorte de séquence d’impulsions à communiquer entre eux. Le système de sécurité est un 12V et le RPI veut seulement une tension maximale de 3, 3V. J’ai utilisé un diviseur de tension à baisser la tension à ce que j’avais besoin. Seulement cela allait être un moyen et je voulais bidirectionnelle, mais il fonctionne pour l’instant (plus sur le bidirectionnel plus tard). Une chose que j’ai appris sur les diviseurs de tension, c’est que vous avez besoin relier la terre sur le système de sécurité et de l’IPD. J’ai essayé de lire le changement de bas en haut en Python par n’a pas obtenu n’importe quelle lecture cohérente. Je m’attendais que je verrais au moins quelque chose d’assez réguliers sur la ligne d’horloge, mais je n’ai pas. J’avais besoin de voir ces signaux et a commencé à la recherche à l’aide des oscilloscopes. J’ai trouvé un appareil USB qui fonctionne sur un ordinateur Windows et lui a ordonné et quand, pour construire le programme que je m’apprêtais à utiliser pour effectuer la surveillance, etc. d’alerte.
Python
Je me suis décidé à l’aide de Python, ayant quelque expérience avec elle est allé il y a quelques années, j’ai joué avec Maemo sur un Nokia N900. J’ai décidé que j’allais pénétrer les fonctionnalités des deux programmes – un pour faire le suivi et l’autre à l’utilisateur de l’interface (GUI) et ont les programmes communiquent entre eux. (Il s’agit avant que j’ai compris sur Xwindows et qui l’IPD pouvait montrer plusieurs programmes en même temps). J’ai utilisé des bases de données SQLite pour conserver les données. J’étais familier avec GTK mais décidé que j’allais utiliser GLADE pour construire l’interface. J’ai été capable de faire presque tout du GUI sur Windows et puis copiez le tout dans l’IPD. Quand finalement j’ai copier tout à l’IPD, j’ai eu un numéro erreurs et découvert que j’avais développé sous Python3 et GTK2 +. J’ai décidé que j’avais utiliser que les mêmes versions à l’IPD, mais ceci a causé quelques problèmes qui devaient être surmontées. Comme j’ai approchait la fin du programme, j’ai été encore quelques semaines avant la livraison de l’oscilloscope USB. J’ai commencé à la recherche à l’aide de l’IPD comme un oscilloscope et c’est quand je suis tombé sur PIGPIO.
PIGPIO
Il s’agit d’un ensemble de bibliothèques et de programmes pour l’interfaçage avec l’IPD. Ils ont aussi un programme d’oscilloscope ! Avec cet outil, j’ai pu constater que le signal d’horloge n’était seulement 20 microsecondes depuis longtemps. Oups, Python est beaucoup trop lent pour traiter le signal change que rapide. J’allais avoir à utiliser un autre langage de programmation pour le faire. Un peu plus de googler autour et j’ai décidé d’utiliser C. À cette époque j’étais assez investi en Python, donc je voulais seulement mettre en oeuvre cette fonction spécifique en C et laisser le reste en Python. En utilisant les bibliothèques PIGPIO j’ai été en mesure d’obtenir le programme en C pour extraire les données du système de sécurité. Oui ! Maintenant, tout ce que je devais faire était l’interface du programme C avec mon programme Python.
Cython
Cela semble être la méthode la plus simple d’entoilage C et Python, je suis tombé sur 2 problèmes. La première est que la version installée de Cython semblait fonctionner seulement avec Python2. J’ai dû reconstruire Cython sous Python3 et le deuxième problème que j’ai eu a été avec mon fils. Mon utilisation de PIGPIO a utilisé un programme rachat d’appel pour obtenir les lectures de la sécurité. Je voulais aussi utiliser un programme de rappel pour avertir le programme Python lorsque j’ai eu quelques données. Je suis tombé sur les erreurs Signal 11 (faute de segment). Je l’ai changé pour que le programme C données renvoyées sur le thread principal, plutôt que d’utiliser un appel de retour. Cela a bien fonctionné, mais le problème suivant, que j’ai eu était que certains de mes fils semblent s’accrocher et ne traite pas indépendamment. Davantage de recherches m’a dit que c’est parce que Python a verrous qui empêchent l’accès concurrentiel dans certains cas. J’ai été capable de surmonter ce problème en disant Cython qui certains programmes doivent s’exécuter comme NOGIL et cela eu le problème d’interruption de thread. Les vérins de logique est arrivé, donc je vais m’efforcer de bi-directionelle, afin que je puisse armer et désarmer le système d’alarme à distance.
Niveleurs de logique pour une communication bidirectionnelle
J’ai donc essayé d’utiliser les leviers de la logique de transférer les impulsions sur le système d’alarme 12V avec le 3.3V de l’IPD. Non passez. J’ai s’avère que les vérins de la logique ne peuvent répondre aux signaux qui sont moins de 300 microsecondes. J’ai besoin de quelque chose qui va répondre à quelque chose qui est environ 20 microsecondes. Je suis toujours seulement unidirectionnel avec mon diviseur de tension. Je ne suis certainement pas expérimenté en électronique, mais d’après mon googling autour, il semble qu’il n’existe pas quelque chose qui transfèrera 12V impulsions de 20 microsecondes à 3,3 V.
J’ai alors essayé d’utiliser les niveaux de logique avec mon détecteur de fumée (voir ci-dessous). Fondamentalement, j’ai voulu un relais bidirectionnel. Il n’a pas fonctionné. Le problème est que lorsque le pouvoir est retiré de la haute basse, le circuit se termine sur le côté élevé. Pas bon d’avoir des détecteurs de fumée va off chaque fois puissance est supprimée de l’IPD.
Température contrôlée avec le DS18B20
Quand j’ai acheté le RPI, buyapi.ca avait aussi un pack 5 des capteurs de température. Ce sont des dispositifs très sophistiqués qui mesurent la température et transmettent numériquement la température 1-wire. J’ai eu un travail alors que je m’attendais à l’oscilloscope à arriver, alors j’ai fait plus de 2, pour surveiller la température dans mon garage détaché, à l’intérieur de la maison et à l’extérieur. Heureusement, quand j’ai couru un service souterrain au garage il y a quelques années, j’ai couru un tuyau supplémentaire rempli avec 5 paires de fils téléphoniques. Mon père est électricien et choses de ces choses. Ils s’assirent inutilisé pendant 30 ans, mais j’ai fais bon usage maintenant. Le moniteur de température extérieur est juste coincé dans l’entrée d’air froid sur mon four. Pas tout à fait exacte, mais assez bon pour mon application. J’ai appris quelques petites choses ici. Tout d’abord, j’ai mis une résistance avec chaque capteur, mais comme une lire la suite, c’est juste une résistance pull-down et depuis tous les capteurs sont raccordés à l’IPD en parallèle, j’ai probablement seulement requises 1 résistance (semble fonctionner correctement avec 1 résistance par capteur. Deuxième chose, que j’ai découvert c’est que mes capteurs n’a pas fonctionné. Je suis retourné à avoir qu’un seul capteur. Toujours pas aller. J’ai pensé que peut-être j’ai vissé vers le haut de l’IPD, parce que j’ai joint les capteurs à l’IPD lorsqu’il a été alimenté vers le haut (je sais, pas une bonne idée), donc j’ai commencé à google autour pour voir si je pouvais utiliser un port autre le GPIO4. C’est quand j’ai trouvé une entrée indiquant la modification suivante doit être faite :
sudo nano /boot/config.txt
Ajoutez la ligne suivante vers le bas :
dtoverlay = w1-gpio, gpiopin = 4
Appris à aimer Unix. Des changements sans notification. Ou du moins aucun que j’ai pu trouver. La troisième chose que j’ai découvert sur les capteurs de température, c’est qu’ils donnent parfois des mauvaises lectures. Cela semble se produire en première lecture, donc je suppose que c’est un problème de synchronisation (comme la lecture en commençant à mi-chemin à travers un envoi). En tout cas, j’ai dû ajouter un test sur le terrain de la CRC de la lecture pour vous assurer que j’ai eu bonne lecture. Sur le suivi de la porte basculante de garage.
Surveillance de la porte basculante
Quand j’ai acheté ma nouvelle porte de garage, il est venu avec le moniteur de porte de garage. C’est un système sans fil simple qui a montré une lumière verte lorsque la porte était fermée. J’ai mesuré la tension de la LED verte et c’était environ 2.7V, parfait pour le RPI. Sans compter que la journalisation lorsque la porte est ouverte et fermée, j’ai envoyer une alerte si la porte est ouverte pendant plus de 10 minutes. La seule chose que j’ai des problèmes avec, c’est que les deux composantes du moniteur porte garage semblent perdre communiquent entre eux de temps en temps. J’ai essaye toujours les choses, mais probablement faire une antenne plus grande, ou déplacer les unités plus proches les uns aux autres ou ferraille tout ça et passer à un interrupteur magnétique.
Accès à distance
Même si j’ai le système m’alertant d’événements importants, je voulais toujours afficher l’interface graphique à l’occasion. Ce que j’ai fait installer OPENVPN et TightVNC. Je suis maintenant en mesure de se connecter en toute sécurité à mon réseau domestique et ensuite se connecter à distance à l’IPD. Autre avantage, je peux accéder à mon NAS (bien que j’étais capable de faire le service cloud DLINK pour y accéder avant la mise en place d’un VPN. Comme un autre avantage, je suis capable d’utiliser des VPN à mon réseau domestique pour accéder aux services comme Songza, quand je suis hors pays.
Porte de garage
J’ai pris le commutateur d’ouvre-porte de garage à la porte et trouvé que c’était juste un simple interrupteur. J’ai soudé deux fils sur cet interrupteur et testé en touchant les fils. La porte s’ouvrit ! Puis, j’ai acheté un relais qui est pour une RPI et cela utilisé pour simuler la pression sur le bouton ouvrir de porte de garage.
Détection d’Intrusion réseau
Depuis que j’ai un ordinateur sur le réseau fonctionnant sur le réseau, j’ai pensé que je pourrais contrôler mon réseau. Maintenant, j’ai suivi de nouveaux périphériques sur le réseau, qui est comme une détection d’intrusion. J’ai installé un programme appelé ARPSCAN pour obtenir les données. J’ai appris un certain nombre de choses en regardant les données. 1 – je peux dire quand les gens vont et viennent dans la maison, basé sur leurs téléphones portables, connexion et déconnexion du réseau domestique. 2 – J’ai plusieurs routeurs dans la maison – certains centres pour plusieurs un câblage dispositifs dans une pièce et certains points d’accès sans fil dans les lieux que le routeur sans fil principal n’obtient pas un bon signal. En tout cas, certains de ces routeurs semblent vont manquer de temps en temps.
Divers
Je suis assez anale sur les sauvegardes, alors j’ai pensé que je partagerais avec vous comment je fais mes sauvegardes sur le RPI. J’ai installé SAMBA sur le RPI et partir d’un ordinateur windows, j’utilise mon logiciel de synchronisation (Allways Sync) et copiez les répertoires de PI sur mon NAS. Le logiciel de synchronisation est capable de gérer les versions, donc j’ai effectivement la gestion de version ainsi que sauvegarde. Trimestriel, je prends la carte SD de l’IPD et mettez-la dans un lecteur de carte sur mon ordinateur Windows et True Image permet de prendre une copie exacte de la carte. Je pense que je suis couvert pour les catastrophes mineures (alors qu’un également copier le répertoire de pi NAS framboise dans le nuage (ASUS Webstorage) je ne suis pas sauvegarde mon support de carte SD sur le nuage).