mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 08:19:52 +03:00
schedule upload & download feature
This commit is contained in:
@@ -69,6 +69,19 @@ const GeneralFileUpload: FC<UploadFileProps> = ({ 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 (
|
return (
|
||||||
<>
|
<>
|
||||||
{!uploading && (
|
{!uploading && (
|
||||||
@@ -114,6 +127,14 @@ const GeneralFileUpload: FC<UploadFileProps> = ({ uploadGeneralFile }) => {
|
|||||||
>
|
>
|
||||||
{LL.CUSTOMIZATIONS()}
|
{LL.CUSTOMIZATIONS()}
|
||||||
</Button>
|
</Button>
|
||||||
|
<Box color="warning.main">
|
||||||
|
<Typography mt={2} mb={1} variant="body2">
|
||||||
|
{LL.DOWNLOAD_SCHEDULE_TEXT()}{' '}
|
||||||
|
</Typography>
|
||||||
|
</Box>
|
||||||
|
<Button startIcon={<DownloadIcon />} variant="outlined" color="primary" onClick={() => downloadSchedule()}>
|
||||||
|
{LL.SCHEDULE()}
|
||||||
|
</Button>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ const de: Translation = {
|
|||||||
COMPACT: 'Kompakte Darstellung',
|
COMPACT: 'Kompakte Darstellung',
|
||||||
ENABLE_OTA: 'OTA Updates verwenden',
|
ENABLE_OTA: 'OTA Updates verwenden',
|
||||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Herunterladen der individuellen Entitätsanpassungen',
|
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',
|
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',
|
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',
|
UPLOADING: 'Hochladen',
|
||||||
@@ -310,7 +311,7 @@ const de: Translation = {
|
|||||||
LEAVE: 'Leave', // TODO translate
|
LEAVE: 'Leave', // TODO translate
|
||||||
SCHEDULER: 'Scheduler', // TODO translate
|
SCHEDULER: 'Scheduler', // TODO translate
|
||||||
SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', // 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
|
TIME: 'Time', // TODO translate
|
||||||
TIMER: 'Timer', // TODO translate
|
TIMER: 'Timer', // TODO translate
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ const en: Translation = {
|
|||||||
COMPACT: 'Compact',
|
COMPACT: 'Compact',
|
||||||
ENABLE_OTA: 'Enable OTA Updates',
|
ENABLE_OTA: 'Enable OTA Updates',
|
||||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Download the entity customizations',
|
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',
|
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',
|
UPLOAD_TEXT: 'Upload a new firmware (.bin) file, settings or customizations (.json) file below, for optional validation upload (.md5) first',
|
||||||
UPLOADING: 'Uploading',
|
UPLOADING: 'Uploading',
|
||||||
@@ -310,7 +311,7 @@ const en: Translation = {
|
|||||||
LEAVE: 'Leave',
|
LEAVE: 'Leave',
|
||||||
SCHEDULER: 'Scheduler',
|
SCHEDULER: 'Scheduler',
|
||||||
SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP',
|
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',
|
SCHEDULE: 'Schedule',
|
||||||
TIME: 'Time',
|
TIME: 'Time',
|
||||||
TIMER: 'Timer',
|
TIMER: 'Timer',
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ const fr: Translation = {
|
|||||||
COMPACT: 'Compact',
|
COMPACT: 'Compact',
|
||||||
ENABLE_OTA: 'Activer les updates OTA',
|
ENABLE_OTA: 'Activer les updates OTA',
|
||||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Télécharger les personnalisations d\'entités',
|
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.',
|
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)',
|
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',
|
UPLOADING: 'Téléchargement',
|
||||||
@@ -310,7 +311,7 @@ const fr: Translation = {
|
|||||||
LEAVE: 'Leave', // TODO translate
|
LEAVE: 'Leave', // TODO translate
|
||||||
SCHEDULER: 'Scheduler', // TODO translate
|
SCHEDULER: 'Scheduler', // TODO translate
|
||||||
SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', // 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
|
TIME: 'Time', // TODO translate
|
||||||
TIMER: 'Timer', // TODO translate
|
TIMER: 'Timer', // TODO translate
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ const nl: Translation = {
|
|||||||
COMPACT: 'Compact',
|
COMPACT: 'Compact',
|
||||||
ENABLE_OTA: 'Acitveer OTA Updates',
|
ENABLE_OTA: 'Acitveer OTA Updates',
|
||||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Download alle custom instellingen',
|
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',
|
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',
|
UPLOAD_TEXT: 'Upload een nieuwe firmware (.bin) file, instellingen of custom instellingen (.json) bestand hieronder',
|
||||||
UPLOADING: 'Uploading',
|
UPLOADING: 'Uploading',
|
||||||
@@ -310,7 +311,7 @@ const nl: Translation = {
|
|||||||
LEAVE: 'Leave', // TODO translate
|
LEAVE: 'Leave', // TODO translate
|
||||||
SCHEDULER: 'Scheduler', // TODO translate
|
SCHEDULER: 'Scheduler', // TODO translate
|
||||||
SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', // 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
|
TIME: 'Time', // TODO translate
|
||||||
TIMER: 'Timer', // TODO translate
|
TIMER: 'Timer', // TODO translate
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ const no: Translation = {
|
|||||||
COMPACT: 'Komprimere',
|
COMPACT: 'Komprimere',
|
||||||
ENABLE_OTA: 'Aktiviser OTA oppdateringer',
|
ENABLE_OTA: 'Aktiviser OTA oppdateringer',
|
||||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Last ned objektstilpasninger',
|
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',
|
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',
|
UPLOAD_TEXT: 'Last opp en ny firmware (.bin) fil, innstillinger eller tilpassninger (.json) fil nedenfor',
|
||||||
UPLOADING: 'Opplasting',
|
UPLOADING: 'Opplasting',
|
||||||
@@ -310,7 +311,7 @@ const no: Translation = {
|
|||||||
LEAVE: 'Leave', // TODO translate
|
LEAVE: 'Leave', // TODO translate
|
||||||
SCHEDULER: 'Scheduler', // TODO translate
|
SCHEDULER: 'Scheduler', // TODO translate
|
||||||
SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', // 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
|
TIME: 'Time', // TODO translate
|
||||||
TIMER: 'Timer', // TODO translate
|
TIMER: 'Timer', // TODO translate
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ const pl: BaseTranslation = {
|
|||||||
COMPACT: 'Kompaktowy',
|
COMPACT: 'Kompaktowy',
|
||||||
ENABLE_OTA: 'Aktywuj aktualizację OTA',
|
ENABLE_OTA: 'Aktywuj aktualizację OTA',
|
||||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Pobierz personalizacje',
|
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!',
|
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).',
|
||||||
UPLOADING: 'Wysłano',
|
UPLOADING: 'Wysłano',
|
||||||
@@ -310,7 +311,7 @@ const pl: BaseTranslation = {
|
|||||||
LEAVE: 'Leave', // TODO translate
|
LEAVE: 'Leave', // TODO translate
|
||||||
SCHEDULER: 'Scheduler', // TODO translate
|
SCHEDULER: 'Scheduler', // TODO translate
|
||||||
SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', // 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
|
SCHEDULE: 'Schedule', // TODO translate SCHEDULE: 'Schedule', // TODO translate
|
||||||
TIME: 'Time', // TODO translate
|
TIME: 'Time', // TODO translate
|
||||||
TIMER: 'Timer', // TODO translate
|
TIMER: 'Timer', // TODO translate
|
||||||
|
|||||||
@@ -208,6 +208,7 @@ const sv: Translation = {
|
|||||||
COMPACT: 'Komprimera',
|
COMPACT: 'Komprimera',
|
||||||
ENABLE_OTA: 'Aktivera OTA-uppdateringar',
|
ENABLE_OTA: 'Aktivera OTA-uppdateringar',
|
||||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Ladda ner entitetsanpassningar',
|
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',
|
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',
|
UPLOAD_TEXT: 'Ladda upp ett nytt firmware (.bin), inställningar eller anpassningar (.json) nedan',
|
||||||
UPLOADING: 'Laddar upp',
|
UPLOADING: 'Laddar upp',
|
||||||
@@ -310,7 +311,7 @@ const sv: Translation = {
|
|||||||
LEAVE: 'Leave', // TODO translate
|
LEAVE: 'Leave', // TODO translate
|
||||||
SCHEDULER: 'Scheduler', // TODO translate
|
SCHEDULER: 'Scheduler', // TODO translate
|
||||||
SCHEDULER_HELP_1: 'Add custom scheduled commands to automate EMS-ESP', // 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
|
TIME: 'Time', // TODO translate
|
||||||
TIMER: 'Timer', // TODO translate
|
TIMER: 'Timer', // TODO translate
|
||||||
|
|||||||
@@ -988,15 +988,18 @@ bool System::check_restore() {
|
|||||||
std::string settings_type = input["type"];
|
std::string settings_type = input["type"];
|
||||||
if (settings_type == "settings") {
|
if (settings_type == "settings") {
|
||||||
// It's a settings file. Parse each section separately. If it's system related it will require a reboot
|
// 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(NETWORK_SETTINGS_FILE, "Network Settings", input);
|
||||||
reboot_required |= saveSettings(AP_SETTINGS_FILE, "AP", input);
|
reboot_required |= saveSettings(AP_SETTINGS_FILE, "AP Settings", input);
|
||||||
reboot_required |= saveSettings(MQTT_SETTINGS_FILE, "MQTT", input);
|
reboot_required |= saveSettings(MQTT_SETTINGS_FILE, "MQTT Settings", input);
|
||||||
reboot_required |= saveSettings(NTP_SETTINGS_FILE, "NTP", input);
|
reboot_required |= saveSettings(NTP_SETTINGS_FILE, "NTP Settings", input);
|
||||||
reboot_required |= saveSettings(SECURITY_SETTINGS_FILE, "Security", input);
|
reboot_required |= saveSettings(SECURITY_SETTINGS_FILE, "Security Settings", input);
|
||||||
reboot_required |= saveSettings(EMSESP_SETTINGS_FILE, "Settings", input);
|
reboot_required |= saveSettings(EMSESP_SETTINGS_FILE, "Settings", input);
|
||||||
} else if (settings_type == "customizations") {
|
} else if (settings_type == "customizations") {
|
||||||
// it's a customization file, just replace it and there's no need to reboot
|
// it's a customization file, just replace it and there's no need to reboot
|
||||||
saveSettings(EMSESP_CUSTOMIZATION_FILE, "Customizations", input);
|
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 {
|
} else {
|
||||||
LOG_ERROR("Unrecognized file uploaded");
|
LOG_ERROR("Unrecognized file uploaded");
|
||||||
}
|
}
|
||||||
@@ -1115,7 +1118,7 @@ bool System::saveSettings(const char * filename, const char * section, JsonObjec
|
|||||||
if (section_json) {
|
if (section_json) {
|
||||||
File section_file = LittleFS.open(filename, "w");
|
File section_file = LittleFS.open(filename, "w");
|
||||||
if (section_file) {
|
if (section_file) {
|
||||||
LOG_INFO("Applying new %s settings", section);
|
LOG_INFO("Applying new %s", section);
|
||||||
serializeJson(section_json, section_file);
|
serializeJson(section_json, section_file);
|
||||||
section_file.close();
|
section_file.close();
|
||||||
return true; // reboot required
|
return true; // reboot required
|
||||||
|
|||||||
Reference in New Issue
Block a user