esp-embassy-wifihelper

Crates.ioesp-embassy-wifihelper
lib.rsesp-embassy-wifihelper
version0.3.1
created_at2025-02-08 21:14:11.991659+00
updated_at2025-11-21 13:54:49.574496+00
descriptionSimple helper library to make it easier to connect to wifi with esp-embassy
homepagehttps://github.com/oyvindnetland/esp-embassy-wifihelper
repositoryhttps://github.com/oyvindnetland/esp-embassy-wifihelper
max_upload_size
id1548411
size71,144
Øyvind Myrstad Netland (oyvindnetland)

documentation

README

esp-embassy-wifi

Simple helper library to make it easier to connect to wifi with esp-embassy.

How to use

The wifi_example.rs in examples folder show a minimal esp32c3 example code. The part that use this library is this:

let wifi = WifiStack::new(
    spawner,
    peripherals.WIFI,
    peripherals.TIMG0,
    peripherals.RNG,
    SSID.try_into().unwrap(),
    PASSWORD.try_into().unwrap(),
);

How to set up and start delayed through a channel

For cases where wifi is not supposed to connect at startup, or the ssid/password is unknown at startup, a variant for connecting is used. The correct hardware resources are set up and the tasks are spawned, but it waits for a message on a channel with the ssid/password information.

static CHANNEL: Channel<CriticalSectionRawMutex, ClientConfiguration, 1> = Channel::new();

let wifi = WifiStack::new_connect_later(
    spawner,
    peripherals.WIFI,
    peripherals.TIMG0,
    peripherals.RNG,
    CHANNEL.receiver(),
);

The wifi will then try to connect with:

let client_config = ClientConfiguration {
    ssid: SSID.try_into().unwrap(),
    password: PASSWORD.try_into().unwrap(),
    ..Default::default()
};
let _ = CHANNEL.send(client_config).await;

Supported devices

This has been tested on esp32, esp32c3, esp32s3 and esp32c6, and is assumed to work on the remaining esp32 devices as well.

Examples

Examples can be run with the following command:

# replace esp32 with correct device
RUST_LOG=info cargo run --release --features esp32example --features log --target=xtensa-esp32-none-elf --example wifi_example 

or using defmt (also need change in config.toml):

DEFMT_LOG=info cargo run --release --features esp32example --features defmt --target=xtensa-esp32-none-elf --example wifi_example 
Commit count: 20

cargo fmt