Functies
· Monitor Spartaanse 650 beveiligingssysteem
· Monitor thuis rookalarm
· Monitor bovengrondse garage
· Temperatuur monitor
· Monitor voor wijzigingen in het netwerk
· Verzenden van e-mails en SMS-berichten op waarschuwingssituaties
· Extern activeren van rookalarm
· Extern activeren van overhead garage deuropener
· Logboekregistratie van gebeurtenissen
· Niveau van het alarm wordt alleen verzonden naar e-mailadressen die overeenkomen met dat niveau (Info, waarschuwing, kritische)
· SMS versturen via e-mail
Dingen die ik geleerd:
· Hoe te tussen GTK en een SQL-database, onder Python interface
· Het gebruik van een logica leveler
· Met behulp van meerdere threads te controleren dingen gelijktijdig
· Inter programma communicatie toe gebruikmakend van sockets
· Interfacing tussen een C programma en Python, via Cython
Opmerking
Ik ben het schrijven van dit enkele weken na het krijgen van al deze werken, dus misschien heb ik niet ook alle details van de stappen die ik nam om dit om te werken. Als u vragen hebt, post een reactie en ik zal aan u terugkeren.
Spartaanse 650 huisveiligheid systeem
Ik heb interesse in huisbewaking met de Raspberry PI toen ik begon te kijken thuis beveiligingssystemen voor mijn zoon en zag dat zij allen hadden interfaces die kan worden geopend via het internet. Ik vroeg me af als ik hetzelfde met mijn 30 - jaar oude Spartaanse 650-beveiligingssysteem doen kan. Wat heb ik besloten om te doen is de Raspberry Pi (RPI) fungeren als een toetsenbord hebben. Het toetsenbord heeft 4 draden, die ik vastbesloten te zijn van de macht, de grond, de gegevens en de klok (gebaseerd op het lezen van de handleiding en de etiketten op het paneel). Ik lees een aantal op het internet op DSC alarm panelen, dus ik verwacht een soort van pols sequentie om met elkaar te communiceren. Het beveiligingssysteem is een 12V en de RPI wil alleen een maximum voltage van 3.3V. Ik gebruikte een divider spanning te laten vallen van de spanning aan wat ik nodig had. Dit was alleen gonna be unidirectioneel en ik wilde bi-directionele, maar het zou werken voor nu (meer op de bi-directionele later). Een ding dat ik geleerd over spanning dividers is dat je nodig hebt aan elkaar koppelen van de grond op het veiligheidssysteem en de RPI. Ik heb geprobeerd het lezen van de verandering van laag naar hoog in Python door kreeg niet een consistente lezing. Ik verwacht dat ik ten minste iets vrij regelmatig te op de clock lijn zien moet, maar ik niet. Ik nodig om te zien deze signalen en begon onderzoek met behulp van oscilloscopen. Ik vond een USB-apparaat dat wordt uitgevoerd op een Windows-computer en bestelde het en wanneer op te bouwen van het programma die ik gebruiken om te doen de monitoring wilde, alarmeren enz.
Python
Ik heb besloten over het gebruik van Python, met enige ervaring met het ging ik speelde met op een Nokia N900 Maemo enkele jaren geleden. Ik besloot ik wilde breken de functionaliteit in twee programma's – een te doen het toezicht op en de andere gebruiker interface (GUI) en hebben de programma's met elkaar praten. (Dit is voordat ik over Xwindows begrepen, en die de RPI kon laten zien van meerdere programma's tegelijkertijd). Ik gebruikte SQLite databases om de gegevens te bewaren. Ik was bekend met GTK, maar besloot dat ik wilde gebruiken van GLADE te bouwen van de interface. Ik was in staat om te doen bijna alle van de GUI op Windows en kopieer de hele zaak naar de RPI. Wanneer uiteindelijk ik alles naar de RPI kopiëren, ik had een aantal fouten en ontdekte dat ik had ontwikkeld onder Python3 en GTK2 +. Ik besloot dat ik gebruik die dezelfde versies op de RPI, maar dit veroorzaakt een aantal problemen die moesten worden overwonnen. Als ik naderde de voltooiing van het programma, was ik nog enkele weken uit de buurt van de levering van de USB-oscilloscoop. Ik begon onderzoek met behulp van de RPI als een oscilloscoop en dat is wanneer ik liep in PIGPIO.
PIGPIO
Dit is een set van libraries en programma's voor interfacing met de RPI. Ze hebben ook een programma van de oscilloscoop! Met dit hulpmiddel was ik in staat om te bepalen dat het kloksignaal slechts 20 microseconden lang was. Oeps, is Python veel te traag voor het verwerken van signaal verandert dat snel. Ik ging te hebben om sommige andere programmeertaal gebruiken om dat te doen. Een beetje meer googlen rond en ik besloten om het gebruik van C. Tegen die tijd was ik behoorlijk geïnvesteerd in Python, dus ik alleen wilde uitvoering van deze specifieke functie in C en laat de rest in Python. Met behulp van de bibliotheken PIGPIO kon ik krijgen van de C-programma om de gegevens het beveiligingssysteem te extraheren. Ja! Nu alles wat ik moest doen was de C programma met mijn Python programma interface.
Cython
Dit leek te zijn de eenvoudigste methode voor interfacing C aan Python, liep ik in 2 problemen. De eerste is dat de geïnstalleerde versie van Cython leek te werken alleen met Python2. Ik moest herstellen Cython onder Python3 en het tweede probleem dat ik had was met mijn draden. Mijn gebruik van PIGPIO gebruikt een oproep terug programma om de lezingen van het beveiligingssysteem. Ik wilde ook een callback-programma gebruiken om te laten het Python programma weten wanneer ik had enkele gegevens. Ik liep in signaal 11 (segment schuld) fouten. Ik veranderde het zodat de C programma resultaatgegevens op de rode draad in plaats van met behulp van een call back. Dit werkte prima, maar het volgende probleem dat ik had was dat sommige van mijn threads lijken te hangen en niet zelfstandig verwerken. Meer onderzoek vertelde me dat dit is omdat de Python heeft sloten dat concurrency in sommige gevallen te voorkomen. Ik was in staat om dit probleem te verhelpen door te vertellen Cython dat sommige programma's moeten worden uitgevoerd als NOGIL en dit kreeg rond de draad ophangen probleem. De logica levelers aangekomen, dus ik ga proberen bi-directionele, zodat ik kan arm en ontwapening van de alarminstallatie op afstand.
Logica levelers voor bi-directionele communicatie
Dus probeerde ik het gebruik van de logica levelers om de pulsen op de 12V-alarmsysteem aan de 3,3 v van de RPI. Geen ga. Ik blijkt dat de logica levelers kunnen alleen reageren op signalen die een minimum van 300 microseconden. Ik moet iets die zal reageren op iets dat is ongeveer 20 microseconden. Ik ben nog steeds alleen uni-directionele met mijn spanning divider. Ik ben zeker niet ervaren in de elektronica, maar uit mijn googlen rond, blijkt dat er niet iets dat 3,3 V 12V pulsen van 20 micro-seconden overbrengen zal.
Vervolgens heb ik geprobeerd de logische niveaus met mijn rookmelder (zie hieronder). Eigenlijk wilde ik een bidirectionele Relais. Het werkte niet. Het probleem is dat wanneer de macht wordt verwijderd uit de lage hoogte, het circuit is voltooid aan de hoge kant. Niet goed dat de rookmelders gaan uit elke keer macht wordt verwijderd uit de RPI.
Temperatuurbewaking met de DS18B20
Toen ik hem de RPI kocht, had buyapi.ca ook een 5 pack van de temperatuursensoren. Dit zijn vrij geavanceerde apparaten die meet de temperatuur en de temperatuur digitaal op 1-wire over te brengen. Ik had een werken terwijl ik te voor de oscilloscoop te komen, wachten zat dus ik heb up 2 meer, gemaakt om de temperatuur in mijn vrijstaande garage, binnen het huis en buiten te bewaken. Gelukkig, toen ik liep een ondergrondse dienst naar de garage enkele jaren geleden, liep ik een extra pijp gevuld met 5 paar telefoon draden. Mijn vader is een elektricien en dingen van deze dingen. Ze zaten ongebruikte voor 30 jaar, maar ik ben het maken van goed gebruik van hen nu. De buiten temp monitor is net geplakt in de inname van de koude lucht op mijn oven. Niet helemaal nauwkeurig, maar goed genoeg voor mijn doeleinden. Ik leerde een paar dingen hier. Ten eerste, ik zet een weerstand met elke sensor, maar als een Lees meer, het is gewoon een pull-down-weerstand en omdat alles wat van de sensoren worden aangesloten op de RPI parallel, ik waarschijnlijk alleen nodig 1 weerstand (lijkt te werken prima met 1 weerstand per sensor. Tweede ding die ik erachter was dat mijn sensoren niet werkte. Ik ging terug aan het hebben van slechts één sensor. Nog geen go. Ik dacht dat misschien ik verpest de RPI, omdat ik de sensoren op de RPI aangesloten wanneer het werd aangedreven omhoog (ik weet, geen goed idee), dus begon ik naar google om te zien of ik een andere poort kan gebruiken de GPIO4. Dat is wanneer ik vond een post die de volgende wijziging zegt moet worden gemaakt:
sudo nano /boot/config.txt
Voeg de volgende regel aan de onderkant:
dtoverlay = w1-gpio, gpiopin = 4
Kreeg om te houden van Unix. Het aanbrengen van wijzigingen met geen melding. Of op zijn minst niemand die ik kon vinden. Het derde punt dat ik over temperatuursensoren ontdekt is dat ze soms slecht lezingen geven. Dit lijkt te gebeuren in de eerste lezing, dus ik neem aan dat er een timingprobleem (zoals vanaf de lezing halverwege een zending). Anyway, ik nodig had om het toevoegen van een test op het gebied van de CRC van de lezing om ervoor te zorgen dat ik had goede lezing. Bij het toezicht op de overhead garagedeur.
Overheaddeur toezicht
Toen ik mijn nieuwe garagedeur opener kocht, kwam het met de garage deur monitor. Het was een eenvoudig draadloos systeem dat een groen licht bleek toen de deur werd gesloten. Ik heb de spanning van de groene LED gemeten en het was rond 2.7V, perfect voor de RPI. Naast logboekregistratie met de deur wordt geopend en gesloten, stuur ik een waarschuwing als de deur wordt geopend voor meer dan 10 minuten. Het enige wat mij ben having problematiek van is dat de twee componenten van de garage deur monitor lijken te verliezen eens in de zoveel tijd met elkaar communiceren. Ik zal ben nog steeds proberen dingen, maar waarschijnlijk maken een grotere antenne, of verplaats de eenheden dichter naar elkaar of restanten van het hele ding en verplaats naar een magneetschakelaar.
RAS
Ook al heb ik het systeem waarschuwen mij om belangrijke gebeurtenissen, wilde ik nog steeds weergave de GUI op de gelegenheid. Welke mij did watertje installeren OPENVPN en TightVNC. Ik ben nu in staat veilig verbinding maken met mijn thuisnetwerk en vervolgens extern verbinding te maken met de RPI. Een bijkomend voordeel ben ik kundig voor vlaag mijn NAS (hoewel ik was in staat om te doen de DLINK cloud service om deze te openen voor het opzetten van een VPN. Als een bijkomend voordeel ben mij kundig voor toepassing VPN terug naar mijn thuisnetwerk toegang tot diensten zoals Songza wanneer ik uit het land ben.
Garage deuropener
Ik nam de garage deuropener schakelaar bij de deur en vond dat het was gewoon een eenvoudige schakelaar. Ik twee draden aan deze schakeloptie vastgesoldeerd en getest door het aanraken van de draden. De deur geopend! Ik kocht toen een relais dat is voor een RPI en gebruikt dit voor het simuleren van de indrukken van de knop garage deur openen.
Network Intrusion detection
Sinds ik heb een computer in het netwerk draait op het netwerk, ik dacht dat ik mijn netwerk kunnen volgen. Ik controleer nu voor nieuwe apparaten op het netwerk, dat net als een Intrusie Detectie is. Ik installeerde een programma genaamd ARPSCAN om de gegevens te krijgen. Ik heb geleerd een paar dingen uit de gegevens bekijkt. Één – ik kan vertellen wanneer mensen komen en gaan in het huis, gebaseerd op hun mobiele telefoons aansluiten en loskoppelen van het thuisnetwerk. Twee-ik heb meerdere routers in het huis – sommige als hubs voor meerdere apparaten in een kamer en wat voor draadloze toegangspunten in plaatsen bekabelde dat de belangrijkste draadloze router niet een goed signaal krijgt. Anyway, lijken sommige van deze routers te gaan ontbreekt eens in een tijdje.
Diversen
Ik ben behoorlijk anale over back-ups, dus ik dacht dat ik zou delen met u hoe ik mijn back-ups op de RPI. Ik installeerde SAMBA op de RPI en vanaf een windows-computer, ik gebruik mijn synchronisatie software (Allways Sync) en de PI-mappen kopiëren naar mijn NAS. De synchronisatie software is in staat voor het beheren van versies, dus ik heb effectief versiebeheer evenals back-up. Quarterly, ik neem de SD-kaart uit de RPI en zet het in een kaartlezer op mijn Windows-computer en gebruik True Image te nemen van een exacte kopie van de kaart. Ik denk dat ik ben gedekt voor kleinere rampen (terwijl een ook kopiëren van de NAS Raspberry pi directory naar de cloud (ASUS Webstorage) ik ben geen back-up van mijn SD kaart back-up naar de wolk).