mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 00:09:51 +03:00
add clock to controller #439
This commit is contained in:
@@ -32,6 +32,7 @@
|
|||||||
- min/max in web value setting
|
- min/max in web value setting
|
||||||
- Extend customization to select if an entity is to be shown in the WebUI or forced as read-only [#317](https://github.com/emsesp/EMS-ESP32/issues/317)
|
- Extend customization to select if an entity is to be shown in the WebUI or forced as read-only [#317](https://github.com/emsesp/EMS-ESP32/issues/317)
|
||||||
- Added Moduline 400 installation parameters [PR #449 by @kwertie01](https://github.com/emsesp/EMS-ESP32/pull/449)
|
- Added Moduline 400 installation parameters [PR #449 by @kwertie01](https://github.com/emsesp/EMS-ESP32/pull/449)
|
||||||
|
- Read time from IVT-controller [#439](https://github.com/emsesp/EMS-ESP32/issues/439)
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
@@ -66,7 +67,7 @@
|
|||||||
- removed system/pin command, new commands in analogsensors
|
- removed system/pin command, new commands in analogsensors
|
||||||
- system/info device-info split to name/version/brand
|
- system/info device-info split to name/version/brand
|
||||||
- exclude list uses short-names, possible flags for web/api/mqtt excludes, readonly and favorite (selection not yet implemented)
|
- exclude list uses short-names, possible flags for web/api/mqtt excludes, readonly and favorite (selection not yet implemented)
|
||||||
- thermostat clock formate date-time: dd.mm.yyyy hh:mm:ss
|
- thermostat clock formate date-time: dd.mm.yyyy hh:mm
|
||||||
- RC300 summermode as other thermostats `winter/summer` instead of `off/on`
|
- RC300 summermode as other thermostats `winter/summer` instead of `off/on`
|
||||||
|
|
||||||
## **BREAKING CHANGES:**
|
## **BREAKING CHANGES:**
|
||||||
|
|||||||
@@ -24,6 +24,28 @@ REGISTER_FACTORY(Controller, EMSdevice::DeviceType::CONTROLLER);
|
|||||||
|
|
||||||
Controller::Controller(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const std::string & name, uint8_t flags, uint8_t brand)
|
Controller::Controller(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const std::string & name, uint8_t flags, uint8_t brand)
|
||||||
: EMSdevice(device_type, device_id, product_id, version, name, flags, brand) {
|
: EMSdevice(device_type, device_id, product_id, version, name, flags, brand) {
|
||||||
|
// IVT broadcasts Thermostat time from controller (0x09) if display is off.
|
||||||
|
register_telegram_type(0x06, F("RCTime"), false, MAKE_PF_CB(process_dateTime));
|
||||||
|
register_device_value(DeviceValueTAG::TAG_NONE, &dateTime_, DeviceValueType::STRING, nullptr, FL_(dateTime), DeviceValueUOM::NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// process_dateTime - type 0x06 - date and time from a thermostat - 14 bytes long, IVT only
|
||||||
|
void Controller::process_dateTime(std::shared_ptr<const Telegram> telegram) {
|
||||||
|
if (telegram->offset > 0 || telegram->message_length < 5) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
char newdatetime[sizeof(dateTime_)];
|
||||||
|
// publich as dd.mm.yyyy hh:mmF
|
||||||
|
snprintf(newdatetime,
|
||||||
|
sizeof(dateTime_),
|
||||||
|
"%02d.%02d.%04d %02d:%02d",
|
||||||
|
telegram->message_data[3],
|
||||||
|
telegram->message_data[1] - 1,
|
||||||
|
(telegram->message_data[0] & 0x7F) + 2000,
|
||||||
|
telegram->message_data[2],
|
||||||
|
telegram->message_data[4]);
|
||||||
|
has_update(dateTime_, newdatetime, sizeof(dateTime_));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace emsesp
|
} // namespace emsesp
|
||||||
@@ -26,6 +26,10 @@ namespace emsesp {
|
|||||||
class Controller : public EMSdevice {
|
class Controller : public EMSdevice {
|
||||||
public:
|
public:
|
||||||
Controller(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const std::string & name, uint8_t flags, uint8_t brand);
|
Controller(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const std::string & name, uint8_t flags, uint8_t brand);
|
||||||
|
|
||||||
|
void process_dateTime(std::shared_ptr<const Telegram> telegram);
|
||||||
|
|
||||||
|
char dateTime_[25];
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace emsesp
|
} // namespace emsesp
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ void WebDataService::core_data(AsyncWebServerRequest * request) {
|
|||||||
// Ignore Contoller
|
// Ignore Contoller
|
||||||
JsonArray devices = root.createNestedArray("devices");
|
JsonArray devices = root.createNestedArray("devices");
|
||||||
for (const auto & emsdevice : EMSESP::emsdevices) {
|
for (const auto & emsdevice : EMSESP::emsdevices) {
|
||||||
if (emsdevice && emsdevice->device_type() != EMSdevice::DeviceType::CONTROLLER) {
|
if (emsdevice && (emsdevice->device_type() != EMSdevice::DeviceType::CONTROLLER || emsdevice->count_entities() > 0)) {
|
||||||
JsonObject obj = devices.createNestedObject();
|
JsonObject obj = devices.createNestedObject();
|
||||||
obj["i"] = emsdevice->unique_id(); // a unique id
|
obj["i"] = emsdevice->unique_id(); // a unique id
|
||||||
obj["t"] = emsdevice->device_type_name(); // type
|
obj["t"] = emsdevice->device_type_name(); // type
|
||||||
|
|||||||
Reference in New Issue
Block a user