WikiElectronique

Wiki sur l'électronique et l'informatique

Outils pour utilisateurs

Outils du site


ampoules_connectees_-_philips_hue_et_osram_ligthify

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
ampoules_connectees_-_philips_hue_et_osram_ligthify [2016/11/12 00:24]
88.164.131.165 [Exemple application C#]
ampoules_connectees_-_philips_hue_et_osram_ligthify [2018/03/09 10:40]
88.164.131.165 [Philips HUE et OSRAM Lightify]
Ligne 1: Ligne 1:
 ====== Philips HUE et OSRAM Lightify ====== ====== Philips HUE et OSRAM Lightify ======
  
 +===== Comparatif =====
 +
 +=== Philips Hue === 
 +^ Avantages ​        ^ Inconvénients ​          ^
 +| Fiable ​  | Coût     |
 +| API   | forme de l'​ampoule |
 +| Les équipements associés (1)  |  |
 +
 +(1) Philips propose un super petit capteur de présence qui intégré plusieurs capteurs (Présence, lumière et température) et dont les valeurs peuvent être récupéré directement via l'API. Il est donc possible de se faire un système d'​alarme (Détection de présence) ou mesurer la température de chaque pièce.
 +
 +=== OSRAM Lightify === 
 +^ Avantages ​        ^ Inconvénients ​          ^
 +| Coût   | Installation laborieuse /  Bug d'​association avec l'​application Android ou IOS     |
 +| API   | Fiabilité / Une ampoule HS après 1 an d'​utilisation |
 +| Possibilité de mémoriser un réglage par défaut ​  (1)| |
 +
 +(1) Il est possible de programmer un réglage par défaut de chaque ampoule. Les ampoules sont souvent branchées sur des interrupteurs classiques. Donc dès qu'on appuie sur l'​interrupteur,​ l'​ampoule redémarre à 0 et l'​ancien état n'est pas mémoriser. L’intérêt de ce paramétrage c'est qu'on peut définir un réglage par défaut et définir une luminosité faible pour une chambre et ainsi éviter l'​éblouissement quand on se lève la nuit.
 ===== OSRAM Lightify ===== ===== OSRAM Lightify =====
  
Ligne 31: Ligne 48:
  
 La documentation de l'API : https://​eu.lightify-api.org/​ La documentation de l'API : https://​eu.lightify-api.org/​
 +Inspiré du code : https://​github.com/​patrick-dmxc/​OsramLightify/​blob/​master/​OsramLightify/​Osram/​Lightify/​OsramController.cs
 +Class pour le decodage JSON : http://​www.newtonsoft.com/​json
  
 === Récupération d'un ticket === === Récupération d'un ticket ===
Ligne 154: Ligne 173:
     }     }
 </​code>​ </​code>​
 +
 +=== Envoi de commandes à un équipement ===
 +Toutes les commandes doivent faire référence à un ID d'​équipement récupéré avec la liste des devices
 +
 +<code csharp |Class Devices>
 +        private void buttonTurnOff_Click(object sender, EventArgs e)
 +        {
 +            string result = OsramController.SenCommand(textBoxToken.Text,​ "​device/​set?​idx="​ + textBoxDeviceID.Text + "&​time="​ + numericUpDownTime.Value.ToString() + "&​onoff=0"​);​
 +        }
 +
 +        private void buttonTurnOn_Click(object sender, EventArgs e)
 +        {
 +            string result = OsramController.SenCommand(textBoxToken.Text,​ "​device/​set?​idx="​ + textBoxDeviceID.Text + "&​level="​ + (numericUpDownLevel.Value / 100).ToString().Replace(",",​ "​."​) + "&​time="​ + numericUpDownTime.Value.ToString() + "&​onoff=1"​);​
 +        }
 +
 +        private void buttonChangeColor_Click(object sender, EventArgs e)
 +        {
 +            string color = labelColor.Text.Replace("#",​ ""​);​
 +            string result = OsramController.SenCommand(textBoxToken.Text,​ "​device/​set?​idx="​ + textBoxDeviceID.Text + "&​time="​ + numericUpDownTime.Value.ToString() + "&​color="​+labelColor.Text.Replace("#",""​));​
 +        }
 +
 +        private void buttonChangeLevel_Click(object sender, EventArgs e)
 +        {
 +            string result = OsramController.SenCommand(textBoxToken.Text,​ "​device/​set?​idx="​ + textBoxDeviceID.Text + "&​level="​ + (numericUpDownLevel.Value / 100).ToString().Replace(",",​ "​."​) + "&​time="​ + numericUpDownTime.Value.ToString());​
 +        }
 +
 +        private void buttonChangeTemperature_Click(object sender, EventArgs e)
 +        {
 +            string result = OsramController.SenCommand(textBoxToken.Text,​ "​device/​set?​idx="​ + textBoxDeviceID.Text + "&​time="​ + numericUpDownTime.Value.ToString() + "&​ctemp="​+numericUpDownTemperature.Value.ToString());​
 +        ​
 +        }
 +</​code>​
 +
 +{{::​osram_lightify_csharp.jpg?​700|}}
 ===== Philips HUE ===== ===== Philips HUE =====
  
Ligne 170: Ligne 223:
 OSRAM a intégré cette possibilité sur sa gamme ligthify avec un simple message d'​avertissement indiquant qu'il n'est pas conseillé d'​avoir une luminosité inférieure à 20% OSRAM a intégré cette possibilité sur sa gamme ligthify avec un simple message d'​avertissement indiquant qu'il n'est pas conseillé d'​avoir une luminosité inférieure à 20%
  
 +=== Exemple application C# ===
 +
 +== Récupération de la liste des ampoules ==
 +<code code csharp |HueDevice>​
 +    public class HueDevice
 +    {
 +        public int deviceId { get; set; }
 +        public string deviceType { get; set; }
 +        public string name { get; set; }
 +        public bool online { get; set; }
 +        public int bri { get; set; }
 +        public string alert { get; set; }
 +        public bool reachable { get; set; }
 +        public string type { get; set; }
 +        public string modelid { get; set; }
 +        public string manufacturername { get; set; }
 +        public string uniqueid { get; set; }
 +        public string swversion { get; set; }
 +    }
 +</​code>​
 +<code csharp>
 +        public List<​HueDevice>​ GetDevicesList()
 +        {
 +           ​Devices = new List<​HueDevice>​();​
 +
 +            string url = @"​http://"​ + ip + "/​api/"​ + username + "/​lights";​
 +            var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);​
 +            httpWebRequest.Method = "​GET";​
 +            httpWebRequest.ContentType = "​application/​json";​
 +            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();​
 +            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
 +            {
 +                var result = streamReader.ReadToEnd();​
 +                dynamic response = JsonConvert.DeserializeObject(result);​
 +
 +                foreach (var item in response)
 +                {
 +                    string id = item.Name;
 +                    bool on = false;
 +                    int bri = 0;
 +                    string alert = "";​
 +                    bool reachable = false;
 +                    string type = "";​
 +                    string name = "";​
 +                    string modelid = "";​
 +                    string manufacturername = "";​
 +                    string uniqueid= "";​
 +                    string swversion= "";​
 +                    foreach (var parameters in item)
 +                    {
 +                        if (parameters.state != null)
 +                        {
 +                            if (parameters.state.on != null)
 +                                on = (bool)parameters.state.on;​
 +                            if (parameters.state.bri != null)
 +                                bri = (int)parameters.state.bri;​
 +                            if (parameters.state.none != null)
 +                                alert = (string)parameters.state.alert;​
 +                            if (parameters.state.reachable != null)
 +                                reachable = (bool)parameters.state.reachable;​
 +                        }
 +
 +                        if (parameters.type != null)
 +                            type = (string)parameters.type;​
 +                        if (parameters.name != null)
 +                            name = (string)parameters.name;​
 +                        if (parameters.modelid != null)
 +                            modelid = (string)parameters.modelid;​
 +                        if (parameters.manufacturername != null)
 +                            manufacturername = (string)parameters.manufacturername;​
 +                        if (parameters.uniqueid != null)
 +                            uniqueid = (string)parameters.uniqueid;​
 +                        if (parameters.swversion != null)
 +                            swversion = (string)parameters.swversion;​
 +                    }
 +
 +                    Hue.HueDevice Lumiere = new HueDevice();​
 +                    Lumiere.deviceId = Convert.ToInt32(id);​
 +                    Lumiere.name = name;
 +                    Lumiere.online = reachable;
 +                    Lumiere.bri = bri;
 +                    Lumiere.alert = alert;
 +                    Lumiere.reachable = reachable;
 +                    Lumiere.type = type;
 +                    Lumiere.modelid = modelid;
 +                    Lumiere.manufacturername = manufacturername;​
 +                    Lumiere.uniqueid = uniqueid;
 +                    Lumiere.swversion = swversion;
 +
 +                    Devices.Add(Lumiere);​
 +                }
 +                return Devices;
 +            }
 +        }
 +</​code>​
 +==Allume ou éteint une ampoule ==
 +<code csharp>
 +        /// <​summary>​
 +        /// Allume ou éteint l'​ampoule avec l'id spécifié
 +        /// </​summary>​
 +        /// <param name="​id"></​param>​
 +        /// <param name="​state"></​param>​
 +        internal bool SetState(string id, int state)
 +        {
 +            try
 +            {
 +                string data;
 +                if (state == 1)
 +                    data = "{ \"​on\":​true}";​
 +                else
 +                    data = "{ \"​on\":​false}";​
 +
 +                byte[] bytes;
 +                bytes = System.Text.Encoding.UTF8.GetBytes(data);​
 +                string url = @"​http://"​ + ip + "/​api/"​ + username + "/​lights/"​ + id + "/​state";​
 +                var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);​
 +                httpWebRequest.Method = "​PUT";​
 +                httpWebRequest.ContentType = "​application/​json";​
 +                httpWebRequest.ContentLength = bytes.Length;​
 +                Stream requestStream = httpWebRequest.GetRequestStream();​
 +                requestStream.Write(bytes,​ 0, bytes.Length);​
 +                requestStream.Close();​
 +
 +                var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();​
 +                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
 +                {
 +                    var result = streamReader.ReadToEnd();​
 +                    dynamic response = JsonConvert.DeserializeObject(result);​
 +                }
 +            }
 +            catch (Exception ex)
 +            {
 +                return false;
 +            }
 +            return true;
 +        }
 +</​code>​
ampoules_connectees_-_philips_hue_et_osram_ligthify.txt · Dernière modification: 2018/03/09 10:40 par 88.164.131.165