iobroker.sonoff 3.2.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +95 -149
  3. package/admin/i18n/de.json +89 -0
  4. package/admin/i18n/en.json +89 -0
  5. package/admin/i18n/es.json +89 -0
  6. package/admin/i18n/fr.json +89 -0
  7. package/admin/i18n/it.json +89 -0
  8. package/admin/i18n/nl.json +89 -0
  9. package/admin/i18n/pl.json +89 -0
  10. package/admin/i18n/pt.json +89 -0
  11. package/admin/i18n/ru.json +89 -0
  12. package/admin/i18n/uk.json +89 -0
  13. package/admin/i18n/zh-cn.json +89 -0
  14. package/admin/jsonConfig.json +394 -125
  15. package/build/lib/bridge.js +512 -0
  16. package/build/lib/bridge.js.map +1 -0
  17. package/build/lib/checkStates.js +68 -0
  18. package/build/lib/checkStates.js.map +1 -0
  19. package/build/lib/datapoints.js +430 -0
  20. package/build/lib/datapoints.js.map +1 -0
  21. package/build/lib/mqttBase.js +1280 -0
  22. package/build/lib/mqttBase.js.map +1 -0
  23. package/build/lib/server.js +485 -0
  24. package/build/lib/server.js.map +1 -0
  25. package/build/main.js +103 -0
  26. package/build/main.js.map +1 -0
  27. package/io-package.json +64 -43
  28. package/package.json +23 -19
  29. package/admin/i18n/de/translations.json +0 -54
  30. package/admin/i18n/en/translations.json +0 -54
  31. package/admin/i18n/es/translations.json +0 -54
  32. package/admin/i18n/fr/translations.json +0 -54
  33. package/admin/i18n/it/translations.json +0 -54
  34. package/admin/i18n/nl/translations.json +0 -54
  35. package/admin/i18n/pl/translations.json +0 -54
  36. package/admin/i18n/pt/translations.json +0 -54
  37. package/admin/i18n/ru/translations.json +0 -54
  38. package/admin/i18n/uk/translations.json +0 -54
  39. package/admin/i18n/zh-cn/translations.json +0 -54
  40. package/admin/index.html +0 -177
  41. package/admin/index_m.html +0 -218
  42. package/admin/words.js +0 -63
  43. package/lib/datapoints.js +0 -216
  44. package/lib/server.js +0 -1810
  45. package/main.js +0 -99
@@ -1,218 +0,0 @@
1
- <html>
2
- <head>
3
- <!-- Materialze style -->
4
- <link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
5
- <link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
6
-
7
- <script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
8
- <script type="text/javascript" src="../../socket.io/socket.io.js"></script>
9
-
10
- <script type="text/javascript" src="../../js/translate.js"></script>
11
- <script type="text/javascript" src="../../lib/js/materialize.js"></script>
12
- <script type="text/javascript" src="../../js/adapter-settings.js"></script>
13
- <script type="text/javascript" src="words.js"></script>
14
-
15
- <script type="text/javascript">
16
- var onChange;
17
- var secret;
18
-
19
- function encrypt(key, value) {
20
- var result = '';
21
- for(var i = 0; i < value.length; ++i) {
22
- result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));
23
- }
24
- return result;
25
- }
26
-
27
- function decrypt(key, value) {
28
- var result = '';
29
- for(var i = 0; i < value.length; ++i) {
30
- result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));
31
- }
32
- return result;
33
- }
34
-
35
- function setValue(id, value) {
36
- var $value = $('#' + id + '.value');
37
- if ($value.attr('type') === 'checkbox') {
38
- $value.prop('checked', value).on('change', function () {
39
- onChange();
40
- });
41
- } else {
42
- $value.val(value).on('change', function () {
43
- onChange();
44
- }).keyup(function () {
45
- onChange();
46
- });
47
- }
48
- }
49
-
50
- function loadHelper(settings, param, subparam) {
51
- if (!settings) return;
52
-
53
- if (settings.useChunkPatch === undefined) settings.useChunkPatch = false;
54
- if (settings.timeout === undefined) settings.timeout = 300;
55
-
56
- for (var key in settings) {
57
- if (!settings.hasOwnProperty(key)) continue;
58
- if (key === 'pass') {
59
- settings[key] = decrypt(secret, settings[key]);
60
- }
61
- setValue(key, settings[key]);
62
- }
63
- $('#pass_confirm').val(settings.pass).on('change', function () {
64
- onChange();
65
- }).keyup(function () {
66
- onChange();
67
- });
68
- }
69
-
70
- // the function loadSettings has to exist ...
71
- function load(settings, _onChange) {
72
- onChange = _onChange;
73
- socket.emit('getObject', 'system.config', function (err, obj) {
74
- secret = (obj.native ? obj.native.secret : '') || 'Zgfr56gFe87jJOM';
75
- loadHelper(settings);
76
-
77
- getIPs(function (ips) {
78
- for (var i = 0; i < ips.length; i++) {
79
- $('#bind').append('<option value="' + ips[i].address + '">' + ips[i].name + '</option>');
80
- }
81
- $('#bind.value').val(settings.bind).select();
82
- });
83
-
84
- M.updateTextFields();
85
- });
86
-
87
- onChange(false);
88
- }
89
-
90
- function getSettings() {
91
- var obj = {};
92
- $('.value').each(function () {
93
- var $this = $(this);
94
- var id = $this.attr('id');
95
-
96
- if ($this.attr('type') === 'checkbox') {
97
- obj[id] = $this.prop('checked');
98
- } else {
99
- var value = $this.val();
100
- if (id === 'pass') {
101
- value = encrypt(secret, value);
102
- }
103
- obj[id] = value;
104
- }
105
- });
106
- return obj;
107
- }
108
-
109
- function save(callback) {
110
- if ($('#pass').val() !== $('#pass_confirm').val()) {
111
- return showMessage(_('Password confirmation is not equal with password'));
112
- }
113
-
114
- callback(getSettings());
115
- }
116
- </script>
117
- <style>
118
- .adapter-container>div {
119
- margin-bottom: 0 !important;
120
- }
121
- .page {
122
- height: calc(100% - 50px) !important;
123
- }
124
- .marg {
125
- margin-top: 5em;
126
- }
127
- </style>
128
- </head>
129
- <body>
130
- <form autocomplete="off" method="post" action="">
131
- <div class="m adapter-container">
132
- <div class="row">
133
- <div class="col s12">
134
- <div class="row">
135
- <div class="col s6">
136
- <img src="sonoff.png" class="logo" alt="logo"/>
137
- </div>
138
- </div>
139
- <div class="row">
140
- <div class="col s12">
141
- <h6 class="title translate">Connection settings</h6>
142
- </div>
143
- </div>
144
- <div class="row">
145
- <div class="col s12 m8 l5 input-field">
146
- <select class="value" id="bind"></select>
147
- <label class="translate" for="bind">IP</label>
148
- </div>
149
- </div>
150
- <div class="row">
151
- <div class="input-field col s6 m4 l2">
152
- <input id="port" type="number" min="1" max="65565" class="value"/>
153
- <label class="translate" for="port">Port:</label>
154
- </div>
155
- <div class="input-field col s6 m4 l2">
156
- <input id="timeout" type="number" min="1" max="99999" class="value"/>
157
- <label class="translate" for="timeout">Client timeout (sec):</label>
158
- </div>
159
- </div>
160
- <div class="row">
161
- <div class="col s12">
162
- <h6 class="title translate">Authentication settings</h6>
163
- </div>
164
- </div>
165
- <div class="row">
166
- <div class="input-field col s6 m4">
167
- <input id="user" autocomplete="new-password" type="text" class="value"/>
168
- <label class="translate" for="user">User:</label>
169
- </div>
170
- <div class="input-field col s6 m4">
171
- <input id="pass" autocomplete="new-password" type="password" class="value"/>
172
- <label class="translate" for="pass">Password:</label>
173
- </div>
174
- <div class="input-field col s6 m4">
175
- <input id="pass_confirm" autocomplete="new-password" type="password" />
176
- <label class="translate" for="pass_confirm">Password confirmation:</label>
177
- </div>
178
- </div>
179
- <div class="row">
180
- <div class="col s12">
181
- <h6 class="title translate">Auto creation of states</h6>
182
- </div>
183
- </div>
184
- <div class="row">
185
- <div class="input-field col s6 m4">
186
- <input id="TELE_SENSOR" type="checkbox" class="value"/>
187
- <span class="translate" for="TELE_SENSOR">For tele/SENSOR</span>
188
- </div>
189
- <div class="input-field col s6 m4">
190
- <input id="TELE_STATE" type="checkbox" class="value"/>
191
- <span class="translate" for="TELE_STATE">For tele/STATE</span>
192
- </div>
193
- <div class="input-field col s6 m4">
194
- <input id="STAT_RESULT" type="checkbox" class="value"/>
195
- <span class="translate" for="STAT_RESULT">For stat/RESULT</span>
196
- </div>
197
- <div class="input-field col s6 m4">
198
- <input id="OBJ_TREE" type="checkbox" class="value"/>
199
- <span class="translate" for="OBJ_TREE">Create object tree (WARNING! Check README.md!)</span>
200
- </div>
201
- </div>
202
- <div class="row">
203
- <div class="col s12">
204
- <h6 class="title translate">Connection settings</h6>
205
- </div>
206
- </div>
207
- <div class="row">
208
- <div class="input-field col s6 m4">
209
- <input id="ignorePings" type="checkbox" class="value"/>
210
- <span class="translate" for="ignorePings">Ignore warnings with pingreq</span>
211
- </div>
212
- </div>
213
- </div>
214
- </div>
215
- </div>
216
- </form>
217
- </body>
218
- </html>
package/admin/words.js DELETED
@@ -1,63 +0,0 @@
1
- /*global systemDictionary:true */
2
- /*
3
- +===================== DO NOT MODIFY ======================+
4
- | This file was generated by translate-adapter, please use |
5
- | `translate-adapter adminLanguages2words` to update it. |
6
- +===================== DO NOT MODIFY ======================+
7
- */
8
- 'use strict';
9
-
10
- systemDictionary = {
11
- "Adapter settings": { "en": "Sonoff settings", "de": "Sonoff Einstellungen", "ru": "Настройки Sonoff", "pt": "Configurações de Sonoff", "nl": "Configurações de Sonoff", "fr": "Paramètres Sonoff", "it": "Impostazioni Sonoff", "es": "Configuraciones Sonoff", "pl": "Ustawienia Sonoff", "uk": "Налаштування Sonoff", "zh-cn": "Sonoff设置"},
12
- "Authentication settings": { "en": "Authentication settings", "de": "Authentifizierungseinstellungen", "ru": "Настройки аутентификации", "pt": "Configurações de autenticação", "nl": "Configurações de autenticação", "fr": "Paramètres d'authentification", "it": "Impostazioni di autenticazione", "es": "Configuraciones de autenticación", "pl": "Ustawienia uwierzytelniania", "uk": "Налаштування автентифікації", "zh-cn": "验证设定"},
13
- "Auto creation of states": { "en": "Auto creation of states", "de": "Automatische Erstellung von Zuständen", "ru": "Auto creation of states", "pt": "Criação automática de estados", "nl": "Automatisch creëren van staten", "fr": "Création automatique d'états", "it": "Creazione automatica di stati", "es": "Creación automática de estados", "pl": "Automatyczne tworzenie stanów", "uk": "Автоматичне створення станів", "zh-cn": "自动创建状态"},
14
- "Chained certificate:": { "en": "Chained certificate", "de": "Verkettetes Zertifikat", "ru": "'Chained' сертификат", "pt": "Certificado acorrentado", "nl": "Certificado acorrentado", "fr": "Certificat chaîné", "it": "Certificato incatenato", "es": "Certificado encadenado", "pl": "Przykuty certyfikat", "uk": "Прикутий сертифікат", "zh-cn": "连锁证书"},
15
- "Client": { "en": "Client/subscriber", "de": "Client/subscriber", "ru": "Клиент/подписчик", "pt": "Cliente / assinante", "nl": "Cliente/assinante", "fr": "Client/abonné", "it": "Client/abbonato", "es": "Cliente/suscriptor", "pl": "Klient / subskrybent", "uk": "Клієнт/абонент", "zh-cn": "客户/订户"},
16
- "Client ID:": { "en": "Client ID", "de": "Client ID", "ru": "ID Клиента", "pt": "ID do Cliente", "nl": "ID do Cliente", "fr": "identité du client", "it": "Identificativo cliente", "es": "Identificación del cliente", "pl": "Identyfikator klienta", "uk": "ID клієнта", "zh-cn": "客户编号"},
17
- "Connection": { "en": "Connection", "de": "Verbindung", "ru": "Соединение", "pt": "Conexão", "nl": "Conexão", "fr": "Connexion", "it": "Connessione", "es": "Conexión", "pl": "Połączenie", "uk": "Підключення", "zh-cn": "连接"},
18
- "Connection settings": { "en": "Connection settings", "de": "Verbindungseinstellungen", "ru": "Настройки соединения", "pt": "Configurações de conexão", "nl": "Configurações de conexão", "fr": "Paramètres de connexion", "it": "Impostazioni di connessione", "es": "Configuración de conexión", "pl": "Ustawienia połączenia", "uk": "Налаштування підключення", "zh-cn": "连接设定"},
19
- "Divided by comma": { "en": "Divided by comma, e.g. 'mqtt/0/#,javascript/#'", "de": "Mit Komma getrennt, z.B 'mqtt/0/#,javascript/#'", "ru": "Использовать запятую, как разделитеть. Например 'mqtt/0/#,javascript/#'", "pt": "Dividido por vírgula, e. 'mqtt / 0 / #, javascript / #'", "nl": "Dividido por vírgula, e. 'mqtt/0/#, javascript/#'", "fr": "Divisé par une virgule, par ex. 'mqtt/0/#, javascript/#'", "it": "Diviso in virgola, ad es. 'MQTT/0/#, JavaScript/#'", "es": "Dividido por coma, p. 'mqtt/0/#, javascript/#'", "pl": "Podzielone przecinkiem, np. \"mqtt / 0 / #, javascript / # '", "uk": "Розділяється комою, напр. 'mqtt/0/#,javascript/#'", "zh-cn": "除以逗号,例如 'mqtt/0/#,javascript/#'"},
20
- "For stat/RESULT": { "en": "For stat/RESULT", "de": "Für stat/RESULT", "ru": "Для stat/RESULT", "pt": "Para stat/RESULT", "nl": "Voor stat/RESULT", "fr": "Pour stat/RESULT", "it": "Per stat/RESULT", "es": "Por stat/RESULT", "pl": "Dla stat/RESULT", "uk": "Для статистики/РЕЗУЛЬТАТУ", "zh-cn": "对于统计/结果"},
21
- "For tele/SENSOR": { "en": "For tele/SENSOR", "de": "Für tele/SENSOR", "ru": "Для tele/SENSOR", "pt": "Para tele/SENSOR", "nl": "Voor tele/SENSOR", "fr": "Pour tele/SENSOR", "it": "Per tele/SENSOR", "es": "Por tele/SENSOR", "pl": "Dla tele/SENSOR", "uk": "Для теле/сенсора", "zh-cn": "对于电话/传感器"},
22
- "For tele/STATE": { "en": "For tele/STATE", "de": "Für tele/STATE", "ru": "Для tele/STATE", "pt": "Para tele/STATE", "nl": "Voor tele/STATE", "fr": "Pour tele/STATE", "it": "Per tele/STATE", "es": "Por tele/STATE", "pl": "Dla tele/STATE", "uk": "Для теле/ДЕРЖ", "zh-cn": "对于电话/状态"},
23
- "IP": { "en": "IP", "de": "IP-Adresse", "ru": "IP", "pt": "IP", "nl": "IP", "fr": "IP", "it": "IP", "es": "IP", "pl": "IP", "uk": "IP", "zh-cn": "IP"},
24
- "Ignore warnings with pingreq": { "en": "Ignore warnings with pingreq", "de": "Warnungen mit pingreq ignorieren", "ru": "Игнорировать предупреждения с помощью pingreq", "pt": "Ignore os avisos com pingreq", "nl": "Negeer waarschuwingen met pingreq", "fr": "Ignorer les avertissements avec pingreq", "it": "Ignora gli avvisi con pingreq", "es": "Ignore las advertencias con pingreq", "pl": "Ignoruj ​​ostrzeżenia za pomocą polecenia pingreq", "uk": "Ігноруйте попередження за допомогою pingreq", "zh-cn": "忽略pingreq警告"},
25
- "Interval before send topics by connection:": { "en": "Interval before send topics by connection", "de": "Interval vom Senden von allen Topics bei der Verbindung", "ru": "Интервал перед отсылкой всей топиков после соединения", "pt": "Intervalo antes de enviar tópicos por conexão", "nl": "Intervalo antes de enviar tópicos por conexão", "fr": "Intervalle avant d'envoyer des sujets par connexion", "it": "Intervallo prima di inviare argomenti per connessione", "es": "Intervalo antes de enviar temas por conexión", "pl": "Interwał przed wysłaniem tematów według połączenia", "uk": "Інтервал перед надсиланням тем за підключенням", "zh-cn": "通过连接发送主题之前的时间间隔"},
26
- "Main settings": { "en": "Main settings", "de": "Haupteinstellungen", "ru": "Основные настройки", "pt": "Configurações principais", "nl": "Configurações principais", "fr": "Réglages principaux", "it": "Impostazioni principali", "es": "Ajustes principales", "pl": "Ustawienia główne", "uk": "Основні налаштування", "zh-cn": "主要设定"},
27
- "Mask to publish": { "en": "e.g. 'mqtt.0.*,javascript.*'", "de": "z.B 'mqtt.0.*,javascript.*'", "ru": "Использовать запятую, как разделитеть. Например 'mqtt.0.*,javascript.*'", "pt": "por exemplo. 'mqtt.0. *, javascript. *'", "nl": "por exemplo. 'mqtt.0.*, javascript.*'", "fr": "par exemple. 'mqtt.0.*, javascript.*'", "it": "per esempio. 'Mqtt.0. *, Javascript. *'", "es": "p.ej. 'mqtt.0.*, javascript.*'", "pl": "na przykład \"mqtt.0. *, javascript. *\"", "uk": "напр. 'mqtt.0.*,javascript.*'", "zh-cn": "例如 'mqtt.0.*,javascript.*'"},
28
- "Mask to publish own states:": { "en": "Mask to publish own states", "de": "Maske für Bekanntgeben von eigenen States", "ru": "Маска для собственных значений", "pt": "Máscara para publicar estados próprios", "nl": "Máscara para publicar estados próprios", "fr": "Masque pour publier ses propres états", "it": "Maschera per pubblicare i propri stati", "es": "Máscara para publicar estados propios", "pl": "Maskuj, aby publikować własne stany", "uk": "Маска для публікації власних станів", "zh-cn": "遮罩以发布自己的状态"},
29
- "Max topic length:": { "en": "Max topic name length", "de": "Maximale Topicnamelänge", "ru": "Максимальная длина имени топика", "pt": "Nome máximo do nome do tópico", "nl": "Nome máximo do nome do tópico", "fr": "Longueur maximale du nom de la rubrique", "it": "Lunghezza massima del nome dell'argomento", "es": "Longitud máxima del nombre del tema", "pl": "Maksymalna długość nazwy tematu", "uk": "Максимальна довжина назви теми", "zh-cn": "主题名称的最大长度"},
30
- "Password confirmation:": { "en": "Password confirmation", "de": "Passwort-Wiederholung", "ru": "Подтверждение пароля", "pt": "ConfirmaÇão Da Senha", "nl": "ConfirmaÇão Da Senha", "fr": "Confirmation mot de passe", "it": "conferma password", "es": "confirmación de contraseña", "pl": "Potwierdzenie hasła", "uk": "Підтвердження паролю", "zh-cn": "确认密码"},
31
- "Password:": { "en": "Password", "de": "Passwort", "ru": "Пароль", "pt": "Senha", "nl": "Senha", "fr": "Mot de passe", "it": "Parola d'ordine", "es": "Contraseña", "pl": "Hasło", "uk": "Пароль", "zh-cn": "密码"},
32
- "Patterns:": { "en": "Subscribe patterns", "de": "Subscribe patterns", "ru": "Шаблоны подписки", "pt": "Assinar padrões", "nl": "Assinar padrões", "fr": "Modèles de souscription", "it": "Iscriviti modelli", "es": "Suscribir patrones", "pl": "Wzorce subskrypcji", "uk": "Підписатися на шаблони", "zh-cn": "订阅模式"},
33
- "Port:": { "en": "Port", "de": "Port", "ru": "Порт", "pt": "Porta", "nl": "Porta", "fr": "Port", "it": "Porta", "es": "Puerto", "pl": "Port", "uk": "Порт", "zh-cn": "港口"},
34
- "Prefix for topics:": { "en": "Prefix for all topics", "de": "Prefix für alle Topics", "ru": "Префикс для всех значений", "pt": "Prefix para todos os tópicos", "nl": "Prefix para todos os tópicos", "fr": "Préfixe pour tous les sujets", "it": "Prefisso per tutti gli argomenti", "es": "Prefijo para todos los temas", "pl": "Prefiks dla wszystkich tematów", "uk": "Префікс для всіх тем", "zh-cn": "所有主题的前缀"},
35
- "Private certificate:": { "en": "Private certificate", "de": "Privates Zertifikat", "ru": "'Private' сертификат", "pt": "Certificado privado", "nl": "Certificado privado", "fr": "Certificat privé", "it": "Certificato privato", "es": "Certificado privado", "pl": "Prywatny certyfikat", "uk": "Приватний сертифікат", "zh-cn": "私人证书"},
36
- "Public certificate:": { "en": "Public certificate", "de": "Publikzertifikat", "ru": "'Public' сертификат", "pt": "Certificado público", "nl": "Certificado público", "fr": "Certificat public", "it": "Certificato pubblico", "es": "Certificado público", "pl": "Certyfikat publiczny", "uk": "Публічний сертифікат", "zh-cn": "公开证书"},
37
- "Publish all states at start:": { "en": "Publish own states on connect", "de": "Bekanntgeben eigene States beim Verbinden", "ru": "Выдавать собственные значения при старте", "pt": "Publique seus próprios estados na conexão", "nl": "Publique seus próprios estados na conexão", "fr": "Publier ses propres états sur se connecter", "it": "Pubblica i tuoi stati sulla connessione", "es": "Publicar estados propios al conectar", "pl": "Opublikuj własne stany przy połączeniu", "uk": "Публікуйте власні стани на підключенні", "zh-cn": "在连接上发布自己的状态"},
38
- "Publish states on subscribe:": { "en": "Publish states on subscribe", "de": "Bekanntgeben von States bei Subscribe", "ru": "Публиковать состояния при подписке", "pt": "Publique estados na assinatura", "nl": "Publique estados na assinatura", "fr": "Publier les états sur l'abonnement", "it": "Pubblica stati su iscriviti", "es": "Publicar estados al suscribirse", "pl": "Opublikuj stany w subskrypcji", "uk": "Публікувати стани на підписці", "zh-cn": "发布订阅状态"},
39
- "Result: ": { "en": "Result ", "de": "Ergebnis ", "ru": "Результат ", "pt": "Resultado", "nl": "Resultado", "fr": "Résultat", "it": "Risultato", "es": "Resultado", "pl": "Wynik", "uk": "Результат", "zh-cn": "结果"},
40
- "Secure:": { "en": "Secure", "de": "SSL", "ru": "SSL", "pt": "Seguro", "nl": "Seguro", "fr": "Garantir", "it": "Sicuro", "es": "Seguro", "pl": "Bezpieczne", "uk": "Безпечний", "zh-cn": "安全"},
41
- "Send interval:": { "en": "Send interval", "de": "Sendeintervall", "ru": "Интервал между пакетами", "pt": "Intervalo de envio", "nl": "Intervalo de envio", "fr": "Envoyer un intervalle", "it": "Invia intervallo", "es": "Intervalo de envío", "pl": "Interwał wysyłania", "uk": "Інтервал надсилання", "zh-cn": "发送间隔"},
42
- "Send states (ack=true) too:": { "en": "Send states (ack=true) too", "de": "Sende auch Zustände (ack=true)", "ru": "Посылать не только команды, но и состояния (ack=true)", "pt": "Enviar estados (ack = true) também", "nl": "Enviar estados (ack = true) também", "fr": "Envoyer des états (ack = true) aussi", "it": "Invia stati (ack = true) anche", "es": "Enviar estados (ack = true) también", "pl": "Wyślij także stany (ack = true)", "uk": "Стани надсилання (ack=true) теж", "zh-cn": "也发送状态(ack=true)"},
43
- "Server": { "en": "Server/broker", "de": "Server/broker", "ru": "Сервер/брокер", "pt": "Servidor / corretor", "nl": "Servidor/corretor", "fr": "Serveur/courtier", "it": "Server/mediatore", "es": "Servidor/intermediario", "pl": "Serwer / broker", "uk": "Сервер/брокер", "zh-cn": "服务器/经纪人"},
44
- "Set certificates or load it first in the system settings (right top).": {"en": "Set certificates or load it first in the system settings (right top).", "de": "Setze Zertificate oder lade die erst unter System/Einstellungen (oben rechts).", "ru": "Нужно выбрать сертификаты или сначала загрузить их в системных настройках (вверху справа).", "pt": "Defina certificados ou carregue primeiro nas configurações do sistema (parte superior direita).", "nl": "Defina certificados ou carregue primeiro nas configurações do sistema (parte superior direita).", "fr": "Définissez des certificats ou chargez-les d'abord dans les paramètres du système (en haut à droite).", "it": "Imposta i certificati o caricali prima nelle impostazioni di sistema (in alto a destra).", "es": "Establezca certificados o cárguelos primero en la configuración del sistema (arriba a la derecha).", "pl": "Ustaw certyfikaty lub załaduj najpierw w ustawieniach systemu (prawy górny).", "uk": "Спершу встановіть сертифікати або завантажте їх у налаштуваннях системи (справа вгорі).", "zh-cn": "设置证书或先将其加载到系统设置中(右上角)。"},
45
- "Sonoff Settings": { "en": "Sonoff Settings", "de": "Sonoff Einstellungen", "ru": "Настройки Sonoff", "pt": "Configurações de Sonoff", "nl": "Configurações de Sonoff", "fr": "Paramètres Sonoff", "it": "Impostazioni Sonoff", "es": "Configuraciones Sonoff", "pl": "Ustawienia Sonoff", "uk": "Налаштування Sonoff", "zh-cn": "Sonoff设置"},
46
- "Sonoff adapter settings": { "en": "Sonoff adapter settings", "de": "Sonoff Adapter-Einstellungen", "ru": "Настройки драйвера Sonoff", "pt": "Configurações do adaptador Sonoff", "nl": "Configurações do adaptador Sonoff", "fr": "Paramètres de l'adaptateur Sonoff", "it": "Impostazioni dell'adattatore Sonoff", "es": "Configuraciones del adaptador Sonoff", "pl": "Ustawienia adaptera Sonoff", "uk": "Налаштування адаптера Sonoff", "zh-cn": "Sonoff适配器设置"},
47
- "Store only on change:": { "en": "Publish/update only in case of change", "de": "Publizieren/Aktualisieren nur im Falle einer Änderung", "ru": "Отсылать только изменения", "pt": "Publique apenas na mudança", "nl": "Publique apenas na mudança", "fr": "Publier uniquement en cas de modification", "it": "Pubblica solo sul cambiamento", "es": "Publicar solo en el cambio", "pl": "Opublikuj tylko w przypadku zmiany", "uk": "Публікувати/оновлювати лише у разі зміни", "zh-cn": "仅在更改时发布"},
48
- "Test connection": { "en": "Test connection with Server", "de": "Teste Verbindung zum Server", "ru": "Проверить настройки", "pt": "Teste a conexão com o Servidor", "nl": "Teste a conexão com o Servidor", "fr": "Tester la connexion avec le serveur", "it": "Verifica la connessione con il server", "es": "Prueba de conexión con el servidor", "pl": "Sprawdź połączenie z serwerem", "uk": "Перевірте з'єднання з сервером", "zh-cn": "测试与服务器的连接"},
49
- "Trace output for every message:": { "en": "Trace output for every message", "de": "Trace Ausgabe für jede Meldung", "ru": "Вывод лога для каждого изменения", "pt": "Saída de rastreamento para cada mensagem", "nl": "Saída de rastreamento para cada mensagem", "fr": "Trace de sortie pour chaque message", "it": "Traccia l'output per ogni messaggio", "es": "Salida de seguimiento para cada mensaje", "pl": "Dane wyjściowe śledzenia dla każdej wiadomości", "uk": "Виведення трасування для кожного повідомлення", "zh-cn": "跟踪每条消息的输出"},
50
- "Type:": { "en": "Type", "de": "Typ", "ru": "Тип", "pt": "Tipo", "nl": "Tipo", "fr": "Type", "it": "genere", "es": "Tipo", "pl": "Rodzaj", "uk": "Тип", "zh-cn": "类型"},
51
- "URL:": { "en": "URL", "de": "URL", "ru": "URL", "pt": "URL", "nl": "URL", "fr": "URL", "it": "URL", "es": "URL", "pl": "URL", "uk": "URL", "zh-cn": "网址"},
52
- "Use WebSockets:": { "en": "Use WebSockets too", "de": "Benutze auch WebSockets", "ru": "Сервер WebSockets тоже", "pt": "Use também WebSockets", "nl": "Use também WebSockets", "fr": "Utilisez aussi WebSockets", "it": "Utilizza anche WebSockets", "es": "Use WebSockets también", "pl": "Użyj także WebSockets", "uk": "Також використовуйте WebSockets", "zh-cn": "也使用WebSockets"},
53
- "Use chunk patch:": { "en": "Use chunk patch", "de": "Benutze Patch für Chunking", "ru": "Использовать заплатку для Chunking", "pt": "Use patch de pedaços", "nl": "Use patch de pedaços", "fr": "Utiliser un patch de morceau", "it": "Usa patch pezzo", "es": "Use el fragmento de fragmento", "pl": "Użyj poprawki kawałka", "uk": "Використовуйте chunk patch", "zh-cn": "使用大块补丁"},
54
- "Use different topic names for set and get:": { "en": "Use different topic names for set and get", "de": "Unterschiedliche Namen für setzten und lesen", "ru": "Использовать разные имена для чтения и записи", "pt": "Use nomes de tópicos diferentes para definir e obter", "nl": "Use nomes de tópicos diferentes para definir e obter", "fr": "Utilisez différents noms de sujet pour définir et obtenir", "it": "Usa diversi nomi di argomenti per impostare e ottenere", "es": "Use diferentes nombres de tema para establecer y obtener", "pl": "Używaj różnych nazw tematów do ustawiania i pobierania", "uk": "Використовуйте різні назви тем для set і get", "zh-cn": "使用不同的主题名称进行设置和获取"},
55
- "User:": { "en": "User", "de": "Benutzer", "ru": "Имя пользователя", "pt": "Utilizador", "nl": "Do utilizador", "fr": "Utilisateur", "it": "Utente", "es": "Usuario", "pl": "Użytkownik", "uk": "Користувач", "zh-cn": "用户"},
56
- "chars": { "en": "chars", "de": "Symbolen", "ru": "символов", "pt": "caracteres", "nl": "caracteres", "fr": "chars", "it": "caratteri", "es": "caracteres", "pl": "znaki", "uk": "символи", "zh-cn": "字符"},
57
- "connected": { "en": "connected", "de": "verbunden", "ru": "успешно", "pt": "conectado", "nl": "conectado", "fr": "connecté", "it": "collegato", "es": "conectado", "pl": "połączony", "uk": "підключений", "zh-cn": "连接的"},
58
- "ms": { "en": "ms", "de": "ms", "ru": "мс", "pt": "Senhora", "nl": "Senhora", "fr": "Mme", "it": "Signorina", "es": "Sra", "pl": "ms", "uk": "РС", "zh-cn": "毫秒"},
59
- "Client timeout": { "en": "Client timeout", "de": "Client-Timeout", "ru": "Время ожидания клиента", "pt": "Tempo limite do cliente", "nl": "Client time-out", "fr": "Délai d'expiration du client", "it": "Timeout del cliente", "es": "tiempo de espera del cliente", "pl": "Limit czasu klienta", "uk": "Час очікування клієнта", "zh-cn": "客户端超时"},
60
- "Create object tree": { "en": "Create object tree", "de": "Objektbaum erstellen", "ru": "Создать дерево объектов", "pt": "Criar árvore de objetos", "nl": "Maak een objectboom", "fr": "Créer une arborescence d'objets", "it": "Crea l'albero degli oggetti", "es": "Crear árbol de objetos", "pl": "Utwórz drzewo obiektów", "uk": "Створення дерева об'єктів", "zh-cn": "创建对象树"},
61
- "WARNING! Check README.md!": { "en": "WARNING! Check README.md!", "de": "WARNUNG! Überprüfen Sie README.md!", "ru": "ПРЕДУПРЕЖДЕНИЕ! Проверьте README.md!", "pt": "AVISO! Verifique README.md!", "nl": "WAARSCHUWING! Controleer README.md!", "fr": "AVERTISSEMENT! Vérifiez README.md!", "it": "AVVERTIMENTO! Controlla README.md!", "es": "¡ADVERTENCIA! ¡Compruebe README.md!", "pl": "OSTRZEŻENIE! Sprawdź README.md!", "uk": "УВАГА! Перевірте README.md!", "zh-cn": "警告!检查 README.md!"},
62
- "Other settings": { "en": "Other settings", "de": "Andere Einstellungen", "ru": "Другие настройки", "pt": "Outros ajustes", "nl": "Andere instellingen", "fr": "Autres réglages", "it": "Altre impostazioni", "es": "Otros ajustes", "pl": "Inne ustawienia", "uk": "Інші налаштування", "zh-cn": "其他设置"},
63
- };
package/lib/datapoints.js DELETED
@@ -1,216 +0,0 @@
1
- module.exports = {
2
- 'Approx. Altitude': {type: 'number', role: 'value.altitude', read: true, write: false, unit: 'm'},
3
- 'PM2.5': {type: 'number', role: 'value', read: true, write: false, unit: 'ug/m3'},
4
- A0: {type: 'number', role: 'value', read: true, write: false},
5
- A1: {type: 'number', role: 'value', read: true, write: false},
6
- A2: {type: 'number', role: 'value', read: true, write: false},
7
- A3: {type: 'number', role: 'value', read: true, write: false},
8
- Ap: {type: 'number', role: 'value', read: true, write: false},
9
- APMac: {type: 'number', role: 'state', read: true, write: false},
10
- Action: {type: 'string', role: 'value', read: true, write: true},
11
- AirQuality: {type: 'number', role: 'value', read: true, write: false, unit: '%'},
12
- ANALOG: {type: 'object', role: 'state', read: true, write: false},
13
- Analog0: {type: 'number', role: 'value', read: true, write: false},
14
- Analog1: {type: 'number', role: 'value', read: true, write: false},
15
- Analog2: {type: 'number', role: 'value', read: true, write: false},
16
- Analog3: {type: 'number', role: 'value', read: true, write: false},
17
- ApparentPower: {type: 'number', role: 'value.power.consumption', read: true, write: false, unit: 'VA'},
18
- Arm: {type: 'number', role: 'value', read: true, write: true},
19
- BSSId: {type: 'string', role: 'state', read: true, write: false},
20
- BatteryPercentage: {type: 'number', role: 'value', read: true, write: false, unit: '%'},
21
- BatteryVoltage:{type: 'number', role: 'value.voltage', read: true, write: false, unit: 'V'},
22
- Bits: {type: 'number', role: 'value', read: true, write: false},
23
- Blue: {type: 'number', role: 'level.color.blue', read: true, write: true, min: 0, max: 100},
24
- Boiler: {type: 'number', role: 'value.temperature', read: true, write: false, unit: '°C'},
25
- Burner: {type: 'number', role: 'value', read: true, write: false},
26
- C1: {type: 'number', role: 'value', read: true, write: false},
27
- C2: {type: 'number', role: 'value', read: true, write: false},
28
- C3: {type: 'number', role: 'value', read: true, write: false},
29
- C4: {type: 'number', role: 'value', read: true, write: false},
30
- CT: {type: 'number', role: 'level.color.temp', read: true, write: true},
31
- CW: {type: 'number', role: 'level.color.coldwhite', read: true, write: true},
32
- CW_POWER: {type: 'boolean', role: 'switch.light', read: true, write: true, storeMap: true},
33
- CarbonDioxide: {type: 'number', role: 'value.CO2', read: true, write: false, unit: 'ppm'},
34
- Channel: {type: 'number', role: 'level', read: true, write: true},
35
- Collector: {type: 'number', role: 'value.temperature', read: true, write: false, unit: '°C'},
36
- Color: {type: 'string', role: 'level.color.rgb', read: true, write: true},
37
- Counter1: {type: 'number', role: 'value', read: true, write: false},
38
- Counter2: {type: 'number', role: 'value', read: true, write: false},
39
- Counter3: {type: 'number', role: 'value', read: true, write: false},
40
- Counter4: {type: 'number', role: 'value', read: true, write: false},
41
- Current: {type: 'number', role: 'value.current', read: true, write: false, unit: 'A'},
42
- CurrentNeutral:{type: 'number', role: 'value.current', read: true, write: false, unit: 'A'},
43
- Data: {type: 'string', role: 'state', read: true, write: true},
44
- Days: {type: 'string', role: 'state', read: true, write: true},
45
- DewPoint: {type: 'number', role: 'value.temperature', read: true, write: false, unit: '°C'},
46
- Dimmer: {type: 'number', role: 'level.dimmer', read: true, write: true},
47
- Distance: {type: 'number', role: 'value', read: true, write: false, unit: 'cm'},
48
- Downtime: {type: 'string', role: 'state', read: true, write: false},
49
- Druck: {type: 'number', role: 'value.pressure', read: true, write: false, unit: 'hPa'},
50
- ExportActive: {type: 'number', role: 'value.power.produced', read: true, write: false, unit: 'kWh'},
51
- Factor: {type: 'number', role: 'value', read: true, write: false},
52
- Fade: {type: 'boolean', role: 'switch', read: true, write: true},
53
- Faktor: {type: 'number', role: 'value', read: true, write: false},
54
- Feuchtigkeit: {type: 'number', role: 'value.humidity', read: true, write: false, unit: '%'},
55
- Frequenz: {type: 'number', role: 'value.frequency', read: true, write: false, unit: 'Hz'},
56
- Frequency: {type: 'number', role: 'value.frequency', read: true, write: false, unit: 'Hz'},
57
- Green: {type: 'number', role: 'level.color.green', read: true, write: true, min: 0, max: 100},
58
- HSBColor: {type: 'string', role: 'value.hsb', read: true, write: true},
59
- Hostname: {type: 'string', role: 'state', read: true, write: false},
60
- Hue: {type: 'number', role: 'level.color.hue', read: true, write: true, min: 0, max: 360},
61
- Humidity: {type: 'number', role: 'value.humidity', read: true, write: false, unit: '%'},
62
- IPAddress: {type: 'string', role: 'state', read: true, write: false},
63
- IPaddress: {type: 'string', role: 'state', read: true, write: false},
64
- IRSend: {type: 'string', role: 'state', read: true, write: true},
65
- Illuminance: {type: 'number', role: 'value.illuminance', read: true, write: false, unit: 'lx'},
66
- IrReceived: {type: 'object', role: 'state', read: true, write: false},
67
- LED_Mode: {type: 'number', role: 'value', read: true, write: true},
68
- Latitude: {type: 'number', role: 'value.gps.latitude', read: true, write: false, unit: '°'},
69
- Laufzeit: {type: 'number', role: 'value.duration', read: true, write: false, unit: 'hours'}, /// ?
70
- LedBar: {type: 'number', role: 'value', read: true, write: true},
71
- LedTable: {type: 'string', role: 'state', read: true, write: false},
72
- Leistung: {type: 'number', role: 'value.power.consumption', read: true, write: false, unit: 'W'},
73
- Light: {type: 'number', role: 'value', read: true, write: false, unit: 'lx'},
74
- Longitude: {type: 'number', role: 'value.gps.longitude', read: true, write: false, unit: '°'},
75
- Mode: {type: 'string', role: 'state', read: true, write: true},
76
- Module: {type: 'string', role: 'state', read: true, write: false},
77
- Noise: {type: 'number', role: 'value', read: true, write: false, unit: 'dB'},
78
- Output: {type: 'number', role: 'value', read: true, write: true},
79
- Outsidetemp: {type: 'number', role: 'value.temperature', read: true, write: false, unit: '°C'},
80
- PM10: {type: 'number', role: 'value', read: true, write: false, unit: 'ug/m3'},
81
- PWM1: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
82
- PWM2: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
83
- PWM3: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
84
- PWM4: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
85
- PWM5: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
86
- PWM6: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
87
- PWM7: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
88
- PWM8: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
89
- PWM9: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
90
- PWM10: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
91
- PWM11: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
92
- PWM12: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
93
- PWM13: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
94
- PWM14: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
95
- PWM15: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
96
- PWM16: {type: 'number', role: 'value', read: true, write: true, min: 0, max: 1023},
97
- POWER10: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
98
- POWER11: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
99
- POWER12: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
100
- POWER13: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
101
- POWER14: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
102
- POWER15: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
103
- POWER16: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
104
- POWER17: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
105
- POWER18: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
106
- POWER19: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
107
- POWER1: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
108
- POWER20: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
109
- POWER21: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
110
- POWER22: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
111
- POWER23: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
112
- POWER24: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
113
- POWER25: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
114
- POWER26: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
115
- POWER27: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
116
- POWER28: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
117
- POWER29: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
118
- POWER2: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
119
- POWER3: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
120
- POWER4: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
121
- POWER5: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
122
- POWER6: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
123
- POWER7: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
124
- POWER8: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
125
- POWER9: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
126
- POWER: {type: 'boolean', role: 'switch', read: true, write: true, storeMap: true},
127
- Power: {type: 'number', role: 'value.power.consumption', read: true, write: false, unit: 'W'},
128
- Power_curr: {type: 'number', role: 'value.power.consumption', read: true, write: false, unit: 'W'},
129
- Pressure: {type: 'number', role: 'value.pressure', read: true, write: false, unit: 'hPa'},
130
- PressureScaledValue: {type: 'number', role: 'value.pressure', read: true, write: false, unit: 'Pa'},
131
- Protocol: {type: 'string', role: 'state', read: true, write: true},
132
- Punkt: {type: 'number', role: 'value', read: true, write: false, unit: '?'}, /// ?
133
- RGB_POWER: {type: 'boolean', role: 'switch.light', read: true, write: true, storeMap: true},
134
- RSSI: {type: 'number', role: 'value.rssi', read: true, write: false},
135
- ReactivePower: {type: 'number', role: 'value.power.consumption', read: true, write: false, unit: 'var'},
136
- Period: {type: 'number', role: 'value', read: true, write: false},
137
- Red: {type: 'number', role: 'level.color.red', read: true, write: true, min: 0, max: 100},
138
- Repeat: {type: 'number', role: 'value', read: true, write: true},
139
- RestartReason: {type: 'string', role: 'state', read: true, write: false},
140
- Returns: {type: 'number', role: 'value.temperature', read: true, write: false, unit: '°C'},
141
- Roomtemp: {type: 'number', role: 'value.temperature', read: true, write: false, unit: '°C'},
142
- SHUTTER1: {type: 'number', role: 'state', read: true, write: false},
143
- SHUTTER2: {type: 'number', role: 'state', read: true, write: false},
144
- SHUTTER3: {type: 'number', role: 'state', read: true, write: false},
145
- SHUTTER4: {type: 'number', role: 'state', read: true, write: false},
146
- SSId: {type: 'string', role: 'state', read: true, write: false},
147
- Saturation: {type: 'number', role: 'level.color.saturation', read: true, write: true, min: 0, max: 255},
148
- Scheme: {type: 'number', role: 'value', read: true, write: true},
149
- SeaPressure: {type: 'number', role: 'value.pressure', read: true, write: false, unit: 'hPa'},
150
- SleepMode: {type: 'string', role: 'state', read: true, write: false},
151
- Solarpump: {type: 'number', role: 'value', read: true, write: false},
152
- Solarstorage: {type: 'number', role: 'value.temperature', read: true, write: false, unit: '°C'},
153
- Spannung: {type: 'number', role: 'value.voltage', read: true, write: false, unit: 'V'},
154
- Speed: {type: 'number', role: 'value', read: true, write: true},
155
- Status: {type: 'number', role: 'value', read: true, write: false},
156
- Strom: {type: 'number', role: 'value.current', read: true, write: false, unit: 'A'},
157
- Switch1: {type: 'boolean', role: 'switch', read: true, write: false},
158
- Switch2: {type: 'boolean', role: 'switch', read: true, write: false},
159
- Switch3: {type: 'boolean', role: 'switch', read: true, write: false},
160
- Switch4: {type: 'boolean', role: 'switch', read: true, write: false},
161
- TVOC: {type: 'number', role: 'value.tvoc', read: true, write: false, unit: 'ppb'},
162
- Temperatur: {type: 'number', role: 'value.temperature', read: true, write: false, unit: '°C'},
163
- Temperature: {type: 'number', role: 'value.temperature', read: true, write: false, unit: '°C'},
164
- Time: {type: 'string', role: 'state', read: true, write: true},
165
- Timer10: {type: 'object', role: 'state', read: true, write: true},
166
- Timer11: {type: 'object', role: 'state', read: true, write: true},
167
- Timer12: {type: 'object', role: 'state', read: true, write: true},
168
- Timer13: {type: 'object', role: 'state', read: true, write: true},
169
- Timer14: {type: 'object', role: 'state', read: true, write: true},
170
- Timer15: {type: 'object', role: 'state', read: true, write: true},
171
- Timer16: {type: 'object', role: 'state', read: true, write: true},
172
- Timer1: {type: 'object', role: 'state', read: true, write: true},
173
- Timer2: {type: 'object', role: 'state', read: true, write: true},
174
- Timer3: {type: 'object', role: 'state', read: true, write: true},
175
- Timer4: {type: 'object', role: 'state', read: true, write: true},
176
- Timer5: {type: 'object', role: 'state', read: true, write: true},
177
- Timer6: {type: 'object', role: 'state', read: true, write: true},
178
- Timer7: {type: 'object', role: 'state', read: true, write: true},
179
- Timer8: {type: 'object', role: 'state', read: true, write: true},
180
- Timer9: {type: 'object', role: 'state', read: true, write: true},
181
- Today: {type: 'number', role: 'value.power.consumption', read: true, write: false, unit: 'kWh'},
182
- TodaySumExport:{type: 'number', role: 'value.power.produced', read: true, write: false, unit: 'kWh'},
183
- TodaySumImport:{type: 'number', role: 'value.power.consumption', read: true, write: false, unit: 'kWh'},
184
- Total: {type: 'number', role: 'value.power.consumption', read: true, write: false, unit: 'kWh'},
185
- Total_in: {type: 'number', role: 'value.power.consumption', read: true, write: false, unit: 'kWh'},
186
- Total_out: {type: 'number', role: 'value.power.produced', read: true, write: false, unit: 'kWh'},
187
- TotalStartTime:{type: 'string', role: 'date', read: true, write: false},
188
- Uptime: {type: 'mixed', role: 'state', read: true, write: false},
189
- UvIndex: {type: 'number', role: 'value.uv', read: true, write: false},
190
- UvIndexText: {type: 'string', role: 'state', read: true, write: false},
191
- UvLevel: {type: 'number', role: 'value', read: true, write: false},
192
- UvPower: {type: 'number', role: 'value', read: true, write: false, unit: 'W/m²'},
193
- UvaIntensity: {type: 'number', role: 'value', read: true, write: false},
194
- UvbIntensity: {type: 'number', role: 'value', read: true, write: false},
195
- VCC: {type: 'number', role: 'value.voltage', read: true, write: false, unit: 'V'},
196
- Vcc: {type: 'number', role: 'value.voltage', read: true, write: false, unit: 'V'},
197
- Version: {type: 'string', role: 'state', read: true, write: false},
198
- Voltage: {type: 'number', role: 'value.voltage', read: true, write: false, unit: 'V'},
199
- WW: {type: 'number', role: 'level.color.white', read: true, write: true},
200
- WW_POWER: {type: 'boolean', role: 'switch.light', read: true, write: true, storeMap: true},
201
- Wakeup: {type: 'string', role: 'state', read: true, write: true},
202
- Warmwater: {type: 'number', role: 'value.temperature', read: true, write: false, unit: '°C'},
203
- Window: {type: 'number', role: 'value', read: true, write: true},
204
- Yesterday: {type: 'number', role: 'value.power.consumption', read: true, write: false, unit: 'kWh'},
205
- eCO2: {type: 'number', role: 'value.eco2', read: true, write: false, unit: 'ppm'},
206
- gestern: {type: 'number', role: 'value.power.consumption', read: true, write: false, unit: 'kWh'},
207
- heute: {type: 'number', role: 'value.power.consumption', read: true, write: false, unit: 'kWh'},
208
- modeLedExor: {type: 'boolean', role: 'switch', read: true, write: true, def: false, desc: 'exor for white LEDs and color leds => if the white LEDs are switched on, color LEDs are switched off and vice versa'},
209
- modeReadColors:{type: 'boolean', role: 'switch', read: true, write: true, def: true, desc: 'allow for color read from MQTT'},
210
- VEML6075_UvIndex: {type: 'number', role: 'value.uv', read: true, write: false},
211
- VEML6075_UvaIntensity: {type: 'number', role: 'value', read: true, write: false},
212
- VEML6075_UvbIntensity: {type: 'number', role: 'value', read: true, write: false},
213
- VEML6075_UvIndexText: {type: 'string', role: 'state', read: true, write: false},
214
- VEML6075_UvLevel: {type: 'number', role: 'value', read: true, write: false},
215
- VEML6075_UvPower: {type: 'number', role: 'value', read: true, write: false, unit: 'W/m²'},
216
- };