Initial commit

This commit is contained in:
2019-01-16 09:07:10 +08:00
commit 0cc08f136d
32 changed files with 7021 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
{
"Sonoff adapter settings": "Sonoff Adapter-Einstellungen",
"Type:": "Typ",
"Port:": "Port",
"User:": "Username",
"Password:": "Kennwort",
"Password confirmation:": "Kennwort-Wiederholung",
"URL:": "URL",
"Secure:": "SSL",
"Public certificate:": "Publikzertifikat",
"Private certificate:": "Privatzertifikat",
"Chained certificate:": "Kettenzertifikat",
"Patterns:": "Subscribe patterns",
"Use WebSockets:": "Benutze auch WebSockets",
"Connection": "Verbindung",
"Sonoff Settings": "Sonoff Einstellungen",
"Client ID:": "Client ID",
"chars": "Symbolen",
"ms": "ms",
"Interval before send topics by connection:": "Interval vom Senden von allen Topics bei der verbindung",
"Send interval:": "Sendeintervall",
"Use chunk patch:": "Benutze Patch für Chunking",
"Divided by comma": "Mit Komma getrennt, z.B 'mqtt/0/#,javascript/#'",
"Mask to publish": "z.B 'mqtt.0.*,javascript.*'",
"Store only on change:": "Publish nur bei Änderung",
"Trace output for every message:": "Trace Ausgabe für jede Meldung",
"Test connection": "Teste Verbindung zum Server",
"Result: ": "Ergebnis ",
"connected": "verbunden",
"Main settings": "Allgemeine Einstellungen",
"Connection settings": "Verbindungseinstellungen",
"Authentication settings": "Authentication Einstellungen",
"Adapter settings": "Sonoff Einstellungen",
"Mask to publish own states:": "Maske für Bekanntgeben von eigenen States",
"Send states (ack=true) too:": "Sende auch Zustände (ack=true)",
"Publish all states at start:": "Bekanntgeben eigene States beim Verbinden",
"Use different topic names for set and get:": "Unterschiedliche Namen für setzten und lesen",
"Publish states on subscribe:": "Bekanntgeben von States bei Subscribe",
"Set certificates or load it first in the system settings (right top).": "Setze Zertificate oder lade die erst unter System/Einstellungen (oben rechts).",
"Prefix for topics:": "Prefix für alle Topics",
"Max topic length:": "Maximale Topicnamelänge",
"Server": "Server/broker",
"Client": "Client/subscriber",
"For tele/SENSOR": "Für tele/SENSOR",
"For tele/STATE": "Für tele/STATE",
"For stat/RESULT": "Für stat/RESULT",
"Client timeout (sec):": "Client-Zeitüberschreitung (Sek.)",
"Auto creation of states": "Automatische Erstellung von Zuständen"
}

View File

@@ -0,0 +1,49 @@
{
"Sonoff adapter settings": "Sonoff adapter settings",
"Type:": "Type",
"Port:": "Port",
"User:": "User",
"Password:": "Password",
"Password confirmation:": "Password confirmation",
"URL:": "URL",
"Secure:": "Secure",
"Public certificate:": "Public certificate",
"Private certificate:": "Private certificate",
"Chained certificate:": "Chained certificate",
"Patterns:": "Subscribe patterns",
"Use WebSockets:": "Use WebSockets too",
"Connection": "Connection",
"Sonoff Settings": "Sonoff Settings",
"Client ID:": "Client ID",
"chars": "chars",
"ms": "ms",
"Interval before send topics by connection:": "Interval before send topics by connection",
"Send interval:": "Send interval",
"Use chunk patch:": "Use chunk patch",
"Divided by comma": "Divided by comma, e.g. 'mqtt/0/#,javascript/#'",
"Mask to publish": "e.g. 'mqtt.0.*,javascript.*'",
"Store only on change:": "Publish only on change",
"Trace output for every message:": "Trace output for every message",
"Test connection": "Test connection with Server",
"Result: ": "Result ",
"connected": "connected",
"Main settings": "Main settings",
"Connection settings": "Connection settings",
"Authentication settings": "Authentication settings",
"Adapter settings": "Sonoff settings",
"Mask to publish own states:": "Mask to publish own states",
"Send states (ack=true) too:": "Send states (ack=true) too",
"Publish all states at start:": "Publish own states on connect",
"Use different topic names for set and get:": "Use different topic names for set and get",
"Publish states on subscribe:": "Publish states on subscribe",
"Set certificates or load it first in the system settings (right top).": "Set certificates or load it first in the system settings (right top).",
"Prefix for topics:": "Prefix for all topics",
"Max topic length:": "Max topic name length",
"Server": "Server/broker",
"Client": "Client/subscriber",
"For tele/SENSOR": "For tele/SENSOR",
"For tele/STATE": "For tele/STATE",
"For stat/RESULT": "For stat/RESULT",
"Client timeout (sec):": "Client timeout (sec)",
"Auto creation of states": "Auto creation of states"
}

View File

@@ -0,0 +1,49 @@
{
"Sonoff adapter settings": "Configuraciones del adaptador Sonoff",
"Type:": "Tipo",
"Port:": "Puerto",
"User:": "Usuario",
"Password:": "Contraseña",
"Password confirmation:": "confirmación de contraseña",
"URL:": "URL",
"Secure:": "Seguro",
"Public certificate:": "Certificado público",
"Private certificate:": "Certificado privado",
"Chained certificate:": "Certificado encadenado",
"Patterns:": "Suscribir patrones",
"Use WebSockets:": "Use WebSockets también",
"Connection": "Conexión",
"Sonoff Settings": "Configuraciones Sonoff",
"Client ID:": "Identificación del cliente",
"chars": "caracteres",
"ms": "Sra",
"Interval before send topics by connection:": "Intervalo antes de enviar temas por conexión",
"Send interval:": "Intervalo de envío",
"Use chunk patch:": "Use el fragmento de fragmento",
"Divided by comma": "Dividido por coma, p. 'mqtt/0/#, javascript/#'",
"Mask to publish": "p.ej. 'mqtt.0.*, javascript.*'",
"Store only on change:": "Publicar solo en el cambio",
"Trace output for every message:": "Salida de seguimiento para cada mensaje",
"Test connection": "Prueba de conexión con el servidor",
"Result: ": "Resultado",
"connected": "conectado",
"Main settings": "Ajustes principales",
"Connection settings": "Configuración de conexión",
"Authentication settings": "Configuraciones de autenticación",
"Adapter settings": "Configuraciones Sonoff",
"Mask to publish own states:": "Máscara para publicar estados propios",
"Send states (ack=true) too:": "Enviar estados (ack = true) también",
"Publish all states at start:": "Publicar estados propios al conectar",
"Use different topic names for set and get:": "Use diferentes nombres de tema para establecer y obtener",
"Publish states on subscribe:": "Publicar estados al suscribirse",
"Set certificates or load it first in the system settings (right top).": "Establezca certificados o cárguelos primero en la configuración del sistema (arriba a la derecha).",
"Prefix for topics:": "Prefijo para todos los temas",
"Max topic length:": "Longitud máxima del nombre del tema",
"Server": "Servidor/intermediario",
"Client": "Cliente/suscriptor",
"For tele/SENSOR": "Por tele/SENSOR",
"For tele/STATE": "Por tele/STATE",
"For stat/RESULT": "Por stat/RESULT",
"Client timeout (sec):": "Tiempo de espera del cliente (seg)",
"Auto creation of states": "Creación automática de estados"
}

View File

@@ -0,0 +1,49 @@
{
"Sonoff adapter settings": "Paramètres de l'adaptateur Sonoff",
"Type:": "Type",
"Port:": "Port",
"User:": "Utilisateur",
"Password:": "Mot de passe",
"Password confirmation:": "Confirmation mot de passe",
"URL:": "URL",
"Secure:": "Garantir",
"Public certificate:": "Certificat public",
"Private certificate:": "Certificat privé",
"Chained certificate:": "Certificat chaîné",
"Patterns:": "Modèles de souscription",
"Use WebSockets:": "Utilisez aussi WebSockets",
"Connection": "Connexion",
"Sonoff Settings": "Paramètres Sonoff",
"Client ID:": "identité du client",
"chars": "chars",
"ms": "Mme",
"Interval before send topics by connection:": "Intervalle avant d'envoyer des sujets par connexion",
"Send interval:": "Envoyer un intervalle",
"Use chunk patch:": "Utiliser un patch de morceau",
"Divided by comma": "Divisé par une virgule, par ex. 'mqtt/0/#, javascript/#'",
"Mask to publish": "par exemple. 'mqtt.0.*, javascript.*'",
"Store only on change:": "Publier uniquement en cas de modification",
"Trace output for every message:": "Trace de sortie pour chaque message",
"Test connection": "Tester la connexion avec le serveur",
"Result: ": "Résultat",
"connected": "connecté",
"Main settings": "Réglages principaux",
"Connection settings": "Paramètres de connexion",
"Authentication settings": "Paramètres d'authentification",
"Adapter settings": "Paramètres Sonoff",
"Mask to publish own states:": "Masque pour publier ses propres états",
"Send states (ack=true) too:": "Envoyer des états (ack = true) aussi",
"Publish all states at start:": "Publier ses propres états sur se connecter",
"Use different topic names for set and get:": "Utilisez différents noms de sujet pour définir et obtenir",
"Publish states on subscribe:": "Publier les états sur l'abonnement",
"Set certificates or load it first in the system settings (right top).": "Définissez des certificats ou chargez-les d'abord dans les paramètres du système (en haut à droite).",
"Prefix for topics:": "Préfixe pour tous les sujets",
"Max topic length:": "Longueur maximale du nom de la rubrique",
"Server": "Serveur/courtier",
"Client": "Client/abonné",
"For tele/SENSOR": "Pour tele/SENSOR",
"For tele/STATE": "Pour tele/STATE",
"For stat/RESULT": "Pour stat/RESULT",
"Client timeout (sec):": "Délai d'expiration du client (sec)",
"Auto creation of states": "Création automatique d'états"
}

View File

@@ -0,0 +1,49 @@
{
"Sonoff adapter settings": "Impostazioni dell'adattatore Sonoff",
"Type:": "genere",
"Port:": "Porta",
"User:": "Utente",
"Password:": "Parola d'ordine",
"Password confirmation:": "conferma password",
"URL:": "URL",
"Secure:": "Sicuro",
"Public certificate:": "Certificato pubblico",
"Private certificate:": "Certificato privato",
"Chained certificate:": "Certificato incatenato",
"Patterns:": "Iscriviti modelli",
"Use WebSockets:": "Utilizza anche WebSockets",
"Connection": "Connessione",
"Sonoff Settings": "Impostazioni Sonoff",
"Client ID:": "Identificativo cliente",
"chars": "caratteri",
"ms": "Signorina",
"Interval before send topics by connection:": "Intervallo prima di inviare argomenti per connessione",
"Send interval:": "Invia intervallo",
"Use chunk patch:": "Usa patch pezzo",
"Divided by comma": "Diviso in virgola, ad es. 'MQTT/0/#, JavaScript/#'",
"Mask to publish": "per esempio. 'Mqtt.0. *, Javascript. *'",
"Store only on change:": "Pubblica solo sul cambiamento",
"Trace output for every message:": "Traccia l'output per ogni messaggio",
"Test connection": "Verifica la connessione con il server",
"Result: ": "Risultato",
"connected": "collegato",
"Main settings": "Impostazioni principali",
"Connection settings": "Impostazioni di connessione",
"Authentication settings": "Impostazioni di autenticazione",
"Adapter settings": "Impostazioni Sonoff",
"Mask to publish own states:": "Maschera per pubblicare i propri stati",
"Send states (ack=true) too:": "Invia stati (ack = true) anche",
"Publish all states at start:": "Pubblica i tuoi stati sulla connessione",
"Use different topic names for set and get:": "Usa diversi nomi di argomenti per impostare e ottenere",
"Publish states on subscribe:": "Pubblica stati su iscriviti",
"Set certificates or load it first in the system settings (right top).": "Imposta i certificati o caricali prima nelle impostazioni di sistema (in alto a destra).",
"Prefix for topics:": "Prefisso per tutti gli argomenti",
"Max topic length:": "Lunghezza massima del nome dell'argomento",
"Server": "Server/mediatore",
"Client": "Client/abbonato",
"For tele/SENSOR": "Per tele/SENSOR",
"For tele/STATE": "Per tele/STATE",
"For stat/RESULT": "Per stat/RESULT",
"Client timeout (sec):": "Timeout del client (sec)",
"Auto creation of states": "Creazione automatica di stati"
}

View File

@@ -0,0 +1,49 @@
{
"Sonoff adapter settings": "Configurações do adaptador Sonoff",
"Type:": "Tipo",
"Port:": "Porta",
"User:": "Do utilizador",
"Password:": "Senha",
"Password confirmation:": "ConfirmaÇão Da Senha",
"URL:": "URL",
"Secure:": "Seguro",
"Public certificate:": "Certificado público",
"Private certificate:": "Certificado privado",
"Chained certificate:": "Certificado acorrentado",
"Patterns:": "Assinar padrões",
"Use WebSockets:": "Use também WebSockets",
"Connection": "Conexão",
"Sonoff Settings": "Configurações de Sonoff",
"Client ID:": "ID do Cliente",
"chars": "caracteres",
"ms": "Senhora",
"Interval before send topics by connection:": "Intervalo antes de enviar tópicos por conexão",
"Send interval:": "Intervalo de envio",
"Use chunk patch:": "Use patch de pedaços",
"Divided by comma": "Dividido por vírgula, e. 'mqtt/0/#, javascript/#'",
"Mask to publish": "por exemplo. 'mqtt.0.*, javascript.*'",
"Store only on change:": "Publique apenas na mudança",
"Trace output for every message:": "Saída de rastreamento para cada mensagem",
"Test connection": "Teste a conexão com o Servidor",
"Result: ": "Resultado",
"connected": "conectado",
"Main settings": "Configurações principais",
"Connection settings": "Configurações de conexão",
"Authentication settings": "Configurações de autenticação",
"Adapter settings": "Configurações de Sonoff",
"Mask to publish own states:": "Máscara para publicar estados próprios",
"Send states (ack=true) too:": "Enviar estados (ack = true) também",
"Publish all states at start:": "Publique seus próprios estados na conexão",
"Use different topic names for set and get:": "Use nomes de tópicos diferentes para definir e obter",
"Publish states on subscribe:": "Publique estados na assinatura",
"Set certificates or load it first in the system settings (right top).": "Defina certificados ou carregue primeiro nas configurações do sistema (parte superior direita).",
"Prefix for topics:": "Prefix para todos os tópicos",
"Max topic length:": "Nome máximo do nome do tópico",
"Server": "Servidor/corretor",
"Client": "Cliente/assinante",
"For tele/SENSOR": "Voor tele/SENSOR",
"For tele/STATE": "Voor tele/STATE",
"For stat/RESULT": "Voor stat/RESULT",
"Client timeout (sec):": "Clienttimeout (sec)",
"Auto creation of states": "Automatisch creëren van staten"
}

View File

@@ -0,0 +1,49 @@
{
"Sonoff adapter settings": "Ustawienia adaptera Sonoff",
"Type:": "Rodzaj",
"Port:": "Port",
"User:": "Użytkownik",
"Password:": "Hasło",
"Password confirmation:": "Potwierdzenie hasła",
"URL:": "URL",
"Secure:": "Bezpieczne",
"Public certificate:": "Certyfikat publiczny",
"Private certificate:": "Prywatny certyfikat",
"Chained certificate:": "Przykuty certyfikat",
"Patterns:": "Wzorce subskrypcji",
"Use WebSockets:": "Użyj także WebSockets",
"Connection": "Połączenie",
"Sonoff Settings": "Ustawienia Sonoff",
"Client ID:": "Identyfikator klienta",
"chars": "znaki",
"ms": "ms",
"Interval before send topics by connection:": "Interwał przed wysłaniem tematów według połączenia",
"Send interval:": "Interwał wysyłania",
"Use chunk patch:": "Użyj poprawki kawałka",
"Divided by comma": "Podzielone przecinkiem, np. \"mqtt / 0 / #, javascript / # '",
"Mask to publish": "na przykład \"mqtt.0. *, javascript. *\"",
"Store only on change:": "Opublikuj tylko w przypadku zmiany",
"Trace output for every message:": "Dane wyjściowe śledzenia dla każdej wiadomości",
"Test connection": "Sprawdź połączenie z serwerem",
"Result: ": "Wynik",
"connected": "połączony",
"Main settings": "Ustawienia główne",
"Connection settings": "Ustawienia połączenia",
"Authentication settings": "Ustawienia uwierzytelniania",
"Adapter settings": "Ustawienia Sonoff",
"Mask to publish own states:": "Maskuj, aby publikować własne stany",
"Send states (ack=true) too:": "Wyślij także stany (ack = true)",
"Publish all states at start:": "Opublikuj własne stany przy połączeniu",
"Use different topic names for set and get:": "Używaj różnych nazw tematów do ustawiania i pobierania",
"Publish states on subscribe:": "Opublikuj stany w subskrypcji",
"Set certificates or load it first in the system settings (right top).": "Ustaw certyfikaty lub załaduj najpierw w ustawieniach systemu (prawy górny).",
"Prefix for topics:": "Prefiks dla wszystkich tematów",
"Max topic length:": "Maksymalna długość nazwy tematu",
"Server": "Serwer / broker",
"Client": "Klient / subskrybent",
"For tele/SENSOR": "Dla tele/SENSOR",
"For tele/STATE": "Dla tele/STATE",
"For stat/RESULT": "Dla stat/RESULT",
"Client timeout (sec):": "Limit czasu klienta (s)",
"Auto creation of states": "Automatyczne tworzenie stanów"
}

View File

@@ -0,0 +1,49 @@
{
"Sonoff adapter settings": "Configurações do adaptador Sonoff",
"Type:": "Tipo",
"Port:": "Porta",
"User:": "Do utilizador",
"Password:": "Senha",
"Password confirmation:": "ConfirmaÇão Da Senha",
"URL:": "URL",
"Secure:": "Seguro",
"Public certificate:": "Certificado público",
"Private certificate:": "Certificado privado",
"Chained certificate:": "Certificado acorrentado",
"Patterns:": "Assinar padrões",
"Use WebSockets:": "Use também WebSockets",
"Connection": "Conexão",
"Sonoff Settings": "Configurações de Sonoff",
"Client ID:": "ID do Cliente",
"chars": "caracteres",
"ms": "Senhora",
"Interval before send topics by connection:": "Intervalo antes de enviar tópicos por conexão",
"Send interval:": "Intervalo de envio",
"Use chunk patch:": "Use patch de pedaços",
"Divided by comma": "Dividido por vírgula, e. 'mqtt / 0 / #, javascript / #'",
"Mask to publish": "por exemplo. 'mqtt.0. *, javascript. *'",
"Store only on change:": "Publique apenas na mudança",
"Trace output for every message:": "Saída de rastreamento para cada mensagem",
"Test connection": "Teste a conexão com o Servidor",
"Result: ": "Resultado",
"connected": "conectado",
"Main settings": "Configurações principais",
"Connection settings": "Configurações de conexão",
"Authentication settings": "Configurações de autenticação",
"Adapter settings": "Configurações de Sonoff",
"Mask to publish own states:": "Máscara para publicar estados próprios",
"Send states (ack=true) too:": "Enviar estados (ack = true) também",
"Publish all states at start:": "Publique seus próprios estados na conexão",
"Use different topic names for set and get:": "Use nomes de tópicos diferentes para definir e obter",
"Publish states on subscribe:": "Publique estados na assinatura",
"Set certificates or load it first in the system settings (right top).": "Defina certificados ou carregue primeiro nas configurações do sistema (parte superior direita).",
"Prefix for topics:": "Prefix para todos os tópicos",
"Max topic length:": "Nome máximo do nome do tópico",
"Server": "Servidor / corretor",
"Client": "Cliente / assinante",
"For tele/SENSOR": "Para tele/SENSOR",
"For tele/STATE": "Para tele/STATE",
"For stat/RESULT": "Para stat/RESULT",
"Client timeout (sec):": "Tempo limite do cliente (seg)",
"Auto creation of states": "Criação automática de estados"
}

View File

@@ -0,0 +1,49 @@
{
"Sonoff adapter settings": "Настройки драйвера Sonoff",
"Type:": "Тип",
"Port:": "Порт",
"User:": "Имя пользователя",
"Password:": "Пароль",
"Password confirmation:": "Подтверждение пароля",
"URL:": "URL",
"Secure:": "SSL",
"Public certificate:": "'Public' сертификат",
"Private certificate:": "'Private' сертификат",
"Chained certificate:": "'Chained' сертификат",
"Patterns:": "Patterns",
"Use WebSockets:": "Сервер WebSockets тоже",
"Connection": "Соединение",
"Sonoff Settings": "Настройки Sonoff",
"Client ID:": "ID Клиента",
"chars": "символов",
"ms": "мс",
"Interval before send topics by connection:": "Интервал перед отсылкой всей топиков после соединения",
"Send interval:": "Интервал между пакетами",
"Use chunk patch:": "Использовать заплатку для Chunking",
"Divided by comma": "Использовать запятую, как разделитеть. Например 'mqtt/0/#,javascript/#'",
"Mask to publish": "Использовать запятую, как разделитеть. Например 'mqtt.0.*,javascript.*'",
"Store only on change:": "Отсылать только изменения",
"Trace output for every message:": "Вывод лога для каждого изменения",
"Test connection": "Проверить настройки",
"Result: ": "Результат ",
"connected": "успешно",
"Main settings": "Основные настройки",
"Connection settings": "Настройки соединения",
"Authentication settings": "Настройки аутентификации",
"Adapter settings": "Настройки Sonoff",
"Mask to publish own states:": "Маска для собственных значений",
"Send states (ack=true) too:": "Посылать не только команды, но и состояния (ack=true)",
"Publish all states at start:": "Выдавать собственные значения при старте",
"Use different topic names for set and get:": "Использовать разные имена для чтения и записи",
"Publish states on subscribe:": "Публиковать состояния при подписке",
"Set certificates or load it first in the system settings (right top).": "Нужно выбрать сертификаты или сначала загрузить их в системных настройках (вверху справа).",
"Prefix for topics:": "Префикс для всех значений",
"Max topic length:": "Максимальная длина имени топика",
"Server": "Сервер/брокер",
"Client": "Клиент/подписчик",
"For tele/SENSOR": "Для tele/SENSOR",
"For tele/STATE": "Для tele/STATE",
"For stat/RESULT": "Для stat/RESULT",
"Client timeout (sec):": "Client timeout (sec):",
"Auto creation of states": "Auto creation of states"
}

177
admin/index.html Normal file
View File

@@ -0,0 +1,177 @@
<html>
<head>
<!-- these 4 files always have to be included -->
<link rel="stylesheet" type="text/css" href="../../lib/css/themes/jquery-ui/redmond/jquery-ui.min.css"/>
<script type="text/javascript" src="../../lib/js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>
<script type="text/javascript" src="../../lib/js/jquery-ui-1.10.3.full.min.js"></script>
<!-- these three files have to be always included -->
<link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
<script type="text/javascript" src="../../js/translate.js"></script>
<script type="text/javascript" src="../../js/adapter-settings.js"></script>
<script type="text/javascript" src="words.js"></script>
<!-- you have to define 2 functions in the global scope: -->
<script type="text/javascript">
var onChange;
var secret;
function encrypt(key, value) {
var result = '';
for(var i = 0; i < value.length; ++i) {
result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));
}
return result;
}
function decrypt(key, value) {
var result = '';
for(var i = 0; i < value.length; ++i) {
result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));
}
return result;
}
function setValue(id, value) {
var $value = $('#' + id + '.value');
if ($value.attr('type') === 'checkbox') {
$value.prop('checked', value).change(function() {
onChange();
});
} else {
$value.val(value).change(function() {
onChange();
}).keyup(function() {
onChange();
});
}
}
function loadHelper(settings, param, subparam) {
if (!settings) return;
if (settings.useChunkPatch === undefined) settings.useChunkPatch = false;
if (settings.timeout === undefined) settings.timeout = 300;
if (subparam && param) {
for (var key in settings[param][subparam]) {
if (typeof settings[param][subparam][key] !== 'object') {
setValue(param + '_' + subparam + '_' + key, settings[param][subparam][key]);
} else {
alert('4th level is not supported');
}
}
} else if (param) {
for (var key in settings[param]) {
if (typeof settings[param][key] !== 'object') {
setValue(param + '_' + key, settings[param][key]);
} else {
loadHelper(settings, param, key);
}
}
} else {
for (var key in settings) {
if (typeof settings[key] !== 'object') {
if (key === 'pass') {
settings[key] = decrypt(secret, settings[key]);
}
setValue(key, settings[key]);
} else {
loadHelper(settings, key);
}
}
}
}
// the function loadSettings has to exist ...
function load(settings, _onChange) {
$('#tabs').tabs();
onChange = _onChange;
socket.emit('getObject', 'system.config', function (err, obj) {
secret = (obj.native ? obj.native.secret : '') || 'Zgfr56gFe87jJOM';
loadHelper(settings);
});
onChange(false);
}
function saveHelper(obj, id, value) {
var ids = id.split('_');
if (ids.length === 1) {
if (ids[0] === 'pass') value = encrypt(secret, value);
obj[id] = value;
} else if (ids.length === 2) {
if (!obj[ids[0]]) obj[ids[0]] = {};
obj[ids[0]][ids[1]] = value;
} else if (ids.length === 3) {
if (!obj[ids[0]]) obj[ids[0]] = {};
if (!obj[ids[0]][ids[1]]) obj[ids[0]][ids[1]] = {};
obj[ids[0]][ids[1]][ids[2]] = value;
}
return obj;
}
function getSettings() {
var obj = {};
$('.value').each(function () {
var $this = $(this);
var id = $this.attr('id');
if ($this.attr('type') === 'checkbox') {
obj = saveHelper(obj, id, $this.prop('checked'))
} else {
obj = saveHelper(obj, id, $this.val())
}
});
return obj;
}
function save(callback) {
if ($('#pass').val() !== $('#pass_confirm').val()) {
showMessage(_('Password confirmation is not equal with password'));
return;
}
callback(getSettings());
}
</script>
</head>
<body>
<!-- you have to put your config page in a div with id adapter-container -->
<div id="adapter-container">
<table><tr>
<td><img src="sonoff.png"></td>
<td style="padding-top: 20px;padding-left: 10px"><h3 class="translate">Sonoff adapter settings</h3></td>
</tr></table>
<table>
<tr>
<td colspan='2'><h4 class="translate">Connection settings</h4></td>
</tr>
<tr>
<td><label class="translate" for="port">Port:</label></td>
<td><input id="port" type="number" min="1" max="65565" class="value"/></td>
</tr>
<tr>
<td><label class="translate" for="timeout">Client timeout (sec):</label></td>
<td><input id="timeout" type="number" min="1" max="65565" class="value"/></td>
</tr>
<tr>
<td colspan='2'><h4 class="translate">Authentication settings</h4></td>
</tr>
<tr>
<td><label class="translate" for="user">User:</label></td>
<td><input id="user" size="17" class="value"/></td>
</tr>
<tr>
<td><label class="translate" for="pass">Password:</label></td>
<td><input id="pass" type="password" size="17" class="value"/></td>
</tr>
<tr>
<td><label class="translate" for="pass_confirm">Password confirmation:</label></td>
<td><input id="pass_confirm" type="password" size="17"/></td>
</tr>
</table>
</div>
</body>
</html>

183
admin/index_m.html Normal file
View File

@@ -0,0 +1,183 @@
<html>
<head>
<!-- Materialze style -->
<link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
<link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
<script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>
<script type="text/javascript" src="../../js/translate.js"></script>
<script type="text/javascript" src="../../lib/js/materialize.js"></script>
<script type="text/javascript" src="../../js/adapter-settings.js"></script>
<script type="text/javascript" src="words.js"></script>
<script type="text/javascript">
var onChange;
var secret;
function encrypt(key, value) {
var result = '';
for(var i = 0; i < value.length; ++i) {
result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));
}
return result;
}
function decrypt(key, value) {
var result = '';
for(var i = 0; i < value.length; ++i) {
result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));
}
return result;
}
function setValue(id, value) {
var $value = $('#' + id + '.value');
if ($value.attr('type') === 'checkbox') {
$value.prop('checked', value).on('change', function () {
onChange();
});
} else {
$value.val(value).on('change', function () {
onChange();
}).keyup(function () {
onChange();
});
}
}
function loadHelper(settings, param, subparam) {
if (!settings) return;
if (settings.useChunkPatch === undefined) settings.useChunkPatch = false;
if (settings.timeout === undefined) settings.timeout = 300;
for (var key in settings) {
if (!settings.hasOwnProperty(key)) continue;
if (key === 'pass') {
settings[key] = decrypt(secret, settings[key]);
}
setValue(key, settings[key]);
}
}
// the function loadSettings has to exist ...
function load(settings, _onChange) {
onChange = _onChange;
socket.emit('getObject', 'system.config', function (err, obj) {
secret = (obj.native ? obj.native.secret : '') || 'Zgfr56gFe87jJOM';
loadHelper(settings);
M.updateTextFields();
});
onChange(false);
}
function getSettings() {
var obj = {};
$('.value').each(function () {
var $this = $(this);
var id = $this.attr('id');
if ($this.attr('type') === 'checkbox') {
obj[id] = $this.prop('checked');
} else {
var value = $this.val();
if (id === 'pass') {
value = encrypt(secret, value);
}
obj[id] = value;
}
});
return obj;
}
function save(callback) {
if ($('#pass').val() !== $('#pass_confirm').val()) {
showMessage(_('Password confirmation is not equal with password'));
return;
}
callback(getSettings());
}
</script>
<style>
.adapter-container>div {
margin-bottom: 0 !important;
}
.page {
height: calc(100% - 50px) !important;
}
.marg{
margin-top: 5em;
}
</style>
</head>
<body>
<div class="m adapter-container">
<div class="row">
<div class="col s12">
<div class="row">
<div class="col s6">
<img src="sonoff.png" class="logo">
</div>
</div>
<div class="row">
<div class="col s12">
<h6 class="title translate">Connection settings</h6>
</div>
</div>
<div class="row">
<div class="input-field col s6 m4 l2">
<input id="port" type="number" min="1" max="65565" class="value"/>
<label class="translate" for="port">Port:</label>
</div>
<div class="input-field col s6 m4 l2">
<input id="timeout" type="number" min="1" max="99999" class="value"/>
<label class="translate" for="timeout">Client timeout (sec):</label>
</div>
</div>
<div class="row">
<div class="col s12">
<h6 class="title translate">Authentication settings</h6>
</div>
</div>
<div class="row">
<div class="input-field col s6 m4">
<input id="user" type="text" class="value"/>
<label class="translate" for="user">User:</label>
</div>
<div class="input-field col s6 m4">
<input id="pass" type="password" class="value"/>
<label class="translate" for="pass">Password:</label>
</div>
<div class="input-field col s6 m4">
<input id="pass_confirm" type="password" />
<label class="translate" for="pass_confirm">Password confirmation:</label>
</div>
</div>
<div class="row">
<div class="col s12">
<h6 class="title translate">Auto creation of states</h6>
</div>
</div>
<div class="row">
<div class="input-field col s6 m4">
<input id="TELE_SENSOR" type="checkbox" class="value"/>
<span class="translate" for="user">For tele/SENSOR</span>
</div>
<div class="input-field col s6 m4">
<input id="TELE_STATE" type="checkbox" class="value"/>
<span class="translate" for="TELE_STATE">For tele/STATE</span>
</div>
<div class="input-field col s6 m4">
<input id="STAT_RESULT" type="checkbox" class="value"/>
<span class="translate" for="STAT_RESULT">For stat/RESULT</span>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

BIN
admin/sonoff.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

53
admin/words.js Normal file
View File

@@ -0,0 +1,53 @@
// DO NOT EDIT THIS FILE!!! IT WILL BE AUTOMATICALLY GENERATED FROM src/i18n
/*global systemDictionary:true */
'use strict';
systemDictionary = {
"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"},
"Type:": { "en": "Type", "de": "Typ", "ru": "Тип", "pt": "Tipo", "nl": "Tipo", "fr": "Type", "it": "genere", "es": "Tipo", "pl": "Rodzaj"},
"Port:": { "en": "Port", "de": "Port", "ru": "Порт", "pt": "Porta", "nl": "Porta", "fr": "Port", "it": "Porta", "es": "Puerto", "pl": "Port"},
"User:": { "en": "User", "de": "Username", "ru": "Имя пользователя", "pt": "Do utilizador", "nl": "Do utilizador", "fr": "Utilisateur", "it": "Utente", "es": "Usuario", "pl": "Użytkownik"},
"Password:": { "en": "Password", "de": "Kennwort", "ru": "Пароль", "pt": "Senha", "nl": "Senha", "fr": "Mot de passe", "it": "Parola d'ordine", "es": "Contraseña", "pl": "Hasło"},
"Password confirmation:": { "en": "Password confirmation", "de": "Kennwort-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"},
"URL:": { "en": "URL", "de": "URL", "ru": "URL", "pt": "URL", "nl": "URL", "fr": "URL", "it": "URL", "es": "URL", "pl": "URL"},
"Secure:": { "en": "Secure", "de": "SSL", "ru": "SSL", "pt": "Seguro", "nl": "Seguro", "fr": "Garantir", "it": "Sicuro", "es": "Seguro", "pl": "Bezpieczne"},
"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"},
"Private certificate:": { "en": "Private certificate", "de": "Privatzertifikat", "ru": "'Private' сертификат", "pt": "Certificado privado", "nl": "Certificado privado", "fr": "Certificat privé", "it": "Certificato privato", "es": "Certificado privado", "pl": "Prywatny certyfikat"},
"Chained certificate:": { "en": "Chained certificate", "de": "Kettenzertifikat", "ru": "'Chained' сертификат", "pt": "Certificado acorrentado", "nl": "Certificado acorrentado", "fr": "Certificat chaîné", "it": "Certificato incatenato", "es": "Certificado encadenado", "pl": "Przykuty certyfikat"},
"Patterns:": { "en": "Subscribe patterns", "de": "Subscribe patterns", "ru": "Patterns", "pt": "Assinar padrões", "nl": "Assinar padrões", "fr": "Modèles de souscription", "it": "Iscriviti modelli", "es": "Suscribir patrones", "pl": "Wzorce subskrypcji"},
"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"},
"Connection": { "en": "Connection", "de": "Verbindung", "ru": "Соединение", "pt": "Conexão", "nl": "Conexão", "fr": "Connexion", "it": "Connessione", "es": "Conexión", "pl": "Połączenie"},
"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"},
"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"},
"chars": { "en": "chars", "de": "Symbolen", "ru": "символов", "pt": "caracteres", "nl": "caracteres", "fr": "chars", "it": "caratteri", "es": "caracteres", "pl": "znaki"},
"ms": { "en": "ms", "de": "ms", "ru": "мс", "pt": "Senhora", "nl": "Senhora", "fr": "Mme", "it": "Signorina", "es": "Sra", "pl": "ms"},
"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"},
"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"},
"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"},
"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 / # '"},
"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. *\""},
"Store only on change:": { "en": "Publish only on change", "de": "Publish nur bei Ä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"},
"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"},
"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"},
"Result: ": { "en": "Result ", "de": "Ergebnis ", "ru": "Результат ", "pt": "Resultado", "nl": "Resultado", "fr": "Résultat", "it": "Risultato", "es": "Resultado", "pl": "Wynik"},
"connected": { "en": "connected", "de": "verbunden", "ru": "успешно", "pt": "conectado", "nl": "conectado", "fr": "connecté", "it": "collegato", "es": "conectado", "pl": "połączony"},
"Main settings": { "en": "Main settings", "de": "Allgemeine Einstellungen", "ru": "Основные настройки", "pt": "Configurações principais", "nl": "Configurações principais", "fr": "Réglages principaux", "it": "Impostazioni principali", "es": "Ajustes principales", "pl": "Ustawienia główne"},
"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"},
"Authentication settings": { "en": "Authentication settings", "de": "Authentication Einstellungen", "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"},
"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"},
"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"},
"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)"},
"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"},
"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"},
"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"},
"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)."},
"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"},
"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"},
"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"},
"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"},
"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"},
"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"},
"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"},
"Client timeout (sec):": { "en": "Client timeout (sec)", "de": "Client-Zeitüberschreitung (Sek.)", "ru": "Client timeout (sec):", "pt": "Tempo limite do cliente (seg)", "nl": "Clienttimeout (sec)", "fr": "Délai d'expiration du client (sec)", "it": "Timeout del client (sec)", "es": "Tiempo de espera del cliente (seg)", "pl": "Limit czasu klienta (s)"},
"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"}
};