11using FanControl . Plugins ;
2- using RestSharp ;
32using Newtonsoft . Json ;
3+ using System . Net . Http ;
44
55namespace FanControl . HomeAssistant
66{
@@ -14,6 +14,7 @@ public class HomeAssistantSensor : IPluginSensor
1414 private HomeAssistantSensorConfig _hassSensorConfig ;
1515 private IPluginLogger _logger ;
1616 private long _cycle = 0 ;
17+ private HttpClient _httpClient ;
1718
1819 internal HomeAssistantSensor ( HomeAssistantSensorConfig hassSensorConfig , HomeAssistantConfig hassConfig , IPluginLogger logger )
1920 {
@@ -30,6 +31,10 @@ internal HomeAssistantSensor(HomeAssistantSensorConfig hassSensorConfig, HomeAss
3031 _logger . Log ( HomeAssistantPlugin . LOG_PREFIX + $ "Error: Configured polling interval of { _hassSensorConfig . PollingInterval } seconds for sensor { _hassSensorConfig . EntityId } is invalid. Falling back to default value of { HomeAssistantSensorConfig . POLLING_INTERVAL_DEFAULT } .") ;
3132 _hassSensorConfig . PollingInterval = HomeAssistantSensorConfig . POLLING_INTERVAL_DEFAULT ;
3233 }
34+
35+ _httpClient = new HttpClient ( ) ;
36+ _httpClient . DefaultRequestHeaders . Add ( "Authorization" , "Bearer " + _hassConfig . HomeAssistantAuthToken ) ;
37+ _httpClient . BaseAddress = new System . Uri ( _hassConfig . HomeAssistantURL ) ;
3338 }
3439
3540 public string Name { get ; }
@@ -68,7 +73,7 @@ private class HassEntityAttributes
6873 /// <summary>
6974 /// HomeAssistant REST API Response structure
7075 /// </summary>
71- private class HassTemperatureSesnorResponse
76+ private class HassTemperatureSensorResponse
7277 {
7378 public float state { get ; set ; }
7479 public string entity_id { get ; set ; }
@@ -117,19 +122,14 @@ private async void _poll_data()
117122 }
118123 */
119124
120- // get the state from the REST API
121- var client = new RestClient ( _hassConfig . HomeAssistantURL ) ;
122- client . AddDefaultHeader ( "Authorization" , "Bearer " + _hassConfig . HomeAssistantAuthToken ) ;
123- var request = new RestRequest ( "api/states/{EntityId}" , Method . Get ) ;
124- request . AddUrlSegment ( "EntityId" , Id ) ;
125- var response = await client . ExecuteAsync ( request ) ;
125+ HttpResponseMessage response = await _httpClient . GetAsync ( $ "api/states/{ Id } ") ;
126126 var resp_code = ( int ) response . StatusCode ;
127127
128128 // Handle response based on code.
129129 if ( resp_code == 200 )
130130 {
131- string rawResponse = response . Content ;
132- HassTemperatureSesnorResponse sensorData = JsonConvert . DeserializeObject < HassTemperatureSesnorResponse > ( rawResponse ) ;
131+ string rawResponse = await response . Content . ReadAsStringAsync ( ) ;
132+ HassTemperatureSensorResponse sensorData = JsonConvert . DeserializeObject < HassTemperatureSensorResponse > ( rawResponse ) ;
133133 Value = sensorData . state ;
134134 }
135135 else
@@ -141,7 +141,7 @@ private async void _poll_data()
141141 catch ( System . Exception e )
142142 {
143143 _logger . Log ( HomeAssistantPlugin . LOG_PREFIX + $ "Error polling state of { Id } -> { e . Message } ") ;
144- _logger . Log ( HomeAssistantPlugin . LOG_PREFIX + e . StackTrace ) ;
144+ _logger . Log ( HomeAssistantPlugin . LOG_PREFIX + e . ToString ( ) ) ;
145145 }
146146
147147 }
0 commit comments