Based on http://www.developers.meethue.com/documentation/supported-sensors
Inheritance: CLIPGenericFlag, CLIPGenericStatus, CLIPHumidity, CLIPLightlevel, CLIPOpenClose, CLIPPresence, CLIPSwitch, CLIPTemperature, DaylightSensor, ZGPSwitch, ZLLPresence, ZLLSwitch, ZLLTemperature
Esempio n. 1
0
    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;

    }