Git Product home page Git Product logo

home-monitor's Introduction

home-monitor

Internet Enabled Xbee Sensor Communicator application for raspberrypi, sensor sketches, and cloud service app

home monitor is a 3 layered platform that lets you control sensors and gadgets from anywhere.

The layers consist of

Sensors

These are arduino + xbee zigbee sensors that emit and receive packets. They can control anything you want. I'm currently using mine to control a thermostat in my home. I'm also working on an LCD screen that can receive any type of text.

Communicator

The communicator application runs on any linux computer that has an Xbee explorer plugged into it. For my home I'm using a raspberry pi since its cheap and can be on at all times. The communicator acts as the trunk to the internet for all of the sensors that are connected to it. All sensor communication goes through the communicator and up to the cloud coordinator, or to the local rules engine. The communicator will support running local rules, an example could be that you have a temperature sensor on your 3rd floor, but the thermostat is actually on the first floor of your house. The communicator rule would be, when the 3rd floor sensor reaches 70, turn off the first floor sensors heating relay. Note this type of rule can happen on the Cloud coordinator layer as well.

Cloud Coordinator

The cloud coordinator collects sensing data from communicators, and creates the interfaces for interacting with sensors. All of the communicators attach to it, and listen for actions. Clients connect to the cloud coordinator to read and interact with thier sensors. The cloud coordinator exposes 4 different interfaces, Browser website, mobile website, json api, and a socket.io interface that communicators, and clients can receive sensor event, and actions from in real time.

The browser and mobile website is protected using session based login.

The json api is OAuth 1.0a and works with passportjs. Users can allow request access to the api from other applications.

The socket.io interface is protected either with session based login for clients, or with a special encrypted key that is requested over the JSON API, then sent in a message over the socket.io connection after initial set up. This is the primarily way that communicators connect and authenticate using socket.io

I wrote a blog post here about it, with a video and some pictures.

www.bryanpaluch.com

TODO

Documentation + Extra feature descriptions.

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.