private SerialResultEvent ReadData(Format[] registration, BinaryReader reader) { var result = new SerialResultEvent(); foreach (var format in registration.OrderBy(l => l.Lp)) { if (format.ValueType == typeof(byte)) { result.SetProperty(format.ValueName, reader.ReadByte()); } else if (format.ValueType == typeof(uint)) { result.SetProperty(format.ValueName, reader.ReadUInt32()); } else if (format.ValueType == typeof(float)) { result.SetProperty(format.ValueName, reader.ReadSingle()); } else { throw new ArgumentException($"Result of type {format.ValueType} is not supported"); } } return(result); }
protected Task Handle(SerialResultEvent serialResultCommand) { var system = serialResultCommand.AsByte("System"); var code = serialResultCommand.AsUint("Code"); return(MessageBroker.Publish(InfraredEvent.Create(Uid, system, code), Uid)); }
protected async Task Handle(SerialResultEvent serialResult) { var pin = serialResult.AsByte(MessageProperties.PinNumber); var humidity = serialResult.AsDouble(MessageProperties.Value); if (_state.ContainsKey(pin)) { var oldValue = _state[pin]; _state[pin] = await UpdateState(HumidityState.StateName, oldValue, humidity, new Dictionary <string, string>() { [MessageProperties.PinNumber] = pin.ToString() }).ConfigureAwait(false); } }
protected async Task Handle(SerialResultEvent serialResult) { var pin = serialResult.AsByte(MessageProperties.PinNumber); var temperature = serialResult.AsDouble(MessageProperties.Value); if (_state.ContainsKey(pin)) { var oldValue = _state[pin]; _state[pin] = await UpdateState(TemperatureState.StateName, oldValue, temperature, new Dictionary <string, string>() { [MessageProperties.PinNumber] = pin.ToString() }); } }
protected async Task Handle(SerialResultEvent serialResultCommand) { var code = serialResultCommand.AsUint("Code"); var dipswitchCode = DipswitchCode.ParseCode(code); if (dipswitchCode == null) { Logger.LogWarning($"Unrecognized command parsed from code {code}"); return; } await MessageBroker.Publish(DipswitchEvent.Create(Uid, dipswitchCode.Unit.ToString(), dipswitchCode.System.ToString(), dipswitchCode.Command.ToString()), Uid); }