@@ -22,29 +22,31 @@ pub(crate) fn spawn_modbus_producer(
2222
2323 tokio:: spawn ( async move {
2424 loop {
25- let mut ctx = con. modbus_slave . connect ( ) . await . unwrap ( ) ;
2625 loop {
27- let v = timeout (
28- Duration :: from_secs ( 5 ) ,
29- ctx. read_holding_registers ( con. register , 1 ) ,
30- )
31- . await ;
32- if let Ok ( Ok ( Ok ( v) ) ) = v {
33- match v. first ( ) {
34- Some ( v) => {
35- let date = Utc :: now ( ) ;
36- let v = ( * v as i16 ) as i32 ;
37- let data = DataPoint { date, value : v } ;
38- energy_data. put ( data) . await ;
39- energy_data. log_data ( data) . await ;
40- let _ = cloned_tx. send ( ( v, date) ) . await ;
26+ let ctx = con. modbus_slave . connect ( ) . await ;
27+ if let Ok ( mut ctx) = ctx {
28+ let v = timeout (
29+ Duration :: from_secs ( 5 ) ,
30+ ctx. read_holding_registers ( con. register , 1 ) ,
31+ )
32+ . await ;
33+ if let Ok ( Ok ( Ok ( v) ) ) = v {
34+ match v. first ( ) {
35+ Some ( v) => {
36+ let date = Utc :: now ( ) ;
37+ let v = ( * v as i16 ) as i32 ;
38+ let data = DataPoint { date, value : v } ;
39+ energy_data. put ( data) . await ;
40+ energy_data. log_data ( data) . await ;
41+ let _ = cloned_tx. send ( ( v, date) ) . await ;
42+ }
43+ None => ( ) ,
4144 }
42- None => ( ) ,
45+ } else {
46+ break ;
4347 }
44- } else {
45- break ;
48+ sleep ( Duration :: from_millis ( con. poll_intervall_millis as u64 ) ) . await ;
4649 }
47- sleep ( Duration :: from_millis ( con. poll_intervall_millis as u64 ) ) . await ;
4850 }
4951 }
5052 } ) ;
0 commit comments