This commit is contained in:
Proddy
2023-01-28 16:20:16 +01:00
parent 59af1fd62a
commit 94473bdeaa
9 changed files with 51 additions and 44 deletions

View File

@@ -38,7 +38,7 @@ const APStatusForm: FC = () => {
case APNetworkStatus.ACTIVE: case APNetworkStatus.ACTIVE:
return LL.ACTIVE(); return LL.ACTIVE();
case APNetworkStatus.INACTIVE: case APNetworkStatus.INACTIVE:
return LL.INACTIVE(); return LL.INACTIVE(0);
case APNetworkStatus.LINGERING: case APNetworkStatus.LINGERING:
return 'Lingering until idle'; return 'Lingering until idle';
default: default:

View File

@@ -67,7 +67,7 @@ const NetworkStatusForm: FC = () => {
const networkStatus = ({ status }: NetworkStatus) => { const networkStatus = ({ status }: NetworkStatus) => {
switch (status) { switch (status) {
case NetworkConnectionStatus.WIFI_STATUS_NO_SHIELD: case NetworkConnectionStatus.WIFI_STATUS_NO_SHIELD:
return LL.INACTIVE(); return LL.INACTIVE(1);
case NetworkConnectionStatus.WIFI_STATUS_IDLE: case NetworkConnectionStatus.WIFI_STATUS_IDLE:
return LL.IDLE(); return LL.IDLE();
case NetworkConnectionStatus.WIFI_STATUS_NO_SSID_AVAIL: case NetworkConnectionStatus.WIFI_STATUS_NO_SSID_AVAIL:

View File

@@ -74,7 +74,7 @@ const NTPStatusForm: FC = () => {
case NTPSyncStatus.NTP_DISABLED: case NTPSyncStatus.NTP_DISABLED:
return LL.NOT_ENABLED(); return LL.NOT_ENABLED();
case NTPSyncStatus.NTP_INACTIVE: case NTPSyncStatus.NTP_INACTIVE:
return LL.INACTIVE(); return LL.INACTIVE(0);
case NTPSyncStatus.NTP_ACTIVE: case NTPSyncStatus.NTP_ACTIVE:
return LL.ACTIVE(); return LL.ACTIVE();
default: default:

View File

@@ -3,6 +3,7 @@ import Schema, { ValidateFieldsError } from 'async-validator';
import CancelIcon from '@mui/icons-material/Cancel'; import CancelIcon from '@mui/icons-material/Cancel';
import PersonAddIcon from '@mui/icons-material/PersonAdd'; import PersonAddIcon from '@mui/icons-material/PersonAdd';
import SaveIcon from '@mui/icons-material/Save';
import { Button, Checkbox, Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'; import { Button, Checkbox, Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material';
@@ -88,13 +89,13 @@ const UserForm: FC<UserFormProps> = ({ creating, validator, user, setUser, onDon
{LL.CANCEL()} {LL.CANCEL()}
</Button> </Button>
<Button <Button
startIcon={<PersonAddIcon />} startIcon={creating ? <PersonAddIcon /> : <SaveIcon />}
variant="outlined" variant="outlined"
onClick={validateAndDone} onClick={validateAndDone}
color="primary" color="primary"
autoFocus autoFocus
> >
{LL.ADD(0)} {creating ? LL.ADD(0) : LL.UPDATE()}
</Button> </Button>
</DialogActions> </DialogActions>
</> </>

View File

@@ -49,7 +49,7 @@ const pl: BaseTranslation = {
APPLY_CHANGES: 'Apply Changes ({0})', // TODO translate APPLY_CHANGES: 'Apply Changes ({0})', // TODO translate
UPDATE: 'Update', // TODO translate UPDATE: 'Update', // TODO translate
REMOVE: 'Usuń', REMOVE: 'Usuń',
PROBLEM_UPDATING: 'Problem z aktualizacją!', PROBLEM_UPDATING: 'Problem z uaktualnieniem!',
PROBLEM_LOADING: 'Problem z załadowaniem!', PROBLEM_LOADING: 'Problem z załadowaniem!',
ACCESS_DENIED: 'Brak dostępu!', ACCESS_DENIED: 'Brak dostępu!',
ANALOG_SENSOR: 'urządzenia podłączonego do EMS-ESP', ANALOG_SENSOR: 'urządzenia podłączonego do EMS-ESP',
@@ -74,7 +74,7 @@ const pl: BaseTranslation = {
EMS_BUS_WARNING: 'Brak połączenia z magistralą EMS. Jeśli ten błąd występuje dłużej niż kilka sekund, sprawdź ustawienia oraz profil płytki interfejsu.', EMS_BUS_WARNING: 'Brak połączenia z magistralą EMS. Jeśli ten błąd występuje dłużej niż kilka sekund, sprawdź ustawienia oraz profil płytki interfejsu.',
EMS_BUS_SCANNING: 'Trwa skanowanie urządzeń na magistrali EMS...', EMS_BUS_SCANNING: 'Trwa skanowanie urządzeń na magistrali EMS...',
CONNECTED: '{{połączono|połączenie|}}', CONNECTED: '{{połączono|połączenie|}}',
TX_ISSUES: 'Problem z zapisem na magistralę EMS. Spróbuj wybrać inny "Tryb transmisji (Tx)".', TX_ISSUES: 'problem z zapisem na magistralę EMS, spróbuj wybrać inny "Tryb transmisji (Tx)"',
DISCONNECTED: 'brak połączenia', DISCONNECTED: 'brak połączenia',
EMS_SCAN: 'Czy na pewno wykonać pełne skanowanie magistrali EMS?', EMS_SCAN: 'Czy na pewno wykonać pełne skanowanie magistrali EMS?',
EMS_BUS_STATUS: 'Status magistrali EMS', EMS_BUS_STATUS: 'Status magistrali EMS',
@@ -105,9 +105,9 @@ const pl: BaseTranslation = {
NUM_MINUTES: '{num} minu{{t|ta|ty|ty|t}}', NUM_MINUTES: '{num} minu{{t|ta|ty|ty|t}}',
APPLICATION_SETTINGS: 'Ustawienia aplikacji', APPLICATION_SETTINGS: 'Ustawienia aplikacji',
CUSTOMIZATIONS: 'Personalizacja', CUSTOMIZATIONS: 'Personalizacja',
APPLICATION_RESTARTING: 'Trwa ponowne uruchamianie...', APPLICATION_RESTARTING: 'Trwa ponowne uruchamianie',
INTERFACE_BOARD_PROFILE: 'Profil płytki interfejsu', INTERFACE_BOARD_PROFILE: 'Profil płytki interfejsu',
BOARD_PROFILE_TEXT: 'Wybierz z listy gotowy profil płytki interfejsu lub wybierając "własny..." skonfiguruj posiadany sprzęt samodzielnie.', BOARD_PROFILE_TEXT: 'Wybierz z listy gotowy profil płytki interfejsu lub "własny..." i samodzielnie skonfiguruj posiadany sprzęt.',
BOARD_PROFILE: 'Profil płytki', BOARD_PROFILE: 'Profil płytki',
CUSTOM: 'własny', CUSTOM: 'własny',
GPIO_OF: 'GPIO {0}', GPIO_OF: 'GPIO {0}',
@@ -141,7 +141,7 @@ const pl: BaseTranslation = {
LOG_HEX: 'Loguj telegramy EMS w systemie szesnastkowym (hex)', LOG_HEX: 'Loguj telegramy EMS w systemie szesnastkowym (hex)',
ENABLE_SYSLOG: 'Aktywuj SysLog', ENABLE_SYSLOG: 'Aktywuj SysLog',
LOG_LEVEL: 'Poziom logowania', LOG_LEVEL: 'Poziom logowania',
MARK_INTERVAL: 'Oznaczaj interwały (0=brak)', MARK_INTERVAL: 'Znaczniki interwałów (0=brak)',
SECONDS: 'sekund', SECONDS: 'sekund',
MINUTES: 'minut', MINUTES: 'minut',
HOURS: 'godzin', HOURS: 'godzin',
@@ -203,9 +203,9 @@ const pl: BaseTranslation = {
FLASH: 'Flash (rozmiar / taktowanie)', FLASH: 'Flash (rozmiar / taktowanie)',
APPSIZE: 'Aplikacja (wykorzystane / wolne)', APPSIZE: 'Aplikacja (wykorzystane / wolne)',
FILESYSTEM: 'System plików (wykorzystane / wolne)', FILESYSTEM: 'System plików (wykorzystane / wolne)',
BUFFER_SIZE: 'maksymalny rozmiar bufora', BUFFER_SIZE: 'Maksymalna pojemność bufora (ilość wpisów)',
COMPACT: 'Kompaktowy', COMPACT: 'Kompaktowy',
ENABLE_OTA: 'Aktywuj aktualizacje OTA', ENABLE_OTA: 'Aktywuj aktualizację OTA',
DOWNLOAD_CUSTOMIZATION_TEXT: 'Pobierz personalizacje', DOWNLOAD_CUSTOMIZATION_TEXT: 'Pobierz personalizacje',
DOWNLOAD_SETTINGS_TEXT: 'Pobierz ustawienia aplikacji. Uważaj jeśli udostępniasz plik z ustawieniami, ponieważ zawiera on hasła oraz inne wrażliwe informacje!', DOWNLOAD_SETTINGS_TEXT: 'Pobierz ustawienia aplikacji. Uważaj jeśli udostępniasz plik z ustawieniami, ponieważ zawiera on hasła oraz inne wrażliwe informacje!',
UPLOAD_TEXT: 'Wyślij firmware (.bin), ustawienia lub personalizacje (.json). Opcjonalnie, wyślij wcześniej plik walidacji (.md5).', UPLOAD_TEXT: 'Wyślij firmware (.bin), ustawienia lub personalizacje (.json). Opcjonalnie, wyślij wcześniej plik walidacji (.md5).',
@@ -223,23 +223,23 @@ const pl: BaseTranslation = {
USER: '{{Użytkownik|użytkownika|}}', USER: '{{Użytkownik|użytkownika|}}',
MODIFY: 'Edycja', MODIFY: 'Edycja',
SU_TEXT: 'Hasło "su" (super-użytkownika) służy do podpisywania tokenów autoryzujących oraz włączania uprawnień administratora w konsoli.', SU_TEXT: 'Hasło "su" (super-użytkownika) służy do podpisywania tokenów autoryzujących oraz włączania uprawnień administratora w konsoli.',
NOT_ENABLED: 'nieaktywny', NOT_ENABLED: 'nie aktywowano',
ERRORS_OF: 'Błędy {0}', ERRORS_OF: 'Błędy {0}',
DISCONNECT_REASON: 'Przyczyna braku połączenia', DISCONNECT_REASON: 'Przyczyna braku połączenia',
ENABLE_MQTT: 'Aktywuj MQTT', ENABLE_MQTT: 'Aktywuj MQTT',
BROKER: 'brokera', BROKER: 'brokera',
CLIENT: 'klienta', CLIENT: 'klienta',
BASE_TOPIC: 'Prefiks bazowy', BASE_TOPIC: 'Prefiks bazowy (unikalny!)',
OPTIONAL: 'opcjonalny', OPTIONAL: 'opcjonalny',
FORMATTING: 'Formatowanie', FORMATTING: 'Formatowanie',
MQTT_FORMAT: 'Sposób publikowania danych', MQTT_FORMAT: 'Sposób publikowania danych',
MQTT_NEST_1: 'zagnieżdżone w pojedynczym temacie', MQTT_NEST_1: 'zagnieżdżone w jednym temacie',
MQTT_NEST_2: 'jako indywidualne tematy', MQTT_NEST_2: 'jako oddzielne tematy',
MQTT_RESPONSE: 'Rezultat wykonania komendy publikuj w temacie "response"', MQTT_RESPONSE: 'Rezultat wykonania komendy publikuj w temacie "response"',
MQTT_PUBLISH_TEXT_1: 'Publikuj tematy z pojedynczą wartością bezpośrednio po zmianie', MQTT_PUBLISH_TEXT_1: 'Tematy z pojedynczą wartością publikuj po jej zmianie',
MQTT_PUBLISH_TEXT_2: 'Publikuj w temacie "command" (ioBroker)', MQTT_PUBLISH_TEXT_2: 'Publikuj w tematach "command" (ioBroker)',
MQTT_PUBLISH_TEXT_3: 'Włącz opcję "MQTT discovery" (Home Assistant, Domoticz)', MQTT_PUBLISH_TEXT_3: 'Włącz opcję "MQTT discovery" (Home Assistant, Domoticz)',
MQTT_PUBLISH_TEXT_4: 'Prefiks dla tematów "MQTT discovery"', MQTT_PUBLISH_TEXT_4: 'Prefiks dla "MQTT discovery"',
MQTT_PUBLISH_INTERVALS: 'Interwały publikowania', MQTT_PUBLISH_INTERVALS: 'Interwały publikowania',
MQTT_INT_BOILER: 'Kotły i pompy ciepła', MQTT_INT_BOILER: 'Kotły i pompy ciepła',
MQTT_INT_THERMOSTATS: 'Termostaty', MQTT_INT_THERMOSTATS: 'Termostaty',
@@ -251,10 +251,10 @@ const pl: BaseTranslation = {
MQTT_ENTITY_FORMAT: 'Format "Entity ID"', MQTT_ENTITY_FORMAT: 'Format "Entity ID"',
MQTT_ENTITY_FORMAT_0: 'długa nazwa (jak w v3.4)', MQTT_ENTITY_FORMAT_0: 'długa nazwa (jak w v3.4)',
MQTT_ENTITY_FORMAT_1: 'krótka nazwa', MQTT_ENTITY_FORMAT_1: 'krótka nazwa',
MQTT_ENTITY_FORMAT_2: 'instancja + krótka nazwa', MQTT_ENTITY_FORMAT_2: 'prefiks bazowy + krótka nazwa',
MQTT_CLEAN_SESSION: 'Ustawiaj flagę "Clean session"', MQTT_CLEAN_SESSION: 'Ustawiaj flagę "Clean session"',
MQTT_RETAIN_FLAG: 'Ustawiaj flagę "Retain"', MQTT_RETAIN_FLAG: 'Ustawiaj flagę "Retain"',
INACTIVE: 'nieaktywny', INACTIVE: 'nieaktywn{{y|a|}}',
ACTIVE: 'aktywny', ACTIVE: 'aktywny',
UNKNOWN: 'nieznany', UNKNOWN: 'nieznany',
SET_TIME: '{{Ustaw zegar|Ustawianie zegara|}}', SET_TIME: '{{Ustaw zegar|Ustawianie zegara|}}',
@@ -265,17 +265,17 @@ const pl: BaseTranslation = {
NTP_SERVER: 'Serwer NTP', NTP_SERVER: 'Serwer NTP',
TIME_ZONE: 'Strefa czasowa', TIME_ZONE: 'Strefa czasowa',
ACCESS_POINT: '{{Punkt|punktu|}} {{dostępowy|dostępowego|}}', ACCESS_POINT: '{{Punkt|punktu|}} {{dostępowy|dostępowego|}}',
AP_PROVIDE: 'Aktywuj punkt dostępowy', AP_PROVIDE: 'Punkt dostępowy',
AP_PROVIDE_TEXT_1: 'zawsze', AP_PROVIDE_TEXT_1: 'zawsze aktywny',
AP_PROVIDE_TEXT_2: 'gdy połączenie WiFi jest rozłączone', AP_PROVIDE_TEXT_2: 'aktywny jeśli brak połączenia z siecią',
AP_PROVIDE_TEXT_3: 'nigdy', AP_PROVIDE_TEXT_3: 'nieaktywny',
AP_PREFERRED_CHANNEL: 'Preferowany kanał', AP_PREFERRED_CHANNEL: 'Preferowany kanał',
AP_HIDE_SSID: 'Ukryj SSID', AP_HIDE_SSID: 'Ukryj SSID',
AP_CLIENTS: 'Liczba klientów', AP_CLIENTS: 'Liczba klientów',
AP_MAX_CLIENTS: 'Maksymalna liczba klientów', AP_MAX_CLIENTS: 'Maksymalna liczba klientów',
AP_LOCAL_IP: 'Lokalny adres IP', AP_LOCAL_IP: 'Lokalny adres IP',
NETWORK_SCAN: 'Skanowanie sieci WiFi', NETWORK_SCAN: 'Skanowanie sieci WiFi',
IDLE: 'uśpiony', IDLE: 'bezczynna',
LOST: 'zostało utracone.', LOST: 'zostało utracone.',
SCANNING: 'Skanuję', SCANNING: 'Skanuję',
SCAN_AGAIN: 'Skanuj ponownie', SCAN_AGAIN: 'Skanuj ponownie',
@@ -285,7 +285,7 @@ const pl: BaseTranslation = {
TX_POWER: 'Moc nadawania', TX_POWER: 'Moc nadawania',
HOSTNAME: 'Nazwa w sieci', HOSTNAME: 'Nazwa w sieci',
NETWORK_DISABLE_SLEEP: 'Wyłącz tryb usypiania WiFi', NETWORK_DISABLE_SLEEP: 'Wyłącz tryb usypiania WiFi',
NETWORK_LOW_BAND: 'Używaj zmniejszonej przepustowości WiFi', NETWORK_LOW_BAND: 'Używaj mniejszej szerokości pasma WiFi (20MHz)',
NETWORK_USE_DNS: 'Włącz wsparcie dla mDNS', NETWORK_USE_DNS: 'Włącz wsparcie dla mDNS',
NETWORK_ENABLE_CORS: 'Włącz wsparcie dla CORS', NETWORK_ENABLE_CORS: 'Włącz wsparcie dla CORS',
NETWORK_CORS_ORIGIN: 'CORS origin', NETWORK_CORS_ORIGIN: 'CORS origin',

View File

@@ -124,7 +124,7 @@ const char * EMSdevice::device_type_2_device_name(const uint8_t device_type) {
case DeviceType::HEATSOURCE: case DeviceType::HEATSOURCE:
return F_(heatsource); return F_(heatsource);
default: default:
return Helpers::translated_word(FL_(unknown)); return Helpers::translated_word(FL_(unknown), true);
} }
} }
@@ -159,7 +159,7 @@ const char * EMSdevice::device_type_2_device_name_translated() {
default: default:
break; break;
} }
return Helpers::translated_word(FL_(unknown)); return Helpers::translated_word(FL_(unknown_device));
} }
// returns device_type from a non-translated EN string // returns device_type from a non-translated EN string
@@ -474,6 +474,7 @@ void EMSdevice::add_device_value(uint8_t tag,
uint16_t max) { uint16_t max) {
// initialize the device value depending on it's type // initialize the device value depending on it's type
// ignoring DeviceValueType::CMD and DeviceValueType::TIME // ignoring DeviceValueType::CMD and DeviceValueType::TIME
if (type == DeviceValueType::STRING) { if (type == DeviceValueType::STRING) {
*(char *)(value_p) = {'\0'}; // this is important for string functions like strlen() to work later *(char *)(value_p) = {'\0'}; // this is important for string functions like strlen() to work later
} else if (type == DeviceValueType::INT) { } else if (type == DeviceValueType::INT) {

View File

@@ -446,11 +446,11 @@ class EMSdevice {
bool ha_config_firstrun_ = true; // this means a first setup of HA is needed after a restart bool ha_config_firstrun_ = true; // this means a first setup of HA is needed after a restart
struct TelegramFunction { struct TelegramFunction {
uint16_t telegram_type_id_; // it's type_id const uint16_t telegram_type_id_; // it's type_id
const char * telegram_type_name_; // e.g. RC20Message const char * telegram_type_name_; // e.g. RC20Message
bool fetch_; // if this type_id be queried automatically bool fetch_; // if this type_id be queried automatically
bool received_; bool received_;
process_function_p process_function_; const process_function_p process_function_;
TelegramFunction(uint16_t telegram_type_id, const char * telegram_type_name, bool fetch, bool received, const process_function_p process_function) TelegramFunction(uint16_t telegram_type_id, const char * telegram_type_name, bool fetch, bool received, const process_function_p process_function)
: telegram_type_id_(telegram_type_id) : telegram_type_id_(telegram_type_id)

View File

@@ -1070,41 +1070,45 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, const
// check for known device IDs // check for known device IDs
if (device_id == EMSdevice::EMS_DEVICE_ID_RFSENSOR) { if (device_id == EMSdevice::EMS_DEVICE_ID_RFSENSOR) {
// see: https://github.com/emsesp/EMS-ESP32/issues/103#issuecomment-911717342 and https://github.com/emsesp/EMS-ESP32/issues/624 // see: https://github.com/emsesp/EMS-ESP32/issues/103#issuecomment-911717342 and https://github.com/emsesp/EMS-ESP32/issues/624
name = "rf room temperature sensor"; name = "RF room temperature sensor";
device_type = DeviceType::THERMOSTAT; device_type = DeviceType::THERMOSTAT;
} else if (device_id == EMSdevice::EMS_DEVICE_ID_ROOMTHERMOSTAT) { } else if (device_id == EMSdevice::EMS_DEVICE_ID_ROOMTHERMOSTAT) {
name = "generic thermostat"; name = "Generic thermostat";
device_type = DeviceType::THERMOSTAT; device_type = DeviceType::THERMOSTAT;
flags = DeviceFlags::EMS_DEVICE_FLAG_RC10 | DeviceFlags::EMS_DEVICE_FLAG_NO_WRITE; flags = DeviceFlags::EMS_DEVICE_FLAG_RC10 | DeviceFlags::EMS_DEVICE_FLAG_NO_WRITE;
} else if (device_id == EMSdevice::EMS_DEVICE_ID_RS232) { } else if (device_id == EMSdevice::EMS_DEVICE_ID_RS232) {
name = "RS232"; name = "RS232";
device_type = DeviceType::CONNECT; device_type = DeviceType::CONNECT;
} else if (device_id == EMSdevice::EMS_DEVICE_ID_TERMINAL) { } else if (device_id == EMSdevice::EMS_DEVICE_ID_TERMINAL) {
name = "terminal"; name = "Terminal";
device_type = DeviceType::CONNECT; device_type = DeviceType::CONNECT;
} else if (device_id == EMSdevice::EMS_DEVICE_ID_SERVICEKEY) { } else if (device_id == EMSdevice::EMS_DEVICE_ID_SERVICEKEY) {
name = "service key"; name = "Service Key";
device_type = DeviceType::CONNECT; device_type = DeviceType::CONNECT;
} else if (device_id == EMSdevice::EMS_DEVICE_ID_CASCADE) { } else if (device_id == EMSdevice::EMS_DEVICE_ID_CASCADE) {
name = "cascade"; name = "Cascade";
device_type = DeviceType::CONNECT; device_type = DeviceType::CONNECT;
} else if (device_id == EMSdevice::EMS_DEVICE_ID_EASYCOM) { } else if (device_id == EMSdevice::EMS_DEVICE_ID_EASYCOM) {
// see https://github.com/emsesp/EMS-ESP/issues/460#issuecomment-709553012 // see https://github.com/emsesp/EMS-ESP/issues/460#issuecomment-709553012
name = "modem"; name = "Modem";
device_type = DeviceType::CONNECT; device_type = DeviceType::CONNECT;
} else if (device_id == EMSdevice::EMS_DEVICE_ID_CONVERTER) { } else if (device_id == EMSdevice::EMS_DEVICE_ID_CONVERTER) {
name = "converter"; // generic name = "Converter"; // generic
} else if (device_id == EMSdevice::EMS_DEVICE_ID_CLOCK) { } else if (device_id == EMSdevice::EMS_DEVICE_ID_CLOCK) {
name = "clock"; // generic name = "Clock"; // generic
device_type = DeviceType::CONTROLLER; device_type = DeviceType::CONTROLLER;
} else if (device_id == EMSdevice::EMS_DEVICE_ID_CONTROLLER) { } else if (device_id == EMSdevice::EMS_DEVICE_ID_CONTROLLER) {
name = "generic controller"; name = "Generic Controller";
device_type = DeviceType::CONTROLLER; device_type = DeviceType::CONTROLLER;
} else if (device_id == EMSdevice::EMS_DEVICE_ID_BOILER) { } else if (device_id == EMSdevice::EMS_DEVICE_ID_BOILER) {
name = "generic boiler"; name = "Generic Boiler";
device_type = DeviceType::BOILER; device_type = DeviceType::BOILER;
flags = DeviceFlags::EMS_DEVICE_FLAG_HEATPUMP; flags = DeviceFlags::EMS_DEVICE_FLAG_HEATPUMP;
LOG_WARNING("Unknown EMS boiler. Using generic profile. Please report on GitHub."); LOG_WARNING("Unknown EMS boiler. Using generic profile. Please report on GitHub.");
} else if (device_id >= 0x68 && device_id <= 0x6F) {
// test for https://github.com/emsesp/EMS-ESP32/issues/882
name = "Cascaded Controller";
device_type = DeviceType::CONTROLLER;
} else { } else {
LOG_WARNING("Unrecognized EMS device (device ID 0x%02X, no product ID). Please report on GitHub.", device_id); LOG_WARNING("Unrecognized EMS device (device ID 0x%02X, no product ID). Please report on GitHub.", device_id);
return false; return false;

View File

@@ -47,6 +47,7 @@ MAKE_PSTR_LIST(alert_device, "Alert Module", "Alarmmodul", "Alert Module", "Larm
MAKE_PSTR_LIST(pump_device, "Pump Module", "Pumpenmodul", "Pump Module", "Pumpmodul") MAKE_PSTR_LIST(pump_device, "Pump Module", "Pumpenmodul", "Pump Module", "Pumpmodul")
MAKE_PSTR_LIST(heatsource_device, "Heatsource", "Heizquelle", "Heatsource", "Värmekälla") MAKE_PSTR_LIST(heatsource_device, "Heatsource", "Heizquelle", "Heatsource", "Värmekälla")
MAKE_PSTR_LIST(sensors_device, "Sensors", "Sensoren", "Sensoren", "Sensorer", "czujniki", "Sensorer", "Capteurs") MAKE_PSTR_LIST(sensors_device, "Sensors", "Sensoren", "Sensoren", "Sensorer", "czujniki", "Sensorer", "Capteurs")
MAKE_PSTR_LIST(unknown_device, "Unknown", "Unbekannt", "Onbekend", "Okänt", "Nieznane urządzenie", "Ukjent", "Inconnu")
// commands // commands
MAKE_PSTR_LIST(info_cmd, "lists all values", "Liste aller Werte") MAKE_PSTR_LIST(info_cmd, "lists all values", "Liste aller Werte")