Ejemplo n.º 1
0
        public static void Start()
        {
            IConfigurationRoot configuration;
            IWebHost           webHost;
            string             strMQTTUser, strMQTTPassword, strMQTTBroker;
            string             strQueUser, strQuePassword, strQueSerial;
            int  iPollInterval;
            bool bPerZoneControls;

            Logging.WriteDebugLog("Service.Start()");

            // Load Configuration
            try
            {
                configuration = new ConfigurationBuilder().AddJsonFile(_strConfigFile, false, true).Build();
            }
            catch (Exception eException)
            {
                Logging.WriteDebugLogError("Service.Start()", eException, "Unable to build configuration instance.");
                return;
            }

            Configuration.GetOptionalConfiguration(configuration, "MQTTUser", out strMQTTUser);
            Configuration.GetPrivateOptionalConfiguration(configuration, "MQTTPassword", out strMQTTPassword);
            if (!Configuration.GetConfiguration(configuration, "MQTTBroker", out strMQTTBroker))
            {
                return;
            }

            if (!Configuration.GetConfiguration(configuration, "PerZoneControls", out bPerZoneControls))
            {
                return;
            }

            if (!Configuration.GetConfiguration(configuration, "PollInterval", out iPollInterval) || iPollInterval < 10 || iPollInterval > 300)
            {
                Logging.WriteDebugLog("Service.Start() Poll interval must be between 10 and 300 (inclusive)");
                return;
            }

            if (!Configuration.GetConfiguration(configuration, "QueUser", out strQueUser))
            {
                return;
            }
            if (!Configuration.GetPrivateConfiguration(configuration, "QuePassword", out strQuePassword))
            {
                return;
            }
            Configuration.GetOptionalConfiguration(configuration, "QueSerial", out strQueSerial);

            MQTT.StartMQTT(strMQTTBroker, _strServiceName, strMQTTUser, strMQTTPassword, MQTTProcessor);

            Que.Initialise(strQueUser, strQuePassword, strQueSerial, iPollInterval, bPerZoneControls, _eventStop);

            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.º 2
0
        public static void Start()
        {
            IConfigurationRoot configuration;
            IHost  webHost;
            string strMQTTUser, strMQTTPassword, strMQTTBroker;
            string strQueUser, strQuePassword, strQueSerial, strSystemType;
            int    iPollInterval;
            bool   bPerZoneControls, bMQTTTLS;

            Logging.WriteDebugLog("Service.Start() Build Date: {0}", Properties.Resources.BuildDate);

            // Load Configuration
            try
            {
                configuration = new ConfigurationBuilder().AddJsonFile(_strConfigFile, false, true).Build();
            }
            catch (Exception eException)
            {
                Logging.WriteDebugLogError("Service.Start()", eException, "Unable to build configuration instance.");
                return;
            }

            Configuration.GetOptionalConfiguration(configuration, "MQTTUser", out strMQTTUser);
            Configuration.GetPrivateOptionalConfiguration(configuration, "MQTTPassword", out strMQTTPassword);
            if (!Configuration.GetConfiguration(configuration, "MQTTBroker", out strMQTTBroker))
            {
                return;
            }
            Configuration.GetOptionalConfiguration(configuration, "MQTTTLS", out bMQTTTLS);

            if (!Configuration.GetConfiguration(configuration, "PerZoneControls", out bPerZoneControls))
            {
                return;
            }

            if (!Configuration.GetConfiguration(configuration, "PollInterval", out iPollInterval) || iPollInterval < 10 || iPollInterval > 300)
            {
                Logging.WriteDebugLog("Service.Start() Poll interval must be between 10 and 300 (inclusive)");
                return;
            }

            if (!Configuration.GetConfiguration(configuration, "QueUser", out strQueUser))
            {
                return;
            }
            if (!Configuration.GetPrivateConfiguration(configuration, "QuePassword", out strQuePassword))
            {
                return;
            }
            Configuration.GetOptionalConfiguration(configuration, "QueSerial", out strQueSerial);

            Configuration.GetOptionalConfiguration(configuration, "SystemType", out strSystemType);
            if (strSystemType == "")
            {
                Logging.WriteDebugLog("Service.Start() System Type not specified, defaulting to que.");
                strSystemType = "que";
            }
            else
            {
                strSystemType = strSystemType.ToLower().Trim();
                if (strSystemType != "que" && strSystemType != "neo")
                {
                    Logging.WriteDebugLog("Service.Start() System Type must be que or neo.");
                    return;
                }
            }

            MQTT.StartMQTT(strMQTTBroker, bMQTTTLS, _strServiceName, strMQTTUser, strMQTTPassword, MQTTProcessor);

            Que.Initialise(strQueUser, strQuePassword, strQueSerial, strSystemType, iPollInterval, bPerZoneControls, _eventStop);

            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();
        }