# 256dpi/arduino-mqtt

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/256dpi-arduino-mqtt).**

1,093 stars · 244 forks · C · MIT

## Links

- GitHub: https://github.com/256dpi/arduino-mqtt
- awesome-repositories: https://awesome-repositories.com/repository/256dpi-arduino-mqtt.md

## Topics

`arduino` `iot` `mqtt`

## Description

This library is an Arduino-compatible client for the messaging protocol designed for resource-constrained embedded systems. It provides a messaging interface that enables microcontrollers to establish persistent connections with brokers to exchange data and control signals.

The library distinguishes itself through a focus on predictable resource usage, utilizing manual memory buffer management and a state-machine approach to handle connection persistence and automatic reconnections. It operates on a stream-oriented network abstraction, allowing it to interface with various hardware transport layers while maintaining synchronous packet serialization for reliable delivery.

The software supports a range of communication capabilities, including message publishing and subscription, configurable timing parameters, and encrypted network traffic to protect data exchange. It is designed to be integrated into embedded projects through a callback-based event dispatching model that processes incoming packets within a continuous loop.

## Tags

### Networking & Communication

- [Arduino](https://awesome-repositories.com/f/networking-communication/networking-libraries/arduino.md) — Provides a software component for managing network connections and data transmission on embedded hardware platforms.
- [MQTT Clients](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/message-broker-infrastructure/publish-subscribe-messaging/mqtt-clients.md) — Implements the MQTT protocol for Arduino devices to publish and subscribe to messages.
- [Protocol-Compatible Messaging Clients](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards/network-protocols/connection-establishment-protocols/messaging-client-connections/protocol-compatible-messaging-clients.md) — Provides a lightweight messaging interface for resource-constrained devices to exchange data with brokers.
- [Publish-Subscribe Systems](https://awesome-repositories.com/f/networking-communication/publish-subscribe-systems.md) — Exchanges information across topics by registering listener functions for incoming messages. ([source](https://github.com/256dpi/arduino-mqtt#readme))
- [Protocol State Machines](https://awesome-repositories.com/f/networking-communication/tcp-connection-lifecycles/connection-state-management/protocol-state-machines.md) — Maintains persistent connection states using formal state machines to manage handshakes and automatic reconnections.
- [Lightweight Messaging Protocols](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards/device-communication-protocols/lightweight-messaging-protocols.md) — Connects resource-constrained hardware to central servers using lightweight messaging protocols.
- [Connection Maintenance Loops](https://awesome-repositories.com/f/networking-communication/connection-maintenance-loops.md) — Synchronizes data flow by processing packets through a continuous loop that monitors connection health. ([source](https://github.com/256dpi/arduino-mqtt#readme))
- [Broker Integrations](https://awesome-repositories.com/f/networking-communication/message-brokers/broker-integrations.md) — Provides pluggable interfaces for establishing persistent communication channels with messaging brokers.
- [Packet Serialization Frameworks](https://awesome-repositories.com/f/networking-communication/packet-engines/packet-serialization-frameworks.md) — Converts structured data into raw byte sequences using a blocking approach for reliable message delivery.

### Data & Databases

- [MQTT Broker Connections](https://awesome-repositories.com/f/data-databases/redis-clients/cluster-connectivity/message-broker-connectivity/mqtt-broker-connections.md) — Establishes persistent messaging connections to MQTT brokers with configurable authentication and session recovery. ([source](https://github.com/256dpi/arduino-mqtt#readme))

### Software Engineering & Architecture

- [Fixed Memory Buffers](https://awesome-repositories.com/f/software-engineering-architecture/memory-buffering/fixed-memory-buffers.md) — Uses fixed-size memory buffers to ensure predictable resource usage on memory-constrained embedded systems.
- [Callback-Based Event Dispatchers](https://awesome-repositories.com/f/software-engineering-architecture/callback-based-event-dispatchers.md) — Processes incoming network packets by triggering registered user functions through a synchronous event loop.
- [Stream Abstractions](https://awesome-repositories.com/f/software-engineering-architecture/stream-abstractions.md) — Operates on generic byte streams to decouple application logic from specific hardware network interfaces.

### Hardware & IoT

- [Embedded Communication Libraries](https://awesome-repositories.com/f/hardware-iot/embedded-communication-libraries.md) — Provides optimized network communication stacks for resource-constrained microcontrollers.

### Security & Cryptography

- [Secure Network Communication](https://awesome-repositories.com/f/security-cryptography/secure-network-communication.md) — Protects data exchange by implementing encrypted communication protocols for all active sessions. ([source](https://github.com/256dpi/arduino-mqtt/blob/master/README.md))

### Part of an Awesome List

- [MQTT Libraries and Brokers](https://awesome-repositories.com/f/awesome-lists/data/mqtt-libraries-and-brokers.md) — MQTT client library for Arduino platforms.
