22#ifndef INCLUDE_HUEPLUSPLUS_SCENE_H
23#define INCLUDE_HUEPLUSPLUS_SCENE_H
29#include <nlohmann/json.hpp>
43 explicit LightState(
const nlohmann::json& state);
83 nlohmann::json
toJson()
const;
109 nlohmann::json state;
129 Scene(
const std::string&
id,
const std::shared_ptr<APICache>& baseCache);
135 Scene(
const std::string&
id,
const HueCommandAPI& commands, std::chrono::steady_clock::duration refreshDuration,
const nlohmann::json& currentState);
144 void refresh(
bool force =
false);
151 std::string
getId()
const;
163 void setName(
const std::string& name);
205 void setAppdata(
const std::string& data,
int version);
257 void sendPutRequest(
const std::string& path,
const nlohmann::json& request,
FileInfo fileInfo);
301 nlohmann::json request;
Caches API GET requests and refreshes regularly.
Definition APICache.h:38
Parameters for creating a new Scene.
Definition Scene.h:268
CreateScene & setLightStates(const std::map< int, LightState > &states)
Set light states of the scene.
Definition Scene.cpp:382
CreateScene & setName(const std::string &name)
Set name.
Definition Scene.cpp:337
CreateScene & setLightIds(const std::vector< int > &ids)
Set light ids, making the scene a LightScene.
Definition Scene.cpp:354
CreateScene & setGroupId(int id)
Set group id, making the scene a GroupScene.
Definition Scene.cpp:343
nlohmann::json getRequest() const
Get request to create the scene.
Definition Scene.cpp:393
CreateScene & setRecycle(bool recycle)
Set whether the scene can be automatically deleted.
Definition Scene.cpp:370
CreateScene & setAppdata(const std::string &data, int version)
Set app specific data.
Definition Scene.cpp:376
Definition HueCommandAPI.h:38
Builder to create LightState.
Definition Scene.h:96
LightStateBuilder & setXY(const XY &xy)
Definition Scene.cpp:124
LightStateBuilder & setHueSat(const HueSaturation &hueSat)
Definition Scene.cpp:117
LightStateBuilder & setOn(bool on)
Definition Scene.cpp:105
LightState create()
Definition Scene.cpp:148
LightStateBuilder & setTransitionTime(int time)
Definition Scene.cpp:142
LightStateBuilder & setBrightness(int brightness)
Definition Scene.cpp:111
LightStateBuilder & setCt(int mired)
Definition Scene.cpp:130
LightStateBuilder & setColorloop(bool enabled)
Definition Scene.cpp:136
Immutable state of a light.
Definition Scene.h:39
int getTransitionTime() const
Get transition time to this light state.
Definition Scene.cpp:85
bool isOn() const
Get whether the light is on.
Definition Scene.cpp:29
bool hasEffect() const
Get whether effect is stored.
Definition Scene.cpp:75
bool hasHueSat() const
Get whether hue and saturation is stored.
Definition Scene.cpp:44
bool operator!=(const LightState &other) const
Inequality comparison.
Definition Scene.cpp:100
int getCt() const
Get color temperature of the light.
Definition Scene.cpp:70
bool hasBrightness() const
Get whether a brightness is stored.
Definition Scene.cpp:34
nlohmann::json toJson() const
Convert to json representation.
Definition Scene.cpp:90
XYBrightness getXY() const
Get xy color of the light.
Definition Scene.cpp:59
bool hasCt() const
Get whether color temperature is stored.
Definition Scene.cpp:65
bool operator==(const LightState &other) const
Equality comparison.
Definition Scene.cpp:95
bool getColorloop() const
Get whether colorloop effect is active.
Definition Scene.cpp:80
int getBrightness() const
Get brightness of the light.
Definition Scene.cpp:39
bool hasXY() const
Get whether xy color is stored.
Definition Scene.cpp:54
HueSaturation getHueSat() const
Get hue and saturation of the light.
Definition Scene.cpp:49
Scene stored in the bridge.
Definition Scene.h:116
bool getRecycle() const
Get whether the scene can be automatically deleted.
Definition Scene.cpp:242
Type getType() const
Get scene type.
Definition Scene.cpp:197
void setLightStates(const std::map< int, LightState > &states)
Set light states.
Definition Scene.cpp:298
time::AbsoluteTime getLastUpdated() const
Get time the scene was created/updated.
Definition Scene.cpp:273
Type
Type of the scen.
Definition Scene.h:120
@ lightScene
The scene affects specific lights.
@ groupScene
The scene affects all light of a specific group.
std::string getId() const
Get scene identifier.
Definition Scene.cpp:181
void setName(const std::string &name)
Set scene name.
Definition Scene.cpp:191
int getVersion() const
Get version of the scene.
Definition Scene.cpp:278
void setAppdata(const std::string &data, int version)
Set app specific data.
Definition Scene.cpp:262
void setRefreshDuration(std::chrono::steady_clock::duration refreshDuration)
Sets custom refresh interval for this group.
Definition Scene.cpp:176
void setLightIds(const std::vector< int > &ids)
Set light ids for LightScene.
Definition Scene.cpp:226
std::vector< int > getLightIds() const
Get light ids.
Definition Scene.cpp:216
std::string getName() const
Get scene name.
Definition Scene.cpp:186
std::string getPicture() const
Get picture, reserved for future use.
Definition Scene.cpp:268
void storeCurrentLightState()
Store current light state of every light in the scene.
Definition Scene.cpp:309
int getAppdataVersion() const
Get version of app specific data.
Definition Scene.cpp:257
void recall()
Recall scene, putting every light in the stored state.
Definition Scene.cpp:321
std::map< int, LightState > getLightStates() const
Get stored states of the lights.
Definition Scene.cpp:283
std::string getAppdata() const
Get app specific data.
Definition Scene.cpp:252
std::string getOwner() const
Get user that created or last changed the scene.
Definition Scene.cpp:237
void refresh(bool force=false)
Refreshes internal cached state.
Definition Scene.cpp:164
int getGroupId() const
Get group id for a GroupScene.
Definition Scene.cpp:211
bool isLocked() const
Get whether scene is locked by a rule or schedule.
Definition Scene.cpp:247
One-time, absolute time point.
Definition TimePattern.h:73
Namespace for the hueplusplus library.
Definition Action.h:28
Contains information about error location, use CURRENT_FILE_INFO to create.
Definition HueException.h:35
Color in hue and saturation.
Definition ColorUnits.h:32
Color and brightness in CIE.
Definition ColorUnits.h:63
Color in CIE x and y coordinates.
Definition ColorUnits.h:48