Giter VIP home page Giter VIP logo

optimuse / com.nimbits Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bsautner/com.nimbits

0.0 1.0 0.0 302.71 MB

Nimbits Server an IOT API designed to store and process time and geo stamp data, filter incoming data and trigger events based on rules. It stores data in a way that makes it easy to retrieve chucks of data sets using date ranges or gps coordinates.

Home Page: http://nimbits.com

Shell 0.12% Java 71.57% HTML 1.43% CSS 24.95% JavaScript 1.93%

com.nimbits's Introduction

Wiki | Community Forum | Bug Report | [Building a Nimbits Server] (https://github.com/bsautner/com.nimbits/wiki/Install:-Build-from-source)

About

nimbits server is a web portal and API designed to store and process time and location stamped data, filter incoming data and trigger events based on rules. It stores data in a way that makes it fast and easy to retrieve chunks of data sets using date ranges or gps coordinates.

Further, it is designed to run on small java embedded devices like a RaspberryPi, J2EE servers like Apache Tomcat and finally on clouds like Google App Engine and Amazon EC2. This lets you build a topgraphy of servers all connected to each other. Small instances can filter noise from sensors and relay data up to larger servers for display on a website, for example.

nimbits.io is a java client that wraps the api to make it easy to automate the server and log data from a java or android app. Part of the maven central repository and JCenter, it's easy to import it into your projects.

Basic Concept

Nimbits is structured as a tree of entities. All entities have a name, unique id and a parent. The top level entity is you. Entities are data points, rule triggers, calculations, alerts or anything else. Data Points are buckets that contain many values. Values are structured like this:

points

{
   long timestamp: unix time in ms
   double value: a number value, current sensor reading, or a tempurature etc
   latitude, longitude: gps coords
   String text data: any string, JSON or XML payloads for example.
   String meta data: another handy string field for filtering data

}

All fields are optional except the timestamp. You record many Values into a Data Point where they are stored. Based on rules you configure, incoming values may be ignored (such as noise from a sensor), trigger calculations, relayed to other servers etc.

With the API, you POST value objects that can trigger events like high alters, or run a rule like a webhook based on the incoming data. You can then perform GET requests to download a series of data based on filter criteria such as a date range.

Project Structure

  • nimbits_server: an implementation of nimbits_core for J2EE servers like jetty or tomcat with an embedded H2 Database
  • nimbits_io: the java client and wrapper for the API and the object model
  • samples - various samples that use nimbits io or other clients to interact with the server

nimbits server

Understanding the API

The API is a restful web service that uses HAL standards. This means that API responses include self links and navigatable links that allow you to browse the api as if it was a web site. One of the best ways to understand the api is to:

The response will be your user entity and you'll be viewing the top level of your entity tree.

You can install plugins in your browser for formatting json and adding authentication headers.

The API uses basic authentication, so you should also use a browser plugin to add a header like this:

Authorization: Basic username:password

or you can base64 encode your user name and password for added security:

Authorization: Basic dm9yZGVsOnZvcmRlbA==

You can then browse the api and see how every object can be represented by it's unique ID:

http://localhost:8080/service/v3/rest/uuid

You can PUT updated to the object, post data values and get a series of data

For more on what you can do with the API, reference the WIKI

Licence

Copyright 2016 Benjamin Sautner

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

com.nimbits's People

Contributors

bsautner 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.