Updated dsmr5 to 0.3
This commit is contained in:
parent
4b55392933
commit
fad275c1d2
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -376,9 +376,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dsmr5"
|
name = "dsmr5"
|
||||||
version = "0.2.2"
|
version = "0.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f7b8dcac624a4bae4c257775a5845535d5d3b3c5b1201f335aa0d8fcbd62dc70"
|
checksum = "7f33c828db9cdf93901b9d001a30a16609131ecc361a23a4d261aa5beede06f9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"crc16",
|
"crc16",
|
||||||
"serde",
|
"serde",
|
||||||
|
|
|
@ -55,7 +55,7 @@ static_cell = { version = "1.1", features = ["nightly"] }
|
||||||
heapless = { version = "0.7.16", features = ["defmt"] }
|
heapless = { version = "0.7.16", features = ["defmt"] }
|
||||||
embedded-io-async = { version = "0.5", features = ["defmt-03"] }
|
embedded-io-async = { version = "0.5", features = ["defmt-03"] }
|
||||||
crc16 = "0.4"
|
crc16 = "0.4"
|
||||||
dsmr5 = "0.2"
|
dsmr5 = "0.3"
|
||||||
rust-mqtt = { version = "0.1.5", features = [
|
rust-mqtt = { version = "0.1.5", features = [
|
||||||
"defmt",
|
"defmt",
|
||||||
"no_std",
|
"no_std",
|
||||||
|
|
15
src/main.rs
15
src/main.rs
|
@ -109,12 +109,15 @@ async fn get_readout(rx: &mut BufferedUartRx<'static, UART0>) -> Readout {
|
||||||
#[embassy_executor::task]
|
#[embassy_executor::task]
|
||||||
async fn uart_rx_task(
|
async fn uart_rx_task(
|
||||||
mut rx: BufferedUartRx<'static, UART0>,
|
mut rx: BufferedUartRx<'static, UART0>,
|
||||||
sender: Sender<'static, NoopRawMutex, Readout, 1>,
|
sender: Sender<'static, NoopRawMutex, dsmr5::state::State, 1>,
|
||||||
) {
|
) {
|
||||||
info!("Wating for serial data");
|
info!("Wating for serial data");
|
||||||
loop {
|
loop {
|
||||||
let readout = get_readout(&mut rx).await;
|
let readout = get_readout(&mut rx).await;
|
||||||
match sender.try_send(readout) {
|
let telegram = &readout.to_telegram().unwrap();
|
||||||
|
let state = telegram.try_into().unwrap();
|
||||||
|
|
||||||
|
match sender.try_send(state) {
|
||||||
Ok(_) => {}
|
Ok(_) => {}
|
||||||
Err(_) => warn!("Queue is full!"),
|
Err(_) => warn!("Queue is full!"),
|
||||||
}
|
}
|
||||||
|
@ -126,7 +129,7 @@ async fn main(spawner: Spawner) {
|
||||||
info!("Starting...");
|
info!("Starting...");
|
||||||
let p = embassy_rp::init(Default::default());
|
let p = embassy_rp::init(Default::default());
|
||||||
|
|
||||||
let channel = make_static!(Channel::<NoopRawMutex, Readout, 1>::new());
|
let channel = make_static!(Channel::<NoopRawMutex, _, 1>::new());
|
||||||
|
|
||||||
// === UART ===
|
// === UART ===
|
||||||
let mut config = uart::Config::default();
|
let mut config = uart::Config::default();
|
||||||
|
@ -262,13 +265,11 @@ async fn main(spawner: Spawner) {
|
||||||
loop {
|
loop {
|
||||||
match select(keep_alive.next(), receiver.receive()).await {
|
match select(keep_alive.next(), receiver.receive()).await {
|
||||||
Either::First(_) => client.send_ping().await.unwrap(),
|
Either::First(_) => client.send_ping().await.unwrap(),
|
||||||
Either::Second(readout) => {
|
Either::Second(state) => {
|
||||||
|
// Blink the LED to show that a readout was received
|
||||||
control.gpio_set(0, true).await;
|
control.gpio_set(0, true).await;
|
||||||
control.gpio_set(0, false).await;
|
control.gpio_set(0, false).await;
|
||||||
|
|
||||||
let telegram = readout.to_telegram().unwrap();
|
|
||||||
let state = dsmr5::Result::<dsmr5::state::State>::from(&telegram).unwrap();
|
|
||||||
|
|
||||||
let msg: Vec<u8, 4096> = serde_json_core::to_vec(&state).unwrap();
|
let msg: Vec<u8, 4096> = serde_json_core::to_vec(&state).unwrap();
|
||||||
info!("len: {}", msg.len());
|
info!("len: {}", msg.len());
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user