Giter VIP home page Giter VIP logo

zygote's Introduction

Project Zygote

The visual Internet of Things framework powered by Node.js, Express, D3 and jsPlumb.

##What Project Zygote is an end to end IoT framework which enables developers, makers and hobbyists to rapidly prototype and deploy their IoT application. Makers and hackers should be able to seamlessly interconnect hardware resources (sensors, actuators) between themselves or to software components (graphs, gauges, etc.). The framework is platform neutral, meaning you can run it on the Beaglebone Black, the Raspberry Pi or any damn thing that runs Node.js (maybe even tessel!). Everything is accessible and configurable through the browser, no complex installations.

##Why Interconnecting things is hard. It takes knowledge of underlying hardware, working of sensors, installing tools, knowing programming, connecting the 'thing' to the internet etc. It makes it even worse when people want to visualize the data or give visual input. Project Zygote simplifies all these tasks by providing a DRY (Do not repeat yourself) framework.

#Features The framework will support fully graphics based logic generation across various sensor nodes. As of now the sensor nodes are Wifi based, but soon will support popular protocols such as BLE, Zigbee, Z-wave etc.

Among nodes

Hardware

  • Ultrasonic sensor
  • RGB LED
  • Temperature sensor
  • Light sensor
  • GPIO
  • PWM/Servo

Software Widgets

  • Gauge
  • Sparkline
  • RGB Color picker
  • Toggle button

##How

There are four components to the project

  • Zygote Server

    This acts as the router for exchange of data and events between hardware endpoints (Zygote Embed instances) and software endpoints (Dashboard). This is basically the interconnect fabric.

  • Zygote Embed

    This is the Node.js software that runs on the end hardware. It grabs the spec file from the hardware and send it to the server. Then it establishes a Websocket connection to the server. This enables two way transfer of data, events and commands.

  • Zygote Flowboard

    This is the authoring interface used to create resources and create logical flows between them. Flows can be event triggered or interval based.

  • Zygote Dashboard

    This is the data visualization and control tool which enables developers to collect data graphically and to control actuators.

##Demo UI ###Flow to vizualize temperature sensor values temp1

###Visulization of data (result of flow) temp

##How to use

  • Start the server in the Zygote-Server folder by typing

    $node server.js

int the command line. This will start the server on the system's IP address on port 3000

  • Get the Beagleboard online, there go to zygote-embed and type

    $node main.js <name-of-node>:bbb <ip-addr>:<port>

    The name-of-node choice is yours, 'bbb' indicates the board type, 'ip-addr' and 'port' is the address and port of the server respectively.

  • Open the Flowboard and Dashboard in your browser (it is being served by zygote-server). You should be able to create widgets on the dashboard and see them as resources in the flowboard. You can now start developing your IoT app.

#What it does The framework is more than merely visual programming, in fact visual authoring is not even one of the core features!!

Lets start off with what is expected of a IoT framework that is meant to support any generic IoT application -

  • If I have two IoT based devices, they should be able to talk to each other seamlessly - irrespective of protocol each device uses.
  • Each sensor attached to the device running the framework, should be available across the internet via the cloud, preferably via a REST API. eg. GET api/board/temp/1 will return the temperature data as a JSON object.
  • The developer should be able to execute a flow of instructions on an occurrence of a certain event, i.e. set event triggers.
  • The framework should enable the developer to create flows between an input and output device. eg. The output of a humidity sensor should be able to be made the input to a visualization element such as a graph plot.
  • The developer should be able to dynamically reconfigure the IoT system without any downtime.
  • The framework should enable programmatic control of the sensors and actuators connected to it (other than the REST API), and execute the code while the system is running.
  • A generic resource abstraction, i.e. each sensor/actuator should have a generic way of of being accessed so as to make it simpler to use.
  • Platform agnostic, the framework should provide hardware specific drivers so that the external interface works in the same manner whether the system is running on a Beaglebone Black or an Intel Edison.
  • Cross node access of sensor and actuator data must be seamless. i.e. one node running the framework (and connected to the cloud) should be able to coordinate with sister nodes (connected to the cloud), and access the remote resources on the other node.

The zygote platform enables all the above mentioned features!!

Project zygote was presented at IEEE ADCOM 2015, the slide deck is available online

Please note that there are a few typos in the slides which I corrected before the presentation, but have not updated the slide set here. (slide 8, first para is incomplete)

zygote's People

Contributors

aishwaryakaliki avatar anrao91 avatar deepakkarki avatar

Watchers

 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.