public async Task<string> CreateSensorAsync(Sensor sensor) { CheckInitialized(); string sensorJson = JsonConvert.SerializeObject(sensor, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore }); HttpClient client = HueClient.GetHttpClient(); //Create schedule var result = await client.PostAsync(new Uri(String.Format("{0}sensors", ApiBase)), new StringContent(sensorJson)).ConfigureAwait(false); var jsonResult = await result.Content.ReadAsStringAsync().ConfigureAwait(false); DefaultHueResult[] sensorResult = JsonConvert.DeserializeObject<DefaultHueResult[]>(jsonResult); if (sensorResult.Length > 0 && sensorResult[0].Success != null && !string.IsNullOrEmpty(sensorResult[0].Success.Id)) { return sensorResult[0].Success.Id; } return null; }
/// <summary> /// Gets a list of sensors that were discovered the last time a search for new sensors was performed. The list of new sensors is always deleted when a new search is started. /// </summary> /// <returns></returns> public async Task<List<Sensor>> GetNewSensorsAsync() { CheckInitialized(); HttpClient client = new HttpClient(); string stringResult = await client.GetStringAsync(new Uri(String.Format("{0}sensors/new", ApiBase))).ConfigureAwait(false); #if DEBUG //stringResult = "{\"7\": {\"name\": \"Hue Lamp 7\"}, \"8\": {\"name\": \"Hue Lamp 8\"}, \"lastscan\": \"2012-10-29T12:00:00\"}"; #endif List<Sensor> results = new List<Sensor>(); JToken token = JToken.Parse(stringResult); if (token.Type == JTokenType.Object) { //Each property is a light var jsonResult = (JObject)token; foreach (var prop in jsonResult.Properties()) { if (prop.Name != "lastscan") { Sensor newSensor = new Sensor(); newSensor.Id = prop.Name; newSensor.Name = prop.First["name"].ToString(); results.Add(newSensor); } } } return results; }