public async Task SetGroupStateTest() { IHueRequest request = new SetGroupStateRequest(3, new SetGroupState { IsOn = false }); IHueResponse response = await _client.GetResponseAsync(request); Assert.True(response is SuccessResponse); OnLog(response); }
public async Task <IActionResult> SetGroupState([FromBody] SetGroupStateRequest request) { try { await lighting.SetGroupStateAsync(request); return(StandardResponse()); } catch (Exception exception) { return(ErrorResponse(exception)); } }
/// <summary> /// Modifies the state of all lights in a group. /// User created groups will have an ID of 1 or higher; however a special group with an ID of 0 also exists containing all the lamps known by the bridge. /// </summary> /// <param name="id">Id of the group to Update</param> /// <param name="cancellationToken"></param> /// <returns>Success</returns> public async Task <bool> SetGroupStateAsync(string id, SetGroupStateRequest request, CancellationToken cancellationToken = default(CancellationToken)) { var json = JsonSerializer.Serialize(request, _jsonSerializerOptions); var requestContent = new StringContent(json, Encoding.UTF8, "application/json"); var response = await _httpClient.PutAsync($"/api/{_userName}/groups/{id}/action", requestContent, cancellationToken); if (response.IsSuccessStatusCode) { return(true); } return(false); }
public async Task SetGroupStateAsync(SetGroupStateRequest request) { var client = await GetClientAsync(); var groups = await FindAllGroupsAsync(); var lightIds = groups.Where(g => request.GroupIds.Contains(g.Id)) .SelectMany(g => g.Lights) .Distinct(); var command = new LightCommand { On = request.PowerState, Brightness = request.Brightness, TransitionTime = request.TransitionTime ?? Config.TransitionTime }; await client.SendCommandAsync(command, lightIds); }
public GroupStateBuilder() { GroupState = new SetGroupStateRequest(); }