public HueBulbDevice(Q42.HueApi.HueClient client, Q42.HueApi.Light light, string bridgeSerialNumber) : base(light.Name,
                                                                                                             light.ManufacturerName, light.ModelId, light.SoftwareVersion, light.UniqueId, light.Type)
 {
     Light = light;
     BridgeSerialNumber          = bridgeSerialNumber;
     base.LightingServiceHandler = new HueLightingServiceHandler(client, light);
     Icon = new AdapterIcon(new HueLampInfo(light).IconUri);
 }
示例#2
0
        public HueBridgeDevice(Q42.HueApi.HueClient client, HueBridgeDescription desc, Adapter bridge) : base("PhilipsHue",
                                                                                                              desc.Manufacturer, desc.ModelName, "", desc.SerialNumber, $"{desc.FriendlyName}\n{desc.ModelDescription} ({desc.ModelNumber})")
        {
            _client      = client;
            _description = desc;
            _bridge      = bridge;

            _enableJoinMethod = new AdapterMethod("Link", "Puts the adapter into join mode", 0);
            _enableJoinMethod.InvokeAction = Link;
            _enableJoinMethod.OutputParams.Add(new AdapterValue("Result", "")
            {
                Data = ""
            });
            Methods.Add(_enableJoinMethod);


            //var UpdateMethod = new AdapterMethod("Update", "Looks for any removed or added lights", 0);
            //UpdateMethod.InvokeAction = UpdateDeviceList;
            //Methods.Add(UpdateMethod);

            //Check if bridge is already linked and registered
            bool isLinked  = false;
            var  container = ApplicationData.Current.LocalSettings.CreateContainer("RegisteredHueBridges", ApplicationDataCreateDisposition.Always);

            if (container.Values.ContainsKey(desc.SerialNumber))
            {
                var key = container.Values[desc.SerialNumber] as string;
                if (key != null)
                {
                    (client as Q42.HueApi.LocalHueClient)?.Initialize(key);
                    isLinked = true;
                    UpdateDeviceList();
                }
            }

            _isLinkedProperty = new AdapterProperty("Link", "com.dotMorten.PhilipsHueDSB.PhilipsHue");
            _isLinkedProperty.Attributes.Add(new AdapterAttribute("IsLinked", isLinked, E_ACCESS_TYPE.ACCESS_READ)
            {
                COVBehavior = SignalBehavior.Always
            });
            this.Properties.Add(_isLinkedProperty);

            if (desc.ModelName.EndsWith(" 2012")) //V1 bridge
            {
                Icon = new AdapterIcon("ms-appx:///AdapterLib/Icons/HueBridge1.png");
            }
            else if (desc.ModelName.EndsWith(" 2015")) //V2 bridge
            {
                Icon = new AdapterIcon("ms-appx:///AdapterLib/Icons/HueBridge2.png");
            }
            else //Fallback - use uri from descriptor
            {
                Icon = new AdapterIcon(desc.IconUri.OriginalString);
            }
            // change of value signal
            CreateSignals();
        }
        public HueBridgeDevice(Q42.HueApi.HueClient client, HueBridgeDescription desc, Adapter bridge) : base("PhilipsHue",
            desc.Manufacturer, desc.ModelName, "", desc.SerialNumber, $"{desc.FriendlyName}\n{desc.ModelDescription} ({desc.ModelNumber})")
        {
            _client = client;
            _description = desc;
            _bridge = bridge;

            _enableJoinMethod = new AdapterMethod("Link", "Puts the adapter into join mode", 0);
            _enableJoinMethod.InvokeAction = Link;
            _enableJoinMethod.OutputParams.Add(new AdapterValue("Result", "") { Data = "" });
            Methods.Add(_enableJoinMethod);

           
            //var UpdateMethod = new AdapterMethod("Update", "Looks for any removed or added lights", 0);
            //UpdateMethod.InvokeAction = UpdateDeviceList;
            //Methods.Add(UpdateMethod);

            //Check if bridge is already linked and registered
            bool isLinked = false;
            var container = ApplicationData.Current.LocalSettings.CreateContainer("RegisteredHueBridges", ApplicationDataCreateDisposition.Always);
            if(container.Values.ContainsKey(desc.SerialNumber))
            {
                var key = container.Values[desc.SerialNumber] as string;
                if (key != null)
                {
                    (client as Q42.HueApi.LocalHueClient)?.Initialize(key);
                    isLinked = true;
                    UpdateDeviceList();
                }
            }
            else
            {
                Link();
            }

            _isLinkedProperty = new AdapterProperty("Link", "com.dotMorten.PhilipsHueDSB.PhilipsHue");
            _isLinkedProperty.Attributes.Add(new AdapterAttribute("IsLinked", isLinked, E_ACCESS_TYPE.ACCESS_READ) { COVBehavior = SignalBehavior.Always });
            this.Properties.Add(_isLinkedProperty);


            //if (desc.IconUri != null)
            //    Icon = new AdapterIcon(desc.IconUri.OriginalString);
            Icon = new AdapterIcon("ms-appx:///AdapterLib/Icons/PhilipsHueIcon.png");

            // change of value signal
            CreateSignals();
        }