Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
 public async Task <string> WireData(string deviceId)
 {
     return(await _oneWire.GetDeviceData(deviceId));
 }