#mqtt-client #mqtt #w5500 #wiznet

no-std w5500-mqtt

MQTT client for the Wiznet W5500 internet offload chip

6 releases

0.3.0 Oct 2, 2023
0.2.0 Aug 6, 2023
0.1.2 Aug 1, 2022
0.1.1 May 14, 2022
0.1.0-alpha.0 Mar 20, 2022

#594 in Embedded development

Download history 18/week @ 2024-02-18 98/week @ 2024-02-25 74/week @ 2024-03-03 47/week @ 2024-03-10 48/week @ 2024-03-17 11/week @ 2024-03-24

187 downloads per month

MIT license

210KB
3K SLoC

w5500-mqtt

MQTT v5 client for the Wiznet W5500 SPI internet offload chip.

Limitations

This is very basic at the moment, and will be expanded in the future.

  • Does not support password protected MQTT servers.
  • Only supports QoS 0: At most once delivery.

Example

use w5500_mqtt::{
    ll::{
        net::{Ipv4Addr, SocketAddrV4},
        Sn,
    },
    Client, ClientId, Event, DST_PORT, SRC_PORT,
};

let mut client: Client = Client::new(
    Sn::Sn2,
    SRC_PORT,
    SocketAddrV4::new(Ipv4Addr::new(192, 168, 5, 6), DST_PORT),
);

// wait for a connection or die trying
while !matches!(client.process(&mut w5500, monotonic_secs())?, Event::None) {}

// publish to "duck" with a payload "quack"
client.publish(&mut w5500, "duck", b"quack")?;

// subscribe to "cow"
client.subscribe(&mut w5500, "cow")?;

Relevant Specifications

Feature Flags

All features are disabled by default.

  • eh0: Passthrough to w5500-hl.
  • eh1: Passthrough to w5500-hl.
  • ip_in_core: Passthrough to w5500-hl.
  • std: Passthrough to w5500-hl.
  • defmt: Enable logging with defmt. Also a passthrough to [w5500-hl].
  • log: Enable logging with log.
  • w5500-tls: Enable MQTT over TLS.
  • p256-cm4: Passthrough to w5500-tls.

Dependencies

~0.4–1MB
~17K SLoC