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 [2017/12/06 16:12] – modification externe 127.0.0.1
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 =====
  
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