Ioto Agent Specs
The Ioto device agent includes the following components:
- Ioto HTTP/1.1 server.
- Ioto HTTP/1.1 client.
- AWS IoT and service integration.
- Ioto MQTT/3.1.1 client.
- Ioto Embedded Database.
- JSON parser and config files.
- Secure Sockets Layer (SSL/TLS) with ALPN support.
- Safe, secure runtime core.
- Documentation.
- Samples.
- Source code.
HTTP Web Server
- HTTP/1.0, HTTP/1.1 support.
- SSL/TLS 1.3 and Alpn support.
- Dynamic content via actions that bind URLs to C functions.
- Configurable request routes and redirections.
- Supports transfer chunk encoding to preserve keep-alive.
- Authentication and user management.
- Cookie and session management.
- Tracing for HTTP requests and responses including HTTP headers.
- Action routines bind URLs to C functions.
- 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.
HTTP Server Action Routines
- Configurable routing of requests by URL patterns.
- Bind action routines (C functions) to URL paths.
- Request body, forms and query parameters are pre-processed for easy access.
- User role is authenticated before granting access to action routine.
- Stream request and response body for large data transfers.
- HTML helpers for encoding, decoding and escaping.
- Integrated support for file upload and post-processing by action routines.
HTTP Client
- Transfer chunk encoding and subscribe MQTT messaging client.
- Modelled on Browser Fetch API.
- SSL/TLS encryption.
- Full support for HTTP method verbs.
- Stream request and response body for large data transfers.
- Parallelism via fiber coroutines. No ugly callbacks or complex threads.
- Convenient support for JSON request and response bodies.
- Easily set request headers and access response headers.
- Tiny footprint: HTTP client component is 6K.
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.
- High message throughput with exceptionally low overhead.
- Wait for delivery or acknowledgement options.
- Auto reconnect.
- Parallelism via fiber coroutines.
- Retained messages.
Embedded Database
- High performance NoSQL management document database.
- JSON document items with flexible query API.
- Efficient import and export of database items.
- Fast red/black binary search indexes.
- Database schema to define and validate app entities.
- Controllable persistency with change triggers.
- Transparent bi-directional data synchronization with the cloud.
- Unified data schema between device and cloud databases.
- Based on AWS DynamoDB OneTable.
- Simple, non-waiting API.
Fiber Coroutines
- Support straight-line non-blocking code patterns.
- Network routines are fiber aware for automatic yielding while waiting for I/O.
- Ioto services are fiber aware including: HTTP server, HTTP client and MQTT client.
- Extremely fast fiber creation.
- Sandbox limits on fiber count.
- Low level fiber API to explicitly yield, resume and spawn fibers.
Safe Runtime
- Portable, cross-platform O/S abstraction.
- Battle-hardened runtime after extensive peer-review and fuzz stress testing.
- Event and timer scheduling.
- Fiber coroutines for non-blocking procedural programming model.
- JSON parser and renderer.
- JSON query engine.
- Safe strings, lists, hashing and buffer management.
- Logging framework – filter by source and/or message type.
- Global memory error handler.
Kickstart Device Management
- VueJS single-page application sample to use as a base for your device management application.
- Flexible and intuitive UI/UX for device management
- Login and registration with user management
- Navigation for simple or complex devices
- Granular user access role control per page
- Dynamic display via data tables and graphical widgets
- Property editing of any device data
- Monitoring Dashboards
- Library of display widgets including: gauges, graphs, buttons, images and tables
- Efficient design and imposes little load on the device.
Performance and Security
- Tiny memory footprint, 300K code. (Web server component is 25K code).
- Single-threaded, fiber coroutines provide an elegant, non-blocking, procedural programming paradigm without resorting to clumsy callbacks or complex threads.
- Exceptional throughput (Web server > 9,300 requests per second on Raspberry PI 4).
- Sandbox limits.
- Safe portable runtime to protect against memory leaks and buffer overflows.
- Secure Sockets Layer (SSL/TLS).
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 (2.6+).
- MAC OS X (10.7+).
- FreeBSD (10.X+).
- FreeRTOS (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.
Standards
- MQTT 3.1.1.
- RFC 2616 HTTP/1.1.
- TLS 1.3.
- RFC 1867 Multipart-mime upload.