Merge branch 'emsesp:dev' into dev

This commit is contained in:
Proddy
2024-08-04 22:03:59 +02:00
committed by GitHub
16 changed files with 77 additions and 46 deletions

View File

@@ -291,7 +291,7 @@ const CustomEntitiesDialog = ({
fullWidth fullWidth
margin="normal" margin="normal"
type="number" type="number"
inputProps={{ min: '1', max: '27', step: '1' }} inputProps={{ min: '1', max: String(256 - editItem.offset), step: '1' }}
/> />
</Grid> </Grid>
)} )}

View File

@@ -127,7 +127,7 @@ const Settings: FC = () => {
icon={ViewModuleIcon} icon={ViewModuleIcon}
bgcolor="#efc34b" bgcolor="#efc34b"
label="Modules" label="Modules"
text="Activate or deactivate external modules" text={LL.MODULES_1()}
to="modules" to="modules"
/> />

View File

@@ -71,7 +71,7 @@ const de: Translation = {
TX_ISSUES: 'Tx-Probleme - versuchen Sie einen anderen Tx-Modus', TX_ISSUES: 'Tx-Probleme - versuchen Sie einen anderen Tx-Modus',
DISCONNECTED: 'Getrennt', DISCONNECTED: 'Getrennt',
EMS_SCAN: 'Möchten Sie wirklich eine vollständige Gerätesuche des EMS-Busses starten?', EMS_SCAN: 'Möchten Sie wirklich eine vollständige Gerätesuche des EMS-Busses starten?',
DATA_TRAFFIC: 'Data Traffic', // TODO Translate DATA_TRAFFIC: 'Datenverkehr',
EMS_DEVICE: 'EMS Gerät', EMS_DEVICE: 'EMS Gerät',
SUCCESS: 'ERFOLG', SUCCESS: 'ERFOLG',
FAIL: 'FEHLER', FAIL: 'FEHLER',
@@ -91,7 +91,7 @@ const de: Translation = {
NUM_SECONDS: '{num} Sekunde{{n}}', NUM_SECONDS: '{num} Sekunde{{n}}',
NUM_HOURS: '{num} Stunde{{n}}', NUM_HOURS: '{num} Stunde{{n}}',
NUM_MINUTES: '{num} Minute{{n}}', NUM_MINUTES: '{num} Minute{{n}}',
APPLICATION: 'Anwendungseinstellungen', APPLICATION: 'Anwendung',
CUSTOMIZATIONS: 'Anpassungen', CUSTOMIZATIONS: 'Anpassungen',
APPLICATION_RESTARTING: 'EMS-ESP startet neu', APPLICATION_RESTARTING: 'EMS-ESP startet neu',
INTERFACE_BOARD_PROFILE: 'Interface Platinenprofil', INTERFACE_BOARD_PROFILE: 'Interface Platinenprofil',
@@ -132,7 +132,7 @@ const de: Translation = {
LOGGING: 'Protokollierung', LOGGING: 'Protokollierung',
LOG_HEX: 'EMS-Telegramme hexadezimal protokollieren', LOG_HEX: 'EMS-Telegramme hexadezimal protokollieren',
ENABLE_SYSLOG: 'Syslog aktivieren', ENABLE_SYSLOG: 'Syslog aktivieren',
LOG_LEVEL: 'Log Level', LOG_LEVEL: 'Protokollebene',
MARK_INTERVAL: 'Intervallmarke', MARK_INTERVAL: 'Intervallmarke',
SECONDS: 'Sekunden', SECONDS: 'Sekunden',
MINUTES: 'Minuten', MINUTES: 'Minuten',
@@ -145,13 +145,13 @@ const de: Translation = {
CUSTOMIZATIONS_FULL: 'Ausgewählte Entitäten haben das Limit überschritten. Bitte stapelweise speichern', CUSTOMIZATIONS_FULL: 'Ausgewählte Entitäten haben das Limit überschritten. Bitte stapelweise speichern',
CUSTOMIZATIONS_SAVED: 'Anpassungen gespeichert', CUSTOMIZATIONS_SAVED: 'Anpassungen gespeichert',
CUSTOMIZATIONS_HELP_1: 'Wählen Sie ein Gerät aus und passen Sie die Entitäten mithilfe der Optionen an', CUSTOMIZATIONS_HELP_1: 'Wählen Sie ein Gerät aus und passen Sie die Entitäten mithilfe der Optionen an',
CUSTOMIZATIONS_HELP_2: 'als Favorit markieren', CUSTOMIZATIONS_HELP_2: 'Als Favorit markieren',
CUSTOMIZATIONS_HELP_3: 'Schreibaktion deaktivieren', CUSTOMIZATIONS_HELP_3: 'Schreibaktion deaktivieren',
CUSTOMIZATIONS_HELP_4: 'von MQTT und API ausschließen', CUSTOMIZATIONS_HELP_4: 'von MQTT und API ausschließen',
CUSTOMIZATIONS_HELP_5: 'Aus dem Kontrollzentrum ausblenden', CUSTOMIZATIONS_HELP_5: 'Aus dem Kontrollzentrum ausblenden',
CUSTOMIZATIONS_HELP_6: 'Aus dem Speicher löschen', CUSTOMIZATIONS_HELP_6: 'Aus dem Speicher löschen',
SELECT_DEVICE: 'Wählen Sie ein Gerät aus', SELECT_DEVICE: 'Wählen Sie ein Gerät aus',
SET_ALL: 'setzen Sie alle', SET_ALL: 'Setzen Sie alle',
OPTIONS: 'Optionen', OPTIONS: 'Optionen',
NAME: 'Name', NAME: 'Name',
CUSTOMIZATIONS_RESET: 'Möchten Sie wirklich alle Anpassungen entfernen, einschließlich der benutzerdefinierten Einstellungen der Temperatur- und Analogsensoren?', CUSTOMIZATIONS_RESET: 'Möchten Sie wirklich alle Anpassungen entfernen, einschließlich der benutzerdefinierten Einstellungen der Temperatur- und Analogsensoren?',
@@ -167,7 +167,7 @@ const de: Translation = {
FAILED: 'gescheitert', FAILED: 'gescheitert',
SUCCESSFUL: 'erfolgreich', SUCCESSFUL: 'erfolgreich',
SYSTEM: 'System', SYSTEM: 'System',
LOG_OF: '{0} Log', LOG_OF: '{0}protokoll',
STATUS_OF: '{0} Status', STATUS_OF: '{0} Status',
UPLOAD_DOWNLOAD: 'Hoch-/Herunterladen', UPLOAD_DOWNLOAD: 'Hoch-/Herunterladen',
VERSION_ON: 'Sie verwenden derzeit', VERSION_ON: 'Sie verwenden derzeit',
@@ -199,7 +199,7 @@ const de: Translation = {
ERROR: 'Unerwarteter Fehler, bitter versuchen Sie es erneut', ERROR: 'Unerwarteter Fehler, bitter versuchen Sie es erneut',
TIME_SET: 'Zeit gesetzt', TIME_SET: 'Zeit gesetzt',
MANAGE_USERS: 'Nutzerverwaltung', MANAGE_USERS: 'Nutzerverwaltung',
IS_ADMIN: 'ist Admin', IS_ADMIN: 'Ist Admin',
USER_WARNING: 'Sie müssen mindestens einen Admin-Nutzer konfigurieren', USER_WARNING: 'Sie müssen mindestens einen Admin-Nutzer konfigurieren',
ADD: 'Hinzufügen', ADD: 'Hinzufügen',
ACCESS_TOKEN_FOR: 'Zugangs-Token für', ACCESS_TOKEN_FOR: 'Zugangs-Token für',
@@ -317,19 +317,20 @@ const de: Translation = {
ACTIVELOW: 'Aktiv Negativ', ACTIVELOW: 'Aktiv Negativ',
UNCHANGED: 'Unverändert', UNCHANGED: 'Unverändert',
ALWAYS: 'Immer', ALWAYS: 'Immer',
ACTIVITY: 'Activity', // TODO translate ACTIVITY: 'Aktivität',
CONFIGURE: 'Configure {0}', // TODO translate CONFIGURE: 'Konfiguriere {0}',
SYSTEM_MEMORY: 'System Memory', // TODO translate SYSTEM_MEMORY: 'Systemspeicher',
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate APPLICATION_SETTINGS_1: 'Ändern Sie die EMS-ESP-Anwendungseinstellungen',
SECURITY_1: 'Add or remove users', // TODO translate SECURITY_1: 'Benutzer hinzufügen oder entfernen',
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate UPLOAD_DOWNLOAD_1: 'Einstellungen und Firmware hochladen/herunterladen',
MODULES: 'Module', // TODO translate MODULES: 'Module',
MODULES_UPDATED: 'Modules updated', // TODO translate MODULES_1: 'Externe Module aktivieren oder deaktivieren',
MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_UPDATED: 'Module aktualisiert',
MODULES_NONE: 'No external modules detected', // TODO translate MODULES_DESCRIPTION: 'Klicken Sie auf das Modul, um EMS-ESP-Bibliotheksmodule zu aktivieren oder zu deaktivieren',
RENAME: 'Rename', // TODO translate MODULES_NONE: 'Keine externen Module erkannt',
RENAME: 'Umbenennen',
ENABLE_MODBUS: 'Modbus aktivieren', ENABLE_MODBUS: 'Modbus aktivieren',
VIEW_LOG: 'View log to diagnose issues' // TODO translate VIEW_LOG: 'Sehen Sie sich das Protokoll an, um Probleme zu diagnostizieren'
}; };
export default de; export default de;

View File

@@ -324,6 +324,7 @@ const en: Translation = {
SECURITY_1: 'Add or remove users', SECURITY_1: 'Add or remove users',
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware',
MODULES: 'Modules', MODULES: 'Modules',
MODULES_1: 'Activate or deactivate external modules',
MODULES_UPDATED: 'Modules updated', MODULES_UPDATED: 'Modules updated',
MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules',
MODULES_NONE: 'No external modules detected', MODULES_NONE: 'No external modules detected',

View File

@@ -324,6 +324,7 @@ const fr: Translation = {
SECURITY_1: 'Add or remove users', // TODO translate SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
MODULES: 'Module', // TODO translate MODULES: 'Module', // TODO translate
MODULES_1: 'Activer ou désactiver les modules externes', // TODO translate
MODULES_UPDATED: 'Modules updated', // TODO translate MODULES_UPDATED: 'Modules updated', // TODO translate
MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
MODULES_NONE: 'No external modules detected', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate

View File

@@ -324,6 +324,7 @@ const it: Translation = {
SECURITY_1: 'Add or remove users', // TODO translate SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
MODULES: 'Module', // TODO translate MODULES: 'Module', // TODO translate
MODULES_1: 'Attiva o disattiva i moduli esterni', // TODO translate
MODULES_UPDATED: 'Modules updated', // TODO translate MODULES_UPDATED: 'Modules updated', // TODO translate
MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
MODULES_NONE: 'No external modules detected', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate

View File

@@ -324,6 +324,7 @@ const nl: Translation = {
SECURITY_1: 'Gebruikers toevoegen of verwijderen', SECURITY_1: 'Gebruikers toevoegen of verwijderen',
UPLOAD_DOWNLOAD_1: 'Upload-/downloadinstellingen en firmware', UPLOAD_DOWNLOAD_1: 'Upload-/downloadinstellingen en firmware',
MODULES: 'Module', MODULES: 'Module',
MODULES_1: 'Externe modules activeren of deactiveren', // TODO translate
MODULES_UPDATED: 'Modules geüpdatet', MODULES_UPDATED: 'Modules geüpdatet',
MODULES_DESCRIPTION: 'Klik op de module om EMS-ESP library modules te activeren of te deactiveren', MODULES_DESCRIPTION: 'Klik op de module om EMS-ESP library modules te activeren of te deactiveren',
MODULES_NONE: 'Geen externe modules gedetecteerd', MODULES_NONE: 'Geen externe modules gedetecteerd',

View File

@@ -324,6 +324,7 @@ const no: Translation = {
SECURITY_1: 'Add or remove users', // TODO translate SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
MODULES: 'Module', // TODO translate MODULES: 'Module', // TODO translate
MODULES_1: 'Aktiver eller deaktiver eksterne moduler', // TODO translate
MODULES_UPDATED: 'Modules updated', // TODO translate MODULES_UPDATED: 'Modules updated', // TODO translate
MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
MODULES_NONE: 'No external modules detected', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate

View File

@@ -324,6 +324,7 @@ const pl: BaseTranslation = {
SECURITY_1: 'Dodawanie i usuwanie użytkowników', SECURITY_1: 'Dodawanie i usuwanie użytkowników',
UPLOAD_DOWNLOAD_1: 'Wysyłanie/pobieranie ustawień i firmware', UPLOAD_DOWNLOAD_1: 'Wysyłanie/pobieranie ustawień i firmware',
MODULES: 'Module', // TODO translate MODULES: 'Module', // TODO translate
MODULES_1: 'Aktywuj lub dezaktywuj moduły zewnętrzne', // TODO translate
MODULES_UPDATED: 'Modules updated', // TODO translate MODULES_UPDATED: 'Modules updated', // TODO translate
MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
MODULES_NONE: 'No external modules detected', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate

View File

@@ -324,6 +324,7 @@ const sk: Translation = {
SECURITY_1: 'Add or remove users', // TODO translate SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
MODULES: 'Module', // TODO translate MODULES: 'Module', // TODO translate
MODULES_1: 'Aktivujte alebo deaktivujte externé moduly', // TODO translate
MODULES_UPDATED: 'Modules updated', // TODO translate MODULES_UPDATED: 'Modules updated', // TODO translate
MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
MODULES_NONE: 'No external modules detected', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate

View File

@@ -324,6 +324,7 @@ const sv: Translation = {
SECURITY_1: 'Add or remove users', // TODO translate SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
MODULES: 'Module', // TODO translate MODULES: 'Module', // TODO translate
MODULES_1: 'Aktivera eller avaktivera externa moduler', // TODO translate
MODULES_UPDATED: 'Modules updated', // TODO translate MODULES_UPDATED: 'Modules updated', // TODO translate
MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
MODULES_NONE: 'No external modules detected', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate

View File

@@ -324,6 +324,7 @@ const tr: Translation = {
SECURITY_1: 'Add or remove users', // TODO translate SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
MODULES: 'Module', // TODO translate MODULES: 'Module', // TODO translate
MODULES_1: 'Harici modülleri etkinleştirin veya devre dışı bırakın', // TODO translate
MODULES_UPDATED: 'Modules updated', // TODO translate MODULES_UPDATED: 'Modules updated', // TODO translate
MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
MODULES_NONE: 'No external modules detected', // TODO translate MODULES_NONE: 'No external modules detected', // TODO translate

View File

@@ -1106,8 +1106,8 @@ void Thermostat::process_RC300Set(std::shared_ptr<const Telegram> telegram) {
has_enumupdate(telegram, hc->reducemode, 5, 1); // 1-outdoor temp threshold, 2-room temp threshold, 3-reduced mode has_enumupdate(telegram, hc->reducemode, 5, 1); // 1-outdoor temp threshold, 2-room temp threshold, 3-reduced mode
has_update(telegram, hc->reducetemp, 9); has_update(telegram, hc->reducetemp, 9);
has_update(telegram, hc->noreducetemp, 12); has_update(telegram, hc->noreducetemp, 12);
has_enumupdate(telegram, hc->switchProgMode, 13, 1); // 1-level, 2-absolute
has_update(telegram, hc->remoteseltemp, 17); // see https://github.com/emsesp/EMS-ESP32/issues/590 has_update(telegram, hc->remoteseltemp, 17); // see https://github.com/emsesp/EMS-ESP32/issues/590
has_enumupdate(telegram, hc->switchProgMode, 19, 1); // 1-level, 2-absolute
has_update(telegram, hc->boost, 23); has_update(telegram, hc->boost, 23);
has_update(telegram, hc->boosttime, 24); has_update(telegram, hc->boosttime, 24);
has_update(telegram, hc->cooling, 28); has_update(telegram, hc->cooling, 28);
@@ -2290,7 +2290,7 @@ bool Thermostat::set_switchProgMode(const char * value, const int8_t id) {
if (!Helpers::value2enum(value, set, FL_(enum_switchProgMode))) { if (!Helpers::value2enum(value, set, FL_(enum_switchProgMode))) {
return false; return false;
} }
write_command(set_typeids[hc->hc()], 13, set + 1, set_typeids[hc->hc()]); write_command(set_typeids[hc->hc()], 19, set + 1, set_typeids[hc->hc()]);
return true; return true;
} }
@@ -4526,7 +4526,7 @@ void Thermostat::register_device_values_hc(std::shared_ptr<Thermostat::HeatingCi
register_device_value(tag, &hc->coolondelay, DeviceValueType::UINT8, FL_(coolondelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_coolondelay), 1, 48); register_device_value(tag, &hc->coolondelay, DeviceValueType::UINT8, FL_(coolondelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_coolondelay), 1, 48);
register_device_value(tag, &hc->cooloffdelay, DeviceValueType::UINT8, FL_(cooloffdelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_cooloffdelay), 1, 48); register_device_value(tag, &hc->cooloffdelay, DeviceValueType::UINT8, FL_(cooloffdelay), DeviceValueUOM::HOURS, MAKE_CF_CB(set_cooloffdelay), 1, 48);
register_device_value( register_device_value(
tag, &hc->switchProgMode, DeviceValueType::ENUM, FL_(enum_switchProgMode), FL_(control), DeviceValueUOM::NONE, MAKE_CF_CB(set_switchProgMode)); tag, &hc->switchProgMode, DeviceValueType::ENUM, FL_(enum_switchProgMode), FL_(switchProgMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_switchProgMode));
break; break;
case EMSdevice::EMS_DEVICE_FLAG_CRF: case EMSdevice::EMS_DEVICE_FLAG_CRF:

View File

@@ -360,7 +360,7 @@ MAKE_TRANSLATION(maintenanceTime, "maintenancetime", "time to next maintenance",
MAKE_TRANSLATION(emergencyOps, "emergencyops", "emergency operation", "Notoperation", "Noodoperatie", "Nöddrift", "praca w trybie awaryjnym", "nøddrift", "opération d'urgence", "acil durum çalışması", "operazione di emergenza", "núdzová prevádzka") MAKE_TRANSLATION(emergencyOps, "emergencyops", "emergency operation", "Notoperation", "Noodoperatie", "Nöddrift", "praca w trybie awaryjnym", "nøddrift", "opération d'urgence", "acil durum çalışması", "operazione di emergenza", "núdzová prevádzka")
MAKE_TRANSLATION(emergencyTemp, "emergencytemp", "emergency temperature", "Nottemperatur", "Noodtemperatuur", "Nöddrift temperatur", "temperatura w trybie awaryjnym", "nødtemperatur", "température d'urgence", "acil durum sıcaklığı", "temperatura di emergenza", "núdzová teplota") MAKE_TRANSLATION(emergencyTemp, "emergencytemp", "emergency temperature", "Nottemperatur", "Noodtemperatuur", "Nöddrift temperatur", "temperatura w trybie awaryjnym", "nødtemperatur", "température d'urgence", "acil durum sıcaklığı", "temperatura di emergenza", "núdzová teplota")
MAKE_TRANSLATION(pumpMode, "pumpmode", "boiler pump mode", "Kesselpumpen Modus", "Ketelpomp modus", "", "tryb pracy pompy kotła", "pumpemodus", "", "pompa modu", "modalità pompa caldaia", "režim kotlového čerpadla") // TODO translate MAKE_TRANSLATION(pumpMode, "pumpmode", "boiler pump mode", "Kesselpumpen Modus", "Ketelpomp modus", "", "tryb pracy pompy kotła", "pumpemodus", "", "pompa modu", "modalità pompa caldaia", "režim kotlového čerpadla") // TODO translate
MAKE_TRANSLATION(pumpCharacter, "pumpcharacter", "boiler pump characteristic", "boiler pump characteristic", "boiler pump characteristic", "boiler pump characteristic", "boiler pump characteristic", "boiler pump characteristic", "boiler pump characteristic", "boiler pump characteristic", "boiler pump characteristic", "boiler pump characteristic") // TODO translate MAKE_TRANSLATION(pumpCharacter, "pumpcharacter", "boiler pump characteristic", "Charakteristik der Kesselpumpe", "karakteristiek ketelpomp", "pannpumpsegenskaper", "charakterystyka pompy kotłowej", "kjelepumpekarakteristikk", "caractéristique de la pompe de la chaudière", "gazan nasosy", "caratteristica della pompa della caldaia", "charakteristika kotlového čerpadla") // TODO translate
MAKE_TRANSLATION(headertemp, "headertemp", "low loss header", "Hydr. Weiche", "open verdeler", "", "sprzęgło hydrauliczne", "", "bouteille de déc. hydr.", "isı bloğu gidiş suyu sıc.", "comp. idr.", "nízkostratová hlavica") // TODO translate MAKE_TRANSLATION(headertemp, "headertemp", "low loss header", "Hydr. Weiche", "open verdeler", "", "sprzęgło hydrauliczne", "", "bouteille de déc. hydr.", "isı bloğu gidiş suyu sıc.", "comp. idr.", "nízkostratová hlavica") // TODO translate
MAKE_TRANSLATION(heatblock, "heatblock", "heating block", "Wärmezelle", "Aanvoertemp. warmtecel", "", "blok grzewczy", "", "départ corps de chauffe", "Hid.denge kabı sıcaklığı", "mandata scamb. pr.", "vykurovací blok") // TODO translate MAKE_TRANSLATION(heatblock, "heatblock", "heating block", "Wärmezelle", "Aanvoertemp. warmtecel", "", "blok grzewczy", "", "départ corps de chauffe", "Hid.denge kabı sıcaklığı", "mandata scamb. pr.", "vykurovací blok") // TODO translate
@@ -738,6 +738,7 @@ MAKE_TRANSLATION(hpcooling, "cooling", "cooling", "Kühlen", "Koelen", "Kyler",
MAKE_TRANSLATION(coolstart, "coolstart", "cooling starttemp", "Kühlbetrieb ab") // TODO translate MAKE_TRANSLATION(coolstart, "coolstart", "cooling starttemp", "Kühlbetrieb ab") // TODO translate
MAKE_TRANSLATION(coolondelay, "coolondelay", "cooling on delay", "Einschaltverzögerung Kühlen") // TODO translate MAKE_TRANSLATION(coolondelay, "coolondelay", "cooling on delay", "Einschaltverzögerung Kühlen") // TODO translate
MAKE_TRANSLATION(cooloffdelay, "cooloffdelay", "cooling off delay", "Ausschaltverzögerung Kühlen") // TODO translate MAKE_TRANSLATION(cooloffdelay, "cooloffdelay", "cooling off delay", "Ausschaltverzögerung Kühlen") // TODO translate
MAKE_TRANSLATION(switchProgMode, "switchprogmode", "switch program mode", "Schaltprogram Modus") // TODO translate
// heatpump and RC100H // heatpump and RC100H
MAKE_TRANSLATION(airHumidity, "airhumidity", "relative air humidity", "relative Luftfeuchte", "Relatieve luchtvochtigheid", "Relativ Luftfuktighet", "wilgotność względna w pomieszczeniu", "luftfuktighet", "humidité relative air", "havadaki bağıl nem", "umidità relativa aria", "relatívna vlhkosť vzduchu") MAKE_TRANSLATION(airHumidity, "airhumidity", "relative air humidity", "relative Luftfeuchte", "Relatieve luchtvochtigheid", "Relativ Luftfuktighet", "wilgotność względna w pomieszczeniu", "luftfuktighet", "humidité relative air", "havadaki bağıl nem", "umidità relativa aria", "relatívna vlhkosť vzduchu")

View File

@@ -68,6 +68,11 @@ void WebCustomEntity::read(WebCustomEntity & webEntity, JsonObject root) {
StateUpdateResult WebCustomEntity::update(JsonObject root, WebCustomEntity & webCustomEntity) { StateUpdateResult WebCustomEntity::update(JsonObject root, WebCustomEntity & webCustomEntity) {
// reset everything to start fresh // reset everything to start fresh
Command::erase_device_commands(EMSdevice::DeviceType::CUSTOM); Command::erase_device_commands(EMSdevice::DeviceType::CUSTOM);
for (CustomEntityItem & entityItem : webCustomEntity.customEntityItems) {
if (entityItem.raw) {
delete[] entityItem.raw;
}
}
webCustomEntity.customEntityItems.clear(); webCustomEntity.customEntityItems.clear();
EMSESP::webCustomEntityService.ha_reset(); EMSESP::webCustomEntityService.ha_reset();
@@ -92,8 +97,10 @@ StateUpdateResult WebCustomEntity::update(JsonObject root, WebCustomEntity & web
entityItem.value_type = DeviceValueType::STRING; entityItem.value_type = DeviceValueType::STRING;
entityItem.writeable = true; entityItem.writeable = true;
} }
entityItem.raw = nullptr;
if (entityItem.value_type == DeviceValueType::BOOL) { if (entityItem.value_type == DeviceValueType::STRING) {
entityItem.raw = new uint8_t[(int)entityItem.factor + 1];
} else if (entityItem.value_type == DeviceValueType::BOOL) {
entityItem.value = EMS_VALUE_DEFAULT_BOOL; entityItem.value = EMS_VALUE_DEFAULT_BOOL;
} else if (entityItem.value_type == DeviceValueType::INT8) { } else if (entityItem.value_type == DeviceValueType::INT8) {
entityItem.value = EMS_VALUE_DEFAULT_INT8; entityItem.value = EMS_VALUE_DEFAULT_INT8;
@@ -136,19 +143,26 @@ bool WebCustomEntityService::command_setvalue(const char * value, const int8_t i
if (entityItem.ram == 1) { if (entityItem.ram == 1) {
entityItem.data = value; entityItem.data = value;
} else if (entityItem.value_type == DeviceValueType::STRING) { } else if (entityItem.value_type == DeviceValueType::STRING) {
char telegram[84]; auto telegram = strdup(value);
strlcpy(telegram, value, sizeof(telegram)); uint8_t * data = new uint8_t[(strlen(telegram)) / 3 + 1];
uint8_t data[EMS_MAX_TELEGRAM_LENGTH]; uint8_t count = 0;
uint8_t count = 0; char * p = strtok(telegram, " ,"); // delimiter
char * p = strtok(telegram, " ,"); // delimiter
while (p != nullptr) { while (p != nullptr) {
data[count++] = (uint8_t)strtol(p, 0, 16); data[count++] = (uint8_t)strtol(p, 0, 16);
p = strtok(nullptr, " ,"); p = strtok(nullptr, " ,");
} }
if (count == 0) { free(telegram);
return false; uint8_t offset = entityItem.offset;
uint8_t * dat = data;
while (count > 0) {
uint8_t len = std::min((int)count, 25);
EMSESP::send_write_request(entityItem.type_id, entityItem.device_id, offset, dat, len, 0);
offset += len;
count -= len;
dat += len;
} }
EMSESP::send_write_request(entityItem.type_id, entityItem.device_id, entityItem.offset, data, count, 0); delete[] data;
return true;
} else if (entityItem.value_type == DeviceValueType::BOOL) { } else if (entityItem.value_type == DeviceValueType::BOOL) {
bool v; bool v;
if (!Helpers::value2bool(value, v)) { if (!Helpers::value2bool(value, v)) {
@@ -558,18 +572,23 @@ bool WebCustomEntityService::get_value(std::shared_ptr<const Telegram> telegram)
const uint8_t len[] = {1, 1, 1, 2, 2, 3, 3, 4}; const uint8_t len[] = {1, 1, 1, 2, 2, 3, 3, 4};
for (auto & entity : *customEntityItems_) { for (auto & entity : *customEntityItems_) {
if (entity.value_type == DeviceValueType::STRING && telegram->type_id == entity.type_id && telegram->src == entity.device_id if (entity.value_type == DeviceValueType::STRING && telegram->type_id == entity.type_id && telegram->src == entity.device_id
&& telegram->offset <= entity.offset && (telegram->offset + telegram->message_length) >= (entity.offset + (uint8_t)entity.factor)) { && telegram->offset >= entity.offset) {
auto data = Helpers::data_to_hex(telegram->message_data, (uint8_t)entity.factor); auto length = std::min((int)telegram->offset - entity.offset + telegram->message_length, (int)entity.factor);
if (entity.data != data) { auto rest = std::min((int)entity.factor - telegram->offset + entity.offset, (int)telegram->message_length);
entity.data = data; if (rest > 0) {
if (Mqtt::publish_single()) { memcpy(&entity.raw[telegram->offset - entity.offset], telegram->message_data, rest);
publish_single(entity); auto data = Helpers::data_to_hex(entity.raw, (uint8_t)length);
} else if (EMSESP::mqtt_.get_publish_onchange(0)) { if (entity.data != data) {
has_change = true; entity.data = data;
if (Mqtt::publish_single()) {
publish_single(entity);
} else if (EMSESP::mqtt_.get_publish_onchange(0)) {
has_change = true;
}
char cmd[COMMAND_MAX_LENGTH];
snprintf(cmd, sizeof(cmd), "%s/%s", F_(custom), entity.name.c_str());
EMSESP::webSchedulerService.onChange(cmd);
} }
char cmd[COMMAND_MAX_LENGTH];
snprintf(cmd, sizeof(cmd), "%s/%s", F_(custom), entity.name.c_str());
EMSESP::webSchedulerService.onChange(cmd);
} }
} else if (entity.value_type != DeviceValueType::STRING && telegram->type_id == entity.type_id && telegram->src == entity.device_id } else if (entity.value_type != DeviceValueType::STRING && telegram->type_id == entity.type_id && telegram->src == entity.device_id
&& telegram->offset <= entity.offset && (telegram->offset + telegram->message_length) >= (entity.offset + len[entity.value_type])) { && telegram->offset <= entity.offset && (telegram->offset + telegram->message_length) >= (entity.offset + len[entity.value_type])) {

View File

@@ -39,6 +39,7 @@ class CustomEntityItem {
uint32_t value; uint32_t value;
std::string data; std::string data;
uint8_t ram; uint8_t ram;
uint8_t * raw;
}; };
class WebCustomEntity { class WebCustomEntity {