Commit 74017451848c984b85c1a9cddd8e9306e039bd5d
1 parent
6587a32f
Add new light function for bridges using v1.24
- add getProductname to get the product name of a light
Showing
4 changed files
with
35 additions
and
1 deletions
hueplusplus/HueLight.cpp
| @@ -92,6 +92,15 @@ std::string HueLight::getManufacturername() const | @@ -92,6 +92,15 @@ std::string HueLight::getManufacturername() const | ||
| 92 | return std::string(); | 92 | return std::string(); |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | +std::string HueLight::getProductname() const | ||
| 96 | +{ | ||
| 97 | + if (state.isMember("productname")) | ||
| 98 | + { | ||
| 99 | + return state["productname"].asString(); | ||
| 100 | + } | ||
| 101 | + return std::string(); | ||
| 102 | +} | ||
| 103 | + | ||
| 95 | std::string HueLight::getLuminaireUId() const | 104 | std::string HueLight::getLuminaireUId() const |
| 96 | { | 105 | { |
| 97 | if (state.isMember("luminaireuniqueid")) | 106 | if (state.isMember("luminaireuniqueid")) |
hueplusplus/include/HueLight.h
| @@ -162,6 +162,12 @@ public: | @@ -162,6 +162,12 @@ public: | ||
| 162 | //! \return String containing the manufacturername or an empty string when the function is not supported | 162 | //! \return String containing the manufacturername or an empty string when the function is not supported |
| 163 | virtual std::string getManufacturername() const; | 163 | virtual std::string getManufacturername() const; |
| 164 | 164 | ||
| 165 | + //! \brief Const function that returns the productname of the light | ||
| 166 | + //! | ||
| 167 | + //! \note Only working on bridges with versions starting at 1.24 | ||
| 168 | + //! \return String containing the productname or an empty string when the function is not supported | ||
| 169 | + virtual std::string getProductname() const; | ||
| 170 | + | ||
| 165 | //! \brief Const function that returns the luminaireuniqueid of the light | 171 | //! \brief Const function that returns the luminaireuniqueid of the light |
| 166 | //! | 172 | //! |
| 167 | //! \note Only working on bridges with versions starting at 1.9 | 173 | //! \note Only working on bridges with versions starting at 1.9 |
hueplusplus/test/CMakeLists.txt
| @@ -60,7 +60,7 @@ add_custom_target("unittest" | @@ -60,7 +60,7 @@ add_custom_target("unittest" | ||
| 60 | # Run the executable | 60 | # Run the executable |
| 61 | COMMAND test_HuePlusPlus | 61 | COMMAND test_HuePlusPlus |
| 62 | # Depends on test_HuePlusPlus | 62 | # Depends on test_HuePlusPlus |
| 63 | - DEPENDS test_HuePlusPlus | 63 | + DEPENDS test_HuePlusPlus |
| 64 | ) | 64 | ) |
| 65 | 65 | ||
| 66 | # Check for coverage test prerequisites | 66 | # Check for coverage test prerequisites |
hueplusplus/test/test_HueLight.cpp
| @@ -35,6 +35,7 @@ protected: | @@ -35,6 +35,7 @@ protected: | ||
| 35 | hue_bridge_state["lights"]["1"]["name"] = "Hue lamp 1"; | 35 | hue_bridge_state["lights"]["1"]["name"] = "Hue lamp 1"; |
| 36 | hue_bridge_state["lights"]["1"]["modelid"] = "LWB004"; | 36 | hue_bridge_state["lights"]["1"]["modelid"] = "LWB004"; |
| 37 | hue_bridge_state["lights"]["1"]["manufacturername"] = "Philips"; | 37 | hue_bridge_state["lights"]["1"]["manufacturername"] = "Philips"; |
| 38 | + hue_bridge_state["lights"]["1"]["productname"] = "Hue bloom"; | ||
| 38 | hue_bridge_state["lights"]["1"]["uniqueid"] = "00:00:00:00:00:00:00:00-00"; | 39 | hue_bridge_state["lights"]["1"]["uniqueid"] = "00:00:00:00:00:00:00:00-00"; |
| 39 | hue_bridge_state["lights"]["1"]["swversion"] = "5.50.1.19085"; | 40 | hue_bridge_state["lights"]["1"]["swversion"] = "5.50.1.19085"; |
| 40 | hue_bridge_state["lights"]["1"]["luminaireuniqueid"] = "0000000"; | 41 | hue_bridge_state["lights"]["1"]["luminaireuniqueid"] = "0000000"; |
| @@ -77,6 +78,7 @@ protected: | @@ -77,6 +78,7 @@ protected: | ||
| 77 | hue_bridge_state["lights"]["3"]["name"] = "Hue lamp 3"; | 78 | hue_bridge_state["lights"]["3"]["name"] = "Hue lamp 3"; |
| 78 | hue_bridge_state["lights"]["3"]["modelid"] = "LCT010"; | 79 | hue_bridge_state["lights"]["3"]["modelid"] = "LCT010"; |
| 79 | hue_bridge_state["lights"]["3"]["manufacturername"] = "Philips"; | 80 | hue_bridge_state["lights"]["3"]["manufacturername"] = "Philips"; |
| 81 | + hue_bridge_state["lights"]["3"]["productname"] = "Hue bloom"; | ||
| 80 | hue_bridge_state["lights"]["3"]["swversion"] = "5.50.1.19085"; | 82 | hue_bridge_state["lights"]["3"]["swversion"] = "5.50.1.19085"; |
| 81 | 83 | ||
| 82 | EXPECT_CALL(*handler, GETJson("/api/" + bridge_username, Json::Value(Json::objectValue), bridge_ip, 80)) | 84 | EXPECT_CALL(*handler, GETJson("/api/" + bridge_username, Json::Value(Json::objectValue), bridge_ip, 80)) |
| @@ -276,6 +278,23 @@ TEST_F(HueLightTest, getManufacturername) | @@ -276,6 +278,23 @@ TEST_F(HueLightTest, getManufacturername) | ||
| 276 | EXPECT_EQ("Philips", test_light_3.getManufacturername()); | 278 | EXPECT_EQ("Philips", test_light_3.getManufacturername()); |
| 277 | } | 279 | } |
| 278 | 280 | ||
| 281 | +TEST_F(HueLightTest, getProductname) | ||
| 282 | +{ | ||
| 283 | + const HueLight ctest_light_1 = test_bridge.getLight(1); | ||
| 284 | + const HueLight ctest_light_2 = test_bridge.getLight(2); | ||
| 285 | + const HueLight ctest_light_3 = test_bridge.getLight(3); | ||
| 286 | + HueLight test_light_1 = test_bridge.getLight(1); | ||
| 287 | + HueLight test_light_2 = test_bridge.getLight(2); | ||
| 288 | + HueLight test_light_3 = test_bridge.getLight(3); | ||
| 289 | + | ||
| 290 | + EXPECT_EQ("Hue bloom", ctest_light_1.getProductname()); | ||
| 291 | + EXPECT_EQ("", ctest_light_2.getProductname()); | ||
| 292 | + EXPECT_EQ("Hue bloom", ctest_light_3.getProductname()); | ||
| 293 | + EXPECT_EQ("Hue bloom", test_light_1.getProductname()); | ||
| 294 | + EXPECT_EQ("", test_light_2.getProductname()); | ||
| 295 | + EXPECT_EQ("Hue bloom", test_light_3.getProductname()); | ||
| 296 | +} | ||
| 297 | + | ||
| 279 | TEST_F(HueLightTest, getLuminaireUId) | 298 | TEST_F(HueLightTest, getLuminaireUId) |
| 280 | { | 299 | { |
| 281 | const HueLight ctest_light_1 = test_bridge.getLight(1); | 300 | const HueLight ctest_light_1 = test_bridge.getLight(1); |