コード例 #1
0
        public void SimpleConnectAnySerialPortTest()
        {
            network = new InsteonNetwork();
            var connected = network.TryConnect();

            Assert.IsTrue(connected);
            Assert.AreEqual(network.Connection.Address.Value, InsteonAddress.Parse(ConfigurationManager.AppSettings["plmIdentityTest"]).Value);
            network.Close();
        }
コード例 #2
0
        public void SimpleConnectKnownSerialPortTest()
        {
            InsteonConnection connection;

            Assert.IsTrue(InsteonConnection.TryParse(insteonSource, out connection));
            network = new InsteonNetwork();
            var connected = network.TryConnect(connection);

            Assert.IsTrue(connected);
            Assert.AreEqual(connection.Address.Value, InsteonAddress.Parse(ConfigurationManager.AppSettings["plmIdentityTest"]).Value);
            network.Close();
        }
コード例 #3
0
        private void LoadDevicesFromDatabase()
        {
            var dataManager = new InsteonDataManager(false);
            var devices     = dataManager.GetAllDevices();

            foreach (var device in devices)
            {
                var id = new InsteonIdentity(device.Category, device.SubCategory, device.Firmware);
                if (!id.IsEmpty)
                {
                    Network.Devices.Add(InsteonAddress.Parse(device.Address), id);
                }
            }
        }
コード例 #4
0
        public void Initalize()
        {
            Trace.TraceInformation("Connecting to Insteon...");

            this.insteonNetwork = new InsteonNetwork();
            this.insteonNetwork.Close();
            this.insteonNetwork.AutoAdd = true;
            this.insteonNetwork.Connect(new InsteonConnection(InsteonConnectionType.Serial, this.usbSerial));

            if (!this.insteonNetwork.IsConnected)
            {
                Trace.TraceError("Cannot connect to Insteon.");
            }

            this.insteonNetwork.Controller.DeviceLinked +=
                (o, d) =>
            {
                Trace.TraceInformation("DeviceLinked: {0}", d.Device.Address.ToString());
                this.insteonNetwork.Controller.CancelLinkMode();
            };

            this.insteonNetwork.Controller.DeviceLinkTimeout +=
                (o, d) =>
            {
                Trace.TraceWarning("DeviceLinkTimeout");
                this.insteonNetwork.Controller.CancelLinkMode();
            };

            this.insteonNetwork.Controller.DeviceUnlinked +=
                (o, d) =>
            {
                Trace.TraceInformation("DeviceUnlinked: {0}", d.Device.Address.ToString());
                this.insteonNetwork.Controller.CancelLinkMode();
            };

            //InsteonDeviceLinkRecord[] knownLinks;
            //this.insteonNetwork.Controller.TryGetLinks(out knownLinks);
            foreach (var device in this.settings.Devices)
            {
                var d = this.insteonNetwork.Devices.Add(InsteonAddress.Parse(device.ID), new InsteonIdentity());

                d.DeviceCommandTimeout +=
                    (o, data) =>
                {
                    Trace.TraceWarning("Device command timeout. Device: " + data.Device.Address);
                };

                d.DeviceIdentified +=
                    (o, data) =>
                {
                    Trace.TraceInformation("Device identified. Device: " + data.Device.Address);
                };

                d.DeviceStatusChanged +=
                    (o, data) =>
                {
                    Trace.TraceInformation("Device status changed. Device: " + data.Device.Address + ", Status: " + data.DeviceStatus);

                    foreach (var dev in this.settings.Devices)
                    {
                        if (data.Device.Address.Value == InsteonAddress.Parse(dev.ID).Value)
                        {
                            switch (data.DeviceStatus)
                            {
                            case InsteonDeviceStatus.Brighten:
                            case InsteonDeviceStatus.Dim:
                            case InsteonDeviceStatus.FastOn:
                            case InsteonDeviceStatus.On:
                                dev.State = "On";
                                dev.Level = 255;
                                break;

                            case InsteonDeviceStatus.FastOff:
                            case InsteonDeviceStatus.Off:
                                dev.State = "Off";
                                dev.Level = 0;
                                break;

                            default:
                                dev.State = "Unknown";
                                dev.Level = 0;
                                break;
                            }

                            break;
                        }
                    }
                };
                deviceList.Add(d);

                //d.Command(InsteonDeviceCommands.StatusRequest);
            }
            //if (this.insteonNetwork.Controller.TryGetLinks(out knownLinks))
            //{
            //    foreach (var link in knownLinks)
            //    {
            //        this.debugOutput.DebugInformation("Adding device id {0}", link.Address);

            //        var d = this.insteonNetwork.Devices.Add(link.Address, new InsteonIdentity());


            //        d.DeviceCommandTimeout +=
            //            (o, data) =>
            //            {
            //                this.debugOutput.DebugInformation("Device command timeout. Device: " + data.Device.Address);
            //            };
            //        d.DeviceIdentified +=
            //            (o, data) =>
            //            {
            //                this.debugOutput.DebugInformation("Device identified. Device: " + data.Device.Address);
            //            };
            //        d.DeviceStatusChanged +=
            //            (o, data) =>
            //            {
            //                this.debugOutput.DebugInformation("Device status changed. Device: " + data.Device.Address + ", Status: " + data.DeviceStatus);

            //                foreach (var de in this.settings.Devices)
            //                    if (GetInsteonDevice(de.ID) != null)
            //                    {
            //                        de.State = data.DeviceStatus == InsteonDeviceStatus.On ? "On" : "Off";
            //                        de.Level = (byte)(data.DeviceStatus == InsteonDeviceStatus.On ? 255 : 0);
            //                        break;
            //                    }
            //            };

            //        //d.Command(InsteonDeviceCommands.StatusRequest);
            //    }
            //}
            //else
            //{
            //    this.debugOutput.DebugError("Cannot get links");
            //}
        }
コード例 #5
0
 internal SmartLincInfo(string url, string address)
 {
     Uri            = new Uri(url);
     InsteonAddress = InsteonAddress.Parse(address);
 }