コード例 #1
0
        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);
        }
コード例 #2
0
        protected Task Handle(SerialResultEvent serialResultCommand)
        {
            var system = serialResultCommand.AsByte("System");
            var code   = serialResultCommand.AsUint("Code");

            return(MessageBroker.Publish(InfraredEvent.Create(Uid, system, code), Uid));
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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() });
            }
        }
コード例 #5
0
        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);
        }