diff --git a/admin/words.js b/admin/words.js
index 320aadb..f96a909 100644
--- a/admin/words.js
+++ b/admin/words.js
@@ -4,8 +4,8 @@
systemDictionary = {
"ems-esp adapter settings": {
- "en": "ems-esp adapter settings",
- "de": "ems-esp-Adaptereinstellungen",
+ "en": "EMS-ESP adapter settings",
+ "de": "EMS-ESP Adaptereinstellungen",
"ru": "настройки адаптера ems-esp",
"pt": "configurações do adaptador ems-esp",
"nl": "instellingen voor ems-esp-adapter",
@@ -40,8 +40,8 @@ systemDictionary = {
"zh-cn": "EMS-ESP"
},
"ems expert settings": {
- "en": "ems expert settings",
- "de": "EMS-Experteneinstellungen",
+ "en": "EMS expert settings",
+ "de": "EMS Experteneinstellungen",
"ru": "EMS экспертные настройки",
"pt": "configurações especializadas ems",
"nl": "ems-expertinstellingen",
@@ -52,8 +52,8 @@ systemDictionary = {
"zh-cn": "ems专家设置"
},
"km200_structure": {
- "en": "km200 structure",
- "de": "km200 Struktur",
+ "en": "KM200 structure",
+ "de": "KM200 Struktur",
"ru": "Строение км200",
"pt": "estrutura km200",
"nl": "km200-structuur",
@@ -102,7 +102,7 @@ systemDictionary = {
},
"ems_dallas_old_format": {
"en": "use old dallas prefix for sensors",
- "de": "alten dallas-Präfix für Sensoren verwenden",
+ "de": "Alten Dallas-Präfix für Sensoren verwenden",
"ru": "использовать старый префикс Далласа для датчиков",
"pt": "usar prefixo de dallas antigo para sensores",
"nl": "gebruik oude dallas prefix voor sensoren",
@@ -140,7 +140,7 @@ systemDictionary = {
},
"ems_custom_elements": {
"en": "read ems-esp custom elements",
- "de": "ems-esp benutzerdefinierte Elemente lesen",
+ "de": "EMS-ESP benutzerdefinierte Elemente lesen",
"ru": "читать ems-esp пользовательские элементы",
"pt": "ler elementos personalizados emsp",
"nl": "lees keizersnede elementen",
@@ -188,8 +188,8 @@ systemDictionary = {
"zh-cn": "使用 REST API V3"
},
"ems_token": {
- "en": "ems access token ",
- "de": "ems-Zugriffstoken ",
+ "en": "ems-esp access token ",
+ "de": "EMS-ESP Zugriffstoken ",
"ru": "токен доступа ems ",
"pt": "token de acesso ems ",
"nl": "ems-toegangstoken ",
@@ -301,7 +301,7 @@ systemDictionary = {
},
"control_file": {
"en": "csv-file for km200 | empty: no km200 data *: read all km200 fields",
- "de": "csv-Datei für km200 | leer: keine km200-Daten *: alle km200-Felder lesen",
+ "de": "CSV-Datei für km200 | leer: keine km200-Daten *: alle km200-Felder lesen",
"ru": "csv-файл для км200 | пусто: нет данных км200 *: прочитать все поля км200",
"pt": "arquivo csv para km200 | vazio: sem dados km200 *: ler todos os campos km200",
"nl": "csv-bestand voor km200 | leeg: geen km200-gegevens *: lees alle km200-velden",
@@ -446,7 +446,7 @@ systemDictionary = {
},
"db_instance": {
"en": "db instance",
- "de": "db Instanz",
+ "de": "DB Instanz",
"ru": "db экземпляр",
"pt": "instância db",
"nl": "db instituut",
diff --git a/index_m.html b/index_m.html
new file mode 100644
index 0000000..d140757
--- /dev/null
+++ b/index_m.html
@@ -0,0 +1,483 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ array of values
+ array of values with ts
+ array of values with date-format
+
+ recordings_format
+
+
+
+
+ no database
+ History
+ mySQL
+ InfluxDB
+
+ database
+
+
+
+
+ db_instance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
+
+
add
+
+
+
+
+ room
+ set temp
+ actual temp
+
+ minimum delta
+
+ hc
+
+ weight
+
+
+
+
+
+
+
+
+
+
>
+
+
add
+
+
+
+
+ hc
+
+ weighton
+
+ weightoff
+
+ state
+ on
+ off
+
+ savesettemp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ****************************************************************************
+
+
+ ***** SETTINGS ON CUSTOM EMS-TELEGRAMS --- EXPERTS ONLY --- DANGER !!!
+
+
+ ****************************************************************************
+
+
+
+
+
+
+
+
+
add
+
+
+
+
+ state
+ src
+ type
+ hex
+
+ polling
+
+ bit
+
+ bytes
+ multi
+ signed
+
+ state_type
+
+ states
+ min
+ max
+ uom
+ writable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/custom.js b/lib/custom.js
index 0eaba12..6e838c2 100644
--- a/lib/custom.js
+++ b/lib/custom.js
@@ -38,7 +38,8 @@ const init = async function (a, i) {
let count = 0;
for (let i = 0; i < own_states.length; i++) {
if (own_states[i].polling) {
- adapter.log.info("custom entity found:" + own_states[i].state);
+ state = own_states[i].state;
+ adapter.log.info("extended entity found:" + own_states[i].state);
count += 1;
}
}
@@ -48,12 +49,12 @@ const init = async function (a, i) {
const obj = await adapter.getForeignObjectAsync(inst);
obj.native.devices = own_states;
await adapter.setForeignObjectAsync(inst, obj);
- adapter.log.info("ems: custom entities configuration stored .... instance will restart");
+ adapter.log.info("ems: extended entities configuration stored .... instance will restart");
}
if (count > 0) {
- adapter.log.info("custom entity poll for " + count + " states every 1 minute");
- i.poll = setInterval(function () { ems_poll(); }, 60000); // 1 Minutes
+ adapter.log.info("extended entity poll for " + count + " states every 5 minutes");
+ i.poll = setInterval(function () { ems_poll(); }, 300000); // 5 Minutes
}
};
@@ -226,7 +227,9 @@ async function ems_put(url, value) {
const options = {"url": url, "headers": headers, "data": data, "method": "POST" };
const r = (await axios(options)).data.message;
return r;
- } catch(e) {adapter.log.error("post: "+ url + " " +e);}
+ } catch(e) {
+ // adapter.log.error("post: "+ url + " " +e);
+ }
}
diff --git a/lib/ems.js b/lib/ems.js
index 7a281be..da38046 100644
--- a/lib/ems.js
+++ b/lib/ems.js
@@ -406,7 +406,7 @@ async function ems_read(version) {
try {data = await ems_get(url1); }
catch(error) {data = "Invalid";}
await sleep(ems_http_wait);
- adapter.log.info(data);
+ //adapter.log.info(data);
if (data != "Invalid") {
let def = {};
@@ -424,7 +424,9 @@ async function ems_read(version) {
try {if (def.name.substring(0,2) == "ww") type = "dhwCircuits.dhw1";} catch (e) {}
}
- write_sensor(type+".c_"+def.name,def.value,def);
+
+
+ write_sensor(type+"."+def.name,def.value,def);
}
}
}
diff --git a/package copy.json b/package copy.json
deleted file mode 100644
index 9deeb7a..0000000
--- a/package copy.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "name": "iobroker.ems-esp",
- "version": "2.2.0",
- "description": "EMS-ESP and KM200 Interface",
- "author": {
- "name": "Thomas Petrick",
- "email": "tp1degit@gmail.com"
- },
- "homepage": "https://github.com/tp1de/ioBroker.ems-esp",
- "license": "MIT",
- "keywords": [
- "ems-esp",
- "buderus",
- "bosch",
- "junkers",
- "km200",
- "heating"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/tp1de/ioBroker.ems-esp"
- },
- "bugs": {
- "url": "https://github.com/tp1de/ioBroker.ems-esp/issues"
- },
- "bundleDependencies": [],
- "engines": {
- "node": ">=16"
- },
- "dependencies": {
- "@iobroker/adapter-core": "^3.0.3",
- "buffer": "^6.0.3",
- "jshint": "^2.13.4",
- "rijndael-js": "^2.0.0",
- "simple-syslog-server": "^1.0.0",
- "user": "0.0.0"
- },
- "deprecated": false,
- "devDependencies": {
- "@alcalzone/release-script": "^3.6.0",
- "@alcalzone/release-script-plugin-iobroker": "^3.6.0",
- "@alcalzone/release-script-plugin-license": "^3.5.9",
- "@alcalzone/release-script-plugin-manual-review": "^3.5.9",
- "@iobroker/adapter-dev": "^1.2.0",
- "@iobroker/testing": "^4.1.0",
- "@types/chai": "^4.3.5",
- "@types/chai-as-promised": "^7.1.5",
- "@types/gulp": "^4.0.13",
- "@types/mocha": "^10.0.1",
- "@types/node": "^20.4.8",
- "@types/proxyquire": "^1.3.28",
- "@types/sinon": "^10.0.16",
- "@types/sinon-chai": "^3.2.9",
- "chai": "^4.3.7",
- "chai-as-promised": "^7.1.1",
- "eslint": "^8.46.0",
- "eslint-config-prettier": "^8.10.0",
- "eslint-plugin-prettier": "^5.0.0",
- "gulp": "^4.0.2",
- "mocha": "^10.2.0",
- "prettier": "^3.0.1",
- "proxyquire": "^2.1.3",
- "sinon": "^15.2.0",
- "sinon-chai": "^3.7.0",
- "typescript": "~5.1.6"
- },
- "directories": {
- "lib": "lib",
- "test": "test"
- },
- "main": "main.js",
- "scripts": {
- "test:js": "mocha \"{!(node_modules|test)/**/*.test.js,*.test.js,test/**/test!(PackageFiles|Startup).js}\"",
- "test:package": "mocha test/package --exit",
- "test:unit": "mocha test/unit --exit",
- "test:integration": "mocha test/integration --exit",
- "test": "npm run test:js && npm run test:package",
- "lint": "eslint",
- "translate": "translate-adapter",
- "release": "release-script"
- },
- "readmeFilename": "README.md"
-}
diff --git a/template.yaml.old.yaml b/template.yaml.old.yaml
deleted file mode 100644
index afcc50e..0000000
--- a/template.yaml.old.yaml
+++ /dev/null
@@ -1,107 +0,0 @@
-###############################
-# for EMS-ESP v3.4.1 #
-###############################
-#CH working hours
-sensor:
- - name: "Boiler CH working hours"
- unit_of_measurement: 'hr'
- icon: 'mdi:clock-check-outline'
- state: >
- {% set mins = states('sensor.boiler_total_heat_operating_time') %}
- {% set hours = ((mins | int / 60) | string).split('.')[0] %}
- {{hours}}
-
-#Burner working hours
- - name: 'Boiler burner working hours'
- unit_of_measurement: 'hr'
- icon: 'mdi:clock-check-outline'
- state: >
- {% set mins = states('sensor.boiler_heatworkmin') %}
- {% set hours = ((mins | int / 60) | string).split('.')[0] %}
- {{hours}}
-
-#Boiler Service Code
- - name: 'Boiler service code text'
- icon: 'mdi:information'
- state: >
- {% set sc = states('sensor.boiler_servicecodenumber') %}
- {% if sc == '200' %} CH active
- {% elif sc == '201' %} HW active
- {% elif sc == '202' %} CH anti cycle
- {% elif sc == '203' %} Standby
- {% elif sc == '204' %} CH cooling
- {% elif sc == '208' %} Service test
- {% elif sc == '265' %} Low CH load
- {% elif sc == '268' %} Component test
- {% elif sc == '270' %} Power up
- {% elif sc == '283' %} Burner start
- {% elif sc == '284' %} Ignition
- {% elif sc == '305' %} HW anti cycle
- {% elif sc == '357' %} Air purge
- {% elif sc == '358' %} Valve kick
- {% else %} {{ sc }}
- {% endif %}
-
-#Boiler Uptime Hours
- - name: 'Boiler Total Uptime hours'
- unit_of_measurement: 'hr'
- icon: 'mdi:clock-check-outline'
- state: >
- {% set mins = states('sensor.boiler_ubauptime') %}
- {% set hours = ((mins | int / 60) | string).split('.')[0] %}
- {{hours}}
-
-
-#EMS-ESP Working Hours
- - name: 'System Uptime (hr)'
- unit_of_measurement: 'hr'
- icon: 'mdi:clock-check-outline'
- state: >
- {% set mins = states('sensor.system_uptime_sec') %}
- {% set hours = ((mins | int / 3600) | string).split('.')[0] %}
- {{hours}}
-
-
-# For Kostal Plenticore
-
- - name: "Kostal DC Power (String 1+2) "
- unit_of_measurement: "W"
- device_class: energy
- state: >
- {% set pv1 = states('sensor.kostal_dc1_power') | int %}
- {% set pv2 = states('sensor.kostal_dc2_power') | int %}
- {{ (pv1 + pv2) }}
-
- - name: "Kostal PV Power"
- unit_of_measurement: "W"
- device_class: energy
- state: >
- {% set togrid = states('sensor.ksem_power_togrid') | int %}
- {% set tobatt = states('sensor.kostal_pv_to_battery_power') | int %}
- {% set tohome = states('sensor.kostal_home_power_from_pv') | int %}
- {{ (togrid + tobatt + tohome) }}
-
- - name: "Kostal Energy PV to Grid Total (Template)"
- unit_of_measurement: "kWh"
- device_class: energy
- state_class: total
- state: >
- {% set yield = states('sensor.kostal_energy_yield_total') | float %}
- {% set batteryToHome = states('sensor.kostal_home_consumption_from_battery_total') | float %}
- {% set pvToHome = states('sensor.kostal_home_consumption_from_pv_total') | float %}
- {{ yield - pvToHome - batteryToHome }}
-
-# For Gas Power
-
- - name: "Gas Power "
- unit_of_measurement: "kW"
- device_class: power
- state: >
- {% set modulation = states('sensor.boiler_curburnpow') | int %}
- {{ (modulation * 22 / 100) }}
-
-# For text empty state
-
- - name: "empty"
- state: >
- {{ "" }}
\ No newline at end of file
diff --git a/template1.yaml b/template1.yaml
deleted file mode 100644
index afcc50e..0000000
--- a/template1.yaml
+++ /dev/null
@@ -1,107 +0,0 @@
-###############################
-# for EMS-ESP v3.4.1 #
-###############################
-#CH working hours
-sensor:
- - name: "Boiler CH working hours"
- unit_of_measurement: 'hr'
- icon: 'mdi:clock-check-outline'
- state: >
- {% set mins = states('sensor.boiler_total_heat_operating_time') %}
- {% set hours = ((mins | int / 60) | string).split('.')[0] %}
- {{hours}}
-
-#Burner working hours
- - name: 'Boiler burner working hours'
- unit_of_measurement: 'hr'
- icon: 'mdi:clock-check-outline'
- state: >
- {% set mins = states('sensor.boiler_heatworkmin') %}
- {% set hours = ((mins | int / 60) | string).split('.')[0] %}
- {{hours}}
-
-#Boiler Service Code
- - name: 'Boiler service code text'
- icon: 'mdi:information'
- state: >
- {% set sc = states('sensor.boiler_servicecodenumber') %}
- {% if sc == '200' %} CH active
- {% elif sc == '201' %} HW active
- {% elif sc == '202' %} CH anti cycle
- {% elif sc == '203' %} Standby
- {% elif sc == '204' %} CH cooling
- {% elif sc == '208' %} Service test
- {% elif sc == '265' %} Low CH load
- {% elif sc == '268' %} Component test
- {% elif sc == '270' %} Power up
- {% elif sc == '283' %} Burner start
- {% elif sc == '284' %} Ignition
- {% elif sc == '305' %} HW anti cycle
- {% elif sc == '357' %} Air purge
- {% elif sc == '358' %} Valve kick
- {% else %} {{ sc }}
- {% endif %}
-
-#Boiler Uptime Hours
- - name: 'Boiler Total Uptime hours'
- unit_of_measurement: 'hr'
- icon: 'mdi:clock-check-outline'
- state: >
- {% set mins = states('sensor.boiler_ubauptime') %}
- {% set hours = ((mins | int / 60) | string).split('.')[0] %}
- {{hours}}
-
-
-#EMS-ESP Working Hours
- - name: 'System Uptime (hr)'
- unit_of_measurement: 'hr'
- icon: 'mdi:clock-check-outline'
- state: >
- {% set mins = states('sensor.system_uptime_sec') %}
- {% set hours = ((mins | int / 3600) | string).split('.')[0] %}
- {{hours}}
-
-
-# For Kostal Plenticore
-
- - name: "Kostal DC Power (String 1+2) "
- unit_of_measurement: "W"
- device_class: energy
- state: >
- {% set pv1 = states('sensor.kostal_dc1_power') | int %}
- {% set pv2 = states('sensor.kostal_dc2_power') | int %}
- {{ (pv1 + pv2) }}
-
- - name: "Kostal PV Power"
- unit_of_measurement: "W"
- device_class: energy
- state: >
- {% set togrid = states('sensor.ksem_power_togrid') | int %}
- {% set tobatt = states('sensor.kostal_pv_to_battery_power') | int %}
- {% set tohome = states('sensor.kostal_home_power_from_pv') | int %}
- {{ (togrid + tobatt + tohome) }}
-
- - name: "Kostal Energy PV to Grid Total (Template)"
- unit_of_measurement: "kWh"
- device_class: energy
- state_class: total
- state: >
- {% set yield = states('sensor.kostal_energy_yield_total') | float %}
- {% set batteryToHome = states('sensor.kostal_home_consumption_from_battery_total') | float %}
- {% set pvToHome = states('sensor.kostal_home_consumption_from_pv_total') | float %}
- {{ yield - pvToHome - batteryToHome }}
-
-# For Gas Power
-
- - name: "Gas Power "
- unit_of_measurement: "kW"
- device_class: power
- state: >
- {% set modulation = states('sensor.boiler_curburnpow') | int %}
- {{ (modulation * 22 / 100) }}
-
-# For text empty state
-
- - name: "empty"
- state: >
- {{ "" }}
\ No newline at end of file
diff --git a/words.js b/words.js
new file mode 100644
index 0000000..f96a909
--- /dev/null
+++ b/words.js
@@ -0,0 +1,729 @@
+/* eslint-disable no-mixed-spaces-and-tabs */
+/*global systemDictionary:true */
+"use strict";
+
+systemDictionary = {
+ "ems-esp adapter settings": {
+ "en": "EMS-ESP adapter settings",
+ "de": "EMS-ESP Adaptereinstellungen",
+ "ru": "настройки адаптера ems-esp",
+ "pt": "configurações do adaptador ems-esp",
+ "nl": "instellingen voor ems-esp-adapter",
+ "fr": "paramètres de l'adaptateur ems-esp",
+ "it": "impostazioni dell'adattatore ems-esp",
+ "es": "configuración del adaptador ems-esp",
+ "pl": "ustawienia adaptera ems-esp",
+ "zh-cn": "ems-esp 适配器设置"
+ },
+ "KM200 settings": {
+ "en": "KM200",
+ "de": "KM200",
+ "ru": "KM200",
+ "pt": "KM200",
+ "nl": "KM200",
+ "fr": "KM200",
+ "it": "KM200",
+ "es": "KM200",
+ "pl": "KM200",
+ "zh-cn": "KM200"
+ },
+ "EMS-ESP settings": {
+ "en": "EMS-ESP",
+ "de": "EMS-ESP",
+ "ru": "EMS-ESP",
+ "pt": "EMS-ESP",
+ "nl": "EMS-ESP",
+ "fr": "EMS-ESP",
+ "it": "EMS-ESP",
+ "es": "EMS-ESP",
+ "pl": "EMS-ESP",
+ "zh-cn": "EMS-ESP"
+ },
+ "ems expert settings": {
+ "en": "EMS expert settings",
+ "de": "EMS Experteneinstellungen",
+ "ru": "EMS экспертные настройки",
+ "pt": "configurações especializadas ems",
+ "nl": "ems-expertinstellingen",
+ "fr": "paramètres experts ems",
+ "it": "impostazioni esperte",
+ "es": "configuración experta ems",
+ "pl": "ustawienia eksperckie ems",
+ "zh-cn": "ems专家设置"
+ },
+ "km200_structure": {
+ "en": "KM200 structure",
+ "de": "KM200 Struktur",
+ "ru": "Строение км200",
+ "pt": "estrutura km200",
+ "nl": "km200-structuur",
+ "fr": "km200 structure",
+ "it": "km200 struttura",
+ "es": "estructura km200",
+ "pl": "km200 struktura",
+ "zh-cn": "km200 结构"
+ },
+ "emsesp_active": {
+ "en": "EMS-ESP gateway active",
+ "de": "EMS-ESP Gateway aktiv",
+ "ru": "EMS-ESP gateway активен",
+ "pt": "EMS-ESP gateway ativo",
+ "nl": "EMS-ESP gateway actief",
+ "fr": "EMS-ESP gateway actif",
+ "it": "EMS-ESP gateway attivo",
+ "es": "EMS-ESP gateway activo",
+ "pl": "EMS-ESP gateway aktywny",
+ "zh-cn": "EMS-ESP 活动"
+ },
+ "ems_http_wait": {
+ "en": "msec delay",
+ "de": "Millisekunden Verzögerung",
+ "ru": "задержка в миллисекундах",
+ "pt": "atraso de mseg",
+ "nl": "msec vertraging",
+ "fr": "délai en millisecondes",
+ "it": "ritardo di msec",
+ "es": "retraso de milisegundos",
+ "pl": "Opóźnienie w milisekundach",
+ "zh-cn": "毫秒延迟"
+ },
+ "ems_dallas": {
+ "en": "temperature sensors",
+ "de": "Temperatursensoren",
+ "ru": "датчики температуры",
+ "pt": "sensores de temperatura",
+ "nl": "Temperatuursensoren",
+ "fr": "capteurs de température",
+ "it": "sensori di temperatura",
+ "es": "sensores de temperatura",
+ "pl": "czujnik temperatury",
+ "uk": "датчики температури",
+ "zh-cn": "温度传感器"
+ },
+ "ems_dallas_old_format": {
+ "en": "use old dallas prefix for sensors",
+ "de": "Alten Dallas-Präfix für Sensoren verwenden",
+ "ru": "использовать старый префикс Далласа для датчиков",
+ "pt": "usar prefixo de dallas antigo para sensores",
+ "nl": "gebruik oude dallas prefix voor sensoren",
+ "fr": "utiliser le vieux préfixe de dallas pour les capteurs",
+ "it": "utilizzare il vecchio prefisso dallas per i sensori",
+ "es": "utilizar el antiguo prefijo dallas para sensores",
+ "pl": "użycie prefiksu dallas dla czujników",
+ "uk": "використовувати старий префікс dallas для датчиків",
+ "zh-cn": "对传感器使用旧的dallas prefix"
+ },
+ "ems_analog": {
+ "en": "analog",
+ "de": "Analog",
+ "ru": "analog",
+ "pt": "Analog",
+ "nl": "analog",
+ "fr": "analog",
+ "it": "analog",
+ "es": "analog",
+ "pl": "Analog",
+ "zh-cn": ""
+ },
+ "ems_custom": {
+ "en": "enable search for additional EMS+ entities (switchTimes & holidayModes) - write access needed",
+ "de": "Suche nach zusätzlichen EMS+ Entitäten (switchTimes & holidayModes) - Schreibzugriff erforderlich",
+ "ru": "включите поиск дополнительных EMS+ организаций (switchTimes & holidayModes) - напишите нужный доступ",
+ "pt": "ativar a busca por entidades EMS+ adicionais (switchTimes & holidayModes) - escrever o acesso necessário",
+ "nl": "beschikbare zoektocht naar extra EMS + entiteiten (switchTimes & holidayModes) Schrijf toegang nodig",
+ "fr": "activer la recherche d'autres entités EMS+ (switchTimes & holidayModes) - écrire l'accès nécessaire",
+ "it": "abilitare la ricerca di ulteriori entità EMS+ (switchTimes & holidayModes) - accesso di scrittura necessario",
+ "es": "habilitar la búsqueda de nuevas entidades EMS+ (switchTimes & holidayModes) - escritura acceso necesario",
+ "pl": "umożliwia wyszukiwanie dodatkowych podmiotów EMS+ (switchTimes & holidayModes) – pisanie dostępu potrzebnego do informacji",
+ "uk": "увімкніть пошук додаткових сутностей EMS+ (switchTimes & holidayModes) - напишіть доступ до потрібного",
+ "zh-cn": "能够寻找更多的电子信息管理系统+实体(奇怪制度和节假节制)—— 写出需要的准入"
+ },
+ "ems_custom_elements": {
+ "en": "read ems-esp custom elements",
+ "de": "EMS-ESP benutzerdefinierte Elemente lesen",
+ "ru": "читать ems-esp пользовательские элементы",
+ "pt": "ler elementos personalizados emsp",
+ "nl": "lees keizersnede elementen",
+ "fr": "lire les éléments personnalisés ems",
+ "it": "leggere ems-esp elementi personalizzati",
+ "es": "leer elementos personalizados emsp",
+ "pl": "czytanie elementów dostosownych",
+ "uk": "читати ems-esp користувальницьких елементів",
+ "zh-cn": "读写成的习俗要素"
+ },
+ "ems_polling": {
+ "en": "polling in sec",
+ "de": "Polling in Sek",
+ "ru": "опрос в секундах",
+ "pt": "votação em seg",
+ "nl": "polling in sec",
+ "fr": "sondage en secondes",
+ "it": "sondaggio in secondi",
+ "es": "sondeo en segundos",
+ "pl": "odpytywanie w sek",
+ "zh-cn": "秒轮询"
+ },
+ "emsesp_ip": {
+ "en": "IP address",
+ "de": "IP Adresse",
+ "ru": "айпи адрес",
+ "pt": "endereço de IP",
+ "nl": "IP adres",
+ "fr": "adresse IP",
+ "it": "indirizzo IP",
+ "es": "dirección IP",
+ "pl": "adres IP",
+ "zh-cn": "IP地址"
+ },
+ "ems_apiv3": {
+ "en": "use REST API V3",
+ "de": "REST-API V3 verwenden",
+ "ru": "использовать REST API V3",
+ "pt": "usar REST API V3",
+ "nl": "gebruik REST API V3",
+ "fr": "utiliser l'API REST V3",
+ "it": "usa l'API REST V3",
+ "es": "utilizar REST API V3",
+ "pl": "użyj REST API V3",
+ "zh-cn": "使用 REST API V3"
+ },
+ "ems_token": {
+ "en": "ems-esp access token ",
+ "de": "EMS-ESP Zugriffstoken ",
+ "ru": "токен доступа ems ",
+ "pt": "token de acesso ems ",
+ "nl": "ems-toegangstoken ",
+ "fr": "jeton d'accès ems ",
+ "it": "token di accesso ems ",
+ "es": "Token de acceso ems ",
+ "pl": "token dostępu ems ",
+ "zh-cn": "ems 访问令牌 "
+ },
+ "ems_energy": {
+ "en": "calculate energy statistics",
+ "de": "Energiestatistik berechnen",
+ "ru": "вычислить энергетическую статистику",
+ "pt": "calcular estatísticas de energia",
+ "nl": "vertaling:",
+ "fr": "calculer les statistiques énergétiques",
+ "it": "calcolo delle statistiche energetiche",
+ "es": "calcular estadísticas de energía",
+ "pl": "dane statystyczne",
+ "uk": "розрахувати статистику енергії",
+ "zh-cn": "能源统计"
+ },
+ "ems_nominalpower": {
+ "en": "nominal boiler power",
+ "de": "Nennheizleistung",
+ "ru": "номинальная мощность котла",
+ "pt": "potência nominal da caldeira",
+ "nl": "nominal boiler power",
+ "fr": "puissance nominale de chaudière",
+ "it": "potenza caldaia nominale",
+ "es": "potencia nominal de caldera",
+ "pl": "nominalna władza kotłów",
+ "uk": "номінальна котельна потужність",
+ "zh-cn": "名义动力"
+ },
+ "ems_modulation": {
+ "en": "state for modulation",
+ "de": "State für die Modulation",
+ "ru": "состояние для модуляции",
+ "pt": "estado para modulação",
+ "nl": "staat voor bescheidenheid",
+ "fr": "état de modulation",
+ "it": "stato di modulazione",
+ "es": "estado para modulación",
+ "pl": "stan modulacji",
+ "uk": "стан модуляції",
+ "zh-cn": "投机状态"
+ },
+ "ems_wwactive": {
+ "en": "state warm water active",
+ "de": "State warmes Wasser aktiv",
+ "ru": "состояние теплая вода активная",
+ "pt": "água quente do estado ativo",
+ "nl": "staat warm water",
+ "fr": "eau chaude",
+ "it": "stato acqua calda attiva",
+ "es": "agua caliente estatal activo",
+ "pl": "ciepłe wody",
+ "uk": "активний стан теплої води",
+ "zh-cn": "a. 国有变暖"
+ },
+ "km200_active": {
+ "en": "KM200 gateway active",
+ "de": "KM200 Gateway aktiv",
+ "ru": "KM200 gateway активный",
+ "pt": "KM200 gateway ativo",
+ "nl": "KM200 gateway actief",
+ "fr": "KM200 gateway actif",
+ "it": "KM200 gateway attivo",
+ "es": "KM200 gateway activo",
+ "pl": "KM200 gateway aktywny",
+ "zh-cn": "KM200有源"
+ },
+ "km200_ip": {
+ "en": "IP address",
+ "de": "IP Adresse",
+ "ru": "айпи адрес",
+ "pt": "endereço de IP",
+ "nl": "IP adres",
+ "fr": "adresse IP",
+ "it": "indirizzo IP",
+ "es": "dirección IP",
+ "pl": "adres IP",
+ "zh-cn": "IP地址"
+ },
+ "km200_polling": {
+ "en": "polling in sec",
+ "de": "Polling in Sek",
+ "ru": "опрос в секундах",
+ "pt": "votação em seg",
+ "nl": "polling in sec",
+ "fr": "sondage en secondes",
+ "it": "sondaggio in secondi",
+ "es": "sondeo en segundos",
+ "pl": "odpytywanie w sek",
+ "zh-cn": "秒轮询"
+ },
+ "km200_entry": {
+ "en": "new km200 entry-point",
+ "de": "neuer km200 Einstiegspunkt",
+ "ru": "new km200 entry-point",
+ "pt": "new km200 entry-point",
+ "nl": "new km200 entry-point",
+ "fr": "new km200 entry-point",
+ "it": "new km200 entry-point",
+ "es": "new km200 entry-point",
+ "pl": "new km200 entry-point",
+ "zh-cn": "new km200 entry-point"
+ },
+ "control_file": {
+ "en": "csv-file for km200 | empty: no km200 data *: read all km200 fields",
+ "de": "CSV-Datei für km200 | leer: keine km200-Daten *: alle km200-Felder lesen",
+ "ru": "csv-файл для км200 | пусто: нет данных км200 *: прочитать все поля км200",
+ "pt": "arquivo csv para km200 | vazio: sem dados km200 *: ler todos os campos km200",
+ "nl": "csv-bestand voor km200 | leeg: geen km200-gegevens *: lees alle km200-velden",
+ "fr": "fichier csv pour km200 | vide : pas de données km200 * : lire tous les champs km200",
+ "it": "file csv per km200 | vuoto: nessun dato km200 *: leggi tutti i campi km200",
+ "es": "archivo csv para km200 | vacío: sin datos de km200 *: leer todos los campos de km200",
+ "pl": "plik csv dla km200 | puste: brak danych km200 *: odczytaj wszystkie pola km200",
+ "zh-cn": "km200 的 csv 文件 |空:没有 km200 数据 *:读取所有 km200 字段"
+ },
+ "gateway_pw": {
+ "en": "gateway password",
+ "de": "Gateway-Passwort",
+ "ru": "пароль шлюза",
+ "pt": "senha de gateway",
+ "nl": "gateway wachtwoord",
+ "fr": "mot de passe passerelle",
+ "it": "password del gateway",
+ "es": "contraseña de puerta de enlace",
+ "pl": "hasło do bramy",
+ "zh-cn": "网关密码"
+ },
+ "private_pw": {
+ "en": "private password",
+ "de": "privates Passwort",
+ "ru": "личный пароль",
+ "pt": "senha privada",
+ "nl": "privé wachtwoord",
+ "fr": "Mot de passe privé",
+ "it": "password privata",
+ "es": "contraseña privada",
+ "pl": "prywatne hasło",
+ "zh-cn": "私人密码"
+ },
+ "recordings": {
+ "en": "energy recordings (km200 only)",
+ "de": "Energieaufzeichnungen (nur km200)",
+ "ru": "записи энергии (только 200 км)",
+ "pt": "registros de energia (apenas km200)",
+ "nl": "energieregistraties (alleen km200)",
+ "fr": "enregistrements énergétiques (km200 uniquement)",
+ "it": "rilevazioni energetiche (solo km200)",
+ "es": "registros de energía (solo km200)",
+ "pl": "zapisy energii (tylko km200)",
+ "zh-cn": "能量记录(仅限km200)"
+ },
+ "recordings_format": {
+ "en": "plain states format without db",
+ "de": "State-Format ohne Datenbank",
+ "ru": "записи в формате простого состояния без db",
+ "pt": "gravações em formato de estados simples sem db",
+ "nl": "opnames zonder db",
+ "fr": "enregistrements format plain states sans db",
+ "it": "registrazioni in formato stati semplici senza db",
+ "es": "grabaciones formato de estados simples sin db",
+ "pl": "nagrania w formacie stanów czystych bez db",
+ "zh-cn": "录音无 db 的普通状态格式"
+ },
+ "array of values": {
+ "en": "array of values",
+ "de": "Array von Werten",
+ "ru": "массив значений",
+ "pt": "matriz de valores",
+ "nl": "reeks waarden",
+ "fr": "tableau de valeurs",
+ "it": "matrice di valori",
+ "es": "matriz de valores",
+ "pl": "tablica wartości",
+ "zh-cn": "值数组"
+ },
+ "array of values with ts": {
+ "en": "array of values with ts",
+ "de": "Array von Werten mit ts",
+ "ru": "массив значений с ts",
+ "pt": "array de valores com ts",
+ "nl": "reeks waarden met ts",
+ "fr": "tableau de valeurs avec ts",
+ "it": "matrice di valori con ts",
+ "es": "matriz de valores con ts",
+ "pl": "tablica wartości z ts",
+ "zh-cn": "带有 ts 的值数组"
+ },
+ "array of values with date-format": {
+ "en": "array of values with date-format",
+ "de": "Array von Werten mit Datumsformat",
+ "ru": "массив значений в формате даты",
+ "pt": "array de valores com formato de data",
+ "nl": "reeks waarden met datumnotatie",
+ "fr": "tableau de valeurs au format date",
+ "it": "matrice di valori con formato data",
+ "es": "matriz de valores con formato de fecha",
+ "pl": "tablica wartości z formatem daty",
+ "zh-cn": "日期格式的值数组"
+ },
+ "r_multi": {
+ "en": "multiplicator ",
+ "de": "Multiplikator",
+ "ru": "множитель",
+ "pt": "multiplicador",
+ "nl": "vermenigvuldiger",
+ "fr": "multiplicateur",
+ "it": "moltiplicatore",
+ "es": "multiplicador",
+ "pl": "mnożnik",
+ "zh-cn": "乘数"
+ },
+ "r_month": {
+ "en": "sum of daily values for actual month",
+ "de": "Summe der Tageswerte für den aktuellen Monat",
+ "ru": "сумма дневных значений за фактический месяц",
+ "pt": "soma dos valores diários para o mês real",
+ "nl": "som van dagelijkse waarden voor de werkelijke maand",
+ "fr": "somme des valeurs quotidiennes pour le mois réel",
+ "it": "somma dei valori giornalieri per il mese effettivo",
+ "es": "suma de valores diarios para el mes real",
+ "pl": "suma wartości dziennych dla aktualnego miesiąca",
+ "zh-cn": "实际月份的日值总和"
+ },
+ "r_c": {
+ "en": "samples interpolation",
+ "de": "Samples-Interpolation",
+ "ru": "выборки интерполяции",
+ "pt": "interpolação de amostras",
+ "nl": "steekproeven interpolatie:",
+ "fr": "interpolation d'échantillons",
+ "it": "interpolazione dei campioni",
+ "es": "interpolación de muestras",
+ "pl": "interpolacja próbek",
+ "zh-cn": "样本插值"
+ },
+ "statistics" :{
+ "en": "create statistics - boiler starts need active database",
+ "de": "Statistiken erstellen - Kesselstarts benötigen aktive Datenbank",
+ "ru": "Создать статистику - бойлеру нужна активная база данных",
+ "pt": "Criar estatísticas - caldeira começa a precisar de banco de dados ativo",
+ "nl": "Creëer statistieken. Boiler heeft actieve database nodig",
+ "fr": "Créer des statistiques - la chaudière commence besoin de base de données active",
+ "it": "Creare statistiche - caldaia inizia bisogno di database attivo",
+ "es": "Crear estadísticas - La caldera comienza a necesitar una base de datos activa",
+ "pl": "Statystyki kreacyjne – kotł zaczyna potrzebować aktywnej bazy danych",
+ "uk": "Створіть статистику - котел починає потрібні активні бази даних",
+ "zh-cn": "D. 创建统计——开端需要积极数据库"
+ },
+ "db_instance": {
+ "en": "db instance",
+ "de": "DB Instanz",
+ "ru": "db экземпляр",
+ "pt": "instância db",
+ "nl": "db instituut",
+ "fr": "db instance",
+ "it": "caso db",
+ "es": "db instance",
+ "pl": "instancja db",
+ "uk": "db екземпляр",
+ "zh-cn": "d. 实例"
+ },
+ "database": {
+ "en": "database",
+ "de": "Datenbank",
+ "ru": "база данных",
+ "pt": "base de dados",
+ "nl": "database",
+ "fr": "base de données",
+ "it": "Banca dati",
+ "es": "base de datos",
+ "pl": "Baza danych",
+ "zh-cn": "数据库"
+ },
+ "eff_active": {
+ "en": "calculate boiler efficieny (gas and oil)",
+ "de": "Kesselwirkungsgrad berechnen (Gas und Öl)",
+ "ru": "рассчитать эффективность котла (газ и масло)",
+ "pt": "calcular a eficiência da caldeira (gás e óleo)",
+ "nl": "bereken de boiler efficiëny (gas en olie)",
+ "fr": "calculer l'efficacité des chaudières (gaz et huile)",
+ "it": "calcolare l'efficienza della caldaia (gas e olio)",
+ "es": "calcular la eficiencia de la caldera (gas y aceite)",
+ "pl": "obliczaj kotłów (gaz i olej)",
+ "uk": "розрахувати ефективність котла (газ і масло)",
+ "zh-cn": "(a) 计算碎片(气体和石油)"
+ },
+ "eff20": {
+ "en": "< 20°C",
+ "de": "< 20°C",
+ "ru": "<20 ° С",
+ "pt": "<20 °C",
+ "nl": "< 20°C",
+ "fr": "< 20°C",
+ "it": "< 20°C",
+ "es": "<20 °C",
+ "pl": "<20°C",
+ "zh-cn": "< 20°C"
+ },
+ "eff25": {
+ "en": "< 25°C",
+ "de": "< 25°C",
+ "ru": "<25 ° С",
+ "pt": "<25 °C",
+ "nl": "< 25°C",
+ "fr": "< 25°C",
+ "it": "< 25°C",
+ "es": "<25 °C",
+ "pl": "< 25°C",
+ "zh-cn": "< 25°C"
+ },
+ "eff30": {
+ "en": "< 30°C",
+ "de": "< 30°C",
+ "ru": "<30 ° С",
+ "pt": "<30 °C",
+ "nl": "< 30°C",
+ "fr": "< 30°C",
+ "it": "< 30°C",
+ "es": "<30 °C",
+ "pl": "< 30°C",
+ "zh-cn": "< 30°C"
+ },
+ "eff35": {
+ "en": "< 35°C",
+ "de": "< 35°C",
+ "ru": "<35 ° С",
+ "pt": "<35 °C",
+ "nl": "< 35°C",
+ "fr": "< 35°C",
+ "it": "< 35°C",
+ "es": "<35 °C",
+ "pl": "<35°C",
+ "zh-cn": "< 35°C"
+ },
+ "eff40": {
+ "en": "< 40°C",
+ "de": "< 40°C",
+ "ru": "<40 ° С",
+ "pt": "<40 °C",
+ "nl": "< 40°C",
+ "fr": "< 40°C",
+ "it": "< 40°C",
+ "es": "<40 °C",
+ "pl": "<40°C",
+ "zh-cn": "< 40°C"
+ },
+ "eff45": {
+ "en": "< 45°C",
+ "de": "< 45°C",
+ "ru": "<45 ° С",
+ "pt": "<45 °C",
+ "nl": "< 45°C",
+ "fr": "< 45°C",
+ "it": "< 45°C",
+ "es": "<45 °C",
+ "pl": "<45°C",
+ "zh-cn": "< 45°C"
+ },
+ "eff50": {
+ "en": "< 50°C",
+ "de": "< 50°C",
+ "ru": "<50 ° С",
+ "pt": "<50 °C",
+ "nl": "< 50°C",
+ "fr": "< 50°C",
+ "it": "< 50°C",
+ "es": "<50 °C",
+ "pl": "< 50°C",
+ "zh-cn": "< 50°C"
+ },
+ "eff55": {
+ "en": "< 55°C",
+ "de": "< 55°C",
+ "ru": "<55 ° С",
+ "pt": "<55 °C",
+ "nl": "< 55°C",
+ "fr": "< 55°C",
+ "it": "< 55°C",
+ "es": "<55 °C",
+ "pl": "<55°C",
+ "zh-cn": "< 55°C"
+ },
+ "eff60": {
+ "en": "< 60°C",
+ "de": "< 60°C",
+ "ru": "<60 ° С",
+ "pt": "<60 °C",
+ "nl": "< 60°C",
+ "fr": "< 60°C",
+ "it": "< 60°C",
+ "es": "<60 °C",
+ "pl": "< 60°C",
+ "zh-cn": "< 60°C"
+ },
+ "eff70": {
+ "en": "< 70°C",
+ "de": "< 70°C",
+ "ru": "<70 ° С",
+ "pt": "<70 °C",
+ "nl": "< 70°C",
+ "fr": "< 70°C",
+ "it": "< 70°C",
+ "es": "<70 °C",
+ "pl": "<70°C",
+ "zh-cn": "< 70°C"
+ },
+ "modulation": {
+ "en": "state modulation",
+ "de": "State Modulation",
+ "ru": "государственная модуляция",
+ "pt": "Modulação de estado",
+ "nl": "staat modulatie",
+ "fr": "modulation d'état",
+ "it": "modulazione di stato",
+ "es": "modulación de estado",
+ "pl": "modulacja stanu",
+ "zh-cn": "状态调制"
+ },
+ "supplytemp": {
+ "en": "state supplytemp",
+ "de": "State Vorlauftemp",
+ "ru": "состояние поставкиtemp",
+ "pt": "estado de abastecimentotemp",
+ "nl": "staat toevoertemp",
+ "fr": "état supplytemp",
+ "it": "statale temp",
+ "es": "estado suministrotemp",
+ "pl": "stan zasilania temp",
+ "zh-cn": "国家供应温度"
+ },
+ "returntemp": {
+ "en": "state returntemp",
+ "de": "State Rücklauftemp",
+ "ru": "состояние returntemp",
+ "pt": "estado returntemp",
+ "nl": "staat retourtemp",
+ "fr": "état retour temp",
+ "it": "stato ritorno temp",
+ "es": "estado temperatura retorno",
+ "pl": "stan powrotu temp",
+ "zh-cn": "状态返回温度"
+ },
+ "syslog": {
+ "en": "syslog server active?",
+ "de": "Syslog-Server aktiv?",
+ "ru": "сервер системного журнала активен?",
+ "pt": "servidor syslog ativo?",
+ "nl": "syslog-server actief?",
+ "fr": "serveur syslog actif ?",
+ "it": "server syslog attivo?",
+ "es": "servidor syslog activo?",
+ "pl": "serwer syslog jest aktywny?",
+ "zh-cn": "系统日志服务器活动?"
+ },
+ "syslog_port": {
+ "en": "syslog port",
+ "de": "Syslog-Port",
+ "ru": "порт системного журнала",
+ "pt": "porta syslog",
+ "nl": "syslog-poort",
+ "fr": "port syslog",
+ "it": "porta syslog",
+ "es": "puerto syslog",
+ "pl": "port dziennika systemowego",
+ "zh-cn": "系统日志端口"
+ },
+ "states_reorg": {
+ "en": "delete states on startup",
+ "de": "Löschen von States beim Start",
+ "ru": "удалить состояния на startup",
+ "pt": "excluir estados na inicialização",
+ "nl": "delete staten opstarten",
+ "fr": "supprimer les états de démarrage",
+ "it": "eliminare gli stati all'avvio",
+ "es": "eliminar estados en la startup",
+ "pl": "usunięte stany",
+ "uk": "видалити стани на стартапі",
+ "zh-cn": "删除开端国"
+ },
+ "states_undefined": {
+ "en": "create states for undefined telegrams",
+ "de": "States für undefinierte Telegramme erstellen",
+ "ru": "создавать состояния для неопределенных телеграмм",
+ "pt": "criar estados para telegramas indefinidos",
+ "nl": "maak staten voor ongedefinieerde telegrammen",
+ "fr": "créer des états pour les télégrammes non définis",
+ "it": "creare stati per telegrammi non definiti",
+ "es": "crear estados para telegramas indefinidos",
+ "pl": "tworzyć stany dla niezdefiniowanych telegramów",
+ "zh-cn": "为未定义的电报创建状态"
+ },
+ "heatdemand": {
+ "en": "Heatdemand calculation and control active",
+ "de": "Heizungsbedarf Berechnung und Kontrolle aktiv",
+ "ru": "Расчет тепла и контроль активных",
+ "pt": "Cálculo e controle de calor ativos",
+ "nl": "Heatdemand berekeningen en controle actief",
+ "fr": "Calcul et contrôle de la chaleur active",
+ "it": "Calcolo e controllo attivo",
+ "es": "Calculo y control de calor activo",
+ "pl": "Heatdemand oblicza i kontrola aktywna",
+ "uk": "Розрахунок тепла та контроль активності",
+ "zh-cn": "积极计算和控制"
+ },
+ "room": {
+ "en": "state attributes: room",
+ "de": "State Attribute: Raum",
+ "ru": "государственные атрибуты: комната",
+ "pt": "atributos de estado: quarto",
+ "nl": "de staat roept:",
+ "fr": "attributs d'état: chambre",
+ "it": "attributi di stato: camera",
+ "es": "atributos estatales: sala",
+ "pl": "atrybuty państwowe: pomieszczenie",
+ "uk": "атрибути держави: номер",
+ "zh-cn": "国家属性:会议室"
+ },
+ "function": {
+ "en": "state attributes: function",
+ "de": "State Attribute: Funktion",
+ "ru": "государственные атрибуты: функция",
+ "pt": "atributos de estado: função",
+ "nl": "staatsaanklachten:",
+ "fr": "attributs d'état: fonction",
+ "it": "attributi di stato: funzione",
+ "es": "atributos estatales: función",
+ "pl": "atrybuty państwowe: funkcja",
+ "uk": "атрибути стану: функція",
+ "zh-cn": "国情:职能"
+ }
+};
\ No newline at end of file