Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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;
            }
        }