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
Dernière révision Les deux révisions suivantes
ampoules_connectees_-_philips_hue_et_osram_ligthify [2016/11/12 00:14]
88.164.131.165 [FAQ]
ampoules_connectees_-_philips_hue_et_osram_ligthify [2018/03/09 10:24]
88.164.131.165 [Récupération de la liste des ampoules]
Ligne 30: Ligne 30:
 ==== Exemple application C# ==== ==== Exemple application C# ====
  
- +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 === 
 +<code csharp |Ticket>​ 
 +            //Le Token n'est valable que 15mn 
 +            //user : le nom d'​utilisateur de votre compte Osram 
 +            //pass : votre mot de pass .... 
 +            //serialnum : Le numéro de série qui apparait sur la passerelle OSR0xxxxxxx (Ne pas indiquer ce qui trouve apres le "​-"​ 
 +            OsramToken token = OsramController.GetOsramToken("​user",​ "​pass",​ "​serialnum"​);​ 
 + 
 +            textBoxToken.Text = token.securityToken;​ 
 +            textBoxUserID.Text = token.userId;​ 
 +</​code>​ 
 + 
 +<code csharp |Class OsramToken>​ 
 +    public class OsramToken 
 +    { 
 +        public string userId { get; set; } 
 +        public string securityToken { get; set; } 
 +    } 
 +</​code>​ 
 + 
 +<code csharp |Class OsramController>​ 
 +    public class OsramController 
 +    { 
 +        public static OsramToken GetOsramToken(string username, string password, string serialNumber) 
 +        { 
 +            string payload = "​{\"​username\"​ : \""​ + username + "​\",​\"​password\"​ : \""​ + password + "​\",​\"​serialNumber\"​ : \""​ + serialNumber + "​\"​}";​ 
 +            string url = "​https://​eu.lightify-api.org/​lightify/​services/​session";​ 
 +            var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);​ 
 +            httpWebRequest.UserAgent = "​Lightify/​1.0.5 CFNetwork/​711.1.16 Darwin/​14.0.0";​ 
 +            httpWebRequest.Method = "​POST";​ 
 +            httpWebRequest.ContentType = "​application/​json";​ 
 + 
 +            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
 +            { 
 + 
 + 
 +                streamWriter.Write(payload);​ 
 +                streamWriter.Flush();​ 
 +                streamWriter.Close();​ 
 +            } 
 +            OsramToken os = new OsramToken();​ 
 +            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();​ 
 +            using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
 +            { 
 +                var result = streamReader.ReadToEnd();​ 
 +                os = JsonConvert.DeserializeObject<​OsramToken>​(result);​ 
 + 
 +            } 
 + 
 +            return os; 
 +        } 
 + 
 +        public static List<​OsramDevice>​ GetDevicesList(string token) 
 +        { 
 +            List<​OsramDevice>​ Devices = new List<​OsramDevice>​();​ 
 + 
 +            string url = "​https://​eu.lightify-api.org/​lightify/​services/​devices";​ 
 +            var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);​ 
 +            httpWebRequest.UserAgent = "​Lightify/​1.0.5 CFNetwork/​711.1.16 Darwin/​14.0.0";​ 
 +            httpWebRequest.Method = "​GET";​ 
 +            httpWebRequest.ContentType = "​application/​json";​ 
 +            httpWebRequest.Headers.Add("​authorization",​token);​ 
 + 
 +            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();​ 
 +            using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
 +            { 
 +                var result = streamReader.ReadToEnd();​ 
 +                Devices = JsonConvert.DeserializeObject<​List<​OsramDevice>>​(result);​ 
 +            } 
 + 
 +            return Devices; 
 +        } 
 + 
 +        public static string SenCommand(string token, string cmd) 
 +        { 
 +            string result = "";​ 
 + 
 +            string url = "​https://​eu.lightify-api.org/​lightify/​services/"​+cmd;​ 
 +            var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);​ 
 +            httpWebRequest.UserAgent = "​Lightify/​1.0.5 CFNetwork/​711.1.16 Darwin/​14.0.0";​ 
 +            httpWebRequest.Method = "​GET";​ 
 +            httpWebRequest.ContentType = "​application/​json";​ 
 +            httpWebRequest.Headers.Add("​authorization",​ token); 
 + 
 +            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();​ 
 +            using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
 +            { 
 +                result = streamReader.ReadToEnd();​ 
 +            } 
 + 
 +            return result; 
 +        } 
 +    } 
 +</​code>​ 
 + 
 +=== Récupération de la liste des équipements === 
 + 
 +<code csharp |Devices>​ 
 +List<​OsramDevice>​ Devices = OsramController.GetDevicesList(textBoxToken.Text);​ 
 +</​code>​ 
 + 
 +<code csharp |Class Devices>​ 
 +    public class OsramDevice 
 +    { 
 +        public int deviceId { get; set; } 
 +        public string deviceType { get; set; } 
 +        public string manufacturer { get; set; } 
 +        public string modelName { get; set; } 
 +        public string name { get; set; } 
 +        public List<​int>​ groupList { get; set; } 
 +        public List<​string>​ bmpClusters { get; set; } 
 +        public bool online { get; set; } 
 +        public bool on { get; set; } 
 +        public float brightnessLevel { get; set; } 
 +        public float hue { get; set; } 
 +        public float saturation { get; set; } 
 +        public int temperature { get; set; } 
 +        public string firmwareVersion { get; set; } 
 +        public string color { get; set; } 
 + 
 +    } 
 +</​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 48: Ligne 206:
 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