public static void Start() { IConfigurationRoot configuration; IHost webHost; bool bMQTTTLS; Logging.WriteDebugLog("Service.Start() Build Date: {0}", Properties.Resources.BuildDate); try { configuration = new ConfigurationBuilder().AddJsonFile(_strConfigFile, false, true).Build(); } catch (Exception eException) { Logging.WriteDebugLogError("Service.Start()", eException, "Unable to build configuration instance."); return; } bool.TryParse(configuration["RegisterZoneTemperatures"] ?? "false", out _bRegisterZoneTemperatures); bool.TryParse(configuration["ForwardToOriginalWebService"] ?? "false", out _bForwardToOriginalWebService); bool.TryParse(configuration["MQTTTLS"] ?? "false", out bMQTTTLS); Logging.WriteDebugLog("Service.Start() RegisterZoneTemperatures: {0}", _bRegisterZoneTemperatures); Logging.WriteDebugLog("Service.Start() ForwardToOriginalWebService: {0}", _bForwardToOriginalWebService); Logging.WriteDebugLog("Service.Start() MQTT TLS: {0}", bMQTTTLS); MQTT.StartMQTT(configuration["MQTTBroker"] ?? "core-mosquitto", bMQTTTLS, _strServiceName, configuration["MQTTUser"] ?? "", configuration["MQTTPassword"] ?? "", MQTTProcessor); AirConditioner.Configure(configuration); MQTTRegister(); try { webHost = Host.CreateDefaultBuilder().ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup <ASPNETCoreStartup>().UseConfiguration(configuration).UseUrls($"http://*:80/"); }).Build(); } catch (Exception eException) { Logging.WriteDebugLogError("Service.Start()", eException, "Unable to build Kestrel instance."); return; } webHost.Run(); }
public static void Start() { IConfigurationRoot configuration; IWebHost webHost; Logging.WriteDebugLog("Service.Start()"); try { configuration = new ConfigurationBuilder().AddJsonFile(_strConfigFile, false, true).Build(); } catch (Exception eException) { Logging.WriteDebugLogError("Service.Start()", eException, "Unable to build configuration instance."); return; } bool.TryParse(configuration["RegisterZoneTemperatures"] ?? "false", out _bRegisterZoneTemperatures); Logging.WriteDebugLog("Service.Start() RegisterZoneTemperatures: {0}", _bRegisterZoneTemperatures); MQTT.StartMQTT(configuration["MQTTBroker"] ?? "core-mosquitto", _strServiceName, configuration["MQTTUser"] ?? "", configuration["MQTTPassword"] ?? "", MQTTProcessor); AirConditioner.Configure(configuration); MQTTRegister(); try { webHost = new WebHostBuilder().UseKestrel().UseStartup <ASPNETCoreStartup>().UseConfiguration(configuration).UseUrls($"http://*:80/").Build(); } catch (Exception eException) { Logging.WriteDebugLogError("Service.Start()", eException, "Unable to build Kestrel instance."); return; } webHost.Run(); }
private static void MQTTProcessor(string strTopic, string strPayload) { long lRequestId = 0; double dblTemperature = 0; Logging.WriteDebugLog("Service.MQTTProcessor() {0}", strTopic); switch (strTopic) { case "actron/aircon/zone1/set": AirConditioner.ChangeZone(lRequestId, 1, strPayload == "ON" ? true : false); break; case "actron/aircon/zone2/set": AirConditioner.ChangeZone(lRequestId, 2, strPayload == "ON" ? true : false); break; case "actron/aircon/zone3/set": AirConditioner.ChangeZone(lRequestId, 3, strPayload == "ON" ? true : false); break; case "actron/aircon/zone4/set": AirConditioner.ChangeZone(lRequestId, 4, strPayload == "ON" ? true : false); break; case "actron/aircon/zone5/set": AirConditioner.ChangeZone(lRequestId, 5, strPayload == "ON" ? true : false); break; case "actron/aircon/zone6/set": AirConditioner.ChangeZone(lRequestId, 6, strPayload == "ON" ? true : false); break; case "actron/aircon/zone7/set": AirConditioner.ChangeZone(lRequestId, 7, strPayload == "ON" ? true : false); break; case "actron/aircon/zone8/set": AirConditioner.ChangeZone(lRequestId, 8, strPayload == "ON" ? true : false); break; case "actron/aircon/mode/set": Logging.WriteDebugLog("ServiceCore.MQTTProcessor() {0}: {1}", strTopic, strPayload); switch (strPayload) { case "off": AirConditioner.ChangeMode(lRequestId, AirConditionerMode.None); break; case "auto": AirConditioner.ChangeMode(lRequestId, AirConditionerMode.Automatic); break; case "cool": AirConditioner.ChangeMode(lRequestId, AirConditionerMode.Cooling); break; case "heat": AirConditioner.ChangeMode(lRequestId, AirConditionerMode.Heating); break; case "fan_only": AirConditioner.ChangeMode(lRequestId, AirConditionerMode.FanOnly); break; } break; case "actron/aircon/fan/set": Logging.WriteDebugLog("Service.MQTTProcessor() {0}: {1}", strTopic, strPayload); switch (strPayload) { case "low": AirConditioner.ChangeFanSpeed(lRequestId, FanSpeed.Low); break; case "medium": AirConditioner.ChangeFanSpeed(lRequestId, FanSpeed.Medium); break; case "high": AirConditioner.ChangeFanSpeed(lRequestId, FanSpeed.High); break; } break; case "actron/aircon/temperature/set": Logging.WriteDebugLog("Service.MQTTProcessor() {0}: {1}", strTopic, strPayload); if (double.TryParse(strPayload, out dblTemperature)) { AirConditioner.ChangeTemperature(lRequestId, dblTemperature); } break; } }