wolfMQTT Releases v1.19.1

wolfSSL is proud to announce the release of wolfMQTT v1.19.1!

This release fixes an issue in the Espressif example and corrects some documentation issues.

Release 1.19.1 has been developed according to wolfSSL’s development and QA process and successfully passed the quality criteria.

Check out the ChangeLog from the download for a full list of features and fixes, or contact us at facts@wolfSSL.com with any questions. While you’re there, show us some love and give the wolfMQTT project a Star!

Download the latest release or clone directly from our GitHub repository.

If you have questions about any of the above, please contact us at facts@wolfSSL.com or +1 425 245 8247.

Download wolfSSL Now

MQTT v5.0 versus v3.1.1

wolfMQTT was updated to support the draft MQTT v5.0 version of the specification in 2018. The specification was finalized in 2019, and wolfSSL has been a proponent of the new version ever since!

  1. Enhanced Session Management:
    • MQTT v5.0 introduces improved session management, allowing clients to resume sessions seamlessly. This feature ensures continuity and reliability, especially in scenarios where connections may be unstable or intermittent.
  2. Extended Message Properties:
    • Version 5.0 introduces extended message properties. These properties offer richer metadata for messages, enabling more sophisticated message routing, filtering, and processing.
  3. Payload Format Indicators:
    • With MQTT v5.0, publishers can indicate the format of the message payload, providing valuable information to subscribers. This feature enhances interoperability and simplifies message handling, especially in heterogeneous IoT environments.
  4. Message Expiry Interval:
    • MQTT v5.0 allows publishers to specify a message expiry interval, ensuring that messages are delivered within a defined timeframe or discarded if they expire. This capability enhances message reliability and resource efficiency, particularly in constrained IoT networks.
  5. Request/Response Model:
    • Version 5.0 introduces a request/response messaging pattern, enabling clients to make requests and receive responses over MQTT. This feature simplifies communication in IoT applications, facilitating interactions between devices and servers.
  6. Flow Control Enhancements:
    • MQTT v5.0 provides improved flow control mechanisms, including the ability to specify maximum packet size and rate limits. These enhancements help prevent network congestion and improve overall system stability and performance.
  7. Topic Alias:
    • In MQTT v5.0, topic aliasing allows clients to use shorter topic identifiers, reducing bandwidth usage and improving efficiency, especially in scenarios with long or complex topic names.
  8. Shared Subscriptions:
    • Shared subscriptions enable multiple clients to share the processing of messages from a single subscription, distributing the workload efficiently across subscribers. This feature enhances scalability and resource utilization in MQTT v5.0 compared to v3.1.1.
  9. Support for Binary Data:
    • MQTT v5.0 introduces native support for binary data transmission, eliminating the need for encoding and decoding payloads, which simplifies application development and improves performance.
  10. Authentication Enhancements:
    • Version 5.0 offers enhanced authentication mechanisms, including support for more robust authentication methods such as OAuth 2.0. These enhancements bolster security and authentication capabilities, addressing evolving IoT security requirements.

wolfMQTT has excellent examples that demonstrate the capabilities of MQTT v5.0: Property handling callback for incoming messages

During connect:

LWT delay
Request problem info
Max packet size

During subscribe:

Subscription identifier

During publish:

Payload format indicator
Topic alias

As the MQTT specification continues to evolve, wolfSSL will stay on top of the latest improvements. Want to try out MQTT v5.0? You’ll need a broker that supports MQTT v5.0. You can find a list of brokers that we tested.

You can run the wolfMQTT client examples after building the code from here.

While you’re there, show us some love and give the wolfMQTT project a Star!

If you have questions about any of the above, please contact us at facts@wolfSSL.com or call us at +1 425 245 8247.

Download wolfSSL Now

wolfMQTT Releases v1.19.0

In the realm of lightweight MQTT (Message Queuing Telemetry Transport) implementations, wolfMQTT continues to push the boundaries of efficiency and versatility. With the release of version 1.19.0, wolfMQTT introduces several pivotal features that enhance its performance, usability, and integration capabilities.

  1. Enhanced Stress Test Module:
    The incorporation of an advanced stress test module empowers developers to subject wolfMQTT to rigorous testing scenarios, ensuring its resilience under high loads and adverse conditions.
  2. Seamless CMake Integration for CI Testing:
    By integrating with CMake for continuous integration testing, wolfMQTT simplifies the process of building and testing across different platforms and environments.
  3. Tailored Templates for Espressif ESP32 and AWS IoT Examples:
    The introduction of dedicated templates for Espressif’s ESP32 platform, coupled with AWS IoT examples, accelerates the integration of wolfMQTT into IoT projects.
  4. Expanded Compatibility with Curl Test Dependencies:
    wolfMQTT’s compatibility horizon broadens with the addition of curl test dependencies. This expansion facilitates smoother integration with systems reliant on curl for HTTP-based communication, enhancing the interoperability of wolfMQTT with a broader ecosystem of tools and frameworks.
  5. Initiation of Espressif CI and Zephyr CI Optimization:
    The initiation of continuous integration setups for Espressif platforms and optimization efforts targeting Zephyr CI underscore wolfMQTT’s commitment to comprehensive testing and compatibility assurance.

Release 1.19.0 has been developed according to wolfSSL’s development and QA process (see link below) and successfully passed the quality criteria.
https://www.wolfssl.com/about/wolfssl-software-development-process-quality-assurance

Check out the changelog from the download for a full list of features and fixes, or contact us at facts@wolfssl.com with any questions:
https://github.com/wolfSSL/wolfMQTT/blob/master/ChangeLog.md

While you’re there, show us some love and give the wolfMQTT project a Star!

You can download the latest wolfMQTT release or clone directly from our GitHub repository

If you have questions about any of the above, please contact us at facts@wolfSSL.com or call us at +1 425 245 8247.

Download wolfSSL Now

wolfMQTT – Now Available as an Espressif Managed Component Includes AWS IoT MQTT Example

Not long ago, we announced preview support for new Espressif Managed Components in addition to the core wolfssl managed component. Today you can add MQTT capabilities to your toolbox by visiting this link:

https://components.espressif.com/components/wolfssl/wolfmqtt

If the ESP Registry page does not fully load with all the text, try holding down the “ctrl” key when pressing the refresh button in your browser. The CDN seems to occasionally cache incomplete web content.

Getting started with wolfSSL and wolfMQTT has never been easier! You can add wolfMQTT to your project with this command:

idf.py add-dependency “wolfssl/wolfmqtt”

We’ve also included a complete example project to connect to the AWS IoT MQTT. Just click the little “copy” icon and paste into a command prompt after the ESP-IDF has been installed:

Try it

Here’s an example of how the example can be created, built, and flashed onto your ESP32:

# Setup the ESP-IDF Environment (your actual path may vary)
. ~/esp/esp-idf/export.sh

# Download and create the example
idf.py create-project-from-example “wolfssl/wolfmqtt:AWS_IoT_MQTT”
cd AWS_IoT_MQTT

# Set your SSID and wifi Password in Example Connection Configuration
idf.py menuconfig

# Flash the code to your ESP32
idf.py -p /dev/ttyS9 -b 115200 flash monitor

Tada! You have your very own sample MQTT AWS IoT device! Upon a successful connection, output similar to this should be displayed on the serial port being monitored:

I (17096) wolfmqtt main: Initial Stack Used (before wolfSSL Server): 2244 bytes
I (17104) wolfmqtt main: Starting awsiot_main...

AwsIoT Client: QoS 1, Use TLS 1
MQTT Net Init: Success (0)
MQTT Init: Success (0)
NetConnect: Host a2dujmi05ideo2-ats.iot.us-west-2.amazonaws.com, Port 8883, Timeout 5000 ms, Use TLS 1
MQTT TLS Setup (1)
MQTT TLS Verify Callback: PreVerify 0, Error -188 (ASN no signer error to confirm failure)
  Subject's domain name is Starfield Services Root Certificate Authority - G2
  Allowing cert anyways
MQTT Socket Connect: Success (0)
MQTT Connect: Proto (v3.1.1), Success (0)
MQTT Connect Ack: Return Code 0, Session Present 0
MQTT Subscribe: Success (0)
  Topic $aws/things/demoDevice/shadow/update, Qos 1, Return Code 1
MQTT Publish: Topic $aws/things/demoDevice/shadow/update, ID 2, Success (0)
MQTT Waiting for message...
MQTT Message: Topic $aws/things/demoDevice/shadow/update, Qos 1, Len 92
Payload (0 - 92) printing 80 bytes:
{"state":{"reported":{"hardware":{"type":"wolf_aws_iot_demo","firmware_version":
MQTT Message: Done

The full wolfSSL repository for wolfMQTT contains even more examples for not only this Espressif AWS example, but many other target platforms as well.

Get Started with wolfSSL

Additional information on getting Started with wolfSSL on the Espressif environment is available on the wolfSSL GitHub repository as well as this YouTube recording:

If you have questions about any of the above, please contact us at facts@wolfSSL.com or call us at +1 425 245 8247.

Download wolfSSL Now