This commit is contained in:
MichaelDvP
2023-03-24 13:38:59 +01:00
13 changed files with 196 additions and 214 deletions

View File

@@ -66,7 +66,7 @@
"eslint-plugin-prettier": "^4.2.1", "eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.32.2", "eslint-plugin-react": "^7.32.2",
"eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-hooks": "^4.6.0",
"nodemon": "^2.0.21", "nodemon": "^2.0.22",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"prettier": "^2.8.6", "prettier": "^2.8.6",
"rollup-plugin-visualizer": "^5.9.0", "rollup-plugin-visualizer": "^5.9.0",

View File

@@ -57,7 +57,7 @@ const MqttSettingsForm: FC = () => {
label={LL.ENABLE_MQTT()} label={LL.ENABLE_MQTT()}
/> />
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start"> <Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
<Grid item xs={6}> <Grid item xs={12} sm={6}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="host" name="host"
@@ -69,7 +69,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
<Grid item xs={6}> <Grid item xs={12} sm={6}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="port" name="port"
@@ -82,9 +82,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
</Grid> <Grid item xs={12} sm={6}>
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
<Grid item xs={6}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="base" name="base"
@@ -96,7 +94,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
<Grid item xs={6}> <Grid item xs={12} sm={6}>
<ValidatedTextField <ValidatedTextField
name="client_id" name="client_id"
label={LL.ID_OF(LL.CLIENT()) + ' (' + LL.OPTIONAL() + ')'} label={LL.ID_OF(LL.CLIENT()) + ' (' + LL.OPTIONAL() + ')'}
@@ -107,9 +105,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
</Grid> <Grid item xs={12} sm={6}>
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
<Grid item xs={6}>
<ValidatedTextField <ValidatedTextField
name="username" name="username"
label={LL.USERNAME(0)} label={LL.USERNAME(0)}
@@ -120,7 +116,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
<Grid item xs={6}> <Grid item xs={12} sm={6}>
<ValidatedPasswordField <ValidatedPasswordField
name="password" name="password"
label={LL.PASSWORD()} label={LL.PASSWORD()}
@@ -131,9 +127,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
</Grid> <Grid item xs={12} sm={6}>
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
<Grid item xs={6}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="keep_alive" name="keep_alive"
@@ -149,7 +143,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
<Grid item xs={6}> <Grid item xs={12} sm={6}>
<ValidatedTextField <ValidatedTextField
name="mqtt_qos" name="mqtt_qos"
label="QoS" label="QoS"
@@ -196,7 +190,7 @@ const MqttSettingsForm: FC = () => {
label={LL.MQTT_RESPONSE()} label={LL.MQTT_RESPONSE()}
/> />
{!data.ha_enabled && ( {!data.ha_enabled && (
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start"> <Grid container rowSpacing={-1} spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
<Grid item> <Grid item>
<BlockFormControlLabel <BlockFormControlLabel
control={<Checkbox name="publish_single" checked={data.publish_single} onChange={updateFormValue} />} control={<Checkbox name="publish_single" checked={data.publish_single} onChange={updateFormValue} />}
@@ -219,15 +213,13 @@ const MqttSettingsForm: FC = () => {
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start"> <Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
<Grid item> <Grid item>
<BlockFormControlLabel <BlockFormControlLabel
sx={{ pb: 1 }}
control={<Checkbox name="ha_enabled" checked={data.ha_enabled} onChange={updateFormValue} />} control={<Checkbox name="ha_enabled" checked={data.ha_enabled} onChange={updateFormValue} />}
label={LL.MQTT_PUBLISH_TEXT_3()} label={LL.MQTT_PUBLISH_TEXT_3()}
/> />
</Grid> </Grid>
{data.ha_enabled && ( {data.ha_enabled && (
<> <Grid container sx={{ pl: 1 }} spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start"> <Grid item xs={12} sm={6} md={4}>
<Grid item>
<ValidatedTextField <ValidatedTextField
name="discovery_type" name="discovery_type"
label={LL.MQTT_PUBLISH_TEXT_5()} label={LL.MQTT_PUBLISH_TEXT_5()}
@@ -242,7 +234,7 @@ const MqttSettingsForm: FC = () => {
<MenuItem value={1}>Domoticz</MenuItem> <MenuItem value={1}>Domoticz</MenuItem>
</ValidatedTextField> </ValidatedTextField>
</Grid> </Grid>
<Grid item> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
name="discovery_prefix" name="discovery_prefix"
label={LL.MQTT_PUBLISH_TEXT_4()} label={LL.MQTT_PUBLISH_TEXT_4()}
@@ -253,7 +245,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
<Grid item> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
name="entity_format" name="entity_format"
label={LL.MQTT_ENTITY_FORMAT()} label={LL.MQTT_ENTITY_FORMAT()}
@@ -270,7 +262,6 @@ const MqttSettingsForm: FC = () => {
</ValidatedTextField> </ValidatedTextField>
</Grid> </Grid>
</Grid> </Grid>
</>
)} )}
</Grid> </Grid>
)} )}
@@ -278,7 +269,7 @@ const MqttSettingsForm: FC = () => {
{LL.MQTT_PUBLISH_INTERVALS()}&nbsp;(0=auto) {LL.MQTT_PUBLISH_INTERVALS()}&nbsp;(0=auto)
</Typography> </Typography>
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start"> <Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="publish_time_heartbeat" name="publish_time_heartbeat"
@@ -294,7 +285,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="publish_time_boiler" name="publish_time_boiler"
@@ -310,7 +301,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="publish_time_thermostat" name="publish_time_thermostat"
@@ -326,7 +317,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="publish_time_solar" name="publish_time_solar"
@@ -342,7 +333,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="publish_time_mixer" name="publish_time_mixer"
@@ -358,7 +349,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="publish_time_sensor" name="publish_time_sensor"
@@ -374,7 +365,7 @@ const MqttSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="publish_time_other" name="publish_time_other"

View File

@@ -16,11 +16,11 @@ const no: Translation = {
SETTINGS_OF: '{0} Innstillinger', SETTINGS_OF: '{0} Innstillinger',
HELP_OF: '{0} Hjelp', HELP_OF: '{0} Hjelp',
LOGGED_IN: 'Logget in som {name}', LOGGED_IN: 'Logget in som {name}',
PLEASE_SIGNIN: 'Venligst logge inn for å fortsette', PLEASE_SIGNIN: 'Venligst logge inn for å fortsetta',
UPLOAD_SUCCESSFUL: 'Opplasting lykkes', UPLOAD_SUCCESSFUL: 'Opplasting lykkes',
DOWNLOAD_SUCCESSFUL: 'Nedlasting lykkes', DOWNLOAD_SUCCESSFUL: 'Nedlasting lykkes',
INVALID_LOGIN: 'Ugyldig innlogging', INVALID_LOGIN: 'Ugyldig innlogging',
NETWORK: 'Nettverk1', NETWORK: 'Nettverk',
SECURITY: 'Sikkerhet', SECURITY: 'Sikkerhet',
ONOFF_CAP: 'PÅ/AV', ONOFF_CAP: 'PÅ/AV',
ONOFF: 'på/av', ONOFF: 'på/av',
@@ -46,7 +46,7 @@ const no: Translation = {
CANCEL: 'Avbryt', CANCEL: 'Avbryt',
RESET: 'Nullstill', RESET: 'Nullstill',
SEND: 'Send', SEND: 'Send',
APPLY_CHANGES: 'Bruk endringer ({0})', APPLY_CHANGES: 'Utfør endringer({0})',
UPDATE: 'Oppdater', UPDATE: 'Oppdater',
REMOVE: 'Fjern', REMOVE: 'Fjern',
PROBLEM_UPDATING: 'Problem med oppdatering', PROBLEM_UPDATING: 'Problem med oppdatering',
@@ -70,8 +70,8 @@ const no: Translation = {
TEMP_SENSOR: 'Temperatursensor', TEMP_SENSOR: 'Temperatursensor',
TEMP_SENSORS: 'Temperaturesensorer', TEMP_SENSORS: 'Temperaturesensorer',
WRITE_CMD_SENT: 'Skriv kommando sent', WRITE_CMD_SENT: 'Skriv kommando sent',
WRITE_CMD_FAILED: 'Skriv kommando failed', WRITE_CMD_FAILED: 'Skriv kommando som har feilet',
EMS_BUS_WARNING: 'EMS bussen koblet ned. Hvis denne advarselen fortsetter etter noen få sekunder sjekk instillinger og prosessorkort', EMS_BUS_WARNING: 'EMS bussen koblet ned. Hvis denne advarselen fortsetter etter noen f¨sekunder sjekk instillinger og prosessorkort',
EMS_BUS_SCANNING: 'Søker etter EMS enheter...', EMS_BUS_SCANNING: 'Søker etter EMS enheter...',
CONNECTED: 'Tilkoblet', CONNECTED: 'Tilkoblet',
TX_ISSUES: 'Tx problemer - prøv en annen Tx Modus', TX_ISSUES: 'Tx problemer - prøv en annen Tx Modus',
@@ -99,7 +99,7 @@ const no: Translation = {
NUM_DEVICES: '{num} Enhet{{er}}', NUM_DEVICES: '{num} Enhet{{er}}',
NUM_TEMP_SENSORS: '{num} Temperatursensor{{er}}', NUM_TEMP_SENSORS: '{num} Temperatursensor{{er}}',
NUM_ANALOG_SENSORS: '{num} Analogsensor{{er}}', NUM_ANALOG_SENSORS: '{num} Analogsensor{{er}}',
NUM_DAYS: '{num} sag{{er}}', NUM_DAYS: '{num} Dag{{er}}',
NUM_SECONDS: '{num} Sekund{{er}}', NUM_SECONDS: '{num} Sekund{{er}}',
NUM_HOURS: '{num} Time{{r}}', NUM_HOURS: '{num} Time{{r}}',
NUM_MINUTES: '{num} Minutt{{er}}', NUM_MINUTES: '{num} Minutt{{er}}',
@@ -157,7 +157,7 @@ const no: Translation = {
CUSTOMIZATIONS_HELP_3: 'inaktiviser skriving', CUSTOMIZATIONS_HELP_3: 'inaktiviser skriving',
CUSTOMIZATIONS_HELP_4: 'ekskludere fra MQTT og API', CUSTOMIZATIONS_HELP_4: 'ekskludere fra MQTT og API',
CUSTOMIZATIONS_HELP_5: 'gjemme fra Dashboard', CUSTOMIZATIONS_HELP_5: 'gjemme fra Dashboard',
CUSTOMIZATIONS_HELP_6: 'fjern fra minne', CUSTOMIZATIONS_HELP_6: 'fjern fra minnet',
SELECT_DEVICE: 'Velg en enhet', SELECT_DEVICE: 'Velg en enhet',
SET_ALL: 'sett alle', SET_ALL: 'sett alle',
OPTIONS: 'Alternativ', OPTIONS: 'Alternativ',
@@ -208,7 +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: 'Last ned tidsplan', DOWNLOAD_SCHEDULE_TEXT: 'Last ned planlagte oppgaver',
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',
@@ -242,7 +242,7 @@ const no: Translation = {
MQTT_PUBLISH_TEXT_2: 'Publiser til kommando topics (ioBroker)', MQTT_PUBLISH_TEXT_2: 'Publiser til kommando topics (ioBroker)',
MQTT_PUBLISH_TEXT_3: 'Aktiver MQTT Discovery', MQTT_PUBLISH_TEXT_3: 'Aktiver MQTT Discovery',
MQTT_PUBLISH_TEXT_4: 'Prefiks for Discovery topics', MQTT_PUBLISH_TEXT_4: 'Prefiks for Discovery topics',
MQTT_PUBLISH_TEXT_5: 'Oppdagelsestype', MQTT_PUBLISH_TEXT_5: 'Discovery type',
MQTT_PUBLISH_INTERVALS: 'Publiseringsintervall', MQTT_PUBLISH_INTERVALS: 'Publiseringsintervall',
MQTT_INT_BOILER: 'Fyr/Varmepumpe', MQTT_INT_BOILER: 'Fyr/Varmepumpe',
MQTT_INT_THERMOSTATS: 'Termostat', MQTT_INT_THERMOSTATS: 'Termostat',
@@ -252,11 +252,11 @@ const no: Translation = {
MQTT_QUEUE: 'MQTT Queue', MQTT_QUEUE: 'MQTT Queue',
DEFAULT: 'Standard', DEFAULT: 'Standard',
MQTT_ENTITY_FORMAT: 'Enhets ID format', MQTT_ENTITY_FORMAT: 'Enhets ID format',
MQTT_ENTITY_FORMAT_0: 'Enkelt forekomst, langt navn (v3.4)', MQTT_ENTITY_FORMAT_0: 'Enkel instans, fullt nane (v3.4)',
MQTT_ENTITY_FORMAT_1: 'Enkelt forekomst, kort navn', MQTT_ENTITY_FORMAT_1: 'Enkel instans, kort nave',
MQTT_ENTITY_FORMAT_2: 'Flere forekomster, kort navn', MQTT_ENTITY_FORMAT_2: 'Multiple instanser, kort name',
MQTT_CLEAN_SESSION: 'Benytt Clean Session', MQTT_CLEAN_SESSION: 'Benytt Clean Session',
MQTT_RETAIN_FLAG: 'Alltid sett behold flagg', MQTT_RETAIN_FLAG: 'Alltid sett Retain flag',
INACTIVE: 'Innaktiv', INACTIVE: 'Innaktiv',
ACTIVE: 'Aktiv', ACTIVE: 'Aktiv',
UNKNOWN: 'Ukjent', UNKNOWN: 'Ukjent',
@@ -305,20 +305,20 @@ const no: Translation = {
ENTITY: 'Entitet', ENTITY: 'Entitet',
MIN: 'min', MIN: 'min',
MAX: 'max', MAX: 'max',
BLOCK_NAVIGATE_1: 'du har ulagrede endringer', BLOCK_NAVIGATE_1: 'You har ulagrede endringer',
BLOCK_NAVIGATE_2: 'If you navigate to a different page, your unsaved changes will be lost. Are you sure you want to leave this page?', // TODO translate BLOCK_NAVIGATE_2: 'Hvis du navigerer til en annen side blir dine ikke lagrede endringer gå tapt. Are du sikker på at du vil forlate denne siden ?',
STAY: 'Bli værende', STAY: 'Bli her',
LEAVE: 'Logg ut', LEAVE: 'Forlat',
SCHEDULER: 'Planlegger', SCHEDULER: 'Planlegger',
SCHEDULER_HELP_1: 'Automatiser kommandoer ved å legge til planlagte hendelser nedenfor. Angi et unikt navn for å aktivere/deaktivere aktivering via API/MQTT', SCHEDULER_HELP_1: 'Automatiser kommandoer ved å legge til skedulerte hendelser nedenfor. Sett et unikt navn for å slå på/av aktivering via API/MQTT.',
SCHEDULER_HELP_2: 'Bruk 00:00 for å utløse én gang ved oppstart', SCHEDULER_HELP_2: 'Bruk 00:00 for å kjøre en gang ved oppstart',
SCHEDULE: 'Planlegg', SCHEDULE: 'Planlegg',
TIME: 'Tid', TIME: 'Tid',
TIMER: 'Timer', TIMER: 'Timer',
SCHEDULE_SAVED: 'Tidsplanen er oppdatert', SCHEDULE_SAVED: 'Planlegger er oppdatert',
SCHEDULE_TIMER_1: 'ved oppstart', SCHEDULE_TIMER_1: 'ved oppstart',
SCHEDULE_TIMER_2: 'hvert minutt', SCHEDULE_TIMER_2: 'hvert minutt',
SCHEDULE_TIMER_3: 'hver time', SCHEDULE_TIMER_3: 'hver time'
}; };
export default no; export default no;

View File

@@ -162,7 +162,7 @@ const SettingsApplication: FC = () => {
justifyContent="flex-start" justifyContent="flex-start"
alignItems="flex-start" alignItems="flex-start"
> >
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="rx_gpio" name="rx_gpio"
@@ -176,7 +176,7 @@ const SettingsApplication: FC = () => {
disabled={saving} disabled={saving}
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="tx_gpio" name="tx_gpio"
@@ -190,7 +190,7 @@ const SettingsApplication: FC = () => {
disabled={saving} disabled={saving}
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="pbutton_gpio" name="pbutton_gpio"
@@ -204,7 +204,7 @@ const SettingsApplication: FC = () => {
disabled={saving} disabled={saving}
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="dallas_gpio" name="dallas_gpio"
@@ -218,7 +218,7 @@ const SettingsApplication: FC = () => {
disabled={saving} disabled={saving}
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="led_gpio" name="led_gpio"
@@ -232,7 +232,7 @@ const SettingsApplication: FC = () => {
disabled={saving} disabled={saving}
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
name="phy_type" name="phy_type"
label={LL.PHY_TYPE()} label={LL.PHY_TYPE()}
@@ -259,7 +259,7 @@ const SettingsApplication: FC = () => {
justifyContent="flex-start" justifyContent="flex-start"
alignItems="flex-start" alignItems="flex-start"
> >
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
name="eth_power" name="eth_power"
label={LL.GPIO_OF('PHY Power') + ' (-1=' + LL.DISABLED(1) + ')'} label={LL.GPIO_OF('PHY Power') + ' (-1=' + LL.DISABLED(1) + ')'}
@@ -272,7 +272,7 @@ const SettingsApplication: FC = () => {
disabled={saving} disabled={saving}
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
name="eth_phy_addr" name="eth_phy_addr"
label={LL.ADDRESS_OF('PHY I²C')} label={LL.ADDRESS_OF('PHY I²C')}
@@ -285,7 +285,7 @@ const SettingsApplication: FC = () => {
disabled={saving} disabled={saving}
/> />
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
name="eth_clock_mode" name="eth_clock_mode"
label="PHY Clk" label="PHY Clk"
@@ -311,7 +311,7 @@ const SettingsApplication: FC = () => {
{LL.SETTINGS_OF(LL.EMS_BUS(0))} {LL.SETTINGS_OF(LL.EMS_BUS(0))}
</Typography> </Typography>
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start"> <Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
<Grid item xs={6}> <Grid item xs={12} sm={6}>
<ValidatedTextField <ValidatedTextField
name="tx_mode" name="tx_mode"
label={LL.TX_MODE()} label={LL.TX_MODE()}
@@ -329,7 +329,7 @@ const SettingsApplication: FC = () => {
<MenuItem value={4}>{LL.HARDWARE()}</MenuItem> <MenuItem value={4}>{LL.HARDWARE()}</MenuItem>
</ValidatedTextField> </ValidatedTextField>
</Grid> </Grid>
<Grid item xs={6}> <Grid item xs={12} sm={6}>
<ValidatedTextField <ValidatedTextField
name="ems_bus_id" name="ems_bus_id"
label={LL.ID_OF(LL.EMS_BUS(1))} label={LL.ID_OF(LL.EMS_BUS(1))}
@@ -358,20 +358,16 @@ const SettingsApplication: FC = () => {
<Typography sx={{ pt: 2 }} variant="h6" color="primary"> <Typography sx={{ pt: 2 }} variant="h6" color="primary">
{LL.GENERAL_OPTIONS()} {LL.GENERAL_OPTIONS()}
</Typography> </Typography>
<Box <Grid item>
sx={{
'& .MuiTextField-root': { width: '25ch' }
}}
>
<ValidatedTextField <ValidatedTextField
name="locale" name="locale"
label={LL.LANGUAGE_ENTITIES()} label={LL.LANGUAGE_ENTITIES()}
disabled={saving} disabled={saving}
value={data.locale} value={data.locale}
fullWidth
variant="outlined" variant="outlined"
onChange={updateFormValue} onChange={updateFormValue}
margin="normal" margin="normal"
size="small"
select select
> >
<MenuItem value="en">English (EN)</MenuItem> <MenuItem value="en">English (EN)</MenuItem>
@@ -384,7 +380,7 @@ const SettingsApplication: FC = () => {
<MenuItem value="sv">Svenska (SV)</MenuItem> <MenuItem value="sv">Svenska (SV)</MenuItem>
<MenuItem value="tr">Türk (TR)</MenuItem> <MenuItem value="tr">Türk (TR)</MenuItem>
</ValidatedTextField> </ValidatedTextField>
</Box> </Grid>
{data.led_gpio !== 0 && ( {data.led_gpio !== 0 && (
<BlockFormControlLabel <BlockFormControlLabel
control={<Checkbox checked={data.hide_led} onChange={updateFormValue} name="hide_led" />} control={<Checkbox checked={data.hide_led} onChange={updateFormValue} name="hide_led" />}
@@ -429,14 +425,15 @@ const SettingsApplication: FC = () => {
disabled={saving} disabled={saving}
/> />
<BlockFormControlLabel <BlockFormControlLabel
sx={{ pb: 2 }}
control={<Checkbox checked={data.shower_alert} onChange={updateFormValue} name="shower_alert" />} control={<Checkbox checked={data.shower_alert} onChange={updateFormValue} name="shower_alert" />}
label={LL.ENABLE_SHOWER_ALERT()} label={LL.ENABLE_SHOWER_ALERT()}
disabled={!data.shower_timer} disabled={!data.shower_timer}
/> />
</Grid>
<Grid container sx={{ pt: 2 }} rowSpacing={3} spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
{data.shower_alert && ( {data.shower_alert && (
<> <>
<Grid item sx={{ pr: 1, pb: 2 }}> <Grid item xs={12} sm={6}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="shower_alert_trigger" name="shower_alert_trigger"
@@ -446,13 +443,13 @@ const SettingsApplication: FC = () => {
}} }}
variant="outlined" variant="outlined"
value={numberValue(data.shower_alert_trigger)} value={numberValue(data.shower_alert_trigger)}
fullWidth
type="number" type="number"
onChange={updateFormValue} onChange={updateFormValue}
size="small"
disabled={!data.shower_timer} disabled={!data.shower_timer}
/> />
</Grid> </Grid>
<Grid item sx={{ pb: 3 }}> <Grid item xs={12} sm={6}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="shower_alert_coldshot" name="shower_alert_coldshot"
@@ -462,20 +459,20 @@ const SettingsApplication: FC = () => {
}} }}
variant="outlined" variant="outlined"
value={numberValue(data.shower_alert_coldshot)} value={numberValue(data.shower_alert_coldshot)}
fullWidth
type="number" type="number"
onChange={updateFormValue} onChange={updateFormValue}
size="small"
disabled={!data.shower_timer} disabled={!data.shower_timer}
/> />
</Grid> </Grid>
</> </>
)} )}
</Grid> </Grid>
<Typography variant="h6" color="primary"> <Typography sx={{ pt: 3 }} variant="h6" color="primary">
{LL.FORMATTING_OPTIONS()} {LL.FORMATTING_OPTIONS()}
</Typography> </Typography>
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start"> <Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
name="bool_dashboard" name="bool_dashboard"
label={LL.BOOLEAN_FORMAT_DASHBOARD()} label={LL.BOOLEAN_FORMAT_DASHBOARD()}
@@ -492,7 +489,7 @@ const SettingsApplication: FC = () => {
<MenuItem value={5}>1/0</MenuItem> <MenuItem value={5}>1/0</MenuItem>
</ValidatedTextField> </ValidatedTextField>
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
name="bool_format" name="bool_format"
label={LL.BOOLEAN_FORMAT_API()} label={LL.BOOLEAN_FORMAT_API()}
@@ -511,7 +508,7 @@ const SettingsApplication: FC = () => {
<MenuItem value={6}>1/0</MenuItem> <MenuItem value={6}>1/0</MenuItem>
</ValidatedTextField> </ValidatedTextField>
</Grid> </Grid>
<Grid item xs={6} sm={4}> <Grid item xs={12} sm={6} md={4}>
<ValidatedTextField <ValidatedTextField
name="enum_format" name="enum_format"
label={LL.ENUM_FORMAT()} label={LL.ENUM_FORMAT()}
@@ -560,7 +557,7 @@ const SettingsApplication: FC = () => {
/> />
{data.syslog_enabled && ( {data.syslog_enabled && (
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start"> <Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
<Grid item xs={4}> <Grid item xs={12} sm={6}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="syslog_host" name="syslog_host"
@@ -573,7 +570,7 @@ const SettingsApplication: FC = () => {
disabled={saving} disabled={saving}
/> />
</Grid> </Grid>
<Grid item xs={4}> <Grid item xs={12} sm={6}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="syslog_port" name="syslog_port"
@@ -587,7 +584,7 @@ const SettingsApplication: FC = () => {
disabled={saving} disabled={saving}
/> />
</Grid> </Grid>
<Grid item xs={4}> <Grid item xs={12} sm={6}>
<ValidatedTextField <ValidatedTextField
name="syslog_level" name="syslog_level"
label={LL.LOG_LEVEL()} label={LL.LOG_LEVEL()}
@@ -607,7 +604,7 @@ const SettingsApplication: FC = () => {
<MenuItem value={9}>ALL</MenuItem> <MenuItem value={9}>ALL</MenuItem>
</ValidatedTextField> </ValidatedTextField>
</Grid> </Grid>
<Grid item xs={4}> <Grid item xs={12} sm={6}>
<ValidatedTextField <ValidatedTextField
fieldErrors={fieldErrors} fieldErrors={fieldErrors}
name="syslog_mark_interval" name="syslog_mark_interval"

View File

@@ -52,15 +52,7 @@ import { useI18nContext } from 'i18n/i18n-react';
import * as EMSESP from './api'; import * as EMSESP from './api';
function makeid() { function makeid() {
let result = ''; return Math.floor(Math.random() * (Math.floor(200) - 100) + 100);
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const charactersLength = characters.length;
let counter = 0;
while (counter < 4) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
counter += 1;
}
return result;
} }
const SettingsScheduler: FC = () => { const SettingsScheduler: FC = () => {
@@ -70,7 +62,7 @@ const SettingsScheduler: FC = () => {
const blocker = useBlocker(numChanges !== 0); const blocker = useBlocker(numChanges !== 0);
const emptySchedule = { const emptySchedule = {
id: '0', id: 0,
active: false, active: false,
deleted: false, deleted: false,
flags: 0, flags: 0,

View File

@@ -43,7 +43,7 @@ export enum busConnectionStatus {
} }
export interface Stat { export interface Stat {
id: string; // id - needs to be a string id: number; // id
s: number; // success s: number; // success
f: number; // fail f: number; // fail
q: number; // quality q: number; // quality
@@ -305,7 +305,7 @@ export enum DeviceEntityMask {
} }
export interface ScheduleItem { export interface ScheduleItem {
id: string; // unique index id: number; // unique index
active: boolean; active: boolean;
deleted?: boolean; // optional deleted?: boolean; // optional
flags: number; flags: number;
@@ -313,7 +313,7 @@ export interface ScheduleItem {
cmd: string; cmd: string;
value: string; value: string;
name?: string; // optional name?: string; // optional
o_id?: string; o_id?: number;
o_active?: boolean; o_active?: boolean;
o_deleted?: boolean; o_deleted?: boolean;
o_flags?: number; o_flags?: number;

View File

@@ -1828,7 +1828,7 @@ __metadata:
jwt-decode: ^3.1.2 jwt-decode: ^3.1.2
lodash-es: ^4.17.21 lodash-es: ^4.17.21
mime-types: ^2.1.35 mime-types: ^2.1.35
nodemon: ^2.0.21 nodemon: ^2.0.22
npm-run-all: ^4.1.5 npm-run-all: ^4.1.5
prettier: ^2.8.6 prettier: ^2.8.6
react: latest react: latest
@@ -4830,9 +4830,9 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"nodemon@npm:^2.0.21": "nodemon@npm:^2.0.22":
version: 2.0.21 version: 2.0.22
resolution: "nodemon@npm:2.0.21" resolution: "nodemon@npm:2.0.22"
dependencies: dependencies:
chokidar: ^3.5.2 chokidar: ^3.5.2
debug: ^3.2.7 debug: ^3.2.7
@@ -4846,7 +4846,7 @@ __metadata:
undefsafe: ^2.0.5 undefsafe: ^2.0.5
bin: bin:
nodemon: bin/nodemon.js nodemon: bin/nodemon.js
checksum: 0b9fe2d11fd95c51b66d61bd1ee85cddf579c9e674c9429752a74f445f1b98576235ae860858783728baa3666c87e4ef938ab67167cc34fe4bb8fcec74d6885b checksum: 9c987e139748f5b5c480c6c9080bdc97304ee7d29172b7b3da1a7db590b1323ad57b96346304e9b522b0e445c336dc393ccd3f9f45c73b20d476d2347890dcd0
languageName: node languageName: node
linkType: hard linkType: hard
@@ -5656,8 +5656,8 @@ __metadata:
linkType: hard linkType: hard
"rollup@npm:^3.18.0": "rollup@npm:^3.18.0":
version: 3.20.0 version: 3.19.1
resolution: "rollup@npm:3.20.0" resolution: "rollup@npm:3.19.1"
dependencies: dependencies:
fsevents: ~2.3.2 fsevents: ~2.3.2
dependenciesMeta: dependenciesMeta:
@@ -5665,7 +5665,7 @@ __metadata:
optional: true optional: true
bin: bin:
rollup: dist/bin/rollup rollup: dist/bin/rollup
checksum: ebf75f48eb81234f8233b4ed145b00841cefba26802d4f069f161247ffba085ca5bb165cc3cd662d9c36cfc135a67660dfff9088d3da2d2c6a70addc15f3233a checksum: f78198c6de224b26650c70b16db156762d1fcceeb375d34fb2c76fc5b23a78f712c3c881d3248e6f277a511589e20d50c247bcf5c7920f1ddc0a43cadf9f0140
languageName: node languageName: node
linkType: hard linkType: hard

View File

@@ -12,7 +12,7 @@
"@msgpack/msgpack": "^2.8.0", "@msgpack/msgpack": "^2.8.0",
"compression": "^1.7.4", "compression": "^1.7.4",
"express": "^4.18.2", "express": "^4.18.2",
"nodemon": "^2.0.21" "nodemon": "^2.0.22"
}, },
"packageManager": "yarn@3.4.1" "packageManager": "yarn@3.4.1"
} }

View File

@@ -450,13 +450,13 @@ const status = {
num_sensors: 1, num_sensors: 1,
num_analogs: 1, num_analogs: 1,
stats: [ stats: [
{ id: '0', s: 56506, f: 11, q: 100 }, { id: 0, s: 56506, f: 11, q: 100 },
{ id: '1', s: 9026, f: 0, q: 100 }, { id: 1, s: 9026, f: 0, q: 100 },
{ id: '2', s: 33, f: 2, q: 95 }, { id: 2, s: 33, f: 2, q: 95 },
{ id: '3', s: 56506, f: 11, q: 100 }, { id: 3, s: 56506, f: 11, q: 100 },
{ id: '4', s: 0, f: 0, q: 100 }, { id: 4, s: 0, f: 0, q: 100 },
{ id: '5', s: 12, f: 10, q: 20 }, { id: 5, s: 12, f: 10, q: 20 },
{ id: '6', s: 0, f: 0, q: 0 } { id: 6, s: 0, f: 0, q: 0 }
] ]
}; };
@@ -603,7 +603,7 @@ const emsesp_devicedata_4 = {
let emsesp_schedule = { let emsesp_schedule = {
schedule: [ schedule: [
{ {
id: '1', id: 1,
active: true, active: true,
flags: 6, flags: 6,
time: '07:30', time: '07:30',
@@ -612,7 +612,7 @@ let emsesp_schedule = {
name: 'day_mode' name: 'day_mode'
}, },
{ {
id: '2', id: 2,
active: true, active: true,
flags: 31, flags: 31,
time: '23:00', time: '23:00',
@@ -621,7 +621,7 @@ let emsesp_schedule = {
name: 'night_mode' name: 'night_mode'
}, },
{ {
id: '3', id: 3,
active: true, active: true,
flags: 10, flags: 10,
time: '00:00', time: '00:00',
@@ -630,7 +630,7 @@ let emsesp_schedule = {
name: 'temp_20' name: 'temp_20'
}, },
{ {
id: '4', id: 4,
active: false, active: false,
flags: 1, flags: 1,
time: '04:00', time: '04:00',

View File

@@ -117,7 +117,7 @@ __metadata:
"@msgpack/msgpack": ^2.8.0 "@msgpack/msgpack": ^2.8.0
compression: ^1.7.4 compression: ^1.7.4
express: ^4.18.2 express: ^4.18.2
nodemon: ^2.0.21 nodemon: ^2.0.22
languageName: unknown languageName: unknown
linkType: soft linkType: soft
@@ -1120,9 +1120,9 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"nodemon@npm:^2.0.21": "nodemon@npm:^2.0.22":
version: 2.0.21 version: 2.0.22
resolution: "nodemon@npm:2.0.21" resolution: "nodemon@npm:2.0.22"
dependencies: dependencies:
chokidar: ^3.5.2 chokidar: ^3.5.2
debug: ^3.2.7 debug: ^3.2.7
@@ -1136,7 +1136,7 @@ __metadata:
undefsafe: ^2.0.5 undefsafe: ^2.0.5
bin: bin:
nodemon: bin/nodemon.js nodemon: bin/nodemon.js
checksum: 0b9fe2d11fd95c51b66d61bd1ee85cddf579c9e674c9429752a74f445f1b98576235ae860858783728baa3666c87e4ef938ab67167cc34fe4bb8fcec74d6885b checksum: 9c987e139748f5b5c480c6c9080bdc97304ee7d29172b7b3da1a7db590b1323ad57b96346304e9b522b0e445c336dc393ccd3f9f45c73b20d476d2347890dcd0
languageName: node languageName: node
linkType: hard linkType: hard

View File

@@ -35,35 +35,35 @@
// //
// device types, as display in Web and Console // device types, as display in Web and Console
MAKE_WORD_TRANSLATION(boiler_device, "Boiler", "Kessel", "Boiler", "Värmepanna", "Kocioł", "Varmekjele", "", "Kazan") // TODO translate MAKE_WORD_TRANSLATION(boiler_device, "Boiler", "Kessel", "Boiler", "Värmepanna", "Kocioł", "Varmekjele", "", "Kazan")
MAKE_WORD_TRANSLATION(thermostat_device, "Thermostat", "Thermostat", "Thermostaat", "Termostat", "Termostat", "Termostat", "", "Termostat") // TODO translate MAKE_WORD_TRANSLATION(thermostat_device, "Thermostat", "Thermostat", "Thermostaat", "Termostat", "Termostat", "Termostat", "", "Termostat")
MAKE_WORD_TRANSLATION(heatpump_device, "Heat Pump", "Wärmepumpe", "Warmtepomp", "Värmepump", "Pompa ciepła", "Varmepumpe", "", "Isı Pompası") // TODO translate MAKE_WORD_TRANSLATION(heatpump_device, "Heat Pump", "Wärmepumpe", "Warmtepomp", "Värmepump", "Pompa ciepła", "Varmepumpe", "", "Isı Pompası")
MAKE_WORD_TRANSLATION(solar_device, "Solar Module", "Solarmodul", "Solar Module", "Solmodul", "Moduł solarny", "Solmodul", "", "Güneş Enerjisi Cihazı") // TODO translate MAKE_WORD_TRANSLATION(solar_device, "Solar Module", "Solarmodul", "Solar Module", "Solmodul", "Moduł solarny", "Solmodul", "", "Güneş Enerjisi Cihazı")
MAKE_WORD_TRANSLATION(connect_device, "Connect Module", "Verbindungsmodul", "Connect Module", "Uppkopplingsmodul", "Moduł przyłączeń", "Sammenkoblingsmodul", "", "Güneş Enerjisi Cihazı") // TODO translate MAKE_WORD_TRANSLATION(connect_device, "Connect Module", "Verbindungsmodul", "Connect Module", "Uppkopplingsmodul", "Moduł przyłączeń", "Sammenkoblingsmodul", "", "Güneş Enerjisi Cihazı")
MAKE_WORD_TRANSLATION(mixer_device, "Mixer Module", "Mischermodul", "Mixer Module", "Blandningsmodul", "Moduł mieszacza", "Miksermodul", "", "Karışım Cihazı") // TODO translate MAKE_WORD_TRANSLATION(mixer_device, "Mixer Module", "Mischermodul", "Mixer Module", "Blandningsmodul", "Moduł mieszacza", "Miksermodul", "", "Karışım Cihazı")
MAKE_WORD_TRANSLATION(controller_device, "Controller Module", "Kontrollmodul", "Controller Module", "Styrmodul", "Moduł sterujący", "Styremodul", "", "Kontrol Ünitesi") // TODO translate MAKE_WORD_TRANSLATION(controller_device, "Controller Module", "Kontrollmodul", "Controller Module", "Styrmodul", "Moduł sterujący", "Styremodul", "", "Kontrol Ünitesi")
MAKE_WORD_TRANSLATION(switch_device, "Switch Module", "Schaltmodul", "Switch Module", "Relämodul", "Moduł przełączający", "Switch modul", "", "Anahtar") // TODO translate MAKE_WORD_TRANSLATION(switch_device, "Switch Module", "Schaltmodul", "Switch Module", "Relämodul", "Moduł przełączający", "Switch modul", "", "Anahtar")
MAKE_WORD_TRANSLATION(gateway_device, "Gateway Module", "Gateway Modul", "Gateway Module", "Gateway", "Moduł IP", "Gateway", "", "Ağ Geçidi") // TODO translate MAKE_WORD_TRANSLATION(gateway_device, "Gateway Module", "Gateway Modul", "Gateway Module", "Gateway", "Moduł IP", "Gateway", "", "Ağ Geçidi")
MAKE_WORD_TRANSLATION(alert_device, "Alert Module", "Alarmmodul", "Alert Module", "Larmmodul", "Moduł alarmowy", "Alarmmodul", "", "Alarm Cihazı") // TODO translate MAKE_WORD_TRANSLATION(alert_device, "Alert Module", "Alarmmodul", "Alert Module", "Larmmodul", "Moduł alarmowy", "Alarmmodul", "", "Alarm Cihazı")
MAKE_WORD_TRANSLATION(pump_device, "Pump Module", "Pumpenmodul", "Pump Module", "Pumpmodul", "Moduł pompy", "Pumpemodul", "", "Pompa") // TODO translate MAKE_WORD_TRANSLATION(pump_device, "Pump Module", "Pumpenmodul", "Pump Module", "Pumpmodul", "Moduł pompy", "Pumpemodul", "", "Pompa")
MAKE_WORD_TRANSLATION(heatsource_device, "Heatsource", "Heizquelle", "Heatsource", "Värmekälla", "Źródło ciepła", "Varmekilde", "", "Isı Kaynağı") // TODO translate MAKE_WORD_TRANSLATION(heatsource_device, "Heatsource", "Heizquelle", "Heatsource", "Värmekälla", "Źródło ciepła", "Varmekilde", "", "Isı Kaynağı")
MAKE_WORD_TRANSLATION(sensors_device, "Sensors", "Sensoren", "Sensoren", "Sensorer", "Czujniki", "Sensorer", "Capteurs", "Sensör Cihazı") MAKE_WORD_TRANSLATION(sensors_device, "Sensors", "Sensoren", "Sensoren", "Sensorer", "Czujniki", "Sensorer", "Capteurs", "Sensör Cihazı")
MAKE_WORD_TRANSLATION(unknown_device, "Unknown", "Unbekannt", "Onbekend", "Okänt", "Nieznane urządzenie", "Ukjent", "Inconnu", "") // TODO translate MAKE_WORD_TRANSLATION(unknown_device, "Unknown", "Unbekannt", "Onbekend", "Okänt", "Nieznane urządzenie", "Ukjent", "Inconnu", "")
// commands // commands
// TODO translate // TODO translate
MAKE_WORD_TRANSLATION(info_cmd, "lists all values", "Liste aller Werte", "", "", "wyświetl wszystkie wartości", "Viser alle verdier", "", "Tüm değerleri listele") // TODO translate MAKE_WORD_TRANSLATION(info_cmd, "lists all values", "Liste aller Werte", "", "", "wyświetl wszystkie wartości", "Viser alle verdier", "", "Tüm değerleri listele")
MAKE_WORD_TRANSLATION(commands_cmd, "lists all commands", "Liste aller Kommandos", "", "", "wyświetl wszystkie komendy", "Viser alle kommandoer", "", "Tüm komutları listele") // TODO translate MAKE_WORD_TRANSLATION(commands_cmd, "lists all commands", "Liste aller Kommandos", "", "", "wyświetl wszystkie komendy", "Viser alle kommandoer", "", "Tüm komutları listele")
MAKE_WORD_TRANSLATION(entities_cmd, "lists all entities", "Liste aller Entitäten", "", "", "wyświetl wszsytkie encje", "Viser alle enheter", "", "Tüm varlıkları listele") // TODO translate MAKE_WORD_TRANSLATION(entities_cmd, "lists all entities", "Liste aller Entitäten", "", "", "wyświetl wszsytkie encje", "Viser alle enheter", "", "Tüm varlıkları listele")
MAKE_WORD_TRANSLATION(send_cmd, "send a telegram", "Sende EMS-Telegramm", "", "", "wyślij telegram", "send et telegram", "", "Bir telegram gönder") // TODO translate MAKE_WORD_TRANSLATION(send_cmd, "send a telegram", "Sende EMS-Telegramm", "", "", "wyślij telegram", "send et telegram", "", "Bir telegram gönder")
MAKE_WORD_TRANSLATION(setiovalue_cmd, "set io value", "Setze Wertevorgabe", "", "", "ustaw wartość", "sett en io verdi", "", "Giriş/Çıkış değerlerini ayarla") // TODO translate MAKE_WORD_TRANSLATION(setiovalue_cmd, "set io value", "Setze Wertevorgabe", "", "", "ustaw wartość", "sett en io verdi", "", "Giriş/Çıkış değerlerini ayarla")
MAKE_WORD_TRANSLATION(changeloglevel_cmd, "change log level", "Ändere Sysloglevel", "", "", "zmień poziom log-u", "endre loggnivå", "", "Kayıt seviyesini değiştir") // TODO translate MAKE_WORD_TRANSLATION(changeloglevel_cmd, "change log level", "Ändere Sysloglevel", "", "", "zmień poziom log-u", "endre loggnivå", "", "Kayıt seviyesini değiştir")
MAKE_WORD_TRANSLATION(fetch_cmd, "refresh all EMS values", "Lese alle EMS-Werte neu", "", "", "odśwież wszystkie wartości EMS", "oppfrisk alle EMS verdier", "", "Bütün EMS değerlerini yenile") // TODO translate MAKE_WORD_TRANSLATION(fetch_cmd, "refresh all EMS values", "Lese alle EMS-Werte neu", "", "", "odśwież wszystkie wartości EMS", "oppfrisk alle EMS verdier", "", "Bütün EMS değerlerini yenile")
MAKE_WORD_TRANSLATION(restart_cmd, "restart EMS-ESP", "Neustart", "", "", "uruchom ponownie EMS-ESP", "restart EMS-ESP", "", "EMS-ESPyi yeniden başlat") // TODO translate MAKE_WORD_TRANSLATION(restart_cmd, "restart EMS-ESP", "Neustart", "", "", "uruchom ponownie EMS-ESP", "restart EMS-ESP", "se innkommende telegrammer", "EMS-ESPyi yeniden başlat")
MAKE_WORD_TRANSLATION(watch_cmd, "watch incoming telegrams", "Watch auf eingehende Telegramme", "", "", "obserwuj przyczodzące telegramy", "se innkommende telegrammer", "", "Gelen telegramları ") // TODO translate MAKE_WORD_TRANSLATION(watch_cmd, "watch incoming telegrams", "Watch auf eingehende Telegramme", "", "", "obserwuj przyczodzące telegramy", "se innkommende telegrammer", "", "Gelen telegramları ")
MAKE_WORD_TRANSLATION(publish_cmd, "publish all to MQTT", "Publiziere MQTT", "", "", "opublikuj wszystko na MQTT", "Publiser alt til MQTT", "", "Hepsini MQTTye gönder") // TODO translate MAKE_WORD_TRANSLATION(publish_cmd, "publish all to MQTT", "Publiziere MQTT", "", "", "opublikuj wszystko na MQTT", "Publiser alt til MQTT", "", "Hepsini MQTTye gönder")
MAKE_WORD_TRANSLATION(system_info_cmd, "show system status", "Zeige System-Status", "", "", "pokaż status systemu", "vis system status", "", "Sistem Durumunu Göster") // TODO translate MAKE_WORD_TRANSLATION(system_info_cmd, "show system status", "Zeige System-Status", "", "", "pokaż status systemu", "vis system status", "", "Sistem Durumunu Göster")
MAKE_WORD_TRANSLATION(schedule_cmd, "enable schedule item", "Aktiviere Zeitplan", "", "", "aktywuj wybrany harmonogram", "", "", "") // TODO translate MAKE_WORD_TRANSLATION(schedule_cmd, "enable schedule item", "Aktiviere Zeitplan", "", "", "aktywuj wybrany harmonogram", "", "", "")
// tags // tags
MAKE_WORD_TRANSLATION(tag_boiler_data_ww, "dhw", "WW", "dhw", "VV", "CWU", "dhw", "ecs", "SKS") MAKE_WORD_TRANSLATION(tag_boiler_data_ww, "dhw", "WW", "dhw", "VV", "CWU", "dhw", "ecs", "SKS")
@@ -104,6 +104,7 @@ MAKE_WORD_TRANSLATION(tag_hs14, "hs14", "hs14", "hs14", "VK14", "ŹC14", "hs14",
MAKE_WORD_TRANSLATION(tag_hs15, "hs15", "hs15", "hs15", "VK15", "ŹC15", "hs15", "hs15", "hs15") MAKE_WORD_TRANSLATION(tag_hs15, "hs15", "hs15", "hs15", "VK15", "ŹC15", "hs15", "hs15", "hs15")
MAKE_WORD_TRANSLATION(tag_hs16, "hs16", "hs16", "hs16", "VK16", "ŹC16", "hs16", "hs16", "hs16") MAKE_WORD_TRANSLATION(tag_hs16, "hs16", "hs16", "hs16", "VK16", "ŹC16", "hs16", "hs16", "hs16")
// General // General
MAKE_WORD_TRANSLATION(on, "on", "an", "aan", "", "włączono", "", "on", "ık") MAKE_WORD_TRANSLATION(on, "on", "an", "aan", "", "włączono", "", "on", "ık")
MAKE_WORD_TRANSLATION(off, "off", "aus", "uit", "av", "wyłączono", "av", "off", "kapalı") MAKE_WORD_TRANSLATION(off, "off", "aus", "uit", "av", "wyłączono", "av", "off", "kapalı")
@@ -115,19 +116,19 @@ MAKE_WORD_TRANSLATION(OFF, "OFF", "AUS", "UIT", "AV", "wył.", "AV", "OFF", "KAP
MAKE_WORD_TRANSLATION(minutes, "minutes", "Minuten", "Minuten", "Minuter", "minut", "Minutter", "minutes", "dakika") MAKE_WORD_TRANSLATION(minutes, "minutes", "Minuten", "Minuten", "Minuter", "minut", "Minutter", "minutes", "dakika")
MAKE_WORD_TRANSLATION(hours, "hours", "Stunden", "Uren", "Timmar", "godzin", "Timer", "heures", "saat") MAKE_WORD_TRANSLATION(hours, "hours", "Stunden", "Uren", "Timmar", "godzin", "Timer", "heures", "saat")
MAKE_WORD_TRANSLATION(days, "days", "Tage", "Dagen", "Dagar", "dni", "Dager", "jours", "gün") MAKE_WORD_TRANSLATION(days, "days", "Tage", "Dagen", "Dagar", "dni", "Dager", "jours", "gün")
MAKE_WORD_TRANSLATION(seconds, "seconds", "Sekunden", "Seconden", "Sekunder", "sekund", "Sekunder", "secondes", "saniye") MAKE_WORD_TRANSLATION(seconds, "seconds", "Sekunden", "Seconden", "Sekunder", "sekundy", "Sekunder", "secondes", "saniye")
// Enum translations // Enum translations
// general // general
MAKE_WORD_TRANSLATION(day_mo, "mo", "Mo", "Mo", "", "poniedziałek", "Ma", "lun", "pzt") MAKE_WORD_TRANSLATION(day_mo, "mo", "Mo", "Mo", "", "poniedziałek", "ma", "lun", "pzt")
MAKE_WORD_TRANSLATION(day_tu, "tu", "Di", "Di", "Ti", "wtorek", "Ti", "mar", "sal") MAKE_WORD_TRANSLATION(day_tu, "tu", "Di", "Di", "Ti", "wtorek", "ti", "mar", "sal")
MAKE_WORD_TRANSLATION(day_we, "we", "Mi", "Wo", "On", "środa", "On", "mer", "çar") MAKE_WORD_TRANSLATION(day_we, "we", "Mi", "Wo", "On", "środa", "on", "mer", "çar")
MAKE_WORD_TRANSLATION(day_th, "th", "Do", "Do", "To", "czwartek", "To", "jeu", "per") MAKE_WORD_TRANSLATION(day_th, "th", "Do", "Do", "To", "czwartek", "to", "jeu", "per")
MAKE_WORD_TRANSLATION(day_fr, "fr", "Fr", "Vr", "Fr", "piątek", "Fr", "ven", "cum") MAKE_WORD_TRANSLATION(day_fr, "fr", "Fr", "Vr", "Fr", "piątek", "fr", "ven", "cum")
MAKE_WORD_TRANSLATION(day_sa, "sa", "Sa", "Za", "", "sobota", "Lø", "sam", "cts") MAKE_WORD_TRANSLATION(day_sa, "sa", "Sa", "Za", "", "sobota", "lø", "sam", "cts")
MAKE_WORD_TRANSLATION(day_su, "su", "So", "Zo", "", "niedziela", "Sø", "dim", "paz") MAKE_WORD_TRANSLATION(day_su, "su", "So", "Zo", "", "niedziela", "sø", "dim", "paz")
MAKE_WORD_TRANSLATION(all, "all", "Alle", "Alle", "Alla", "codziennie", "alle", "tous", "tüm") MAKE_WORD_TRANSLATION(all, "all", "Alle", "Alle", "Alla", "codziennie", "alle", "tous", "tüm")
MAKE_WORD_TRANSLATION(own_1, "own 1", "Eigen 1", "Eigen 1", "Egen 1", "własny 1", "Egen 1", "propre 1", "kendi 1") MAKE_WORD_TRANSLATION(own_1, "own 1", "Eigen 1", "Eigen 1", "Egen 1", "własny 1", "egen 1", "propre 1", "kendi 1")
MAKE_WORD_TRANSLATION(family, "family", "Familie", "Familie", "Familj", "rodzina", "familie", "famille", "aile") MAKE_WORD_TRANSLATION(family, "family", "Familie", "Familie", "Familj", "rodzina", "familie", "famille", "aile")
MAKE_WORD_TRANSLATION(morning, "morning", "Morgends", "'s ochtends", "Morgon", "zmiana 1", "morgen", "matin", "sabah") MAKE_WORD_TRANSLATION(morning, "morning", "Morgends", "'s ochtends", "Morgon", "zmiana 1", "morgen", "matin", "sabah")
MAKE_WORD_TRANSLATION(evening, "evening", "Abends", "'s avonds", "Kväll", "zmiana 2", "kveld", "soir", "akşam") MAKE_WORD_TRANSLATION(evening, "evening", "Abends", "'s avonds", "Kväll", "zmiana 2", "kveld", "soir", "akşam")
@@ -212,6 +213,7 @@ MAKE_WORD_TRANSLATION(german, "german", "Deutsch", "Duits", "Tyska", "niemiecki"
MAKE_WORD_TRANSLATION(dutch, "dutch", "Niederländisch", "Nederlands", "Nederländska", "niderlandzki", "nederlandsk", "néerlandais", "Flemenkçe") MAKE_WORD_TRANSLATION(dutch, "dutch", "Niederländisch", "Nederlands", "Nederländska", "niderlandzki", "nederlandsk", "néerlandais", "Flemenkçe")
MAKE_WORD_TRANSLATION(french, "french", "Französisch", "Frans", "Franska", "francuski", "fransk", "français", "Fransızca") MAKE_WORD_TRANSLATION(french, "french", "Französisch", "Frans", "Franska", "francuski", "fransk", "français", "Fransızca")
MAKE_WORD_TRANSLATION(italian, "italian", "Italienisch", "Italiaans", "Italienska", "włoski", "italiensk", "italien", "İtalyanca") MAKE_WORD_TRANSLATION(italian, "italian", "Italienisch", "Italiaans", "Italienska", "włoski", "italiensk", "italien", "İtalyanca")
MAKE_WORD_TRANSLATION(high, "high", "hoch", "hoog", "Hög", "wysoki", "høy", "haut") // TODO translate MAKE_WORD_TRANSLATION(high, "high", "hoch", "hoog", "Hög", "wysoki", "høy", "haut") // TODO translate
MAKE_WORD_TRANSLATION(low, "low", "niedrig", "laag", "Låg", "niski", "lav", "bas", "düşük") MAKE_WORD_TRANSLATION(low, "low", "niedrig", "laag", "Låg", "niski", "lav", "bas", "düşük")
MAKE_WORD_TRANSLATION(radiator, "radiator", "Heizkörper", "Radiator", "Radiator", "grzejniki", "radiator", "radiateur", "radyatör") MAKE_WORD_TRANSLATION(radiator, "radiator", "Heizkörper", "Radiator", "Radiator", "grzejniki", "radiator", "radiateur", "radyatör")
@@ -413,16 +415,16 @@ MAKE_TRANSLATION(manDefrost, "mandefrost", "manual defrost", "Manuelle Enteisung
MAKE_TRANSLATION(pvCooling, "pvcooling", "Cooling only with PV", "Kühlen nur mit PV", "", "", "chłodzenie tylko z PV", "kjøling med solpanel", "", "") // TODO translate MAKE_TRANSLATION(pvCooling, "pvcooling", "Cooling only with PV", "Kühlen nur mit PV", "", "", "chłodzenie tylko z PV", "kjøling med solpanel", "", "") // TODO translate
MAKE_TRANSLATION(hpCircPumpWw, "hpcircpumpww", "circulation pump available during dhw", "", "", "", "pompa cyrkulacji dostępna w trakcie c.w.u.", "sirkulasjonspumpe tilgjengelig under varmtvann", "", "") // TODO translate MAKE_TRANSLATION(hpCircPumpWw, "hpcircpumpww", "circulation pump available during dhw", "", "", "", "pompa cyrkulacji dostępna w trakcie c.w.u.", "sirkulasjonspumpe tilgjengelig under varmtvann", "", "") // TODO translate
MAKE_TRANSLATION(vp_cooling, "vpcooling", "valve/pump cooling", "", "", "", "zawór/pompa chłodzenia", "varmepumpe kjøling", "", "") // TODO translate MAKE_TRANSLATION(vp_cooling, "vpcooling", "valve/pump cooling", "", "", "", "zawór/pompa chłodzenia", "varmepumpe kjøling", "", "") // TODO translate
MAKE_TRANSLATION(VC0valve, "vc0valve", "VC0 valve", "VC0 Ventil", "", "", "zawór VC0", "vc0 ventil", "", "") // TODO translate MAKE_TRANSLATION(VC0valve, "vc0valve", "VC0 valve", "", "", "", "zawór VC0", "vc0 ventil", "", "") // TODO translate
MAKE_TRANSLATION(primePump, "primepump", "primary heatpump", "Hauptpumpe", "", "", "główna pompa ciepła", "primærpumpe", "", "") // TODO translate MAKE_TRANSLATION(primePump, "primepump", "primary heatpump", "", "", "", "główna pompa ciepła", "primærpumpe", "", "") // TODO translate
MAKE_TRANSLATION(primePumpMod, "primepumpmod", "primary heatpump modulation", "Modulation Hauptpumpe", "", "", "wysterowanie głównej pompy ciepła", "primærpumpelast", "", "") // TODO translate MAKE_TRANSLATION(primePumpMod, "primepumpmod", "primary heatpump modulation", "", "", "", "wysterowanie głównej pompy ciepła", "primærpumpelast", "", "") // TODO translate
MAKE_TRANSLATION(hp3wayValve, "hp3way", "3-way valve", "3-Wege-Ventil", "", "", "zawór 3-drogowy pompy ciepła", "3-veisventil", "", "") // TODO translate MAKE_TRANSLATION(hp3wayValve, "hp3way", "3-way valve", "", "", "", "zawór 3-drogowy pompy ciepła", "3-veisventil", "", "") // TODO translate
MAKE_TRANSLATION(elHeatStep1, "elheatstep1", "el. heater step 1", "El. Heizer Stufe 1", "", "", "dogrzewacz poziom 1", "el-kolbe steg 1", "", "") // TODO translate MAKE_TRANSLATION(elHeatStep1, "elheatstep1", "el. heater step 1", "", "", "", "dogrzewacz poziom 1", "el-kolbe steg 1", "", "") // TODO translate
MAKE_TRANSLATION(elHeatStep2, "elheatstep2", "el. heater step 2", "El. Heizer Stufe 2", "", "", "dogrzewacz poziom 2", "el-kolbe steg 2", "", "") // TODO translate MAKE_TRANSLATION(elHeatStep2, "elheatstep2", "el. heater step 2", "", "", "", "dogrzewacz poziom 2", "el-kolbe steg 2", "", "") // TODO translate
MAKE_TRANSLATION(elHeatStep3, "elheatstep3", "el. heater step 3", "El. Heizer Stufe 3", "", "", "dogrzewacz poziom 3", "el-kolbe steg 3", "", "") // TODO translate MAKE_TRANSLATION(elHeatStep3, "elheatstep3", "el. heater step 3", "", "", "", "dogrzewacz poziom 3", "el-kolbe steg 3", "", "") // TODO translate
MAKE_TRANSLATION(wwAlternatingOper, "wwalternatingop", "alternating operation", "Wechselbetrieb", "", "", "praca naprzemienna", "alternativ drift", "") // TODO translate MAKE_TRANSLATION(wwAlternatingOper, "wwalternatingop", "alternating operation", "", "", "", "praca naprzemienna", "alternativ drift", "") // TODO translate
MAKE_TRANSLATION(wwAltOpPrioHeat, "wwaltopprioheat", "prioritise heating during dhw", "Heizen bevorzugt vor WW", "", "", "czas na ogrzewanie w trakcie c.w.u", "prioritert oppvarmning", "", "") // TODO translate MAKE_TRANSLATION(wwAltOpPrioHeat, "wwaltopprioheat", "prioritise heating during dhw", "", "", "", "czas na ogrzewanie w trakcie c.w.u", "prioritert oppvarmning", "", "") // TODO translate
MAKE_TRANSLATION(wwAltOpPrioWw, "wwaltopprioww", "prioritise dhw during heating", "WW bevorzugt vor Heizen", "", "", "czas na c.w.u w trakcie ogrzewania", "prioritert varmtvann", "", "") // TODO translate MAKE_TRANSLATION(wwAltOpPrioWw, "wwaltopprioww", "prioritise dhw during heating", "", "", "", "czas na c.w.u w trakcie ogrzewania", "prioritert varmtvann", "", "") // TODO translate
// hybrid heatpump // hybrid heatpump
MAKE_TRANSLATION(hybridStrategy, "hybridstrategy", "hybrid control strategy", "Hybrid Strategie", "Hybride strategie", "Hybrid kontrollstrategi", "strategia sterowania hybrydowego", "hybrid kontrollstrategi", "stratégie contrôle hybride", "") MAKE_TRANSLATION(hybridStrategy, "hybridstrategy", "hybrid control strategy", "Hybrid Strategie", "Hybride strategie", "Hybrid kontrollstrategi", "strategia sterowania hybrydowego", "hybrid kontrollstrategi", "stratégie contrôle hybride", "")

View File

@@ -41,7 +41,7 @@ void WebScheduler::read(WebScheduler & webScheduler, JsonObject & root) {
char s[3]; char s[3];
for (const ScheduleItem & scheduleItem : webScheduler.scheduleItems) { for (const ScheduleItem & scheduleItem : webScheduler.scheduleItems) {
JsonObject si = schedule.createNestedObject(); JsonObject si = schedule.createNestedObject();
si["id"] = Helpers::smallitoa(s, ++counter); // id is only used to render the table and must be unique si["id"] = counter++; // id is only used to render the table and must be unique
si["active"] = scheduleItem.active; si["active"] = scheduleItem.active;
si["flags"] = scheduleItem.flags; si["flags"] = scheduleItem.flags;
si["time"] = scheduleItem.time; si["time"] = scheduleItem.time;

View File

@@ -131,47 +131,47 @@ void WebStatusService::webStatusService(AsyncWebServerRequest * request) {
JsonObject statJson; JsonObject statJson;
statJson = statsJson.createNestedObject(); statJson = statsJson.createNestedObject();
statJson["id"] = "0"; statJson["id"] = 0;
statJson["s"] = EMSESP::rxservice_.telegram_count(); statJson["s"] = EMSESP::rxservice_.telegram_count();
statJson["f"] = EMSESP::rxservice_.telegram_error_count(); statJson["f"] = EMSESP::rxservice_.telegram_error_count();
statJson["q"] = EMSESP::rxservice_.quality(); statJson["q"] = EMSESP::rxservice_.quality();
statJson = statsJson.createNestedObject(); statJson = statsJson.createNestedObject();
statJson["id"] = "1"; statJson["id"] = 1;
statJson["s"] = EMSESP::txservice_.telegram_read_count(); statJson["s"] = EMSESP::txservice_.telegram_read_count();
statJson["f"] = EMSESP::txservice_.telegram_read_fail_count(); statJson["f"] = EMSESP::txservice_.telegram_read_fail_count();
statJson["q"] = EMSESP::txservice_.read_quality(); statJson["q"] = EMSESP::txservice_.read_quality();
statJson = statsJson.createNestedObject(); statJson = statsJson.createNestedObject();
statJson["id"] = "2"; statJson["id"] = 2;
statJson["s"] = EMSESP::txservice_.telegram_write_count(); statJson["s"] = EMSESP::txservice_.telegram_write_count();
statJson["f"] = EMSESP::txservice_.telegram_write_fail_count(); statJson["f"] = EMSESP::txservice_.telegram_write_fail_count();
statJson["q"] = EMSESP::txservice_.write_quality(); statJson["q"] = EMSESP::txservice_.write_quality();
if (EMSESP::dallassensor_.dallas_enabled()) { if (EMSESP::dallassensor_.dallas_enabled()) {
statJson = statsJson.createNestedObject(); statJson = statsJson.createNestedObject();
statJson["id"] = "3"; statJson["id"] = 3;
statJson["s"] = EMSESP::dallassensor_.reads(); statJson["s"] = EMSESP::dallassensor_.reads();
statJson["f"] = EMSESP::dallassensor_.fails(); statJson["f"] = EMSESP::dallassensor_.fails();
statJson["q"] = EMSESP::dallassensor_.reads() == 0 ? 100 : 100 - (uint8_t)((100 * EMSESP::dallassensor_.fails()) / EMSESP::dallassensor_.reads()); statJson["q"] = EMSESP::dallassensor_.reads() == 0 ? 100 : 100 - (uint8_t)((100 * EMSESP::dallassensor_.fails()) / EMSESP::dallassensor_.reads());
} }
if (EMSESP::analog_enabled()) { if (EMSESP::analog_enabled()) {
statJson = statsJson.createNestedObject(); statJson = statsJson.createNestedObject();
statJson["id"] = "4"; statJson["id"] = 4;
statJson["s"] = EMSESP::analogsensor_.reads(); statJson["s"] = EMSESP::analogsensor_.reads();
statJson["f"] = EMSESP::analogsensor_.fails(); statJson["f"] = EMSESP::analogsensor_.fails();
statJson["q"] = EMSESP::analogsensor_.reads() == 0 ? 100 : 100 - (uint8_t)((100 * EMSESP::analogsensor_.fails()) / EMSESP::analogsensor_.reads()); statJson["q"] = EMSESP::analogsensor_.reads() == 0 ? 100 : 100 - (uint8_t)((100 * EMSESP::analogsensor_.fails()) / EMSESP::analogsensor_.reads());
} }
if (Mqtt::enabled()) { if (Mqtt::enabled()) {
statJson = statsJson.createNestedObject(); statJson = statsJson.createNestedObject();
statJson["id"] = "5"; statJson["id"] = 5;
statJson["s"] = Mqtt::publish_count(); statJson["s"] = Mqtt::publish_count();
statJson["f"] = Mqtt::publish_fails(); statJson["f"] = Mqtt::publish_fails();
statJson["q"] = Mqtt::publish_count() == 0 ? 100 : 100 - (uint8_t)((100 * Mqtt::publish_fails()) / (Mqtt::publish_count() + Mqtt::publish_fails())); statJson["q"] = Mqtt::publish_count() == 0 ? 100 : 100 - (uint8_t)((100 * Mqtt::publish_fails()) / (Mqtt::publish_count() + Mqtt::publish_fails()));
} }
statJson = statsJson.createNestedObject(); statJson = statsJson.createNestedObject();
statJson["id"] = "6"; statJson["id"] = 6;
statJson["s"] = WebAPIService::api_count(); // + WebAPIService::api_fails(); statJson["s"] = WebAPIService::api_count(); // + WebAPIService::api_fails();
statJson["f"] = WebAPIService::api_fails(); statJson["f"] = WebAPIService::api_fails();
statJson["q"] = statJson["q"] =
@@ -180,7 +180,7 @@ void WebStatusService::webStatusService(AsyncWebServerRequest * request) {
#ifndef EMSESP_STANDALONE #ifndef EMSESP_STANDALONE
if (EMSESP::system_.syslog_enabled()) { if (EMSESP::system_.syslog_enabled()) {
statJson = statsJson.createNestedObject(); statJson = statsJson.createNestedObject();
statJson["id"] = "7"; statJson["id"] = 7;
statJson["s"] = EMSESP::system_.syslog_count(); statJson["s"] = EMSESP::system_.syslog_count();
statJson["f"] = EMSESP::system_.syslog_fails(); statJson["f"] = EMSESP::system_.syslog_fails();
statJson["q"] = EMSESP::system_.syslog_count() == 0 statJson["q"] = EMSESP::system_.syslog_count() == 0