Make IoT a lot more fun with data.
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Godeps Added Godeps for other packages other than eywa Dec 11, 2016
api_tests Fixed #45 and improves the readability Apr 12, 2017
assets General template Apr 2, 2016
benchmark Fixed test cases Dec 10, 2016
configs Increase readability Apr 9, 2017
connections Fixed #45 and improves the readability Apr 12, 2017
db use db and pid location relative to OCTOPUS_HOME Jan 6, 2016
handlers Fixed #45 and improves the readability Apr 12, 2017
loggers Porting work Dec 9, 2016
logs add rotating logs Jan 9, 2016
message_handlers Fixed null dereference issue. Fixed #19 Dec 25, 2016
middlewares Add workaround comment Mar 30, 2017
models Harden unit test and improve readability Apr 9, 2017
presenters New channel schema Jan 9, 2017
pubsub Fix a websockt leak issue Apr 2, 2017
templates General template Apr 2, 2016
tmp/pids use db and pid location relative to OCTOPUS_HOME Jan 6, 2016
tools Fix links in doc Jan 26, 2017
utils Rewrite import path for test files Nov 11, 2016
vendor Added Godeps for other packages other than eywa Dec 11, 2016
.gitignore ignore benchmark in git Mar 4, 2016
LICENSE added License dependencies Jan 7, 2016
LICENSE_OF_DEPENDENCIES.md Fix links in doc Jan 26, 2017
README.md Update README.md Mar 23, 2017
auto_test.sh Fixed #45 and improves the readability Apr 12, 2017
migrate.go Porting work Dec 9, 2016
routes.go Implemented series query for device Feb 13, 2017
serve.go Porting work Dec 9, 2016
server.go Porting work Dec 9, 2016
setup_es.go Porting work Dec 9, 2016

README.md

Eywa

What is Eywa?

"Eywa is the guiding force and deity of Pandora and the Na'vi. All living things on Pandora connect to Eywa." -- Avatar Wiki

Project Eywa is essentially a connection manager that keeps track of connected devices. But more than just connecting devices, it is also capable of designing flexible APIs, sending control commands to them, collecting data from them, real-time monitoring and debugging, in the end, providing query interfaces that can be used for data visualization.

Eywa lets the teams of embedded system developers forget about reinventing the backend services and provides a commonly used protocol, websocket, to make real-time communication easily achievable.

Why is it useful?

We are a group of people who are interested in Home Automations and Smart Devices. Often time, these projects involve connecting devices into cloud, tracking the usage of different functionalities, collecting the data and also controlling them. After worked on several similar projects, we found there is no reason to reinvent the wheel each time for different applications. So we came up with Project Eywa to help small teams like us reduce their development circles.

What features does it have?

Here is a growing list of features we want to support:

  • Connection Manager
  • Device Control
  • Command Line Tools
  • Connection Attach Mode
  • Admin Panel
  • Basic Authentication
  • SSL protection
  • Data Indexing
  • Data Streaming
  • Data Export
  • Data Retention
  • Data Visualization
  • Query Interface
  • Clustering
  • Custom Web hooks
  • Custom Monitors
  • M2M (machine to machine) communication
  • HTTP Long-Polling
  • Websocket
  • MQTT integration
  • Dockerized image

Our Admin Panel and Data Visualization dashboard will be releasing soon.

Please let us know if you want more features by creating issues. Pull requests are also very much welcome!

Performance

How performant is Eywa? Well, we did a simple benchmark and the benchmark script is also available in the repo under benchmark directory.

The latest benchmark shows, on a machine of 12 CPUs + 32GB mem from Digital Ocean. A single Eywa node can keep track of more than 1.5 million devices, with a lot of potential. CPU is merely used, but memory is the limiting factor.

For more details please check out wiki on Performance.

How to use?

You can get started with our wiki.

Community / Contributing

Eywa maintains a forum goeywa, where you should feel free to ask questions, request features, or to announce projects that are built with Eywa. You should also see updates and road maps on Eywa in this forum.

Contributions to Eywa are very much welcomed. Fork us if you would like to.