Giter Site home page Giter Site logo

raptor's Introduction

Raptor

Build Status Coverage Status Project Stats Join the chat at https://gitter.im/raptorbox-iot/Lobby

About

Raptorbox is a complete open-source solution for Rapid Prototyping of application for the Internet of Things (IoT) with a beautiful graphical user interface that enables the user to have a concrete view of the platform.

It is composed of a set of Restful HTTP APIs and an MQTT broker to create a reactive stream of data and action triggers for your devices. Its GUI enables users with better management and complete view of your devices with the data.

Raptorbox is equipped with node-red to enable rapid decision logic based on data and effective actions on devices.

Pre-requisite

Requirements

Raptor requires a minimum of 4GB of RAM to run slightly.

Required software

For a quick installation, you only need both Docker and Docker Compose installed on your pc.

  1. Docker
  2. Docker-compose See the official Docker guide to install them by clicking on them.

For example on an Ubuntu or Debian box as root you can install with:

curl -sSL https://get.docker.com/ | sh
adduser `whoami` docker
sudo apt-get install python-pip -y && sudo  pip install docker-compose

Getting Started

  1. Clone the repository
  2. run docker-compose up in the root folder
  3. open http://localhost:80/ on your browser.

Some useful commands to see more about the platform docker instance

docker-compose ps to          //view the process status
docker-compose logs -f        //to view the logs

Suggested configurations

For a development setup just use docker-compose to start the services with the default settings

For public-facing services, ensure to update the default passwords in config/raptor.yml in the user's section

5 minute tutorial

A quick tutorial can be downloaded from here to control and stream data from your devices.

Documentation

You can have a look to the documentation hub

Credits

Raptor is a project by the OpenIoT area of FBK/CREATE-NET in the wonderful Trentino, Italy.

Get in touch if you want to know more about Raptor or our other IoT projects.

We have launched an IoT training program as well. If you are interested in learning more about IoT, this is a best chance to learn about new IoT tools and technologies.

License

Copyright FBK/CREATE-NET http://create-net.fbk.eu

Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you 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.

raptor's People

Contributors

amaestrini avatar ansriaz avatar gitter-badger avatar muka avatar pspada avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

raptor's Issues

Introduce pluggable modules support

Interfaces and configuration are tied together and should be instead refactored to allow a more modular approach, where extension can happens just via plugging a new library

To evaluate:

  • SPI
  • OSGI
  • 3rd party libraries, eg decebals/pf4j

Map object / ACL hierarchy

Access tree to objects should be inherited from parents

With a tree like this A / B / C where user u1 can read data from A, they will be able to read data from B and C too

Refactor storage API

  • Drop support for query
  • Add support for multiple database concurrently
  • remove dependecy from storage as it is in favour of the indexer

Refactor data structure

Current data structure is verbose and complex to handle at client side

[{
  channels: {
    channelName: {
       current-value: <channel value>
    }
  },
  lastUpdate: 1234567890
}]

The new structure will have a data field containing a map of key/value and a timestamp value in place of lastUpdate

[{
   data: {
    channelName: <channel value>
  },
  timestamp: 1234567890
}]

Support JWT

Support JWT for token genration and validation

Developer resources status

Documentation

  • #12 Generate Swagger documentation for Raptor API
  • #11 Generate Swagger documentation for security API
  • #20 Update and migrate previous documentation to Jekill / github.io

SDK

  • #4 Java client SDK
  • #15 Javascript client SDK

Deployment & Testing

  • #18 Docker based deployment
  • #17 Docker compose support

Permissions setup should not happen async

When creating a device permission are created asynchrounusly, this create two side effects

  1. Fast clients may get 403 on request (solved by retrying request, as done in the SDK)
  2. In some conditions there are chances the message will get lost causing the ACL not being created at all and making the new device unusable, unless it is manually registered with /auth/sync

To avoid that we may use QOS 2 if not already the case or force the ACL creation request to succeed before having the device created

Add java based client

Integrate Java based client to the repository, leveraging on raptor-model sub project

Add TTL as property

Set the TTL option in settings to allow fine grained data duration configuration

Review data pull and search APIs

Current search API is pretty cumbersome and limited.

  • Review the pull / pull lastupdate feature
  • Review and optimize how search and multi-parameter search are managed

Fetch tokens throws exception

When retrieving tokens (/auth/token) the api complain about the serialization of the owner` property. It may be mapped to a getter and return just the user UUID.

Group features

Group

  • Management HTTP API #5
  • Handle groups in dispatcher #6
  • Match hierarchy between objects/ACL #22

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.