mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2026-01-26 08:39:09 +03:00
6
.prettierignore
Normal file
6
.prettierignore
Normal file
@@ -0,0 +1,6 @@
|
||||
*/node_modules/
|
||||
build/
|
||||
dist/*
|
||||
interface/src/i18n/*
|
||||
|
||||
.typesafe-i18n.json
|
||||
@@ -32,7 +32,7 @@
|
||||
"@table-library/react-table-library": "4.1.7",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/node": "^20.12.7",
|
||||
"@types/react": "^18.3.0",
|
||||
"@types/react": "^18.3.1",
|
||||
"@types/react-dom": "^18.3.0",
|
||||
"@types/react-router-dom": "^5.3.3",
|
||||
"alova": "^2.20.3",
|
||||
|
||||
@@ -1,30 +1,22 @@
|
||||
import { useContext, useState } from 'react';
|
||||
import type { ChangeEventHandler, FC } from 'react';
|
||||
import type { FC } from 'react';
|
||||
import { toast } from 'react-toastify';
|
||||
|
||||
import ForwardIcon from '@mui/icons-material/Forward';
|
||||
import { Box, Button, MenuItem, Paper, TextField, Typography } from '@mui/material';
|
||||
import { Box, Button, Paper, Typography } from '@mui/material';
|
||||
|
||||
import * as AuthenticationApi from 'api/authentication';
|
||||
import { PROJECT_NAME } from 'api/env';
|
||||
|
||||
import { useRequest } from 'alova';
|
||||
import type { ValidateFieldsError } from 'async-validator';
|
||||
import { ValidatedPasswordField, ValidatedTextField } from 'components';
|
||||
import {
|
||||
LanguageSelector,
|
||||
ValidatedPasswordField,
|
||||
ValidatedTextField
|
||||
} from 'components';
|
||||
import { AuthenticationContext } from 'contexts/authentication';
|
||||
import DEflag from 'i18n/DE.svg';
|
||||
import FRflag from 'i18n/FR.svg';
|
||||
import GBflag from 'i18n/GB.svg';
|
||||
import ITflag from 'i18n/IT.svg';
|
||||
import NLflag from 'i18n/NL.svg';
|
||||
import NOflag from 'i18n/NO.svg';
|
||||
import PLflag from 'i18n/PL.svg';
|
||||
import SKflag from 'i18n/SK.svg';
|
||||
import SVflag from 'i18n/SV.svg';
|
||||
import TRflag from 'i18n/TR.svg';
|
||||
import { I18nContext } from 'i18n/i18n-react';
|
||||
import type { Locales } from 'i18n/i18n-types';
|
||||
import { loadLocaleAsync } from 'i18n/i18n-util.async';
|
||||
import { useI18nContext } from 'i18n/i18n-react';
|
||||
import type { SignInRequest } from 'types';
|
||||
import { onEnterCallback, updateValue } from 'utils';
|
||||
import { SIGN_IN_REQUEST_VALIDATOR, validate } from 'validators';
|
||||
@@ -32,7 +24,7 @@ import { SIGN_IN_REQUEST_VALIDATOR, validate } from 'validators';
|
||||
const SignIn: FC = () => {
|
||||
const authenticationContext = useContext(AuthenticationContext);
|
||||
|
||||
const { LL, setLocale, locale } = useContext(I18nContext);
|
||||
const { LL } = useI18nContext();
|
||||
|
||||
const [signInRequest, setSignInRequest] = useState<SignInRequest>({
|
||||
username: '',
|
||||
@@ -83,15 +75,6 @@ const SignIn: FC = () => {
|
||||
|
||||
const submitOnEnter = onEnterCallback(signIn);
|
||||
|
||||
const onLocaleSelected: ChangeEventHandler<HTMLInputElement> = async ({
|
||||
target
|
||||
}) => {
|
||||
const loc = target.value as Locales;
|
||||
localStorage.setItem('lang', loc);
|
||||
await loadLocaleAsync(loc);
|
||||
setLocale(loc);
|
||||
};
|
||||
|
||||
return (
|
||||
<Box
|
||||
display="flex"
|
||||
@@ -115,55 +98,7 @@ const SignIn: FC = () => {
|
||||
>
|
||||
<Typography variant="h4">{PROJECT_NAME}</Typography>
|
||||
|
||||
<TextField
|
||||
name="locale"
|
||||
variant="outlined"
|
||||
value={locale}
|
||||
onChange={onLocaleSelected}
|
||||
size="small"
|
||||
select
|
||||
>
|
||||
<MenuItem key="de" value="de">
|
||||
<img src={DEflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
DE
|
||||
</MenuItem>
|
||||
<MenuItem key="en" value="en">
|
||||
<img src={GBflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
EN
|
||||
</MenuItem>
|
||||
<MenuItem key="fr" value="fr">
|
||||
<img src={FRflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
FR
|
||||
</MenuItem>
|
||||
<MenuItem key="it" value="it">
|
||||
<img src={ITflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
IT
|
||||
</MenuItem>
|
||||
<MenuItem key="nl" value="nl">
|
||||
<img src={NLflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
NL
|
||||
</MenuItem>
|
||||
<MenuItem key="no" value="no">
|
||||
<img src={NOflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
NO
|
||||
</MenuItem>
|
||||
<MenuItem key="pl" value="pl">
|
||||
<img src={PLflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
PL
|
||||
</MenuItem>
|
||||
<MenuItem key="sk" value="sk">
|
||||
<img src={SKflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
SK
|
||||
</MenuItem>
|
||||
<MenuItem key="sv" value="sv">
|
||||
<img src={SVflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
SV
|
||||
</MenuItem>
|
||||
<MenuItem key="tr" value="tr">
|
||||
<img src={TRflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
TR
|
||||
</MenuItem>
|
||||
</TextField>
|
||||
<LanguageSelector />
|
||||
|
||||
<Box display="flex" flexDirection="column" alignItems="center">
|
||||
<ValidatedTextField
|
||||
|
||||
84
interface/src/components/inputs/LanguageSelector.tsx
Normal file
84
interface/src/components/inputs/LanguageSelector.tsx
Normal file
@@ -0,0 +1,84 @@
|
||||
import { type ChangeEventHandler, type FC, useContext } from 'react';
|
||||
|
||||
import { MenuItem, TextField } from '@mui/material';
|
||||
|
||||
import DEflag from 'i18n/DE.svg';
|
||||
import FRflag from 'i18n/FR.svg';
|
||||
import GBflag from 'i18n/GB.svg';
|
||||
import ITflag from 'i18n/IT.svg';
|
||||
import NLflag from 'i18n/NL.svg';
|
||||
import NOflag from 'i18n/NO.svg';
|
||||
import PLflag from 'i18n/PL.svg';
|
||||
import SKflag from 'i18n/SK.svg';
|
||||
import SVflag from 'i18n/SV.svg';
|
||||
import TRflag from 'i18n/TR.svg';
|
||||
import { I18nContext } from 'i18n/i18n-react';
|
||||
import type { Locales } from 'i18n/i18n-types';
|
||||
import { loadLocaleAsync } from 'i18n/i18n-util.async';
|
||||
|
||||
const LanguageSelector: FC = () => {
|
||||
const { setLocale, locale } = useContext(I18nContext);
|
||||
|
||||
const onLocaleSelected: ChangeEventHandler<HTMLInputElement> = async ({
|
||||
target
|
||||
}) => {
|
||||
const loc = target.value as Locales;
|
||||
localStorage.setItem('lang', loc);
|
||||
await loadLocaleAsync(loc);
|
||||
setLocale(loc);
|
||||
};
|
||||
|
||||
return (
|
||||
<TextField
|
||||
name="locale"
|
||||
variant="outlined"
|
||||
value={locale}
|
||||
onChange={onLocaleSelected}
|
||||
size="small"
|
||||
select
|
||||
>
|
||||
<MenuItem key="de" value="de">
|
||||
<img src={DEflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
DE
|
||||
</MenuItem>
|
||||
<MenuItem key="en" value="en">
|
||||
<img src={GBflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
EN
|
||||
</MenuItem>
|
||||
<MenuItem key="fr" value="fr">
|
||||
<img src={FRflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
FR
|
||||
</MenuItem>
|
||||
<MenuItem key="it" value="it">
|
||||
<img src={ITflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
IT
|
||||
</MenuItem>
|
||||
<MenuItem key="nl" value="nl">
|
||||
<img src={NLflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
NL
|
||||
</MenuItem>
|
||||
<MenuItem key="no" value="no">
|
||||
<img src={NOflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
NO
|
||||
</MenuItem>
|
||||
<MenuItem key="pl" value="pl">
|
||||
<img src={PLflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
PL
|
||||
</MenuItem>
|
||||
<MenuItem key="sk" value="sk">
|
||||
<img src={SKflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
SK
|
||||
</MenuItem>
|
||||
<MenuItem key="sv" value="sv">
|
||||
<img src={SVflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
SV
|
||||
</MenuItem>
|
||||
<MenuItem key="tr" value="tr">
|
||||
<img src={TRflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
TR
|
||||
</MenuItem>
|
||||
</TextField>
|
||||
);
|
||||
};
|
||||
|
||||
export default LanguageSelector;
|
||||
@@ -1,3 +1,4 @@
|
||||
export { default as BlockFormControlLabel } from './BlockFormControlLabel';
|
||||
export { default as ValidatedPasswordField } from './ValidatedPasswordField';
|
||||
export { default as ValidatedTextField } from './ValidatedTextField';
|
||||
export { default as LanguageSelector } from './LanguageSelector';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { useContext, useState } from 'react';
|
||||
import type { ChangeEventHandler, FC } from 'react';
|
||||
import type { FC } from 'react';
|
||||
|
||||
import AccountCircleIcon from '@mui/icons-material/AccountCircle';
|
||||
import AssessmentIcon from '@mui/icons-material/Assessment';
|
||||
@@ -22,30 +22,17 @@ import {
|
||||
ListItemButton,
|
||||
ListItemIcon,
|
||||
ListItemText,
|
||||
MenuItem,
|
||||
Popover,
|
||||
TextField
|
||||
Popover
|
||||
} from '@mui/material';
|
||||
|
||||
import { LanguageSelector } from 'components/inputs';
|
||||
import LayoutMenuItem from 'components/layout/LayoutMenuItem';
|
||||
import { AuthenticatedContext } from 'contexts/authentication';
|
||||
import DEflag from 'i18n/DE.svg';
|
||||
import FRflag from 'i18n/FR.svg';
|
||||
import GBflag from 'i18n/GB.svg';
|
||||
import ITflag from 'i18n/IT.svg';
|
||||
import NLflag from 'i18n/NL.svg';
|
||||
import NOflag from 'i18n/NO.svg';
|
||||
import PLflag from 'i18n/PL.svg';
|
||||
import SKflag from 'i18n/SK.svg';
|
||||
import SVflag from 'i18n/SV.svg';
|
||||
import TRflag from 'i18n/TR.svg';
|
||||
import { I18nContext } from 'i18n/i18n-react';
|
||||
import type { Locales } from 'i18n/i18n-types';
|
||||
import { loadLocaleAsync } from 'i18n/i18n-util.async';
|
||||
import { useI18nContext } from 'i18n/i18n-react';
|
||||
|
||||
const LayoutMenu: FC = () => {
|
||||
const { me, signOut } = useContext(AuthenticatedContext);
|
||||
const { locale, LL, setLocale } = useContext(I18nContext);
|
||||
const { LL } = useI18nContext();
|
||||
|
||||
const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);
|
||||
|
||||
@@ -54,15 +41,6 @@ const LayoutMenu: FC = () => {
|
||||
|
||||
const [menuOpen, setMenuOpen] = useState(true);
|
||||
|
||||
const onLocaleSelected: ChangeEventHandler<HTMLInputElement> = async ({
|
||||
target
|
||||
}) => {
|
||||
const loc = target.value as Locales;
|
||||
localStorage.setItem('lang', loc);
|
||||
await loadLocaleAsync(loc);
|
||||
setLocale(loc);
|
||||
};
|
||||
|
||||
const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
||||
setAnchorEl(event.currentTarget);
|
||||
};
|
||||
@@ -94,7 +72,7 @@ const LayoutMenu: FC = () => {
|
||||
}}
|
||||
>
|
||||
<ListItemText
|
||||
primary={LL.MODULE()}
|
||||
primary={LL.MODULES()}
|
||||
primaryTypographyProps={{
|
||||
fontWeight: '600',
|
||||
mb: '2px',
|
||||
@@ -173,7 +151,7 @@ const LayoutMenu: FC = () => {
|
||||
|
||||
<Popover
|
||||
id={id}
|
||||
sx={{ mt: 1 }}
|
||||
// sx={{ mb: 10 }}
|
||||
open={open}
|
||||
anchorEl={anchorEl}
|
||||
onClose={handleClose}
|
||||
@@ -187,12 +165,22 @@ const LayoutMenu: FC = () => {
|
||||
}}
|
||||
>
|
||||
<Box
|
||||
p={2}
|
||||
padding={2}
|
||||
justifyContent="center"
|
||||
flexDirection="column"
|
||||
sx={{
|
||||
borderRadius: 2,
|
||||
border: '2px solid grey'
|
||||
borderRadius: 3,
|
||||
border: '3px solid grey'
|
||||
}}
|
||||
>
|
||||
<Button
|
||||
variant="outlined"
|
||||
fullWidth
|
||||
color="primary"
|
||||
onClick={() => signOut(true)}
|
||||
>
|
||||
{LL.SIGN_OUT()}
|
||||
</Button>
|
||||
<List>
|
||||
<ListItem disablePadding>
|
||||
<Avatar sx={{ bgcolor: '#b1395f', color: 'white' }}>
|
||||
@@ -201,72 +189,13 @@ const LayoutMenu: FC = () => {
|
||||
<ListItemText
|
||||
sx={{ pl: 2 }}
|
||||
primary={me.username}
|
||||
secondary={me.admin ? LL.ADMIN() : LL.GUEST()}
|
||||
secondary={'(' + (me.admin ? LL.ADMINISTRATOR() : LL.GUEST()) + ')'}
|
||||
/>
|
||||
</ListItem>
|
||||
</List>
|
||||
<Box p={2}>
|
||||
<TextField
|
||||
name="locale"
|
||||
InputProps={{ style: { fontSize: 10 } }}
|
||||
variant="outlined"
|
||||
value={locale}
|
||||
onChange={onLocaleSelected}
|
||||
size="small"
|
||||
select
|
||||
>
|
||||
<MenuItem key="de" value="de">
|
||||
<img src={DEflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
DE
|
||||
</MenuItem>
|
||||
<MenuItem key="en" value="en">
|
||||
<img src={GBflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
EN
|
||||
</MenuItem>
|
||||
<MenuItem key="fr" value="fr">
|
||||
<img src={FRflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
FR
|
||||
</MenuItem>
|
||||
<MenuItem key="it" value="it">
|
||||
<img src={ITflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
IT
|
||||
</MenuItem>
|
||||
<MenuItem key="nl" value="nl">
|
||||
<img src={NLflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
NL
|
||||
</MenuItem>
|
||||
<MenuItem key="no" value="no">
|
||||
<img src={NOflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
NO
|
||||
</MenuItem>
|
||||
<MenuItem key="pl" value="pl">
|
||||
<img src={PLflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
PL
|
||||
</MenuItem>
|
||||
<MenuItem key="sk" value="sk">
|
||||
<img src={SKflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
SK
|
||||
</MenuItem>
|
||||
<MenuItem key="sv" value="sv">
|
||||
<img src={SVflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
SV
|
||||
</MenuItem>
|
||||
<MenuItem key="tr" value="tr">
|
||||
<img src={TRflag} style={{ width: 16, verticalAlign: 'middle' }} />
|
||||
TR
|
||||
</MenuItem>
|
||||
</TextField>
|
||||
</Box>
|
||||
<Box>
|
||||
<Button
|
||||
variant="outlined"
|
||||
fullWidth
|
||||
color="primary"
|
||||
onClick={() => signOut(true)}
|
||||
>
|
||||
{LL.SIGN_OUT()}
|
||||
</Button>
|
||||
</Box>
|
||||
{/* <Box p={2}> */}
|
||||
<LanguageSelector />
|
||||
{/* </Box> */}
|
||||
</Box>
|
||||
</Popover>
|
||||
</>
|
||||
|
||||
@@ -65,14 +65,12 @@ const de: Translation = {
|
||||
TEMP_SENSOR: 'Temperatursensor',
|
||||
TEMP_SENSORS: 'Temperatursensoren',
|
||||
WRITE_CMD_SENT: 'Befehl schreiben wurde gesendet',
|
||||
EMS_BUS_WARNING:
|
||||
'EMS-Bus getrennt. Wenn diese Warnung nach einigen Sekunden immer noch besteht, überprüfen Sie bitte die Einstellungen und das Board-Profil',
|
||||
EMS_BUS_WARNING: 'EMS-Bus getrennt. Wenn diese Warnung nach einigen Sekunden immer noch besteht, überprüfen Sie bitte die Einstellungen und das Board-Profil',
|
||||
EMS_BUS_SCANNING: 'Suche nach EMS Geräten...',
|
||||
CONNECTED: 'Verbunden',
|
||||
TX_ISSUES: 'Tx-Probleme - versuchen Sie einen anderen Tx-Modus',
|
||||
DISCONNECTED: 'Getrennt',
|
||||
EMS_SCAN:
|
||||
'Möchten Sie wirklich eine vollständige Gerätesuche des EMS-Busses starten?',
|
||||
EMS_SCAN: 'Möchten Sie wirklich eine vollständige Gerätesuche des EMS-Busses starten?',
|
||||
EMS_BUS_STATUS: 'EMS-Busstatus',
|
||||
ACTIVE_DEVICES: 'Aktive Geräte und Sensoren',
|
||||
EMS_DEVICE: 'EMS Gerät',
|
||||
@@ -102,8 +100,7 @@ const de: Translation = {
|
||||
CUSTOMIZATIONS: 'Anpassungen',
|
||||
APPLICATION_RESTARTING: 'EMS-ESP startet neu',
|
||||
INTERFACE_BOARD_PROFILE: 'Interface Platinenprofil',
|
||||
BOARD_PROFILE_TEXT:
|
||||
'Wählen Sie ein vorkonfiguriertes Platinenprofil aus der Liste unten aus oder wählen Sie "Custom", um Ihre eigenen Hardwareeinstellungen zu konfigurieren',
|
||||
BOARD_PROFILE_TEXT: 'Wählen Sie ein vorkonfiguriertes Platinenprofil aus der Liste unten aus oder wählen Sie "Custom", um Ihre eigenen Hardwareeinstellungen zu konfigurieren',
|
||||
BOARD_PROFILE: 'Platinenprofil',
|
||||
CUSTOM: 'Custom',
|
||||
GPIO_OF: '{0} GPIO',
|
||||
@@ -121,8 +118,7 @@ const de: Translation = {
|
||||
ENABLE_ANALOG: 'Aktiviere Analogsensoren',
|
||||
CONVERT_FAHRENHEIT: 'Konvertiere Temperaturwerte in Fahrenheit',
|
||||
BYPASS_TOKEN: 'Zugriffstoken-Autorisierung bei API-Aufrufen umgehen',
|
||||
READONLY:
|
||||
'Nur-Lese-Modus aktivieren (blockiert alle ausgehenden EMS Tx Write-Befehle)',
|
||||
READONLY: 'Nur-Lese-Modus aktivieren (blockiert alle ausgehenden EMS Tx Write-Befehle)',
|
||||
UNDERCLOCK_CPU: 'CPU-Geschwindigkeit untertakten',
|
||||
HEATINGOFF: 'Heizen ausschalten beim EMS-ESP Start',
|
||||
ENABLE_SHOWER_TIMER: 'Duschtimer aktivieren',
|
||||
@@ -144,16 +140,13 @@ const de: Translation = {
|
||||
MINUTES: 'Minuten',
|
||||
HOURS: 'Stunden',
|
||||
RESTART: 'Neu starten',
|
||||
RESTART_TEXT:
|
||||
'EMS-ESP muss neu gestartet werden, um geänderte Systemeinstellungen zu übernehmen',
|
||||
RESTART_TEXT: 'EMS-ESP muss neu gestartet werden, um geänderte Systemeinstellungen zu übernehmen',
|
||||
RESTART_CONFIRM: 'EMS-ESP wirklich neu starten?',
|
||||
COMMAND: 'Befehl',
|
||||
CUSTOMIZATIONS_RESTART: 'Alle Anpassungen wurden entfernt. Neustart...',
|
||||
CUSTOMIZATIONS_FULL:
|
||||
'Ausgewählte Entitäten haben das Limit überschritten. Bitte stapelweise speichern',
|
||||
CUSTOMIZATIONS_FULL: 'Ausgewählte Entitäten haben das Limit überschritten. Bitte stapelweise speichern',
|
||||
CUSTOMIZATIONS_SAVED: 'Anpassungen gespeichert',
|
||||
CUSTOMIZATIONS_HELP_1:
|
||||
'Wählen Sie ein Gerät aus und passen Sie die Entitäten mithilfe der Optionen an',
|
||||
CUSTOMIZATIONS_HELP_1: 'Wählen Sie ein Gerät aus und passen Sie die Entitäten mithilfe der Optionen an',
|
||||
CUSTOMIZATIONS_HELP_2: 'als Favorit markieren',
|
||||
CUSTOMIZATIONS_HELP_3: 'Schreibaktion deaktivieren',
|
||||
CUSTOMIZATIONS_HELP_4: 'von MQTT und API ausschließen',
|
||||
@@ -163,19 +156,13 @@ const de: Translation = {
|
||||
SET_ALL: 'setzen Sie alle',
|
||||
OPTIONS: 'Optionen',
|
||||
NAME: 'Name',
|
||||
CUSTOMIZATIONS_RESET:
|
||||
'Möchten Sie wirklich alle Anpassungen entfernen, einschließlich der benutzerdefinierten Einstellungen der Temperatur- und Analogsensoren?',
|
||||
CUSTOMIZATIONS_RESET: 'Möchten Sie wirklich alle Anpassungen entfernen, einschließlich der benutzerdefinierten Einstellungen der Temperatur- und Analogsensoren?',
|
||||
SUPPORT_INFORMATION: 'Unterstützende Informationen',
|
||||
HELP_INFORMATION_1:
|
||||
'EMS-ESP Konfigurationsanweisungen und mehr finden Sie im Online-Wiki',
|
||||
HELP_INFORMATION_2:
|
||||
'Für einen Live-Community-Chat besuchen Sie unseren Discord-Server',
|
||||
HELP_INFORMATION_3:
|
||||
'Um neue Funktionen anzufragen oder Fehler zu melden, eröffnen Sie ein Issue auf Github',
|
||||
HELP_INFORMATION_4:
|
||||
'Bitte laden Sie die System-Details und hängen Sie sie an das Support-Issue an. ',
|
||||
HELP_INFORMATION_5:
|
||||
'EMS-ESP ist ein freies Open-Source Projekt. Bitte unterstützen Sie die zukünftige Entwicklung mit einem "Star" auf Github!',
|
||||
HELP_INFORMATION_1: 'EMS-ESP Konfigurationsanweisungen und mehr finden Sie im Online-Wiki',
|
||||
HELP_INFORMATION_2: 'Für einen Live-Community-Chat besuchen Sie unseren Discord-Server',
|
||||
HELP_INFORMATION_3: 'Um neue Funktionen anzufragen oder Fehler zu melden, eröffnen Sie ein Issue auf Github',
|
||||
HELP_INFORMATION_4: 'Bitte laden Sie die System-Details und hängen Sie sie an das Support-Issue an. ',
|
||||
HELP_INFORMATION_5: 'EMS-ESP ist ein freies Open-Source Projekt. Bitte unterstützen Sie die zukünftige Entwicklung mit einem "Star" auf Github!',
|
||||
UPLOAD: 'Hochladen',
|
||||
DOWNLOAD: '{{H|h|h}}erunterladen',
|
||||
ABORTED: 'abgebrochen',
|
||||
@@ -189,10 +176,8 @@ const de: Translation = {
|
||||
CLOSE: 'Schließen',
|
||||
USE: 'Verwenden Sie',
|
||||
FACTORY_RESET: 'Werkseinstellung',
|
||||
SYSTEM_FACTORY_TEXT:
|
||||
'EMS-ESP wurde auf Werkseinstellung gesetzt und startet als Zugangspunkt neu',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG:
|
||||
'Sind Sie sicher alle Einstellungen auf Werkseinstellung zu setzen?',
|
||||
SYSTEM_FACTORY_TEXT: 'EMS-ESP wurde auf Werkseinstellung gesetzt und startet als Zugangspunkt neu',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG: 'Sind Sie sicher alle Einstellungen auf Werkseinstellung zu setzen?',
|
||||
THE_LATEST: 'Die neueste',
|
||||
OFFICIAL: 'offizielle',
|
||||
DEVELOPMENT: 'Entwicklungs',
|
||||
@@ -210,10 +195,8 @@ const de: Translation = {
|
||||
ENABLE_OTA: 'OTA Updates verwenden',
|
||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Herunterladen der individuellen Entitätsanpassungen',
|
||||
DOWNLOAD_SCHEDULE_TEXT: 'Herunterladen geplanter Befehle',
|
||||
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',
|
||||
DOWNLOAD_SETTINGS_TEXT: 'Herunterladen der Anwendungseinstellungen. Vorsicht beim Teilen der Einstellungen, da sie Passwörter und andere sensitive Einstellungen enthalten',
|
||||
UPLOAD_TEXT: 'Hochladen von neuer Firmware (.bin), Geräte- oder Entitätseinstellungen (.json), zur optionalen Validitätsprüfung zuerst die (.md5) Datei hochladen',
|
||||
UPLOADING: 'Hochladen',
|
||||
UPLOAD_DROP_TEXT: 'Klicken Sie hier, oder ziehen eine Datei hierher',
|
||||
ERROR: 'Unerwarteter Fehler, bitter versuchen Sie es erneut',
|
||||
@@ -223,13 +206,11 @@ const de: Translation = {
|
||||
USER_WARNING: 'Sie müssen mindestens einen Admin-Nutzer konfigurieren',
|
||||
ADD: 'Hinzufügen',
|
||||
ACCESS_TOKEN_FOR: 'Zugangs-Token für',
|
||||
ACCESS_TOKEN_TEXT:
|
||||
'Dieses Token ist für REST API Aufrufe bestimmt, die eine Authentifizierung benötigen. Es kann entweder als Bearer Token im `Authorization-Header` oder in der Access_Token URL verwendet werden.',
|
||||
ACCESS_TOKEN_TEXT: 'Dieses Token ist für REST API Aufrufe bestimmt, die eine Authentifizierung benötigen. Es kann entweder als Bearer Token im `Authorization-Header` oder in der Access_Token URL verwendet werden.',
|
||||
GENERATING_TOKEN: 'Erzeuge Token',
|
||||
USER: 'Nutzer',
|
||||
MODIFY: 'Ändern',
|
||||
SU_TEXT:
|
||||
'Das su (super user) Passwort wird zum Signieren der Authentifikations-Tokens verwendet und ermöglicht Admin-Berechtigung in der Konsole.',
|
||||
SU_TEXT: 'Das su (super user) Passwort wird zum Signieren der Authentifikations-Tokens verwendet und ermöglicht Admin-Berechtigung in der Konsole.',
|
||||
NOT_ENABLED: 'Nicht aktiviert',
|
||||
ERRORS_OF: '{0} Fehler',
|
||||
DISCONNECT_REASON: 'Grund der Verbindungsunterbrechung',
|
||||
@@ -243,8 +224,7 @@ const de: Translation = {
|
||||
MQTT_NEST_1: 'Eingebettet in einem Gesamttopic',
|
||||
MQTT_NEST_2: 'Als einzelne Topics',
|
||||
MQTT_RESPONSE: 'Veröffentliche die Kommandoantwort als `response` Topic',
|
||||
MQTT_PUBLISH_TEXT_1:
|
||||
'Veröffentliche einzelne Werte bei Veränderung als eigene Topics',
|
||||
MQTT_PUBLISH_TEXT_1: 'Veröffentliche einzelne Werte bei Veränderung als eigene Topics',
|
||||
MQTT_PUBLISH_TEXT_2: 'Veröffentliche als Kommando-Topic (ioBroker)',
|
||||
MQTT_PUBLISH_TEXT_3: 'Aktiviere `MQTT Discovery`',
|
||||
MQTT_PUBLISH_TEXT_4: 'Prefix für die `Discovery`-Topics',
|
||||
@@ -305,7 +285,7 @@ const de: Translation = {
|
||||
NETWORK_SUBNET: 'Subnetz Maske',
|
||||
NETWORK_DNS: 'DNS Server',
|
||||
ADDRESS_OF: '{0} Adresse',
|
||||
ADMIN: 'Administrator',
|
||||
ADMINISTRATOR: 'Administrator',
|
||||
GUEST: 'Gast',
|
||||
NEW: 'Neuer',
|
||||
NEW_NAME_OF: 'Ändere {0}',
|
||||
@@ -313,13 +293,11 @@ const de: Translation = {
|
||||
MIN: 'min',
|
||||
MAX: 'max',
|
||||
BLOCK_NAVIGATE_1: 'Sie haben ungesicherte Änderungen',
|
||||
BLOCK_NAVIGATE_2:
|
||||
'Beim verlassen der Seite verlieren Sie ungesicherte Einstellungen. Wollen Sie die Seite wirklich verlassen?',
|
||||
BLOCK_NAVIGATE_2: 'Beim verlassen der Seite verlieren Sie ungesicherte Einstellungen. Wollen Sie die Seite wirklich verlassen?',
|
||||
STAY: 'Bleiben',
|
||||
LEAVE: 'Verlassen',
|
||||
SCHEDULER: 'Planer',
|
||||
SCHEDULER_HELP_1:
|
||||
'Fügen Sie eigene, geplante Befehle zur Automatisierung hinzu. Vergeben Sie einen Entitätsnamen um die Aktivierung über API/Mqtt zu steuern',
|
||||
SCHEDULER_HELP_1: 'Fügen Sie eigene, geplante Befehle zur Automatisierung hinzu. Vergeben Sie einen Entitätsnamen um die Aktivierung über API/Mqtt zu steuern',
|
||||
SCHEDULER_HELP_2: '00:00 aktiviert einmalige Ausführung am Start',
|
||||
SCHEDULE: 'Zeitplan',
|
||||
TIME: 'Zeit',
|
||||
@@ -349,7 +327,7 @@ const de: Translation = {
|
||||
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
|
||||
SECURITY_1: 'Add or remove users', // TODO translate
|
||||
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
|
||||
MODULE: 'Module' // TODO translate
|
||||
MODULES: 'Module'
|
||||
};
|
||||
|
||||
export default de;
|
||||
|
||||
@@ -65,8 +65,7 @@ const en: Translation = {
|
||||
TEMP_SENSOR: 'Temperature Sensor',
|
||||
TEMP_SENSORS: 'Temperature Sensors',
|
||||
WRITE_CMD_SENT: 'Write command sent',
|
||||
EMS_BUS_WARNING:
|
||||
'EMS bus disconnected. If this warning still persists after a few seconds please check settings and board profile',
|
||||
EMS_BUS_WARNING: 'EMS bus disconnected. If this warning still persists after a few seconds please check settings and board profile',
|
||||
EMS_BUS_SCANNING: 'Scanning for EMS devices...',
|
||||
CONNECTED: 'Connected',
|
||||
TX_ISSUES: 'Tx issues - check Tx Mode',
|
||||
@@ -101,8 +100,7 @@ const en: Translation = {
|
||||
CUSTOMIZATIONS: 'Customizations',
|
||||
APPLICATION_RESTARTING: 'EMS-ESP is restarting',
|
||||
INTERFACE_BOARD_PROFILE: 'Interface Board Profile',
|
||||
BOARD_PROFILE_TEXT:
|
||||
'Select a pre-configured interface board profile from the list below or choose Custom to configure your own hardware settings',
|
||||
BOARD_PROFILE_TEXT: 'Select a pre-configured interface board profile from the list below or choose Custom to configure your own hardware settings',
|
||||
BOARD_PROFILE: 'Board Profile',
|
||||
CUSTOM: 'Custom',
|
||||
GPIO_OF: '{0} GPIO',
|
||||
@@ -148,8 +146,7 @@ const en: Translation = {
|
||||
CUSTOMIZATIONS_RESTART: 'All customizations have been removed. Restarting...',
|
||||
CUSTOMIZATIONS_FULL: 'Selected entities exceeded limit. Please save in batches',
|
||||
CUSTOMIZATIONS_SAVED: 'Customizations saved',
|
||||
CUSTOMIZATIONS_HELP_1:
|
||||
'Select a device and customize the entities options or click to rename',
|
||||
CUSTOMIZATIONS_HELP_1: 'Select a device and customize the entities options or click to rename',
|
||||
CUSTOMIZATIONS_HELP_2: 'mark as favorite',
|
||||
CUSTOMIZATIONS_HELP_3: 'disable write action',
|
||||
CUSTOMIZATIONS_HELP_4: 'exclude from MQTT and API',
|
||||
@@ -159,17 +156,13 @@ const en: Translation = {
|
||||
SET_ALL: 'set all',
|
||||
OPTIONS: 'Options',
|
||||
NAME: 'Name',
|
||||
CUSTOMIZATIONS_RESET:
|
||||
'Are you sure you want remove all customizations including the custom settings of the Temperature and Analog sensors?',
|
||||
CUSTOMIZATIONS_RESET: 'Are you sure you want remove all customizations including the custom settings of the Temperature and Analog sensors?',
|
||||
SUPPORT_INFORMATION: 'Support Information',
|
||||
HELP_INFORMATION_1:
|
||||
'Visit the online wiki to get instructions on how to configure EMS-ESP',
|
||||
HELP_INFORMATION_1: 'Visit the online wiki to get instructions on how to configure EMS-ESP',
|
||||
HELP_INFORMATION_2: 'For live community chat join our Discord server',
|
||||
HELP_INFORMATION_3: 'To request a feature or report a bug',
|
||||
HELP_INFORMATION_4:
|
||||
'Download and attach your support information for a faster response when reporting an issue',
|
||||
HELP_INFORMATION_5:
|
||||
'EMS-ESP is a free and open-source project. Please support its future development by giving it a star on Github!',
|
||||
HELP_INFORMATION_4: 'Download and attach your support information for a faster response when reporting an issue',
|
||||
HELP_INFORMATION_5: 'EMS-ESP is a free and open-source project. Please support its future development by giving it a star on Github!',
|
||||
UPLOAD: 'Upload',
|
||||
DOWNLOAD: '{{D|d|d}}ownload',
|
||||
ABORTED: 'aborted',
|
||||
@@ -184,8 +177,7 @@ const en: Translation = {
|
||||
USE: 'Use',
|
||||
FACTORY_RESET: 'Factory Reset',
|
||||
SYSTEM_FACTORY_TEXT: 'Device has been factory reset and will now restart',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG:
|
||||
'Are you sure you want to reset EMS-ESP to its factory defaults?',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG: 'Are you sure you want to reset EMS-ESP to its factory defaults?',
|
||||
THE_LATEST: 'The latest',
|
||||
OFFICIAL: 'official',
|
||||
DEVELOPMENT: 'development',
|
||||
@@ -203,10 +195,8 @@ const en: Translation = {
|
||||
ENABLE_OTA: 'Enable OTA Updates',
|
||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Download the entity customizations',
|
||||
DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events',
|
||||
DOWNLOAD_SETTINGS_TEXT:
|
||||
'Download the application settings. Be careful when sharing your settings as this file contains passwords and other sensitive system information',
|
||||
UPLOAD_TEXT:
|
||||
'Upload a new firmware (.bin) file, settings or customizations (.json) file below, for optional validation upload (.md5) first',
|
||||
DOWNLOAD_SETTINGS_TEXT: 'Download the application settings. Be careful when sharing your settings as this file contains passwords and other sensitive system information',
|
||||
UPLOAD_TEXT: 'Upload a new firmware (.bin) file, settings or customizations (.json) file below, for optional validation upload (.md5) first',
|
||||
UPLOADING: 'Uploading',
|
||||
UPLOAD_DROP_TEXT: 'Drop file or click here',
|
||||
ERROR: 'Unexpected Error, please try again',
|
||||
@@ -216,13 +206,11 @@ const en: Translation = {
|
||||
USER_WARNING: 'You must have at least one admin user configured',
|
||||
ADD: 'Add',
|
||||
ACCESS_TOKEN_FOR: 'Access Token for',
|
||||
ACCESS_TOKEN_TEXT:
|
||||
'The token below is used with REST API calls that require authorization. It can be passed either as a Bearer token in the Authorization header or in the access_token URL query parameter.',
|
||||
ACCESS_TOKEN_TEXT: 'The token below is used with REST API calls that require authorization. It can be passed either as a Bearer token in the Authorization header or in the access_token URL query parameter.',
|
||||
GENERATING_TOKEN: 'Generating token',
|
||||
USER: 'User',
|
||||
MODIFY: 'Modify',
|
||||
SU_TEXT:
|
||||
'The su (super user) password is used to sign authentication tokens and also enable admin privileges within the Console.',
|
||||
SU_TEXT: 'The su (super user) password is used to sign authentication tokens and also enable admin privileges within the Console.',
|
||||
NOT_ENABLED: 'Not enabled',
|
||||
ERRORS_OF: '{0} Errors',
|
||||
DISCONNECT_REASON: 'Disconnect Reason',
|
||||
@@ -297,7 +285,7 @@ const en: Translation = {
|
||||
NETWORK_SUBNET: 'Subnet Mask',
|
||||
NETWORK_DNS: 'DNS Servers',
|
||||
ADDRESS_OF: '{0} Address',
|
||||
ADMIN: 'Admin',
|
||||
ADMINISTRATOR: 'Administrator',
|
||||
GUEST: 'Guest',
|
||||
NEW: 'New',
|
||||
NEW_NAME_OF: 'New {0} name',
|
||||
@@ -305,13 +293,11 @@ const en: Translation = {
|
||||
MIN: 'min',
|
||||
MAX: 'max',
|
||||
BLOCK_NAVIGATE_1: 'You have unsaved changes',
|
||||
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?',
|
||||
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?',
|
||||
STAY: 'Stay',
|
||||
LEAVE: 'Leave',
|
||||
SCHEDULER: 'Scheduler',
|
||||
SCHEDULER_HELP_1:
|
||||
'Automate commands by adding scheduled events below. Set a unique Name to enable/disable activation via API/MQTT.',
|
||||
SCHEDULER_HELP_1: 'Automate commands by adding scheduled events below. Set a unique Name to enable/disable activation via API/MQTT.',
|
||||
SCHEDULER_HELP_2: 'Use 00:00 to trigger once on start-up',
|
||||
SCHEDULE: 'Schedule',
|
||||
TIME: 'Time',
|
||||
@@ -341,7 +327,7 @@ const en: Translation = {
|
||||
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings',
|
||||
SECURITY_1: 'Add or remove users',
|
||||
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware',
|
||||
MODULE: 'Module' // TODO translate
|
||||
MODULES: 'Modules'
|
||||
};
|
||||
|
||||
export default en;
|
||||
|
||||
@@ -64,9 +64,8 @@ const fr: Translation = {
|
||||
SENSOR: 'Capteur',
|
||||
TEMP_SENSOR: 'Capteur de température',
|
||||
TEMP_SENSORS: 'Capteurs de température',
|
||||
WRITE_CMD_SENT: 'Envoyer la commande sent', // TODO translate
|
||||
EMS_BUS_WARNING:
|
||||
'Bus EMS déconnecté. Si ce message persiste après quelques secondes, vérifiez les paramètres et la configuration de la carte.',
|
||||
WRITE_CMD_SENT: 'Envoyer la commande sent',
|
||||
EMS_BUS_WARNING: 'Bus EMS déconnecté. Si ce message persiste après quelques secondes, vérifiez les paramètres et la configuration de la carte.',
|
||||
EMS_BUS_SCANNING: 'Scan des appareils EMS...',
|
||||
CONNECTED: 'Connecté',
|
||||
TX_ISSUES: 'Problèmes de transmission (Tx) - Essayez un autre mode Tx',
|
||||
@@ -101,8 +100,7 @@ const fr: Translation = {
|
||||
CUSTOMIZATIONS: 'Personnalisation',
|
||||
APPLICATION_RESTARTING: 'EMS-ESP redémarre',
|
||||
INTERFACE_BOARD_PROFILE: "Profile de carte d'interface",
|
||||
BOARD_PROFILE_TEXT:
|
||||
"Sélectionnez un profil de carte d'interface préconfiguré dans la liste ci-dessous ou choisissez Personnalisé pour configurer vos propres paramètres matériels",
|
||||
BOARD_PROFILE_TEXT: "Sélectionnez un profil de carte d'interface préconfiguré dans la liste ci-dessous ou choisissez Personnalisé pour configurer vos propres paramètres matériels",
|
||||
BOARD_PROFILE: 'Profil de carte',
|
||||
CUSTOM: 'Personnalisé',
|
||||
GPIO_OF: 'GPIO {0}',
|
||||
@@ -120,8 +118,7 @@ const fr: Translation = {
|
||||
ENABLE_ANALOG: 'Activer les capteurs analogiques',
|
||||
CONVERT_FAHRENHEIT: 'Convertir les températures en Fahrenheit',
|
||||
BYPASS_TOKEN: "Contourner l'autorisation du jeton d'accès sur les appels API",
|
||||
READONLY:
|
||||
'Activer le mode lecture uniquement (bloque toutes les commandes EMS sortantes en écriture Tx)',
|
||||
READONLY: 'Activer le mode lecture uniquement (bloque toutes les commandes EMS sortantes en écriture Tx)',
|
||||
UNDERCLOCK_CPU: 'Underclock du CPU',
|
||||
HEATINGOFF: 'Start boiler with forced heating off', // TODO translate
|
||||
ENABLE_SHOWER_TIMER: 'Activer la minuterie de la douche',
|
||||
@@ -143,17 +140,13 @@ const fr: Translation = {
|
||||
MINUTES: 'minutes',
|
||||
HOURS: 'heures',
|
||||
RESTART: 'Redémarrer',
|
||||
RESTART_TEXT:
|
||||
'EMS-ESP a besoin de redémarrer pour appliquer les changements de paramètres du système',
|
||||
RESTART_TEXT: 'EMS-ESP a besoin de redémarrer pour appliquer les changements de paramètres du système',
|
||||
RESTART_CONFIRM: 'Etes-vous sûr de vouloir redémarrer EMS-ESP ?',
|
||||
COMMAND: 'Commande',
|
||||
CUSTOMIZATIONS_RESTART:
|
||||
'Toutes les personnalisations ont été supprimées. Redémarrage...',
|
||||
CUSTOMIZATIONS_FULL:
|
||||
'Les entités sélectionnées ont dépassé la limite. Veuillez sauvegarder par lots',
|
||||
CUSTOMIZATIONS_RESTART: 'Toutes les personnalisations ont été supprimées. Redémarrage...',
|
||||
CUSTOMIZATIONS_FULL: 'Les entités sélectionnées ont dépassé la limite. Veuillez sauvegarder par lots',
|
||||
CUSTOMIZATIONS_SAVED: 'Personnalisations enregistrées',
|
||||
CUSTOMIZATIONS_HELP_1:
|
||||
'Sélectionnez un appareil et personnalisez les options des entités ou cliquez pour renommer',
|
||||
CUSTOMIZATIONS_HELP_1: 'Sélectionnez un appareil et personnalisez les options des entités ou cliquez pour renommer',
|
||||
CUSTOMIZATIONS_HELP_2: 'marquer comme favori',
|
||||
CUSTOMIZATIONS_HELP_3: "désactiver l'action d'écriture",
|
||||
CUSTOMIZATIONS_HELP_4: "exclure de MQTT et de l'API",
|
||||
@@ -163,18 +156,13 @@ const fr: Translation = {
|
||||
SET_ALL: 'tout régler',
|
||||
OPTIONS: 'Options',
|
||||
NAME: 'Nom',
|
||||
CUSTOMIZATIONS_RESET:
|
||||
'Êtes-vous sûr de vouloir supprimer toutes les personnalisations, y compris les paramètres personnalisés des capteurs de température et analogiques ?',
|
||||
CUSTOMIZATIONS_RESET: 'Êtes-vous sûr de vouloir supprimer toutes les personnalisations, y compris les paramètres personnalisés des capteurs de température et analogiques ?',
|
||||
SUPPORT_INFORMATION: 'Information de support',
|
||||
HELP_INFORMATION_1:
|
||||
'Visitez le wiki en ligne pour obtenir des instructions sur la façon de configurer EMS-ESP.',
|
||||
HELP_INFORMATION_2:
|
||||
'Pour une discussion en direct avec la communauté, rejoignez notre serveur Discord',
|
||||
HELP_INFORMATION_1: 'Visitez le wiki en ligne pour obtenir des instructions sur la façon de configurer EMS-ESP.',
|
||||
HELP_INFORMATION_2: 'Pour une discussion en direct avec la communauté, rejoignez notre serveur Discord',
|
||||
HELP_INFORMATION_3: 'Pour demander une fonctionnalité ou signaler un problème',
|
||||
HELP_INFORMATION_4:
|
||||
"N'oubliez pas de télécharger et de joindre les informations relatives à votre système pour obtenir une réponse plus rapide lorsque vous signalez un problème",
|
||||
HELP_INFORMATION_5:
|
||||
'EMS-ESP est un projet libre et open-source. Merci de soutenir son développement futur en lui donnant une étoile sur Github !',
|
||||
HELP_INFORMATION_4: "N'oubliez pas de télécharger et de joindre les informations relatives à votre système pour obtenir une réponse plus rapide lorsque vous signalez un problème",
|
||||
HELP_INFORMATION_5: 'EMS-ESP est un projet libre et open-source. Merci de soutenir son développement futur en lui donnant une étoile sur Github !',
|
||||
UPLOAD: 'Upload',
|
||||
DOWNLOAD: '{{D|d|d}}ownload',
|
||||
ABORTED: 'annulé',
|
||||
@@ -189,8 +177,7 @@ const fr: Translation = {
|
||||
USE: 'Utiliser',
|
||||
FACTORY_RESET: 'Réinitialisation',
|
||||
SYSTEM_FACTORY_TEXT: "L'appareil a été réinitialisé et va maintenant redémarrer",
|
||||
SYSTEM_FACTORY_TEXT_DIALOG:
|
||||
"Êtes-vous sûr de vouloir réinitialiser l'appareil à ses paramètres d'usine ?",
|
||||
SYSTEM_FACTORY_TEXT_DIALOG: "Êtes-vous sûr de vouloir réinitialiser l'appareil à ses paramètres d'usine ?",
|
||||
THE_LATEST: 'La dernière',
|
||||
OFFICIAL: 'officielle',
|
||||
DEVELOPMENT: 'développement',
|
||||
@@ -208,10 +195,8 @@ const fr: Translation = {
|
||||
ENABLE_OTA: 'Activer les updates OTA',
|
||||
DOWNLOAD_CUSTOMIZATION_TEXT: "Télécharger les personnalisations d'entités",
|
||||
DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events', // TODO translate
|
||||
DOWNLOAD_SETTINGS_TEXT:
|
||||
"Téléchargez les paramètres de l'application. Soyez prudent lorsque vous partagez vos paramètres car ce fichier contient des mots de passe et d'autres informations système sensibles.",
|
||||
UPLOAD_TEXT:
|
||||
"Téléchargez un nouveau fichier de firmware (.bin), un fichier de paramètres ou de personnalisations (.json) ci-dessous, pour une validation optionnelle téléchargez d'abord un fichier (.md5)",
|
||||
DOWNLOAD_SETTINGS_TEXT: "Téléchargez les paramètres de l'application. Soyez prudent lorsque vous partagez vos paramètres car ce fichier contient des mots de passe et d'autres informations système sensibles.",
|
||||
UPLOAD_TEXT: "Téléchargez un nouveau fichier de firmware (.bin), un fichier de paramètres ou de personnalisations (.json) ci-dessous, pour une validation optionnelle téléchargez d'abord un fichier (.md5)",
|
||||
UPLOADING: 'Téléchargement',
|
||||
UPLOAD_DROP_TEXT: 'Déposer le fichier ou cliquer ici',
|
||||
ERROR: 'Erreur inattendue, veuillez réessayer',
|
||||
@@ -221,13 +206,11 @@ const fr: Translation = {
|
||||
USER_WARNING: 'Vous devez avoir au moins un utilisateur admin configuré',
|
||||
ADD: 'Ajouter',
|
||||
ACCESS_TOKEN_FOR: "Jeton d'accès pour",
|
||||
ACCESS_TOKEN_TEXT:
|
||||
"Le jeton ci-dessous est utilisé avec les appels d'API REST qui nécessitent une autorisation. Il peut être passé soit en tant que jeton Bearer dans l'en-tête Authorization, soit dans le paramètre de requête URL access_token.",
|
||||
ACCESS_TOKEN_TEXT: "Le jeton ci-dessous est utilisé avec les appels d'API REST qui nécessitent une autorisation. Il peut être passé soit en tant que jeton Bearer dans l'en-tête Authorization, soit dans le paramètre de requête URL access_token.",
|
||||
GENERATING_TOKEN: 'Génération de jeton',
|
||||
USER: 'Utilisateur',
|
||||
MODIFY: 'Modifier',
|
||||
SU_TEXT:
|
||||
"Le mot de passe su (super utilisateur) est utilisé pour signer les jetons d'authentification et activer les privilèges d'administrateur dans la console.",
|
||||
SU_TEXT: "Le mot de passe su (super utilisateur) est utilisé pour signer les jetons d'authentification et activer les privilèges d'administrateur dans la console.",
|
||||
NOT_ENABLED: 'Non activé',
|
||||
ERRORS_OF: 'Erreurs {0}',
|
||||
DISCONNECT_REASON: 'Raison de la déconnexion',
|
||||
@@ -302,7 +285,7 @@ const fr: Translation = {
|
||||
NETWORK_SUBNET: 'Masque de sous-réseau',
|
||||
NETWORK_DNS: 'Serveurs DNS',
|
||||
ADDRESS_OF: 'Adresse de {0}',
|
||||
ADMIN: 'Admin',
|
||||
ADMINISTRATOR: 'Administrator',
|
||||
GUEST: 'Invité',
|
||||
NEW: 'Nouveau',
|
||||
NEW_NAME_OF: 'Nouveau nom de {0}',
|
||||
@@ -310,13 +293,11 @@ const fr: Translation = {
|
||||
MIN: 'min',
|
||||
MAX: 'max',
|
||||
BLOCK_NAVIGATE_1: 'You have unsaved changes', // TODO translate
|
||||
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: 'If you navigate to a different page, your unsaved changes will be lost. Are you sure you want to leave this page?', // TODO translate
|
||||
STAY: 'Stay', // TODO translate
|
||||
LEAVE: 'Leave', // TODO translate
|
||||
SCHEDULER: 'Scheduler', // TODO translate
|
||||
SCHEDULER_HELP_1:
|
||||
'Automate commands by adding scheduled events below. Set a unique Name to enable/disable activation via API/MQTT.', // TODO translate
|
||||
SCHEDULER_HELP_1: 'Automate commands by adding scheduled events below. Set a unique Name to enable/disable activation via API/MQTT.', // TODO translate
|
||||
SCHEDULER_HELP_2: 'Use 00:00 to trigger once on start-up', // TODO translate
|
||||
SCHEDULE: 'Schedule', // TODO translate
|
||||
TIME: 'Time', // TODO translate
|
||||
@@ -346,7 +327,7 @@ const fr: Translation = {
|
||||
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
|
||||
SECURITY_1: 'Add or remove users', // TODO translate
|
||||
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
|
||||
MODULE: 'Module' // TODO translate
|
||||
MODULES: 'Modules' // TODO translate
|
||||
};
|
||||
|
||||
export default fr;
|
||||
|
||||
@@ -65,8 +65,7 @@ const it: Translation = {
|
||||
TEMP_SENSOR: 'Sensore Temperatura',
|
||||
TEMP_SENSORS: 'Sensori Temperatura',
|
||||
WRITE_CMD_SENT: 'Scrittura comando inviata',
|
||||
EMS_BUS_WARNING:
|
||||
'EMS bus disconnesso. Se questo avvertimento persiste dopo alcuni secondi prego verificare impostazioni scheda',
|
||||
EMS_BUS_WARNING: 'EMS bus disconnesso. Se questo avvertimento persiste dopo alcuni secondi prego verificare impostazioni scheda',
|
||||
EMS_BUS_SCANNING: 'Scansione dispositivi EMS ...',
|
||||
CONNECTED: 'Connesso',
|
||||
TX_ISSUES: 'Problema di Tx - prova una modalità differente',
|
||||
@@ -101,8 +100,7 @@ const it: Translation = {
|
||||
CUSTOMIZATIONS: 'Personalizzazione',
|
||||
APPLICATION_RESTARTING: 'EMS-ESP sta riavviando',
|
||||
INTERFACE_BOARD_PROFILE: 'Profilo scheda di interfaccia',
|
||||
BOARD_PROFILE_TEXT:
|
||||
'Selezionare un profilo di interfaccia pre-configurato dalla lista sottostante o scegliere un profilo personalizzato per configurare le impostazioni del tuo hardware',
|
||||
BOARD_PROFILE_TEXT: 'Selezionare un profilo di interfaccia pre-configurato dalla lista sottostante o scegliere un profilo personalizzato per configurare le impostazioni del tuo hardware',
|
||||
BOARD_PROFILE: 'Profilo Scheda',
|
||||
CUSTOM: 'Personalizzazione',
|
||||
GPIO_OF: 'GPIO {0}',
|
||||
@@ -120,8 +118,7 @@ const it: Translation = {
|
||||
ENABLE_ANALOG: 'Abilita Sensori Analogici',
|
||||
CONVERT_FAHRENHEIT: 'Converti valori temperatura in Fahrenheit',
|
||||
BYPASS_TOKEN: 'Ignora autorizzazione del token di accesso sulle chiamate API',
|
||||
READONLY:
|
||||
'Abilita modalità sola-lettura (blocca tutti i comandi di scrittura EMS Tx in uscita)',
|
||||
READONLY: 'Abilita modalità sola-lettura (blocca tutti i comandi di scrittura EMS Tx in uscita)',
|
||||
UNDERCLOCK_CPU: 'Abbassa velocità della CPU',
|
||||
HEATINGOFF: 'Avviamento caldaia con riscaldamento forzato spento',
|
||||
ENABLE_SHOWER_TIMER: 'Abilita timer doccia',
|
||||
@@ -143,17 +140,13 @@ const it: Translation = {
|
||||
MINUTES: 'minuti',
|
||||
HOURS: 'ore',
|
||||
RESTART: 'Riavvia',
|
||||
RESTART_TEXT:
|
||||
'EMS-ESP necessita di essere riavviato per applicare il cambio impostazioni del sistema',
|
||||
RESTART_TEXT: 'EMS-ESP necessita di essere riavviato per applicare il cambio impostazioni del sistema',
|
||||
RESTART_CONFIRM: 'Sei sicuro di voler riavviare EMS-ESP?',
|
||||
COMMAND: 'Comando',
|
||||
CUSTOMIZATIONS_RESTART:
|
||||
'Tutte le personalizzazioni sono state rimosse. Riavvio ...',
|
||||
CUSTOMIZATIONS_FULL:
|
||||
'Le entità selezionate hanno superato il limite. Si prega di salvare in batch',
|
||||
CUSTOMIZATIONS_RESTART: 'Tutte le personalizzazioni sono state rimosse. Riavvio ...',
|
||||
CUSTOMIZATIONS_FULL: 'Le entità selezionate hanno superato il limite. Si prega di salvare in batch',
|
||||
CUSTOMIZATIONS_SAVED: 'Personalizzazioni salvate',
|
||||
CUSTOMIZATIONS_HELP_1:
|
||||
'Seleziona un dispositivo e personalizza le opzioni delle entità o fai clic per rinominarlo',
|
||||
CUSTOMIZATIONS_HELP_1: 'Seleziona un dispositivo e personalizza le opzioni delle entità o fai clic per rinominarlo',
|
||||
CUSTOMIZATIONS_HELP_2: 'seleziona come preferito',
|
||||
CUSTOMIZATIONS_HELP_3: 'disabilita azione scrittura',
|
||||
CUSTOMIZATIONS_HELP_4: 'esculdi da MQTT e API',
|
||||
@@ -163,18 +156,13 @@ const it: Translation = {
|
||||
SET_ALL: 'imposta tutto',
|
||||
OPTIONS: 'Opzioni',
|
||||
NAME: 'Nome',
|
||||
CUSTOMIZATIONS_RESET:
|
||||
'Sei sicuro di voler rimuovere tutte le personalizzazioni incluse le impostazioni personalizzate dei sensori di temperatura e analogici?',
|
||||
CUSTOMIZATIONS_RESET: 'Sei sicuro di voler rimuovere tutte le personalizzazioni incluse le impostazioni personalizzate dei sensori di temperatura e analogici?',
|
||||
SUPPORT_INFORMATION: 'Informazioni di Supporto',
|
||||
HELP_INFORMATION_1:
|
||||
'Visita il wiki online per ottenere istruzioni su come configurare EMS-ESP',
|
||||
HELP_INFORMATION_2:
|
||||
'Per la chat della community dal vivo unisciti al nostro server Discord',
|
||||
HELP_INFORMATION_1: 'Visita il wiki online per ottenere istruzioni su come configurare EMS-ESP',
|
||||
HELP_INFORMATION_2: 'Per la chat della community dal vivo unisciti al nostro server Discord',
|
||||
HELP_INFORMATION_3: 'Per richiedere una funzionalità o segnalare un errore',
|
||||
HELP_INFORMATION_4:
|
||||
'Ricordati di scaricare e allegare le informazioni del tuo sistema per una risposta più rapida quando segnali un problema',
|
||||
HELP_INFORMATION_5:
|
||||
'EMS-ESP è un progetto gratuito e open-source. Supporta il suo sviluppo futuro assegnandogli una stella su Github!',
|
||||
HELP_INFORMATION_4: 'Ricordati di scaricare e allegare le informazioni del tuo sistema per una risposta più rapida quando segnali un problema',
|
||||
HELP_INFORMATION_5: 'EMS-ESP è un progetto gratuito e open-source. Supporta il suo sviluppo futuro assegnandogli una stella su Github!',
|
||||
UPLOAD: 'Carica',
|
||||
DOWNLOAD: 'Scarica',
|
||||
ABORTED: 'Annullato',
|
||||
@@ -188,10 +176,8 @@ const it: Translation = {
|
||||
CLOSE: 'Chiudere',
|
||||
USE: 'Usa',
|
||||
FACTORY_RESET: 'Impostazioni di fabbrica',
|
||||
SYSTEM_FACTORY_TEXT:
|
||||
'Il dispositivo è stato ripristinato alle impostazioni di fabbrica e ora verrà riavviato',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG:
|
||||
'Sei sicuro di voler ripristinare il dispositivo alle impostazioni di fabbrica??',
|
||||
SYSTEM_FACTORY_TEXT: 'Il dispositivo è stato ripristinato alle impostazioni di fabbrica e ora verrà riavviato',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG: 'Sei sicuro di voler ripristinare il dispositivo alle impostazioni di fabbrica??',
|
||||
THE_LATEST: 'Ultima',
|
||||
OFFICIAL: 'ufficiale',
|
||||
DEVELOPMENT: 'sviluppo',
|
||||
@@ -209,10 +195,8 @@ const it: Translation = {
|
||||
ENABLE_OTA: 'Abilita aggiornamenti OTA',
|
||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Scarica personalizzazioni entità',
|
||||
DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events',
|
||||
DOWNLOAD_SETTINGS_TEXT:
|
||||
'Scarica le impostazioni dell applicazione. Fai attenzione quando condividi le tue impostazioni poiché questo file contiene password e altre informazioni di sistema riservate',
|
||||
UPLOAD_TEXT:
|
||||
'Carica un nuovo file firmware (.bin) , file delle impostazioni o delle personalizzazioni (.json) di seguito, per un opzione di convalida scaricare dapprima un file "*.MD5" ',
|
||||
DOWNLOAD_SETTINGS_TEXT: 'Scarica le impostazioni dell applicazione. Fai attenzione quando condividi le tue impostazioni poiché questo file contiene password e altre informazioni di sistema riservate',
|
||||
UPLOAD_TEXT: 'Carica un nuovo file firmware (.bin) , file delle impostazioni o delle personalizzazioni (.json) di seguito, per un opzione di convalida scaricare dapprima un file "*.MD5" ',
|
||||
UPLOADING: 'Caricamento',
|
||||
UPLOAD_DROP_TEXT: 'Trascina il file o clicca qui',
|
||||
ERROR: 'Errore Inaspettato, prego tenta ancora',
|
||||
@@ -222,13 +206,11 @@ const it: Translation = {
|
||||
USER_WARNING: 'Devi avere configurato almeno un utente amministratore',
|
||||
ADD: 'Aggiungi',
|
||||
ACCESS_TOKEN_FOR: 'Token di accesso per',
|
||||
ACCESS_TOKEN_TEXT:
|
||||
'Il token seguente viene utilizzato con le chiamate API REST che richiedono l autorizzazione. Può essere passato come token Bearer nell intestazione di autorizzazione o nel parametro di query URL access_token.',
|
||||
ACCESS_TOKEN_TEXT: 'Il token seguente viene utilizzato con le chiamate API REST che richiedono l autorizzazione. Può essere passato come token Bearer nell intestazione di autorizzazione o nel parametro di query URL access_token.',
|
||||
GENERATING_TOKEN: 'Generazione token',
|
||||
USER: 'Utente',
|
||||
MODIFY: 'Modifica',
|
||||
SU_TEXT:
|
||||
'La password su (super utente) viene utilizzata per firmare i token di autenticazione e abilitare anche i privilegi di amministratore all interno della console.',
|
||||
SU_TEXT: 'La password su (super utente) viene utilizzata per firmare i token di autenticazione e abilitare anche i privilegi di amministratore all interno della console.',
|
||||
NOT_ENABLED: 'Non abilitato',
|
||||
ERRORS_OF: 'Errori {0}',
|
||||
DISCONNECT_REASON: 'Motivo disconnessione',
|
||||
@@ -303,7 +285,7 @@ const it: Translation = {
|
||||
NETWORK_SUBNET: 'Maschera Sottorete',
|
||||
NETWORK_DNS: 'Server DNS',
|
||||
ADDRESS_OF: 'Indirizzo {0}',
|
||||
ADMIN: 'Amministratore',
|
||||
ADMINISTRATOR: 'Amministratore',
|
||||
GUEST: 'Ospite',
|
||||
NEW: 'Nuovo',
|
||||
NEW_NAME_OF: 'Nuovo nome {0}',
|
||||
@@ -311,13 +293,11 @@ const it: Translation = {
|
||||
MIN: 'min',
|
||||
MAX: 'max',
|
||||
BLOCK_NAVIGATE_1: 'Hai modifiche non salvate',
|
||||
BLOCK_NAVIGATE_2:
|
||||
'Se passi a una pagina diversa, le modifiche non salvate andranno perse. Sei sicuro di voler lasciare questa pagina?',
|
||||
BLOCK_NAVIGATE_2: 'Se passi a una pagina diversa, le modifiche non salvate andranno perse. Sei sicuro di voler lasciare questa pagina?',
|
||||
STAY: 'Stai',
|
||||
LEAVE: 'Esci',
|
||||
SCHEDULER: 'Programma eventi',
|
||||
SCHEDULER_HELP_1:
|
||||
"Automatizza i comandi aggiungendo gli eventi programmati di seguito. Imposta un nome univoco per abilitare/disabilitare l'attivazione tramite API/MQTT.",
|
||||
SCHEDULER_HELP_1: "Automatizza i comandi aggiungendo gli eventi programmati di seguito. Imposta un nome univoco per abilitare/disabilitare l'attivazione tramite API/MQTT.",
|
||||
SCHEDULER_HELP_2: "per attivare una volta all'avvio",
|
||||
SCHEDULE: 'Programma',
|
||||
TIME: 'Ora',
|
||||
@@ -347,7 +327,7 @@ const it: Translation = {
|
||||
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
|
||||
SECURITY_1: 'Add or remove users', // TODO translate
|
||||
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
|
||||
MODULE: 'Module' // TODO translate
|
||||
MODULES: 'Modules' // TODO translate
|
||||
};
|
||||
|
||||
export default it;
|
||||
|
||||
@@ -65,8 +65,7 @@ const nl: Translation = {
|
||||
TEMP_SENSOR: 'Temperatuur sensor',
|
||||
TEMP_SENSORS: 'Temperatuur Sensoren',
|
||||
WRITE_CMD_SENT: 'Schrijf commando gestuurd',
|
||||
EMS_BUS_WARNING:
|
||||
'EMS bus niet gevonden. Als deze waarschuwing blijft staan na een paar seconden dan loop de instellingen na en in het bijzonder het apparaat type profiel na.',
|
||||
EMS_BUS_WARNING: 'EMS bus niet gevonden. Als deze waarschuwing blijft staan na een paar seconden dan loop de instellingen na en in het bijzonder het apparaat type profiel na.',
|
||||
EMS_BUS_SCANNING: 'Scannen naar EMS apparaten...',
|
||||
CONNECTED: 'Verbonden',
|
||||
TX_ISSUES: 'Tx bus probleem. Probeer een andere Tx verzendmodus',
|
||||
@@ -98,11 +97,10 @@ const nl: Translation = {
|
||||
NUM_HOURS: '{num} {{uur|uren}}',
|
||||
NUM_MINUTES: '{num} {{minuut|minuten}}',
|
||||
APPLICATION_SETTINGS: 'Applicatieinstellingen',
|
||||
CUSTOMIZATIONS: 'User Entities',
|
||||
CUSTOMIZATIONS: 'Aanpassingen van entiteiten',
|
||||
APPLICATION_RESTARTING: 'EMS-ESP herstarten',
|
||||
INTERFACE_BOARD_PROFILE: 'Interface Apparaatprofiel',
|
||||
BOARD_PROFILE_TEXT:
|
||||
'Selecteer een vooraf ingesteld apparaat profiel uit de lijst of kies Eigen om zelf uw hardware te configureren',
|
||||
BOARD_PROFILE_TEXT: 'Selecteer een vooraf ingesteld apparaat profiel uit de lijst of kies Eigen om zelf uw hardware te configureren',
|
||||
BOARD_PROFILE: 'Apparaatprofiel',
|
||||
CUSTOM: 'Custom',
|
||||
GPIO_OF: '{0} GPIO',
|
||||
@@ -120,8 +118,7 @@ const nl: Translation = {
|
||||
ENABLE_ANALOG: 'Activeer analoge sensoren',
|
||||
CONVERT_FAHRENHEIT: 'Converteer temperatuurwaarden naar Fahrenheit',
|
||||
BYPASS_TOKEN: 'API Access Token authenticatie uitschakelen',
|
||||
READONLY:
|
||||
'Activeer read-only modus (blokkeert alle outgaande EMS Tx schrijf commandos)',
|
||||
READONLY: 'Activeer read-only modus (blokkeert alle outgaande EMS Tx schrijf commandos)',
|
||||
UNDERCLOCK_CPU: 'Underclock CPU snelheid',
|
||||
HEATINGOFF: 'Start ketel met geforceerde verwarming uit',
|
||||
ENABLE_SHOWER_TIMER: 'Activeer Douche Timer (tijdmeting)',
|
||||
@@ -143,15 +140,13 @@ const nl: Translation = {
|
||||
MINUTES: 'minuten',
|
||||
HOURS: 'uren',
|
||||
RESTART: 'Herstarten',
|
||||
RESTART_TEXT:
|
||||
'EMS-ESP dient opnieuw gestart te worden om de wijzingen toe te passen',
|
||||
RESTART_TEXT: 'EMS-ESP dient opnieuw gestart te worden om de wijzingen toe te passen',
|
||||
RESTART_CONFIRM: 'Weet je zeker dat je EMS-ESP wilt herstarten?',
|
||||
COMMAND: 'Commando',
|
||||
CUSTOMIZATIONS_RESTART: 'Alle custom profielen worden verwijderd. Herstarten...',
|
||||
CUSTOMIZATIONS_FULL: 'Te veel entiteiten geselecteerd. Sla op in delen aub',
|
||||
CUSTOMIZATIONS_SAVED: 'Custom aanpassingen opgeslagen',
|
||||
CUSTOMIZATIONS_HELP_1:
|
||||
'Selecteer een apparaat en pas de entiteiten aan door middel van de opties',
|
||||
CUSTOMIZATIONS_HELP_1: 'Selecteer een apparaat en pas de entiteiten aan door middel van de opties',
|
||||
CUSTOMIZATIONS_HELP_2: 'Markeer as favoriet',
|
||||
CUSTOMIZATIONS_HELP_3: 'Zet schrijfacties uit',
|
||||
CUSTOMIZATIONS_HELP_4: 'Uitsluiten van MQTT en API',
|
||||
@@ -161,17 +156,13 @@ const nl: Translation = {
|
||||
SET_ALL: 'Alles aanzetten',
|
||||
OPTIONS: 'Opties',
|
||||
NAME: 'Naam',
|
||||
CUSTOMIZATIONS_RESET:
|
||||
'Weet je zeker dat je alle custom aanpassingen wilt verwijderen inclusief de custom instellingen voor analoge temperatuursensoren?',
|
||||
CUSTOMIZATIONS_RESET: 'Weet je zeker dat je alle custom aanpassingen wilt verwijderen inclusief de custom instellingen voor analoge temperatuursensoren?',
|
||||
SUPPORT_INFORMATION: 'Support Informatie',
|
||||
HELP_INFORMATION_1:
|
||||
'Bezoek de online wiki om instructies te vinden om EMS-ESP te configureren',
|
||||
HELP_INFORMATION_1: 'Bezoek de online wiki om instructies te vinden om EMS-ESP te configureren',
|
||||
HELP_INFORMATION_2: 'Voor de live community ga naar de Discord server',
|
||||
HELP_INFORMATION_3: 'Om een nieuwe feature te vragen of een bug te rapporteren',
|
||||
HELP_INFORMATION_4:
|
||||
'Zorg dat je ook je systeem details zijn toevoeged voor een sneller antwoord',
|
||||
HELP_INFORMATION_5:
|
||||
'EMS-ESP is een gratis en open source project. Steun ons met een Star op Github!',
|
||||
HELP_INFORMATION_4: 'Zorg dat je ook je systeem details zijn toevoeged voor een sneller antwoord',
|
||||
HELP_INFORMATION_5: 'EMS-ESP is een gratis en open source project. Steun ons met een Star op Github!',
|
||||
UPLOAD: 'Upload',
|
||||
DOWNLOAD: '{{D|d|d}}ownload',
|
||||
ABORTED: 'afgebroken',
|
||||
@@ -185,10 +176,8 @@ const nl: Translation = {
|
||||
CLOSE: 'Sluiten',
|
||||
USE: 'Gebruik',
|
||||
FACTORY_RESET: 'Fabrieksinstellingen',
|
||||
SYSTEM_FACTORY_TEXT:
|
||||
'Gateway is gereset en start nu weer op met fabrieksinstellingen',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG:
|
||||
'Weet je zeker dat je een reset naar fabrieksinstellingen uit wilt voeren?',
|
||||
SYSTEM_FACTORY_TEXT: 'Gateway is gereset en start nu weer op met fabrieksinstellingen',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG: 'Weet je zeker dat je een reset naar fabrieksinstellingen uit wilt voeren?',
|
||||
THE_LATEST: 'De laatste',
|
||||
OFFICIAL: 'official',
|
||||
DEVELOPMENT: 'development',
|
||||
@@ -206,10 +195,8 @@ const nl: Translation = {
|
||||
ENABLE_OTA: 'Acitveer OTA Updates',
|
||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Download alle custom instellingen',
|
||||
DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events',
|
||||
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',
|
||||
DOWNLOAD_SETTINGS_TEXT: 'Download de applicatie settings. Wees voorzichting met het delen van dit bestand want het bevat o.a. de wachtwoorden in plain text',
|
||||
UPLOAD_TEXT: 'Upload een nieuwe firmware (.bin) file, instellingen of custom instellingen (.json) bestand hieronder',
|
||||
UPLOADING: 'Uploading',
|
||||
UPLOAD_DROP_TEXT: 'Sleep bestand hierheen of klik hier',
|
||||
ERROR: 'Onverwachte fout, probeer opnieuw',
|
||||
@@ -219,13 +206,11 @@ const nl: Translation = {
|
||||
USER_WARNING: 'U dient tenminste 1 admin gebruiker te configureren',
|
||||
ADD: 'Toevoegen',
|
||||
ACCESS_TOKEN_FOR: 'Access Token voor',
|
||||
ACCESS_TOKEN_TEXT:
|
||||
'Het token hieronder wordt gebruikt voor de REST API calls die authorisatie nodig hebben. Het kan zowel als Bearer token in de Authorization header of in acccess_token URL query parameter gebruikt worden',
|
||||
ACCESS_TOKEN_TEXT: 'Het token hieronder wordt gebruikt voor de REST API calls die authorisatie nodig hebben. Het kan zowel als Bearer token in de Authorization header of in acccess_token URL query parameter gebruikt worden',
|
||||
GENERATING_TOKEN: 'Token aan het genereren',
|
||||
USER: 'Gebruiker',
|
||||
MODIFY: 'Aanpassen',
|
||||
SU_TEXT:
|
||||
'Het su (super user) wachtwoord wordt gebruikt om authorisatie tokens te signeren en ook om admin privileges te activeren in de console.',
|
||||
SU_TEXT: 'Het su (super user) wachtwoord wordt gebruikt om authorisatie tokens te signeren en ook om admin privileges te activeren in de console.',
|
||||
NOT_ENABLED: 'Niet geactiveerd',
|
||||
ERRORS_OF: '{0} Foutmeldingen',
|
||||
DISCONNECT_REASON: 'Verbinding verbroken vanwege',
|
||||
@@ -300,7 +285,7 @@ const nl: Translation = {
|
||||
NETWORK_SUBNET: 'Subnetmasker',
|
||||
NETWORK_DNS: 'DNS Servers',
|
||||
ADDRESS_OF: '{0} Address',
|
||||
ADMIN: 'Admin',
|
||||
ADMINISTRATOR: 'Administrator',
|
||||
GUEST: 'Gast',
|
||||
NEW: 'Nieuwe',
|
||||
NEW_NAME_OF: 'Hernoem {0}',
|
||||
@@ -308,13 +293,11 @@ const nl: Translation = {
|
||||
MIN: 'min',
|
||||
MAX: 'max',
|
||||
BLOCK_NAVIGATE_1: 'U hebt niet-opgeslagen wijzigingen',
|
||||
BLOCK_NAVIGATE_2:
|
||||
'Als u naar een andere pagina navigeert, gaan uw niet-opgeslagen wijzigingen verloren. Weet je zeker dat je deze pagina wilt verlaten?',
|
||||
BLOCK_NAVIGATE_2: 'Als u naar een andere pagina navigeert, gaan uw niet-opgeslagen wijzigingen verloren. Weet je zeker dat je deze pagina wilt verlaten?',
|
||||
STAY: 'Blijven',
|
||||
LEAVE: 'Verlaten',
|
||||
SCHEDULER: 'Scheduler',
|
||||
SCHEDULER_HELP_1:
|
||||
'Automate commands by adding scheduled events below. Set a unique Name to enable/disable activation via API/MQTT.',
|
||||
SCHEDULER_HELP_1: 'Automatiseer opdrachten door hieronder geplande gebeurtenissen toe te voegen. Stel een unieke naam in om activering via API/MQTT in/uit te schakelen.',
|
||||
SCHEDULER_HELP_2: 'Gebruik 00:00 om eenmaal te activeren bij het opstarten',
|
||||
SCHEDULE: 'Schedule',
|
||||
TIME: 'Tijd',
|
||||
@@ -323,8 +306,8 @@ const nl: Translation = {
|
||||
SCHEDULE_TIMER_1: 'bij het opstarten',
|
||||
SCHEDULE_TIMER_2: 'elke minuut',
|
||||
SCHEDULE_TIMER_3: 'elke huur',
|
||||
CUSTOM_ENTITIES: 'Aangepaste Entiteiten',
|
||||
ENTITIES_HELP_1: 'Aangepaste entiteiten ophalen uit de EMS-bus',
|
||||
CUSTOM_ENTITIES: 'Eigen entiteiten',
|
||||
ENTITIES_HELP_1: 'Eigen entiteiten ophalen uit de EMS-bus',
|
||||
ENTITIES_UPDATED: 'Entiteiten bijgewerkt',
|
||||
WRITEABLE: 'Beschrijfbare',
|
||||
SHOWING: 'Tonen',
|
||||
@@ -340,11 +323,11 @@ const nl: Translation = {
|
||||
ALWAYS: 'Altijd',
|
||||
ACTIVITY: 'Activiteit',
|
||||
CONFIGURE: '{0} Configureren',
|
||||
SYSTEM_MEMORY: 'System Memory', // TODO translate
|
||||
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
|
||||
SECURITY_1: 'Add or remove users', // TODO translate
|
||||
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
|
||||
MODULE: 'Module' // TODO translate
|
||||
SYSTEM_MEMORY: 'System Geheugen',
|
||||
APPLICATION_SETTINGS_1: 'Applicatie-instellingen wijzigen',
|
||||
SECURITY_1: 'Gebruikers toevoegen of verwijderen',
|
||||
UPLOAD_DOWNLOAD_1: 'Upload-/downloadinstellingen en firmware',
|
||||
MODULES: 'Modules'
|
||||
};
|
||||
|
||||
export default nl;
|
||||
|
||||
@@ -65,8 +65,7 @@ const no: Translation = {
|
||||
TEMP_SENSOR: 'Temperatursensor',
|
||||
TEMP_SENSORS: 'Temperaturesensorer',
|
||||
WRITE_CMD_SENT: 'Skriv kommando sent',
|
||||
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...',
|
||||
CONNECTED: 'Tilkoblet',
|
||||
TX_ISSUES: 'Tx problemer - prøv en annen Tx Modus',
|
||||
@@ -101,8 +100,7 @@ const no: Translation = {
|
||||
CUSTOMIZATIONS: 'Tilpasninger',
|
||||
APPLICATION_RESTARTING: 'EMS-ESP restarter',
|
||||
INTERFACE_BOARD_PROFILE: 'Interface Prosessor Profil',
|
||||
BOARD_PROFILE_TEXT:
|
||||
'Velg en pre-konfigurert prosessor profil fra listen under eller velg Tilpasset for å konfigurere dine egne innstillinger',
|
||||
BOARD_PROFILE_TEXT: 'Velg en pre-konfigurert prosessor profil fra listen under eller velg Tilpasset for å konfigurere dine egne innstillinger',
|
||||
BOARD_PROFILE: 'Prosessor Profil',
|
||||
CUSTOM: 'Custom',
|
||||
GPIO_OF: '{0} GPIO',
|
||||
@@ -146,11 +144,9 @@ const no: Translation = {
|
||||
RESTART_CONFIRM: 'Er du sikker på at du vil omstarte EMS-ESP?',
|
||||
COMMAND: 'Kommando',
|
||||
CUSTOMIZATIONS_RESTART: 'Alle tilpasninger har blitt slettet. Restarter...',
|
||||
CUSTOMIZATIONS_FULL:
|
||||
'Antall valgte objekter for høyt. Largre i mindre antall om gangen',
|
||||
CUSTOMIZATIONS_FULL: 'Antall valgte objekter for høyt. Largre i mindre antall om gangen',
|
||||
CUSTOMIZATIONS_SAVED: 'Tilpasninger lagret',
|
||||
CUSTOMIZATIONS_HELP_1:
|
||||
'Velg en enhet og tilpass underenheter med hjelp av alternativer eller velg å gi nytt navn',
|
||||
CUSTOMIZATIONS_HELP_1: 'Velg en enhet og tilpass underenheter med hjelp av alternativer eller velg å gi nytt navn',
|
||||
CUSTOMIZATIONS_HELP_2: 'merk som favoritt',
|
||||
CUSTOMIZATIONS_HELP_3: 'inaktiviser skriving',
|
||||
CUSTOMIZATIONS_HELP_4: 'ekskludere fra MQTT og API',
|
||||
@@ -160,16 +156,13 @@ const no: Translation = {
|
||||
SET_ALL: 'sett alle',
|
||||
OPTIONS: 'Alternativ',
|
||||
NAME: 'Navn',
|
||||
CUSTOMIZATIONS_RESET:
|
||||
'Er du sikker på att du vil fjerne tilpassninger inkludert innstillinger for Temperatur og Analoge sensorer?',
|
||||
CUSTOMIZATIONS_RESET: 'Er du sikker på att du vil fjerne tilpassninger inkludert innstillinger for Temperatur og Analoge sensorer?',
|
||||
SUPPORT_INFORMATION: 'Supportinformasjon',
|
||||
HELP_INFORMATION_1: 'Besøk wiki for instruksjoner for å konfigurere EMS-ESP',
|
||||
HELP_INFORMATION_2: 'For community-support besøk vår Discord-server',
|
||||
HELP_INFORMATION_3: 'For å be om en ny funksjon eller melde feil',
|
||||
HELP_INFORMATION_4:
|
||||
'Husk å laste ned og legg ved din systeminformasjon for en raskere respons når du rapporterer et problem',
|
||||
HELP_INFORMATION_5:
|
||||
'EMS-ESP er gratis og åpen kildekode. Bidra til utviklingen ved å gi oss en stjerne på GitHub!',
|
||||
HELP_INFORMATION_4: 'Husk å laste ned og legg ved din systeminformasjon for en raskere respons når du rapporterer et problem',
|
||||
HELP_INFORMATION_5: 'EMS-ESP er gratis og åpen kildekode. Bidra til utviklingen ved å gi oss en stjerne på GitHub!',
|
||||
UPLOAD: 'Opplasning',
|
||||
DOWNLOAD: '{{N|n|n}}edlasting',
|
||||
ABORTED: 'avbrutt',
|
||||
@@ -183,10 +176,8 @@ const no: Translation = {
|
||||
CLOSE: 'Steng',
|
||||
USE: 'Bruk',
|
||||
FACTORY_RESET: 'Sett tilbake til fabrikkinstilling',
|
||||
SYSTEM_FACTORY_TEXT:
|
||||
'Enhet har blitt satt tilbake til fabrikkinstilling og vil restarte',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG:
|
||||
'Er du sikker på at du vil resette enheten til fabrikkinstillinger?',
|
||||
SYSTEM_FACTORY_TEXT: 'Enhet har blitt satt tilbake til fabrikkinstilling og vil restarte',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG: 'Er du sikker på at du vil resette enheten til fabrikkinstillinger?',
|
||||
THE_LATEST: 'Den nyeste',
|
||||
OFFICIAL: 'official',
|
||||
DEVELOPMENT: 'development',
|
||||
@@ -204,10 +195,8 @@ const no: Translation = {
|
||||
ENABLE_OTA: 'Aktiviser OTA oppdateringer',
|
||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Last ned objektstilpasninger',
|
||||
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',
|
||||
UPLOAD_TEXT:
|
||||
'Last opp en ny firmware (.bin) fil, innstillinger eller tilpassninger (.json) fil nedenfor',
|
||||
DOWNLOAD_SETTINGS_TEXT: 'Last ned applikasjonskonfigurasjon. Vær varsom med å dele fila da den inneholder passord og annen sensitiv system informasjon',
|
||||
UPLOAD_TEXT: 'Last opp en ny firmware (.bin) fil, innstillinger eller tilpassninger (.json) fil nedenfor',
|
||||
UPLOADING: 'Opplasting',
|
||||
UPLOAD_DROP_TEXT: 'Slipp fil eller klikk her',
|
||||
ERROR: 'Ukjent feil, prøv igjen',
|
||||
@@ -217,13 +206,11 @@ const no: Translation = {
|
||||
USER_WARNING: 'Du må ha minst en admin bruker konfigurert',
|
||||
ADD: 'Legg til',
|
||||
ACCESS_TOKEN_FOR: 'Aksess Token for',
|
||||
ACCESS_TOKEN_TEXT:
|
||||
'Token nedenfor benyttes med REST API-kall som krever autorisering. Den kan sendes med enten som en Bearer token i Authorization-headern eller i access_token URL query-parameter.',
|
||||
ACCESS_TOKEN_TEXT: 'Token nedenfor benyttes med REST API-kall som krever autorisering. Den kan sendes med enten som en Bearer token i Authorization-headern eller i access_token URL query-parameter.',
|
||||
GENERATING_TOKEN: 'Generer token',
|
||||
USER: 'Bruker',
|
||||
MODIFY: 'Endre',
|
||||
SU_TEXT:
|
||||
'su brukeren (super user) passord benyttes for å signere autentiserings token samt å tillate admin privileger i konsoll modus.',
|
||||
SU_TEXT: 'su brukeren (super user) passord benyttes for å signere autentiserings token samt å tillate admin privileger i konsoll modus.',
|
||||
NOT_ENABLED: 'Ikke aktiv',
|
||||
ERRORS_OF: '{0} Feil',
|
||||
DISCONNECT_REASON: 'Årsak til nedkobling',
|
||||
@@ -298,7 +285,7 @@ const no: Translation = {
|
||||
NETWORK_SUBNET: 'Nettverksmaske',
|
||||
NETWORK_DNS: 'DNS Servers',
|
||||
ADDRESS_OF: '{0} Address',
|
||||
ADMIN: 'Admin',
|
||||
ADMINISTRATOR: 'Administrator',
|
||||
GUEST: 'Gjest',
|
||||
NEW: 'Ny',
|
||||
NEW_NAME_OF: 'Bytt navn {0}',
|
||||
@@ -306,13 +293,11 @@ const no: Translation = {
|
||||
MIN: 'min',
|
||||
MAX: 'max',
|
||||
BLOCK_NAVIGATE_1: 'You har ulagrede endringer',
|
||||
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 ?',
|
||||
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 her',
|
||||
LEAVE: 'Forlat',
|
||||
SCHEDULER: 'Planlegger',
|
||||
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_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 å kjøre en gang ved oppstart',
|
||||
SCHEDULE: 'Planlegg',
|
||||
TIME: 'Tid',
|
||||
@@ -342,7 +327,7 @@ const no: Translation = {
|
||||
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
|
||||
SECURITY_1: 'Add or remove users', // TODO translate
|
||||
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
|
||||
MODULE: 'Module' // TODO translate
|
||||
MODULES: 'Modules' // TODO translate
|
||||
};
|
||||
|
||||
export default no;
|
||||
|
||||
@@ -46,8 +46,7 @@ const pl: BaseTranslation = {
|
||||
REMOVE: 'Usuń',
|
||||
PROBLEM_UPDATING: 'Problem z uaktualnieniem!',
|
||||
PROBLEM_LOADING: 'Problem z załadowaniem!',
|
||||
ANALOG_SENSOR:
|
||||
'{{u|u||ustawienia u|ustawień u}}rządzeni{{a podłączonego do EMS-ESP|e||a podłączonego do EMS-ESP|a podłączonego do EMS-ESP}}',
|
||||
ANALOG_SENSOR: '{{u|u||ustawienia u|ustawień u}}rządzeni{{a podłączonego do EMS-ESP|e||a podłączonego do EMS-ESP|a podłączonego do EMS-ESP}}',
|
||||
ANALOG_SENSORS: 'Urządzenia podłączone do EMS-ESP',
|
||||
SETTINGS: '{{U|u|}}stawienia',
|
||||
UPDATED_OF: 'Zaktualizowano {0}.',
|
||||
@@ -66,12 +65,10 @@ const pl: BaseTranslation = {
|
||||
TEMP_SENSOR: 'czujnika temperatury',
|
||||
TEMP_SENSORS: 'Czujniki temperatury 1-Wire®',
|
||||
WRITE_CMD_SENT: 'Komenda zapisu została wysłana.',
|
||||
EMS_BUS_WARNING:
|
||||
'Brak połączenia z magistralą EMS. Jeśli ten błąd występuje dłużej niż kilka sekund, sprawdź ustawienia oraz profil płytki interfejsu.',
|
||||
EMS_BUS_WARNING: 'Brak połączenia z magistralą EMS. Jeśli ten błąd występuje dłużej niż kilka sekund, sprawdź ustawienia oraz profil płytki interfejsu.',
|
||||
EMS_BUS_SCANNING: 'Trwa skanowanie urządzeń na magistrali EMS...',
|
||||
CONNECTED: '{{połączono|połączenie|}}',
|
||||
TX_ISSUES:
|
||||
'problem z zapisem na magistralę EMS, spróbuj wybrać inny "Tryb transmisji (Tx)"',
|
||||
TX_ISSUES: 'problem z zapisem na magistralę EMS, spróbuj wybrać inny "Tryb transmisji (Tx)"',
|
||||
DISCONNECTED: 'brak połączenia',
|
||||
EMS_SCAN: 'Czy na pewno wykonać pełne skanowanie magistrali EMS?',
|
||||
EMS_BUS_STATUS: 'Status magistrali EMS',
|
||||
@@ -94,8 +91,7 @@ const pl: BaseTranslation = {
|
||||
],
|
||||
NUM_DEVICES: '{num} urządze{{ń|nie|nia|nia|ń}} EMS',
|
||||
NUM_TEMP_SENSORS: '{num} czujni{{ków|k|ki|ki|ków}} temperatury',
|
||||
NUM_ANALOG_SENSORS:
|
||||
'{num} inn{{ych|e|e|e|ych}} urządze{{ń|nie|nia(two)|nia|ń}} podłączon{{ych|e|e|e|ych}} do EMS-ESP',
|
||||
NUM_ANALOG_SENSORS: '{num} inn{{ych|e|e|e|ych}} urządze{{ń|nie|nia(two)|nia|ń}} podłączon{{ych|e|e|e|ych}} do EMS-ESP',
|
||||
NUM_DAYS: '{num} d{{ni|zień|ni|ni|ni}}',
|
||||
NUM_SECONDS: '{num} sekun{{d|da|dy|dy|d}}',
|
||||
NUM_HOURS: '{num} godzi{{n|na|ny|ny|n}}',
|
||||
@@ -104,8 +100,7 @@ const pl: BaseTranslation = {
|
||||
CUSTOMIZATIONS: 'Personalizacja',
|
||||
APPLICATION_RESTARTING: 'Trwa ponowne uruchamianie',
|
||||
INTERFACE_BOARD_PROFILE: 'Profil płytki interfejsu',
|
||||
BOARD_PROFILE_TEXT:
|
||||
'Wybierz z listy gotowy profil płytki interfejsu lub "własny..." i samodzielnie skonfiguruj posiadany sprzęt.',
|
||||
BOARD_PROFILE_TEXT: 'Wybierz z listy gotowy profil płytki interfejsu lub "własny..." i samodzielnie skonfiguruj posiadany sprzęt.',
|
||||
BOARD_PROFILE: 'Profil płytki',
|
||||
CUSTOM: 'własny',
|
||||
GPIO_OF: 'GPIO {0}',
|
||||
@@ -120,12 +115,10 @@ const pl: BaseTranslation = {
|
||||
LANGUAGE_ENTITIES: 'Język encji',
|
||||
HIDE_LED: 'Wyłącz LED',
|
||||
ENABLE_TELNET: 'Aktywuj dostęp dla konsoli Telnet',
|
||||
ENABLE_ANALOG:
|
||||
'Aktywuj urządzenia GPIO (czujniki analogowe i cyfrowe oraz wyjścia cyfrowe)',
|
||||
ENABLE_ANALOG: 'Aktywuj urządzenia GPIO (czujniki analogowe i cyfrowe oraz wyjścia cyfrowe)',
|
||||
CONVERT_FAHRENHEIT: 'Konwertuj temperatury do skali Fahrenheita',
|
||||
BYPASS_TOKEN: 'Pomiń autoryzację tokenem w wywołaniach API',
|
||||
READONLY:
|
||||
'Tryb pracy "tylko do odczytu" (blokuje wszystkie komendy zapisu na magistralę EMS)',
|
||||
READONLY: 'Tryb pracy "tylko do odczytu" (blokuje wszystkie komendy zapisu na magistralę EMS)',
|
||||
UNDERCLOCK_CPU: 'Obniż taktowanie CPU',
|
||||
HEATINGOFF: 'Uruchom kocioł z wymuszonym wyłączonym grzaniem',
|
||||
ENABLE_SHOWER_TIMER: 'Aktywuj minutnik prysznica',
|
||||
@@ -147,16 +140,13 @@ const pl: BaseTranslation = {
|
||||
MINUTES: 'minut',
|
||||
HOURS: 'godzin',
|
||||
RESTART: 'Restart',
|
||||
RESTART_TEXT:
|
||||
'Aby zastosować wprowadzone zmiany, interfejs EMS-ESP {{musi zostać|zostanie|}} uruchomiony ponowni{{e.|e|}}',
|
||||
RESTART_TEXT: 'Aby zastosować wprowadzone zmiany, interfejs EMS-ESP {{musi zostać|zostanie|}} uruchomiony ponowni{{e.|e|}}',
|
||||
RESTART_CONFIRM: 'Na pewno chcesz zrestartować interfejs EMS-ESP?',
|
||||
COMMAND: '{{Komenda|KOMENDA|}}',
|
||||
CUSTOMIZATIONS_RESTART: 'Wszystkie personalizacje zostały usunięte. Restartuję...',
|
||||
CUSTOMIZATIONS_FULL:
|
||||
'Wybrano za dużo obiektów. Wprowadzaj zmiany w mniejszych partiach.',
|
||||
CUSTOMIZATIONS_FULL: 'Wybrano za dużo obiektów. Wprowadzaj zmiany w mniejszych partiach.',
|
||||
CUSTOMIZATIONS_SAVED: 'Personalizacje zostały zapisane.',
|
||||
CUSTOMIZATIONS_HELP_1:
|
||||
'Wybierz urządzenie EMS, a następnie dostosuj opcje lub kliknij na nazwie encji by tę nazwę zmienić',
|
||||
CUSTOMIZATIONS_HELP_1: 'Wybierz urządzenie EMS, a następnie dostosuj opcje lub kliknij na nazwie encji by tę nazwę zmienić',
|
||||
CUSTOMIZATIONS_HELP_2: 'oznacz jako ulubioną',
|
||||
CUSTOMIZATIONS_HELP_3: 'zablokuj akcje zapisu',
|
||||
CUSTOMIZATIONS_HELP_4: 'wyklucz z MQTT i API',
|
||||
@@ -166,18 +156,13 @@ const pl: BaseTranslation = {
|
||||
SET_ALL: 'Ustaw wszystko jako',
|
||||
OPTIONS: 'Opcje',
|
||||
NAME: '{{Nazwa|nazwa|}}',
|
||||
CUSTOMIZATIONS_RESET:
|
||||
'Na pewno chcesz usunąć wszystkie personalizacje łącznie z ustawieniami dla czujników temperatury 1-Wire® i urządzeń podłączonych do EMS-ESP?',
|
||||
CUSTOMIZATIONS_RESET: 'Na pewno chcesz usunąć wszystkie personalizacje łącznie z ustawieniami dla czujników temperatury 1-Wire® i urządzeń podłączonych do EMS-ESP?',
|
||||
SUPPORT_INFORMATION: '{{I|i|}}nformacj{{e|i|}} o systemie',
|
||||
HELP_INFORMATION_1:
|
||||
'Skorzystaj z wiki w internecie aby uzyskać instrukcje dotyczące konfiguracji EMS-ESP.',
|
||||
HELP_INFORMATION_2:
|
||||
'Dołącz do naszego serwera Discord by komunikować się na żywo ze społecznością.',
|
||||
HELP_INFORMATION_1: 'Skorzystaj z wiki w internecie aby uzyskać instrukcje dotyczące konfiguracji EMS-ESP.',
|
||||
HELP_INFORMATION_2: 'Dołącz do naszego serwera Discord by komunikować się na żywo ze społecznością.',
|
||||
HELP_INFORMATION_3: 'Zaproponuj nową funkcjonalność lub zgłoś problem.',
|
||||
HELP_INFORMATION_4:
|
||||
'Zgłaszając problem, nie zapomnij pobrać i dołączyć informacji o swoim systemie!',
|
||||
HELP_INFORMATION_5:
|
||||
'EMS-ESP jest darmowym projektem typu open-source. Aby go wesprzeć, rozważ przyznanie nam gwiazdki na Github!',
|
||||
HELP_INFORMATION_4: 'Zgłaszając problem, nie zapomnij pobrać i dołączyć informacji o swoim systemie!',
|
||||
HELP_INFORMATION_5: 'EMS-ESP jest darmowym projektem typu open-source. Aby go wesprzeć, rozważ przyznanie nam gwiazdki na Github!',
|
||||
UPLOAD: 'Wysyłanie',
|
||||
DOWNLOAD: '{{P|p||P}}obier{{anie|z||z}}',
|
||||
ABORTED: 'zostało przerwane!',
|
||||
@@ -191,10 +176,8 @@ const pl: BaseTranslation = {
|
||||
CLOSE: 'Zamknij',
|
||||
USE: 'Aby zaktualizować firmware skorzystaj z funkcji',
|
||||
FACTORY_RESET: 'Ustawienia fabryczne',
|
||||
SYSTEM_FACTORY_TEXT:
|
||||
'Interfejs EMS-ESP został przywrócony do ustawień fabrycznych i zostanie teraz ponownie uruchomiony.',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG:
|
||||
'Na pewno chcesz przywrócić ustawienia fabryczne interfejsu EMS-ESP? ',
|
||||
SYSTEM_FACTORY_TEXT: 'Interfejs EMS-ESP został przywrócony do ustawień fabrycznych i zostanie teraz ponownie uruchomiony.',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG: 'Na pewno chcesz przywrócić ustawienia fabryczne interfejsu EMS-ESP? ',
|
||||
THE_LATEST: 'Najnowsze',
|
||||
OFFICIAL: 'oficjalne',
|
||||
DEVELOPMENT: 'testowe',
|
||||
@@ -212,27 +195,22 @@ const pl: BaseTranslation = {
|
||||
ENABLE_OTA: 'Aktywuj aktualizację OTA',
|
||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Pobierz personalizacje.',
|
||||
DOWNLOAD_SCHEDULE_TEXT: 'Pobierz harmonogram zdarzeń.',
|
||||
DOWNLOAD_SETTINGS_TEXT:
|
||||
'Pobierz ustawienia aplikacji. Uwaga! Plik z ustawieniami zawiera hasła oraz inne wrażliwe informacje systemowe! Nie udostepniaj go pochopnie!',
|
||||
UPLOAD_TEXT:
|
||||
'Wyślij firmware (.bin), ustawienia lub personalizacje (.json). Opcjonalnie, wyślij wcześniej plik walidacji z sumą kontrolną (.md5).',
|
||||
DOWNLOAD_SETTINGS_TEXT: 'Pobierz ustawienia aplikacji. Uwaga! Plik z ustawieniami zawiera hasła oraz inne wrażliwe informacje systemowe! Nie udostepniaj go pochopnie!',
|
||||
UPLOAD_TEXT: 'Wyślij firmware (.bin), ustawienia lub personalizacje (.json). Opcjonalnie, wyślij wcześniej plik walidacji z sumą kontrolną (.md5).',
|
||||
UPLOADING: 'Wysłano',
|
||||
UPLOAD_DROP_TEXT: 'Przeciągnij tutaj plik lub kliknij',
|
||||
ERROR: 'Nieoczekiwany błąd, spróbuj ponownie!',
|
||||
TIME_SET: 'Zegar został ustawiony.',
|
||||
MANAGE_USERS: 'Zarządzanie użytkownikami',
|
||||
IS_ADMIN: '{{Administrator|Uprawnienia administratora|}}',
|
||||
USER_WARNING:
|
||||
'Przynajmniej jeden użytkownik musi mieć uprawnienia administratora!',
|
||||
USER_WARNING: 'Przynajmniej jeden użytkownik musi mieć uprawnienia administratora!',
|
||||
ADD: 'Doda{{j|wanie|}}',
|
||||
ACCESS_TOKEN_FOR: 'Token dostępu dla użytkownika',
|
||||
ACCESS_TOKEN_TEXT:
|
||||
'Token jest używany w wywołaniach REST API wymagających autoryzacji. Można go przekazywać bezpośrednio lub przez URL.',
|
||||
ACCESS_TOKEN_TEXT: 'Token jest używany w wywołaniach REST API wymagających autoryzacji. Można go przekazywać bezpośrednio lub przez URL.',
|
||||
GENERATING_TOKEN: 'Generowanie tokenu',
|
||||
USER: '{{Użytkownik|użytkownika|}}',
|
||||
MODIFY: 'Edycja',
|
||||
SU_TEXT:
|
||||
'Hasło "su" (super-użytkownika) służy do podpisywania tokenów autoryzujących oraz włączania uprawnień administratora w konsoli.',
|
||||
SU_TEXT: 'Hasło "su" (super-użytkownika) służy do podpisywania tokenów autoryzujących oraz włączania uprawnień administratora w konsoli.',
|
||||
NOT_ENABLED: 'nie aktywowano',
|
||||
ERRORS_OF: 'Błędy {0}',
|
||||
DISCONNECT_REASON: 'Przyczyna braku połączenia',
|
||||
@@ -272,8 +250,7 @@ const pl: BaseTranslation = {
|
||||
SET_TIME_TEXT: 'Wprowadź aktualną datę i godzinę',
|
||||
LOCAL_TIME: '{{Czas|czasu|}} lokaln{{y|ego|}}',
|
||||
UTC_TIME: 'Czas UTC',
|
||||
ENABLE_NTP:
|
||||
'Aktywuj NTP (data i godzina będą automatycznie synchronizowane z poniższym serwerem czasu)',
|
||||
ENABLE_NTP: 'Aktywuj NTP (data i godzina będą automatycznie synchronizowane z poniższym serwerem czasu)',
|
||||
NTP_SERVER: 'Serwer NTP',
|
||||
TIME_ZONE: 'Strefa czasowa',
|
||||
ACCESS_POINT: '{{Punkt|punktu|}} {{dostępowy|dostępowego|}}',
|
||||
@@ -308,7 +285,7 @@ const pl: BaseTranslation = {
|
||||
NETWORK_SUBNET: 'Maska podsieci',
|
||||
NETWORK_DNS: 'Serwery DNS',
|
||||
ADDRESS_OF: 'Adres {0}',
|
||||
ADMIN: 'administratora',
|
||||
ADMINISTRATOR: 'administratora',
|
||||
GUEST: 'gościa',
|
||||
NEW: 'nowe{{go|j|}}',
|
||||
NEW_NAME_OF: 'Nowa nazwa {0}',
|
||||
@@ -316,13 +293,11 @@ const pl: BaseTranslation = {
|
||||
MIN: 'Min.',
|
||||
MAX: 'Maks.',
|
||||
BLOCK_NAVIGATE_1: 'Niezapisane zmiany!',
|
||||
BLOCK_NAVIGATE_2:
|
||||
'Jeśli przejdziesz do innej strony, wprowadzone zmiany w ustawieniach zostaną utracone. Na pewno chcesz opuścić tę stronę?',
|
||||
BLOCK_NAVIGATE_2: 'Jeśli przejdziesz do innej strony, wprowadzone zmiany w ustawieniach zostaną utracone. Na pewno chcesz opuścić tę stronę?',
|
||||
STAY: 'Pozostań',
|
||||
LEAVE: 'Opuść',
|
||||
SCHEDULER: 'Harmonogram',
|
||||
SCHEDULER_HELP_1:
|
||||
'Zautomatyzuj wykonywanie komend, dodając poniżej harmonogram zdarzeń. Nadaj mu unikalną nazwę, aby móc go aktywować/dezaktywować przez API/MQTT.',
|
||||
SCHEDULER_HELP_1: 'Zautomatyzuj wykonywanie komend, dodając poniżej harmonogram zdarzeń. Nadaj mu unikalną nazwę, aby móc go aktywować/dezaktywować przez API/MQTT.',
|
||||
SCHEDULER_HELP_2: 'Wpisz 00:00 aby wykonywać jednorazowo przy starcie.',
|
||||
SCHEDULE: '{{H|h|}}armonogram{{|u|}}',
|
||||
TIME: '{{Czas|Godzina|}}',
|
||||
@@ -352,7 +327,7 @@ const pl: BaseTranslation = {
|
||||
APPLICATION_SETTINGS_1: 'Modyfikacja ustawień aplikacji EMS-ESP',
|
||||
SECURITY_1: 'Dodawanie i usuwanie użytkowników',
|
||||
UPLOAD_DOWNLOAD_1: 'Wysyłanie/pobieranie ustawień i firmware',
|
||||
MODULE: 'Moduł'
|
||||
MODULES: 'Moduły'
|
||||
};
|
||||
|
||||
export default pl;
|
||||
|
||||
@@ -65,8 +65,7 @@ const sk: Translation = {
|
||||
TEMP_SENSOR: 'Snímač teploty',
|
||||
TEMP_SENSORS: 'Snímače teploty',
|
||||
WRITE_CMD_SENT: 'Príkaz zápisu bol odoslaný',
|
||||
EMS_BUS_WARNING:
|
||||
'Zbernica EMS odpojená. Ak toto upozornenie pretrváva aj po niekoľkých sekundách, skontrolujte nastavenia a profil dosky',
|
||||
EMS_BUS_WARNING: 'Zbernica EMS odpojená. Ak toto upozornenie pretrváva aj po niekoľkých sekundách, skontrolujte nastavenia a profil dosky',
|
||||
EMS_BUS_SCANNING: 'Zisťovanie EMS zariadení...',
|
||||
CONNECTED: 'Pripojené',
|
||||
TX_ISSUES: 'Problémy s Tx – skontrolujte Tx režim',
|
||||
@@ -91,10 +90,8 @@ const sk: Translation = {
|
||||
'Syslog správy'
|
||||
],
|
||||
NUM_DEVICES: '{num} Zariaden{{í|ie|ia|ia|í|í}}',
|
||||
NUM_TEMP_SENSORS:
|
||||
'{num} Teplotn{{ých|ý|é|é|ých|ých}} sníma{{čov|č|če|če|čov|čov}}',
|
||||
NUM_ANALOG_SENSORS:
|
||||
'{num} Analogov{{ých|ý|é|é|ých|ých}} sníma{{čov|č|če|če|čov|čov}}',
|
||||
NUM_TEMP_SENSORS: '{num} Teplotn{{ých|ý|é|é|ých|ých}} sníma{{čov|č|če|če|čov|čov}}',
|
||||
NUM_ANALOG_SENSORS: '{num} Analogov{{ých|ý|é|é|ých|ých}} sníma{{čov|č|če|če|čov|čov}}',
|
||||
NUM_DAYS: '{num} d{{ní|eň|ní|ní|ní|ní}}',
|
||||
NUM_SECONDS: '{num} sek{{únd|unda|undy|undy|únd|únd}}',
|
||||
NUM_HOURS: '{num} hod{{ín|ina|iny|iny|ín|ín}}',
|
||||
@@ -103,8 +100,7 @@ const sk: Translation = {
|
||||
CUSTOMIZATIONS: 'Prispôsobenia',
|
||||
APPLICATION_RESTARTING: 'EMS-ESP sa reštartuje',
|
||||
INTERFACE_BOARD_PROFILE: 'Profil dosky rozhrania',
|
||||
BOARD_PROFILE_TEXT:
|
||||
'Vyberte vopred nakonfigurovaný profil dosky rozhrania zo zoznamu nižšie, alebo vyberte možnosť Vlastné a nakonfigurujte svoje vlastné hardvérové nastavenia',
|
||||
BOARD_PROFILE_TEXT: 'Vyberte vopred nakonfigurovaný profil dosky rozhrania zo zoznamu nižšie, alebo vyberte možnosť Vlastné a nakonfigurujte svoje vlastné hardvérové nastavenia',
|
||||
BOARD_PROFILE: 'Profil dosky',
|
||||
CUSTOM: 'Vlastné',
|
||||
GPIO_OF: '{0} GPIO',
|
||||
@@ -122,11 +118,9 @@ const sk: Translation = {
|
||||
ENABLE_ANALOG: 'Povoliť analógové snímače',
|
||||
CONVERT_FAHRENHEIT: 'Previesť hodnoty teploty na °F',
|
||||
BYPASS_TOKEN: 'Vynechajte autorizáciu prístupového tokenu pri volaniach API',
|
||||
READONLY:
|
||||
'Povoliť režim len na čítanie (blokuje všetky odchádzajúce príkazy EMS Tx Write)',
|
||||
READONLY: 'Povoliť režim len na čítanie (blokuje všetky odchádzajúce príkazy EMS Tx Write)',
|
||||
UNDERCLOCK_CPU: 'Podtaktovanie rýchlosti procesora',
|
||||
HEATINGOFF: 'Spustiť kotol s vynúteným vykurovaním',
|
||||
|
||||
ENABLE_SHOWER_TIMER: 'Povoliť časovač sprchovania',
|
||||
ENABLE_SHOWER_ALERT: 'Povoliť upozornenie na sprchu',
|
||||
TRIGGER_TIME: 'Čas spustenia',
|
||||
@@ -146,16 +140,13 @@ const sk: Translation = {
|
||||
MINUTES: 'minúty',
|
||||
HOURS: 'hodiny',
|
||||
RESTART: 'Reštart',
|
||||
RESTART_TEXT:
|
||||
'EMS-ESP sa musí reštartovať, aby sa použili zmenené systémové nastavenia',
|
||||
RESTART_TEXT: 'EMS-ESP sa musí reštartovať, aby sa použili zmenené systémové nastavenia',
|
||||
RESTART_CONFIRM: 'Ste si istí, že chcete reštartovať EMS-ESP?',
|
||||
COMMAND: 'Príkaz',
|
||||
CUSTOMIZATIONS_RESTART: 'Ste si istí, že chcete reštartovať EMS-ESP?',
|
||||
CUSTOMIZATIONS_FULL:
|
||||
'Vybrané subjekty prekročili limit. Prosím, ukladajte v dávkach',
|
||||
CUSTOMIZATIONS_FULL: 'Vybrané subjekty prekročili limit. Prosím, ukladajte v dávkach',
|
||||
CUSTOMIZATIONS_SAVED: 'Uložené prispôsobenia',
|
||||
CUSTOMIZATIONS_HELP_1:
|
||||
'Vyberte zariadenie a prispôsobte možnosti entít alebo kliknutím premenujte',
|
||||
CUSTOMIZATIONS_HELP_1: 'Vyberte zariadenie a prispôsobte možnosti entít alebo kliknutím premenujte',
|
||||
CUSTOMIZATIONS_HELP_2: 'označiť ako obľúbené',
|
||||
CUSTOMIZATIONS_HELP_3: 'zakázať akciu zápisu',
|
||||
CUSTOMIZATIONS_HELP_4: 'vylúčiť z MQTT a API',
|
||||
@@ -165,17 +156,13 @@ const sk: Translation = {
|
||||
SET_ALL: 'nastaviť všetko',
|
||||
OPTIONS: 'Možnosti',
|
||||
NAME: 'Názov',
|
||||
CUSTOMIZATIONS_RESET:
|
||||
'Naozaj chcete odstrániť všetky prispôsobenia vrátane vlastných nastavení snímačov teploty a analógových snímačov?',
|
||||
CUSTOMIZATIONS_RESET: 'Naozaj chcete odstrániť všetky prispôsobenia vrátane vlastných nastavení snímačov teploty a analógových snímačov?',
|
||||
SUPPORT_INFORMATION: 'Informácie pre podporu',
|
||||
HELP_INFORMATION_1:
|
||||
'Navštívte online wiki, kde nájdete pokyny na konfiguráciu EMS-ESP',
|
||||
HELP_INFORMATION_1: 'Navštívte online wiki, kde nájdete pokyny na konfiguráciu EMS-ESP',
|
||||
HELP_INFORMATION_2: 'Pre živý komunitný chat sa pripojte na náš Discord server',
|
||||
HELP_INFORMATION_3: 'Ak chcete požiadať o funkciu alebo nahlásiť chybu',
|
||||
HELP_INFORMATION_4:
|
||||
'nezabudnite si stiahnuť a pripojiť informácie o vašom systéme, aby ste mohli rýchlejšie reagovať pri nahlasovaní problému',
|
||||
HELP_INFORMATION_5:
|
||||
'EMS-ESP je bezplatný a open source projekt. Podporte jeho budúci vývoj tým, že mu dáte hviezdičku na Github!',
|
||||
HELP_INFORMATION_4: 'nezabudnite si stiahnuť a pripojiť informácie o vašom systéme, aby ste mohli rýchlejšie reagovať pri nahlasovaní problému',
|
||||
HELP_INFORMATION_5: 'EMS-ESP je bezplatný a open source projekt. Podporte jeho budúci vývoj tým, že mu dáte hviezdičku na Github!',
|
||||
UPLOAD: 'Nahrať',
|
||||
DOWNLOAD: '{{S|s|s}}tiahnuť',
|
||||
ABORTED: 'zrušené',
|
||||
@@ -190,8 +177,7 @@ const sk: Translation = {
|
||||
USE: 'Použiť',
|
||||
FACTORY_RESET: 'Továrenské nastavenia',
|
||||
SYSTEM_FACTORY_TEXT: 'Zariadenie bolo obnovené z výroby a teraz sa reštartuje',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG:
|
||||
'Naozaj chcete resetovať EMS-ESP na predvolené výrobné nastavenia?',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG: 'Naozaj chcete resetovať EMS-ESP na predvolené výrobné nastavenia?',
|
||||
THE_LATEST: 'Posledná',
|
||||
OFFICIAL: 'officiálna',
|
||||
DEVELOPMENT: 'vývojárska',
|
||||
@@ -209,27 +195,22 @@ const sk: Translation = {
|
||||
ENABLE_OTA: 'Povoliť OTA aktualizácie',
|
||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Stiahnutie prispôsobení entity',
|
||||
DOWNLOAD_SCHEDULE_TEXT: 'Stiahnutie plánovača udalostí',
|
||||
DOWNLOAD_SETTINGS_TEXT:
|
||||
'Stiahnite si nastavenia aplikácie. Pri zdieľaní nastavení buďte opatrní, pretože tento súbor obsahuje heslá a iné citlivé systémové informácie.',
|
||||
UPLOAD_TEXT:
|
||||
'Najskôr nahrajte nový súbor firmvéru (.bin), nastavenia alebo prispôsobenia (.json), pre voliteľné overenie nahrajte súbor (.md5)',
|
||||
DOWNLOAD_SETTINGS_TEXT: 'Stiahnite si nastavenia aplikácie. Pri zdieľaní nastavení buďte opatrní, pretože tento súbor obsahuje heslá a iné citlivé systémové informácie.',
|
||||
UPLOAD_TEXT: 'Najskôr nahrajte nový súbor firmvéru (.bin), nastavenia alebo prispôsobenia (.json), pre voliteľné overenie nahrajte súbor (.md5)',
|
||||
UPLOADING: 'Nahrávanie',
|
||||
UPLOAD_DROP_TEXT: 'Potiahnúť a pripnúť súbor alebo kliknúť sem',
|
||||
ERROR: 'Neočakávaná chyba, prosím skúste to znova',
|
||||
TIME_SET: 'Nastavený čas',
|
||||
MANAGE_USERS: 'Správa používateľov',
|
||||
IS_ADMIN: 'je Admin',
|
||||
USER_WARNING:
|
||||
'Musíte mať nakonfigurovaného aspoň jedného používateľa administrátora',
|
||||
USER_WARNING: 'Musíte mať nakonfigurovaného aspoň jedného používateľa administrátora',
|
||||
ADD: 'Pridať',
|
||||
ACCESS_TOKEN_FOR: 'Prístupový token pre',
|
||||
ACCESS_TOKEN_TEXT:
|
||||
'Nižšie uvedený token sa používa pri volaniach REST API, ktoré vyžadujú autorizáciu. Môže byť odovzdaný buď ako token Bearer v hlavičke Authorization (Autorizácia), alebo v parametri dotazu URL access_token.',
|
||||
ACCESS_TOKEN_TEXT: 'Nižšie uvedený token sa používa pri volaniach REST API, ktoré vyžadujú autorizáciu. Môže byť odovzdaný buď ako token Bearer v hlavičke Authorization (Autorizácia), alebo v parametri dotazu URL access_token.',
|
||||
GENERATING_TOKEN: 'Generovanie tokenu',
|
||||
USER: 'Užívateľ',
|
||||
MODIFY: 'Upraviť',
|
||||
SU_TEXT:
|
||||
'Heslo su (superužívateľ) sa používa na podpisovanie autentifikačných tokenov a tiež na povolenie oprávnení správcu v rámci konzoly.',
|
||||
SU_TEXT: 'Heslo su (superužívateľ) sa používa na podpisovanie autentifikačných tokenov a tiež na povolenie oprávnení správcu v rámci konzoly.',
|
||||
NOT_ENABLED: 'Nie je povolené',
|
||||
ERRORS_OF: '{0} errory',
|
||||
DISCONNECT_REASON: 'Dôvod odpojenia',
|
||||
@@ -304,7 +285,7 @@ const sk: Translation = {
|
||||
NETWORK_SUBNET: 'Maska podsiete',
|
||||
NETWORK_DNS: 'DNS servery',
|
||||
ADDRESS_OF: '{0} adresa',
|
||||
ADMIN: 'Admin',
|
||||
ADMINISTRATOR: 'Administrator',
|
||||
GUEST: 'Hosť',
|
||||
NEW: 'Nová',
|
||||
NEW_NAME_OF: 'Nový názov {0}',
|
||||
@@ -312,13 +293,11 @@ const sk: Translation = {
|
||||
MIN: 'min',
|
||||
MAX: 'max',
|
||||
BLOCK_NAVIGATE_1: 'Máte neuložené zmeny',
|
||||
BLOCK_NAVIGATE_2:
|
||||
'Ak prejdete na inú stránku, neuložené zmeny sa stratia. Ste si istí, že chcete opustiť túto stránku?',
|
||||
BLOCK_NAVIGATE_2: 'Ak prejdete na inú stránku, neuložené zmeny sa stratia. Ste si istí, že chcete opustiť túto stránku?',
|
||||
STAY: 'Zostať',
|
||||
LEAVE: 'Opustiť',
|
||||
SCHEDULER: 'Plánovač',
|
||||
SCHEDULER_HELP_1:
|
||||
'Automatizujte príkazy pridaním naplánovaných udalostí nižšie. Nastavte jedinečné meno na aktiváciu/deaktiváciu cez API/MQTT.',
|
||||
SCHEDULER_HELP_1: 'Automatizujte príkazy pridaním naplánovaných udalostí nižšie. Nastavte jedinečné meno na aktiváciu/deaktiváciu cez API/MQTT.',
|
||||
SCHEDULER_HELP_2: 'Použite 00:00 na jednorazové spustenie pri štarte',
|
||||
SCHEDULE: 'Plánovač',
|
||||
TIME: 'Čas',
|
||||
@@ -348,7 +327,7 @@ const sk: Translation = {
|
||||
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
|
||||
SECURITY_1: 'Add or remove users', // TODO translate
|
||||
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
|
||||
MODULE: 'Module' // TODO translate
|
||||
MODULES: 'Modules' // TODO translate
|
||||
};
|
||||
|
||||
export default sk;
|
||||
|
||||
@@ -65,8 +65,7 @@ const sv: Translation = {
|
||||
TEMP_SENSOR: 'Temperatursensor',
|
||||
TEMP_SENSORS: 'Temperatursensorer',
|
||||
WRITE_CMD_SENT: 'Skrivkommandon skickade',
|
||||
EMS_BUS_WARNING:
|
||||
'EMS-buss nedkopplad. Om denna varning kvarstår efter några sekunder, kontrollera inställningar och enhets-profil.',
|
||||
EMS_BUS_WARNING: 'EMS-buss nedkopplad. Om denna varning kvarstår efter några sekunder, kontrollera inställningar och enhets-profil.',
|
||||
EMS_BUS_SCANNING: 'Söker efter EMS-enheter...',
|
||||
CONNECTED: 'Ansluten',
|
||||
TX_ISSUES: 'Sändfel - Prova ett annat TX-läge',
|
||||
@@ -101,8 +100,7 @@ const sv: Translation = {
|
||||
CUSTOMIZATIONS: 'Anpassningr',
|
||||
APPLICATION_RESTARTING: 'EMS-ESP startar om',
|
||||
INTERFACE_BOARD_PROFILE: 'Interface Hårdvaruprofil',
|
||||
BOARD_PROFILE_TEXT:
|
||||
'Välj en förkonfigurerad hårdvaruprofil från listan nedan eller välj Anpassad för att konfigurera dina egna hårdvaruinställningar',
|
||||
BOARD_PROFILE_TEXT: 'Välj en förkonfigurerad hårdvaruprofil från listan nedan eller välj Anpassad för att konfigurera dina egna hårdvaruinställningar',
|
||||
BOARD_PROFILE: 'Hårdvarutyp',
|
||||
CUSTOM: 'Anpassa',
|
||||
GPIO_OF: '{0} GPIO',
|
||||
@@ -120,8 +118,7 @@ const sv: Translation = {
|
||||
ENABLE_ANALOG: 'Aktivera Analoga Sensorer',
|
||||
CONVERT_FAHRENHEIT: 'Konvertera temperaturer till Fahrenheit',
|
||||
BYPASS_TOKEN: 'Inaktivera Token-autensiering för API-anrop',
|
||||
READONLY:
|
||||
'Aktivera read-only (blockerar alla utgående skrivkommandon mot EMS-bussen)',
|
||||
READONLY: 'Aktivera read-only (blockerar alla utgående skrivkommandon mot EMS-bussen)',
|
||||
UNDERCLOCK_CPU: 'Nedklocka Processorhastighet',
|
||||
HEATINGOFF: 'Start boiler with forced heating off', // TODO translate
|
||||
ENABLE_SHOWER_TIMER: 'Aktivera Dusch-timer',
|
||||
@@ -143,16 +140,13 @@ const sv: Translation = {
|
||||
MINUTES: 'minuter',
|
||||
HOURS: 'timmar',
|
||||
RESTART: 'Starta om',
|
||||
RESTART_TEXT:
|
||||
'EMS-ESP kräver en omstart för att applicera förändrade systeminställningar',
|
||||
RESTART_TEXT: 'EMS-ESP kräver en omstart för att applicera förändrade systeminställningar',
|
||||
RESTART_CONFIRM: 'Är du säker på att du vill starta om EMS-ESP?',
|
||||
COMMAND: 'Kommando',
|
||||
CUSTOMIZATIONS_RESTART: 'Alla anpassningr har raderats. Startar om...',
|
||||
CUSTOMIZATIONS_FULL:
|
||||
'Antal valda enheter för högt. Vänligen spara i mindre antal åt gången.',
|
||||
CUSTOMIZATIONS_FULL: 'Antal valda enheter för högt. Vänligen spara i mindre antal åt gången.',
|
||||
CUSTOMIZATIONS_SAVED: 'Anpassningar sparade',
|
||||
CUSTOMIZATIONS_HELP_1:
|
||||
'Välj en enhet och anpassa underenheter med hjälp av alternativen',
|
||||
CUSTOMIZATIONS_HELP_1: 'Välj en enhet och anpassa underenheter med hjälp av alternativen',
|
||||
CUSTOMIZATIONS_HELP_2: 'Favorit',
|
||||
CUSTOMIZATIONS_HELP_3: 'Inaktivera skrivningar',
|
||||
CUSTOMIZATIONS_HELP_4: 'Exkludera från MQTT & API',
|
||||
@@ -162,17 +156,13 @@ const sv: Translation = {
|
||||
SET_ALL: 'ställ in alla',
|
||||
OPTIONS: 'Alternativ',
|
||||
NAME: 'Namn',
|
||||
CUSTOMIZATIONS_RESET:
|
||||
'Är du säker på att du vill ta bort alla anpassningar inklusive inställningar för Temperatur och Analoga sensorer?',
|
||||
CUSTOMIZATIONS_RESET: 'Är du säker på att du vill ta bort alla anpassningar inklusive inställningar för Temperatur och Analoga sensorer?',
|
||||
SUPPORT_INFORMATION: 'Supportinformation',
|
||||
HELP_INFORMATION_1:
|
||||
'Besök Wikin för instruktioner för hur du kan konfigurera EMS-ESP',
|
||||
HELP_INFORMATION_1: 'Besök Wikin för instruktioner för hur du kan konfigurera EMS-ESP',
|
||||
HELP_INFORMATION_2: 'För community-support besök vår Discord-server',
|
||||
HELP_INFORMATION_3: 'Önska en ny funktion eller rapportera en bugg',
|
||||
HELP_INFORMATION_4:
|
||||
'Bifoga din systeminformation för snabbare hantering när du rapporterar ett problem',
|
||||
HELP_INFORMATION_5:
|
||||
'EMS-ESP är gratis och är öppen källkod. Bidra till utvecklingen genom att ge oss en stjärna på GitHub!',
|
||||
HELP_INFORMATION_4: 'Bifoga din systeminformation för snabbare hantering när du rapporterar ett problem',
|
||||
HELP_INFORMATION_5: 'EMS-ESP är gratis och är öppen källkod. Bidra till utvecklingen genom att ge oss en stjärna på GitHub!',
|
||||
UPLOAD: 'Uppladdning',
|
||||
DOWNLOAD: '{{N|n|n}}edladdning',
|
||||
ABORTED: 'Avbruten',
|
||||
@@ -205,10 +195,8 @@ const sv: Translation = {
|
||||
ENABLE_OTA: 'Aktivera OTA-uppdateringar',
|
||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Ladda ner entitetsanpassningar',
|
||||
DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events', // TODO translate
|
||||
DOWNLOAD_SETTINGS_TEXT:
|
||||
'Ladda ner applikationsinställningar. Var försiktig om du delar dina iställlningar då de innehåller lösenord och annan känslig systeminformation',
|
||||
UPLOAD_TEXT:
|
||||
'Ladda upp ett nytt firmware (.bin), inställningar eller anpassningar (.json) nedan',
|
||||
DOWNLOAD_SETTINGS_TEXT: 'Ladda ner applikationsinställningar. Var försiktig om du delar dina iställlningar då de innehåller lösenord och annan känslig systeminformation',
|
||||
UPLOAD_TEXT: 'Ladda upp ett nytt firmware (.bin), inställningar eller anpassningar (.json) nedan',
|
||||
UPLOADING: 'Laddar upp',
|
||||
UPLOAD_DROP_TEXT: 'Släpp fil eller klicka här',
|
||||
ERROR: 'Okänt Fel, var god försök igen',
|
||||
@@ -218,13 +206,11 @@ const sv: Translation = {
|
||||
USER_WARNING: 'Du måste ha minst en admin konfigurerad',
|
||||
ADD: 'Lägg till',
|
||||
ACCESS_TOKEN_FOR: 'Access Token för',
|
||||
ACCESS_TOKEN_TEXT:
|
||||
'Nedan Token används med REST API-anrop som kräver auktorisering. Den kan skickas med antingen som en Bearer token i Authorization-headern eller i access_token URL query-parametern.',
|
||||
ACCESS_TOKEN_TEXT: 'Nedan Token används med REST API-anrop som kräver auktorisering. Den kan skickas med antingen som en Bearer token i Authorization-headern eller i access_token URL query-parametern.',
|
||||
GENERATING_TOKEN: 'Genererar token',
|
||||
USER: 'Användare',
|
||||
MODIFY: 'Ändra',
|
||||
SU_TEXT:
|
||||
'SU-användarens (super user) lösenord används för att signera autensierings-tokens samt för att aktivera administratörsprivilegier i Console-läge',
|
||||
SU_TEXT: 'SU-användarens (super user) lösenord används för att signera autensierings-tokens samt för att aktivera administratörsprivilegier i Console-läge',
|
||||
NOT_ENABLED: 'Ej aktiv',
|
||||
ERRORS_OF: '{0} fel',
|
||||
DISCONNECT_REASON: 'Anledning till nedkoppling',
|
||||
@@ -299,7 +285,7 @@ const sv: Translation = {
|
||||
NETWORK_SUBNET: 'Subnätmask',
|
||||
NETWORK_DNS: 'DNS-Server',
|
||||
ADDRESS_OF: '{0} Adress',
|
||||
ADMIN: 'Admin',
|
||||
ADMINISTRATOR: 'Administrator',
|
||||
GUEST: 'Gäst',
|
||||
NEW: 'Ny',
|
||||
NEW_NAME_OF: 'Byt namn {0}',
|
||||
@@ -307,13 +293,11 @@ const sv: Translation = {
|
||||
MIN: 'min',
|
||||
MAX: 'max',
|
||||
BLOCK_NAVIGATE_1: 'You have unsaved changes', // TODO translate
|
||||
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: 'If you navigate to a different page, your unsaved changes will be lost. Are you sure you want to leave this page?', // TODO translate
|
||||
STAY: 'Stay', // TODO translate
|
||||
LEAVE: 'Leave', // TODO translate
|
||||
SCHEDULER: 'Scheduler', // TODO translate
|
||||
SCHEDULER_HELP_1:
|
||||
'Automate commands by adding scheduled events below. Set a unique Name to enable/disable activation via API/MQTT.', // TODO translate
|
||||
SCHEDULER_HELP_1: 'Automate commands by adding scheduled events below. Set a unique Name to enable/disable activation via API/MQTT.', // TODO translate
|
||||
SCHEDULER_HELP_2: 'Use 00:00 to trigger once on start-up', // TODO translate
|
||||
SCHEDULE: 'Schedule', // TODO translate
|
||||
TIME: 'Time', // TODO translate
|
||||
@@ -343,7 +327,7 @@ const sv: Translation = {
|
||||
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
|
||||
SECURITY_1: 'Add or remove users', // TODO translate
|
||||
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
|
||||
MODULE: 'Module' // TODO translate
|
||||
MODULES: 'Modules' // TODO translate
|
||||
};
|
||||
|
||||
export default sv;
|
||||
|
||||
@@ -65,14 +65,12 @@ const tr: Translation = {
|
||||
TEMP_SENSOR: 'Sıcaklık Sensörü',
|
||||
TEMP_SENSORS: 'Sıcaklık Sensörleri',
|
||||
WRITE_CMD_SENT: 'Yazma komutu gönderildi',
|
||||
EMS_BUS_WARNING:
|
||||
'EMS hat bağlantısı kesildi. Eğer bu uyarı birkaç saniye sonra devam ediyorsa lütfen ayarları ve kart tipini kontrol edin',
|
||||
EMS_BUS_WARNING: 'EMS hat bağlantısı kesildi. Eğer bu uyarı birkaç saniye sonra devam ediyorsa lütfen ayarları ve kart tipini kontrol edin',
|
||||
EMS_BUS_SCANNING: 'EMS cihazları aranıyor...',
|
||||
CONNECTED: 'Bağlandı',
|
||||
TX_ISSUES: 'Tx sorunu - başka bir Tx Modu deneyin',
|
||||
DISCONNECTED: 'Bağlantı kesildi',
|
||||
EMS_SCAN:
|
||||
'EMS Hattında tam bir cihaz taraması başlatmak istediğinizden emin misiniz?',
|
||||
EMS_SCAN: 'EMS Hattında tam bir cihaz taraması başlatmak istediğinizden emin misiniz?',
|
||||
EMS_BUS_STATUS: 'EMS Hattı Durumu',
|
||||
ACTIVE_DEVICES: 'Aktif Cihazlar ve Sensörler',
|
||||
EMS_DEVICE: 'EMS Cihazı',
|
||||
@@ -102,8 +100,7 @@ const tr: Translation = {
|
||||
CUSTOMIZATIONS: 'Özelleştirme',
|
||||
APPLICATION_RESTARTING: 'EMS-ESP yeniden başlatılıyor',
|
||||
INTERFACE_BOARD_PROFILE: 'Arabirim Kart Profili',
|
||||
BOARD_PROFILE_TEXT:
|
||||
'Aşağıdan hazır kart profillerinden birini seçin yada kendi donanımınızı ayarlamak için Özeli tercih edin',
|
||||
BOARD_PROFILE_TEXT: 'Aşağıdan hazır kart profillerinden birini seçin yada kendi donanımınızı ayarlamak için Özeli tercih edin',
|
||||
BOARD_PROFILE: 'Kart Profili',
|
||||
CUSTOM: 'Özel',
|
||||
GPIO_OF: '{0} GPIO',
|
||||
@@ -121,8 +118,7 @@ const tr: Translation = {
|
||||
ENABLE_ANALOG: 'Analog Sensörleri Aktif Hale Getir',
|
||||
CONVERT_FAHRENHEIT: 'Sıcaklık değerlerini Fahrenheit a çevir',
|
||||
BYPASS_TOKEN: 'API bağlantılarında Erişim Jeton onaylamasını geç',
|
||||
READONLY:
|
||||
'Salt okunur modu devreye al (bütün giden EMS Tx Yazma komutlarını engeller)',
|
||||
READONLY: 'Salt okunur modu devreye al (bütün giden EMS Tx Yazma komutlarını engeller)',
|
||||
UNDERCLOCK_CPU: 'İşlemci hızını düşür',
|
||||
HEATINGOFF: 'Start boiler with forced heating off', // TODO translate
|
||||
ENABLE_SHOWER_TIMER: 'Duş Sayacını Devreye Al',
|
||||
@@ -144,17 +140,13 @@ const tr: Translation = {
|
||||
MINUTES: 'dakikalar',
|
||||
HOURS: 'saatler',
|
||||
RESTART: 'Yeniden Başlat',
|
||||
RESTART_TEXT:
|
||||
'EMS-ESP Sistem ayarlarının uygulanabilmesi için yeinden başlatılmalı',
|
||||
RESTART_TEXT: 'EMS-ESP Sistem ayarlarının uygulanabilmesi için yeinden başlatılmalı',
|
||||
RESTART_CONFIRM: 'EMS-ESP yeniden başlatmak istediğinize emin misiniz?',
|
||||
COMMAND: 'Komut',
|
||||
CUSTOMIZATIONS_RESTART:
|
||||
'Bütün özelleştirmeler kaldırıldı. Yeniden başlatılıyor...',
|
||||
CUSTOMIZATIONS_FULL:
|
||||
'Seçilen varlıklar sınırı aşmaktadır. Lütfen parçalar halinde kaydedin',
|
||||
CUSTOMIZATIONS_RESTART: 'Bütün özelleştirmeler kaldırıldı. Yeniden başlatılıyor...',
|
||||
CUSTOMIZATIONS_FULL: 'Seçilen varlıklar sınırı aşmaktadır. Lütfen parçalar halinde kaydedin',
|
||||
CUSTOMIZATIONS_SAVED: 'Özelleştirmeler kaydedildi',
|
||||
CUSTOMIZATIONS_HELP_1:
|
||||
'Bir cihaz seçip varlıkların seçeneklerini özelleştirin veya yeniden adlandırmak için tıklayın',
|
||||
CUSTOMIZATIONS_HELP_1: 'Bir cihaz seçip varlıkların seçeneklerini özelleştirin veya yeniden adlandırmak için tıklayın',
|
||||
CUSTOMIZATIONS_HELP_2: 'favori olarak işaretle',
|
||||
CUSTOMIZATIONS_HELP_3: 'yazma işlemini devre dışı bırak',
|
||||
CUSTOMIZATIONS_HELP_4: 'MQTT ve APInin dışında bırak',
|
||||
@@ -164,17 +156,13 @@ const tr: Translation = {
|
||||
SET_ALL: 'hepsini ayarla',
|
||||
OPTIONS: 'Seçenekler',
|
||||
NAME: 'İsim',
|
||||
CUSTOMIZATIONS_RESET:
|
||||
'Sıcaklık ve Analog Sensörlerin özelleştirilmiş seçenekleri dahil bütün özelleştirmeleri kaldırmak istediğinizden emin misiniz?',
|
||||
CUSTOMIZATIONS_RESET: 'Sıcaklık ve Analog Sensörlerin özelleştirilmiş seçenekleri dahil bütün özelleştirmeleri kaldırmak istediğinizden emin misiniz?',
|
||||
SUPPORT_INFORMATION: 'Destek Bilgileri',
|
||||
HELP_INFORMATION_1:
|
||||
'EMS-ESPnin nasıl ayarlanacağı ile ilgili bilgileri edinmek için çevrimiçi WIKI sayfasını ziyaret edin',
|
||||
HELP_INFORMATION_1: 'EMS-ESPnin nasıl ayarlanacağı ile ilgili bilgileri edinmek için çevrimiçi WIKI sayfasını ziyaret edin',
|
||||
HELP_INFORMATION_2: 'Canlı topluluk sohbeti için Discord sunucumuza katılın',
|
||||
HELP_INFORMATION_3: 'Yeni bir özellik talep etmek yada hata bildirmek için',
|
||||
HELP_INFORMATION_4:
|
||||
'Bir sorun bildirirken daha hızlı bir dönüş için sistem bilginizi indirip eklemeyi unutmayın',
|
||||
HELP_INFORMATION_5:
|
||||
'EMS-ESP ücretsiz ve açık kaynaklı bir projedir. Lütfen geliştirmeyi desteklemek için Githubda projeye yıldız verin!',
|
||||
HELP_INFORMATION_4: 'Bir sorun bildirirken daha hızlı bir dönüş için sistem bilginizi indirip eklemeyi unutmayın',
|
||||
HELP_INFORMATION_5: 'EMS-ESP ücretsiz ve açık kaynaklı bir projedir. Lütfen geliştirmeyi desteklemek için Githubda projeye yıldız verin!',
|
||||
UPLOAD: 'Yükleme',
|
||||
DOWNLOAD: '{{İ|i|i}}İndirme',
|
||||
ABORTED: 'iptal edildi',
|
||||
@@ -188,10 +176,8 @@ const tr: Translation = {
|
||||
CLOSE: 'Kapat',
|
||||
USE: 'KUllan',
|
||||
FACTORY_RESET: 'Fabrika ayarına dönme',
|
||||
SYSTEM_FACTORY_TEXT:
|
||||
'Cihaz fabrika ayarlarına döndü ve şimdi yendiden başlatılacak',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG:
|
||||
'Cihazı fabrika ayarlarına döndürmek istediğinize emin misiniz?',
|
||||
SYSTEM_FACTORY_TEXT: 'Cihaz fabrika ayarlarına döndü ve şimdi yendiden başlatılacak',
|
||||
SYSTEM_FACTORY_TEXT_DIALOG: 'Cihazı fabrika ayarlarına döndürmek istediğinize emin misiniz?',
|
||||
THE_LATEST: 'En son',
|
||||
OFFICIAL: 'resmi',
|
||||
DEVELOPMENT: 'geliştirme',
|
||||
@@ -209,10 +195,8 @@ const tr: Translation = {
|
||||
ENABLE_OTA: 'OTA Güncellemelerine izin ver',
|
||||
DOWNLOAD_CUSTOMIZATION_TEXT: 'Varlık özelleştirmelerini indir',
|
||||
DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events', // TODO translate
|
||||
DOWNLOAD_SETTINGS_TEXT:
|
||||
'Uygulama ayarlarını indir. Bu dosya hassas sistem bilgileri ve şifrelerinizi içerdiğinden ayarlarınızı paylaşırken dikkatli olun',
|
||||
UPLOAD_TEXT:
|
||||
'Yeni bir bellenim(.bin) dosyası yükleyin, ayarlar ve özelleştirmeler(.json) dosyası aşağıda, sçenekli denetim yüklemesi(.md5) için önce',
|
||||
DOWNLOAD_SETTINGS_TEXT: 'Uygulama ayarlarını indir. Bu dosya hassas sistem bilgileri ve şifrelerinizi içerdiğinden ayarlarınızı paylaşırken dikkatli olun',
|
||||
UPLOAD_TEXT: 'Yeni bir bellenim(.bin) dosyası yükleyin, ayarlar ve özelleştirmeler(.json) dosyası aşağıda, sçenekli denetim yüklemesi(.md5) için önce',
|
||||
UPLOADING: 'Yüklüyor',
|
||||
UPLOAD_DROP_TEXT: 'Buraya tıklayın yada dosyayı sürükleyip bırakın',
|
||||
ERROR: 'Beklenemedik hata, lütfen tekrar deneyin.',
|
||||
@@ -222,13 +206,11 @@ const tr: Translation = {
|
||||
USER_WARNING: 'En az bir yönetici kullanıcısı ayarlamanız gerekmektedir',
|
||||
ADD: 'Ekle',
|
||||
ACCESS_TOKEN_FOR: 'Erişim Jetonunun sahibi',
|
||||
ACCESS_TOKEN_TEXT:
|
||||
'Aşağıdaki Jeton yetki gerektiren REST API çağrıları ile kullanılmaktadır. Taşıyıcı Jeton olarak yetkilendirme başlığında yada erişim jetonu olarak URL sorgu parametresinde kullanılabilir.',
|
||||
ACCESS_TOKEN_TEXT: 'Aşağıdaki Jeton yetki gerektiren REST API çağrıları ile kullanılmaktadır. Taşıyıcı Jeton olarak yetkilendirme başlığında yada erişim jetonu olarak URL sorgu parametresinde kullanılabilir.',
|
||||
GENERATING_TOKEN: 'Jeton oluşturuluyor',
|
||||
USER: 'Kullanıcı',
|
||||
MODIFY: 'Düzenle',
|
||||
SU_TEXT:
|
||||
'SU(Süper kullanıcı şifresi yetkilendirme jetonlarını imzalamaya ve ayrıca konsolda yönetici ayrıcalıklarını etkinleştirmek için kullanılabilir',
|
||||
SU_TEXT: 'SU(Süper kullanıcı şifresi yetkilendirme jetonlarını imzalamaya ve ayrıca konsolda yönetici ayrıcalıklarını etkinleştirmek için kullanılabilir',
|
||||
NOT_ENABLED: 'Etkinleştirilmedi',
|
||||
ERRORS_OF: '{0} Hata(ları)',
|
||||
DISCONNECT_REASON: 'Bağlantının kopma nedeni',
|
||||
@@ -303,7 +285,7 @@ const tr: Translation = {
|
||||
NETWORK_SUBNET: 'Ağ Alt Maskesi',
|
||||
NETWORK_DNS: 'DNS Sunucuları',
|
||||
ADDRESS_OF: '{0} Adresi',
|
||||
ADMIN: 'Yönetici',
|
||||
ADMINISTRATOR: 'Yönetici',
|
||||
GUEST: 'Misafir',
|
||||
NEW: 'Yeni',
|
||||
NEW_NAME_OF: 'Yeni {0} adı',
|
||||
@@ -311,13 +293,11 @@ const tr: Translation = {
|
||||
MIN: 'min',
|
||||
MAX: 'maks',
|
||||
BLOCK_NAVIGATE_1: 'You have unsaved changes', // TODO translate
|
||||
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: 'If you navigate to a different page, your unsaved changes will be lost. Are you sure you want to leave this page?', // TODO translate
|
||||
STAY: 'Stay', // TODO translate
|
||||
LEAVE: 'Leave', // TODO translate
|
||||
SCHEDULER: 'Scheduler', // TODO translate
|
||||
SCHEDULER_HELP_1:
|
||||
'Automate commands by adding scheduled events below. Set a unique Name to enable/disable activation via API/MQTT.', // TODO translate
|
||||
SCHEDULER_HELP_1: 'Automate commands by adding scheduled events below. Set a unique Name to enable/disable activation via API/MQTT.', // TODO translate
|
||||
SCHEDULER_HELP_2: 'Use 00:00 to trigger once on start-up', // TODO translate
|
||||
SCHEDULE: 'Schedule', // TODO translate
|
||||
TIME: 'Time', // TODO translate
|
||||
@@ -347,7 +327,7 @@ const tr: Translation = {
|
||||
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
|
||||
SECURITY_1: 'Add or remove users', // TODO translate
|
||||
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
|
||||
MODULE: 'Module' // TODO translate
|
||||
MODULES: 'Modules' // TODO translate
|
||||
};
|
||||
|
||||
export default tr;
|
||||
|
||||
@@ -1606,13 +1606,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/react@npm:^18.3.0":
|
||||
version: 18.3.0
|
||||
resolution: "@types/react@npm:18.3.0"
|
||||
"@types/react@npm:^18.3.1":
|
||||
version: 18.3.1
|
||||
resolution: "@types/react@npm:18.3.1"
|
||||
dependencies:
|
||||
"@types/prop-types": "npm:*"
|
||||
csstype: "npm:^3.0.2"
|
||||
checksum: 10/2444294740016d61721df9adeb8635658c660c13b0782df9f067260ac6b0a4b71e68245089814ab53264843eb75f81d90f770253b94a13955cc1ddccf3593301
|
||||
checksum: 10/baa6b8a75c471c89ebf3477b4feab57102ced25f0c1e553dd04ef6a1f0def28d5e0172fa626a631f22e223f840b5aaa2403b2d4bb671c83c5a9d6c7ae39c7a05
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -1789,7 +1789,7 @@ __metadata:
|
||||
"@trivago/prettier-plugin-sort-imports": "npm:^4.3.0"
|
||||
"@types/lodash-es": "npm:^4.17.12"
|
||||
"@types/node": "npm:^20.12.7"
|
||||
"@types/react": "npm:^18.3.0"
|
||||
"@types/react": "npm:^18.3.1"
|
||||
"@types/react-dom": "npm:^18.3.0"
|
||||
"@types/react-router-dom": "npm:^5.3.3"
|
||||
alova: "npm:^2.20.3"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# AsyncTCP
|
||||
|
||||

|
||||
A fork of the [AsyncTCP](https://github.com/me-no-dev/AsyncTCP) library by [@me-no-dev](https://github.com/me-no-dev) for [ESPHome](https://esphome.io).
|
||||
|
||||
@@ -9,4 +10,5 @@ This is a fully asynchronous TCP library, aimed at enabling trouble-free, multi-
|
||||
This library is the base for [ESPAsyncWebServer](https://github.com/me-no-dev/ESPAsyncWebServer)
|
||||
|
||||
## AsyncClient and AsyncServer
|
||||
|
||||
The base classes on which everything else is built. They expose all possible scenarios, but are really raw and require more skills to use.
|
||||
|
||||
@@ -718,7 +718,7 @@ bool AsyncClient::_connect(ip_addr_t addr, uint16_t port) {
|
||||
return false;
|
||||
}
|
||||
|
||||
tcp_pcb * pcb = tcp_new_ip_type(addr.type);
|
||||
tcp_pcb * pcb = tcp_new_ip_type(IPADDR_TYPE_ANY);
|
||||
if (!pcb) {
|
||||
log_e("pcb == NULL");
|
||||
return false;
|
||||
@@ -735,12 +735,19 @@ bool AsyncClient::_connect(ip_addr_t addr, uint16_t port) {
|
||||
|
||||
bool AsyncClient::connect(IPAddress ip, uint16_t port) {
|
||||
ip_addr_t addr;
|
||||
addr.type = IPADDR_TYPE_V4;
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
// ip_addr_set_ip4_u32(&addr, ip);
|
||||
addr.u_addr.ip4.addr = ip;
|
||||
addr.type = IPADDR_TYPE_V4;
|
||||
ip_clear_no4(&addr);
|
||||
#else
|
||||
ip.to_ip_addr_t(&addr);
|
||||
#endif
|
||||
|
||||
return _connect(addr, port);
|
||||
}
|
||||
|
||||
#if LWIP_IPV6 && ESP_IDF_VERSION_MAJOR < 5
|
||||
bool AsyncClient::connect(IPv6Address ip, uint16_t port) {
|
||||
ip_addr_t addr;
|
||||
addr.type = IPADDR_TYPE_V6;
|
||||
@@ -748,6 +755,7 @@ bool AsyncClient::connect(IPv6Address ip, uint16_t port) {
|
||||
|
||||
return _connect(addr, port);
|
||||
}
|
||||
#endif
|
||||
|
||||
bool AsyncClient::connect(const char * host, uint16_t port) {
|
||||
ip_addr_t addr;
|
||||
@@ -759,13 +767,17 @@ bool AsyncClient::connect(const char * host, uint16_t port) {
|
||||
|
||||
err_t err = dns_gethostbyname(host, &addr, (dns_found_callback)&_tcp_dns_found, this);
|
||||
if (err == ERR_OK) {
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
#if LWIP_IPV6
|
||||
if (addr.type == IPADDR_TYPE_V6) {
|
||||
return connect(IPv6Address(addr.u_addr.ip6.addr), port);
|
||||
}
|
||||
#if LWIP_IPV6
|
||||
return connect(IPAddress(addr.u_addr.ip4.addr), port);
|
||||
#else
|
||||
return connect(IPAddress(addr.addr), port);
|
||||
#endif
|
||||
#else
|
||||
return _connect(addr, port);
|
||||
#endif
|
||||
} else if (err == ERR_INPROGRESS) {
|
||||
_connect_port = port;
|
||||
@@ -1031,10 +1043,17 @@ int8_t AsyncClient::_poll(tcp_pcb * pcb) {
|
||||
}
|
||||
|
||||
void AsyncClient::_dns_found(struct ip_addr * ipaddr) {
|
||||
if (ipaddr && ipaddr->u_addr.ip4.addr) {
|
||||
connect(IPAddress(ipaddr->u_addr.ip4.addr), _connect_port);
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
if (ipaddr && IP_IS_V4(ipaddr)) {
|
||||
connect(IPAddress(ip_addr_get_ip4_u32(ipaddr)), _connect_port);
|
||||
#if LWIP_IPV6
|
||||
} else if (ipaddr && ipaddr->u_addr.ip6.addr) {
|
||||
connect(IPv6Address(ipaddr->u_addr.ip6.addr), _connect_port);
|
||||
#endif
|
||||
#else
|
||||
if (ipaddr) {
|
||||
connect(IPAddress(ipaddr), _connect_port);
|
||||
#endif
|
||||
} else {
|
||||
if (_error_cb) {
|
||||
_error_cb(_error_cb_arg, this, -55);
|
||||
@@ -1130,6 +1149,7 @@ uint32_t AsyncClient::getRemoteAddress() {
|
||||
#endif
|
||||
}
|
||||
|
||||
#if LWIP_IPV6
|
||||
ip6_addr_t AsyncClient::getRemoteAddress6() {
|
||||
if (!_pcb) {
|
||||
ip6_addr_t nulladdr;
|
||||
@@ -1139,6 +1159,33 @@ ip6_addr_t AsyncClient::getRemoteAddress6() {
|
||||
return _pcb->remote_ip.u_addr.ip6;
|
||||
}
|
||||
|
||||
ip6_addr_t AsyncClient::getLocalAddress6() {
|
||||
if (!_pcb) {
|
||||
ip6_addr_t nulladdr;
|
||||
ip6_addr_set_zero(&nulladdr);
|
||||
return nulladdr;
|
||||
}
|
||||
return _pcb->local_ip.u_addr.ip6;
|
||||
}
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
IPv6Address AsyncClient::remoteIP6() {
|
||||
return IPv6Address(getRemoteAddress6().addr);
|
||||
}
|
||||
|
||||
IPv6Address AsyncClient::localIP6() {
|
||||
return IPv6Address(getLocalAddress6().addr);
|
||||
}
|
||||
#else
|
||||
IPAddress AsyncClient::remoteIP6() {
|
||||
return _pcb ? IPAddress(dynamic_cast<const ip_addr_t *>(&_pcb->remote_ip)) : IPAddress(IPType::IPv6);
|
||||
}
|
||||
|
||||
IPAddress AsyncClient::localIP6() {
|
||||
return _pcb ? IPAddress(dynamic_cast<const ip_addr_t *>(&_pcb->local_ip)) : IPAddress(IPType::IPv6);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
uint16_t AsyncClient::getRemotePort() {
|
||||
if (!_pcb) {
|
||||
return 0;
|
||||
@@ -1157,15 +1204,6 @@ uint32_t AsyncClient::getLocalAddress() {
|
||||
#endif
|
||||
}
|
||||
|
||||
ip6_addr_t AsyncClient::getLocalAddress6() {
|
||||
if (!_pcb) {
|
||||
ip6_addr_t nulladdr;
|
||||
ip6_addr_set_zero(&nulladdr);
|
||||
return nulladdr;
|
||||
}
|
||||
return _pcb->local_ip.u_addr.ip6;
|
||||
}
|
||||
|
||||
uint16_t AsyncClient::getLocalPort() {
|
||||
if (!_pcb) {
|
||||
return 0;
|
||||
@@ -1174,11 +1212,11 @@ uint16_t AsyncClient::getLocalPort() {
|
||||
}
|
||||
|
||||
IPAddress AsyncClient::remoteIP() {
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
return IPAddress(getRemoteAddress());
|
||||
}
|
||||
|
||||
IPv6Address AsyncClient::remoteIP6() {
|
||||
return IPv6Address(getRemoteAddress6().addr);
|
||||
#else
|
||||
return _pcb ? IPAddress(dynamic_cast<const ip_addr_t *>(&_pcb->remote_ip)) : IPAddress();
|
||||
#endif
|
||||
}
|
||||
|
||||
uint16_t AsyncClient::remotePort() {
|
||||
@@ -1186,12 +1224,13 @@ uint16_t AsyncClient::remotePort() {
|
||||
}
|
||||
|
||||
IPAddress AsyncClient::localIP() {
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
return IPAddress(getLocalAddress());
|
||||
#else
|
||||
return _pcb ? IPAddress(dynamic_cast<const ip_addr_t *>(&_pcb->local_ip)) : IPAddress();
|
||||
#endif
|
||||
}
|
||||
|
||||
IPv6Address AsyncClient::localIP6() {
|
||||
return IPv6Address(getLocalAddress6().addr);
|
||||
}
|
||||
|
||||
uint16_t AsyncClient::localPort() {
|
||||
return getLocalPort();
|
||||
@@ -1355,7 +1394,12 @@ int8_t AsyncClient::_s_connected(void * arg, void * pcb, int8_t err) {
|
||||
|
||||
AsyncServer::AsyncServer(IPAddress addr, uint16_t port)
|
||||
: _port(port)
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
, _bind4(true)
|
||||
#else
|
||||
, _bind4(addr.type() != IPType::IPv6)
|
||||
, _bind6(addr.type() == IPType::IPv6)
|
||||
#endif
|
||||
, _addr(addr)
|
||||
, _noDelay(false)
|
||||
, _pcb(0)
|
||||
@@ -1363,6 +1407,7 @@ AsyncServer::AsyncServer(IPAddress addr, uint16_t port)
|
||||
, _connect_cb_arg(0) {
|
||||
}
|
||||
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
AsyncServer::AsyncServer(IPv6Address addr, uint16_t port)
|
||||
: _port(port)
|
||||
, _bind6(true)
|
||||
@@ -1372,13 +1417,16 @@ AsyncServer::AsyncServer(IPv6Address addr, uint16_t port)
|
||||
, _connect_cb(0)
|
||||
, _connect_cb_arg(0) {
|
||||
}
|
||||
#endif
|
||||
|
||||
AsyncServer::AsyncServer(uint16_t port)
|
||||
: _port(port)
|
||||
, _bind4(true)
|
||||
, _bind6(true)
|
||||
, _addr((uint32_t)IPADDR_ANY)
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
, _addr6()
|
||||
#endif
|
||||
, _noDelay(false)
|
||||
, _pcb(0)
|
||||
, _connect_cb(0)
|
||||
@@ -1420,9 +1468,17 @@ void AsyncServer::begin() {
|
||||
}
|
||||
|
||||
ip_addr_t local_addr;
|
||||
local_addr.type = bind_type;
|
||||
local_addr.u_addr.ip4.addr = (uint32_t)_addr;
|
||||
memcpy(local_addr.u_addr.ip6.addr, static_cast<const uint32_t *>(_addr6), sizeof(uint32_t) * 4);
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
// ip_addr_set_ip4_u32(&local_addr, _addr);
|
||||
local_addr.u_addr.ip4.addr = _addr;
|
||||
local_addr.type = IPADDR_TYPE_V4;
|
||||
ip_clear_no4(&local_addr);
|
||||
/* local_addr.type = bind_type;
|
||||
local_addr.u_addr.ip4.addr = (uint32_t) _addr;
|
||||
memcpy(local_addr.u_addr.ip6.addr, static_cast<const uint32_t*>(_addr6), sizeof(uint32_t) * 4); */
|
||||
#else
|
||||
_addr.to_ip_addr_t(&local_addr);
|
||||
#endif
|
||||
err = _tcp_bind(_pcb, &local_addr, _port);
|
||||
|
||||
if (err != ERR_OK) {
|
||||
@@ -1497,4 +1553,4 @@ int8_t AsyncServer::_s_accept(void * arg, tcp_pcb * pcb, int8_t err) {
|
||||
|
||||
int8_t AsyncServer::_s_accepted(void * arg, AsyncClient * client) {
|
||||
return reinterpret_cast<AsyncServer *>(arg)->_accepted(client);
|
||||
}
|
||||
}
|
||||
@@ -23,16 +23,18 @@
|
||||
#define ASYNCTCP_H_
|
||||
|
||||
#include "IPAddress.h"
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
#include "IPv6Address.h"
|
||||
#endif
|
||||
#include <functional>
|
||||
#include "lwip/ip_addr.h"
|
||||
#include "lwip/ip6_addr.h"
|
||||
|
||||
#ifndef LIBRETINY
|
||||
#include "sdkconfig.h"
|
||||
extern "C" {
|
||||
#include "freertos/semphr.h"
|
||||
#include "lwip/pbuf.h"
|
||||
#include "lwip/ip_addr.h"
|
||||
#include "lwip/ip6_addr.h"
|
||||
}
|
||||
#else
|
||||
extern "C" {
|
||||
@@ -46,20 +48,21 @@ extern "C" {
|
||||
//If core is not defined, then we are running in Arduino or PIO
|
||||
#ifndef CONFIG_ASYNC_TCP_RUNNING_CORE
|
||||
#define CONFIG_ASYNC_TCP_RUNNING_CORE -1 //any available core
|
||||
#define CONFIG_ASYNC_TCP_USE_WDT 0 //if enabled, adds between 33us and 200us per event
|
||||
// Note default was 1 and previously set to 0 for EMS-ESP32
|
||||
#define CONFIG_ASYNC_TCP_USE_WDT 1 //if enabled, adds between 33us and 200us per event
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_ASYNC_TCP_TASK_PRIORITY
|
||||
#define CONFIG_ASYNC_TCP_TASK_PRIORITY 5
|
||||
#endif
|
||||
|
||||
// stack usage measured: ESP32: ~2.3K, ESP32S3: ~3.5k
|
||||
// EMS-ESP32: stack usage measured: ESP32: ~2.3K, ESP32S3: ~3.5k
|
||||
#ifndef CONFIG_ASYNC_TCP_STACK_SIZE
|
||||
#define CONFIG_ASYNC_TCP_STACK_SIZE 5120
|
||||
#endif
|
||||
|
||||
|
||||
// maybe enlarge queue to 64 or 128 see https://github.com/emsesp/EMS-ESP32/issues/177
|
||||
// EMS-ESP32: maybe enlarge queue to 64 or 128 see https://github.com/emsesp/EMS-ESP32/issues/177
|
||||
#ifndef CONFIG_ASYNC_TCP_QUEUE
|
||||
#define CONFIG_ASYNC_TCP_QUEUE 32
|
||||
#endif
|
||||
@@ -93,8 +96,10 @@ class AsyncClient {
|
||||
bool operator!=(const AsyncClient & other) {
|
||||
return !(*this == other);
|
||||
}
|
||||
bool connect(IPAddress ip, uint16_t port);
|
||||
bool connect(IPv6Address ip, uint16_t port);
|
||||
bool connect(IPAddress ip, uint16_t port);
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
bool connect(IPv6Address ip, uint16_t port);
|
||||
#endif
|
||||
bool connect(const char * host, uint16_t port);
|
||||
void close(bool now = false);
|
||||
void stop();
|
||||
@@ -128,20 +133,27 @@ class AsyncClient {
|
||||
void setNoDelay(bool nodelay);
|
||||
bool getNoDelay();
|
||||
|
||||
uint32_t getRemoteAddress();
|
||||
uint32_t getRemoteAddress();
|
||||
uint16_t getRemotePort();
|
||||
uint32_t getLocalAddress();
|
||||
uint16_t getLocalPort();
|
||||
#if LWIP_IPV6
|
||||
ip6_addr_t getRemoteAddress6();
|
||||
uint16_t getRemotePort();
|
||||
uint32_t getLocalAddress();
|
||||
ip6_addr_t getLocalAddress6();
|
||||
uint16_t getLocalPort();
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
IPv6Address remoteIP6();
|
||||
IPv6Address localIP6();
|
||||
#else
|
||||
IPAddress remoteIP6();
|
||||
IPAddress localIP6();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//compatibility
|
||||
IPAddress remoteIP();
|
||||
IPv6Address remoteIP6();
|
||||
uint16_t remotePort();
|
||||
IPAddress localIP();
|
||||
IPv6Address localIP6();
|
||||
uint16_t localPort();
|
||||
IPAddress remoteIP();
|
||||
uint16_t remotePort();
|
||||
IPAddress localIP();
|
||||
uint16_t localPort();
|
||||
|
||||
void onConnect(AcConnectHandler cb, void * arg = 0); //on successful connect
|
||||
void onDisconnect(AcConnectHandler cb, void * arg = 0); //disconnected
|
||||
@@ -227,7 +239,9 @@ class AsyncClient {
|
||||
class AsyncServer {
|
||||
public:
|
||||
AsyncServer(IPAddress addr, uint16_t port);
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
AsyncServer(IPv6Address addr, uint16_t port);
|
||||
#endif
|
||||
AsyncServer(uint16_t port);
|
||||
~AsyncServer();
|
||||
void onClient(AcConnectHandler cb, void * arg);
|
||||
@@ -242,11 +256,13 @@ class AsyncServer {
|
||||
static int8_t _s_accepted(void * arg, AsyncClient * client);
|
||||
|
||||
protected:
|
||||
uint16_t _port;
|
||||
bool _bind4 = false;
|
||||
bool _bind6 = false;
|
||||
IPAddress _addr;
|
||||
IPv6Address _addr6;
|
||||
uint16_t _port;
|
||||
bool _bind4 = false;
|
||||
bool _bind6 = false;
|
||||
IPAddress _addr;
|
||||
#if ESP_IDF_VERSION_MAJOR < 5
|
||||
IPv6Address _addr6;
|
||||
#endif
|
||||
bool _noDelay;
|
||||
tcp_pcb * _pcb;
|
||||
AcConnectHandler _connect_cb;
|
||||
@@ -257,4 +273,4 @@ class AsyncServer {
|
||||
};
|
||||
|
||||
|
||||
#endif /* ASYNCTCP_H_ */
|
||||
#endif /* ASYNCTCP_H_ */
|
||||
@@ -66,6 +66,8 @@ extra_scripts =
|
||||
pre:scripts/build_interface.py
|
||||
scripts/rename_fw.py
|
||||
|
||||
|
||||
|
||||
[env]
|
||||
monitor_speed = 115200
|
||||
monitor_filters = direct, esp32_exception_decoder
|
||||
@@ -187,6 +189,27 @@ build_flags =
|
||||
${espressi32_base.build_flags}
|
||||
'-DEMSESP_DEFAULT_BOARD_PROFILE="S32S3"'
|
||||
|
||||
# for testing against the latest Arduino core v3 with IDF 5.1
|
||||
[env:espressi32_v3]
|
||||
platform = espressif32
|
||||
platform_packages=
|
||||
platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.0-rc1
|
||||
platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/esp32-arduino-libs.git#idf-release/v5.1
|
||||
framework = arduino
|
||||
board = esp32dev
|
||||
board_build.filesystem = littlefs
|
||||
build_flags =
|
||||
${factory_settings.build_flags}
|
||||
${common.my_build_flags}
|
||||
-D ONEWIRE_CRC16=0
|
||||
-D NO_GLOBAL_ARDUINOOTA
|
||||
-D ARDUINOJSON_ENABLE_STD_STRING=1
|
||||
-D ARDUINOJSON_USE_DOUBLE=0
|
||||
-D ARDUINOTRACE_ENABLE=0
|
||||
-D CONFIG_ETH_ENABLED
|
||||
-D CONFIG_UART_ISR_IN_IRAM
|
||||
-D CONFIG_ASYNC_TCP_STACK_SIZE=5120
|
||||
|
||||
; to build and run: pio run -e standalone -t exec
|
||||
[env:standalone]
|
||||
platform = native
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
{157, DeviceType::THERMOSTAT, "RC200/CW100", DeviceFlags::EMS_DEVICE_FLAG_RC100}, // 0x18
|
||||
{158, DeviceType::THERMOSTAT, "RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410", DeviceFlags::EMS_DEVICE_FLAG_RC300}, // 0x10
|
||||
{165, DeviceType::THERMOSTAT, "RC100/Moduline 1000/1010", DeviceFlags::EMS_DEVICE_FLAG_RC100}, // 0x18, 0x38
|
||||
{172, DeviceType::THERMOSTAT, "Rego 2000/3000", DeviceFlags::EMS_DEVICE_FLAG_RC300}, // 0x10
|
||||
{172, DeviceType::THERMOSTAT, "Rego 2000/3000", DeviceFlags::EMS_DEVICE_FLAG_R3000}, // 0x10
|
||||
{215, DeviceType::THERMOSTAT, "Comfort RF", DeviceFlags::EMS_DEVICE_FLAG_CRF | DeviceFlags::EMS_DEVICE_FLAG_NO_WRITE}, // 0x18
|
||||
{216, DeviceType::THERMOSTAT, "CRF200S", DeviceFlags::EMS_DEVICE_FLAG_CRF | DeviceFlags::EMS_DEVICE_FLAG_NO_WRITE}, // 0x18
|
||||
{246, DeviceType::THERMOSTAT, "Comfort+2RF", DeviceFlags::EMS_DEVICE_FLAG_CRF | DeviceFlags::EMS_DEVICE_FLAG_NO_WRITE}, // 0x18
|
||||
|
||||
@@ -512,7 +512,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
||||
DeviceValueType::UINT24,
|
||||
FL_(auxElecHeatNrgConsHeating),
|
||||
DeviceValueUOM::KWH);
|
||||
register_device_value(DeviceValueTAG::TAG_DHW1, &auxElecHeatNrgConsWW_, DeviceValueType::UINT24, FL_(auxElecHeatNrgConsWW), DeviceValueUOM::KWH);
|
||||
register_device_value(DeviceValueTAG::TAG_DHW1, &auxElecHeatNrgConsWw_, DeviceValueType::UINT24, FL_(auxElecHeatNrgConsWw), DeviceValueUOM::KWH);
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &auxElecHeatNrgConsPool_, DeviceValueType::UINT24, FL_(auxElecHeatNrgConsPool), DeviceValueUOM::KWH);
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgSuppTotal_, DeviceValueType::UINT24, FL_(nrgSuppTotal), DeviceValueUOM::KWH);
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgSuppHeating_, DeviceValueType::UINT24, FL_(nrgSuppHeating), DeviceValueUOM::KWH);
|
||||
@@ -1562,7 +1562,7 @@ void Boiler::process_UBAInformation(std::shared_ptr<const Telegram> telegram) {
|
||||
|
||||
has_update(telegram, auxElecHeatNrgConsTotal_, 40);
|
||||
has_update(telegram, auxElecHeatNrgConsHeating_, 48);
|
||||
has_update(telegram, auxElecHeatNrgConsWW_, 44);
|
||||
has_update(telegram, auxElecHeatNrgConsWw_, 44);
|
||||
has_update(telegram, auxElecHeatNrgConsPool_, 52);
|
||||
|
||||
has_update(telegram, nrgConsCompTotal_, 56);
|
||||
|
||||
@@ -187,7 +187,7 @@ class Boiler : public EMSdevice {
|
||||
uint32_t nrgSuppPool_; // Energy supplied pool
|
||||
uint32_t auxElecHeatNrgConsTotal_; // Auxiliary electrical heater energy consumption total
|
||||
uint32_t auxElecHeatNrgConsHeating_; // Auxiliary electrical heater energy consumption heating
|
||||
uint32_t auxElecHeatNrgConsWW_; // Auxiliary electrical heater energy consumption DHW
|
||||
uint32_t auxElecHeatNrgConsWw_; // Auxiliary electrical heater energy consumption DHW
|
||||
uint32_t auxElecHeatNrgConsPool_; // Auxiliary electrical heater energy consumption Pool
|
||||
char maintenanceMessage_[4];
|
||||
char maintenanceDate_[12];
|
||||
|
||||
@@ -141,8 +141,8 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i
|
||||
register_telegram_type(monitor_typeids[i], "CRFMonitor", false, MAKE_PF_CB(process_CRFMonitor));
|
||||
}
|
||||
|
||||
// RC300/RC100
|
||||
} else if ((model == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
// RC300/RC100 variants
|
||||
} else if (isRC300() || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
monitor_typeids = {0x02A5, 0x02A6, 0x02A7, 0x02A8, 0x02A9, 0x02AA, 0x02AB, 0x02AC};
|
||||
set_typeids = {0x02B9, 0x02BA, 0x02BB, 0x02BC, 0x02BD, 0x02BE, 0x02BF, 0x02C0};
|
||||
set2_typeids = {0x02CC, 0x02CE, 0x02D0, 0x02D2}; // max. 4 heating circuits supported ny RC310
|
||||
@@ -493,7 +493,8 @@ uint8_t Thermostat::HeatingCircuit::get_mode() const {
|
||||
} else if (mode == 2) {
|
||||
return HeatingCircuit::Mode::AUTO;
|
||||
}
|
||||
} else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
} else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_R3000) || (model == EMSdevice::EMS_DEVICE_FLAG_BC400)
|
||||
|| (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
if (mode == 0) {
|
||||
return HeatingCircuit::Mode::MANUAL;
|
||||
} else if (mode == 1) {
|
||||
@@ -545,7 +546,7 @@ uint8_t Thermostat::HeatingCircuit::get_mode_type() const {
|
||||
} else if (modetype == 1) {
|
||||
return HeatingCircuit::Mode::ON;
|
||||
}
|
||||
} else if ((model == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model == EMSdevice::EMS_DEVICE_FLAG_RC300)) {
|
||||
} else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_R3000) || (model == EMSdevice::EMS_DEVICE_FLAG_BC400)) {
|
||||
if (modetype == 0) {
|
||||
return HeatingCircuit::Mode::ECO;
|
||||
} else if (modetype == 1) {
|
||||
@@ -1220,16 +1221,23 @@ void Thermostat::process_RC300WWmode(std::shared_ptr<const Telegram> telegram) {
|
||||
telegram->read_value(wwmode, 2);
|
||||
const uint8_t modes1[] = {0, 2, 3, 0, 4, 1};
|
||||
has_update(dhw->wwMode_, wwmode < sizeof(modes1) ? modes1[wwmode] : EMS_VALUE_UINT8_NOTSET);
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_R3000) {
|
||||
// https://github.com/emsesp/EMS-ESP32/pull/1722#discussion_r1582823521
|
||||
const uint8_t modes[] = {1, 2, 5}; // normal, comfort, eco+
|
||||
uint8_t wwmode = dhw->wwMode_ < sizeof(modes) ? modes[dhw->wwMode_] : EMS_VALUE_UINT8_NOTSET;
|
||||
telegram->read_value(wwmode, 2);
|
||||
const uint8_t modes1[] = {0, 0, 1, 0, 0, 2}; // 0=normal (1), 1=comfort(2), 2=eco+(5)
|
||||
has_update(dhw->wwMode_, wwmode < sizeof(modes1) ? modes1[wwmode] : EMS_VALUE_UINT8_NOTSET);
|
||||
} else {
|
||||
has_update(telegram, dhw->wwMode_, 2); // 0=off, 1=low, 2=high, 3=auto, 4=own prog
|
||||
}
|
||||
has_update(telegram, dhw->wwCircMode_, 3); // 0=off, 1=on, 2=auto, 4=own?
|
||||
has_update(telegram, dhw->wwChargeDuration_, 10); // value in steps of 15 min
|
||||
has_update(telegram, dhw->wwCharge_, 11); // bool 0xFF on
|
||||
has_update(telegram, dhw->wwDisinfecting_, 5); // 0-off, 0xFF on
|
||||
has_update(telegram, dhw->wwCharge_, 11); // 0=off, 0xFF=on
|
||||
has_update(telegram, dhw->wwDisinfecting_, 5); // 0=off, 0xFF=on
|
||||
has_update(telegram, dhw->wwDisinfectHour_, 6); // value in steps of 15 min
|
||||
has_update(telegram, dhw->wwDisinfectDay_, 7); // 0-6 Day of week, 7 every day
|
||||
has_update(telegram, dhw->wwDailyHeating_, 8); // 0-off, 0xFF on
|
||||
has_update(telegram, dhw->wwDailyHeating_, 8); // 0=off, 0xFF=on
|
||||
has_update(telegram, dhw->wwDailyHeatTime_, 9); // value in steps of 15 min
|
||||
}
|
||||
|
||||
@@ -1771,7 +1779,7 @@ bool Thermostat::set_minexttemp(const char * value, const int8_t id) {
|
||||
|
||||
if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC20_N) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC25)) {
|
||||
write_command(0xAD, 14, mt, 0xAD);
|
||||
} else if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
} else if (isRC300() || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
write_command(0x240, 10, mt, 0x240);
|
||||
} else {
|
||||
write_command(EMS_TYPE_IBASettings, 5, mt, EMS_TYPE_IBASettings);
|
||||
@@ -1812,7 +1820,7 @@ bool Thermostat::set_calinttemp(const char * value, const int8_t id) {
|
||||
write_command(EMS_TYPE_RC30Settings, 1, t, EMS_TYPE_RC30Settings);
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100H) {
|
||||
write_command(0x273, 0, t, 0x273);
|
||||
} else if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC100 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) {
|
||||
} else if (isRC300() || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||
write_command(0x240, 7, t, 0x240);
|
||||
} else {
|
||||
write_command(EMS_TYPE_IBASettings, 2, t, EMS_TYPE_IBASettings);
|
||||
@@ -1866,7 +1874,7 @@ bool Thermostat::set_remotetemp(const char * value, const int8_t id) {
|
||||
Roomctrl::set_remotetemp(Roomctrl::FB10, hc->hc(), hc->remotetemp); // FB10
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC35 || model() == EMSdevice::EMS_DEVICE_FLAG_RC30_N) {
|
||||
Roomctrl::set_remotetemp(Roomctrl::RC20, hc->hc(), hc->remotetemp); // RC20
|
||||
} else if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) {
|
||||
} else if (isRC300()) {
|
||||
if (hc->control == 1 || hc->control == 0) {
|
||||
Roomctrl::set_remotetemp(Roomctrl::RC200, hc->hc(), hc->remotetemp); // RC200
|
||||
} else if (hc->control == 3) { // RC100H(3)
|
||||
@@ -1900,7 +1908,7 @@ bool Thermostat::set_remotehum(const char * value, const int8_t id) {
|
||||
hc->remotehum = h;
|
||||
}
|
||||
|
||||
if (hc->control == 3 && (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300)) {
|
||||
if (hc->control == 3 && isRC300()) {
|
||||
Roomctrl::set_remotehum(Roomctrl::RC100H, hc->hc(), hc->remotehum); // RC100H
|
||||
return true;
|
||||
}
|
||||
@@ -1914,7 +1922,7 @@ bool Thermostat::set_building(const char * value, const int8_t id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
if (isRC300() || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
write_command(0x240, 9, bd + 1, 0x240);
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) {
|
||||
write_command(EMS_TYPE_RC30Settings, 4, bd, EMS_TYPE_RC30Settings);
|
||||
@@ -1944,7 +1952,7 @@ bool Thermostat::set_heatingpid(const char * value, const int8_t id) {
|
||||
// 0xA5 and 0x0240- Set the damping settings
|
||||
bool Thermostat::set_damping(const char * value, const int8_t id) {
|
||||
bool dmp;
|
||||
if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) {
|
||||
if (isRC300()) {
|
||||
if (Helpers::value2bool(value, dmp)) {
|
||||
write_command(0x240, 8, dmp ? 0xFF : 0, 0x240);
|
||||
return true;
|
||||
@@ -1990,7 +1998,7 @@ bool Thermostat::set_control(const char * value, const int8_t id) {
|
||||
write_command(set_typeids[hc->hc()], 1, ctrl);
|
||||
return true;
|
||||
}
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||
} else if (isRC300() || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||
if (Helpers::value2enum(value, ctrl, FL_(enum_control1))) {
|
||||
write_command(hpmode_typeids[hc->hc()], 3, ctrl);
|
||||
if (hc->remotetemp != EMS_VALUE_INT16_NOTSET && ctrl > 0) {
|
||||
@@ -2049,6 +2057,12 @@ bool Thermostat::set_wwmode(const char * value, const int8_t id) {
|
||||
}
|
||||
const uint8_t modes[] = {0, 5, 1, 2, 4};
|
||||
write_command(0x02F5 + dhw, 2, modes[set], 0x02F5 + dhw);
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_R3000) { // Rego3000 - https://github.com/emsesp/EMS-ESP32/issues/1692
|
||||
if (!Helpers::value2enum(value, set, FL_(enum_wwMode5))) {
|
||||
return false;
|
||||
}
|
||||
const uint8_t modes[] = {1, 2, 5};
|
||||
write_command(0x02F5 + dhw, 2, modes[set], 0x02F5 + dhw);
|
||||
} else if ((model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
if (!Helpers::value2enum(value, set, FL_(enum_wwMode))) {
|
||||
return false;
|
||||
@@ -2146,7 +2160,7 @@ bool Thermostat::set_wwprio(const char * value, const int8_t id) {
|
||||
if (!Helpers::value2bool(value, b)) {
|
||||
return false;
|
||||
}
|
||||
if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300)) {
|
||||
if (isRC300()) {
|
||||
write_command(set2_typeids[hc->hc()], 3, b ? 0xFF : 0x00, set2_typeids[hc->hc()]);
|
||||
} else {
|
||||
write_command(set_typeids[hc->hc()], 21, b ? 0xFF : 0x00, set_typeids[hc->hc()]);
|
||||
@@ -2175,7 +2189,7 @@ bool Thermostat::set_wwcircmode(const char * value, const int8_t id) {
|
||||
uint8_t dhw = id - DeviceValueTAG::TAG_DHW1;
|
||||
uint8_t set;
|
||||
|
||||
if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
if (isRC300() || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
if (!Helpers::value2enum(value, set, FL_(enum_wwCircMode))) {
|
||||
return false;
|
||||
}
|
||||
@@ -2209,7 +2223,7 @@ bool Thermostat::set_wwDailyHeatTime(const char * value, const int8_t id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
if (isRC300() || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
uint8_t t = (set + 8) / 15;
|
||||
if (t > 95) {
|
||||
return false;
|
||||
@@ -2227,7 +2241,7 @@ bool Thermostat::set_wwDisinfect(const char * value, const int8_t id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
if (isRC300() || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
write_command(0x2F5 + dhw, 5, b ? 0xFF : 0x00, 0x2F5 + dhw);
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) {
|
||||
write_command(EMS_TYPE_RC30wwSettings, 2, b ? 0xFF : 0x00, EMS_TYPE_RC30wwSettings);
|
||||
@@ -2245,7 +2259,7 @@ bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
if (isRC300() || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
write_command(0x2F5 + dhw, 7, set, 0x2F5 + dhw);
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC30) {
|
||||
write_command(EMS_TYPE_RC30wwSettings, 3, set, EMS_TYPE_RC30wwSettings);
|
||||
@@ -2259,7 +2273,7 @@ bool Thermostat::set_wwDisinfectDay(const char * value, const int8_t id) {
|
||||
bool Thermostat::set_wwDisinfectHour(const char * value, const int8_t id) {
|
||||
uint8_t dhw = id - DeviceValueTAG::TAG_DHW1;
|
||||
int set;
|
||||
if ((model() == EMSdevice::EMS_DEVICE_FLAG_BC400) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
if (isRC300() || (model() == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
if (!Helpers::value2number(value, set, 0, 1431)) {
|
||||
return false;
|
||||
}
|
||||
@@ -2580,6 +2594,7 @@ bool Thermostat::set_mode(const char * value, const int8_t id) {
|
||||
break;
|
||||
case EMSdevice::EMS_DEVICE_FLAG_RC300:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_RC100:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_R3000:
|
||||
mode_list = FL_(enum_mode);
|
||||
break;
|
||||
case EMSdevice::EMS_DEVICE_FLAG_JUNKERS:
|
||||
@@ -2703,6 +2718,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const int8_t id) {
|
||||
break;
|
||||
case EMSdevice::EMS_DEVICE_FLAG_RC300:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_RC100:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_R3000:
|
||||
offset = EMS_OFFSET_RCPLUSSet_mode;
|
||||
set_mode_value = set_mode_value == 2 ? 0xFF : 0;
|
||||
break;
|
||||
@@ -2737,7 +2753,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const int8_t id) {
|
||||
hc->mode = set_mode_value >> 1;
|
||||
} else if (model_ == EMSdevice::EMS_DEVICE_FLAG_BC400) {
|
||||
hc->mode_new = set_mode_value;
|
||||
} else if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC300 || model_ == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||
} else if (model_ == EMSdevice::EMS_DEVICE_FLAG_RC300 || model_ == EMSdevice::EMS_DEVICE_FLAG_R3000 || model_ == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||
hc->mode = set_mode_value == 0xFF ? 1 : 0;
|
||||
} else if (model_ == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) {
|
||||
hc->mode = set_mode_value - 1;
|
||||
@@ -2922,7 +2938,7 @@ bool Thermostat::set_reducemode(const char * value, const int8_t id) {
|
||||
}
|
||||
|
||||
uint8_t set;
|
||||
if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||
if (isRC300() || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||
if (Helpers::value2enum(value, set, FL_(enum_reducemode1))) {
|
||||
write_command(set_typeids[hc->hc()], 5, set + 1, set_typeids[hc->hc()]);
|
||||
return true;
|
||||
@@ -2960,7 +2976,7 @@ bool Thermostat::set_nofrostmode(const char * value, const int8_t id) {
|
||||
return false;
|
||||
}
|
||||
uint8_t set;
|
||||
if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||
if (isRC300() || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||
if (Helpers::value2enum(value, set, FL_(enum_nofrostmode1))) {
|
||||
write_command(curve_typeids[hc->hc()], 5, set + 1, curve_typeids[hc->hc()]);
|
||||
return true;
|
||||
@@ -3020,7 +3036,7 @@ bool Thermostat::set_controlmode(const char * value, const int8_t id) {
|
||||
write_command(curve_typeids[hc->hc()], 0, set + 1, curve_typeids[hc->hc()]);
|
||||
return true;
|
||||
}
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300) {
|
||||
} else if (isRC300()) {
|
||||
if (Helpers::value2enum(value, set, FL_(enum_controlmode1))) {
|
||||
write_command(curve_typeids[hc->hc()], 0, set + 1, curve_typeids[hc->hc()]);
|
||||
return true;
|
||||
@@ -3275,7 +3291,7 @@ bool Thermostat::set_program(const char * value, const int8_t id) {
|
||||
write_command(timer_typeids[hc->hc()], 84, set, timer_typeids[hc->hc()]);
|
||||
return true;
|
||||
}
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400 || model() == EMSdevice::EMS_DEVICE_FLAG_RC300 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||
} else if (isRC300() || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||
if (Helpers::value2enum(value, set, FL_(enum_progMode))) {
|
||||
write_command(set_typeids[hc->hc()], 11, set + 1, set_typeids[hc->hc()]);
|
||||
return true;
|
||||
@@ -3419,7 +3435,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co
|
||||
break;
|
||||
}
|
||||
|
||||
} else if (model == EMSdevice::EMS_DEVICE_FLAG_BC400 || (model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
} else if (isRC300() || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) {
|
||||
validate_typeid = set_typeids[hc->hc()];
|
||||
switch (mode) {
|
||||
case HeatingCircuit::Mode::SUMMER:
|
||||
@@ -3797,6 +3813,7 @@ void Thermostat::register_device_values() {
|
||||
switch (this->model()) {
|
||||
case EMSdevice::EMS_DEVICE_FLAG_RC100:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_RC300:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_R3000:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_BC400:
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&dateTime_,
|
||||
@@ -4160,9 +4177,14 @@ void Thermostat::register_device_values() {
|
||||
|
||||
#if defined(EMSESP_STANDALONE)
|
||||
// if we're just dumping out values, create a single dummy hc
|
||||
auto new_hc = std::make_shared<Thermostat::HeatingCircuit>(1, this->model()); // hc = 1
|
||||
auto new_hc = std::make_shared<Thermostat::HeatingCircuit>(1, this->model()); // hc 1
|
||||
heating_circuits_.push_back(new_hc);
|
||||
register_device_values_hc(new_hc);
|
||||
|
||||
// also a dhw circuit...
|
||||
auto new_dhw = std::make_shared<Thermostat::DhwCircuit>(0, 1); // offset 0, dhw num 1
|
||||
dhw_circuits_.push_back(new_dhw);
|
||||
register_device_values_dhw(new_dhw);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -4208,6 +4230,7 @@ void Thermostat::register_device_values_hc(std::shared_ptr<Thermostat::HeatingCi
|
||||
break;
|
||||
case EMSdevice::EMS_DEVICE_FLAG_RC100:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_RC300:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_R3000:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_BC400:
|
||||
if (model == EMSdevice::EMS_DEVICE_FLAG_BC400) {
|
||||
register_device_value(tag, &hc->mode_new, DeviceValueType::ENUM, FL_(enum_mode2), FL_(mode), DeviceValueUOM::NONE, MAKE_CF_CB(set_mode));
|
||||
@@ -4591,13 +4614,16 @@ void Thermostat::register_device_values_dhw(std::shared_ptr<Thermostat::DhwCircu
|
||||
switch (this->model()) {
|
||||
case EMSdevice::EMS_DEVICE_FLAG_RC100:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_RC300:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_R3000:
|
||||
case EMSdevice::EMS_DEVICE_FLAG_BC400:
|
||||
register_device_value(tag, &dhw->wwSetTemp_, DeviceValueType::UINT8, FL_(wwSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwtemp));
|
||||
if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400) {
|
||||
register_device_value(tag, &dhw->wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode4), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode));
|
||||
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_R3000) {
|
||||
register_device_value(tag, &dhw->wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode5), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode));
|
||||
} else {
|
||||
register_device_value(tag, &dhw->wwMode_, DeviceValueType::ENUM, FL_(enum_wwMode), FL_(wwMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwmode));
|
||||
}
|
||||
register_device_value(tag, &dhw->wwSetTemp_, DeviceValueType::UINT8, FL_(wwSetTemp), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwtemp));
|
||||
register_device_value(tag, &dhw->wwSetTempLow_, DeviceValueType::UINT8, FL_(wwSetTempLow), DeviceValueUOM::DEGREES, MAKE_CF_CB(set_wwtemplow));
|
||||
register_device_value(tag, &dhw->wwCircMode_, DeviceValueType::ENUM, FL_(enum_wwCircMode), FL_(wwCircMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcircmode));
|
||||
register_device_value(tag,
|
||||
|
||||
@@ -218,6 +218,11 @@ class Thermostat : public EMSdevice {
|
||||
return (flags() & 0x0F);
|
||||
}
|
||||
|
||||
// check to see if the thermostat is a hybrid of the R300
|
||||
inline bool isRC300() const {
|
||||
return ((model() == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model() == EMSdevice::EMS_DEVICE_FLAG_R3000) || (model() == EMSdevice::EMS_DEVICE_FLAG_BC400));
|
||||
}
|
||||
|
||||
// each thermostat has a list of heating controller type IDs for reading and writing
|
||||
std::vector<uint16_t> monitor_typeids;
|
||||
std::vector<uint16_t> set_typeids;
|
||||
|
||||
@@ -441,6 +441,7 @@ class EMSdevice {
|
||||
static constexpr uint8_t EMS_DEVICE_FLAG_CRF = 12; // CRF200 only monitor
|
||||
static constexpr uint8_t EMS_DEVICE_FLAG_RC100H = 13; // with humidity
|
||||
static constexpr uint8_t EMS_DEVICE_FLAG_BC400 = 14; // mostly like RC300, but some changes
|
||||
static constexpr uint8_t EMS_DEVICE_FLAG_R3000 = 15; // Rego3000, same as RC300 with different wwmodes
|
||||
|
||||
uint8_t count_entities();
|
||||
bool has_entities() const;
|
||||
|
||||
@@ -303,6 +303,7 @@ MAKE_ENUM(enum_wwCircMode, FL_(off), FL_(on), FL_(auto), FL_(own_prog))
|
||||
MAKE_ENUM(enum_wwMode2, FL_(off), FL_(on), FL_(auto))
|
||||
MAKE_ENUM(enum_wwMode3, FL_(on), FL_(off), FL_(auto))
|
||||
MAKE_ENUM(enum_wwMode4, FL_(off), FL_(ecoplus), FL_(eco), FL_(comfort), FL_(auto))
|
||||
MAKE_ENUM(enum_wwMode5, FL_(normal), FL_(comfort), FL_(ecoplus)) // Rego3000
|
||||
MAKE_ENUM(enum_heatingtype, FL_(off), FL_(radiator), FL_(convector), FL_(floor))
|
||||
MAKE_ENUM(enum_heatingtype1, FL_(off), FL_(curve), FL_(radiator), FL_(convector), FL_(floor))
|
||||
MAKE_ENUM(enum_summermode, FL_(summer), FL_(auto), FL_(winter))
|
||||
|
||||
@@ -380,7 +380,7 @@ MAKE_TRANSLATION(nrgSuppCooling, "nrgsuppcooling", "total energy supplied coolin
|
||||
MAKE_TRANSLATION(nrgSuppPool, "nrgsupppool", "total energy supplied pool", "gesamte Energieabgabe Pool", "Opgewekte energie zwembadbedrijf", "Genererad energi Pool", "energia oddana na podgrzewanie basenu", "tilført energi basseng", "énergie totale fournie piscine", "havuz sağlanan toplam enerji", "totale di energia fornita- piscina", "celkový bazén dodanej energie")
|
||||
MAKE_TRANSLATION(auxElecHeatNrgConsTotal, "auxelecheatnrgconstotal", "total aux elec. heater energy consumption", "Energieverbrauch el. Zusatzheizung", "Totaal energieverbruik electrisch verwarmingselement", "Energiförbrukning Eltillkott", "energia pobrana przez grzałki", "energiforbruk varmekolbe", "consommation totale énergie electrique auxiliaire chauffage", "ilave elektrikli ısıtıcı toplam enerji tüketimi", "consumo energetico riscaldamento elettrico supplementare", "celková spotreba energie prídavného elektrického ohrievača")
|
||||
MAKE_TRANSLATION(auxElecHeatNrgConsHeating, "auxelecheatnrgconsheating", "aux elec. heater energy consumption heating", "Energieverbrauch el. Zusatzheizung Heizen", "Energieverbruik electrisch verwarmingselement voor verwarmingsbedrijf", "Energiförbrukning Eltillskott Uppvärmning", "energia pobrana przez grzałki na ogrzewanie", "energiforbruk varmekolbe oppvarming", "consommation énergie electrique auxiliaire chauffage", "ilave elektrikli ısıtıcı ısınma toplam enerji tüketimi", "consumo di energia riscaldamento elettrico ausiliario", "pomocný elektrický ohrievač spotreba energie vykurovanie")
|
||||
MAKE_TRANSLATION(auxElecHeatNrgConsWW, "auxelecheatnrgconsdhw", "aux elec. heater energy consumption", "Energieverbrauch el. Zusatzheizung", "Energieverbruik electrisch verwarmingselement voor", "Energiförbrukning Eltillskott", "energia pobrana przez grzałki na c.w.u.", "energiförbruk varmekolbe", "consommation énergie electrique auxiliaire chauffage", "ilave elektrikli ısıtıcı sıcak kullanım suyu toplam enerji tüketimi", "consumo di energia riscaldamento elettrico ausiliario", "spotreba energie pomocného elektrického ohrievača")
|
||||
MAKE_TRANSLATION(auxElecHeatNrgConsWw, "auxelecheatnrgconsdhw", "aux elec. heater energy consumption", "Energieverbrauch el. Zusatzheizung", "Energieverbruik electrisch verwarmingselement voor", "Energiförbrukning Eltillskott", "energia pobrana przez grzałki na c.w.u.", "energiförbruk varmekolbe", "consommation énergie electrique auxiliaire chauffage", "ilave elektrikli ısıtıcı sıcak kullanım suyu toplam enerji tüketimi", "consumo di energia riscaldamento elettrico ausiliario", "spotreba energie pomocného elektrického ohrievača")
|
||||
MAKE_TRANSLATION(auxElecHeatNrgConsPool, "auxelecheatnrgconspool", "aux elec. heater energy consumption pool", "Energieverbrauch el. Zusatzheizung Pool", "Energieverbruik electrisch verwarmingselement voor zwembadbedrijf", "Energiförbrukning Eltillskott Pool", "energia pobrana przez grzałki na podgrzewanie basenu", "energiforbruk el. tilleggsvarme basseng", "consommation énergie electrique auxiliaire chauffage piscine", "ilave elektrikli ısıtıcı havuz toplam enerji tüketimi", "consumo di energia riscaldamento elettrico ausiliario piscina", "bazén spotreby energie pomocného elektrického ohrievača")
|
||||
|
||||
MAKE_TRANSLATION(hpCompOn, "hpcompon", "hp compressor", "WP Kompressor", "WP compressor", "VP Kompressor", "sprężarka pompy ciepła", "vp kompressor", "compresseur pompe à chaleur", "hp ısı pompası", "compressore pompa calore", "hp kompresor")
|
||||
|
||||
@@ -299,9 +299,14 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd, const
|
||||
|
||||
bool ok = false;
|
||||
|
||||
// e.g. "test add 0x10 172"
|
||||
if (command == "add") {
|
||||
if (id1 == -1 || id2 == -1) {
|
||||
shell.printfln("Usage: test add <device_id> <product_id>");
|
||||
return;
|
||||
}
|
||||
shell.printfln("Testing Adding a device (product_id %d), with all values...", id2);
|
||||
test("add", id1, id2); // e.g. "test add 0x8 172"
|
||||
test("add", id1, id2);
|
||||
shell.invoke_command("show values");
|
||||
ok = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user