Example #1
0
		public MaxStateAnalyzer(IMaxConnector maxConnector, MaxMerger maxMerger)
		{
			_maxMerger = maxMerger;

			maxConnector.Connected += (sender, args) => _maxCube = new MaxCube();
			maxConnector.MessageReceived += MaxConnector_MessageReceived;
		}
Example #2
0
		public void Merge(MaxCube maxCube, object message)
		{
			var lMessages = message as LMessages;
			if (lMessages == null)
				return;

			foreach (var lMessage in lMessages.Messages)
			{
				var maxDevice = maxCube.Rooms.SelectMany(room => room.Devices).FirstOrDefault(device => device.RfAddress == lMessage.RfAddress);
				if (maxDevice != null)
				{
					if (lMessage.DeviceType == MaxDeviceType.HeatingThermostat)
					{
						var lMessageHeatingThermostat = lMessage as LMessageHeatingThermostat;
						if (lMessageHeatingThermostat == null)
							continue;

						maxDevice.SetPointTemperature = lMessageHeatingThermostat.SetPointTemperature;
						maxDevice.RoomControlMode = lMessageHeatingThermostat.RoomControlMode;
						maxDevice.State = new DeviceState
						{
							BatteryLow = lMessageHeatingThermostat.IsBatteryLow,
							TransmitError = lMessageHeatingThermostat.IsTransmitError
						};
					}
				}
			}
		}
Example #3
0
		public void Merge(MaxCube maxCube, object message)
		{
			var messageParser = _messageMergers.FirstOrDefault(merger => merger.Accept(message));
			messageParser?.Merge(maxCube, message);
		}