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édentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
ampoules_connectees_-_philips_hue_et_osram_ligthify [2016/11/12 00:14] – [FAQ] 88.164.131.165ampoules_connectees_-_philips_hue_et_osram_ligthify [2018/03/09 10:21] – [Récupération de la liste des ampoules] 88.164.131.165
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 de 88.164.131.165

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki