public async Task <TemperatureSensorData> GetValue(object inputDescriptor) { var input = DescriptorHelper.CastHardwareDescriptorOrThrow <InputDescriptor>(inputDescriptor); if (SupportedDevicesPrefix.Any(input.DeviceId.StartsWith)) { var rawData = await _oneWire.GetDeviceData(input.DeviceId); var indexOfTemp = rawData.IndexOf("t=", StringComparison.Ordinal) + 2; if (indexOfTemp > 2) { var result = new TemperatureSensorData { CrcOk = rawData.Contains("YES") && !rawData.Contains("00 00 00 00 00 00 00 00 00") }; if (int.TryParse(rawData.Substring(indexOfTemp, rawData.Length - (indexOfTemp + 1)), out int temp)) { result.Value = temp / 1000d; } return(result); } else { Logger.Warning("No data."); } } else { Logger.Warning("Unsupported device."); } return(new TemperatureSensorData()); }
public async Task <string> WireData(string deviceId) { return(await _oneWire.GetDeviceData(deviceId)); }