diff --git a/interface/src/framework/system/GeneralFileUpload.tsx b/interface/src/framework/system/GeneralFileUpload.tsx index b8e36c765..402365f8b 100644 --- a/interface/src/framework/system/GeneralFileUpload.tsx +++ b/interface/src/framework/system/GeneralFileUpload.tsx @@ -69,6 +69,19 @@ const GeneralFileUpload: FC = ({ uploadGeneralFile }) => { } }; + const downloadSchedule = async () => { + try { + const response = await EMSESP.readSchedule(); + if (response.status !== 200) { + enqueueSnackbar(LL.PROBLEM_LOADING(), { variant: 'error' }); + } else { + saveFile(response.data, 'schedule'); + } + } catch (error) { + enqueueSnackbar(extractErrorMessage(error, LL.PROBLEM_LOADING()), { variant: 'error' }); + } + }; + return ( <> {!uploading && ( @@ -114,6 +127,14 @@ const GeneralFileUpload: FC = ({ uploadGeneralFile }) => { > {LL.CUSTOMIZATIONS()} + + + {LL.DOWNLOAD_SCHEDULE_TEXT()}{' '} + + + )} diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts index 0b6e8b2cf..b10e879aa 100644 --- a/interface/src/i18n/de/index.ts +++ b/interface/src/i18n/de/index.ts @@ -208,6 +208,7 @@ const de: Translation = { COMPACT: 'Kompakte Darstellung', ENABLE_OTA: 'OTA Updates verwenden', DOWNLOAD_CUSTOMIZATION_TEXT: 'Herunterladen der individuellen Entitätsanpassungen', + DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events', // TODO translate DOWNLOAD_SETTINGS_TEXT: 'Herunterladen der Anwendungseinstellungen. Vorsicht beim Teilen der Einstellungen, da sie Passwörter und andere sensitive Einstellungen enthalten', UPLOAD_TEXT: 'Hochladen von neuer Firmware (.bin), Geräte- oder Entitätseinstellungen (.json), zur optionalen Validitätsprüfung zuerst die (.md5) Datei hochladen', UPLOADING: 'Hochladen', @@ -310,7 +311,7 @@ const de: Translation = { LEAVE: 'Leave', // TODO translate SCHEDULER: 'Scheduler', // TODO translate SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', // TODO translate - SCHEDULER_HELP_2: 'The NTP service needs to be active if using the calendar', // TODO translate + SCHEDULER_HELP_2: 'Note: The NTP service needs to be active if using the calendar', // TODO translate SCHEDULE: 'Schedule', // TODO translate TIME: 'Time', // TODO translate TIMER: 'Timer', // TODO translate diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts index e7330c0a0..1f484be66 100644 --- a/interface/src/i18n/en/index.ts +++ b/interface/src/i18n/en/index.ts @@ -208,6 +208,7 @@ const en: Translation = { COMPACT: 'Compact', ENABLE_OTA: 'Enable OTA Updates', DOWNLOAD_CUSTOMIZATION_TEXT: 'Download the entity customizations', + DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events', DOWNLOAD_SETTINGS_TEXT: 'Download the application settings. Be careful when sharing your settings as this file contains passwords and other sensitive system information', UPLOAD_TEXT: 'Upload a new firmware (.bin) file, settings or customizations (.json) file below, for optional validation upload (.md5) first', UPLOADING: 'Uploading', @@ -310,7 +311,7 @@ const en: Translation = { LEAVE: 'Leave', SCHEDULER: 'Scheduler', SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', - SCHEDULER_HELP_2: 'The NTP service needs to be active if using the calendar', + SCHEDULER_HELP_2: 'Note: The NTP service needs to be active if using the calendar', SCHEDULE: 'Schedule', TIME: 'Time', TIMER: 'Timer', diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts index 1d6752dc0..cb6c4502b 100644 --- a/interface/src/i18n/fr/index.ts +++ b/interface/src/i18n/fr/index.ts @@ -208,6 +208,7 @@ const fr: Translation = { COMPACT: 'Compact', ENABLE_OTA: 'Activer les updates OTA', DOWNLOAD_CUSTOMIZATION_TEXT: 'Télécharger les personnalisations d\'entités', + DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events', // TODO translate DOWNLOAD_SETTINGS_TEXT: 'Téléchargez les paramètres de l\'application. Soyez prudent lorsque vous partagez vos paramètres car ce fichier contient des mots de passe et d\'autres informations système sensibles.', UPLOAD_TEXT: 'Téléchargez un nouveau fichier de firmware (.bin), un fichier de paramètres ou de personnalisations (.json) ci-dessous, pour une validation optionnelle téléchargez d\'abord un fichier (.md5)', UPLOADING: 'Téléchargement', @@ -310,7 +311,7 @@ const fr: Translation = { LEAVE: 'Leave', // TODO translate SCHEDULER: 'Scheduler', // TODO translate SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', // TODO translate - SCHEDULER_HELP_2: 'The NTP service needs to be active if using the calendar', // TODO translate + SCHEDULER_HELP_2: 'Note: The NTP service needs to be active if using the calendar', // TODO translate SCHEDULE: 'Schedule', // TODO translate TIME: 'Time', // TODO translate TIMER: 'Timer', // TODO translate diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts index c963f6bb1..939d0b081 100644 --- a/interface/src/i18n/nl/index.ts +++ b/interface/src/i18n/nl/index.ts @@ -208,6 +208,7 @@ const nl: Translation = { COMPACT: 'Compact', ENABLE_OTA: 'Acitveer OTA Updates', DOWNLOAD_CUSTOMIZATION_TEXT: 'Download alle custom instellingen', + DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events', // TODO translate DOWNLOAD_SETTINGS_TEXT: 'Download de applicatie settings. Wees voorzichting met het delen van dit bestand want het bevat o.a. de wachtwoorden in plain text', UPLOAD_TEXT: 'Upload een nieuwe firmware (.bin) file, instellingen of custom instellingen (.json) bestand hieronder', UPLOADING: 'Uploading', @@ -310,7 +311,7 @@ const nl: Translation = { LEAVE: 'Leave', // TODO translate SCHEDULER: 'Scheduler', // TODO translate SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', // TODO translate - SCHEDULER_HELP_2: 'The NTP service needs to be active if using the calendar', // TODO translate + SCHEDULER_HELP_2: 'Note: The NTP service needs to be active if using the calendar', // TODO translate SCHEDULE: 'Schedule', // TODO translate TIME: 'Time', // TODO translate TIMER: 'Timer', // TODO translate diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts index 1e143b8fb..e0d157a0d 100644 --- a/interface/src/i18n/no/index.ts +++ b/interface/src/i18n/no/index.ts @@ -208,6 +208,7 @@ const no: Translation = { COMPACT: 'Komprimere', ENABLE_OTA: 'Aktiviser OTA oppdateringer', DOWNLOAD_CUSTOMIZATION_TEXT: 'Last ned objektstilpasninger', + DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events', // TODO translate DOWNLOAD_SETTINGS_TEXT: 'Last ned applikasjonskonfigurasjon. Vær varsom med å dele fila da den inneholder passord og annen sensitiv system informasjon', UPLOAD_TEXT: 'Last opp en ny firmware (.bin) fil, innstillinger eller tilpassninger (.json) fil nedenfor', UPLOADING: 'Opplasting', @@ -310,7 +311,7 @@ const no: Translation = { LEAVE: 'Leave', // TODO translate SCHEDULER: 'Scheduler', // TODO translate SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', // TODO translate - SCHEDULER_HELP_2: 'The NTP service needs to be active if using the calendar', // TODO translate + SCHEDULER_HELP_2: 'Note: The NTP service needs to be active if using the calendar', // TODO translate SCHEDULE: 'Schedule', // TODO translate TIME: 'Time', // TODO translate TIMER: 'Timer', // TODO translate diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts index 2a7c7d893..6c2bb2c1f 100644 --- a/interface/src/i18n/pl/index.ts +++ b/interface/src/i18n/pl/index.ts @@ -208,6 +208,7 @@ const pl: BaseTranslation = { COMPACT: 'Kompaktowy', ENABLE_OTA: 'Aktywuj aktualizację OTA', DOWNLOAD_CUSTOMIZATION_TEXT: 'Pobierz personalizacje', + DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events', // TODO translate 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).', UPLOADING: 'Wysłano', @@ -310,7 +311,7 @@ const pl: BaseTranslation = { LEAVE: 'Leave', // TODO translate SCHEDULER: 'Scheduler', // TODO translate SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', // TODO translate - SCHEDULER_HELP_2: 'The NTP service needs to be active if using the calendar', // TODO translate + SCHEDULER_HELP_2: 'Note: The NTP service needs to be active if using the calendar', // TODO translate SCHEDULE: 'Schedule', // TODO translate SCHEDULE: 'Schedule', // TODO translate TIME: 'Time', // TODO translate TIMER: 'Timer', // TODO translate diff --git a/interface/src/i18n/sv/index.ts b/interface/src/i18n/sv/index.ts index cc258c7b8..5036b447c 100644 --- a/interface/src/i18n/sv/index.ts +++ b/interface/src/i18n/sv/index.ts @@ -208,6 +208,7 @@ const sv: Translation = { COMPACT: 'Komprimera', ENABLE_OTA: 'Aktivera OTA-uppdateringar', DOWNLOAD_CUSTOMIZATION_TEXT: 'Ladda ner entitetsanpassningar', + DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events', // TODO translate DOWNLOAD_SETTINGS_TEXT: 'Ladda ner applikationsinställningar. Var försiktig om du delar dina iställlningar då de innehåller lösenord och annan känslig systeminformation', UPLOAD_TEXT: 'Ladda upp ett nytt firmware (.bin), inställningar eller anpassningar (.json) nedan', UPLOADING: 'Laddar upp', @@ -310,7 +311,7 @@ const sv: Translation = { LEAVE: 'Leave', // TODO translate SCHEDULER: 'Scheduler', // TODO translate SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', // TODO translate - SCHEDULER_HELP_2: 'The NTP service needs to be active if using the calendar', // TODO translate + SCHEDULER_HELP_2: 'Note: The NTP service needs to be active if using the calendar', // TODO translate SCHEDULE: 'Schedule', // TODO translate TIME: 'Time', // TODO translate TIMER: 'Timer', // TODO translate diff --git a/src/system.cpp b/src/system.cpp index 1dfe00843..2ec6cbc1e 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -988,15 +988,18 @@ bool System::check_restore() { std::string settings_type = input["type"]; if (settings_type == "settings") { // It's a settings file. Parse each section separately. If it's system related it will require a reboot - reboot_required = saveSettings(NETWORK_SETTINGS_FILE, "Network", input); - reboot_required |= saveSettings(AP_SETTINGS_FILE, "AP", input); - reboot_required |= saveSettings(MQTT_SETTINGS_FILE, "MQTT", input); - reboot_required |= saveSettings(NTP_SETTINGS_FILE, "NTP", input); - reboot_required |= saveSettings(SECURITY_SETTINGS_FILE, "Security", input); + reboot_required = saveSettings(NETWORK_SETTINGS_FILE, "Network Settings", input); + reboot_required |= saveSettings(AP_SETTINGS_FILE, "AP Settings", input); + reboot_required |= saveSettings(MQTT_SETTINGS_FILE, "MQTT Settings", input); + reboot_required |= saveSettings(NTP_SETTINGS_FILE, "NTP Settings", input); + reboot_required |= saveSettings(SECURITY_SETTINGS_FILE, "Security Settings", input); reboot_required |= saveSettings(EMSESP_SETTINGS_FILE, "Settings", input); } else if (settings_type == "customizations") { // it's a customization file, just replace it and there's no need to reboot saveSettings(EMSESP_CUSTOMIZATION_FILE, "Customizations", input); + } else if (settings_type == "schedule") { + // it's a schedule file, just replace it and there's no need to reboot + saveSettings(EMSESP_SCHEDULER_FILE, "Schedule", input); } else { LOG_ERROR("Unrecognized file uploaded"); } @@ -1115,7 +1118,7 @@ bool System::saveSettings(const char * filename, const char * section, JsonObjec if (section_json) { File section_file = LittleFS.open(filename, "w"); if (section_file) { - LOG_INFO("Applying new %s settings", section); + LOG_INFO("Applying new %s", section); serializeJson(section_json, section_file); section_file.close(); return true; // reboot required