Embedthis Ioto™ Features
- HTTP/1.1 server with dynamic rendering, authentication, cookies, sessions and file upload.
- HTTP/1.1 client.
- MQTT/3.1.1 client.
- Embedded database (like local DynamoDB).
- Transparent DynamoDB database cloud synchronization.
- JSON/5 parser and query engine.
- AWS IoT integration with IoT Core, Shadows, Events and Rules.
- AWS service integration with S3, Lambda, Kinesis and CloudWatch.
- Transparent database synchronization with DynamoDB.
- Transport Layer Security (TLS/SSL) with ALPN support.
- Safe, secure runtime core.
- State persistence to JSON configuration files.
- Easy provisioning.
- OTA upgrading.
- Complete documentation.
- Extensive Samples.
- Full Source code.
Feature Overview
Management Applications
The Ioto Agent source distribution includes several sample management applications that are integrated with Ioto.
The management apps are browser-based VueJS apps that communicate with either the local Ioto web server or with the cloud-based Ioto service.
Name | Directory | Description |
---|---|---|
manager | apps/manager | Cloud-based device manager developer console for Ioto |
console | apps/console | Local developer console for Ioto |
kickstart | apps/kickstart | Local Kickstart sample "router" management app |
empty | apps/empty | Empty application to resolve application hooks |
auth | apps/auth | Test user login and authentication app |
unit | apps/unit | Unit tests app |
AWS IoT Integration
- AWS IoT Ready — Bring your own cloud.
- Capture device data and export to AWS.
- Send control plane data to AWS IoT shadows.
- Transparent database synchronization with AWS DynamoDB.
- Stream bulk device data to AWS S3 data lake or Kinesis.
- Store device logs, metrics in AWS CloudWatch.
- Keep an audit trail in CloudTrail.
MQTT Client
- MQTT 3.1.1 support.
- TLS encryption with ALPN over port 443.
- Supports connect, publish, subscribe, ping and disconnect messages.
- Message quality of service for reliable delivery.
- Retained messages.
- High message throughput with exceptionally low overhead.
- Wait for delivery or acknowledgement options.
- Auto reconnect.
- Parallelism via fiber coroutines.
Embedded Database
- High performance in-memory NoSQL management document database (DynamoDB lite).
- Red/black binary search indexes.
- JSON documents with in-memory query API.
- Controllable persistence locally and to the cloud on a per-table basis.
- Transparent bidirectional data synchronization with the cloud. (like Global Tables).
- Unified data schema between device and cloud databases.
- Based on DynamoDB OneTable API.
HTTP Server
- HTTP/1.0, HTTP/1.1 support.
- TLS/SSL 1.3 and ALPN support.
- URL actions that bind URLs to C functions.
- Configurable request routes and redirections.
- Supports transfer chunk encoding to preserve keep-alive.
- Cookie and session management.
- Authentication and user management.
- Request tracing for HTTP request and response headers.
- Sand-box resource limits.
- Runtime configurable via JSON config files.
- HTML helpers for encoding, decoding and escaping content.
- JSON parser and query engine.
- Single-threaded, fiber coroutine event-based runtime.
Safe Runtime
- JSON parser and renderer.
- JSON query engine.
- Fiber coroutines for non-blocking procedural programming model.
- Global memory error handler.
- Logging framework —— filter by source and/or message type.
- Safe strings, lists, hashing and buffer management.
- Portable, cross-platform O/S abstraction.
Performance
- Tiny memory footprint. Web server component is 25K code. Total is 96K code.
- Single-threaded fiber coroutines provide an elegant, non-blocking, procedural programming paradigm without resorting to clumsy callbacks or complex threads.
- Web server request throughput (> 9,300 requests per second on Raspberry Pi 4).
Security
- Sandbox limits.
- Safe portable runtime to protect against memory leaks and buffer overflows.
- Transport Layer Security (TLS/SSL).
Developer Integration
- Run supplied Ioto program or embed Ioto library.
- Shared and static libraries supported.
- Easy, intuitive programming model.
- Extensive C API.
Documentation
- Full C API Documentation.
- Cookbook of samples (cut and paste to get going).
- Tutorials.
Platform Support
- Linux
- MAC OS X
- FreeBSD
- FreeRTOS (pending)
- RIOT (pending)
Embedding Support
- Supports ARM, MIPS, X86, X64, PPC, SH, Sparc processors.
- Full cross-compilation support. Use Windows, Linux or Mac as build system.
- Fine-grained control for conditional build and compilation.