@@ -358,6 +358,10 @@ async fn main(spawner: Spawner) {
358358 PRESSURE_DATA . borrow ( cs) . borrow_mut ( ) . value = pres;
359359 } ) ;
360360
361+ let hotdog_amount = critical_section:: with ( |cs| HOTDOG . borrow ( cs) . borrow ( ) . amount ) ;
362+ let sandwich_amount = critical_section:: with ( |cs| SANDWICH . borrow ( cs) . borrow ( ) . amount ) ;
363+ let energy_drink_amount = critical_section:: with ( |cs| ENERGY_DRINK . borrow ( cs) . borrow ( ) . amount ) ;
364+
361365 println ! ( "|========================|" ) ;
362366 println ! ( "| Temperature {:.2}°C |" , temp) ;
363367 println ! ( "| Humidity {:.2}% |" , hum) ;
@@ -378,9 +382,18 @@ async fn main(spawner: Spawner) {
378382 let mut gas_string: String < 32 > = String :: new ( ) ;
379383 write ! ( gas_string, "{:.2}" , gas) . expect ( "write! failed!" ) ;
380384
385+ let mut hotdog_string: String < 32 > = String :: new ( ) ;
386+ write ! ( hotdog_string, "{}" , hotdog_amount) . expect ( "write! failed!" ) ;
387+
388+ let mut sandwich_string: String < 32 > = String :: new ( ) ;
389+ write ! ( sandwich_string, "{}" , sandwich_amount) . expect ( "write! failed!" ) ;
390+
391+ let mut energy_drink_string: String < 32 > = String :: new ( ) ;
392+ write ! ( energy_drink_string, "{}" , energy_drink_amount) . expect ( "write! failed!" ) ;
393+
381394 match client
382395 . send_message (
383- "Temperature" ,
396+ "espbox/sensor/ Temperature" ,
384397 temperature_string. as_bytes ( ) ,
385398 rust_mqtt:: packet:: v5:: publish_packet:: QualityOfService :: QoS1 ,
386399 true ,
@@ -402,7 +415,7 @@ async fn main(spawner: Spawner) {
402415
403416 match client
404417 . send_message (
405- "Pressure" ,
418+ "espbox/sensor/ Pressure" ,
406419 pressure_string. as_bytes ( ) ,
407420 rust_mqtt:: packet:: v5:: publish_packet:: QualityOfService :: QoS1 ,
408421 true ,
@@ -424,7 +437,7 @@ async fn main(spawner: Spawner) {
424437
425438 match client
426439 . send_message (
427- "Humidity" ,
440+ "espbox/sensor/ Humidity" ,
428441 humidity_string. as_bytes ( ) ,
429442 rust_mqtt:: packet:: v5:: publish_packet:: QualityOfService :: QoS1 ,
430443 true ,
@@ -446,7 +459,7 @@ async fn main(spawner: Spawner) {
446459
447460 match client
448461 . send_message (
449- "Gas" ,
462+ "espbox/sensor/ Gas" ,
450463 gas_string. as_bytes ( ) ,
451464 rust_mqtt:: packet:: v5:: publish_packet:: QualityOfService :: QoS1 ,
452465 true ,
@@ -466,6 +479,72 @@ async fn main(spawner: Spawner) {
466479 } ,
467480 }
468481
482+ match client
483+ . send_message (
484+ "espbox/inventory/Hotdog" ,
485+ hotdog_string. as_bytes ( ) ,
486+ rust_mqtt:: packet:: v5:: publish_packet:: QualityOfService :: QoS1 ,
487+ true ,
488+ )
489+ . await
490+ {
491+ Ok ( ( ) ) => { }
492+ Err ( mqtt_error) => match mqtt_error {
493+ ReasonCode :: NetworkError => {
494+ println ! ( "MQTT Network Error" ) ;
495+ continue ;
496+ }
497+ _ => {
498+ println ! ( "Other MQTT Error: {:?}" , mqtt_error) ;
499+ continue ;
500+ }
501+ } ,
502+ }
503+
504+ match client
505+ . send_message (
506+ "espbox/inventory/Sandwich" ,
507+ sandwich_string. as_bytes ( ) ,
508+ rust_mqtt:: packet:: v5:: publish_packet:: QualityOfService :: QoS1 ,
509+ true ,
510+ )
511+ . await
512+ {
513+ Ok ( ( ) ) => { }
514+ Err ( mqtt_error) => match mqtt_error {
515+ ReasonCode :: NetworkError => {
516+ println ! ( "MQTT Network Error" ) ;
517+ continue ;
518+ }
519+ _ => {
520+ println ! ( "Other MQTT Error: {:?}" , mqtt_error) ;
521+ continue ;
522+ }
523+ } ,
524+ }
525+
526+ match client
527+ . send_message (
528+ "espbox/inventory/EnergyDrink" ,
529+ energy_drink_string. as_bytes ( ) ,
530+ rust_mqtt:: packet:: v5:: publish_packet:: QualityOfService :: QoS1 ,
531+ true ,
532+ )
533+ . await
534+ {
535+ Ok ( ( ) ) => { }
536+ Err ( mqtt_error) => match mqtt_error {
537+ ReasonCode :: NetworkError => {
538+ println ! ( "MQTT Network Error" ) ;
539+ continue ;
540+ }
541+ _ => {
542+ println ! ( "Other MQTT Error: {:?}" , mqtt_error) ;
543+ continue ;
544+ }
545+ } ,
546+ }
547+
469548 sleep ( 30000 ) . await ;
470549 }
471550 }
@@ -620,60 +699,4 @@ async fn touch_controller_task(mut touch_controller: TT21100<I2C<'static, I2C0>,
620699
621700pub async fn sleep ( millis : u32 ) {
622701 Timer :: after ( Duration :: from_millis ( millis as u64 ) ) . await ;
623- }
624-
625- const MEASUREMENT_INTERVAL : u32 = 59_000 ; // 59 seconds in milliseconds
626-
627- #[ embassy_executor:: task]
628- async fn sensor_data_task ( mut bme : Bme680 < I2C < ' static , I2C1 > , Delay > , mut client : MqttClient < ' static , AsyncConnectedSession < ' static , TcpSocket < ' static > , 4096 > , 5 , CountingRng > , clocks : Clocks < ' static > ) {
629- loop {
630- bme. set_sensor_mode ( & mut Delay :: new ( & clocks) , PowerMode :: ForcedMode ) . expect ( "Failed to set sensor mode" ) ;
631-
632- let settings = SettingsBuilder :: new ( ) // Use the same settings as before
633- // ... rest of settings
634- . build ( ) ;
635-
636- let profile_duration = bme. get_profile_dur ( & settings. 0 ) . expect ( "Failed to get profile duration" ) ;
637- let duration_ms = profile_duration. as_millis ( ) as u32 ;
638- Delay :: new ( & clocks) . delay_ms ( duration_ms) ;
639-
640- let ( data, _state) = bme. get_sensor_data ( & mut Delay :: new ( & clocks) ) . expect ( "Failed to get sensor data" ) ;
641-
642- // Temperature, humidity, pressure, and gas measurements
643- let temp = data. temperature_celsius ( ) ;
644- let hum = data. humidity_percent ( ) ;
645- let pres = data. pressure_hpa ( ) ;
646-
647- // Update the global data for display (if needed)
648- critical_section:: with ( |cs| {
649- TEMPERATURE_DATA . borrow ( cs) . borrow_mut ( ) . value = temp;
650- HUMIDITY_DATA . borrow ( cs) . borrow_mut ( ) . value = hum;
651- PRESSURE_DATA . borrow ( cs) . borrow_mut ( ) . value = pres;
652- } ) ;
653-
654- // Send MQTT messages
655- publish_mqtt ( & mut client, "Temperature" , temp) . await ;
656- publish_mqtt ( & mut client, "Humidity" , hum) . await ;
657- publish_mqtt ( & mut client, "Pressure" , pres) . await ;
658-
659- // Sleep until the next measurement
660- sleep ( MEASUREMENT_INTERVAL ) . await ;
661- }
662- }
663-
664- async fn publish_mqtt ( client : & mut MqttClient < ' _ , AsyncConnectedSession < ' _ , TcpSocket < ' _ > , 4096 > , 5 , CountingRng > , topic : & str , value : f32 ) {
665- let mut data_string: String < 32 > = String :: new ( ) ;
666- write ! ( data_string, "{:.2}" , value) . unwrap ( ) ;
667-
668- match client. send_message (
669- topic,
670- data_string. as_bytes ( ) ,
671- rust_mqtt:: packet:: v5:: publish_packet:: QualityOfService :: QoS1 ,
672- true ,
673- ) . await {
674- Ok ( ( ) ) => { }
675- Err ( mqtt_error) => {
676- println ! ( "MQTT Error: {:?}" , mqtt_error) ;
677- }
678- }
679- }
702+ }
0 commit comments