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