private static void SendMinerStatus(bool sendDeviceNames) { var devices = AvailableDevices.Devices; var rigStatus = ApplicationStateManager.CalcRigStatusString(); var paramList = new List <JToken> { rigStatus }; var deviceList = new JArray(); foreach (var device in devices) { try { var array = new JArray { sendDeviceNames?device.Name : "", device.B64Uuid // TODO }; var status = DeviceReportStatus(device.DeviceType, device.State); array.Add(status); array.Add((int)Math.Round(device.Load)); var speedsJson = new JArray(); var speeds = MiningStats.GetSpeedForDevice(device.Uuid); if (speeds != null && device.State == DeviceState.Mining) { foreach (var kvp in speeds) { speedsJson.Add(new JArray((int)kvp.type, kvp.speed)); } } array.Add(speedsJson); // Hardware monitoring array.Add((int)Math.Round(device.Temp)); array.Add(device.FanSpeed); array.Add((int)Math.Round(device.PowerUsage)); // Power mode array.Add((int)device.TDPSimple); // Intensity mode array.Add(0); deviceList.Add(array); } catch (Exception e) { NHM.Common.Logger.Error("SOCKET", e.Message); } } paramList.Add(deviceList); var data = new MinerStatusMessage { param = paramList }; var sendData = JsonConvert.SerializeObject(data); // This function is run every minute and sends data every run which has two auxiliary effects // Keeps connection alive and attempts reconnection if internet was dropped _socket?.SendData(sendData); }
private static string CreateMinerStatusMessage(bool sendDeviceNames = false) { var devices = AvailableDevices.Devices; var rigStatus = ApplicationStateManager.CalcRigStatusString(); var paramList = new List <JToken> { rigStatus }; var deviceList = new JArray(); foreach (var device in devices) { try { var array = new JArray { sendDeviceNames?device.Name : "", device.B64Uuid // TODO }; var status = DeviceReportStatus(device.DeviceType, device.State); array.Add(status); array.Add((int)Math.Round(device.Load)); var speedsJson = new JArray(); var speeds = MiningStats.GetSpeedForDevice(device.Uuid); if (speeds != null && device.State == DeviceState.Mining) { foreach (var kvp in speeds) { speedsJson.Add(new JArray((int)kvp.type, kvp.speed)); } } array.Add(speedsJson); // Hardware monitoring array.Add((int)Math.Round(device.Temp)); array.Add(device.FanSpeed); array.Add((int)Math.Round(device.PowerUsage)); // Power mode array.Add((int)device.TDPSimple); // Intensity mode array.Add(0); deviceList.Add(array); } catch (Exception e) { NHLog.Error("NHWebSocket", e.Message); } } paramList.Add(deviceList); var data = new MinerStatusMessage { param = paramList }; var sendData = JsonConvert.SerializeObject(data); return(sendData); }