mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 08:19:52 +03:00
added a standalone test
This commit is contained in:
@@ -162,8 +162,15 @@ void WebCustomizationService::reset_customization(AsyncWebServerRequest * reques
|
|||||||
// send back list of device entities
|
// send back list of device entities
|
||||||
void WebCustomizationService::device_entities(AsyncWebServerRequest * request) {
|
void WebCustomizationService::device_entities(AsyncWebServerRequest * request) {
|
||||||
uint8_t id;
|
uint8_t id;
|
||||||
|
|
||||||
|
// for testing we hardcode the id to 1 - the boiler
|
||||||
|
#if defined(EMSESP_STANDALONE) && defined(EMSESP_TEST)
|
||||||
|
if (1) {
|
||||||
|
id = 1;
|
||||||
|
#else
|
||||||
if (request->hasParam(F_(id))) {
|
if (request->hasParam(F_(id))) {
|
||||||
id = Helpers::atoint(request->getParam(F_(id))->value().c_str()); // get id from url
|
id = Helpers::atoint(request->getParam(F_(id))->value().c_str()); // get id from url
|
||||||
|
#endif
|
||||||
|
|
||||||
auto * response = new AsyncJsonResponse(true, true); // array and msgpack
|
auto * response = new AsyncJsonResponse(true, true); // array and msgpack
|
||||||
|
|
||||||
@@ -178,7 +185,12 @@ void WebCustomizationService::device_entities(AsyncWebServerRequest * request) {
|
|||||||
#ifndef EMSESP_STANDALONE
|
#ifndef EMSESP_STANDALONE
|
||||||
JsonArray output = response->getRoot();
|
JsonArray output = response->getRoot();
|
||||||
emsdevice->generate_values_web_customization(output);
|
emsdevice->generate_values_web_customization(output);
|
||||||
|
#else
|
||||||
|
JsonDocument doc;
|
||||||
|
JsonArray output = doc.to<JsonArray>();
|
||||||
|
emsdevice->generate_values_web_customization(output);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(EMSESP_DEBUG)
|
#if defined(EMSESP_DEBUG)
|
||||||
size_t length = response->setLength();
|
size_t length = response->setLength();
|
||||||
EMSESP::logger().debug("Customizations buffer used: %d", length);
|
EMSESP::logger().debug("Customizations buffer used: %d", length);
|
||||||
@@ -379,15 +391,44 @@ void WebCustomizationService::test() {
|
|||||||
analog.type = 1;
|
analog.type = 1;
|
||||||
webCustomization.analogCustomizations.push_back(analog);
|
webCustomization.analogCustomizations.push_back(analog);
|
||||||
|
|
||||||
// EMS entities
|
// EMS entities, mark some as favorites
|
||||||
webCustomization.entityCustomizations.clear();
|
webCustomization.entityCustomizations.clear();
|
||||||
auto emsEntity = EntityCustomization();
|
auto emsEntity = EntityCustomization();
|
||||||
emsEntity.product_id = 123;
|
emsEntity.product_id = 123;
|
||||||
emsEntity.device_id = 8;
|
emsEntity.device_id = 8;
|
||||||
emsEntity.custom_name = "Custom Name!!";
|
emsEntity.custom_name = "My Custom Boiler";
|
||||||
emsEntity.entity_ids.push_back("08heatingactive|is my heating on?");
|
emsEntity.entity_ids.push_back("08heatingactive|is my heating on?");
|
||||||
|
emsEntity.entity_ids.push_back("08tapwateractive");
|
||||||
|
emsEntity.entity_ids.push_back("08selflowtemp|<90");
|
||||||
webCustomization.entityCustomizations.push_back(emsEntity);
|
webCustomization.entityCustomizations.push_back(emsEntity);
|
||||||
|
|
||||||
|
// since custom device name is loaded at discovery, we need to force it here
|
||||||
|
for (const auto & emsdevice : EMSESP::emsdevices) {
|
||||||
|
if (emsdevice->is_device_id(emsEntity.device_id)) {
|
||||||
|
emsdevice->custom_name(emsEntity.custom_name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ...and the same with the custom masks and names for entity values. It's done in EMSdevice::add_device_value()
|
||||||
|
// so we need to force it here
|
||||||
|
for (const auto & emsdevice : EMSESP::emsdevices) {
|
||||||
|
if (emsdevice->is_device_id(emsEntity.device_id)) {
|
||||||
|
// find the device value and set the mask and custom name to match the above fake data
|
||||||
|
for (auto & dv : emsdevice->devicevalues_) {
|
||||||
|
if (strcmp(dv.short_name, "heatingactive") == 0) {
|
||||||
|
dv.state = DeviceValueState::DV_FAVORITE; // set as favorite
|
||||||
|
dv.custom_fullname = "is my heating on?";
|
||||||
|
} else if (strcmp(dv.short_name, "tapwateractive") == 0) {
|
||||||
|
dv.state = DeviceValueState::DV_FAVORITE; // set as favorite
|
||||||
|
} else if (strcmp(dv.short_name, "selflowtemp") == 0) {
|
||||||
|
dv.state = DeviceValueState::DV_FAVORITE; // set as favorite
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return StateUpdateResult::CHANGED; // persist the changes
|
return StateUpdateResult::CHANGED; // persist the changes
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user