Release 6.7

This commit is contained in:
Theo Arends 2019-10-25 11:58:08 +02:00
parent 6ce5b928a1
commit a589613831
11 changed files with 343 additions and 308 deletions

View File

@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele.
*
* Updated until v6.6.0.14
* Updated until v6.6.0.21
\*********************************************************************/
//#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@ -157,7 +157,7 @@
#define D_TO "zu"
#define D_TOGGLE "An/Aus"
#define D_TOPIC "topic"
#define D_TOTAL_USAGE "Total Usage"
#define D_TOTAL_USAGE "Gesamtverbrauch"
#define D_TRANSMIT "Übertragen"
#define D_TRUE "wahr"
#define D_TVOC "TVOC"
@ -320,11 +320,11 @@
#define D_MAC_ADDRESS "MAC-Adresse"
#define D_MQTT_HOST "MQTT Host"
#define D_MQTT_PORT "MQTT Port"
#define D_MQTT_CLIENT "MQTT client"
#define D_MQTT_USER "MQTT-Benutzer"
#define D_MQTT_TOPIC "MQTT topic"
#define D_MQTT_GROUP_TOPIC "MQTT group topic"
#define D_MQTT_FULL_TOPIC "MQTT full topic"
#define D_MQTT_CLIENT "MQTT Client"
#define D_MQTT_USER "MQTT Benutzer"
#define D_MQTT_TOPIC "MQTT Topic"
#define D_MQTT_GROUP_TOPIC "MQTT Group Topic"
#define D_MQTT_FULL_TOPIC "MQTT Full Topic"
#define D_MDNS_DISCOVERY "mDNS-Ermittlung"
#define D_MDNS_ADVERTISE "mDNS-Bekanntmachung"
#define D_ESP_CHIP_ID "ESP Chip ID"
@ -335,15 +335,15 @@
#define D_UPGRADE_BY_WEBSERVER "Update über Web-Server"
#define D_OTA_URL "OTA-URL"
#define D_START_UPGRADE "Update starten"
#define D_UPGRADE_BY_FILE_UPLOAD "Update-Datei hochladen"
#define D_UPGRADE_BY_FILE_UPLOAD "Update Datei hochladen"
#define D_UPLOAD_STARTED "Upload gestartet"
#define D_UPGRADE_STARTED "Update gestartet"
#define D_UPLOAD_DONE "Upload abgeschlossen"
#define D_UPLOAD_ERR_1 "keine Datei ausgewählt"
#define D_UPLOAD_ERR_2 "ungenügend Speicherplatz"
#define D_UPLOAD_ERR_3 "magic byte ist nicht 0xE9"
#define D_UPLOAD_ERR_4 "Flash-Größe des Programmes ist größer als der reale Flashspeicher"
#define D_UPLOAD_ERR_5 "Upload-buffer-Vergleich weicht ab"
#define D_UPLOAD_ERR_1 "Keine Datei ausgewählt"
#define D_UPLOAD_ERR_2 "Ungenügend Speicherplatz"
#define D_UPLOAD_ERR_3 "Magic Byte ist nicht 0xE9"
#define D_UPLOAD_ERR_4 "Datei überschreitet vorhdn. Flashspeicher"
#define D_UPLOAD_ERR_5 "Upload Buffer Vergleich weicht ab"
#define D_UPLOAD_ERR_6 "Upload fehlgeschlagen. Aktiviere logging 3"
#define D_UPLOAD_ERR_7 "Upload abgebrochen"
#define D_UPLOAD_ERR_8 "Datei ungültig"
@ -641,7 +641,7 @@
#define D_UNIT_INCREMENTS "inc"
#define D_UNIT_KILOGRAM "kg"
#define D_UNIT_KILOMETER_PER_HOUR "km/h"
#define D_UNIT_KILOOHM "kOhm"
#define D_UNIT_KILOOHM "k"
#define D_UNIT_KILOWATTHOUR "kWh"
#define D_UNIT_LUX "lx"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m3"

View File

@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele.
*
* Updated until v6.0.0a
* Updated until v6.7.0
\*********************************************************************/
//#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@ -93,7 +93,7 @@
#define D_FALLBACK_TOPIC "Fallback Topic"
#define D_FALSE "Onwaar"
#define D_FILE "Bestand"
#define D_FLOW_RATE "Flow rate"
#define D_FLOW_RATE "Debiet"
#define D_FREE_MEMORY "Vrij geheugen"
#define D_FREQUENCY "Frequentie"
#define D_GAS "Gas"
@ -149,7 +149,7 @@
#define D_STOP "Stop"
#define D_SUBNET_MASK "Subnet Masker"
#define D_SUBSCRIBE_TO "Abonneer op"
#define D_UNSUBSCRIBE_FROM "Unsubscribe from"
#define D_UNSUBSCRIBE_FROM "Uitschrijven van"
#define D_SUCCESSFUL "Gelukt"
#define D_SUNRISE "Zonsopgang"
#define D_SUNSET "Zonsondergang"
@ -157,7 +157,7 @@
#define D_TO "naar"
#define D_TOGGLE "Toggle" // Wissel, Tuimel
#define D_TOPIC "Topic" // Onderwerp
#define D_TOTAL_USAGE "Total Usage"
#define D_TOTAL_USAGE "Totaal verbruik"
#define D_TRANSMIT "Verzend"
#define D_TRUE "Waar"
#define D_TVOC "TVOC"
@ -167,15 +167,15 @@
#define D_USER "Gebruiker"
#define D_UTC_TIME "UTC"
#define D_UV_INDEX "UV-index"
#define D_UV_INDEX_1 "Low"
#define D_UV_INDEX_2 "Mid"
#define D_UV_INDEX_3 "High"
#define D_UV_INDEX_4 "Danger"
#define D_UV_INDEX_5 "BurnL1/2"
#define D_UV_INDEX_6 "BurnL3"
#define D_UV_INDEX_7 "OoR"
#define D_UV_INDEX_1 "Laag"
#define D_UV_INDEX_2 "Gemiddeld"
#define D_UV_INDEX_3 "Hoog"
#define D_UV_INDEX_4 "Intens"
#define D_UV_INDEX_5 "Gevaarlijk"
#define D_UV_INDEX_6 "Schadelijk"
#define D_UV_INDEX_7 "Uitzonderlijk"
#define D_UV_LEVEL "UV niveau"
#define D_UV_POWER "UV Power"
#define D_UV_POWER "UV intensiteit"
#define D_VERSION "Versie"
#define D_VOLTAGE "Spanning"
#define D_WEIGHT "Gewicht"
@ -227,7 +227,7 @@
#define D_WITH_IP_ADDRESS "met IP adres"
#define D_WEBSERVER_STOPPED "Webserver gestopt"
#define D_FILE_NOT_FOUND "Bestand niet gevonden"
#define D_REDIRECTED "Redirected to captive portal"
#define D_REDIRECTED "Omleiding naar captive portal"
#define D_WIFIMANAGER_SET_ACCESSPOINT_AND_STATION "Wifimanager start AccessPoint en hou Station"
#define D_WIFIMANAGER_SET_ACCESSPOINT "Wifimanager start AccessPoint"
#define D_TRYING_TO_CONNECT "Apparaat probeert te verbinden met netwerk"
@ -284,7 +284,7 @@
#define D_LOGGING_PARAMETERS "Logging parameters"
#define D_SERIAL_LOG_LEVEL "Serieel log niveau"
#define D_MQTT_LOG_LEVEL "Mqtt log level"
#define D_MQTT_LOG_LEVEL "Mqtt log niveau"
#define D_WEB_LOG_LEVEL "Web log niveau"
#define D_SYS_LOG_LEVEL "Syslog niveau"
#define D_MORE_DEBUG "Meer debug"
@ -444,17 +444,17 @@
#define D_ENERGY_TOTAL "Verbruik totaal"
// xdrv_27_shutter.ino
#define D_OPEN "Open"
#define D_CLOSE "Close"
#define D_DOMOTICZ_SHUTTER "Shutter"
#define D_OPEN "Openen"
#define D_CLOSE "Sluiten"
#define D_DOMOTICZ_SHUTTER "Rolluik"
// xdrv_28_pcf8574.ino
#define D_CONFIGURE_PCF8574 "Configure PCF8574"
#define D_PCF8574_PARAMETERS "PCF8574 parameters"
#define D_INVERT_PORTS "Invert Ports"
#define D_DEVICE "Device"
#define D_DEVICE_INPUT "Input"
#define D_DEVICE_OUTPUT "Output"
#define D_CONFIGURE_PCF8574 "Configureer PCF8574"
#define D_PCF8574_PARAMETERS "PCF8574 Parameters"
#define D_INVERT_PORTS "Inverteer Poorten"
#define D_DEVICE "Apparaat"
#define D_DEVICE_INPUT "Ingang"
#define D_DEVICE_OUTPUT "Uitgang"
// xsns_05_ds18b20.ino
#define D_SENSOR_BUSY "Sensor bezet"
@ -641,12 +641,12 @@
#define D_UNIT_INCREMENTS "inc"
#define D_UNIT_KILOGRAM "kg"
#define D_UNIT_KILOMETER_PER_HOUR "km/h" // or "km/h"
#define D_UNIT_KILOOHM "kOhm"
#define D_UNIT_KILOOHM "k"
#define D_UNIT_KILOWATTHOUR "kWh"
#define D_UNIT_LUX "lx"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "ug/m3"
#define D_UNIT_MICROMETER "um"
#define D_UNIT_MICROSECOND "us"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m3"
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLIMETER "mm"
#define D_UNIT_MILLIMETER_MERCURY "mmHg"
@ -691,37 +691,37 @@
#define D_LOG_WIFI "WIF: " // Wifi
//SDM220
#define D_PHASE_ANGLE "Phase Angle"
#define D_IMPORT_ACTIVE "Import Active"
#define D_EXPORT_ACTIVE "Export Active"
#define D_IMPORT_REACTIVE "Import Reactive"
#define D_EXPORT_REACTIVE "Export Reactive"
#define D_TOTAL_REACTIVE "Total Reactive"
#define D_PHASE_ANGLE "Fase hoek"
#define D_IMPORT_ACTIVE "Import werkelijk"
#define D_EXPORT_ACTIVE "Export werkelijk"
#define D_IMPORT_REACTIVE "Import blind"
#define D_EXPORT_REACTIVE "Export blind"
#define D_TOTAL_REACTIVE "Totaal blind"
#define D_UNIT_KWARH "kVArh"
#define D_UNIT_ANGLE "Deg"
//SOLAXX1
#define D_PV1_VOLTAGE "PV1 Voltage"
#define D_PV1_CURRENT "PV1 Current"
#define D_PV1_POWER "PV1 Power"
#define D_PV2_VOLTAGE "PV2 Voltage"
#define D_PV2_CURRENT "PV2 Current"
#define D_PV2_POWER "PV2 Power"
#define D_SOLAR_POWER "Solar Power"
#define D_INVERTER_POWER "Inverter Power"
#define D_PV1_VOLTAGE "PV1 spanning"
#define D_PV1_CURRENT "PV1 stroom"
#define D_PV1_POWER "PV1 vermogen"
#define D_PV2_VOLTAGE "PV2 spanning"
#define D_PV2_CURRENT "PV2 stroom"
#define D_PV2_POWER "PV2 vermogen"
#define D_SOLAR_POWER "Zon vermogen"
#define D_INVERTER_POWER "Omvormer vermogen"
#define D_STATUS "Status"
#define D_WAITING "Waiting"
#define D_CHECKING "Checking"
#define D_WORKING "Working"
#define D_FAILURE "Failure"
#define D_SOLAX_ERROR_0 "No Error Code"
#define D_SOLAX_ERROR_1 "Grid Lost Fault"
#define D_SOLAX_ERROR_2 "Grid Voltage Fault"
#define D_SOLAX_ERROR_3 "Grid Frequency Fault"
#define D_SOLAX_ERROR_4 "Pv Voltage Fault"
#define D_SOLAX_ERROR_5 "Isolation Fault"
#define D_SOLAX_ERROR_6 "Over Temperature Fault"
#define D_SOLAX_ERROR_7 "Fan Fault"
#define D_SOLAX_ERROR_8 "Other Device Fault"
#define D_WAITING "Wacht"
#define D_CHECKING "Controle"
#define D_WORKING "Actief"
#define D_FAILURE "Fout"
#define D_SOLAX_ERROR_0 "Geen"
#define D_SOLAX_ERROR_1 "Netverbinding"
#define D_SOLAX_ERROR_2 "Netspanning"
#define D_SOLAX_ERROR_3 "Netfrequentie"
#define D_SOLAX_ERROR_4 "Pv spanning"
#define D_SOLAX_ERROR_5 "Isolatie"
#define D_SOLAX_ERROR_6 "Overtemperatuur"
#define D_SOLAX_ERROR_7 "Ventilator"
#define D_SOLAX_ERROR_8 "Overige"
#endif // _LANGUAGE_NL_NL_H_

View File

@ -57,7 +57,7 @@
#define D_AS "como"
#define D_AUTO "AUTO"
#define D_BLINK "Piscar"
#define D_BLINKOFF "Piscar desligado"
#define D_BLINKOFF "Piscar Desligado"
#define D_BOOT_COUNT "Contagem de Inicialização"
#define D_BRIGHTLIGHT "Brilho"
#define D_BSSID "BSSId"
@ -65,7 +65,7 @@
#define D_BY "por" // Write by me
#define D_BYTES "Bytes"
#define D_CELSIUS "Celsius"
#define D_CHANNEL "Channel"
#define D_CHANNEL "Canal"
#define D_CO2 "Dioxido de Carbono"
#define D_CODE "Código" // Button code
#define D_COLDLIGHT "Luz Fria"
@ -78,7 +78,7 @@
#define D_DARKLIGHT "Luz Escura"
#define D_DEBUG "Depurar"
#define D_DISABLED "Disabilitado"
#define D_DISTANCE "Distance"
#define D_DISTANCE "Distância"
#define D_DNS_SERVER "Servidor DNS"
#define D_DONE "Concluído"
#define D_DST_TIME "DST"
@ -93,9 +93,9 @@
#define D_FALLBACK_TOPIC "Tópico para retornar"
#define D_FALSE "Falso"
#define D_FILE "Ficheiro"
#define D_FLOW_RATE "Flow rate"
#define D_FLOW_RATE "Taxa de Fluxo"
#define D_FREE_MEMORY "Memoria Livre"
#define D_FREQUENCY "Frequency"
#define D_FREQUENCY "Frequência"
#define D_GAS "Gás"
#define D_GATEWAY "Gateway"
#define D_GROUP "Grupo"
@ -106,7 +106,7 @@
#define D_IMMEDIATE "Immediato" // Button immediate
#define D_INDEX "Indíce"
#define D_INFO "Info"
#define D_INFRARED "Infrared"
#define D_INFRARED "Infravermelho"
#define D_INITIALIZED "Inicializado"
#define D_IP_ADDRESS "Endereço IP"
#define D_LIGHT "Luz"
@ -125,39 +125,39 @@
#define D_PORT "Porta"
#define D_POWER_FACTOR "Factor de Potência"
#define D_POWERUSAGE "Potência"
#define D_POWERUSAGE_ACTIVE "Active Power"
#define D_POWERUSAGE_APPARENT "Apparent Power"
#define D_POWERUSAGE_REACTIVE "Reactive Power"
#define D_POWERUSAGE_ACTIVE "Potência Ativa"
#define D_POWERUSAGE_APPARENT "Potência Aparente"
#define D_POWERUSAGE_REACTIVE "Potência Reativa"
#define D_PRESSURE "Pressão"
#define D_PRESSUREATSEALEVEL "Pressão ao nível do Mar"
#define D_PROGRAM_FLASH_SIZE "Tamanho do Programa na Flash"
#define D_PROGRAM_SIZE "Tamanho do Programa"
#define D_PROJECT "Projeto"
#define D_RAIN "Rain"
#define D_RAIN "Chuva"
#define D_RECEIVED "Recebido"
#define D_RESTART "Reiniciar"
#define D_RESTARTING "A reiniciar"
#define D_RESTART_REASON "Razão do reinicio"
#define D_RESTORE "Restauro"
#define D_RETAINED "Manter"
#define D_RULE "Rule"
#define D_SAVE "Salvar"
#define D_RULE "Regra"
#define D_SAVE "Guardar"
#define D_SENSOR "Sensor"
#define D_SSID "SSId"
#define D_START "Início"
#define D_STD_TIME "STD"
#define D_STOP "Parar"
#define D_SUBNET_MASK "Mascara sub rede"
#define D_SUBSCRIBE_TO "Subescrever para"
#define D_UNSUBSCRIBE_FROM "Unsubscribe from"
#define D_SUBSCRIBE_TO "Subscrever"
#define D_UNSUBSCRIBE_FROM "Cancelar subscrição de"
#define D_SUCCESSFUL "Successo"
#define D_SUNRISE "Sunrise"
#define D_SUNSET "Sunset"
#define D_SUNRISE "Nascer do Sol"
#define D_SUNSET "Pôr do Sol"
#define D_TEMPERATURE "Temperatura"
#define D_TO "para"
#define D_TOGGLE "Pressionar"
#define D_TOPIC "Tópico"
#define D_TOTAL_USAGE "Total Usage"
#define D_TOTAL_USAGE "Uso total"
#define D_TRANSMIT "Transmitir"
#define D_TRUE "Verdadeiro"
#define D_TVOC "TVOC"
@ -167,38 +167,38 @@
#define D_USER "Utilizador"
#define D_UTC_TIME "UTC"
#define D_UV_INDEX "Indíce UV"
#define D_UV_INDEX_1 "Low"
#define D_UV_INDEX_2 "Mid"
#define D_UV_INDEX_3 "High"
#define D_UV_INDEX_4 "Danger"
#define D_UV_INDEX_5 "BurnL1/2"
#define D_UV_INDEX_6 "BurnL3"
#define D_UV_INDEX_1 "Baixo"
#define D_UV_INDEX_2 "Médio"
#define D_UV_INDEX_3 "Elevado"
#define D_UV_INDEX_4 "Perigoso"
#define D_UV_INDEX_5 "QueimaduraL1/2"
#define D_UV_INDEX_6 "QueimaduraL3"
#define D_UV_INDEX_7 "OoR"
#define D_UV_LEVEL "Nível UV"
#define D_UV_POWER "UV Power"
#define D_UV_POWER "Poder UV"
#define D_VERSION "Versão"
#define D_VOLTAGE "Voltagem"
#define D_WEIGHT "Weight"
#define D_WEIGHT "Peso"
#define D_WARMLIGHT "Luz Quente"
#define D_WEB_SERVER "servidor WEB"
#define D_WEB_SERVER "Servidor WEB"
// sonoff.ino
#define D_WARNING_MINIMAL_VERSION "AVISO esta versão não supporta configurações persistentes"
#define D_LEVEL_10 "nível 1-0"
#define D_LEVEL_01 "nível 0-1"
#define D_SERIAL_LOGGING_DISABLED "Registro em serie desabilitado"
#define D_SERIAL_LOGGING_DISABLED "Registro de porta série desabilitado"
#define D_SYSLOG_LOGGING_REENABLED "Registro do Syslog reativado"
#define D_SET_BAUDRATE_TO "Ajuste da velocidade para"
#define D_RECEIVED_TOPIC "Topico Recebido"
#define D_DATA_SIZE "Tamanho de dados"
#define D_DATA_SIZE "Tamanho de Dados"
#define D_ANALOG_INPUT "Entrada Analógica"
// support.ino
#define D_OSWATCH "osWatch"
#define D_BLOCKED_LOOP "Loop Bloqueado"
#define D_WPS_FAILED_WITH_STATUS "WPSconfig Falha de estado"
#define D_ACTIVE_FOR_3_MINUTES "ativo por 3 minutes"
#define D_WPS_FAILED_WITH_STATUS "WPSconfig FALHOU com estado"
#define D_ACTIVE_FOR_3_MINUTES "ativo por 3 minutos"
#define D_FAILED_TO_START "Falha ao iníciar"
#define D_PATCH_ISSUE_2186 "Questão 2186"
#define D_CONNECTING_TO_AP "Ligando ao AP"
@ -212,17 +212,17 @@
#define D_QUERY_DONE "Consulta finalizada. Serviço MQTT não encontrado"
#define D_MQTT_SERVICE_FOUND "Serviço MQTT encontrado em"
#define D_FOUND_AT "encontrado em"
#define D_SYSLOG_HOST_NOT_FOUND "Syslog anfitrião não encontrado"
#define D_SYSLOG_HOST_NOT_FOUND "Anfitrião Syslog não encontrado"
// settings.ino
#define D_SAVED_TO_FLASH_AT "Guardado na flash em"
#define D_LOADED_FROM_FLASH_AT "Lido da flash em"
#define D_USE_DEFAULTS "Usar predefinições"
#define D_ERASED_SECTOR "Apagar setores"
#define D_ERASED_SECTOR "Apagado setor"
// xdrv_02_webserver.ino
#define D_NOSCRIPT "To use Tasmota, please enable JavaScript"
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMO firmware<br>Atualizar Por favor"
#define D_NOSCRIPT "Para utilizar o Tasmota, por favor ative o JavaScript"
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Firmware MÍNIMO<br>Por favor atualize"
#define D_WEBSERVER_ACTIVE_ON "Servidor WEB ativo em"
#define D_WITH_IP_ADDRESS "com o endereço IP"
#define D_WEBSERVER_STOPPED "Servitor WEB parou"
@ -235,20 +235,20 @@
#define D_RESTART_IN "Reinicia em"
#define D_SECONDS "segundos"
#define D_DEVICE_WILL_RESTART "O dispositivo irá reiniciar dentro de alguns segundos"
#define D_BUTTON_TOGGLE "Pressionar"
#define D_BUTTON_TOGGLE "Alternar"
#define D_CONFIGURATION "Configuração"
#define D_INFORMATION "Informação"
#define D_FIRMWARE_UPGRADE "Atualização de Firmware"
#define D_CONSOLE "Consola"
#define D_CONFIRM_RESTART "Confirmar o reinicio"
#define D_CONFIRM_RESTART "Confirmar o reinício"
#define D_CONFIGURE_MODULE "Configurar Módulo"
#define D_CONFIGURE_WIFI "Configurar WiFi"
#define D_CONFIGURE_MQTT "Configurar MQTT"
#define D_CONFIGURE_DOMOTICZ "Configurar Domoticz"
#define D_CONFIGURE_LOGGING "Configurar Logging"
#define D_CONFIGURE_LOGGING "Configurar registro"
#define D_CONFIGURE_OTHER "Configurar outras opções"
#define D_CONFIRM_RESET_CONFIGURATION "Apagar configuração Confirmar"
#define D_CONFIRM_RESET_CONFIGURATION "Confirme o reinício da configuração"
#define D_RESET_CONFIGURATION "Apagar configuração"
#define D_BACKUP_CONFIGURATION "Guardar configuração"
#define D_RESTORE_CONFIGURATION "Repor configuração"
@ -256,102 +256,102 @@
#define D_MODULE_PARAMETERS "Parametros do Módulo"
#define D_MODULE_TYPE "Tipo de Módulo"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_PULLUP_ENABLE "Sem pull-up de Botão/Interruptor"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial Entrada"
#define D_SERIAL_OUT "Serial Saída"
#define D_SERIAL_IN "Entrada de porta série"
#define D_SERIAL_OUT "Saída de porta série"
#define D_WIFI_PARAMETERS "Parametros Wifi"
#define D_SCAN_FOR_WIFI_NETWORKS "Em busca de redes wifi"
#define D_SCAN_DONE "Busca finalizada"
#define D_NO_NETWORKS_FOUND "Sem redes"
#define D_REFRESH_TO_SCAN_AGAIN "Nova busca"
#define D_DUPLICATE_ACCESSPOINT "Ponto de Acesso duplicado"
#define D_SCAN_FOR_WIFI_NETWORKS "Procurar redes Wifi"
#define D_SCAN_DONE "Pesquisa terminada"
#define D_NO_NETWORKS_FOUND "Sem redes encontradas"
#define D_REFRESH_TO_SCAN_AGAIN "Atualize para realizar nova pesquisa"
#define D_DUPLICATE_ACCESSPOINT "Duplicar ponto de Acesso"
#define D_SKIPPING_LOW_QUALITY "Ignorado devido a baixa qualidade do sinal"
#define D_RSSI "RSSI"
#define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId"
#define D_AP1_PASSWORD "AP1 Palavra Chave"
#define D_AP2_SSID "AP2 SSId"
#define D_AP2_PASSWORD "AP2 Palavra Chave"
#define D_AP1_SSID "SSId do AP1"
#define D_AP1_PASSWORD "Palavra Chave do AP1"
#define D_AP2_SSID "SSId do AP2"
#define D_AP2_PASSWORD "Palavra Chave do AP2"
#define D_MQTT_PARAMETERS "Parametros MQTT"
#define D_CLIENT "Cliente"
#define D_FULL_TOPIC "Tópico completo"
#define D_LOGGING_PARAMETERS "Parametros Logging"
#define D_SERIAL_LOG_LEVEL "Nível de registro serial"
#define D_MQTT_LOG_LEVEL "Mqtt log level"
#define D_LOGGING_PARAMETERS "Parametros para registro"
#define D_SERIAL_LOG_LEVEL "Nível de registro na porta série"
#define D_MQTT_LOG_LEVEL "Nível de registro MQTT"
#define D_WEB_LOG_LEVEL "Nível de registro WEB"
#define D_SYS_LOG_LEVEL "Nível de registro Syslog"
#define D_SYS_LOG_LEVEL "Nível de registro do Syslog"
#define D_MORE_DEBUG "Depurar mais"
#define D_SYSLOG_HOST "Syslog anfitrião"
#define D_SYSLOG_HOST "Anfitrião Syslog"
#define D_SYSLOG_PORT "Porta Syslog"
#define D_TELEMETRY_PERIOD "Periodo de Telemetria"
#define D_TELEMETRY_PERIOD "Período de Telemetria"
#define D_OTHER_PARAMETERS "Outros parametros"
#define D_TEMPLATE "Template"
#define D_ACTIVATE "Activate"
#define D_WEB_ADMIN_PASSWORD "Palavra Chave de WEB Admin"
#define D_TEMPLATE "Modelo"
#define D_ACTIVATE "Ativar"
#define D_WEB_ADMIN_PASSWORD "Palavra Chave do Admin WEB"
#define D_MQTT_ENABLE "MQTT habilitado"
#define D_FRIENDLY_NAME "Nome amigável"
#define D_BELKIN_WEMO "Belkin WeMo"
#define D_HUE_BRIDGE "Hue Bridge"
#define D_SINGLE_DEVICE "dispositivo único"
#define D_MULTI_DEVICE "multiplos dispositivos"
#define D_MULTI_DEVICE "dispositivo múltiplo"
#define D_CONFIGURE_TEMPLATE "Configure Template"
#define D_TEMPLATE_PARAMETERS "Template parameters"
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_CONFIGURE_TEMPLATE "Configurar Modelo"
#define D_TEMPLATE_PARAMETERS "Parametros do Modelo"
#define D_TEMPLATE_NAME "Nome do Modelo"
#define D_BASE_TYPE "Baseado em"
#define D_TEMPLATE_FLAGS "Opções"
#define D_SAVE_CONFIGURATION "Salvar configuração"
#define D_SAVE_CONFIGURATION "Guardar configuração"
#define D_CONFIGURATION_SAVED "Configuração guardada"
#define D_CONFIGURATION_RESET "Reinicialização da configuração"
#define D_CONFIGURATION_RESET "Reinicializar a configuração"
#define D_PROGRAM_VERSION "Versão do Programa"
#define D_BUILD_DATE_AND_TIME "Data e Hora da construção"
#define D_BUILD_DATE_AND_TIME "Data e Hora de criação"
#define D_CORE_AND_SDK_VERSION "Versão Core/SDK"
#define D_FLASH_WRITE_COUNT "contagem de gravação flash"
#define D_FLASH_WRITE_COUNT "Contagem de gravação da flash"
#define D_MAC_ADDRESS "Endereço MAC"
#define D_MQTT_HOST "MQTT Servidor"
#define D_MQTT_PORT "MQTT Porta"
#define D_MQTT_CLIENT "MQTT Cliente"
#define D_MQTT_USER "MQTT Utilizador"
#define D_MQTT_TOPIC "MQTT Tópico"
#define D_MQTT_GROUP_TOPIC "MQTT Tópico Grupo"
#define D_MQTT_FULL_TOPIC "MQTT Tópico Completo"
#define D_MQTT_HOST "Servidor MQTT"
#define D_MQTT_PORT "Porta MQTT"
#define D_MQTT_CLIENT "Cliente MQTT"
#define D_MQTT_USER "Utilizador MQTT"
#define D_MQTT_TOPIC "Tópico MQTT"
#define D_MQTT_GROUP_TOPIC "Tópico MQTT de Grupo"
#define D_MQTT_FULL_TOPIC "Tópico MQTT Completo"
#define D_MDNS_DISCOVERY "Descobrir mDNS"
#define D_MDNS_ADVERTISE "Anunciar mDNS"
#define D_ESP_CHIP_ID "ESP Chip Id"
#define D_FLASH_CHIP_ID "Flash Chip Id"
#define D_FLASH_CHIP_SIZE "Flash Size"
#define D_FREE_PROGRAM_SPACE "Espaço Livre Programa"
#define D_ESP_CHIP_ID "ID do chip ESP"
#define D_FLASH_CHIP_ID "ID do chip da Flash"
#define D_FLASH_CHIP_SIZE "Tamanho da Flash"
#define D_FREE_PROGRAM_SPACE "Espaço de Programa Livre"
#define D_UPGRADE_BY_WEBSERVER "Atualizar pelo servidor WEB"
#define D_OTA_URL "OTA Url"
#define D_OTA_URL "Url OTA"
#define D_START_UPGRADE "Iniciar atualização"
#define D_UPGRADE_BY_FILE_UPLOAD "Atualização por envio de ficheiro"
#define D_UPLOAD_STARTED "Início do envio"
#define D_UPGRADE_BY_FILE_UPLOAD "Atualizar por envio de ficheiro"
#define D_UPLOAD_STARTED "Envio Iniciado"
#define D_UPGRADE_STARTED "Atualização Iniciada"
#define D_UPLOAD_DONE "Atualização Finalizada"
#define D_UPLOAD_ERR_1 "Nenhum ficheiro selecionado"
#define D_UPLOAD_ERR_2 "Nao existe espaço disponível"
#define D_UPLOAD_ERR_3 "Byte mágico não é 0xE9"
#define D_UPLOAD_ERR_2 "Não existe espaço disponível"
#define D_UPLOAD_ERR_3 "O Byte mágico não é 0xE9"
#define D_UPLOAD_ERR_4 "O tamanho do programa e maior do que o tamanho real da flash"
#define D_UPLOAD_ERR_5 "Envio buffer miscompare"
#define D_UPLOAD_ERR_6 "Falha no envio. Hablitar logging 3"
#define D_UPLOAD_ERR_5 "Comparação incorreta do buffer de upload"
#define D_UPLOAD_ERR_6 "Falha no envio. Habilitar registro 3"
#define D_UPLOAD_ERR_7 "Envio cancelado"
#define D_UPLOAD_ERR_8 "Ficheiro inválido"
#define D_UPLOAD_ERR_9 "Ficheiro demasiado grande"
#define D_UPLOAD_ERR_10 "Failed to init RF chip"
#define D_UPLOAD_ERR_11 "Failed to erase RF chip"
#define D_UPLOAD_ERR_12 "Failed to write to RF chip"
#define D_UPLOAD_ERR_13 "Failed to decode RF firmware"
#define D_UPLOAD_ERR_10 "Falha ao iniciar o chip de RF"
#define D_UPLOAD_ERR_11 "Falha ao apagar o chip de RF"
#define D_UPLOAD_ERR_12 "Falha ao escrever no chip de RF"
#define D_UPLOAD_ERR_13 "Falha ao descodificar o firmware RF"
#define D_UPLOAD_ERROR_CODE "Código de erro do envio"
#define D_ENTER_COMMAND "Inserir comando"
@ -361,14 +361,14 @@
// xdrv_01_mqtt.ino
#define D_FINGERPRINT "Verifique a impressão digital TLS..."
#define D_TLS_CONNECT_FAILED_TO "TLS não conseguiu ligar"
#define D_RETRY_IN "Tentativa em"
#define D_VERIFIED "Verificado impressão digital "
#define D_RETRY_IN "Nova tentativa em"
#define D_VERIFIED "Verificado usando impressão digital"
#define D_INSECURE "Ligação insegura devido à impressão digital inválida"
#define D_CONNECT_FAILED_TO "A ligação falhou ao"
// xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast desabilitado"
#define D_MULTICAST_REJOINED "Multicast (re)ingressou"
#define D_MULTICAST_REJOINED "Multicast (re)ingressado"
#define D_MULTICAST_JOIN_FAILED "Multicast falha no reingresso"
#define D_FAILED_TO_SEND_RESPONSE "Falha no envio de reposta"
@ -377,13 +377,13 @@
#define D_WEMO_EVENT_SERVICE "WeMo evento de serviço"
#define D_WEMO_META_SERVICE "WeMo serviço meta"
#define D_WEMO_SETUP "WeMo configuração"
#define D_RESPONSE_SENT "Rsposta enviada"
#define D_RESPONSE_SENT "Resposta enviada"
#define D_HUE "Hue"
#define D_HUE_BRIDGE_SETUP "Hue setup"
#define D_HUE_API_NOT_IMPLEMENTED "Hue API nao implementada"
#define D_HUE_API "Hue API"
#define D_HUE_POST_ARGS "Hue POST args"
#define D_HUE_BRIDGE_SETUP "Configuração do Hue"
#define D_HUE_API_NOT_IMPLEMENTED "API Hue nao implementada"
#define D_HUE_API "API Hue"
#define D_HUE_POST_ARGS "Argumentos de POST HUE"
#define D_3_RESPONSE_PACKETS_SENT "3 pacotes de resposta enviados"
// xdrv_07_domoticz.ino
@ -402,71 +402,71 @@
#define D_DOMOTICZ_CURRENT "Corrente/PM10"
#define D_DOMOTICZ_AIRQUALITY "Qualidade do Ar"
#define D_DOMOTICZ_P1_SMART_METER "P1SmartMeter"
#define D_DOMOTICZ_UPDATE_TIMER "Tempo de atualização"
#define D_DOMOTICZ_UPDATE_TIMER "Temporizador de atualização"
// xdrv_09_timers.ino
#define D_CONFIGURE_TIMER "Configure Timer"
#define D_TIMER_PARAMETERS "Timer parameters"
#define D_TIMER_ENABLE "Enable Timers"
#define D_TIMER_ARM "Arm"
#define D_TIMER_TIME "Time"
#define D_TIMER_DAYS "Days"
#define D_TIMER_REPEAT "Repeat"
#define D_TIMER_OUTPUT "Output"
#define D_TIMER_ACTION "Action"
#define D_CONFIGURE_TIMER "Configurar temporizador"
#define D_TIMER_PARAMETERS "Parâmetros do temporizador"
#define D_TIMER_ENABLE "Habilitar Temporizadores"
#define D_TIMER_ARM "Armar"
#define D_TIMER_TIME "Tempo"
#define D_TIMER_DAYS "Dias"
#define D_TIMER_REPEAT "Repetir"
#define D_TIMER_OUTPUT "Aaída"
#define D_TIMER_ACTION "Açao"
// xdrv_10_knx.ino
#define D_CONFIGURE_KNX "Configure KNX"
#define D_KNX_PARAMETERS "KNX Parameters"
#define D_KNX_GENERAL_CONFIG "General"
#define D_KNX_PHYSICAL_ADDRESS "Physical Address"
#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )"
#define D_KNX_ENABLE "Enable KNX"
#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses"
#define D_ADD "Add"
#define D_DELETE "Delete"
#define D_REPLY "Reply"
#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from"
#define D_CONFIGURE_KNX "Configurar KNX"
#define D_KNX_PARAMETERS "Parâmetros KNX"
#define D_KNX_GENERAL_CONFIG "Geral"
#define D_KNX_PHYSICAL_ADDRESS "Endereço físico"
#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Deve ser exclusivo na rede KNX )"
#define D_KNX_ENABLE "Habilitar KNX"
#define D_KNX_GROUP_ADDRESS_TO_WRITE "Dados para enviar para Endereços de Grupo"
#define D_ADD "Adicionar"
#define D_DELETE "Remover"
#define D_REPLY "Responder"
#define D_KNX_GROUP_ADDRESS_TO_READ "Endereços de Grupo de onde receber dados"
#define D_LOG_KNX "KNX: "
#define D_RECEIVED_FROM "Received from"
#define D_KNX_COMMAND_WRITE "Write"
#define D_KNX_COMMAND_READ "Read"
#define D_KNX_COMMAND_OTHER "Other"
#define D_SENT_TO "sent to"
#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used."
#define D_KNX_ENHANCEMENT "Communication Enhancement"
#define D_RECEIVED_FROM "Recebido de"
#define D_KNX_COMMAND_WRITE "Escrever"
#define D_KNX_COMMAND_READ "Ler"
#define D_KNX_COMMAND_OTHER "Outro"
#define D_SENT_TO "enviar para"
#define D_KNX_WARNING "O Endereço de Grupo ( 0 / 0 / 0 ) está reservado e não pode ser usado."
#define D_KNX_ENHANCEMENT "Melhoria de Comunicação"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Consumo energético de hoje"
#define D_ENERGY_YESTERDAY "Consumo energético de ontem"
#define D_ENERGY_TOTAL "Consumo total de energial"
#define D_ENERGY_TOTAL "Consumo energético total"
// xdrv_27_shutter.ino
#define D_OPEN "Open"
#define D_CLOSE "Close"
#define D_DOMOTICZ_SHUTTER "Shutter"
#define D_OPEN "Abrir"
#define D_CLOSE "Fechar"
#define D_DOMOTICZ_SHUTTER "Estore"
// xdrv_28_pcf8574.ino
#define D_CONFIGURE_PCF8574 "Configure PCF8574"
#define D_PCF8574_PARAMETERS "PCF8574 parameters"
#define D_INVERT_PORTS "Invert Ports"
#define D_DEVICE "Device"
#define D_DEVICE_INPUT "Input"
#define D_DEVICE_OUTPUT "Output"
#define D_CONFIGURE_PCF8574 "Configurar PCF8574"
#define D_PCF8574_PARAMETERS "Parâmetros PCF8574"
#define D_INVERT_PORTS "Inverter Portas"
#define D_DEVICE "Dispositivo"
#define D_DEVICE_INPUT "Entrada"
#define D_DEVICE_OUTPUT "Saída"
// xsns_05_ds18b20.ino
#define D_SENSOR_BUSY "Sensor ocupado"
#define D_SENSOR_CRC_ERROR "Erro Sensor CRC"
#define D_SENSORS_FOUND "Sensors encontrados"
#define D_SENSOR_CRC_ERROR "Erro no CRC do sensor"
#define D_SENSORS_FOUND "Sensores encontrados"
// xsns_06_dht.ino
#define D_TIMEOUT_WAITING_FOR "Fim do tempo de espera"
#define D_START_SIGNAL_LOW "Sinal de início baixo"
#define D_START_SIGNAL_HIGH "Sinal de início elevado"
#define D_PULSE "pulse"
#define D_CHECKSUM_FAILURE "Falha Checksum"
#define D_PULSE "pulso"
#define D_CHECKSUM_FAILURE "Falha na soma de verificação"
// xsns_07_sht1x.ino
#define D_SENSOR_DID_NOT_ACK_COMMAND "Sensor não aceitou o comando ACK"
@ -486,27 +486,27 @@
#define D_GZ_AXIS "Gyro Z-Axis"
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Remove weigth"
#define D_HX_CAL_REFERENCE "Load reference weigth"
#define D_HX_CAL_DONE "Calibrated"
#define D_HX_CAL_FAIL "Calibration failed"
#define D_RESET_HX711 "Reset Scale"
#define D_CONFIGURE_HX711 "Configure Scale"
#define D_HX711_PARAMETERS "Scale parameters"
#define D_ITEM_WEIGHT "Item weight"
#define D_REFERENCE_WEIGHT "Reference weigth"
#define D_CALIBRATE "Calibrate"
#define D_CALIBRATION "Calibration"
#define D_HX_CAL_REMOVE "Remover peso"
#define D_HX_CAL_REFERENCE "Carregar peso de referência"
#define D_HX_CAL_DONE "Calibrado"
#define D_HX_CAL_FAIL "Falha na calibração"
#define D_RESET_HX711 "Reiniciar balança"
#define D_CONFIGURE_HX711 "Configurar balança"
#define D_HX711_PARAMETERS "Parâmetros da balança"
#define D_ITEM_WEIGHT "Peso do item"
#define D_REFERENCE_WEIGHT "Peso de referência"
#define D_CALIBRATE "Calibrar"
#define D_CALIBRATION "Calibração"
//xsns_35_tx20.ino
#define D_TX20_WIND_DIRECTION "Wind Direction"
#define D_TX20_WIND_SPEED "Wind Speed"
#define D_TX20_WIND_SPEED_AVG "Wind Speed Avg"
#define D_TX20_WIND_SPEED_MAX "Wind Speed Max"
#define D_TX20_WIND_DIRECTION "Direção do vento
#define D_TX20_WIND_SPEED "Velocidade do vento"
#define D_TX20_WIND_SPEED_AVG "Velocidade média do vento"
#define D_TX20_WIND_SPEED_MAX "Velocidade máxima do vento"
#define D_TX20_NORTH "N"
#define D_TX20_EAST "E"
#define D_TX20_SOUTH "S"
#define D_TX20_WEST "W"
#define D_TX20_WEST "O"
//xsns_43_hre.ino
#define D_LOG_HRE "HRE: "
@ -544,7 +544,7 @@
#define D_SENSOR_SPI_MISO "SPI MISO"
#define D_SENSOR_SPI_MOSI "SPI MOSI"
#define D_SENSOR_SPI_CLK "SPI CLK"
#define D_SENSOR_BACKLIGHT "Luz negra"
#define D_SENSOR_BACKLIGHT "Luz fundo"
#define D_SENSOR_PMS5003 "PMS5003"
#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx"
#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx"
@ -573,7 +573,7 @@
#define D_SENSOR_SSPI_SCLK "SSPI SCLK"
#define D_SENSOR_SSPI_CS "SSPI CS"
#define D_SENSOR_SSPI_DC "SSPI DC"
#define D_SENSOR_RF_SENSOR "RF Sensor"
#define D_SENSOR_RF_SENSOR "Sensor RF"
#define D_SENSOR_AZ_RX "AZ Rx"
#define D_SENSOR_AZ_TX "AZ Tx"
#define D_SENSOR_MAX31855_CS "MX31855 CS"
@ -599,7 +599,7 @@
#define D_SENSOR_ARIRFSEL "ALux IrSel"
#define D_SENSOR_TXD "Serial Tx"
#define D_SENSOR_RXD "Serial Rx"
#define D_SENSOR_ROTARY "Rotary" // Suffix "1A"
#define D_SENSOR_ROTARY "Rotativo" // Suffix "1A"
#define D_SENSOR_HRE_CLOCK "HRE Clock"
#define D_SENSOR_HRE_DATA "HRE Data"
#define D_SENSOR_ADE7953_IRQ "ADE7953 IRQ"
@ -657,7 +657,7 @@
#define D_UNIT_PARTS_PER_MILLION "ppm"
#define D_UNIT_PRESSURE "hPa"
#define D_UNIT_SECOND "sec"
#define D_UNIT_SECTORS "sectors"
#define D_UNIT_SECTORS "setores"
#define D_UNIT_VA "VA"
#define D_UNIT_VAR "VAr"
#define D_UNIT_VOLT "V"
@ -691,37 +691,37 @@
#define D_LOG_WIFI "WIF: " // Wifi
//SDM220
#define D_PHASE_ANGLE "Phase Angle"
#define D_IMPORT_ACTIVE "Import Active"
#define D_EXPORT_ACTIVE "Export Active"
#define D_IMPORT_REACTIVE "Import Reactive"
#define D_EXPORT_REACTIVE "Export Reactive"
#define D_TOTAL_REACTIVE "Total Reactive"
#define D_PHASE_ANGLE "Ângulo de fase"
#define D_IMPORT_ACTIVE "Ativo importado"
#define D_EXPORT_ACTIVE "Ativo exportado"
#define D_IMPORT_REACTIVE "Reativo importado"
#define D_EXPORT_REACTIVE "Reativo exportado"
#define D_TOTAL_REACTIVE "Reactivo total"
#define D_UNIT_KWARH "kVArh"
#define D_UNIT_ANGLE "Deg"
//SOLAXX1
#define D_PV1_VOLTAGE "PV1 Voltage"
#define D_PV1_CURRENT "PV1 Current"
#define D_PV1_POWER "PV1 Power"
#define D_PV2_VOLTAGE "PV2 Voltage"
#define D_PV2_CURRENT "PV2 Current"
#define D_PV2_POWER "PV2 Power"
#define D_SOLAR_POWER "Solar Power"
#define D_INVERTER_POWER "Inverter Power"
#define D_STATUS "Status"
#define D_WAITING "Waiting"
#define D_CHECKING "Checking"
#define D_WORKING "Working"
#define D_FAILURE "Failure"
#define D_SOLAX_ERROR_0 "No Error Code"
#define D_SOLAX_ERROR_1 "Grid Lost Fault"
#define D_SOLAX_ERROR_2 "Grid Voltage Fault"
#define D_SOLAX_ERROR_3 "Grid Frequency Fault"
#define D_SOLAX_ERROR_4 "Pv Voltage Fault"
#define D_SOLAX_ERROR_5 "Isolation Fault"
#define D_SOLAX_ERROR_6 "Over Temperature Fault"
#define D_SOLAX_ERROR_7 "Fan Fault"
#define D_SOLAX_ERROR_8 "Other Device Fault"
#define D_PV1_VOLTAGE "Voltagem PV1"
#define D_PV1_CURRENT "Corrente PV1"
#define D_PV1_POWER "Potência PV1"
#define D_PV2_VOLTAGE "Voltagem PV2"
#define D_PV2_CURRENT "Corrente PV2"
#define D_PV2_POWER "Potência PV2"
#define D_SOLAR_POWER "Potência Solar"
#define D_INVERTER_POWER "Potência do Inversor"
#define D_STATUS "Estado"
#define D_WAITING "Esperando"
#define D_CHECKING "Verificando"
#define D_WORKING "Trabalhando"
#define D_FAILURE "Falha"
#define D_SOLAX_ERROR_0 "Nenhum código de erro"
#define D_SOLAX_ERROR_1 "Falha devido a perda de rede"
#define D_SOLAX_ERROR_2 "Falha devido a perda de tensão"
#define D_SOLAX_ERROR_3 "Falha devido a perda de frequência"
#define D_SOLAX_ERROR_4 "Falha de tensão de Pv"
#define D_SOLAX_ERROR_5 "Falha de isolamento"
#define D_SOLAX_ERROR_6 "Falha de temperatura excessiva"
#define D_SOLAX_ERROR_7 "Falha no ventilador"
#define D_SOLAX_ERROR_8 "Outra falha no dispositivo"
#endif // _LANGUAGE_PT_PT_H_

View File

@ -139,7 +139,7 @@
#define D_RESTARTING "Перезавантаження"
#define D_RESTART_REASON "Причина перезавантаження"
#define D_RESTORE "відновлення"
#define D_RETAINED "нерозподілений"
#define D_RETAINED "зберігати"
#define D_RULE "Правило"
#define D_SAVE "Зберегти"
#define D_SENSOR "Давач"

View File

@ -270,7 +270,7 @@ enum XsnsFunctions {FUNC_SETTINGS_OVERRIDE, FUNC_PIN_STATE, FUNC_MODULE_INIT, FU
FUNC_SAVE_AT_MIDNIGHT, FUNC_SAVE_BEFORE_RESTART,
FUNC_PREP_BEFORE_TELEPERIOD, FUNC_AFTER_TELEPERIOD, FUNC_JSON_APPEND, FUNC_WEB_SENSOR, FUNC_COMMAND, FUNC_COMMAND_SENSOR, FUNC_COMMAND_DRIVER,
FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA,
FUNC_SET_POWER, FUNC_SET_DEVICE_POWER, FUNC_SHOW_SENSOR,
FUNC_SET_POWER, FUNC_SET_DEVICE_POWER, FUNC_SHOW_SENSOR, FUNC_ANY_KEY,
FUNC_ENERGY_EVERY_SECOND, FUNC_ENERGY_RESET,
FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM, FUNC_BUTTON_PRESSED,
FUNC_WEB_ADD_BUTTON, FUNC_WEB_ADD_MAIN_BUTTON, FUNC_WEB_ADD_HANDLER, FUNC_SET_CHANNELS, FUNC_SET_SCHEME};

View File

@ -537,9 +537,10 @@ bool SendKey(uint32_t key, uint32_t device, uint32_t state)
Response_P(PSTR("{\"%s%d\":{\"State\":%d}}"), (key) ? "Switch" : "Button", device, state);
result = XdrvRulesProcess();
}
#ifdef USE_KNX
KnxSendButtonPower(key, device, state);
#endif // USE_KNX
int32_t payload_save = XdrvMailbox.payload;
XdrvMailbox.payload = key << 16 | state << 8 | device;
XdrvCall(FUNC_ANY_KEY);
XdrvMailbox.payload = payload_save;
return result;
}

View File

@ -323,12 +323,22 @@ bool WifiCheckIPv6(void)
}
return ipv6_global;
}
bool WifiCheckIPAddrStatus(void) // Return false for 169.254.x.x or fe80::/64
{
bool ip_global=false;
for (auto a : addrList) {
if(!a.isLocal()) ip_global=true;
}
return ip_global;
}
#endif // LWIP_IPV6=1
void WifiCheckIp(void)
{
#if LWIP_IPV6
if(WifiCheckIPv6()) {
if(WifiCheckIPAddrStatus()) {
Wifi.status = WL_CONNECTED;
#else
if ((WL_CONNECTED == WiFi.status()) && (static_cast<uint32_t>(WiFi.localIP()) != 0)) {
@ -456,7 +466,7 @@ void WifiCheck(uint8_t param)
WifiCheckIp();
}
#if LWIP_IPV6
if (WifiCheckIPv6()) {
if (WifiCheckIPAddrStatus()) {
#else
if ((WL_CONNECTED == WiFi.status()) && (static_cast<uint32_t>(WiFi.localIP()) != 0) && !Wifi.config_type) {
#endif // LWIP_IPV6=1

View File

@ -346,7 +346,7 @@ void MqttPublishLogging(const char *mxtime)
void MqttPublishDirect(const char* topic, bool retained)
{
char sretained[CMDSZ];
char slog_type[10];
char slog_type[20];
#ifdef USE_DEBUG_DRIVER
ShowFreeMem(PSTR("MqttPublishDirect"));

View File

@ -672,8 +672,13 @@ void KnxUpdatePowerState(uint8_t device, power_t state)
}
void KnxSendButtonPower(uint8_t key, uint8_t device, uint8_t state)
void KnxSendButtonPower(void)
{
if (!(Settings.flag.knx_enabled)) { return; }
uint32_t key = (XdrvMailbox.payload >> 16) & 0xFF;
uint32_t device = XdrvMailbox.payload & 0xFF;
uint32_t state = (XdrvMailbox.payload >> 8) & 0xFF;
// key 0 = button_topic
// key 1 = switch_topic
// state 0 = off
@ -681,9 +686,6 @@ void KnxSendButtonPower(uint8_t key, uint8_t device, uint8_t state)
// state 2 = toggle
// state 3 = hold
// state 9 = clear retain flag
if (!(Settings.flag.knx_enabled)) { return; }
// if (key)
// {
// Search all the registered GA that has that output (variable: device) as parameter
uint8_t i = KNX_GA_Search(device + 8);
@ -1207,8 +1209,13 @@ bool Xdrv11(uint8_t function)
case FUNC_LOOP:
if (!global_state.wifi_down) { knx.loop(); } // Process knx events
break;
case FUNC_PRE_INIT:
KNX_INIT();
case FUNC_EVERY_50_MSECOND:
if (toggle_inhibit) {
toggle_inhibit--;
}
break;
case FUNC_ANY_KEY:
KnxSendButtonPower();
break;
#ifdef USE_WEBSERVER
#ifdef USE_KNX_WEB_MENU
@ -1220,14 +1227,12 @@ bool Xdrv11(uint8_t function)
break;
#endif // USE_KNX_WEB_MENU
#endif // USE_WEBSERVER
case FUNC_EVERY_50_MSECOND:
if (toggle_inhibit) {
toggle_inhibit--;
}
break;
case FUNC_COMMAND:
result = DecodeCommand(kKnxCommands, KnxCommand);
break;
case FUNC_PRE_INIT:
KNX_INIT();
break;
// case FUNC_SET_POWER:
// break;
}

View File

@ -28,17 +28,15 @@ const char HASS_DISCOVER_RELAY[] PROGMEM =
"\"val_tpl\":\"{{value_json.%s}}\"," // POWER2
"\"pl_off\":\"%s\"," // OFF
"\"pl_on\":\"%s\"," // ON
// "\"optimistic\":\"false\"," // false is Hass default when state_topic is set
"\"avty_t\":\"%s\"," // tele/dualr2/LWT
"\"pl_avail\":\"" D_ONLINE "\"," // Online
"\"pl_not_avail\":\"" D_OFFLINE "\""; // Offline
const char HASS_DISCOVER_BUTTON_SWITCH[] PROGMEM =
"{\"name\":\"%s\"," // dualr2 1 BTN
"\"stat_t\":\"%s\"," // cmnd/dualr2/POWER (implies "\"optimistic\":\"false\",")
// "\"value_template\":\"{{value_json.%s}}\"," // POWER2
"\"pl_on\":\"%s\"," // TOGGLE
// "\"optimistic\":\"false\"," // false is Hass default when state_topic is set
"\"stat_t\":\"%s\"," // stat/RESULT/ (implies "\"optimistic\":\"false\",")
"\"value_template\":\"{{value_json.%s}}\"," // BUTTON1
"\"pl_on\":\"%s\"," // ON
"\"avty_t\":\"%s\"," // tele/dualr2/LWT
"\"pl_avail\":\"" D_ONLINE "\"," // Online
"\"pl_not_avail\":\"" D_OFFLINE "\""; // Offline
@ -91,10 +89,6 @@ const char HASS_DISCOVER_SENSOR_TEMP[] PROGMEM =
"\"val_tpl\":\"{{value_json['%s'].Temperature}}\"," // "SI7021-14":{"Temperature":null,"Humidity":null} -> {{ value_json['SI7021-14'].Temperature }}
"\"dev_cla\":\"temperature\""; // temperature
const char HASS_DISCOVER_DS18X20_MULTI[] PROGMEM =
",\"json_attributes_topic\":\"%s\","
"\"json_attributes_template\":\"{{{'Id':value_json['%s'].Id}|tojson}}\""; // Add DS18X20 Id as information field
const char HASS_DISCOVER_SENSOR_HUM[] PROGMEM =
",\"unit_of_meas\":\"%%\"," // %
"\"val_tpl\":\"{{value_json['%s'].Humidity}}\"," // "SI7021-14":{"Temperature":null,"Humidity":null} -> {{ value_json['SI7021-14'].Humidity }}
@ -115,10 +109,12 @@ const char HASS_DISCOVER_SENSOR_WATT[] PROGMEM =
",\"unit_of_meas\":\"W\"," // W
"\"val_tpl\":\"{{value_json['%s'].%s}}\"," // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].POWER }}
"\"dev_cla\":\"power\"";
const char HASS_DISCOVER_SENSOR_VOLTAGE[] PROGMEM =
",\"unit_of_meas\":\"V\"," // V
"\"val_tpl\":\"{{value_json['%s'].%s}}\"," // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Voltage }}
"\"dev_cla\":\"power\"";
const char HASS_DISCOVER_SENSOR_AMPERE[] PROGMEM =
",\"unit_of_meas\":\"A\"," // A
"\"val_tpl\":\"{{value_json['%s'].%s}}\"," // "ENERGY":{"TotalStartTime":null,"Total":null,"Yesterday":null,"Today":null,"Power":null,"ApparentPower":null,"ReactivePower":null,"Factor":null,"Voltage":null,"Current":null} -> {{ value_json['ENERGY'].Current }}
@ -127,7 +123,7 @@ const char HASS_DISCOVER_SENSOR_AMPERE[] PROGMEM =
//ILLUMINANCE
const char HASS_DISCOVER_SENSOR_ILLUMINANCE[] PROGMEM =
",\"unit_of_meas\":\"LX\"," // LX by default
"\"val_tpl\":\"{{value_json['%s'].Illuminance}}\"," // "ANALOG":{"Illuminance":34}}
"\"val_tpl\":\"{{value_json['%s'].Illuminance}}\"," // "ANALOG":{"Illuminance":34}}
"\"dev_cla\":\"illuminance\""; // illuminance
const char HASS_DISCOVER_SENSOR_ANY[] PROGMEM =
@ -135,8 +131,9 @@ const char HASS_DISCOVER_SENSOR_ANY[] PROGMEM =
const char HASS_DISCOVER_SENSOR_HASS_STATUS[] PROGMEM =
",\"json_attributes_topic\":\"%s\","
"\"unit_of_meas\":\" \"," // " " As unit of measurement to get a value graph in Hass
"\"val_tpl\":\"{{value_json['" D_JSON_RSSI "']}}\""; // "COUNTER":{"C1":0} -> {{ value_json['COUNTER'].C1 }}
"\"unit_of_meas\":\" \"," // " " As unit of measurement to get a value graph in Hass
"\"val_tpl\":\"{{value_json['" D_JSON_RSSI "']}}\"," // "COUNTER":{"C1":0} -> {{ value_json['COUNTER'].C1 }}
"\"ic\":\"mdi:information-outline\"";
const char HASS_DISCOVER_DEVICE_INFO[] PROGMEM =
",\"uniq_id\":\"%s\","
@ -319,20 +316,20 @@ void HAssAnnounceButtonSwitch(uint8_t device, char* topic, uint8_t present, uint
char prefix[TOPSZ];
char *state_topic = stemp1;
char *availability_topic = stemp2;
char jsoname[8];
if (device+1 > MAX_FRIENDLYNAMES) {
snprintf_P(name, sizeof(name), PSTR("%s %s %d"), Settings.friendlyname[0], key?"SW":"BTN", device+1);
} else {
snprintf_P(name, sizeof(name), PSTR("%s %s"), Settings.friendlyname[device], key?"SW":"BTN");
}
snprintf_P(name, sizeof(name), PSTR("%s %s%d"), Settings.friendlyname[0], key?"Switch":"Button", device+1);
GetPowerDevice(value_template, device+1, sizeof(value_template),
key + Settings.flag.device_index_enable); // Force index for Switch 1, Index on Button1 is controlled by Settings.flag.device_index_enable
GetTopic_P(state_topic, CMND, topic, value_template); // State of button is sent as CMND TOGGLE, state of switch is sent as ON/OFF
//GetTopic_P(state_topic, CMND, topic, value_template); // State of button is sent as CMND TOGGLE, state of switch is sent as ON/OFF
GetTopic_P(state_topic, STAT, mqtt_topic, PSTR(D_RSLT_RESULT));
GetTopic_P(availability_topic, TELE, mqtt_topic, S_LWT);
FindPrefix(state_topic, availability_topic, prefix);
Shorten(&state_topic, prefix);
Shorten(&availability_topic, prefix);
Response_P(HASS_DISCOVER_BUTTON_SWITCH, name, state_topic, Settings.state_text[toggle?2:1], availability_topic);
snprintf_P(jsoname, sizeof(jsoname), PSTR("%s%d"), key?"SWITCH":"BUTTON", device+1);
Response_P(HASS_DISCOVER_BUTTON_SWITCH, name, state_topic, jsoname, Settings.state_text[toggle?2:1], availability_topic);
TryResponseAppend_P(HASS_DISCOVER_DEVICE_INFO_SHORT, unique_id, ESP.getChipId(), WiFi.macAddress().c_str());
if (strlen(prefix) > 0 ) TryResponseAppend_P(HASS_DISCOVER_TOPIC_PREFIX, prefix);
if (toggle) TryResponseAppend_P(HASS_DISCOVER_BUTTON_SWITCH_TOGGLE);
@ -350,7 +347,7 @@ void HAssAnnounceSwitches(void)
// Send info about buttons
char *tmp = Settings.switch_topic;
Format(sw_topic, tmp, sizeof(sw_topic));
if ((strlen(sw_topic) != 0) && strcmp(sw_topic, "0")) {
if (!strcmp_P(sw_topic, "0") || strlen(sw_topic) == 0 ) {
for (uint32_t switch_index = 0; switch_index < MAX_SWITCHES; switch_index++) {
uint8_t switch_present = 0;
uint8_t toggle = 1;
@ -379,7 +376,7 @@ void HAssAnnounceButtons(void)
// Send info about buttons
char *tmp = Settings.button_topic;
Format(key_topic, tmp, sizeof(key_topic));
if ((strlen(key_topic) != 0) && strcmp(key_topic, "0")) {
if (!strcmp_P(key_topic, "0") || strlen(key_topic) == 0 ) {
for (uint32_t button_index = 0; button_index < MAX_KEYS; button_index++) {
uint8_t button_present = 0;
uint8_t toggle = 1;
@ -404,13 +401,13 @@ void HAssAnnounceButtons(void)
}
}
void HAssAnnounceSensor(const char* sensorname, const char* subsensortype)
void HAssAnnounceSensor(const char* sensorname, const char* subsensortype)
{
char stopic[TOPSZ];
char stemp1[TOPSZ];
char stemp2[TOPSZ];
char unique_id[30];
bool is_sensor = true;
bool is_sensor = true;
// Announce sensor, special handling of temperature and humidity sensors
mqtt_data[0] = '\0'; // Clear retained message
@ -466,10 +463,10 @@ void HAssAnnounceSensor(const char* sensorname, const char* subsensortype)
} else if (!strcmp_P(subsensortype, PSTR(D_JSON_ILLUMINANCE))){
TryResponseAppend_P(HASS_DISCOVER_SENSOR_ILLUMINANCE, sensorname, subsensortype);
} else {
if (is_sensor){
TryResponseAppend_P(PSTR(",\"unit_of_meas\":\" \"")); // " " As unit of measurement to get a value graph (not available for binary sensors)
}
TryResponseAppend_P(HASS_DISCOVER_SENSOR_ANY, sensorname, subsensortype);
if (is_sensor){
TryResponseAppend_P(PSTR(",\"unit_of_meas\":\" \"")); // " " As unit of measurement to get a value graph (not available for binary sensors)
}
TryResponseAppend_P(HASS_DISCOVER_SENSOR_ANY, sensorname, subsensortype);
}
TryResponseAppend_P(PSTR("}"));
}
@ -611,6 +608,22 @@ void HAssDiscover(void)
hass_init_step = 1; // Delayed discovery
}
void HAssAnyKey(void)
{
if (!Settings.flag.hass_discovery) { return; }
uint32_t key = (XdrvMailbox.payload >> 16) & 0xFF;
uint32_t device = XdrvMailbox.payload & 0xFF;
uint32_t state = (XdrvMailbox.payload >> 8) & 0xFF;
char scommand[CMDSZ];
snprintf_P(scommand, sizeof(scommand), PSTR("%s%d"), (key) ? "SWITCH" : "BUTTON", device);
char stopic[TOPSZ];
GetTopic_P(stopic, STAT, mqtt_topic, (Settings.flag.mqtt_response) ? scommand : S_RSLT_RESULT);
Response_P(S_JSON_COMMAND_SVALUE, scommand, GetStateText(state));
MqttPublish(stopic);
}
/*********************************************************************************************\
* Interface
\*********************************************************************************************/
@ -621,10 +634,6 @@ bool Xdrv12(uint8_t function)
if (Settings.flag.mqtt_enabled) {
switch (function) {
case FUNC_MQTT_INIT:
hass_mode = 0; // Discovery only if Settings.flag.hass_discovery is set
hass_init_step = 2; // Delayed discovery
break;
case FUNC_EVERY_SECOND:
if (hass_init_step) {
hass_init_step--;
@ -641,6 +650,13 @@ bool Xdrv12(uint8_t function)
}
}
break;
case FUNC_ANY_KEY:
HAssAnyKey();
break;
case FUNC_MQTT_INIT:
hass_mode = 0; // Discovery only if Settings.flag.hass_discovery is set
hass_init_step = 2; // Delayed discovery
break;
}
}
return result;

View File

@ -276,8 +276,11 @@ bool TuyaSetPower(void)
uint8_t rpower = XdrvMailbox.index;
int16_t source = XdrvMailbox.payload;
uint8_t dpid = TuyaGetDpId(TUYA_MCU_FUNC_REL1 + active_device - 1);
if (dpid == 0) dpid = TuyaGetDpId(TUYA_MCU_FUNC_REL1_INV + active_device - 1);
if (source != SRC_SWITCH && TuyaSerial) { // ignore to prevent loop from pushing state from faceplate interaction
TuyaSendBool(active_device, bitRead(rpower, active_device-1) ^ bitRead(rel_inverted, active_device-1));
TuyaSendBool(dpid, bitRead(rpower, active_device-1) ^ bitRead(rel_inverted, active_device-1));
status = true;
}
return status;