Code Monkey home page Code Monkey logo

chariot's Introduction

Chariot

The Internet of Things (IoT) is a system of connected devices capable of collecting and transferring data. Different users of IoT devices may be interested in different types of data. A gardener might want to track the pH value of their soil and the air humidity. A city planner may look for a way to track pedestrian traffic in common spaces. A factory manager might look for a way to track the status of machinery and production rates.

IoT infrastructure has exploded in the past decade, so there are devices on the market to collect data for a wide variety of applications. But the wide variety of devices requires special considerations. A Wi-Fi 4K camera connects to a network much differently than a home thermometer. A motion detector may collect and transfer data in a different form than a pressure sensor.

So, despite progress in the IoT industry, it is still difficult to integrate different types of devices into a unified system. Chariot solves this problem. Chariot is a platform for IoT device management, data storage, and analysis. Users can add, remove, and configure a variety of devices on a single network. With Chariot, a gardener could purchase a pH and humidity IoT devices off the shelf and gather data from his soil and the air from one convenient interface.

Table of Contents

Features

Chariot offers:

  • A platform to use heterogeneous IoT devices regardless of device protocols,
  • Drop in, drop out device connection,
  • Connection to powerful database engines,
  • Modular addition of device adapters to expand Chariot's capabilities.

Getting Started

Prerequisites

The Chariot core exposes a REST-ful API to manage devices, networks, and database connections. The following are required to set up and run the Chariot core:

The Chariot GUI interfaces with the core API. The following are required to set up and run the Chariot GUI:

Installation

Use the *nix shell to install. Start by cloning this repository.

$ git clone https://github.com/chariot-dev/chariot.git

Navigate to the install directory.

$ cd path/to/chariot/install

To install both Chariot's core and GUI, run the install.sh script.

$ bash install.sh

To install just Chariot core, run the install-core.sh script.

$ bash install-core.sh

To install the Chariot GUI, run the install-gui.sh script.

$ bash install-gui.sh

Usage

Starting Chariot

To start Chariot's webserver and utilize its backend, navigate to the run directory and run the run-core.sh script.

$ cd path/to/chariot/run $ bash run-core.sh

To start the Chariot GUI, run the run-gui.sh script. This will attempt to connect to the local server, and must be performed after it is started.

$ bash run-gui.sh

To run the core and the GUI in a single command, run the run.sh script.

CLI

Chariot's server can be accessed via a terminal environment using utilities like curl. Below is an example usage to create a new network, add a device, and review that network and its device configurations.

(Creating a new network)
$ curl -i -X POST localhost:5000/chariot/api/v1.0/network -H "content-Type: application/json" -d '{"networkName":"test", "description":"this is my test network"}'
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 22
Access-Control-Allow-Origin: *
Server: Werkzeug/0.16.0 Python/3.8.1
Date: *Current Date and Time*

{
    "success": true
}

(Adding a device to a network)
(Notice that the associated network must be specified by the `networkName` field.)
$ curl -i -X POST localhost:5000/chariot/api/v1.0/network/device -H "content-Type: application/json" -d '{"networkName":"test", "deviceID":"MyDevice", "deviceType":"Device", "ipAddress":"IP Address", "pollDelay":3, *Device Specific Configurations*}'
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 22
Access-Control-Allow-Origin: *
Server: Werkzeug/0.16.0 Python/3.8.1
Date: *Current Date and Time*

{
    "success": true
}

Thanks to running as a web server, all endpoints can be accessed with curl commands like those demonstrated above. For documentation of all API endpoints please see the API_ENDPOINTS.md file.

GUI

All of Chariot's features can be utilitized through the GUI. This is an alternative to using the CLI. The features that are currently functioning are:

  • Creating a network
  • Creating a device
  • Deleting a network
  • Deleting a device from a network
  • Modifying a network's properties

The features that are not fully functioning are:

  • Authentication (creating an account and logging in with said account)
  • Adding another device to existing network (a little buggy)
  • Connecting to database to configure data collection
  • Data collection from an actual device
  • Modifying an existing device (a little buggy)
  • Monitoring device status as data collection episode is in progress
  • Performing data analysis

Contributing

Please see the CONTRIBUTING.md file for instructions on how to set up a development environment and contribute to Chariot.

License

This project is licensed under the GNU Lesser General Public License v3.0. See the LICENSE file for details.

Contributors

Acknowledgments

The team would like to thank:

chariot's People

Contributors

dependabot[bot] avatar enioluwas avatar hojohn2561 avatar juan-garcia96 avatar kac486 avatar ryanhassing 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.