コード例 #1
0
ファイル: MqttConnect.cs プロジェクト: twilingway/informer
        public async Task RunAsync(GlobalVars globalVars, ApiResponse apiResponse, CommandProcesser commandProcesser)
        {
            if (globalVars.mqttIsConnect == false)
            {
                try
                {
                    var options = new MqttClientOptionsBuilder()

                                  .WithClientId(apiResponse.Params.Token)
                                  .WithTcpServer("allminer.ru", 1883)
                                  .WithKeepAlivePeriod(TimeSpan.FromSeconds(90))
                                  .WithCredentials(apiResponse.Params.Token, apiResponse.Params.Token)
                                  //.WithTls()
                                  .WithCleanSession(true)
                                  .Build();

                    globalVars.client = globalVars.factory.CreateMqttClient();

                    // Create TCP based options using the builder.
                    globalVars.client.ApplicationMessageReceived += (s, e) =>
                    {
                        Debug.WriteLine("### RECEIVED APPLICATION MESSAGE ###");
                        Debug.WriteLine($"+ Topic = {e.ApplicationMessage.Topic}");
                        Debug.WriteLine($"+ Payload = {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");
                        Debug.WriteLine($"+ QoS = {e.ApplicationMessage.QualityOfServiceLevel}");
                        Debug.WriteLine($"+ Retain = {e.ApplicationMessage.Retain}");

                        commandProcesser.onMessage(Encoding.UTF8.GetString(e.ApplicationMessage.Payload), e.ApplicationMessage.Topic);
                    };

                    globalVars.client.Connected += async(s, e) =>
                    {
                        try
                        {
                            await globalVars.client.SubscribeAsync(new TopicFilterBuilder().
                                                                   WithTopic("devices/" + apiResponse.Params.Token + "/commands").
                                                                   Build());
                        }
                        catch (Exception ex)
                        {
                            Debug.WriteLine("client.SubscribeAsync: " + ex);
                        }
                    };

                    globalVars.client.Disconnected += async(s, e) =>
                    {
                        Debug.WriteLine("### DISCONNECTED FROM SERVER ###");
                        globalVars.mqttIsConnect = false;
                        await Task.Delay(TimeSpan.FromSeconds(5));
                    };

                    try
                    {
                        await globalVars.client.ConnectAsync(options);

                        globalVars.mqttIsConnect = true;
                        globalVars.firsrun       = false;
                        // globalVars._manager.WritePrivateString("main", "token", globalVars.token);
                        var message = new MqttApplicationMessageBuilder()
                                      .WithTopic("devices/" + apiResponse.Params.Token + "/init")
                                      .WithPayload("1")
                                      .WithAtMostOnceQoS()
                                      .WithRetainFlag()
                                      .Build();

                        await globalVars.client.PublishAsync(message);
                    }
                    catch (MQTTnet.Adapter.MqttConnectingFailedException ex)
                    {
                        Debug.WriteLine("### MqttConnectingFailedException ###" + Environment.NewLine + ex);
                        globalVars.mqttIsConnect = false;
                        globalVars.firsrun       = false;
                    }
                    catch (Exception exception)
                    {
                        Debug.WriteLine("### CONNECTING FAILED ###" + Environment.NewLine + exception);
                        globalVars.mqttIsConnect = false;
                        globalVars.firsrun       = false;
                    }
                }
                catch (Exception exception)
                {
                    Debug.WriteLine("### EXCEPTION ###" + exception);
                }
            }
        }
コード例 #2
0
        public MainForm()
        {
            InitializeComponent();
            globalVars = new GlobalVars();
            PC         = new Computer();

            // PC.CPUEnabled = true;
            PC.GPUEnabled = true;
            PC.Open();

            _log        = new LogFile("log");
            _error      = new LogFile("error");
            _http       = new Http();
            apiResponse = new ApiResponse();

            KillDublicateProcess("Informer");
            KillDublicateProcess("Launcher_informer");

            apiResponse.Params = new Params
            {
                Timers      = new Timers(),
                Reboots     = new Reboots(),
                Data_ranges = new Data_ranges(),
                Version     = "1.3.9"
            };

            СheckForNewVersion();
            response = apiResponse.Load();

            //костыли
            apiResponse = response;
            //


            bool start = false;

            if (!string.IsNullOrEmpty(response.Params.Token))
            {
                start = true;
                tbRigName.ReadOnly = true;
                tbToken.ReadOnly   = true;
                tbRigName.Text     = response.Params.Name;
                tbToken.Text       = response.Params.Token;
            }

            else
            {
                start = false;
                tbRigName.ReadOnly = true;
            }

            if (start)
            {
                NextAutoStart.Interval = globalVars.autostart * 1000;
                NextAutoStart.Enabled  = true;
                AutoStartTimer.Enabled = true;
                TimeWorkTimer.Enabled  = true;
            }

            commandProcesser = new CommandProcesser(response);
            mqttConnect      = new MqttConnect();

            _monitoringSystem = new OHMMonitoringSystem();
            var tempMin = _monitoringSystem.BuildTrigger(new MultiplyHardwareRangeSensor("GPU Core", SensorType.Temperature, MultiplyHardwareRangeSensor.Predicate.Min),
                                                         new RebootTriggerAction("Temp Min, Reboot!", "reboot_t_min.bat", "token", "rigName", globalVars.host), 300);
            var tempMax = _monitoringSystem.BuildTrigger(new MultiplyHardwareRangeSensor("GPU Core", SensorType.Temperature, MultiplyHardwareRangeSensor.Predicate.Max),
                                                         new RebootTriggerAction("Temp Max, Reboot!", "reboot_t_max.bat", "token", "rigName", globalVars.host), 300);

            var memoryMin = _monitoringSystem.BuildTrigger(new MultiplyHardwareRangeSensor("GPU Memory", SensorType.Clock, MultiplyHardwareRangeSensor.Predicate.Min),
                                                           new RebootTriggerAction("Memory Min, Reboot!", "reboot_mem_min.bat", "token", "rigName", globalVars.host), 300);
            var memoryMax = _monitoringSystem.BuildTrigger(new MultiplyHardwareRangeSensor("GPU Memory", SensorType.Clock, MultiplyHardwareRangeSensor.Predicate.Max),
                                                           new RebootTriggerAction("Memory Max, Reboot!", "reboot_mem_max.bat", "token", "rigName", globalVars.host), 300);

            var loadMin = _monitoringSystem.BuildTrigger(new MultiplyHardwareRangeSensor("GPU Core", SensorType.Load, MultiplyHardwareRangeSensor.Predicate.Min),
                                                         new RebootTriggerAction("Load Min, Reboot!", "reboot_load_min.bat", "token", "rigName", globalVars.host), 300);
            var loadMax = _monitoringSystem.BuildTrigger(new MultiplyHardwareRangeSensor("GPU Core", SensorType.Load, MultiplyHardwareRangeSensor.Predicate.Max),
                                                         new RebootTriggerAction("Load Max, Reboot!", "reboot_load_max.bat", "token", "rigName", globalVars.host), 300);

            var fanMin = _monitoringSystem.BuildTrigger(new MultiplyHardwareRangeSensor("GPU Fan", SensorType.Control, MultiplyHardwareRangeSensor.Predicate.Min),
                                                        new RebootTriggerAction("Fan Min, Reboot!", "reboot_fan_min.bat", "token", "rigName", globalVars.host), 300);
            var fanMax = _monitoringSystem.BuildTrigger(new MultiplyHardwareRangeSensor("GPU Fan", SensorType.Control, MultiplyHardwareRangeSensor.Predicate.Max),
                                                        new RebootTriggerAction("Fan Max, Reboot!", "reboot_fan_max.bat", "token", "rigName", globalVars.host), 300);

            var clockMin = _monitoringSystem.BuildTrigger(new MultiplyHardwareRangeSensor("GPU Core", SensorType.Clock, MultiplyHardwareRangeSensor.Predicate.Min),
                                                          new RebootTriggerAction("Clock Min, Reboot!", "reboot_clock_min.bat", "token", "rigName", globalVars.host), 300);
            var clockMax = _monitoringSystem.BuildTrigger(new MultiplyHardwareRangeSensor("GPU Core", SensorType.Clock, MultiplyHardwareRangeSensor.Predicate.Max),
                                                          new RebootTriggerAction("Clock Max, Reboot!", "reboot_clock_max.bat", "token", "rigName", globalVars.host), 300);



            var tempMinOnForm   = new TriggerOnForm(labelTempMin, tempMin, labelStatusTempMin, labelCounterTempMin);
            var tempMaxOnForm   = new TriggerOnForm(labelTempMax, tempMax, labelStatusTempMax, labelCounterTempMax);
            var memoryMinOnForm = new TriggerOnForm(labelMemoryMin, memoryMin, labelStatusMemoryMin, labelCounterMemoryMin);
            var memoryMaxOnForm = new TriggerOnForm(labelMemoryMax, memoryMax, labelStatusMemoryMax, labelCounterMemoryMax);
            var loadMinOnForm   = new TriggerOnForm(labelLoadMin, loadMin, labelStatusLoadMin, labelCounterLoadMin);
            var loadMaxOnForm   = new TriggerOnForm(labelLoadMax, loadMax, labelStatusLoadMax, labelCounterLoadMax);
            var fanMinOnForm    = new TriggerOnForm(labelFanMin, fanMin, labelStatusFanMin, labelCounterFanMin);
            var fanMaxOnForm    = new TriggerOnForm(labelFanMax, fanMax, labelStatusFanMax, labelCounterFanMax);
            var clockMinOnForm  = new TriggerOnForm(labelClockMin, clockMin, labelStatusClockMin, labelCounterClockMin);
            var clockMaxOnForm  = new TriggerOnForm(labelClockMax, clockMax, labelStatusClockMax, labelCounterClockMax);


            _triggersOnForm.Add(tempMinOnForm);
            _triggersOnForm.Add(tempMaxOnForm);
            _triggersOnForm.Add(memoryMinOnForm);
            _triggersOnForm.Add(memoryMaxOnForm);
            //вместо lost inet и lost gpu
            _triggersOnForm.Add(memoryMinOnForm);
            _triggersOnForm.Add(memoryMaxOnForm);
            //
            _triggersOnForm.Add(loadMinOnForm);
            _triggersOnForm.Add(loadMaxOnForm);
            _triggersOnForm.Add(fanMinOnForm);
            _triggersOnForm.Add(fanMaxOnForm);
            _triggersOnForm.Add(clockMinOnForm);
            _triggersOnForm.Add(clockMaxOnForm);


            //LabelOnForm tempMinLabel, tempMaxLabel, fanMinLabel, fanMaxLabel, loadMinLabel, loadMaxLabel,
            //               clockMinLabel, clockMaxLabel, memoryMinLabel, memoryMaxLabel;
            //Sensor tempMin, tempMax, fanMin, fanMax, loadMin, loadMax, clockMin, clockMax, memoryMin, memoryMax, internetOff;

            //tempMinLabel = new LabelOnForm(labelStatusTempMin, labelCounterTempMin, response, "Temp Min, Reboot!", "reboot_t_min.bat", reboot);
            //tempMaxLabel = new LabelOnForm(labelStatusTempMax, labelCounterTempMax, response, "Temp Max, Reboot!", "reboot_t_max.bat", reboot);
            //fanMinLabel = new LabelOnForm(labelStatusFanMin, labelCounterFanMin, response, "Fan Min, Reboot!", "reboot_fan_min.bat", reboot);
            //fanMaxLabel = new LabelOnForm(labelStatusFanMax, labelCounterFanMax, response, "Fan Max, Reboot!", "reboot_fan_max.bat", reboot);
            //loadMinLabel = new LabelOnForm(labelStatusLoadMin, labelCounterLoadMin, response, "Load Min, Reboot!", "reboot_load_min.bat", reboot);
            //loadMaxLabel = new LabelOnForm(labelStatusLoadMax, labelCounterLoadMax, response, "Load Max, Reboot!", "reboot_load_max.bat", reboot);
            //clockMinLabel = new LabelOnForm(labelStatusClockMin, labelCounterClockMin, response, "Clock Min, Reboot!", "reboot_clock_min.bat", reboot);
            //clockMaxLabel = new LabelOnForm(labelStatusClockMax, labelCounterClockMax, response, "Clock Max, Reboot!", "reboot_clock_max.bat", reboot);
            //memoryMinLabel = new LabelOnForm(labelStatusMemoryMin, labelCounterMemoryMin, response, "Memory Min, Reboot!", "reboot_mem_min.bat", reboot);
            //memoryMaxLabel = new LabelOnForm(labelStatusMemoryMax, labelCounterMemoryMax, response, "Memory Max, Reboot!", "reboot_memory_max.bat", reboot);
            //NotInternetLabel = new LabelOnForm(labelStatusInternet, labelCounterInternet, response, "Dont Have Internet", "reboot_internet.bat", reboot);

            //tempMin = new Sensor(tempMinLabel, Sensor.Predicate.Min, "GPU Core", SensorType.Temperature);
            //tempMax = new Sensor(tempMaxLabel, Sensor.Predicate.Max, "GPU Core", SensorType.Temperature);
            //fanMin = new Sensor(fanMinLabel, Sensor.Predicate.Min, "GPU Fan", SensorType.Control);
            //fanMax = new Sensor(fanMaxLabel, Sensor.Predicate.Max, "GPU Fan",SensorType.Control);
            //loadMin = new Sensor(loadMinLabel, Sensor.Predicate.Min, "GPU Core", SensorType.Load);
            //loadMax = new Sensor(loadMaxLabel, Sensor.Predicate.Max, "GPU Core", SensorType.Load);
            //clockMin = new Sensor(clockMinLabel,Sensor.Predicate.Min, "GPU Core",SensorType.Clock);
            //clockMax = new Sensor(clockMaxLabel,Sensor.Predicate.Max, "GPU Core",SensorType.Clock);
            //memoryMin = new Sensor(memoryMinLabel,Sensor.Predicate.Min,"GPU Memory",SensorType.Clock);
            //memoryMax = new Sensor(memoryMaxLabel,Sensor.Predicate.Max,"GPU Memory",SensorType.Clock);

            //dangers = new Sensor[] {
            //    tempMin, tempMax, fanMin, fanMax, loadMin,loadMax,
            //    clockMin,clockMax, memoryMin, memoryMax
            //};
        }