Simplest solution in arming/disarming your Raspberry Pi home alarm - bluetooth

I have built a home surveillance and alarm system with raspberry pi's.
What I need now is an easy and safe remote control to arm the system and disarm it.
The most workable solution is to have a wireless router in the middle.
Before stepping out in the door, take out my phone, connect to my home network and via a custom built web page arm my system. (Web page would run the arming scripts)
But for this I need to have a wireless router (currently I have a non wireless Ubiquiti Router Station Pro, no radio card on it) and need to enable wireless on my phone (it is not enable-d, battery reasons) before leave, connect and so on. It is not one click unfortunately...
Other solution is to have just a wireless dongle in the Raspberry PI and do an Ad Hoc WiFi connection with my phone. My phone is Sony Ericson Xperia. Over here my technical knowledge hits the limit. It is possible to broadcast an Ad Hoc network over Raspberry PI I do not know if I can reach it from my Sony Ericson Xperia phone.
Third option is Bluetooth. I know very little about Bluetooth. I do not know how safe it is, and how to program it, to have on and off switch on my phone. However this might be the most promising.
Fourth option is to use the Pi Face. Link one or two switches to some type of receiver device. Have a sender device on my key chain and control it from there.
However I do not know from where I can buy such a safe remote control and if it is compatible with Pi Face.
Fifth option. To get home alarm system components and link those with the Pi Face. But I do not know what component might fit.
The best user scenario is the following.
User takes out out a device (phone or remote control) and presses arm/disarm.
User has appropriate time (30 sec) to get out or shut down.
If the remote device had run out from battery still have something to shut it down.
So my question does any body knows a fast, easy, cheap solution how to do this?

Though Bluetooth's security is questionable, it seems like the best option for your goal. Next to an adhoc
Bluetooth is not complicated.
On your mobile phone, if you don't want to make your own app you can look for some sort of Bluetooth Terminal or Bluetooth Chat. On your raspberry pi you'll have to setup a bluetooth rfcomm server with bluez.
How to configure Linux to act as a Bluetooth RFCOMM SPP server?
RFCOMM without pairing using PyBluez on Debian?
Modify these servers which do nothing by default, to listen for commends "arm" and "disarm". Make sure the ID of the device is the ID of your phone.
Ad-Hoc is even less complicated (assuming you know how to make a webserver and are going to make it secure enough, and have a dongle which supports adhoc):
Here is a post about ad-hoc networking with a raspberry pi.
In terms of distance, you'll have to see the specifications on your dongle(s) but I would say they're relatively the same.. your bluetooth dongle will have a class see Bluetooth Basics: Range. This will require more research but if you have either one of the dongles I would use that method.
I hope this helps, good luck setting up your alarm.

In the mean time I realized that a fast arming could be done via the Pi Face and pressing a button.
Disarming could go by other ways.
However the fastest solution would be a fingerprint button linked safely to Pi Face.

Updates. Finally went with the Ad-Hoc method:
This is the tutorial for it:
http://elinux.org/RPI-Wireless-Hotspot

Related

Establish a connection between smartphone and PC via Bluetooth automatically

I'm trying to establish a connection between my PC running Ubuntu and my iPhone via Bluetooth automatically when it becomes available, after being manually paired beforehand. I've seen this to be possible with certain peripherals, mainly audio. For example, my phone will automatically connect to a Bluetooth speaker when it is turned on and Bluetooth is active on my phone; another example is my phone automatically connects to my car's radio system via Bluetooth when I turn the car on.
I'm not able to connect my phone to my PC without first initiating the connection from the smartphone's Bluetooth menu. I'm thinking that I could possibly write an application for the PC to attempt to connect to the device every few minutes or something, but it seems that the phone needs to be the device to initiate the connection.
The only information that I need for what I'm trying to do ultimately is that the devices can pair successfully. Essentially I'm trying to build a sort of proximity trigger between my phone and my PC without using Wi-Fi and GPS - I can't use these for some specific reasons.
Is there any way to make this happen?
Yes this should be doable as long as you use the Background Processing feature for iOS apps. In the example I'll give below, we'll have the PC be the peripheral and the phone be the central, but you can really have it working either way. You will need to do the following:-
First initial connection needs to be performed in the foreground (this is due to iOS's background limitations).
On the iOS side, you need an application that acts as a central that scans and connects to the remove device (check this example as a starting point).
Upon connection, you need to bond with the PC. Bonding is important as it will prevent you from having to do the pairing again in the future. However, pairing/bonding is managed by the iPhone's OS so you cannot write it in your application, so the workaround is to have an encrypted characteristic on the PC side that will force the iPhone to bond (this is covered later).
On the PC side, you need to have a BlueZ script that acts as a peripheral that is always advertising. You can do this using bluetoothctl (check the examples here and here).
Before you start advertising, you need to have a GATT server on the PC side (to do this, check this example).
When registering characteristics, ensure that one of them has the encrypt-read property (you can find a full list of the properties here).
Now when you attempt to read this characteristic from the iOS side, the two devices should bond (make sure that your PC is bondable which you can do this via these commands).
Once the devices are paired, your iOS app needs to be working in the background constantly scanning and attempting to connect to the same peripheral (have a look at this and this example).
You can find more useful information at the links below:-
Getting started with Bluetooth Low Energy
The Ultimate Guide to CoreBluetooth Development
How to manage Bluetooth devices on Linux using bluetoothctl

How to get into and add features into a cheap Bluetooth smartwatch that I bought?

I bought a cheap bluetooth smartwatch that costed like $20.
When I plug it into my computer, I cannot see the device listed. I cannot think of any other way to access the source code.
The reason I am trying to get at the source code is to add a few of my own watch faces and try to create my own features.
Any help?
I guess under "plug in" you meant you've plugged it in the USB charging port. Most probably communications are disabled there by a default and the port is in charging only mode.
Try to pair it with your laptop via Bluetooth first, then try to access your watches as a bluetooth device (there is an option for the file transfer, for example, for windows see here: https://support.microsoft.com/en-us/help/4026874/windows-10-share-files-over-bluetooth).

Reading Bluetooth data and command (Raspberry pi 3)

I am currently working on a project that make me control media center and a few domotic parts in my living room.
I have connected on my raspberry pi 3 a NAS, my Spotify account (with hifiberry, controls to close my amp, my PC and a few lights...
At first to control it all I programmed a web server that I can access on my phone. That made the job but it is not completely user friendly since I have to have my phone go to the interface and do whatever I have to... And I'm not a web designer 😁 it's far from perfect!
I've made some research and I have decided to build a bluetooth remote control (raspberry pi 3 do have Bluetooth low energy).
Since nothing exist as I want, it is going to be a custom one made with Arduino mini and hm10 module.
But I'm stuck on the raspberry part!
How can I read the Bluetooth data send by my remote and launch scripts according to the command sent?
Via a serial listener of some kind?
Yes, in fact, you should use a serial port to connect your pi with Bluetooth module.
You then use software input information for your purposes, but you must first implement the hardware and hardware interface first.
You can build application software with the Python programming language.

Can the Raspberry Pi's Bluetooth be put into "promiscuous" mode?

Can the Bluetooth adapter included in the Raspberry Pi models be put into some sort of "promiscuous" mode -- so that it reports to the host all Bluetooth-activity that it "hears", even if it is not itself part of the conversation?
I'm not trying to break encryption, just want to be aware of any BT-radio activity going on in the device's proximity...
Since there is documentation how to capture Bluetooth traffic with wireshark (or tshark) it might be possible.
Check out this article

Bluetooth LE from Cordova app to Linux device

I need some guidance. In a nutshell, I need to be able to configure and control a device with the smart phone app over BLE.
For example, change IP address of my Raspberry Pi. To make that happen, I need 2 things.
Simple Android/iOS app that takes IP address parameters as an input, and then communicates over Bluetooth to the RPi. Note that the device needs to be discovered and connected from within the app (without going to "Settings" and pairing).
Build some server process on the Raspberry Pi that listens to USB Bluetooth dongle, receives the command with parameters and acts accordingly.
So I need help building the BLE portion of this project.
I have several years of smartphone app development experience, and 10+ years of Linux system programming. In other words, building a simple Cordova app, as well as Linux process that changes IP address is really not an issue.
However, I am totally new to Bluetooth. Can you point me to the right direction? I am sure this problem has already been solved few thousand times. Is there a tutorial? Or maybe a skeleton code I use as a starting point? Also, any recommendation for BLE USB dongle?
Thanks a lot!
I think it will be harder to find a better guide to implement low energy technology on the RaspberryPi than this one :
https://learn.adafruit.com/downloads/pdf/pibeacon-ibeacon-with-a-raspberry-pi.pdf
After this , you can download a random app on the Playstore/Appstore and check that your RaspberryPi is actually acting as a BLE device.
Finally you can start creating your own app using several available BLE plugins like :
https://github.com/randdusing/BluetoothLE
https://github.com/don/cordova-plugin-ble-central

Resources