mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
@@ -327,7 +327,7 @@ const de: Translation = {
|
|||||||
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_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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ const en: Translation = {
|
|||||||
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware',
|
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware',
|
||||||
MODULES: 'Modules',
|
MODULES: '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'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ const fr: Translation = {
|
|||||||
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_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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ const it: Translation = {
|
|||||||
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_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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ const no: Translation = {
|
|||||||
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_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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ const pl: BaseTranslation = {
|
|||||||
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_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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ const sk: Translation = {
|
|||||||
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_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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ const sv: Translation = {
|
|||||||
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_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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ const tr: Translation = {
|
|||||||
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_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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,9 @@ import { toast } from 'react-toastify';
|
|||||||
|
|
||||||
import CancelIcon from '@mui/icons-material/Cancel';
|
import CancelIcon from '@mui/icons-material/Cancel';
|
||||||
import CircleIcon from '@mui/icons-material/Circle';
|
import CircleIcon from '@mui/icons-material/Circle';
|
||||||
import PowerSettingsNewIcon from '@mui/icons-material/PowerSettingsNew';
|
|
||||||
import WarningIcon from '@mui/icons-material/Warning';
|
import WarningIcon from '@mui/icons-material/Warning';
|
||||||
import { Box, Button, Typography } from '@mui/material';
|
import { Box, Button, Typography } from '@mui/material';
|
||||||
|
|
||||||
import * as SystemApi from 'api/system';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Body,
|
Body,
|
||||||
Cell,
|
Cell,
|
||||||
@@ -26,11 +23,9 @@ import {
|
|||||||
BlockNavigation,
|
BlockNavigation,
|
||||||
ButtonRow,
|
ButtonRow,
|
||||||
FormLoader,
|
FormLoader,
|
||||||
MessageBox,
|
|
||||||
SectionContent,
|
SectionContent,
|
||||||
useLayoutTitle
|
useLayoutTitle
|
||||||
} from 'components';
|
} from 'components';
|
||||||
import RestartMonitor from 'framework/system/RestartMonitor';
|
|
||||||
import { useI18nContext } from 'i18n/i18n-react';
|
import { useI18nContext } from 'i18n/i18n-react';
|
||||||
|
|
||||||
import * as EMSESP from './api';
|
import * as EMSESP from './api';
|
||||||
@@ -40,13 +35,10 @@ import type { ModuleItem, Modules } from './types';
|
|||||||
const Modules: FC = () => {
|
const Modules: FC = () => {
|
||||||
const { LL } = useI18nContext();
|
const { LL } = useI18nContext();
|
||||||
const [numChanges, setNumChanges] = useState<number>(0);
|
const [numChanges, setNumChanges] = useState<number>(0);
|
||||||
const [licenseChanges, setLicenseChanges] = useState<number>(0);
|
|
||||||
const blocker = useBlocker(numChanges !== 0);
|
const blocker = useBlocker(numChanges !== 0);
|
||||||
|
|
||||||
const [selectedModuleItem, setSelectedModuleItem] = useState<ModuleItem>();
|
const [selectedModuleItem, setSelectedModuleItem] = useState<ModuleItem>();
|
||||||
const [dialogOpen, setDialogOpen] = useState<boolean>(false);
|
const [dialogOpen, setDialogOpen] = useState<boolean>(false);
|
||||||
const [restarting, setRestarting] = useState<boolean>(false);
|
|
||||||
const [restartNeeded, setRestartNeeded] = useState<boolean>(false);
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
data: modules,
|
data: modules,
|
||||||
@@ -56,17 +48,6 @@ const Modules: FC = () => {
|
|||||||
initialData: []
|
initialData: []
|
||||||
});
|
});
|
||||||
|
|
||||||
const { send: restartCommand } = useRequest(SystemApi.restart(), {
|
|
||||||
immediate: false
|
|
||||||
});
|
|
||||||
|
|
||||||
const restart = async () => {
|
|
||||||
await restartCommand().catch((error: Error) => {
|
|
||||||
toast.error(error.message);
|
|
||||||
});
|
|
||||||
setRestarting(true);
|
|
||||||
};
|
|
||||||
|
|
||||||
const { send: writeModules } = useRequest(
|
const { send: writeModules } = useRequest(
|
||||||
(data: Modules) => EMSESP.writeModules(data),
|
(data: Modules) => EMSESP.writeModules(data),
|
||||||
{
|
{
|
||||||
@@ -140,17 +121,12 @@ const Modules: FC = () => {
|
|||||||
return mi.enabled !== mi.o_enabled || mi.license !== mi.o_license;
|
return mi.enabled !== mi.o_enabled || mi.license !== mi.o_license;
|
||||||
}
|
}
|
||||||
|
|
||||||
function hasModuleLicenseChanged(mi: ModuleItem) {
|
|
||||||
return mi.license !== mi.o_license;
|
|
||||||
}
|
|
||||||
|
|
||||||
const updateModuleItem = (updatedItem: ModuleItem) => {
|
const updateModuleItem = (updatedItem: ModuleItem) => {
|
||||||
updateState('modules', (data: ModuleItem[]) => {
|
updateState('modules', (data: ModuleItem[]) => {
|
||||||
const new_data = data.map((mi) =>
|
const new_data = data.map((mi) =>
|
||||||
mi.id === updatedItem.id ? { ...mi, ...updatedItem } : mi
|
mi.id === updatedItem.id ? { ...mi, ...updatedItem } : mi
|
||||||
);
|
);
|
||||||
setNumChanges(new_data.filter((mi) => hasModulesChanged(mi)).length);
|
setNumChanges(new_data.filter((mi) => hasModulesChanged(mi)).length);
|
||||||
setLicenseChanges(new_data.filter((mi) => hasModuleLicenseChanged(mi)).length);
|
|
||||||
return new_data;
|
return new_data;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -172,7 +148,6 @@ const Modules: FC = () => {
|
|||||||
.finally(() => {
|
.finally(() => {
|
||||||
setNumChanges(0);
|
setNumChanges(0);
|
||||||
});
|
});
|
||||||
setRestartNeeded(licenseChanges > 0);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const renderContent = () => {
|
const renderContent = () => {
|
||||||
@@ -213,8 +188,10 @@ const Modules: FC = () => {
|
|||||||
<HeaderRow>
|
<HeaderRow>
|
||||||
<HeaderCell />
|
<HeaderCell />
|
||||||
<HeaderCell>{LL.NAME(0)}</HeaderCell>
|
<HeaderCell>{LL.NAME(0)}</HeaderCell>
|
||||||
|
{/* TODO translate */}
|
||||||
<HeaderCell>Author</HeaderCell>
|
<HeaderCell>Author</HeaderCell>
|
||||||
<HeaderCell>{LL.VERSION()}</HeaderCell>
|
<HeaderCell>{LL.VERSION()}</HeaderCell>
|
||||||
|
{/* TODO translate */}
|
||||||
<HeaderCell>Message</HeaderCell>
|
<HeaderCell>Message</HeaderCell>
|
||||||
<HeaderCell>{LL.STATUS_OF('')}</HeaderCell>
|
<HeaderCell>{LL.STATUS_OF('')}</HeaderCell>
|
||||||
</HeaderRow>
|
</HeaderRow>
|
||||||
@@ -247,43 +224,30 @@ const Modules: FC = () => {
|
|||||||
)}
|
)}
|
||||||
</Table>
|
</Table>
|
||||||
|
|
||||||
{restartNeeded ? (
|
<Box mt={1} display="flex" flexWrap="wrap">
|
||||||
<MessageBox my={2} level="warning" message={LL.RESTART_TEXT(0)}>
|
<Box flexGrow={1}>
|
||||||
<Button
|
{numChanges !== 0 && (
|
||||||
startIcon={<PowerSettingsNewIcon />}
|
<ButtonRow>
|
||||||
variant="contained"
|
<Button
|
||||||
color="error"
|
startIcon={<CancelIcon />}
|
||||||
onClick={restart}
|
variant="outlined"
|
||||||
>
|
onClick={onCancel}
|
||||||
{LL.RESTART()}
|
color="secondary"
|
||||||
</Button>
|
>
|
||||||
</MessageBox>
|
{LL.CANCEL()}
|
||||||
) : (
|
</Button>
|
||||||
<Box mt={1} display="flex" flexWrap="wrap">
|
<Button
|
||||||
<Box flexGrow={1}>
|
startIcon={<WarningIcon color="warning" />}
|
||||||
{numChanges !== 0 && (
|
variant="contained"
|
||||||
<ButtonRow>
|
color="info"
|
||||||
<Button
|
onClick={saveModules}
|
||||||
startIcon={<CancelIcon />}
|
>
|
||||||
variant="outlined"
|
{LL.APPLY_CHANGES(numChanges)}
|
||||||
onClick={onCancel}
|
</Button>
|
||||||
color="secondary"
|
</ButtonRow>
|
||||||
>
|
)}
|
||||||
{LL.CANCEL()}
|
|
||||||
</Button>
|
|
||||||
<Button
|
|
||||||
startIcon={<WarningIcon color="warning" />}
|
|
||||||
variant="contained"
|
|
||||||
color="info"
|
|
||||||
onClick={saveModules}
|
|
||||||
>
|
|
||||||
{LL.APPLY_CHANGES(numChanges)}
|
|
||||||
</Button>
|
|
||||||
</ButtonRow>
|
|
||||||
)}
|
|
||||||
</Box>
|
|
||||||
</Box>
|
</Box>
|
||||||
)}
|
</Box>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -291,7 +255,7 @@ const Modules: FC = () => {
|
|||||||
return (
|
return (
|
||||||
<SectionContent>
|
<SectionContent>
|
||||||
{blocker ? <BlockNavigation blocker={blocker} /> : null}
|
{blocker ? <BlockNavigation blocker={blocker} /> : null}
|
||||||
{restarting ? <RestartMonitor /> : renderContent()}
|
{renderContent()}
|
||||||
{selectedModuleItem && (
|
{selectedModuleItem && (
|
||||||
<ModulesDialog
|
<ModulesDialog
|
||||||
open={dialogOpen}
|
open={dialogOpen}
|
||||||
|
|||||||
@@ -55,9 +55,7 @@ const ModulesDialog = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Dialog sx={dialogStyle} open={open} onClose={onClose}>
|
<Dialog sx={dialogStyle} open={open} onClose={onClose}>
|
||||||
<DialogTitle>
|
<DialogTitle>{LL.EDIT() + ' ' + editItem.key}</DialogTitle>
|
||||||
{LL.EDIT() + ' ' + LL.MODULES() + ' : ' + editItem.key}
|
|
||||||
</DialogTitle>
|
|
||||||
<DialogContent dividers>
|
<DialogContent dividers>
|
||||||
<Grid container>
|
<Grid container>
|
||||||
<BlockFormControlLabel
|
<BlockFormControlLabel
|
||||||
|
|||||||
@@ -11,13 +11,13 @@
|
|||||||
; -DEMSESP_DE_ONLY ; only DE translated entity names
|
; -DEMSESP_DE_ONLY ; only DE translated entity names
|
||||||
; -DEMSESP_EN_ONLY ; only EN translated entity names
|
; -DEMSESP_EN_ONLY ; only EN translated entity names
|
||||||
; -DEMSESP_PINGTEST ; send log message every 1/2 second
|
; -DEMSESP_PINGTEST ; send log message every 1/2 second
|
||||||
; my_build_flags = -DEMSESP_TEST
|
my_build_flags = -DEMSESP_TEST
|
||||||
; my_build_flags = -DEMSESP_DEBUG -DEMSESP_TEST
|
; my_build_flags = -DEMSESP_DEBUG -DEMSESP_TEST
|
||||||
; my_build_flags = -DEMSESP_DEBUG -DEMSESP_TEST -DEMSESP_PINGTEST
|
; my_build_flags = -DEMSESP_DEBUG -DEMSESP_TEST -DEMSESP_PINGTEST
|
||||||
|
|
||||||
[platformio]
|
[platformio]
|
||||||
default_envs = esp32_4M
|
; default_envs = esp32_4M
|
||||||
; default_envs = esp32_16M
|
default_envs = esp32_16M
|
||||||
; default_envs = lolin_s3
|
; default_envs = lolin_s3
|
||||||
; default_envs = native
|
; default_envs = native
|
||||||
; default_envs = debug
|
; default_envs = debug
|
||||||
@@ -26,10 +26,10 @@ default_envs = esp32_4M
|
|||||||
[env]
|
[env]
|
||||||
; upload settings
|
; upload settings
|
||||||
; for USB
|
; for USB
|
||||||
; upload_protocol = esptool
|
upload_protocol = esptool
|
||||||
; upload_port = /dev/ttyUSB*
|
upload_port = /dev/ttyUSB*
|
||||||
; for OTA
|
; for OTA add scripts/upload.py to extra_scripts
|
||||||
upload_protocol = custom
|
; upload_protocol = custom
|
||||||
custom_emsesp_ip = 10.10.10.173
|
custom_emsesp_ip = 10.10.10.173
|
||||||
; custom_emsesp_ip = ems-esp.local
|
; custom_emsesp_ip = ems-esp.local
|
||||||
custom_username = admin
|
custom_username = admin
|
||||||
@@ -39,7 +39,6 @@ custom_password = admin
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
file://../../modules/EMS-ESP-Modules
|
file://../../modules/EMS-ESP-Modules
|
||||||
bblanchon/ArduinoJson@^7.0.4
|
bblanchon/ArduinoJson@^7.0.4
|
||||||
https://github.com/mathieucarbou/AsyncTCP.git ; based on ESPHome
|
|
||||||
|
|
||||||
[env:native]
|
[env:native]
|
||||||
extra_scripts =
|
extra_scripts =
|
||||||
@@ -54,10 +53,16 @@ extra_scripts =
|
|||||||
|
|
||||||
[env:lolin_s3]
|
[env:lolin_s3]
|
||||||
extra_scripts =
|
extra_scripts =
|
||||||
; pre:scripts/build_interface.py ; comment out if you don't want to re-build the WebUI each time
|
pre:scripts/build_interface.py ; comment out if you don't want to re-build the WebUI each time
|
||||||
scripts/rename_fw.py
|
scripts/rename_fw.py
|
||||||
scripts/upload.py
|
scripts/upload.py
|
||||||
|
|
||||||
|
[env:esp32_16M]
|
||||||
|
extra_scripts =
|
||||||
|
; pre:scripts/build_interface.py ; comment out if you don't want to re-build the WebUI each time
|
||||||
|
scripts/rename_fw.py
|
||||||
|
; scripts/upload.py
|
||||||
|
|
||||||
[env:custom]
|
[env:custom]
|
||||||
; use for basic ESP boards with 4MB flash
|
; use for basic ESP boards with 4MB flash
|
||||||
; make sure -D TASMOTA_SDK is also enabled
|
; make sure -D TASMOTA_SDK is also enabled
|
||||||
|
|||||||
@@ -218,7 +218,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef EMSESP_DEFAULT_ENTITY_FORMAT
|
#ifndef EMSESP_DEFAULT_ENTITY_FORMAT
|
||||||
#define EMSESP_DEFAULT_ENTITY_FORMAT 1 // in MQTT discovery, use shortnames and not multiple (prefixed with base)
|
#define EMSESP_DEFAULT_ENTITY_FORMAT 3 // in MQTT discovery, single instance, shortname, v3.6
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// matches Web UI settings
|
// matches Web UI settings
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ void WebModulesService::loop() {
|
|||||||
// it adds data to an empty 'root' json object
|
// it adds data to an empty 'root' json object
|
||||||
// and also calls when the Modules web page is refreshed/loaded
|
// and also calls when the Modules web page is refreshed/loaded
|
||||||
void WebModules::read(WebModules & webModules, JsonObject root) {
|
void WebModules::read(WebModules & webModules, JsonObject root) {
|
||||||
emsesp_->logger().err("debug: in WebModules::read()"); // TODO remove
|
|
||||||
JsonDocument doc_modules;
|
JsonDocument doc_modules;
|
||||||
JsonObject root_modules = doc_modules.to<JsonObject>();
|
JsonObject root_modules = doc_modules.to<JsonObject>();
|
||||||
moduleLibrary.list(root_modules); // get list the external library modules, put in a json object
|
moduleLibrary.list(root_modules); // get list the external library modules, put in a json object
|
||||||
|
|||||||
Reference in New Issue
Block a user