handle dmsr mqtt messages

This commit is contained in:
Robin Appelman 2024-07-17 20:01:25 +02:00
commit 217298c1c7
6 changed files with 202 additions and 12 deletions

View file

@ -7,12 +7,20 @@ pub async fn mqtt_stream(
mqtt_options: MqttOptions,
) -> Result<(AsyncClient, impl Stream<Item = Result<Publish>>)> {
let (client, event_loop) = AsyncClient::new(mqtt_options, 10);
client.subscribe("tele/+/LWT", QoS::AtMostOnce).await?;
client.subscribe("stat/+/POWER", QoS::AtMostOnce).await?;
client.subscribe("tele/+/SENSOR", QoS::AtMostOnce).await?;
client.subscribe("stat/+/RESULT", QoS::AtMostOnce).await?;
client.subscribe("stat/+/STATUS2", QoS::AtMostOnce).await?;
client.subscribe("stat/+/+", QoS::AtMostOnce).await?;
client.subscribe("tele/+/+", QoS::AtMostOnce).await?;
client.subscribe("rflink/msg", QoS::AtMostOnce).await?;
client.subscribe("+/water", QoS::AtMostOnce).await?;
client.subscribe("+/gas_delivered", QoS::AtMostOnce).await?;
client
.subscribe("+/energy_delivered_tariff1", QoS::AtMostOnce)
.await?;
client
.subscribe("+/energy_delivered_tariff2", QoS::AtMostOnce)
.await?;
client
.subscribe("+/power_delivered_l1", QoS::AtMostOnce)
.await?;
let stream = event_loop_to_stream(event_loop).filter_map(|event| match event {
Ok(Event::Incoming(Packet::Publish(message))) => Some(Ok(message)),