Google Analytics

Showing posts with label Home Automation. Show all posts
Showing posts with label Home Automation. Show all posts

Monday, July 4, 2016

Security System - Local Alarm From Kit

As part of my Security System, I wanted to place an audible alarm near whatever sensor I'm using.

My sensors are going to be networked, feeding information to the main security control.  Currently I'm using a NodeMCU which makes use of a ESP8266's WiFi network capabilities.  This also means I can send a request, from the main security control, to turn on the alarm remotely, should I desire to do so, as its under the control of the ESP8266 device.

In this post, I'm not showing any type of sensor.  However, in most cases, I'll be using a PIR or a ultrasonic sensor to set the ESP8266 in alarm output for pin 5, and then enabling the local sensor alarm sound.  So, I'm just showing the alarm device and ESP8266 here.

Because the ESP8266 is a 3.3 vdc device, it can only supply 3.3 vdc and a limited amount of current; this wasn't enough to directly drive the audible alarm, so I've added a switching transistor to supply the switching current.

Scroll down for circuit description, construction, and construction photos.

In this post, I'm showing the use of a cheap commercial Window and Door Open/Closed Sensor Alarm, that I picked up for $1.00 at a local Dollar Store.  It contains a circuit board with:

  • square wave generator
  • battery holder
  • transformer
  • on/off switch
  • piezo electric speaker
  • 3 1.5 vdc batteries


I'm not making use of the magnetic switch in this post.  Instead, I'm making use of the audible piezo alarm (hereafter referred to as ALARM), when enabled by the NodeMCU device.

Circuit Description
In this design (software in a later post), the NodeMCU is driving pin 5 high to 3.3 VDC.  The output of this pin is connected to a 6.8K resistor, then to the base of a 2N3904 NPN transistor, which is biased as a switch.

The negative battery post of the ALARM has been separated from the ALARM circuit board, with the transistor inserted between the negative battery post and the circuit board, with the ALARM circuit board connected to the transistor's collector, and the negative terminal connected to the circuit common ground.

When a high value (3.3vdc) is applied to the base of the transistor, it turns on, basically connecting the circuit board through the transistor to ground - the ALARM sounds.

When a negative value (0vdc) is applied to the base of the transistor, it turns off, stopping current flowing from the collector to the emitter, so that the circuit is open, and no ALARM sounds.

Any 3.3vdc supply can be applied to the base to turn the transistor on - you don't have to use a NodeMCU.

If other voltages are used, such as a 5vdc from an Arduino, then you should resize the base resistor.

The 2N3904 has a beta of around 200 (varies somewhat), and is limited to 200ma and 625mwatts.

I wanted to restrict the current through the transistor to 100ma.

For 100ma at 3.3vdc and beta of 200, this equates to:
CollectorCurrent (Ic) = BaseCurrent(Ib) x Beta(200)
Ic = Ib x Beta
Ib = Ic / Beta
Ib = 100ma / 200
Ib = .5ma

Base Resistor (Br) = Vdc/ma
Br = 3.3/.5ma
Br = 6.6Kohm

While I'm showing 3.3 vdc above, a closer approximation would be 3.3 - .7 = 2.6 vdc, which includes the voltage drop across the base-emitter, which would yield about 76 ma instead of the 100 ma.  However, that's good enough for this circuit, and the 6.8K is close enough, and it sound loud enough for a local alert for me; the main security controller will driving the loud stuff.

The battery voltage of 4.5 (3x1.5)vdc is flowing from the ALARM's batteries, and is being switched via the transistor's base of 3.3vdc.

This ALARM can be used in any device with a small voltage to switch the transistor on and off, by making adjustments to the base resistor.  I've put one, with a much larger value resistor into a box, so I can use it as a beeper for simple circuit tests and continuity tests; the higher value resistor limits the sound!

BBQ

Construction Pictures:


The device I bought for $1.00 at the local Dollar Store


The contents of the device: 3 1.5vdc batteries, a magnet, and the sensor/alarm/battery case.


Remove the battery cover, then remove the screw I'm pointing at in order to get into the back of the case.


After you've opened the case, this what it will look like.

Two board types in stock!  Both work the same for our purposes!  We are only using the red wire where it connects to the negative battery terminal post.


Newer Device Circuit Board - pointing at black blob.
While building the circuit, I realized there were two (2) versions of the device, both bought at the same time from the same Dollar Store.  This is the newer device, showing a 'black blob' where the square wave generator is located.


Older Device Circuit Board - pointing at discrete components.
This works the same as the newer board.


Unsolder the red wire from this junction - it is the negative battery post.  Leave the other end of the red wire still connected to the circuit board.  We will be inserting the transistor between this negative battery post and the red wire, so the transistor, in acting like a switch; allowing current to flow back to the negative battery post when transistor enabled, and no current when transistor disabled.


Connect a green wire to the negative batter post you just removed the red wire from above.  This will be connected to our circuit common.


Next we are going to connect a yellow wire to the red wire that was removed from the negative battery post previously.  So, solder it in already!  Our transistor will be going between this yellow wire and green wire.


This is how the circuit will function.  The green wire is connected to ground, the yellow wire is connected to the collector of the 2N3904 NPN transistor.  The emitter is connected to ground.  The base is connected to a 6.8K resistor, and then to the output pin 5 of the NodeMCU device, which will switch 0 - 3.3vdc.


There isn't anywhere in the ALARM case for the two new wires to pass, so I used my soldering iron to melt a small hole in the case, then put the wires in, and closed up the case.


Testing!  A simple test of just the wiring changes!
Before transistor and software are added to the circuit!

I've inserted the batteries (polarity as indicated in the battery compartment bottom), and made sure to slide the switch to 'On' position - it won't sound if you don't turn it on!



With everything on, and the two wires not connected, the ALARM should not be making an alarm sound.


With everything on, and shorting the yellow and green wires together, the ALARM should be making an alarm sound!


Circuit schematic.


Using the NodeMCU with software I created, testing.  High output from NodeMCU pin 5 (also showing on blue LED on NodeMCU) causes ALARM to sound alarm.


Using the NodeMCU with software I created, testing.  Low output from NodeMCU pin 5 (also showing no LED on NodeMCU) causes ALARM to not sound alarm.

I'll upload the software in a later, separate post.

BBQ

Friday, April 4, 2014

Home Security/Automation System - Monitor Screen

Monitor Screen - under development

Previous     Next     Table of Contents

As mentioned on the previous post, I'm performing the GUI portion of the Home Security/Automation System using Kivy.

I've had quite a learning curve to get the Monitor Screen (below) to the point where it is now.  While I like Kivy, the documentation is still a struggle for me, so I have to build a lot of simple GUIs and work with them, then gradually adding complexity.

The screen below is a mockup of what I'm envisioning.  It doesn't have any logic behind it, just ability to show the zone buttons and checkboxes.

I don't like the way the checkboxes are being displayed.  With the buttons, it's easy to see the button boundary, but the checkboxes just all run together to me; can't really tell where one zone's checkboxes ends and another's begins.

So I'm researching, trying to find a way to add some sort of visual delimiter that separates the zone's checkboxes from the next zone's checkboxes.

Here's what I've got so far (first the picture, then the code - note: Kivy code is two part; a Python portion (*.py) and a Kivy language portion (*.kv).  I've posted both below.

First - the picture of the Monitor Screen (currently titled as 'Dynamic Button Text')



Here's the Python code:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  DynamicButtonText.py
#
#  http://BBQandBanjos.blogspot.com
#  

# Given a Dictionary of dynamic names,
# pick each up and assign it to the Button text.


from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.checkbox import CheckBox

class ZoneList():
    _zoneL = ["Basement","Sun Room","Den","Living Room","Front Door"]

class ZoneElements(GridLayout):
    pass

class ZoneCheckBoxes(GridLayout):
    _instance_count = -1
    _zoneNames = ZoneList._zoneL

    def __init__(self, **kwargs):
        super(ZoneCheckBoxes, self).__init__(**kwargs)
        ZoneCheckBoxes._instance_count += 1
    

class ZoneButton(Button):
    _instance_count = -1
    _zoneNames = ZoneList._zoneL
    
    def __init__(self, **kwargs):
        super(ZoneButton, self).__init__(**kwargs)
        ZoneButton._instance_count += 1

class ZoneLayout(BoxLayout):
    def __init__(self, **kwargs):
        super(ZoneLayout, self).__init__(**kwargs)
        for i in range(len(ZoneList._zoneL)):
            self.add_widget(ZoneElements())

class DynamicButtonText(App):
    pass

def main():
    DynamicButtonText().run()   #run kivy app
    
    return 0

if __name__ == '__main__':
    main()

    

========

And here's the Kivy code:


#dynamicbuttontext.kv

ZoneLayout:

:
    orientation: 'vertical'
            
:
    text: "Zone " + str(root._instance_count + 1) + ": " + root._zoneNames[root._instance_count]
#    text: "Button: "
        
:
    cols:2
    CheckBox:
        active: True
        group: "Zone " + root._zoneNames[root._instance_count]
    Label:
        text: "Active"
        
    CheckBox:
        group: "Zone " + root._zoneNames[root._instance_count]
    Label:
        text: "Inactive"
    
    CheckBox:
        group: "Zone " + root._zoneNames[root._instance_count]
    Label:
        text: "Bypass"
    
    CheckBox:
        group: "Zone " + root._zoneNames[root._instance_count]
    Label:
        text: "Monitor"
    
    CheckBox:
        group: "Zone " + root._zoneNames[root._instance_count]
    Label:
        text: "Test"


:
    cols: 2
    ZoneButton:

    ZoneCheckBoxes:

Friday, March 28, 2014

Home Security System - update

Previous      Next      TableOfContents

STATUS
It's been a while since I published an update to my project.  Seems I have too many projects!

Recently, I started this project back up.  I've made a lot of headway in programming the project in Python, with major changes to the architecture.

Here's the status as of March 28 2014:

  • It's still slated to be deployed on a Beagle Bone Black (B3)
  • It will follow a MVC (Model View Controller) paradigm.
  • The GUI display will utilize Kivy. 
  • The three major components:
    • The portion that runs on the B3 will be the portion that is responsible for monitoring the sensors.
      • The code for each sensor will run in its own thread.
    • The GUI will run distributed across a network, both local as well as Internet.
    • The Controller will run on a desktop machine.  It's currently running on Ubuntu, but since it's Python, it should also run on Mac and Windows.
    • The logger will run on the desktop machine.
    • It will support multiple monitoring nodes.
I have been actively working on this, making a lot of headway.  

TOOLS

plantuml.com
At one point, after taking a couple of days off, I realized rather than reorienting myself to the code through manually walking through the code, I should put together some Sequence Diagrams.  So at first I had drew these, but after having to update them a couple of times, I started looking around for something better suited to this task, while being free and lightweight.

I settled on 'PLANTUML.COM' for this activity.  I highly recommend it!  Now, I just keep a text file open, where I add the sequence of messages as I change the code, run plantuml tool against it, which produces a PNG output file.  This has enabled me to return to the code much faster whenever I take some time off.

Kivy
The first attempt was using TkInter, but after taking some time off and returning to this project, I wanted to take a look around and see what might be new.  I came across Kivy.  After a deep dive, I decided this was the path I was going to take.  I've been reading the following books (in addition to the kivy.org documentation):
  • Kivy: Interactive Applications in Python (Roberto Ulloa)
  • Creating Apps in Kivy (Dusty Phillips)
Of the two books, I prefer Dusty's book "Creating Apps in Kivy"

More later!!!

Saturday, May 18, 2013

A Home Security System - BeagleBone Black getting started

BeagleBone Black - Getting Started

Keywords: BeagleBone Black, Home Automation, Home Security, Python, Raspberry Pi, Tkinter, 

Updated June 5, 2013 (Table of Contents)
May 18, 2013
Next
Table of Contents

Note that I'm on an Ubuntu system, not a Windows system.



I received my BeagleBone Black (B3) yesterday.  Now I'm trying to figure out how to use it!

Per the included card that came in the B3 box, I noted, under Tethered to a PC:

  • Connect the USB mini cable to BeagleBone Black.  OK, did that.  They supplied the cable - nice!
  • Connect the other end of the USB cable to the PC.  OK, did that too.  
  • Look for a new mass storage drive to appear on the PC.  OK, it's there.
  • Open the drive and click on START.htm.  OK, there it is.  Clicking...
  • It opened a web browser page, in URL:  file:///media/BEAGLEBONE/START.htm , and presented the "Getting Started" page.  Nice!  I skipped the step 2, "Install drivers", as it noted: "Driver installation isn't required, but you might find a few udev rules helpful".  This has no meaning for me, as I don't know what udev is or the rules they are talking about, so I'm going to skip for now, since they said it wasn't required.  I can always do later...
  • Step 3, Browse to web server on Beagle.  I did this, and observed the web page from my B3's server on http://192.167.7.2.  
    • On this page, under Troubleshooting, it says not to use Windows Explorer.  That's OK, I'm not using it on my Ubuntu node that I'm working from, I'm using Chrome.  I'm not Troubleshooting either, as I'm not having any problems.
    • The next section is "Update board with latest software".  Here, I got confused.  I'm on Ubuntu, but everything here appears to be oriented towards assuming I'm on a Windows node.
      • It says" Download "Angstrom Distribution" from http://beagleboard.org/latest-images". 
      • Notes - 'due to sizing necessities, this download may take 30 minutes or more".  OK, it takes whatever it takes, no issues here.
      • The file you download will have an .img.xz [sic]extention.  This is a compressed sector-by-sector image of the SD card.  OK, no issue here for me.
      • Then it says, Step#2, Install compression utility, download and install 7-zip.  OK , then the screen clearly shows a Windows "open file security warning, publisher could not be verified, run?"  Well, I'm not running on Windows, so now what do I do?  I read along further...
      • Step #3, Decompress the image.  Use 7-zip to decompress the SD card .img file.  OK, still showing a Windows screen here.  Can't do that....so reading further to see if I can figure this out, or see what else may present itself...
      • Step #4, Install SD card programming utility.  Download and install Image Writer for Windows, be sure to download the binary distribution.  OK, can't do that either, so let's continue down to see what might present itself and clear this up....
      • Then an odd note, after all this Windows stuff:  Some general help on programming SD cards can be found on the Ubuntu Image Writer page.  OK, that sounds like me, so let's have a look; but what about all the zip unpacking, etc?  I'll have to let that be unresolved for the moment.  In the meantime, I'm over at the Ubuntu site, and note this "describes how to install from a .IMG file', and  about "downloading IMG image to a device that your computer can boot from", so maybe I'm onto something here.  So, for now, I'm assuming this is what I need to do.  
      • Returning, for now, to the B3's Update Software section, I note "Connect SD card to your computer", and I'm wondering, which computer are they talking about?  My Ubuntu computer, or the B3?  Reading further, it says "Use the provided microSD card to SD adapter or a USB adapter to connect the SD card to your computer.  Well, there wasn't any provided "microSD card to SD adapter"!!!  The uSD slot (under board) is empty, and other than the USB to micro USB cable provided, there's nothing else provided.  So, something wrong here!  Reading further....
      • Step #6: Write the image to your SD Card.  OK, that clears up one question, where I didn't know which computer they were referring to - my Ubuntu computer, or the B3.  It's now clear they are referring to my Ubuntu computer.  OK, got it - I'm going to program an SD card, using the Ubuntu instructions noted above from the Ubuntu web site, with the .IMG file.  OK, understood.
      • Step #7: Eject the SD card.  OK, got it.
      • Step #8: Boot your board off of the SD card.  They then give detailed instructions on what to hold down while booting from the SD card.  One thing that concerns me though is that it doesn't say how big an SD card (in capacity) I need.  It also says "this can take up to 45 minutes."!!!
    • Well, looks like I'm stopping here until I can go to the store to buy a 4GB SD card.  While I'm doing that, I'll go ahead and download the BeagleBone Black latest-images (Sngstrom Distribution (BeagleBone Black) 2013-05-08.  Well, I first clicked on the 'torrent', but it came up with a warning that torrent would also mean I would agree to upload.  I don't want to do that off of this computer, so I canceled that, and used the normal download instead.  I'm also going to get a 5VDC power supply.
      • Hmmm, can't seem to find the specs on the power supply physical dimensions needed.  After much searching, I found it embedded in the document:  The connector used is a 2.1MM center positive x 5.5mm outer bar
    • I want to power down the B3 - I never leave new electronic devices powered up and unattended, so I want to power it down - how to do that?
      • OK, here it is:  A power button is provided near the reset button close to the Ethernet connector....f you hold the button down longer than 8 seconds, the board will power off if you release the button when the power LED turns off. If you continue to hold it, the board will power back up completing a power cycle
      • Yep, that did it.

UBUNTU

  • So, this is what I did to install an updated image via Ubuntu.
    • First, I downloaded the image on to my Chrome browser into the Download directory.
    • Then I double clicked the .xz file.
    • This brought up an Archive Manager window, where I selected the 'Extract' button.  In this case, I created a new folder and labeled as pertaining to BeagleBone Black and the date, then I extracted to this folder.  This created a .IMG file.
    • This is the file that needs to be transferred onto the SD card.
    • Per the Ubuntu post here, this page describes how to install from a .IMG file.  
    • It says to 'write the downloaded IMG image to a device (my SD card in this case) to a device that [my] computer [my B3] can boot from.  It also notes that this action will destroy any data on the destination SD.
    • There's a lot of good information on this page, so I would suggest that you view it and understand it before proceeding.
    • The steps given:
      • 1. Download the .img file.
      • 2. Install the usb-imagewriter package
        • 2.1 If your release does not include this, download it from Oliver's PPA
        • 2.2 if the imagewriter fails to launch, you may need to install python glade2 support.  Install the python-glad2 packge or Run sudo apt-get install python-glade2
        • 2.3 If your release does not include it and you are runing Ubuntu 9.04 Jaunty Jackalope then run this command from the console: sudo apt-get install usb-imagewriter
      • 3. Oopen Applications->Accessories->Image Writer
        • 3.1 from teh command line, from the console:
          • sudo imagewriter
        • On some usb-imagewriter versions (console command:imagewriter) the applications fails to write if the image path contains blank spaces, exiting with "IndexError: list index out of range".
      • 4. Insert your flash media
      • 5. Sleect the downloaded file and flash device, and click "Write to Device"
      • 6. REmove your device when the operation is complete.
    • Well, in my case, I went to 'console' and typed in 'sudo imagewriter', and it launched, so I didn't have to do any of the installation stuff before.  I probably installed this previously.
    • When I placed the SD card into my Ubuntu's SD slot, I was expecting to see it in the File Manger, but I never saw it.  I looked in the folders Mnt and Media, but didn't see it there either.  So, on a whim, I launched 'imagewrite' and sure enough, it found it.  So I'm assuming this didn't have any type of file system created on the SD, so nothing was seeing it.
    • Running 'imagewriter'
      • it presented an interactive window, where it prompted me for the Write Image to select.    I used this to select the file from the folder I created previously (above).
      • From the 'to' listbox, I selected the SD card I had inserted.
      • I selected 'Write to Device'
      • I OK'd the warning that says it will destroy all data on the device (which as it turns out, is mounted at /dev/sde).
    • And, at 7:21 PM, it started writing.  Knowing that Beagle's site said it may take 45 minutes, I'm expecting a loooonnnnnggggg wait.  So far, I don't see anything, so I'm going to check the process running on my system to see if I can see it writing and consuming CPU cycles.
  • Update 6/5/13  Sorry for the long delay.  Had some other things pop up, and just now getting back to this.  So, to resume from the post above:
    • I had some problems getting the write to complete without error.  I suspected it was the SD card, so I removed it and tried another one, and the replacement worked fine.  However, it was too small overall, so I wouldn't be able to use it for the final installation.  
    • My system, which I built from components (my first computer, in 1978, was built from discrete components, such as transistors, capacitors, etc, except for the mother-board.  This was a Heathkit, H11, which incorporated a PDP-11/03 motherboard from DEC.  It cost me about $3,500!  In 1978, you could buy a CAR for this amount of money!  But now, I just buy the components and plug them in - no more putting the springs under a keyboard, no more solenoids for a paper tape punch, no more flyback transformer for the display monitor!).  I did not include a separate SD card reader, instead opted to use a USB SD card reader.  On a whim, I decided to try a different USB SD card reader I had with the problem SD card.....and the SD card worked fine!  So, it was a combination of the USB SD card reader device and the SD card itself that was causing the problem.  Switching to a different USB SD card reader and the same SD card worked great.
    • So this part of the project is complete!

A Home Security System - Resources

Resources

Update: May 18, 2013 (Table of Contents)


A Home Security System - Construction Blog

Construction Blog

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation


Update: June 5, 2013. (Table of Contents)

  • Updated this entry (at the bottom) with SD card info.  http://bbqandbanjos.blogspot.com/2013/05/a-home-security-system-beaglebone-black.html
  • My Host system changes:
    • Installed 'Git' onto my system for Source Code Management.
    • Had been running on a small Solid State Hard drive, but have decided to move to a larger physical hard drive.
    • Decided to migrate from Ubuntu 11.10 to 12.04 which has long term support.
    • I used Linux's 'dd' command to image the new drive.  See details here.
  • Noted that the Python version installed on the BeagleBone Black (B3) is not Python3, which is what I was planning on using.  Will have to investigate whether I can upgrade Python on the B3 to Python3, or will have to move back down to Python 6 or 7 - not sure which is on B3 at the moment.
  • Will be out all next week, so I don't expect to make any additional postings.



Update: May 18, 2013 (Table of Contents)

I have been pretty busy on the project.  I've been working on the following elements:

  • Learning about the BeagleBone Black (B3) platform.  I decided to move the project off of the Raspberry Pi (RPi) and onto the B3.  I'm concentrating right now on the following aspects:
    • How to interface with the onboard mux.  This is used to specify which channels, or pins, are being addressed.  
  • Learning Python.  I've really been enjoying this!  I've been programming for a while: Fortran (1977), Assembler (1978), C (1983), C++(1995), Java (1999), Arduino (2004?), and Python3 (2013), so the move to Python3 hasn't been huge, but it's been different never-the-less.
  • Learning Tkinter.  This is one of the main standard GUI interfaces into Python.  
  • B3.  Not yet deep enough into this, but I'm planning on programming it using Python3.  
    • Just received it on 5/17/13.
    • Concentrating on getting it up and online.
    • Concentrating on Mux addressing via Python3.
    • So today, after finishing on this project update, I'm going to start with the B3 and getting it online, then accessing it's pins via short Python3 programs.


Monday, March 25, 2013

A Home Security System - Sensors OOD

Sensors OOD

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation

March 25, 2013 (Table of Contents)


This system will be Object Oriented (OO).  This page will be concerned with the Object Oriented Design (OOD) of the Sensors.  It will make use of Polymorphism.

The root type: Sensor

A Sensor Object:
  • It has the following Attributes:
    • Name
    • Zone
    • Description
  • It has the following States: 
    • Ignored
    • Alarm
    • Alert
    • Normal
  • It has the following Transition Listeners
    • ListenerOnTransitionToAlert
    • ListenerOnTrasitionToAlarm
    • LietenerOnTrasitionToNormal
    • ListenerOnTrasitionToIgnored
  • It has the following Listener Methods
    • RegisterAlertListener
    • NotifyAlertListener
    • RegisterAlarmListener
    • NotifyAlarmListener
    • RegisterNormalListener
    • NotifyNormalListener
    • RegisterIgnoreListener
    • NotifyIgnoreListener
  • It has the following Sensor Control Methods
    • SetSensorToAlarmMode
    • SetSensorToAlertMode
    • SetSensorToIgnoreMode
  • It has the following Sensor Test Methods
    • TestSetSensorToAlarm
    • TestSetSensorToAlert
    • TestSetSensorToNormal
    • TestSetSensorToIgnore

Sensor Children Types:

  • A Magnetic Contact is a type of Sensor.
    • It has the following states:
      • Contact State
        • Open
        • Closed
    • It has the following Sensor Normal Methods
      • DefineNormalAsOpenContact
      • DefineNormalAsClosedContact
    • It has the following children types:
      • A Door Sensor is a type of Magnetic Contact Sensor
      • A Window Sensor is a type of Magnetic Contact Sensor
  • A Voltage Transition Sensor is a type of Sensor
    • It has the following state transitions:
      • Transition from Voltage Low to Voltage High
      • Transition from Voltage High to Voltage Low
    • It has the following Sensor Normal Methods
      • DefineNormalAsLow
      • DefineNormalAsHigh
    • It has the following children types:
      • A Doorbell Sensor is a type of Voltage Transition Sensor
      • A Carbon Monoxide Detector Sensor is a type of Voltage Transition Sensor 
      • A Smoke Detector Sensor is a type of Voltage Transition Sensor
      • A Water Detector Sensor is a type of Voltage Transition Sensor
      • A HVAC Temperature Controller Sensor is a type of Voltage Transition Sensor
      • A Household AC Power Sensor is a type of Voltage Transition Sensor
  • To be classified:
    • Networked Sensor
    • Video Camera Sensor
    • Access Keypad
    • Door Speaker/Microphone




A Home Security System - Web Pages

Web Pages

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation

May 18, 2013 (Table of Contents)

  • Reviewing whether I will use a client/server GUI or web pages.  Not yet decided.

March 25, 2013  (Table of Contents)

Web Page

Users


  • Add User Web Page
  • Delete User Web Page
  • Modify User Web Page

Sensors

  • Add Sensor Web Page
  • Delete Sensor Web Page
  • Ignore Sensor Web Page
  • Modify Sensor Web Page

Control Elements

  • Add Control Element Web Page
  • Delete Control Element Web Page
  • Ignore Control Element Web Page
  • Modify Control Element Web Page

Monitoring

  • System State Web Page
  • Sensor State Web Page
  • Alarm State Web Page
  • Log Web Page

Messaging

  • Add Message Recipient Web Page
  • Delete Message Recipient Web Page
  • Modify Message Recipient Web Page

Video

  • Video Camera Web Page

A Home Security System - Control Elements

Control Elements

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation

March 25, 2013   (Table of Contents)

  • Control Element Types
    • X10
    • 120 VAC Control
    • Door Lock
    • Relay Contact Control
    • Door Speaker/Microphone (e.g., communicate with someone who rang front door).
    • Alarm Siren
    • Alert Speaker
    • Video Camera
    • Networked Control
    • HVAC On/Off
    • HVAC Damper Control (Open/Close)

A Home Security System - Sensor Types

Sensor Types

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation

March 25, 2013   (Table of Contents)

Sensor Types
  • Window 
  • Door 
  • Doorbell
  • Networked Sensor
  • Video Camera
  • AC Household Power
  • Household HVAC status
  • Water Leak
  • Temperature 
  • Smoke
  • Carbon Monoxide
  • Access Keypad
  • Door Speaker/Microphone

A Home Security System - Users


Users

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation


March 25, 2013   (Table of Contents)



The [Name] has three (3) types of users: An Administrator, a Commander, and a Monitor, all of which must login to use and/or view the system.
  • An Administrator has all capabilities of a Commander and a Monitor, plus the ability to:
    • Configure the system.
  • A Commander has the capabilities of a Monitor, plus the capabilities to:
    • Set Sensor State
    • Acknowledge Alarms and Alerts
  • A Monitor has the capabilities
    • Observe the system State Web Page

A Home Security System - Glossary


A Home Security System - Glossary

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation



March 25, 2013  (Table of Contents)

Glossary

  • User: any one who has the capability to log in and interact or view the system.
  • Sensor Element- an input device that detects a state change.  It has an associated Activity Action to perform.  E.g., magnetic window and door alarms, smoke detector, temperature.
  • Control Element - an output device under the control of the system, such as an Alarm Siren, a 120 VAC relay, HVAC, etc.
  • Zone - the home is divided up into Zones.  E.g., back yard 1st floor.
  • Set Sensor State - set the state of a Sensor to Alarm, Alert, Ignore. 
    • Alarm - highest level of capabilities.  Alarm Action performed
    • Alert - Alert level of capabilities.  Alert Action performed
    • Ignore - Ingore the state of this Sensor.

A Home Security System - Design Narrative

Design Narrative

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation

May 18, 2013  (Table of Contents)


Since the last posting (March 25, 2013), which documented the use of the Raspberry Pi  (RPi), I have become aware of a new platform - the "BeagleBone Black" (B3).

The B3 has the some elements, such as faster and more powerful cpu, but primarily because of the increased number of I/O pins, including analog, that the B3 provides over the RPI.  This change will provide, in my opinion, a superior platform, and ultimately a lower overall cost because of the increased number of I/O pins - I was going to have to implement a separate hardware Mux to get all of the I/O I was going to need for the project, and this was probably going to have to be an Arduino, which incurs it's own associated additional costs.

The costs between the two platforms is minor: $35 for the RPi vs. $45 for the B3.

So, moving forward, I will be using the B3.

Design update:

  • GUI Interface



    • I have done a mock-up of the GUI For the system.  It's not finished, and it may look completely different at completion, but this is what I'm currently thinking about implementing (see picture below).  This isn't functional - it's just a picture of a Python GUI implemented in Tkinter, but shows the current concept.  It shows a big area that serves as a flashing alarm in the Home area (something in alarm in the home), then the Area involved, then the Zone involved, then the sensor involved.  All will flash (alternate white/red background) until acknowledged, then seal-in to show the state.  A new event (return to normal, or another sensor goes into alarm) will cause it to go back to flashing.  Every action will be performed from this GUI, from any computer on the system or remotely when I'm away, via Smartphone or Internet connected device.  From here I will also be able to take a sensor Inactive (bad sensor), Bypass (we want to have the backdoor open and not alarm), as well as the state of the sensor (Normal, Alarm), by selecting the sensor involved and changing it's state (e.g., if going from active to Inactive, or active to Bypass)
  • Sensors will include:
    • Window open/close magnetic sensors
    • Door open/close magnetic sensors
    • Motion detectors (PIR)
    • Smoke detectors
    • Carbon Monoxide detectors
    • Natural gas detectors (not sure if these exist or not yet)
    • Water detectors (flooding in basement rooms)
    • Doorbell
    • Loss of Electrical (office, refrigerators, basement utilities room)
  • The security system will divide the home into the following:
    • Areas
      • Basement (this is a live-in basement with one side exposed to the yard outside; our yard slopes, so three sides are below ground level, and one side is at ground level),  with a den room, full kitchen, bedroom, exercise room, living room, bathroom, with two (2) entrances (one from outside, one from inside) and four windows (two in bedroom, two in living room).  This can function as an in-law suite.  This level also has all utilities, such including Internet and security system convergence, as well as a furnace room where I want to monitor for Carbon Monoxide and Fire/Smoke.
      • First Floor.  This floor has three doors: one to garage, one to back yard, and one to front yard.  There are 10 windows and a door on the back, one door on the front, and one garage door that will need to be monitored.  One bedroom.
      • Second Floor: There are four bedrooms and a utility room, each with windows and doors, and a central hall, all of which will need to be monitored.
      • Attic: There's a furnace up here, so I want to be able to check for Carbon Monoxide leaks, as well as water leaks.
      • Garage: Carbon Monoxide, Fire/Smoke.  It also has an outside door, and two car entry/exit garage-doors, along with two windows.
      • Outside: Front door area, driveway area, basement area, back yard area.
    • Zones
      • Each area will be broken down into zones.  For example, the Basement area has the following zones:
        • Living room
        • Bedroom
        • Kitchen
        • Utilities room
        • Furnace room
        • Exercise room,
        • Den
      • Similar breakdowns from Areas to Zones will be done for each Area.



March 25, 2013 (Back to Table of Contents)

Keywords: Raspberry Pi, RPi, Arduino, Security System, Home Automation

Raspberry Pi

The security system is based on a Raspberry Pi (RPi) device.  It may incorporate the use of an Arduino in order to facilitate work with external hardware devices - this is under evaluation.  

The RPi will provide the following services:

  • Web App Hosting via Tornado
  • Python program execution
  • File system for data retention
  • TCP/IP network communications
  • Communication with Arduino for hardware communications, via RS232
Python will provide the program Model, View, and Controller (MVC) services.  It will also provide:
  • Ability for the Administrator to configure the via a remote web monitoring page.
  • Ability for the Administrator to change the state of the system, sensors, and control elements via the remote web monitoring page.
  • Ability to monitor the status of the security system.
  • Ability to push status information to a remote web monitoring page.
  • Ability to send SMS text messages
  • Ability to control 120 VAC contacts
  • Ability (possibility) to control X10 devices
  • Ability to control other devices through relay contacts
  • Ability to link to, or stream (undecided) video cameras
  • Object Persistence via Shelve
  • Web Pages via Tornado
  • Web Page push updates via HTML5 Sockets
The Security System
The System
The System shall be provide the following services:
  • Screens to support configuration of the system.
    • Add, modify, delete Users
    • Add, modify, delete Contact Phone numbers
    • Add, modify, delete Senors
    • Add, modify, delete Control Elements
  • Screens to show system state:
    • System Status
      • Network Connection
      • File System
      • On AC or Battery Backup
      • Watchdog
      • Sensor State (for each sensor)
      • Normal
      • Alert - time of event
      • Alarm - time of event
      • Ignore - time of event
      • Acknowledged - time of event
    • Messages (All sensors, Control Elements, System Status)
      • Messages displayed and logged
      • Events (all)
        • Time of event
      • A log entry for any change in state of any Sensor or Control Element. Will contain such information as:
        • Sensor Name
        • Zone
        • State Change
      • User Login
        • User Name
        • Failed Attempts
      • User Logout
        • User Name
      • Web Browswer IP addresses served
        • Page accessed
        • User Name
        • Invalid Attempts
The Security System will monitor all sensors for changes from normal state.  On detection of a state change for any sensor, the will perform the assigned action.  Each action is defined for each sensor by the Administrator.  The assigned action will continue until either a timeout for this sensor's action, or a command from a User.




A Home Security System - Table of Contents

Home Security System: Table of Contents

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation


This will be the organized central collection of the information associated with the design, development and documentation of the Home Security System.

Section X: Project - Home Security System

Section X: BeagleBone Black - Getting Started

Section X: Design Narrative

Section X: Construction Blog

Section X:  Updates

Section X: Users

Section X: Sensor Types

Section X: Control Elements

Section X: Web Pages

Section X: Testing

Section X: Documentation

Section X: Releases

Section X: Resources



Project Update 1 - A Home Security System

A Home Security System

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation


Change to architecture
April 6, 2014 (Back to Table of Contents)

I recently came back to this project after taking a break to do other things.

The current architecture (same as before):

  • Python is the primary language
  • It will run on a BeagleBone Black
The changes to the architecture:
  • Is a distributed application
  • Using Kivy for the presentation layer (GUI)
  • Monitor will be available on any GUI device (e.g., Linux, Windows, Mac, Android)
  • Uses Json for IPC and network communications


Search for a Python Oriented OODBMS

May 18, 2013   (Back to Table of Contents)

  • Have decided to go with BeagleBone Black instead of Raspberry Pi.


March 25, 2013  (Table of Contents)

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation


After much research regarding Object Persistence (OODBMS) for Python, I've elected to use the built-in capability of Python Shelve.

Frankly, I'm surprised that there aren't more active Python OODBMS applications!

I investigated the following candidates, all of which must be open-source, and the reason, from my opinion, for my rejection:

  • Zodb - overkill for this application
  • MongoDB - overkill for this application, not a OODBMS
  • Buzhug - not very active, no support for Python 3 yet.
  • Pypersyst - not active
  • CouchDB - document oriented database
  • Objectivity - no support for Python 3 yet, commercial product
  • Axiom - not a OODBMS; a mapper between SQL database and objects
  • Durus - Requires a download of DurusWorks, which appears to be a complete environment.  For my application, this is more of a challenge than I want to undertake.  It may be a great product though!
  • Cog - no support for Python 3 yet.  Does not appear to be very active.
  • Poodle - no support for Python 3 yet.
  • Dobbin 0.3 - Was a potential candidate.  Says it's compatible with Python 3.x. However, no activity more recent than 11 months ago.

Sunday, March 24, 2013

Project - A Home Security System

A Home Security System

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation


 (Table of Contents)


Overview

March 24, 2013
Last updated 5/18/13

  • Have decided to go with BeagleBone Black instead of Raspberry Pi.

Last updated 3/25/13

Keywords: BeagleBone Black, Python, Tkinter, Raspberry Pi, RPi, Arduino, Security System, Home Automation


I'm going to be replacing my current home security system with one I'm building.  This will ultimately morph into a Home Automation System.

Here are some of the highlights and design decisions:

  • Replace the current security system main board with by a Raspberry Pi.
  • It may make use of an Arduino to interface with the various contacts - not yet sure on this approach.
  • It will interface to the Internet
  • It will have a web server interface, where it can display the current status, as well as accept commands (such as "bypass a specific door alarm as I am leaving it open").
  • It will make use of IP Tunneling for web pushes to a browser via HTML5 (web sockets).
  • It will feature SMS text messages to registered cell phones
  • It will replace the existing commercial security main board
  • It will utilize the existing window and door alarm contacts
  • It will use Python for the development language
  • It will make use of Tornado for the web server
  • It will be Object Oriented in it's design
  • It will utilize an Object Persistence framework rather than a SQL database.  I am currently researching this framework, and no technology has yet been chosen.  Update 3/25/13 - I have chosen Python's Shelve.
  • It will display multiple video cameras, and offer pictures and video retention.
  • It will interface to fire, carbon-dioxide and water-flood detectors.
  • It will be open source
  • It will eventually use thermocouples for multi-room temperature monitoring and possible individual-room control.
  • It will control multiple HVAC units for multi-floor homes.
  • It will be capable of controlling a BBQ smoker's dampers at temperature, with alarms and alerts.
I will document the design, development and deployment of this system.

My Background: I have significant electrical, electronic, and software capabilities, and this project is within my scope of expertise and experience.

Tuesday, December 27, 2011

Home Security System - Part 4

Link to part 1
Link to previous page
Link to next page

Home Security System -Part 4

When using the magnets I bought at Radio Shack for testing, I found that:

  • The sun-room, which has 5 windows and 1 exterior door: all windows and the door were wired individually, with the 6 wires being pulled down to the security box.  None of the window nor the door have magnets in them; just the sensor in the frame.  So I'll have to drill a small hole to insert and glue some magnets (I bought some smaller ones from Staples at 6 for $3.00 that are smaller than the ones from Radio Shack).
  • The dining room, which has 2 windows, had a sensor on each window, but the test revealed that the wire from the left window never made it into the security box.  So I pulled the sensor up out of the window frame, cut the wire, and patched it into the wire for the sensor on the right window.  So now these two windows are daisy chained (series) wired together.  I tested this at the security box and they are good to go, but I'll have to add the missing magnets into the windows as noted above for the sun-room.
  • The living room has 2 windows, and they both tested OK, but are missing magnets, so they will get the same magnet install treatment.
  • The front door does not have a sensor on it.  I'm going to buy a simple door/window sensor.  I'll pull the wire from the nearby living room window and splice it into that wire, so the left window and the door will be on the same circuit (daisy chained) while the right window will be on its own circuit.  However, I'm thinking about putting a PIR detector in this area, so I may have all three (2 windows, 1 door) on one wire (daisy chained) and the other wire going to the PIR.
  • The den has two windows.  They are missing sensors.  The exterior door into the den does not have a sensor.  I'm thinking about pulling a wire from the closest sun-room window to the two den windows and the door, so they would all be on the same circuit together.  
At first I thought I would just ignore the door and window sensors and just go with PIR devices, but then I realized that, during the daytime when we are moving around downstairs, we would have to take the PIRs out of service to avoid alarming on our movements.  But I want to be able to alarm if someone is coming in, so that meant I needed to be able to take PIRs out of service while leaving the windows and exterior doors in service, so I need to get the windows and doors going.

I'm moving along pretty nicely.  Tomorrow I hope to drill and glue up the magnetic buttons over all of the sensors.

Also, during my 'Quick Hitter', I bought some fake exterior cameras.  I intend to install some real cameras, but I wanted more time to do some research before committing to a brand, so I bought these fake cameras.  I mounted 2 of them today.  They have a blinking red led on them, and are actual cases for actual cameras, so they look real enough.  It took about 10 mins to mount them.  I put them where they would be easily seen, as I'm wanting to deter someone from breaking in.  The 'video surveillance' signs should be coming soon...


Link to part 1
Link to previous page
Link to next page

Monday, December 26, 2011

Home Security System - Part 3

Link to part 1
Link to previous page
Link to next page

Home Security System - Part 3


Unable to find locally the little 'recessed security window magnetic reed switch' so I went to Radio Shack and bought some magnets, with the idea being that I will place the magnet on each of the sensors on the windows downstairs and then see if I get any continuity at the system box.

Update
I was able to buy 10 magnets at Radio Shack for about $6.00 for testing.

A brief note: Windows and doors typically use a simple sensor - it's typically a reed switch that can be closed (electrically like turning a light switch to 'on') by the presence of a magnet; removing the magnet causes the reed switch to 'open' (electrically like turning a light switch to 'off').

What I had observed on the windows was a little circular tab (the reed switch and wires) on the casement of the window sill, under the window pane itself.  There should have been a magnet installed on the wooden frame of the window pane, but the builder had not installed these.  Normally, opening the window by sliding the window pane up, with the magnet attached, would pull the magnet away from the reed switch and the circuit would be electrically open, which typically is the alarm function.

An installer has a choice when installing the sensors; they can 'daisy chain' the sensors together, so in the case (like ours) where we have 5 windows side-by-side (in the sun-room; the rest of house windows are also wired), the wire would go window-sensor to window-sensor, and after all 5 had been been joined, a single wire would be taken down the security box.  This would have meant that, if any one window, or any combination of windows including all windows, had been opened, then the circuit would be open.  This would mean there's no way to determine which window was opened, just that one or more of the windows on that daisy chain had been opened.  The benefit to this approach is (from your view) is that this constitutes a zone, and it will only take up one sensor slot on your security motherboard.   So, in this case where I have 5 windows, it would have taken up just one sensor slot on the security mother board.  And since they are all side-by-side windows, I don't care about which window might be in alarm, just interested in knowing that one of these windows - any one, is in alarm. So this would be a good area for a daisy chain, and a 'zone'.

Another way to wire this is to have each window have it's own individual wire go down to the security box.  This way, you know which individual window was opened.  But this means you would have to use 1 sensor slot per window sensor.  So you get more detailed information (which individual window is alarming), but at the cost of more slots used on your security motherboard.  As it turns out, my windows were individually wired this way; I was expecting daisy chain, but instead it was wired for each window to be sensed.  So all 5 wires were pulled to my security motherboard.

Since most security motherboards have a limited number of sensor-slots, it is usually the case that you won't want to sense the individual window.  For example, my DSC 1500/1550 motherboard only has 6 sensor slots total.  So, if I were to wire up each of my 5 windows to an individual slot on the security motherboard, then that would just leave me 1 more slot for the entire rest of the house!  Not what I want.

Note: For the following to be clear, we need to make a distinction between a wire.  In this case, when I'm referring to a wire, it's referring to the 2-conductor wire that goes from the window sensor to the security box.  Inside of this wire are 2 conductor wires, which I'll refer to as conductor 1 and conductor 2.  So a wire, in this case is what goes from the sensor to the security box, and this wire has 2 conductors.


So down at the security box, where all of my wires come in, I'm going to have to join each of the 5 wires from the window sensors into a daisy chain.  This means I will take, starting with the first window sensor wire (each of these wires are a 2-conductor wire), I will take one of the conductors and join it with one conductor from the second window sensor wire.  So I'm joining a conductor from wire 1 to a conduct from wire 2.  Then from this 2nd sensor wire, I will take the second conductor and join it with a conductor from wire 3.  So at this point, I've got 3 sensors daisy chained together: wire 1 conductor 1 is joined to wire 2 conductor 1, and wire 2 conductor 2 is joined to wire 3 conductor 1.  I will join wire 4 to wire 3 in this manner, and wire 5 to wire 4 in this manner.  When I am finished, I will have 1 conductor from wire 1, and 1 conductor from wire 5, left over; these are the beginning and the end of the daisy chain.  These 2 wires are the ones that will be connected to the sensor slot on the security motherboard, and will allow the security mother board to detect any window opening in the daisy chain on that slot.

This will occupy 1 slot on my security motherboard.

Since my system only has 6 slots total available, I've used up 1 slot, or 1/6, or 16.6% of my available slots just on the windows in the sun room.  So, I may decide to add some other windows that are close by to this zone.  For instance, the sun room has a door to the outside porch.  Since it's in the same area as the windows, I may decide that I don't care about being able to differentiate between this door and those windows being open, in which case I'll add the door to the daisy chain at the security box.  However, if I want the door separate, than I won't want to add this door to the daisy chain, and would add it to it's own individual slot.

So the determination I'm faced with: a) I have 6 sensor slots total, and I have a lot of windows, and a lot of doors in this house, which means some windows are going to have to be daisy chained, and maybe some doors.  b) I want to, at least, know that a certain area of the house has gone into alarm, rather than the whole house just being a jumbled up mess - I would like to know the area that is in alarm.  So I will probably daisy chain the sensors in a common area together.  This means I will probably join the sun room windows sensors with the sun room exterior door, along with two other close by windows in the den; this would mean I have 7 windows and 1 door joined together.  This is the approach I'm going to have to take throughout the house in able to be able to detect with just 6 slots.


Link to part 1
Link to previous page
Link to next page

Home Security System - Part 2

Link to part 1
Link to next page

Home Security System - Part 2
So, now I find us, 16 years later (today is Dec 26, 2011, and I'm retired), without a Burglar Alarm or Security System, and home invasions are taking place.  There have been 2 in the last 6 months in our area, one of which was about a mile from our home, and another about 2 miles from our home.  They appear to be deliberately waiting until the family is home before breaking in - 5 men breaking in around dinner time or early evening, tieing up the family, then ransacking the home for 3 hours.

So we're on edge about this, and I want to get our Security System online.

I gave this some thought, coming up with a plan:

  • My immediate goal is to get a Quick Hitter in place.  This may not solve all my desires, but it should give me some assistance with our security immediately.  It should make things better than they are without making anything any worse than it already is.
  • My next goal is to get our existing system online.  This could take some time to bring back to functional.  So it's divided into the following steps: 1) Examine existing system and determine whether to proceed with it or abandon it; 2) if proceed, then make it functional.
  • My final goal is to enhance our existing system (if possible) or add a new system.

Quick Hitter
  • Add external fake security cameras.  Since these aren't functional, they don't take long to install.  They may not stop all criminals, but they should give them pause for thought, and hopefully will deter some.  I can have all 6 installed in a day.  Ordered, waiting on delivery.
  • Add external 'video security surveillance' signs and place in prominent positions on the edge of the property.  Again, they won't stop all criminals, but should help and can't hurt. I can have all 6 installed in the same day I put the cameras up. Ordered, waiting on delivery.



Existing System
So I've spent the last couple of days determining the state of our system - it was left in the house but never finished.  Based upon that determination, I will:

  • Get the existing system functional and online and add additional capability.
  • Move on to a new system altogether.
The existing system is a DSC 1500/1550.  The thought of using the existing system has some appeal to me.  It appears that all of the doors and windows already have sensors installed, and the sensor wires pulled back to the system box.  In addition, there are two (2) keypads, located where we can work with the system, to acknowledge alerts, stop alarms, arm the system, and create an instant alarm.  So, since it's already there, I would like to utilize it.  In addition, there's an exterior siren already installed.  But this means a 'do it yourself' or DIY project.  It was missing the power supply, which I've ordered and received, along with a battery, which I haven't bought yet.

However, the existing system is in the current state:
  • There's just a bunch of wires in the system box.  They aren't labeled, and I don't know where they go.  In addition, there are different types of wires, which I would assume are doing different types of functions.  I counted 17 wires in the box.  These can be divided into 4 categories: 2 2-conductor round 18ga wires; 3 4-conductor 22 ga round wires (2 of which go to the keypads - don't know where the other goes, unless it was to the phone line which we don't have anymore - we're all cellular); 4 2-conductor flat wires (2 of which are brown, 2 of which are white - I suspect 1 or 2 of these are siren wires); and 11 2-conductor round 22 ga wires (which I suspect are sensor wires).  So I've got a bit of a problem here with all of the different wires, none of which are labeled.
  • I don't know if the system board is functional.
  • I don't know if the keypads are functional.
  • I don't know if the sensors are functional.
Existing System First Step

  1. Pulled all the wires out and categorized them (see above).  Done  Note: my system has no power going to it yet, so all the work I'm doing is to a powerless system at this point.  The last thing I want to do is power it up, and certainly not while I'm determining the state of everything!
  2. Pull the keypads out so I can get to the wiring.  Done
  3. Examine wiring to identify in system box: Done it's round 4 conductor 18 ga.  I have 3 of these in the box, but only 2 keypads, so 1 of those wires doesn't go to a keypad!  
  4. Identify which keypad goes to which wire in system box.  If there were only 2 wires and 2 keypads, then I wouldn't need to do this, but there are 3 wires, so I don't know which isn't a keypad.  Done  Did this by performing a continuity check and labeled in system box.
  5. Determine which sensor is associated with which wire, so I can identify the zones.  This means stripping off the insulation on each 2-conductor sensor wire and performing a continuity check.  It should read 'closed' or 'continuity' or very low resistance when the sensor is on a window or door that is closed.  Remember - this system wasn't supposed to be installed in our house, so who knows what work was done and what work was not done.  Bad news: all sensors are in open state!  That means: a) either the sensors are not connected to the wires, b)there aren't any magnets next to the sensors to make the sensors closed, c)the sensors have all failed in the open position.  In my opinion, C isn't viable, A isn't likely, so that leaves me with B as the most likely.  Sure enough, a quick examination of a window casing shows the sensor in place, but no magnet on the window itself.
Well, this is going to be a bit of a thorn.  Here's a rough look at a 'daisy chain' of 4 sensors that would constitute a 4 sensor zone, showing them all closed (non alarming).
___--____--____--____--____

Here's a rough look at that same 'daisy chain' of 4 sensors, with the 2nd sensor open (alarming), and the other 3 closed (non alarming).
___--____/ ____--____--____

Th 2nd sensor open (shown as __/  __) would stop the flow of electricity, the same as a light switch stopping the flow of electricity to a light bulb.  This one open sensor stops all of the flow.  Any of the sensors going open causes the flow to stop and the system to go to alarm.

Since usually the sensors in a zone are daisy chained together, this means for me to test my sensors, and I suspect all of my sensors are missing magnets, I have to somehow ensure all the sensors in a daisy chain have magnets to place into a closed state before I can test.  Since this is an abandoned project by the builder, I don't know what sensors are in a daisy chain together, and will be guessing at it at best.  If I'm wrong and I miss just one sensor in the daisy chain, then I will just see an open circuit at the system box.  In order to see a closed state, all sensors in the daisy chain have to have a magnet installed.  So that may be a bit of a problem, since I have no way of knowing which sensors in the house are on a single daisy chain.....but I'm going to try!

The first thing: get some magnets!

And that's where I'm at right now!