@ -32,6 +32,7 @@ namespace hass_workstation_service.Data
private bool BrokerSettingsFileLocked { get ; set ; }
private bool BrokerSettingsFileLocked { get ; set ; }
private bool SensorsSettingsFileLocked { get ; set ; }
private bool SensorsSettingsFileLocked { get ; set ; }
private bool CommandSettingsFileLocked { get ; set ; }
private bool CommandSettingsFileLocked { get ; set ; }
private bool _sensorsLoading { get ; set ; }
private readonly string path = Path . Combine ( Environment . GetFolderPath ( Environment . SpecialFolder . LocalApplicationData ) , "Hass Workstation Service" ) ;
private readonly string path = Path . Combine ( Environment . GetFolderPath ( Environment . SpecialFolder . LocalApplicationData ) , "Hass Workstation Service" ) ;
@ -59,6 +60,7 @@ namespace hass_workstation_service.Data
public async void ReadSensorSettings ( MqttPublisher publisher )
public async void ReadSensorSettings ( MqttPublisher publisher )
{
{
this . _sensorsLoading = true ;
while ( this . SensorsSettingsFileLocked )
while ( this . SensorsSettingsFileLocked )
{
{
await Task . Delay ( 500 ) ;
await Task . Delay ( 500 ) ;
@ -123,6 +125,12 @@ namespace hass_workstation_service.Data
case "CurrentVolumeSensor" :
case "CurrentVolumeSensor" :
sensor = new CurrentVolumeSensor ( publisher , configuredSensor . UpdateInterval , configuredSensor . Name , configuredSensor . Id ) ;
sensor = new CurrentVolumeSensor ( publisher , configuredSensor . UpdateInterval , configuredSensor . Name , configuredSensor . Id ) ;
break ;
break ;
case "GpuTemperatureSensor" :
sensor = new GpuTemperatureSensor ( publisher , configuredSensor . UpdateInterval , configuredSensor . Name , configuredSensor . Id ) ;
break ;
case "GpuLoadSensor" :
sensor = new GpuLoadSensor ( publisher , configuredSensor . UpdateInterval , configuredSensor . Name , configuredSensor . Id ) ;
break ;
// keep this one last!
// keep this one last!
case "WMIQuerySensor" :
case "WMIQuerySensor" :
sensor = new WMIQuerySensor ( publisher , configuredSensor . Query , configuredSensor . UpdateInterval , configuredSensor . Name , configuredSensor . Id ) ;
sensor = new WMIQuerySensor ( publisher , configuredSensor . Query , configuredSensor . UpdateInterval , configuredSensor . Name , configuredSensor . Id ) ;
@ -135,6 +143,7 @@ namespace hass_workstation_service.Data
{
{
this . ConfiguredSensors . Add ( sensor ) ;
this . ConfiguredSensors . Add ( sensor ) ;
}
}
this . _sensorsLoading = false ;
}
}
}
}
@ -474,5 +483,14 @@ namespace hass_workstation_service.Data
RegistryKey rkApp = Registry . CurrentUser . OpenSubKey ( @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run" , true ) ;
RegistryKey rkApp = Registry . CurrentUser . OpenSubKey ( @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run" , true ) ;
return rkApp . GetValue ( "hass-workstation-service" ) ! = null ;
return rkApp . GetValue ( "hass-workstation-service" ) ! = null ;
}
}
public async Task < ICollection < AbstractSensor > > GetSensorsAfterLoadingAsync ( )
{
while ( this . _sensorsLoading )
{
await Task . Delay ( 500 ) ;
}
return this . ConfiguredSensors ;
}
}
}
}
}