Updated dsmr5 to 0.3

This commit is contained in:
Dreaded_X 2023-09-01 01:48:43 +02:00
parent 4b55392933
commit fad275c1d2
Signed by: Dreaded_X
GPG Key ID: FA5F485356B0D2D4
3 changed files with 11 additions and 10 deletions

4
Cargo.lock generated
View File

@ -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",

View File

@ -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",

View File

@ -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());