From c77f1f76964989acc6f2bd8172c25fa721c1d519 Mon Sep 17 00:00:00 2001 From: Priec Date: Mon, 29 Sep 2025 22:52:48 +0200 Subject: [PATCH] mqtt ready to be implemented --- test1/.cargo/config.toml | 2 + test1/Cargo.lock | 120 +++++++++++++++++++++++++++++++++++-- test1/Cargo.toml | 2 + test1/src/bin/mqtt_docs.md | 13 ++++ 4 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 test1/src/bin/mqtt_docs.md diff --git a/test1/.cargo/config.toml b/test1/.cargo/config.toml index a50cb3d..c1f0e2f 100644 --- a/test1/.cargo/config.toml +++ b/test1/.cargo/config.toml @@ -3,6 +3,8 @@ runner = "espflash flash --monitor --chip esp32" [env] ESP_LOG="info" +SSID = "nazov_wifi" +PASSWORD = "heslo" [build] rustflags = [ diff --git a/test1/Cargo.lock b/test1/Cargo.lock index c0fd2a1..ab360fc 100644 --- a/test1/Cargo.lock +++ b/test1/Cargo.lock @@ -164,6 +164,47 @@ dependencies = [ "syn", ] +[[package]] +name = "defmt" +version = "0.3.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" +dependencies = [ + "defmt 1.0.1", +] + +[[package]] +name = "defmt" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +dependencies = [ + "defmt-parser", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror", +] + [[package]] name = "delegate" version = "0.13.4" @@ -279,7 +320,7 @@ dependencies = [ "embassy-time 0.5.0", "embedded-io-async", "embedded-nal-async", - "heapless", + "heapless 0.8.0", "log", "managed", "smoltcp", @@ -302,7 +343,7 @@ dependencies = [ "embedded-io-async", "futures-sink", "futures-util", - "heapless", + "heapless 0.8.0", ] [[package]] @@ -316,7 +357,7 @@ dependencies = [ "embedded-io-async", "futures-core", "futures-sink", - "heapless", + "heapless 0.8.0", ] [[package]] @@ -368,7 +409,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc55c748d16908a65b166d09ce976575fb8852cf60ccd06174092b41064d8f83" dependencies = [ "embassy-executor", - "heapless", + "heapless 0.8.0", ] [[package]] @@ -504,7 +545,7 @@ dependencies = [ "cfg-if", "esp-config", "esp-println", - "heapless", + "heapless 0.8.0", "semihosting", ] @@ -885,6 +926,16 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "heapless" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1edcd5a338e64688fbdcb7531a846cfd3476a54784dcb918a0844682bc7ada5" +dependencies = [ + "hash32", + "stable_deref_trait", +] + [[package]] name = "heck" version = "0.5.0" @@ -1089,6 +1140,28 @@ dependencies = [ "toml_edit", ] +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "proc-macro2" version = "1.0.101" @@ -1166,6 +1239,19 @@ dependencies = [ "syn", ] +[[package]] +name = "rust-mqtt" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f71160765f368fd9a84e0955e2ddb6d64ac9018fee1c5323354d6d08c816b40" +dependencies = [ + "defmt 0.3.100", + "embedded-io", + "embedded-io-async", + "heapless 0.8.0", + "rand_core 0.6.4", +] + [[package]] name = "ryu" version = "1.0.20" @@ -1230,7 +1316,7 @@ dependencies = [ "bitflags 1.3.2", "byteorder", "cfg-if", - "heapless", + "heapless 0.8.0", "log", "managed", ] @@ -1314,11 +1400,33 @@ dependencies = [ "esp-hal-embassy", "esp-println", "esp-wifi", + "heapless 0.9.1", "log", + "rust-mqtt", "smoltcp", "static_cell", ] +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "toml_datetime" version = "0.7.2" diff --git a/test1/Cargo.toml b/test1/Cargo.toml index b07a227..8eed50e 100644 --- a/test1/Cargo.toml +++ b/test1/Cargo.toml @@ -64,6 +64,8 @@ smoltcp = { version = "0.12.0", default-features = false, features = [ "socket-udp", ] } static_cell = "2.1.1" +rust-mqtt = { version = "0.3.0", default-features = false, features = ["no_std"] } +heapless = "0.9.1" [profile.dev] diff --git a/test1/src/bin/mqtt_docs.md b/test1/src/bin/mqtt_docs.md new file mode 100644 index 0000000..70403d2 --- /dev/null +++ b/test1/src/bin/mqtt_docs.md @@ -0,0 +1,13 @@ +# MQTT Implementation Notes + +* WiFi connection runs in a separate task with auto-reconnect functionality +* Network stack operates in a dedicated packet processing task +* MQTT uses TCP socket connection (MqttClient wraps this socket) +* ClientConfig specifies: MQTT version, QoS levels, client ID +* Standard flow: connect_to_broker() → send_message() or subscribe() + +## Implementation: +1. Perform DNS lookup for broker hostname +2. Establish TCP socket connection +3. Create MqttClient with configuration +4. Implement connect, publish, and subscribe logic