Skip to content
Open IoT (Internet Of Things) Platform and Framework
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
license OpenDevice 0.1.2 API version - big refactorations e arquiteture changes Jul 18, 2014
maven maven wrapper - make build easy ;) Apr 16, 2015
opendevice-clients
opendevice-connection OTA Firmware Upgrade using Interface fixed #137 Jul 8, 2018
opendevice-core fix concurrency in Sync Devices / Connection Oct 21, 2018
opendevice-js-engine update multiple dependencies Aug 21, 2018
opendevice-middleware
opendevice-rest-api
opendevice-servers
opendevice-tests/src/main cleanup and commit configs Jun 26, 2018
opendevice-web-view Export CSV Device History #165 Aug 21, 2018
.gitignore
.travis.yml
CHANGELOG.md
README.adoc
deploy.sh
mvn3
mvn3.bat fix maven wrapper conflits with travis (try 2) Sep 6, 2016
pom.xml

README.adoc

Build Status

What is OpenDevice?

OpenDevice is a set of tools and APIs to build solutions for the "Internet of Things" like home automations systems, robotics, smart city, energy monitoring, security, sensor monitoring.
Provide an open and unified framework to interconnect IoT devices, data, and applications over the Web, if you need communication between software and hardware, probably your place is here.

The main objective is monitor and control inexpensive hardwares like Arduino, ESP8266, RaspberryPI and similar platforms, local(offline) or over the cloud using high-level programing languages and with abstraction of protocols and low-level details.

This allows you to focus on your project and innovation, leave obscure details of communication protocols and specifications with OpenDevice, you will make a major step towards the success of your project.

Tip
Plug your device (Arduino/Raspberypi/Other) to the Cloud and sync in real-time

Code Sample

Simple like this (Java/Android):
    public class BlinkDeviceDemo extends LocalDeviceManager {

        public static void main(String[] args) { launch(args); }

        public void start() throws IOException {

            Device led = new Device(1, Device.DIGITAL);

            connect(out.usb()); // Connect to first USB port available

            while(true){
                led.on();
                delay(500);
                led.off();
                delay(500);
            }
        }
    }

But not only that…​ (You can also do in javascript and other languages.)

Arduino Side:
#include <OpenDevice.h>

void setup(){
    ODev.name("ODevSerial");
    ODev.addDevice("LED1", 13, Device::DIGITAL);
    ODev.begin(); // by default call Serial.begin() and while(!Serial) on Leonardo
}

void loop(){
	ODev.loop();
}
ESP8266 connected to OpenDevice MQTT Server:
#include <ESP8266WiFi.h>  // Enable ESP8266 Wifi
#include <PubSubClient.h> // MQTT
#include <ArduinoOTA.h>   // Enable Remote Updates

#include <OpenDevice.h>

const char* ssid = "ap-name";
const char* password = "1";

void setup() {
  ODev.enableDebug();
  ODev.name("ODev-Thing1");
  ODev.apiKey("6bde80c3");
  ODev.server("192.168.3.106"); // MQTT Remote server

  ODev.addDevice("Thing1:LED", 2, Device::DIGITAL);

  WiFi.mode(WIFI_AP_STA);
  WiFi.begin(ssid, password);
  ODev.begin(WiFi);
}

void loop() {
  ODev.loop();
}

Running the Server

The server run as standalone application, and you can also run using docker

Technology

site technology

Communications & Protocols

You can communicate with OpenDevice (Cloud and Local Services) using a variety of protocols
  • HTTP (REST)

  • Sockets/Websocket

  • MQTT (In progress)

You can communicate with devices using a variety of protocols
  • USB

  • Ethernet

  • WiFi

  • Bluetooth

Contributing

Contributions are 10,000% welcome. If you discover a bug or would like to propose a new feature, please open a new issue.

To contribute, fork this repository and create a new topic branch for the bug, feature or other existing issue you are addressing. Submit the pull request against the master branch.

Are you using the library? Let us know and add your project to List:Projects-Using-OpenDevice

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.