private void OnMessage(InsteonMessage message) { if (message.Properties.ContainsKey(PropertyKey.FromAddress)) { int address = message.Properties[PropertyKey.FromAddress]; if (network.Devices.ContainsKey(address)) { Log.WriteLine("Device {0} received message {1}", InsteonAddress.Format(address), message.ToString()); InsteonDevice device = network.Devices.Find(address); device.OnMessage(message); } else if (message.MessageType == InsteonMessageType.SetButtonPressed) { // don't warn about SetButtonPressed message from unknown devices, because it may be from a device about to be added } else if (network.AutoAdd) { Log.WriteLine("Unknown device {0} received message {1}, adding device", InsteonAddress.Format(address), message.ToString()); InsteonDevice device = network.Devices.Add(new InsteonAddress(address), new InsteonIdentity()); device.OnMessage(message); } else { Log.WriteLine("WARNING: Unknown device {0} received message {1}", InsteonAddress.Format(address), message.ToString()); } } else { Log.WriteLine("Controller received message {0}", message.ToString()); network.Controller.OnMessage(message); } }