Hem övervakning
Funktioner
· Övervaka spartanska 650 säkerhetssystem
· Övervaka hem brandvarnare
· Monitor overhead garage
· Övervaka temperatur
· Monitor för ändringar till nätverket
· Skicka e-post och textmeddelanden på varningstillstånd
· Fjärraktivering av brandvarnare
· Fjärraktivering av overhead garage dörröppnare
· Loggning av händelser
· Nivå av aviseringarna skickas endast till e-postadresser som matchar den nivån (Info, varning, kritisk)
· Skicka SMS via e-post
Saker jag lärt mig:
· Hur gränssnittet mellan GTK och en SQL-databas, under Python
· Hur man använder en logik lastbryggan
· Med flera trådar för att övervaka saker samtidigt
· Mellan program kommunikation använder sockets
· Gränssnitt mellan ett C-program och Python, med Cython
Obs
Jag skriver här några veckor efter att få allt detta fungerar, så jag inte kanske har inkluderat alla detaljer av de stegen jag tog till att få detta att fungera. Om du har frågor, skicka en kommentar och jag kommer att återkomma till dig.
Spartanska 650 hem trygghetssystemet
Jag blev intresserad övervakning av hemmet med Raspberry PI när jag började leta i hemmet trygghetssystemen för min son och såg att de hade alla gränssnitt som kan nås via internet. Jag undrade om jag kunde göra samma sak med min 30 - åriga spartanska 650 säkerhetssystem. Vad jag beslutat att göra är Raspberry Pi (RPI) fungerar som en knappsats. Knappsatsen har 4 trådar, som jag fast besluten att vara makt, marken, data och klockan (baserat på läsa manualen och etiketterna på panelen). Jag läste lite på internet på DSC larmpaneler, så jag förväntade mig någon form av puls sekvens för att kommunicera med varandra. Säkerhetssystemet är en 12V och RPI bara vill ha en maximal spänning på 3,3 v. Jag använde en spänningsavdelare för att släppa spänningen till vad jag behövde. Detta endast skulle vara ett sätt och jag ville dubbelriktad, men det skulle fungera för nu (mer om bi-directional senare). En sak jag lärt mig om spänningsavdelare är att du behöver ansluta marken på systemets säkerhet och RPI tillsammans. Jag försökte läsa förändringen från låg till hög i Python genom fick inte någon konsekvent behandlingen. Jag förväntade mig att jag borde åtminstone se något ganska vanlig på raden klocka, men jag gjorde inte. Jag behövs för att se dessa signaler och började att forskning med hjälp av oscilloskop. Jag hittade en USB-enhet som körs på en Windows-dator och beställde det och när på att bygga programmet jag skulle använda för att göra övervakning, Varna etc.
Python
Jag bestämde mig på att använda Python, har erfarenhet med det gick jag spelade med Maemo på en Nokia N900 för några år sedan. Jag bestämde mig för jag skulle bryta funktionaliteten i två program-man göra övervakning och andra användare gränssnitt (GUI) och har program talar med varandra. (Detta är innan jag förstås om Xwindows och att RPI kunde visa flera program på samma gång). Jag använde SQLite databaser för att hålla data. Jag var bekant med GTK men bestämde mig att använda GLADE för att bygga gränssnittet. Jag kunde göra nästan allt i Gränssnittet i Windows och kopiera sedan hela till RPI. När så småningom jag kopiera allt till RPI, jag hade ett antal fel och fick reda på att jag hade utvecklats under Python3 och GTK2 +. Jag bestämde mig för att jag var att använda samma versioner på RPI, men detta orsakade en del problem som måste övervinnas. När jag närmade sig slutförandet av programmet, var jag fortfarande några veckor kvar till leverans av USB oscilloskop. Jag började att forskning med RPI som ett oscilloskop och det är när jag sprang in i PIGPIO.
PIGPIO
Detta är en uppsättning bibliotek och program för samverkan med RPI. De har ett oscilloskop program också! Med detta verktyg kunde jag bestämma att klocksignalen var endast 20 mikrosekunder länge. Oj, är Python alldeles för långsam att bearbeta signalförändringar så snabb. Jag skulle behöva använda något annat programmeringsspråk till gör så pass. Lite mer googla runt och jag beslutade att använda C. Vid den här tiden var jag ganska investerat i Python, så jag bara ville genomföra denna specifika funktion i C och lämna resten i Python. Med hjälp av PIGPIO bibliotek kunde jag få C-programmet att hämta data tryggheten. Ja! Nu var allt jag hade att göra gränssnitt C-programmet med min Python program.
Cython
Detta tycktes vara den enklaste metoden för gränssnitt C till Python, sprang jag in 2 problem. Först är att den installerade versionen av Cython tycktes bara arbeta med Python2. Jag var tvungen att återuppbygga Cython under Python3 och det andra problemet jag hade var med mina trådar. Mitt användande av PIGPIO använde ett samtal tillbaka program för att få avläsningarna från säkerhetssystemet. Jag ville också använda en motringning program låta Python programmet vet när jag hade några data. Jag sprang in Signal 11 (segment fel) fel. Jag ändrade det så att C-programmet returnerade data på den röda tråden i stället för att använda ett samtal tillbaka. Detta fungerade bra men nästa problem jag hade var att några av mina trådar verkar hänga upp och inte behandla självständigt. Mer forskning berättade för mig att det är för Python har lås som hindrar samtidighet i vissa fall. Jag kunde lösa detta problem genom att tala om Cython som vissa program att köra som NOGIL och detta fick runt tråden hänga upp problemet. De logik nivellörer kom, så jag ska prova dubbelriktad, så att jag kan beväpna och avväpna larmsystemet distans.
Logik nivellörer för dubbelriktad kommunikation
Så försökte jag att använda logik Levellers för att överföra pulserar på 12V larmsystemet till 3.3V av RPI. Nej gå. Jag visar sig att de logik nivellörer kan bara svara på signaler som är minst 300 mikrosekunder. Jag behöver något som kommer att svara på något som är cirka 20 mikrosekunder. Jag är fortfarande endast enkelriktad med min spänningsdelare. Jag är verkligen inte erfarenhet av elektronik, men av mina googla runt, framgår det att det inte finns något som kommer att överföra 12V pulser av 20 micro-sekunder till 3,3 V.
Jag då försökt till använda logik nivåer med min rökdetektor (se nedan). I princip jag ville ha en dubbelriktad relä. Det fungerade inte. Problemet är att när kraften tas bort från den låg högt, banan är klar i överkant. Inte bra att ha rökdetektorer går bort varje gång makt tas bort från RPI.
Temperatur-övervakning med DS18B20
När jag köpte RPI, hade buyapi.ca också ett 5 pack av temperaturgivare. Detta är ganska sofistikerade enheter som mäter temperaturen och överföra temperaturen digitalt på 1-wire. Jag hade en arbetar medan jag väntade på oscilloskopet att komma fram, så jag gjorde upp 2 mer, att övervaka temperaturen i min fristående garage, inne i huset och utanför. Lyckligtvis när jag sprang en tunnelbana till garaget för några år sedan, sprang jag ett extra rör fyllda med 5 par telefonledningar. Min far är en elektriker och saker av dessa saker. De satt oanvänd i 30 år, men jag gör bra användning av dem nu. Utanför temp bildskärmen har bara fastnat i kallt luftintaget på min panna. Inte helt korrekt, men tillräckligt bra för mina syften. Jag lärde mig några saker här. För det första, jag sätta ett motstånd med varje sensor, men som en läsa mer, det är bara en pull-down motstånd och sedan alla sensorerna är anslutna till RPI parallellt, jag förmodligen bara behövs 1 motstånd (verkar fungera bra med 1 motstånd per sensor. Andra var jag upptäckte att min sensorer inte fungerade. Jag gick tillbaka till att ha endast en sensor. Fortfarande ingen gå. Jag tänkte kanske jag skruvade upp RPI, eftersom jag fäst sensorerna RPI när det drivs upp (jag vet, inte en bra idé), så jag började google runt för att se om jag kunde använda en annan port GPIO4. Det är när jag hittade en post som säger följande ändring måste göras:
sudo nano /boot/config.txt
Lägg till följande rad längst ned:
dtoverlay = w1-gpio, gpiopin = 4
Fick älska Unix. Gör ändringar med ingen anmälan. Eller åtminstone ingen som jag kunde hitta. Den tredje saken jag upptäckt om temperaturgivare är att de ibland ger dålig avläsningar. Detta verkar hända på den första behandlingen, så jag antar att det är ett tidsfel (som börjar läsningen halvvägs genom en Skicka). Hur som helst, jag behövde för att lägga till ett test på fältet CRC läsning att se till att jag hade bra läsning. På övervakning overhead garageporten.
Overhead dörren övervakning
När jag köpte min nya garage dörröppnare, kom det med garage dörren bildskärmen. Det var en enkel trådlös system som visade ett grönt ljus när dörren var stängd. Jag mätte spänningen i den gröna lysdioden och det var omkring 2.7V, perfekt för RPI. Förutom loggning med dörren öppnas och stängs, skicka jag en varning om dörren öppnas för mer än 10 minuter. Det enda jag har problem med är att de två delarna av garage dörren monitor verkar förlora kommunicerar med varandra då och då. Jag kommer att försöker fortfarande saker, men förmodligen göra en större antenn, eller flytta enheterna närmare varandra eller skrota hela och flytta till en magnetisk strömbrytare.
Fjärråtkomst
Även om jag har systemet varna mig att viktiga händelser, ville jag fortfarande Visa GUI ibland. Vad jag gjorde var att installera OPENVPN och åtsittande. Jag är nu kunna ansluta säkert till mitt hemnätverk och sedan fjärransluta till RPI. Ytterligare en fördel jag kan komma åt min NAS (även om jag kunde göra DLINK molntjänst till tillträde den innan du ställer in en VPN. Som en bieffekt jag kan använda VPN tillbaka till mitt hemnätverk åtkomst till tjänster som Songza när jag är ut ur landet.
Garage dörröppnare
Jag tog växeln garage dörröppnare vid dörren och fann att det var bara en enkel switch. Jag lödda två kablar till växeln och testade genom att vidröra ledningar. Dörren öppnas! Jag köpte då ett relä som är för en RPI och använt detta för att simulera att trycka på knappen garage dörren öppen.
Detektera intrång i nätverk
Eftersom jag har en dator i nätverket körs på nätverket, trodde jag jag skulle kunna övervaka mitt nätverk. Jag övervakar nu för nya enheter i nätverket, som är som en inkräktning upptäckten. Jag installerade ett program som heter ARPSCAN för att få data. Jag har lärt mig ett par saker från att titta på data. Ett – jag kan säga när folk kommer och går i huset, baserat på sina mobiltelefoner ansluta och koppla från hemnätverket. Två-jag har flera routrar i kammaren – vissa som nav för flera trådbundna enheter i ett rum och några för trådlösa åtkomstpunkter på ställen att den huvudsakliga trådlösa routern inte får en bra signal. Hur som helst, vissa av dessa routrar verkar försvinner då och då.
Diverse
Jag är ganska anal om säkerhetskopior, så jag tänkte jag skulle dela med mig hur jag gör Mina säkerhetskopior på RPI. Jag installerade SAMBA på RPI och från en windows-dator, jag använder min syncing programvara (Allways Sync) och kopiera de PI katalogerna till min NAS. Synkar programvaran kan hantera versioner, så jag har effektivt versionshantering samt backup. Kvartalsvis, jag tar SD-kortet ur RPI och lägga det i en kortläsare på min Windows-dator och använda True Image för att ta en exakt kopia av kortet. Jag tror jag är täckt för smärre katastrofer (medan en också kopiera katalogen NAS Raspberry pi till molnet (ASUS Webstorage) jag inte stöder upp min SD-kort backup till molnet).