IoT Notifications from your Doorbell, Burglar Alarm, Smoke Alarms etc using an Arduino Uno and an Ethernet Shield.
About Arduino Push Alert Box
Uses an Arduino Uno and Ethernet Shield based on the Wiznet W5100 chip to send push alerts on smoke alarm, burglar alarm and doorbell activations via PushingBox. All alerts ignore situations/wiring faults that give rapid multiple triggers. This prevents massive amounts of false alert messages being sent to you mobile phone. The alerts can also be tied into any web cams installed in your house/office. This is done via the PushingBox interface. The PushingBox services list includes all types of phone (Android,Windows and Iphone), computer (Mac, Windows PC and Chromebook) and also includes mail and twitter. If you use Pushbullet, alerts are also repeated on your PC/Chromebook and very soon Mac OS.
Sends alerts when the sounder is activated and also when the sounder is turned off through timeout or user intervention. Connects via the aux sounder output on my main alarm panel. A still picture is also send form any cams you have setup.
Uses a modified smoke alarm in a wireless networked smoke alarm system as an interface. Senses when the smoke alarms sound for a real alert and ignores low battery/fault alerts. It does this by measuring the delay between sounder chirps.
Connects via an optocoupler on the modified smoke alarm sounder output.
When your doorbell is pressed your conventional doorbell rings as normal but an alert is also sent to all your devices along with a picture of the caller. It also has an interface to page all phones on a wireless phone system when the doorbell rings. Most of the circuitry is used for the telephone pager interface that was part of an existing project. This circuitry can easily be omitted and replaced see minimal schematic diagram. The doorbell code will need to be adjusted to take these into account. This will make for a much simpler project.
Reset/Power On Alert
On power being restored after a power cut an Alert is sent out to inform you that power was interrupted and has now been restored.
There is also a visual alert if the ethernet connection can not be made on power up.
Uses around 2Watts of power.
Step 1: How It Works
See image 1.
Alerts are sensed by the Arduino mounted in the Push Alert Box and are sent via an Ethernet card to PushingBox. PushingBox then pushes the alerts out to your Services and are then pushed on to all your devices.
Image 2 shows a list of services that can be activated by your alerts.
Each sensed item activates a "Scenario".
Each "Scenario" contains "Services" that are custom setup for your alerts. You can have just 1 or many services in each scenario. eg a doorbell scenario may send an email, send an instant push alert and send a picture from your door camera.
I have included examples of the following alerts in my code: Doorbell, Burglar Alarm Sounder Activating, Burglar Alarm Sounder Deactivating, Smoke Alarm and Ethernet power restore.
Alerts could easily be setup for freezer alarms, greenhouse alarms, tropical fish tank temperature alarms and any number of other alarms.
Each alert has it's own hardware interface to trigger the Arduino and it's own bit of code to make sense of the hardware.
The hardware/software is very modular so it is very easy to pick and choose which bits of this project you want to include.
Step 2: Alerts. Ethernet Connection Fails on Power Up
On power being restored or on initial power up the Wiznet W5100 Ethernet card will try to connect to the internet. On R3 boards there is a reset chip that resets the card on power up and should ensure the card connects without fail.
On cards below R3 the card tends not to reconnect on power up. There is a mod you can carry out that gives the card a reset when it is powered up and gives good results see images for mod details.
In case your card fails to reconnect after loss of power (you will not get any alerts) I have set the Arduino to light a flashing LED as a warning. The LED will flash as the card tries to connect then should go out.
If the red flashing LED stays on then try powering down then powering up the box.
Step 3: Alerts. Power Up Alert
Power Up Alert
On power being restored to the Push Alert Box an alert is sent out once the Ethernet card has successfully reconnect to the internet. This will warn you that there has been a power failure at some time and warns you to check all the systems are working again when you get back home. The IoT interface box has test switches to allow you to test all the systems are alerting. The smoke alarms can be tested by pressing any smoke alarm "test button". You should be doing smoke alarm tests monthly anyway!
Real-time Video of my IoT interface box in it's design stage on first power up.
A section of my PC screen is on the right showing received alerts while my mobile phone is on the left of the screen. I use the Newtifry spoken alerts on my mobile when system testing so I can hear what alerts are being sent out.
Power up alert demo from my desktop showing desktop alerts, Arduino com port output and my mobile alerts superimposed over the top.
Step 4: Alerts. Smoke Alarms
I use Wireless Networked Smoke Alarms so any smoke alarm sounding will trigger all other smoke alarms in the same network.
To connect to my IoT interface box I purchased an extra box to use as a "Master" alarm. Smoke Alarms are a safety device and as the "Master" alarm has to be hacked I did not want to hack an alarm in a live location. This means if my hack fails and causes a malfunction in the "Master" alarm all other alarms will keep working.
Image 1 shows the overall configuration.
I have used a optical isolator to get the alarm signal off the "Master" smoke alarm. I tried to connect off the alarm LED but I could not get it to trigger the optical isolator.
Image 2 shows the interface between the hacked "Master" smoke alarm and the Arduino. With the veroboard layout in image 3. The vero board also has the doorbell push relay and spare pull up/pull down resistors for further additions.
There are other networked smoke alarms on the market that include a master smoke alarm in the range and have relay outputs. This would make for a much simpler interface but the drawback is they are wired and also cost 2 to 3 times the price.
As I have connected off the smoke alarm sounder output the modified "master" alarm will not sound but will still trigger and be triggered by the other smoke alarms. My "master" alarm is an additional alarm so this will not compromise the safety of my house. The Arduino is used to detect the alarm "chirps" and decide if the an alert needs to be sent. In a real smoke alarm situation the smoke alarms chirp 3 times at half second intervals with a 1.5 second gap. When the Arduino sees this pattern it send out an alert. If the smoke alarm sensor wiring was to fail a continuous output would be sent. The Arduino is sent to ignore any inputs of less than 300m seconds. Likewise when a battery on any smoke alarm fails or there is a system error the alarms will sound 1 chirp every 48 seconds to warn you. The Arduino will always wait after receiving the first "chirp" and time how quick another "chirp" is received. If time between "chirps" is too long then the "chirp" is ignored and an alert is not sent.
You could if you wish send out an alert to let yourself know that a battery need changing or the system has an error. The Arduino code will of course need to be modified to suit different types of smoke alarms.
The video shows test smoke alarm alerts received on my desktop PC along with the Arduino com port output and mobile phone alerts superimposed on top. You would not normally have the com port connected to monitor the output but I have included it to give an idea of what the Arduino is doing during the Alert.
Step 5: Alerts. Burglar Alarm
Burglar Alarm alerts are sent when the alarm sounder activates. A picture from your webcam can also be included in the alarm alerts if required. You can monitor your webcams for intruders as required.
If the sounder is turned off or times out a further alert is sent letting you know the alarm is now off. If you have audio on your webcams you can confirm this over your mobile phone interface.
If a wiring fault develops on the sensor wire and it becomes disconnected multiple alerts would be sent. The Arduino is set to detect and ignore rapid alerts. I have connected into the auxiliary alarm output but you want to hack into your burglar alarm panel you should be able get outputs off the LED alert indicators so you can make custom alerts depending on which zones have been activated eg. panic, internal or external doors.
The interface is very simple, the auxiliary output operates a relay that triggers the Arduino see veroboard module image 2.
The video shows Push alerts on my desktop and also on my mobile superimposed over the top. Arduino com port out is also shown.
Step 6: Alerts. Doorbell
I get many deliveries to my house and I don't want to waste time waiting around for them so I have connected the doorbell to give as many alerts as possible.
There are 3 types of alert sent out when the doorbell push is pressed. Depending on what I am doing I use some or all of them. If I am in my workshop or garden I generally use all 3. See image 1. Note my standard doorbell now uses 3 wireless doorbells instead of the single bell shown.
The video shows the 3 types of alert triggered by the activating the bell push.
Alert 1 "Standard" doorbell.
I have a modified doorbell push on my front door when the doorbell push is activated a relay in the control box is activated and activates the doorbell push on a wireless doorbell transmitter. I have 3 doorbell receivers in various parts of my house and these will ring/light up each time the doorbell push is pressed. Doorbell receivers can be added or removed as required and this part of the system is always on.
Alert 2 Telephone Paging
Many wireless telephones come equipped with wireless paging so you can page other handsets or locate one that has been mislaid. On the base there is usually a manual paging switch that can be connected to. When the doorbell push is pressed the doorbell relay activates this switch causing all the telephone handsets on your phone system to be paged. The caller also gets an indication that the doorbell is ringing as the bell push flashes while the phones are paging. The phone paging times out after a preset length of time (depends on phone model). If I get to my front door and my phones are still being paged I just press a 2nd bell push mounted near my front door to silence them.
There is a switch on the control panel to turn telephone paging on/off.
The telephone paging alert is based on an existing doorbell and telephone interface with a few mods. The hard wired interface can be left out if not required and the doorbell code can be modified to take it's place. I have used it as it exists already from a previous project and there was space on the Vero board for some of the additional components for the other alerts. See the schematic step with minimal components for details.
Alert 3 Arduino Push Alerts
This can be enable/disabled via the pushing box interface but is normally left on.
When the doorbell is pressed a push alert is immediately sent to my mobile ( I use Pushbullett ) followed by a backup email alert. This is also sent to my wife's phone. The alert also includes a still picture from the webcam mounted at my front door. If I am on any of my PC's or Chromebook a little pop up appears with the webcam image telling me someone is at the door.
The bell push is modified to incorporate a flashing LED to indicate the bells are ringing. This can be omitted if not required. See images of bell push above.
The veroboard layout shows how the bell push relay is connected on the veroboard. This board connects to the main telephone paging timer board as required.
When the doorbell push is operated a relay operates in the control box. This relay operates the standard doorbell in my case a modified wireless doorbell and also starts a 555 timer on the doorbell interface.
The 555 timer operates another relay to trigger the paging circuit on my wireless phones. If the "phone/paging" switch is on all the wireless phones in the house will be paged until they time out (1 minute on my phones). The 555 timer prevents repeated doorbell pushes resetting the telephone pager and turning the pager off and also stops extra alerts being sent out for the same visitor. Any room in the house, garage, workshop or office with a wireless phone in will get notification that the doorbell has been pressed. The doorbell push is also illuminated by a flashing LED to show the caller that the doorbell is continuously ringing. A doorbell alert is also sent out to all your mobile & fixed devices.
Once the telephone pagers have timed out the doorbell push will stop flashing.
A further push on the doorbell will then send out another alert and start the telephone pagers again. Once you get to the front door a doorbell reset switch is pushed and this will instantly stop the telephone pagers from ringing and reset the doorbell. You can set an alert to inform you that the door has been answered. This is handy if you are away and you are expecting an important package you will get an alert for the doorbell being operated then an alert to show someone else has answered the door.
Step 7: Doorbell/ Telephone Paging Circuit Detail and Schematics
Doorbell/ Telephone paging Circuit Detail schematic 1
In it's normal state the "bell push" switch and "bell silence" switches are open and the relay is not operated. IC1a and IC1b are both wired as monostables.
On pressing the "bell push" switch the trigger of IC1a is taken low by relay RL3 ctk 3&4 making. RL3 ctk 6&7 making operate the traditional doorbell. The output of IC1a therefore goes high switching on transistor Q1. This causes LED D6 (flashing LED) to light and sends a pulse through capacitor C2. This pulse takes the trigger of IC1b low and therefore the output of IC1b goes high operating relay RL1. Relay RL1 operating shorts the telephone base "find handset" or "paging" terminals causing all the phones on that base to ring.
IC1a monostable time period is set by C1,VR1 and R6. VR1 is adjusted so that the monostable time period is a few seconds longer than the phones ring for eg 30secs for a Diverse 6410 or 60sec for a Diverse 7410. This ensures that multiple pressing of the "bell push" switch do not retrigger IC1a and b causing the bells to stop ringing. IC1b monostable time period is set by C3,VR2 and R7. VR2 is adjusted to give a short period (usually less than a second) just enough to trigger the telephone base.
The "bell silence" switch when pressed resets IC1a by taking it's reset pin low. IC1a output then goes low stopping the LED from lighting. IC1b trigger is also taken low so the output then goes high for the set period of the monostable operating RL1 and stopping the phones from ringing. Note if the "bell silence" switch is held down the monostable time period of IC1b is overridden and RL1 remains operated while the "bell silence" switch is held down. This can be used to set up the phones to the base station as they often require the "find handset" or "paging" button held down for a number of seconds to activate a handset search.
Note the optional "ring repeater" LED can be used to give a visual indication that the doorbell is ringing in a noisy room.
Schematic 2 with minimal components
You can do away with most of the components above and just use the Arduino to control the doorbell and telephone paging. This will of course require some extra Arduino coding. The circuit can be simplified further if telephone paging from the doorbell is not required, just omit the 2 sections indicated from schematic 2. The ring indicator can also be omitted as this just indicates the paging timeout period.
Step 8: Arduino Code
Example code can be found on the API section on the Pushingbox site here for the Arduino Wiznet shield as well as other makes. You will also find code for other systems as well.
The code for this project is available here from my main website link to code section . It is based on the API from pushingbox.
It will need modding depending on your setup and you will need to add your own device IDs from pushingbox.