@@ -221,22 +221,6 @@ protected override void OnStartup(StartupEventArgs evtArgs)
221221 Log . Error ( "No Home Assistant Connection for Flight Instrument Panels" ) ;
222222 }
223223
224- splashScreen . Dispatcher . Invoke ( ( ) =>
225- splashScreen . ProgressText . Text = "Getting sensor data from HWInfo..." ) ;
226-
227- HWInfo . ReadMem ( "HWINFO.INC" ) ;
228-
229- if ( HWInfo . SensorData . Any ( ) )
230- {
231- Log . Info ( $ "Writing { HWInfo . SensorData . Count } HWINFO Sensors to hwinfo.json") ;
232-
233- HWInfo . SaveDataToFile ( @"Data\hwinfo.json" ) ;
234- }
235- else
236- {
237- Log . Error ( "No HWINFO Sensors Found" ) ;
238- }
239-
240224 Dispatcher . Invoke ( ( ) =>
241225 {
242226 var window = Current . MainWindow = new MainWindow ( ) ;
@@ -403,51 +387,64 @@ protected override void OnStartup(StartupEventArgs evtArgs)
403387
404388 MQTT . FillConfig ( ) ;
405389
406- if ( File . Exists ( Path . Combine ( App . ExePath , "mqtt.config" ) ) && HWInfo . SensorData . Any ( ) )
390+ var incPath = Path . Combine ( App . ExePath , "HWINFO.INC" ) ;
391+
392+ var onlyOnce = true ;
393+
394+ if ( File . Exists ( Path . Combine ( App . ExePath , "mqtt.config" ) ) && File . Exists ( incPath ) )
407395 {
408396 HWInfoTask = Task . Run ( async ( ) =>
409397 {
410- await MQTT . Connect ( ) ;
398+ await MQTT . Connect ( ) ;
411399
412400 Log . Info ( $ "HWInfo task started, polling interval { MQTT . MqttPollingInterval } ms") ;
413401
414- if ( HWInfo . SensorData . Any ( ) )
402+ while ( true )
415403 {
416- foreach ( var sensor in HWInfo . SensorData )
404+ if ( hwInfoToken . IsCancellationRequested )
417405 {
418- foreach ( var element in sensor . Value . Elements )
419- {
420- var mqttValue = JsonConvert . SerializeObject ( new HWInfo . MQTTDiscoveryObj
421- {
422- device_class = element . Value . DeviceClass ,
423- name = element . Value . Name ,
424- state_topic =
425- $ "homeassistant/{ element . Value . Component } /{ element . Value . Node } /state",
426- unit_of_measurement = element . Value . Unit ,
427- value_template = "{{ value_json.value}}" ,
428- unique_id = element . Value . Node ,
429- state_class = "measurement"
430- } , new JsonSerializerSettings
431- {
432- NullValueHandling = NullValueHandling . Ignore
433- } ) ;
434-
435- await MQTT . Publish (
436- $ "homeassistant/{ element . Value . Component } /{ element . Value . Node } /config",
437- mqttValue ) ;
438-
439- }
406+ hwInfoToken . ThrowIfCancellationRequested ( ) ;
440407 }
441408
442- while ( true )
409+ HWInfo . ReadMem ( ) ;
410+
411+ if ( HWInfo . SensorData . Any ( ) )
443412 {
444- if ( hwInfoToken . IsCancellationRequested )
413+ if ( onlyOnce )
445414 {
446- hwInfoToken . ThrowIfCancellationRequested ( ) ;
447- }
415+ onlyOnce = false ;
416+
417+ Log . Info ( $ "HWINFO Sensors found, Writing all HWINFO Sensors to hwinfo.json") ;
418+
419+ HWInfo . SaveDataToFile ( @"Data\hwinfo.json" ) ;
420+
421+ foreach ( var sensor in HWInfo . SensorData )
422+ {
423+ foreach ( var element in sensor . Value . Elements )
424+ {
425+ var mqttValue = JsonConvert . SerializeObject ( new HWInfo . MQTTDiscoveryObj
426+ {
427+ device_class = element . Value . DeviceClass ,
428+ name = element . Value . Name ,
429+ state_topic =
430+ $ "homeassistant/{ element . Value . Component } /{ element . Value . Node } /state",
431+ unit_of_measurement = element . Value . Unit ,
432+ value_template = "{{ value_json.value}}" ,
433+ unique_id = element . Value . Node ,
434+ state_class = "measurement"
435+ } , new JsonSerializerSettings
436+ {
437+ NullValueHandling = NullValueHandling . Ignore
438+ } ) ;
448439
449- HWInfo . ReadMem ( "HWINFO.INC" ) ;
440+ await MQTT . Publish (
441+ $ "homeassistant/{ element . Value . Component } /{ element . Value . Node } /config",
442+ mqttValue ) ;
450443
444+ }
445+ }
446+ }
447+
451448 foreach ( var sensor in HWInfo . SensorData )
452449 {
453450 foreach ( var element in sensor . Value . Elements )
@@ -463,11 +460,20 @@ await MQTT.Publish(
463460 }
464461
465462 }
466-
463+
467464 //!!!FipHandler.RefreshHWInfoPages();
465+ }
466+ else
467+ {
468+ Log . Error ( "No HWINFO Sensors Found" ) ;
468469
469- await Task . Delay ( MQTT . MqttPollingInterval , _hwInfoTokenSource . Token ) ; // repeat every 5 seconds
470+ onlyOnce = true ;
471+
472+ Thread . Sleep ( 5000 ) ;
470473 }
474+
475+ await Task . Delay ( MQTT . MqttPollingInterval ,
476+ _hwInfoTokenSource . Token ) ; // repeat every 5 seconds
471477 }
472478
473479 } , hwInfoToken ) ;
0 commit comments