Skip to content

ItayRosen/OpenIoT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenIoT

Lightweight open source IoT platform for makers

Control your IoT devices from the cloud with OpenIoT. The platform allows you to update code over the air, set up custom notifications and access its components in real time. OpenIoT currently supports ESP8266 boards with programming using Arduino environment.

Installation

  1. You need an Arduino environment IDE with ESP8266 support. Arduino IDE and PlatformIO are recommended.
  2. Add the OpenIoT Library to Arduino IDE or PlatformIO.
  3. Register on the platform, add a new thing and follow the steps for a quick start.

Usage

OpenIoT works by attaching components (GPIO, Variables and Functions) to the platform, using the library.

Learn how to use the library in the docs. Examples can be found in the examples directory.

OTA Updates

Over the air firmware updates

Future development of the platform will include an IDE (like Arduino Create). Current OTA only allows uploading of a compiled binary file. Future development will also optimize the process and allow a ~70% flash size usage, but current process limits you to 50% flash size. It means that if your board has flash size (PROGRAM) of 4MB, then your sketch can only use 50% of it (2MB). That is because the new firmware has to be stored alongside current firmware for update. You can extract your compiled binary file quite easily with Arduino IDE and PlatformIO.

Self Hosting

You can host the platform and all communication handling on your own server. You are going to need a linux machine and a firebase account. Check out the step by step tutorial

API

OpenIoT provides support for a REST API to enable you to programmatically communicate with your Thing (reboot, read/write operations, data history, logs and more). Learn more in the API docs.

Supported Boards

As of now, only ESP8266 is supported. I do wish to add support for as many boards as possible. Any help with this task is appreciated.

  • NodeMCU - Before starting to use, make sure you're familiar with its pinout.

To Do

  • Bridge pub/sub to Firebase and control MQTT (input + output) from there for better performance.
  • Create OTA temp file to allow better usage of flash size.
  • Try the library with other ESP8266 boards (Wemos D1, Generic ESP8266 etc)
  • Github sign in

Features Roadmap

Suggestions and "voting" for certain urgancy of different features are welcome.

  • Web IDE - for OTA firmware updates
  • Mobile App
  • Github OTA - push OTA updates from Github
  • API - http api for 3rd party applications
  • Data Charts - log components data on platform and plot charts with it.
  • Wifi Manager - add support for Wifi Manager (insert wifi credentials via web server instead of hard-coding)
  • Coding Hub - create applications that can control multiple Things in one code

Contribute

All contributions and contributors are welcome. If you've ran into issues, please look if there's a similar one opened already. If not, open a new one. Contribution can also be done with future development in the form of:

  • Testing the platform environment on different OS and devices.
  • Testing the library on different devices (as long they are supported of course).
  • Adjusting the library in order to support other devices and environments.
  • Help with developing new features.
  • Report coding architacture and security issues.

Library Release History

  • 0.1.3

    • Added support for WiFiManager and external wifi management in general.
  • 0.1.2

    • Added support for self hosting
  • 0.1.1

    • Fixed digital read/write operations
  • 0.1.0

    • First release

What's New

  • 13/05 - API Support
  • 08/05 - Data charts and logs for GPIO & Variable components
  • 05/05 - WiFi Manager support added to library
  • 02/05 - Self hosting capability added