awesome-open-iot

by Agile-IoT

Agile-IoT / awesome-open-iot

A curated list of awesome open source IoT frameworks, libraries and software.

441 Stars 101 Forks Last release: Not found 26 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

awesome-open-iot Awesome

A curated list of awesome open source IoT frameworks, libraries and software.

Note that the list only features components we think are particularly relevant for IoT (e.g they are appropriate for use in embedded IoT devices, deal with the specific constraints of IoT communication networks, etc.). The reader will want to refer to the Awesome catalog for more references in his/her programming language or technical field of choice.

Connectivity

Bluetooth 4.0, Bluetooth Smart (BLE)

| Name | Description | License | Language | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------|---------|----------| | bluez | Official Linux Bluetooth protocol stack | GPL | C | | Gatt
GitHub stars | Gatt is a Go package for building Bluetooth Low Energy peripherals | BSD-3 | Go | | noble
GitHub stars | A Node.js BLE (Bluetooth Low Energy) central module | MIT | Node.js |

enOcean

| Name | Description | License | Language | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------|---------|----------| | EnJ
GitHub stars | EnJ: EnOcean Java library | ASL | Java | | Python EnOcean
GitHub stars | A Python library for reading and controlling EnOcean devices | MIT | Python | | serialport-enocean-parser
GitHub stars | An EnOcean Serial Protocol 3 (ESP3) parser for node-serialport | WTFPL | Node.js |

KNX

TBC

LoRa / LoRaWAN

| Name | Description | License | Language | |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|----------| | LoRa packet forwarder
GitHub stars | A program running on the host of a Lora Gateway that forward RF packets receive by the concentrator to a server through a IP/UDP link, and emits RF packets that are sent by the server. | BSD-3 | C | | The Things Network
GitHub stars | A complete LoRaWAN network stack (router, broker, message handler) | MIT | Go |

NFC

| Name | Description | License | Language | |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|---------|----------| | libnfc
GitHub stars | libnfc is a library which allows userspace application access to NFC devices. | LGPL v3 | C | | Go NFC
GitHub stars | Go bindings for libnfc | LGPL v3 | Go | | Node NFC
GitHub stars | Node.js bindings for libnfc | MIT | Node.js | | Java NFC
GitHub stars | nfctools library for Java | ASL | Java |

RS-232 / Serial

| Name | Description | License | Language | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------|----------------------------|----------| | Java Simple Serial Connector
GitHub stars | Platform-independent serial port access for Java | LGPL | Java | | rxtx
GitHub stars | A Java cross platform wrapper library for the serial port | LGPL | Java/C | | OpenJDK Device/IO | The Device I/O Project provides a Java-level API for accessing generic device peripherals on embedded devices. | GPL w/ classpath exception | Java/C |

RS-485

TBC

ZigBee

TBC

Z-Wave

TBC

Data Encoding

This section focuses on data encoding formats that are particularly appropriate for IoT scenarios (i.e bandwidth or battery efficient, small memory footprint, …)

CBOR

| Name | Description | License | Language | |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|---------|----------| | TinyCBOR
GitHub stars | TinyCBOR is Intel's industrial strength C/C++ implementation of CBOR, as used in the IoTivity framework. | MIT | C |

More at: http://cbor.io/impls.html

FlatBuffers

| Name | Description | License | Language | |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|---------|-----------------------------------------------| | Offical libraries from Google
GitHub stars | FlatBuffers is an efficient cross platform serialization library for games and other memory constrained apps. | ASLv2 | C++, C#, C, Go, Java, JavaScript, PHP, Python |

Protocol Buffers

| Name | Description | License | Language | |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|----------------------------------------------------------| | Offical libraries from Google
GitHub stars | Protocol Buffers (a.k.a., protobuf) are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data. | BSD-3 | C++, Java, Python, Objective-C, C#, JavaScript, Ruby, Go | | nanopb
GitHub stars | Nanopb is a small code-size Protocol Buffers implementation in ansi C. It is especially suitable for use in microcontrollers, but fits any memory restricted system. | BSD-3 | C | | | | | |

Data Visualization

See awesome-dataviz.

Data Storage

| Name | Description | License | Language | |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|---------|----------| | CrateDB
GitHub stars | CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of machine data in real-time. | Apache 2.0 | Java |

Device Discovery

mDNS / Bonjour

| Name | Description | License | Language | |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|---------|----------| | mdns
GitHub stars | Simple mDNS client/server library in Golang | MIT | Go | | bonjour
GitHub stars | mDNS/DNS-SD (also known as Apple Bonjour) library for Go (in pure Go) | MIT | Go | | node_mdns
GitHub stars | mDNS/zeroconf/bonjour service discovery add-on for Node.js | MIT | Node.js | | mdnsjava
GitHub stars | Multicast DNS (mDNS) & DNS-Based Service Discovery (DNS-SD) in Java | BSD | Java |

uPNP

| Name | Description | License | Language | |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------|---------------|----------| | goupnp
GitHub stars | goupnp is a UPnP client library for Go | BSD-2 | Go | | UpnpServer
GitHub stars | Fast and light upnp server for Node.js | GPLv2 | Node.js | | Cling | Java/Android UPnP library and tools | LGPL/CDDL-1.0 | Java |

Gateway

| Name | Description | License | Language | |----------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|---------|----------| | Eclipse Kura
GitHub stars | Eclipse Kura is a Java/OSGi-based framework for IoT gateways | | Java | | OpenWrt | OpenWrt is an embedded operating system based on the Linux kernel, primarily used on embedded devices to route network traffic | GPLv2 | C, Lua | | UBOS
GitHub stars | UBOS is an Arch-derived Linux distro optimized for cost-efficient administration Personal Servers and Indie IoT Devices | Linux | many |

Home Automation

| Name | Description | License | Language | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|----------| | Calaos
GitHub stars | Calaos is a free software project (GPLv3) that lets you control and monitor your home. | GPLv3 | C++ | | Freedomotic
GitHub stars | Freedomotic is an open source, flexible, secure Internet of Things (IoT) development framework, useful to build and manage modern smart spaces. | GPLv2 | Java | | openHAB
GitHub stars | The open Home Automation Bus (openHAB) project aims at providing a universal integration platform for all things around home automation | EPL | Java | | Eclipse SmartHome
GitHub stars | The Eclipse SmartHome project is a framework that allows building smart home solutions that have a strong focus on heterogeneous environments. It provides a uniform access to devices and information and to facilitate different kinds of interactions with them. | EPL | Java | | Home Assistant
GitHub stars | Home Assistant is a home automation platform running on Python 3. It is able to track and control all devices at home and offer a platform for automating control. | Apache 2.0 | Python 3 |

Messaging

CoAP

| Name | Description | License | Language | |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|---------|-------------| | Californium
GitHub stars | Californium is a Java CoAP implementation for IoT Cloud services. | EPL/EDL | Java | | microcoap
GitHub stars | A small CoAP implementation for microcontrollers | MIT | C (Arduino) | | gocoap
GitHub stars | Implementation of CoAP in go | MIT | Go | | node-coap
GitHub stars | node-coap is a Node.js client and server library for CoAP modelled after the http module. | MIT | Node.js |

Modbus

| Name | Description | License | Language | |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|----------| | go modbus
GitHub stars | Fault-tolerant implementation of modbus protocol in Go | BSD-3 | Go | | j2mod
GitHub stars | Enhanced Modbus library implemented in the Java programming language | Apache | Java | | libmodbus
GitHub stars | libmodbus is a free software library to send/receive data with a device which respects the Modbus protocol. This library can use a serial port or an Ethernet connection. | LGPL v2.1 | C | | modbus4j
GitHub stars | A high-performance and ease-of-use implementation of the Modbus protocol written in Java by Infinite Automation Systems and Serotonin Software. Supports ASCII, RTU, TCP, and UDP transports as slave or master, automatic request partitioning and response data type parsing.| GPL v3 | Java | | node-modbus-stack
GitHub stars | A StreamStack implementation of the MODBUS protocol, for NodeJS. | MIT | Node.js | | pymodbus
GitHub stars | A full modbus protocol written in Python | BSD | Python |

MQTT

| Name | Description | License | Language | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|---------|------------------------------------------------------------| | Eclipse Paho | The Eclipse Paho project provides open-source client implementations of MQTT | EPL/EDL | Java, Python, Javascript, Go, C, .Net (C#), Embedded C/C++ | | Eclipse Mosquitto
GitHub stars | Eclipse Mosquitto is an open source message broker that implements the MQTT protocol versions 3.1 and 3.1.1. [...] This makes it suitable for "Internet of Things" messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers like the Arduino. | EPL/EDL | C, Python | | Moquette
GitHub stars | Moquette is a lightweight MQTT broker in Java | ASLv2 | Java | | MQTT.js
GitHub stars | MQTT.js is a client library for the MQTT protocol, written in JavaScript for node.js and the browser. | MIT | Javascript | | | | | |

MQTT-SN

| Name | Description | License | Language | |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|---------|----------| | mqtt-sn-tools
GitHub stars | Command line tools written in C for the MQTT-SN (MQTT for Sensor Networks) protocol. | MIT | C |

OPC-UA

| Name | Description | License | Language | |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------|----------| | Eclipse Milo
GitHub stars | Eclipse Milo provides all the tools necessary to implement OPC Unified Architecture (UA) client and/or server functionality in any JVM-based project. | EPL/EDL | Java | | node-opcua
GitHub stars | An implementation of a OPC UA stack fully written in Javascript and Node.js | MIT | Node.js | | OPC UA .NET
GitHub stars | The official OPC Foundation OPC UA .NET Stack and sample applications. | GPLv2 | .Net | | open62541
GitHub stars | An open source and free C (C99) OPC UA stack licensed | MPLv2 | C |

Operating Systems

| Name | Description | License | Language | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|----------| | Contiki
GitHub stars | Contiki is an open source operating system for the Internet of Things. Contiki connects tiny low-cost, low-power microcontrollers to the Internet. | BSD-3 | C | | FreeRTOS | A cross-platform real-time operating system | GPL-like | C | | mbed OS | ARM® mbed™ OS is an open source embedded operating system designed specifically for the "things" in the Internet of Things (IoT). It includes all the features you need to develop a connected product based on an ARM Cortex-M microcontroller | ASLv2 | C/C++ | | OpenWrt | OpenWrt is an embedded operating system based on the Linux kernel, primarily used on embedded devices to route network traffic | GPLv2 | C, Lua | | RIOT-OS
GitHub stars | RIOT OS is an operating system for Internet of Things (IoT) devices. It is based on a microkernel and designed for energy efficiency, hardware independent development and a high degree of modularity | LGPL | C | | UBOS
GitHub stars | UBOS is an Arch-derived Linux distro optimized for cost-efficient administration Personal Servers and Indie IoT Devices | Linux | many | | Zephyr | Zephyr Project is a small, scalable real-time operating system for use on resource-constrained systems supporting multiple architectures. | ASLv2 | C |

Remote Management

Libraries that can be used to implement remote management of IoT devices

LWM2M

| Name | Description | License | Language | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|---------|----------| | Betwixt
GitHub stars | Betwixt is a LWM2M Client and Server in Go | ASL | Go | | Eclipse Leshan
GitHub stars | Eclipse Leshan is a LWM2M implementation in Java | EPL/EDL | Java | | lwm2m-node-lib
GitHub stars | lwm2m-node-lib is a library for building LWM2M applications (client and server) in Javascript | AGPL | Node.js | | Eclipse Wakaama
GitHub stars | Eclipse Wakaama is a LWM2M implementation in C | EPL/EDL | C | | AwaLWM2M
GitHub stars | Awa LWM2M is an implementation of the OMA Lightweight M2M protocol in C |BSD-3 | C |

OMA-DM

| Name | Description | License | Language | |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------|---------|----------| | libdmclient
GitHub stars | libdmclient implements the client-side of OMA DM 1.2 protocol | ASL | C |

SNMP

| Name | Description | License | Language | |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------|---------|----------| | SNMP4J | SNMP4J is an enterprise class free open source and state-of-the-art SNMP implementation for Java™ SE 1.4 or later | ASL | Java | | GoSNMP
GitHub stars | A simple SNMP library written in Go | BSD | Go |

TR-069

| Name | Description | License | Language | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------|---------|----------| | netcwmp
GitHub stars | A software client for enabling TR-069 in embedded devices | ASLv2 | C |

Robotics and Physical computing

| Name | Description | License | Language | |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|---------|----------| | Artoo
GitHub stars | Artoo is a micro-framework for robotics using Ruby. | ASLv2 | Ruby | | Cylon.js
GitHub stars | Cylon.js is a JavaScript framework for robotics, physical computing, and the Internet of Things. | ASLv2 | Node.js | | Gobot
GitHub stars | Gobot is a framework using the Go programming language for robotics, physical computing, and the Internet of Things. | ASLv2 | Go |

Security

DNS-SEC

| Name | Description | License | Language | |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|---------|----------| | Dnsruby
GitHub stars | Dnsruby is a pure Ruby DNS client library which implements a stub resolver and supports DNSSEC | ASLv2 | Ruby | | dnssecjava
GitHub stars | A DNSSEC validating stub resolver for Java. | EPL | Java |

DTLS

| Name | Description | License | Language | |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|------------| | DTLS Go
GitHub stars | DTLS 1.2 in Go | MIT | Go | | Eclipse Scandium
GitHub stars | The Scandium (Sc) sub-project within Californium implements DTLS 1.2 to secure your application through ECC with pre-shared keys, certificates, or raw public keys. | EPL/EDL | Java | | Eclipse TinyDTLS | tinydtls is a library for Datagram Transport Layer Security (DTLS) covering both the client and the server state machine. tinydtls is a library for Datagram Transport Layer Security (DTLS) covering both the client and the server state machine. | EPL/EDL | C | | mbed TLS | mbed TLS (previously PolarSSL) is an implementation of the TLS and SSL protocols and the respective cryptographic algorithms and support code required. | ASLv2 | C | | OpenSSL | OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. | OpenSSL/SSLeay | C/Assembly | | PyDTLS
GitHub stars | Datagram Transport Layer Security for Python | ASLv2 | Python |

TLS

| Name | Description | License | Language | |-------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|------------| | mbed TLS | mbed TLS (previously PolarSSL) is an implementation of the TLS and SSL protocols and the respective cryptographic algorithms and support code required. | ASLv2 | C | | OpenSSL | OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. | OpenSSL/SSLeay | C/Assembly |

Workflow management

| Name | Description | License | Language | |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|---------|----------| | Node-RED
GitHub stars | A visual tool for wiring the Internet of Things. | ASL | Node.js | | huginn
GitHub stars | Huginn is a system for building agents that perform automated tasks for you online. | MIT | Ruby | | Nebula
| A docker orchestrator designed to manage IoT devices | GPL v3 | Python |

Contributing

Contributions are very welcome! In order to be considered an Awesome Open IoT project you need the following: * Valid OSI approved license, * Proven record of regular commits, * Significant community interest shown through GitHub stars, * Project is focused on solving problems that are specific to IoT.

Please also have a look at this contributing guide for some general guidelines.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.