Giter Club home page Giter Club logo

securityblanket's Introduction

securityblanket -- DIY home security project

This project aims to receive, store, process, analyze & alert based on updates from home security sensors, remind about battery changes, etc.

Current supported hardware is Honeywell 5800 series (compatible) RF sensors. This includes door/window sensors, motion detection, fire/smoke/heat, and more. As far as I'm aware, this is the only open source project that correctly decodes the events for multiple sensor types.

Honeywell 5800 RF transmissions are received with a SDR usb stick and by running rtl_433 as a subprocess, at least for now. Other sensor standards (Z-Wave, Zigbee etc) would be nice to support, and we'd like to have a modular interface where you can track any kind of a sensor -- but that needs people with other kinds of sensors to pitch in.

Intended software integrations, at the minimum: Home Assistant, Prometheus.

We may dabble with video cameras & their motion detection, too.

Probably something to drive a siren (talk over wifi to arduino/rpizw that controls a relay?).

State is stored in SQLite, and hardware requirements are intended to be modest enough to run on a Raspberry Pi.

Current status

Receives Honeywell 5800 series transmissions, understands the content, records them in SQLite.

To get involved at this stage, you are expected to understand programming and SQLite. We're not quite ready for end users.

Generated code is not currently committed to the git repo. That'll happen after things stabilize.

Building

You'll need the Go compiler suite installed. Minimum version is listed in the go.mod file.

git clone https://github.com/tv42/securityblanket
cd securityblanket
go generate ./...
go build ./cmd/...

Demo of what exists today

Last few sensor trips, and some of the information known about the sensors:

$ sqlite3 securityblanket.sqlite
sqlite> select * from honeywell5800_trips order by id desc limit 2;
id          sensor      loop        trippedBy   clearedBy
----------  ----------  ----------  ----------  ----------
256         987654      1           1169        1170
255         987654      1           1162        1163

sqlite> select * from honeywell5800_sensors where id=987654;
id          created                  model        description
----------  -----------------------  -----------  ------------------
987654      2020-02-11T05:30:25.334  5800PIR-RES  living room motion

sqlite> select * from honeywell5800_model_loops where model='5800PIR-RES';
model        loop        kind             factoryLabel  factoryNormallyOpen  typicallyUnused
-----------  ----------  ---------------  ------------  -------------------  ---------------
5800PIR-RES  1           motion detector                0                    0
5800PIR-RES  4           tamper                         0                    0

sqlite> select * from honeywell5800_updates where id in (1169, 1170);
id          time                                 channel     sensor      event
----------  -----------------------------------  ----------  ----------  ----------
1169        2020-02-12T12:32:23.419910853-07:00  8           987654      128
1170        2020-02-12T12:32:26.565627184-07:00  8           987654      0

sqlite>

The Honeywell 5800 series protocol does not carry information about what kind of a sensor is transmitting. The system adds rows to the honeywell5800_sensors table, but you need to set the model column in order for the system to understand what the events mean. See table honeywell5800_models for currently recognized models.

Roadmap

  • Web UI, general editability of your sensors.
  • Home Assistant integration (still in learning phase).
  • Alerting. Most likely native web push alerts, and a good story about modularity to integrate everything else.
  • Acknowledging alerts.
  • Armed states, as in don't alert when you're at home.
  • Notify on low battery (information is already in database).
  • Notify on missed heartbeat (last heartbeat is already in database).
  • Documentation.
  • Easier learning curve for people without a SQL background. Goal: If you're comfortable with DIY and RPi, it'll be a breeze.
  • Maybe reimplement Manchester decoding and use librtl directly.
  • Make it (even) more robust, dead letter queues instead of bailing out on errors etc.

securityblanket's People

Contributors

tv42 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.