diff --git a/CHANGELOG.md b/CHANGELOG.md index 927a6c8..98ad853 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ * Added support for the `expire_after` property in the `HASensor` [#171](https://github.com/dawidchyrzynski/arduino-home-assistant/issues/171) * Added support for the `expire_after` property in the `HABinarySensor` [#159](https://github.com/dawidchyrzynski/arduino-home-assistant/issues/159) * Added support for the JSON attributes in the `HASensor` +* Added support for the `object_id` property in all device types **Fixes:** * Fixed a bug with the maximum number of device types ([#190](https://github.com/dawidchyrzynski/arduino-home-assistant/issues/190) by [@martaisty](https://github.com/martaisty)) diff --git a/src/device-types/HABaseDeviceType.cpp b/src/device-types/HABaseDeviceType.cpp index f5b123b..17583e3 100644 --- a/src/device-types/HABaseDeviceType.cpp +++ b/src/device-types/HABaseDeviceType.cpp @@ -11,6 +11,7 @@ HABaseDeviceType::HABaseDeviceType( _componentName(componentName), _uniqueId(uniqueId), _name(nullptr), + _objectId(nullptr), _serializer(nullptr), _availability(AvailabilityDefault) { diff --git a/src/device-types/HABaseDeviceType.h b/src/device-types/HABaseDeviceType.h index 49fa1f1..0d6fa32 100644 --- a/src/device-types/HABaseDeviceType.h +++ b/src/device-types/HABaseDeviceType.h @@ -78,6 +78,22 @@ public: inline const char* getName() const { return _name; } + /** + * Sets object ID that will be used by HA to generate entity ID. + * Keep the ID short to save the resources. + * + * @param objectId The object ID. + */ + inline void setObjectId(const char* objectId) + { _objectId = objectId; } + + /** + * Returns the object ID that was set by setObjectId method. + * It can be nullptr if there is no ID assigned. + */ + inline const char* getObjectId() const + { return _objectId; } + /** * Sets availability of the device type. * Setting the initial availability enables availability reporting for this device type. @@ -209,6 +225,9 @@ protected: /// The name that was set using setName method. It can be nullptr. const char* _name; + /// The object ID that was set using setObjectId method. It can be nullptr. + const char* _objectId; + /// HASerializer that belongs to this device type. It can be nullptr. HASerializer* _serializer; diff --git a/src/device-types/HABinarySensor.cpp b/src/device-types/HABinarySensor.cpp index 09edac2..20ab76f 100644 --- a/src/device-types/HABinarySensor.cpp +++ b/src/device-types/HABinarySensor.cpp @@ -42,8 +42,9 @@ void HABinarySensor::buildSerializer() return; } - _serializer = new HASerializer(this, 8); // 8 - max properties nb + _serializer = new HASerializer(this, 9); // 9 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HADeviceClassProperty), _class); _serializer->set(AHATOFSTR(HAIconProperty), _icon); diff --git a/src/device-types/HAButton.cpp b/src/device-types/HAButton.cpp index fd81b86..4a913c6 100644 --- a/src/device-types/HAButton.cpp +++ b/src/device-types/HAButton.cpp @@ -20,8 +20,9 @@ void HAButton::buildSerializer() return; } - _serializer = new HASerializer(this, 8); // 8 - max properties nb + _serializer = new HASerializer(this, 9); // 9 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HADeviceClassProperty), _class); _serializer->set(AHATOFSTR(HAIconProperty), _icon); diff --git a/src/device-types/HACamera.cpp b/src/device-types/HACamera.cpp index a813f65..8a9650d 100644 --- a/src/device-types/HACamera.cpp +++ b/src/device-types/HACamera.cpp @@ -27,8 +27,9 @@ void HACamera::buildSerializer() return; } - _serializer = new HASerializer(this, 7); // 7 - max properties nb + _serializer = new HASerializer(this, 8); // 8 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HAIconProperty), _icon); _serializer->set( diff --git a/src/device-types/HACover.cpp b/src/device-types/HACover.cpp index c1edd33..78cd5cd 100644 --- a/src/device-types/HACover.cpp +++ b/src/device-types/HACover.cpp @@ -54,8 +54,9 @@ void HACover::buildSerializer() return; } - _serializer = new HASerializer(this, 11); // 11 - max properties nb + _serializer = new HASerializer(this, 12); // 12 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HADeviceClassProperty), _class); _serializer->set(AHATOFSTR(HAIconProperty), _icon); diff --git a/src/device-types/HADeviceTracker.cpp b/src/device-types/HADeviceTracker.cpp index 1e24608..81e6a06 100644 --- a/src/device-types/HADeviceTracker.cpp +++ b/src/device-types/HADeviceTracker.cpp @@ -33,8 +33,9 @@ void HADeviceTracker::buildSerializer() return; } - _serializer = new HASerializer(this, 7); // 7 - max properties nb + _serializer = new HASerializer(this, 8); // 8 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HAIconProperty), _icon); _serializer->set( diff --git a/src/device-types/HAFan.cpp b/src/device-types/HAFan.cpp index da2f6cb..ee404a2 100644 --- a/src/device-types/HAFan.cpp +++ b/src/device-types/HAFan.cpp @@ -55,8 +55,9 @@ void HAFan::buildSerializer() return; } - _serializer = new HASerializer(this, 13); // 13 - max properties nb + _serializer = new HASerializer(this, 14); // 14 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HAIconProperty), _icon); diff --git a/src/device-types/HAHVAC.cpp b/src/device-types/HAHVAC.cpp index 35eee51..76eb422 100644 --- a/src/device-types/HAHVAC.cpp +++ b/src/device-types/HAHVAC.cpp @@ -183,8 +183,9 @@ void HAHVAC::buildSerializer() return; } - _serializer = new HASerializer(this, 27); // 27 - max properties nb + _serializer = new HASerializer(this, 28); // 28 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HAIconProperty), _icon); diff --git a/src/device-types/HALight.cpp b/src/device-types/HALight.cpp index 795cfd3..03f6dfe 100644 --- a/src/device-types/HALight.cpp +++ b/src/device-types/HALight.cpp @@ -128,8 +128,9 @@ void HALight::buildSerializer() return; } - _serializer = new HASerializer(this, 18); // 18 - max properties nb + _serializer = new HASerializer(this, 19); // 19 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HAIconProperty), _icon); diff --git a/src/device-types/HALock.cpp b/src/device-types/HALock.cpp index 8661547..d107458 100644 --- a/src/device-types/HALock.cpp +++ b/src/device-types/HALock.cpp @@ -35,8 +35,9 @@ void HALock::buildSerializer() return; } - _serializer = new HASerializer(this, 9); // 9 - max properties nb + _serializer = new HASerializer(this, 10); // 10 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HAIconProperty), _icon); diff --git a/src/device-types/HANumber.cpp b/src/device-types/HANumber.cpp index 003e49f..2c41345 100644 --- a/src/device-types/HANumber.cpp +++ b/src/device-types/HANumber.cpp @@ -42,9 +42,9 @@ void HANumber::buildSerializer() return; } - _serializer = new HASerializer(this, 15); // 15 - max properties nb - + _serializer = new HASerializer(this, 16); // 16 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HADeviceClassProperty), _class); _serializer->set(AHATOFSTR(HAIconProperty), _icon); diff --git a/src/device-types/HAScene.cpp b/src/device-types/HAScene.cpp index e303b0b..c579c68 100644 --- a/src/device-types/HAScene.cpp +++ b/src/device-types/HAScene.cpp @@ -19,8 +19,9 @@ void HAScene::buildSerializer() return; } - _serializer = new HASerializer(this, 7); // 7 - max properties nb + _serializer = new HASerializer(this, 8); // 8 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HAIconProperty), _icon); diff --git a/src/device-types/HASelect.cpp b/src/device-types/HASelect.cpp index 9715df2..f953673 100644 --- a/src/device-types/HASelect.cpp +++ b/src/device-types/HASelect.cpp @@ -96,8 +96,9 @@ void HASelect::buildSerializer() return; } - _serializer = new HASerializer(this, 10); // 10 - max properties nb + _serializer = new HASerializer(this, 11); // 11 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HAIconProperty), _icon); _serializer->set( diff --git a/src/device-types/HASensor.cpp b/src/device-types/HASensor.cpp index 7254e76..0d2efe9 100644 --- a/src/device-types/HASensor.cpp +++ b/src/device-types/HASensor.cpp @@ -46,8 +46,9 @@ void HASensor::buildSerializer() return; } - _serializer = new HASerializer(this, 12); // 12 - max properties nb + _serializer = new HASerializer(this, 13); // 13 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HADeviceClassProperty), _deviceClass); _serializer->set(AHATOFSTR(HAStateClassProperty), _stateClass); diff --git a/src/device-types/HASwitch.cpp b/src/device-types/HASwitch.cpp index 4f8b0ca..85da4f3 100644 --- a/src/device-types/HASwitch.cpp +++ b/src/device-types/HASwitch.cpp @@ -36,8 +36,9 @@ void HASwitch::buildSerializer() return; } - _serializer = new HASerializer(this, 10); // 10 - max properties nb + _serializer = new HASerializer(this, 11); // 11 - max properties nb _serializer->set(AHATOFSTR(HANameProperty), _name); + _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId); _serializer->set(HASerializer::WithUniqueId); _serializer->set(AHATOFSTR(HADeviceClassProperty), _class); _serializer->set(AHATOFSTR(HAIconProperty), _icon); diff --git a/src/utils/HADictionary.cpp b/src/utils/HADictionary.cpp index e78255c..266d21d 100644 --- a/src/utils/HADictionary.cpp +++ b/src/utils/HADictionary.cpp @@ -39,6 +39,7 @@ const char HADeviceSoftwareVersionProperty[] PROGMEM = {"sw"}; const char HADeviceConfigurationUrlProperty[] PROGMEM = {"cu"}; const char HANameProperty[] PROGMEM = {"name"}; const char HAUniqueIdProperty[] PROGMEM = {"uniq_id"}; +const char HAObjectIdProperty[] PROGMEM = {"obj_id"}; const char HADeviceProperty[] PROGMEM = {"dev"}; const char HADeviceClassProperty[] PROGMEM = {"dev_cla"}; const char HAStateClassProperty[] PROGMEM = {"stat_cla"}; diff --git a/src/utils/HADictionary.h b/src/utils/HADictionary.h index 88f1ab7..609f38d 100644 --- a/src/utils/HADictionary.h +++ b/src/utils/HADictionary.h @@ -39,6 +39,7 @@ extern const char HADeviceSoftwareVersionProperty[]; extern const char HADeviceConfigurationUrlProperty[]; extern const char HANameProperty[]; extern const char HAUniqueIdProperty[]; +extern const char HAObjectIdProperty[]; extern const char HADeviceProperty[]; extern const char HADeviceClassProperty[]; extern const char HAStateClassProperty[]; diff --git a/tests/BaseDeviceTypeTest/BaseDeviceTypeTest.ino b/tests/BaseDeviceTypeTest/BaseDeviceTypeTest.ino index edfee69..d334f40 100644 --- a/tests/BaseDeviceTypeTest/BaseDeviceTypeTest.ino +++ b/tests/BaseDeviceTypeTest/BaseDeviceTypeTest.ino @@ -53,6 +53,13 @@ AHA_TEST(BaseDeviceTypeTest, name_setter) { assertEqual(name, deviceType.getName()); } +AHA_TEST(BaseDeviceTypeTest, object_id_setter) { + const char* objectId = "testId"; + DummyDeviceType deviceType(AHATOFSTR(ComponentNameStr), testUniqueId); + deviceType.setObjectId(objectId); + assertEqual(objectId, deviceType.getObjectId()); +} + AHA_TEST(BaseDeviceTypeTest, default_availability) { DummyDeviceType deviceType(AHATOFSTR(ComponentNameStr), testUniqueId); assertFalse(deviceType.isAvailabilityConfigured()); diff --git a/tests/BinarySensorTest/BinarySensorTest.ino b/tests/BinarySensorTest/BinarySensorTest.ino index ff9a60f..f4f4859 100644 --- a/tests/BinarySensorTest/BinarySensorTest.ino +++ b/tests/BinarySensorTest/BinarySensorTest.ino @@ -100,6 +100,26 @@ AHA_TEST(BinarySensorTest, name_setter) { ) } +AHA_TEST(BinarySensorTest, object_id_setter) { + initMqttTest(testDeviceId) + + HABinarySensor sensor(testUniqueId); + sensor.setObjectId("testId"); + + assertEntityConfig( + mock, + sensor, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueSensor\"," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"stat_t\":\"testData/testDevice/uniqueSensor/stat_t\"" + "}" + ) + ) +} + AHA_TEST(BinarySensorTest, device_class) { initMqttTest(testDeviceId) diff --git a/tests/ButtonTest/ButtonTest.ino b/tests/ButtonTest/ButtonTest.ino index d75ef0d..4f49a07 100644 --- a/tests/ButtonTest/ButtonTest.ino +++ b/tests/ButtonTest/ButtonTest.ino @@ -129,6 +129,26 @@ AHA_TEST(ButtonTest, name_setter) { ) } +AHA_TEST(ButtonTest, object_id_setter) { + prepareTest + + HAButton button(testUniqueId); + button.setObjectId("testId"); + + assertEntityConfig( + mock, + button, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueButton\"," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"cmd_t\":\"testData/testDevice/uniqueButton/cmd_t\"" + "}" + ) + ) +} + AHA_TEST(ButtonTest, device_class) { prepareTest diff --git a/tests/CameraTest/CameraTest.ino b/tests/CameraTest/CameraTest.ino index 7392a85..b81017b 100644 --- a/tests/CameraTest/CameraTest.ino +++ b/tests/CameraTest/CameraTest.ino @@ -70,6 +70,47 @@ AHA_TEST(CameraTest, availability) { ) } +AHA_TEST(CameraTest, name_setter) { + initMqttTest(testDeviceId) + + HACamera camera(testUniqueId); + camera.setName("testName"); + + assertEntityConfig( + mock, + camera, + ( + "{" + "\"name\":\"testName\"," + "\"uniq_id\":\"uniqueCamera\"," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"t\":\"testData/testDevice/uniqueCamera/t\"" + "}" + ) + ) +} + +AHA_TEST(CameraTest, object_id_setter) { + initMqttTest(testDeviceId) + + HACamera camera(testUniqueId); + camera.setObjectId("testId"); + + assertEntityConfig( + mock, + camera, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueCamera\"," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"t\":\"testData/testDevice/uniqueCamera/t\"" + "}" + ) + ) +} + + AHA_TEST(CameraTest, icon_setter) { initMqttTest(testDeviceId) diff --git a/tests/CoverTest/CoverTest.ino b/tests/CoverTest/CoverTest.ino index a2035ca..b7b0348 100644 --- a/tests/CoverTest/CoverTest.ino +++ b/tests/CoverTest/CoverTest.ino @@ -196,6 +196,27 @@ AHA_TEST(CoverTest, name_setter) { ) } +AHA_TEST(CoverTest, object_id_setter) { + prepareTest + + HACover cover(testUniqueId); + cover.setObjectId("testId"); + + assertEntityConfig( + mock, + cover, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueCover\"," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"stat_t\":\"testData/testDevice/uniqueCover/stat_t\"," + "\"cmd_t\":\"testData/testDevice/uniqueCover/cmd_t\"" + "}" + ) + ) +} + AHA_TEST(CoverTest, device_class) { prepareTest diff --git a/tests/DeviceTrackerTest/DeviceTrackerTest.ino b/tests/DeviceTrackerTest/DeviceTrackerTest.ino index d7a8404..457f42f 100644 --- a/tests/DeviceTrackerTest/DeviceTrackerTest.ino +++ b/tests/DeviceTrackerTest/DeviceTrackerTest.ino @@ -178,6 +178,26 @@ AHA_TEST(DeviceTrackerTest, name_setter) { ) } +AHA_TEST(DeviceTrackerTest, object_id_setter) { + initMqttTest(testDeviceId) + + HADeviceTracker tracker(testUniqueId); + tracker.setObjectId("testId"); + + assertEntityConfig( + mock, + tracker, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueTracker\"," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"stat_t\":\"testData/testDevice/uniqueTracker/stat_t\"" + "}" + ) + ) +} + AHA_TEST(DeviceTrackerTest, icon_setter) { initMqttTest(testDeviceId) diff --git a/tests/FanTest/FanTest.ino b/tests/FanTest/FanTest.ino index 3f7d50c..a61a3b6 100644 --- a/tests/FanTest/FanTest.ino +++ b/tests/FanTest/FanTest.ino @@ -240,6 +240,27 @@ AHA_TEST(FanTest, name_setter) { ) } +AHA_TEST(FanTest, object_id_setter) { + prepareTest + + HAFan fan(testUniqueId); + fan.setObjectId("testId"); + + assertEntityConfig( + mock, + fan, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueFan\"," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"stat_t\":\"testData/testDevice/uniqueFan/stat_t\"," + "\"cmd_t\":\"testData/testDevice/uniqueFan/cmd_t\"" + "}" + ) + ) +} + AHA_TEST(FanTest, icon_setter) { prepareTest diff --git a/tests/HVACTest/HVACTest.ino b/tests/HVACTest/HVACTest.ino index 6508d6c..b9f51d0 100644 --- a/tests/HVACTest/HVACTest.ino +++ b/tests/HVACTest/HVACTest.ino @@ -548,6 +548,26 @@ AHA_TEST(HVACTest, name_setter) { ) } +AHA_TEST(HVACTest, object_id_setter) { + prepareTest + + HAHVAC hvac(testUniqueId); + hvac.setObjectId("testId"); + + assertEntityConfig( + mock, + hvac, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueHVAC\"," + "\"curr_temp_t\":\"testData/testDevice/uniqueHVAC/curr_temp_t\"," + "\"dev\":{\"ids\":\"testDevice\"}" + "}" + ) + ) +} + AHA_TEST(HVACTest, icon_setter) { prepareTest diff --git a/tests/LightTest/LightTest.ino b/tests/LightTest/LightTest.ino index d942641..1cc2d37 100644 --- a/tests/LightTest/LightTest.ino +++ b/tests/LightTest/LightTest.ino @@ -423,6 +423,27 @@ AHA_TEST(LightTest, name_setter) { ) } +AHA_TEST(LightTest, object_id_setter) { + prepareTest + + HALight light(testUniqueId); + light.setObjectId("testId"); + + assertEntityConfig( + mock, + light, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueLight\"," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"stat_t\":\"testData/testDevice/uniqueLight/stat_t\"," + "\"cmd_t\":\"testData/testDevice/uniqueLight/cmd_t\"" + "}" + ) + ) +} + AHA_TEST(LightTest, icon_setter) { prepareTest diff --git a/tests/LockTest/LockTest.ino b/tests/LockTest/LockTest.ino index b5d750a..90fa180 100644 --- a/tests/LockTest/LockTest.ino +++ b/tests/LockTest/LockTest.ino @@ -160,6 +160,27 @@ AHA_TEST(LockTest, name_setter) { ) } +AHA_TEST(LockTest, object_id_setter) { + prepareTest + + HALock lock(testUniqueId); + lock.setObjectId("testId"); + + assertEntityConfig( + mock, + lock, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueLock\"," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"stat_t\":\"testData/testDevice/uniqueLock/stat_t\"," + "\"cmd_t\":\"testData/testDevice/uniqueLock/cmd_t\"" + "}" + ) + ) +} + AHA_TEST(LockTest, icon_setter) { prepareTest diff --git a/tests/NumberTest/NumberTest.ino b/tests/NumberTest/NumberTest.ino index 60a0aca..b516faf 100644 --- a/tests/NumberTest/NumberTest.ino +++ b/tests/NumberTest/NumberTest.ino @@ -335,6 +335,27 @@ AHA_TEST(NumberTest, name_setter) { ) } +AHA_TEST(NumberTest, object_id_setter) { + prepareTest + + HANumber number(testUniqueId); + number.setObjectId("testId"); + + assertEntityConfig( + mock, + number, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueNumber\"," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"stat_t\":\"testData/testDevice/uniqueNumber/stat_t\"," + "\"cmd_t\":\"testData/testDevice/uniqueNumber/cmd_t\"" + "}" + ) + ) +} + AHA_TEST(NumberTest, device_class) { prepareTest diff --git a/tests/SceneTest/SceneTest.ino b/tests/SceneTest/SceneTest.ino index c2a6a63..be07cdc 100644 --- a/tests/SceneTest/SceneTest.ino +++ b/tests/SceneTest/SceneTest.ino @@ -129,6 +129,26 @@ AHA_TEST(SceneTest, name_setter) { ) } +AHA_TEST(SceneTest, object_id_setter) { + prepareTest + + HAScene scene(testUniqueId); + scene.setObjectId("testId"); + + assertEntityConfig( + mock, + scene, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueScene\"," + "\"pl_on\":\"ON\"," + "\"cmd_t\":\"testData/testDevice/uniqueScene/cmd_t\"" + "}" + ) + ) +} + AHA_TEST(SceneTest, icon_setter) { prepareTest diff --git a/tests/SelectTest/SelectTest.ino b/tests/SelectTest/SelectTest.ino index 7cf2376..d58addf 100644 --- a/tests/SelectTest/SelectTest.ino +++ b/tests/SelectTest/SelectTest.ino @@ -244,6 +244,29 @@ AHA_TEST(SelectTest, name_setter) { ) } +AHA_TEST(SelectTest, object_id_setter) { + prepareTest + + HASelect select(testUniqueId); + select.setOptions("Option A;B;C"); + select.setObjectId("testId"); + + assertEntityConfig( + mock, + select, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueSelect\"," + "\"options\":[\"Option A\",\"B\",\"C\"]," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"stat_t\":\"testData/testDevice/uniqueSelect/stat_t\"," + "\"cmd_t\":\"testData/testDevice/uniqueSelect/cmd_t\"" + "}" + ) + ) +} + AHA_TEST(SelectTest, icon_setter) { prepareTest diff --git a/tests/SensorTest/SensorTest.ino b/tests/SensorTest/SensorTest.ino index 9d6fbb2..b4592ab 100644 --- a/tests/SensorTest/SensorTest.ino +++ b/tests/SensorTest/SensorTest.ino @@ -90,6 +90,26 @@ AHA_TEST(SensorTest, name_setter) { ) } +AHA_TEST(SensorTest, object_id_setter) { + initMqttTest(testDeviceId) + + HASensor sensor(testUniqueId); + sensor.setObjectId("testId"); + + assertEntityConfig( + mock, + sensor, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueSensor\"," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"stat_t\":\"testData/testDevice/uniqueSensor/stat_t\"" + "}" + ) + ) +} + AHA_TEST(SensorTest, device_class_setter) { initMqttTest(testDeviceId) diff --git a/tests/SwitchTest/SwitchTest.ino b/tests/SwitchTest/SwitchTest.ino index 061cd40..276f74e 100644 --- a/tests/SwitchTest/SwitchTest.ino +++ b/tests/SwitchTest/SwitchTest.ino @@ -160,6 +160,27 @@ AHA_TEST(SwitchTest, name_setter) { ) } +AHA_TEST(SwitchTest, object_id_setter) { + prepareTest + + HASwitch testSwitch(testUniqueId); + testSwitch.setObjectId("testId"); + + assertEntityConfig( + mock, + testSwitch, + ( + "{" + "\"obj_id\":\"testId\"," + "\"uniq_id\":\"uniqueSwitch\"," + "\"dev\":{\"ids\":\"testDevice\"}," + "\"stat_t\":\"testData/testDevice/uniqueSwitch/stat_t\"," + "\"cmd_t\":\"testData/testDevice/uniqueSwitch/cmd_t\"" + "}" + ) + ) +} + AHA_TEST(SwitchTest, device_class) { prepareTest