Merge branch 'HASwitchPlate:master' into network

This commit is contained in:
Ben Suffolk 2023-10-08 11:25:26 +01:00 committed by GitHub
commit 0af0a775f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
89 changed files with 4423 additions and 533 deletions

View File

@ -32,10 +32,10 @@ jobs:
out: d1-r32-espduino32
- env: d1-r32-unoshield_ili9486_adc
out: d1-r32-espduino32
- out: waveshare
env: "esp32-one_ili9486 -e esp32-one_st7796"
- out: dustinwatts
env: "freetouchdeck_4MB -e freetouchdeck_8MB -e esp32-touchdown"
- out: elecrow
env: "esp32-terminal-rgb_16MB -e esp32-terminal-spi_16MB"
- out: globalsecurity
env: gs-t3e_16MB
- out: lanbon
@ -47,11 +47,15 @@ jobs:
- out: m5stack
env: m5stack-core2
- out: makerfabs
env: "makerfabs-tft35-cap -e makerfabs-s3-tft35-spi -e makerfabs-s3-tft40-rgb -e makerfabs-s3-tft43-rgb"
env: "makerfabs-tft35-cap_4MB -e makerfabs-tft35-cap_16MB -e makerfabs-s3-tft35-spi -e makerfabs-s3-tft40-rgb -e makerfabs-s3-tft43-rgb"
- out: panlee
env: "panlee-zw3d95ce01s-ar-4848_16MB -e panlee-zw3d95ce01s-ur-4848_16MB"
env: "panlee-zw3d95ce01s-ar-4848_16MB -e panlee-zw3d95ce01s-ur-4848_16MB -e panlee-zw3d95ce01s-tr-4848_16MB"
- out: seeed-studios
env: "sensecap-indicator-d1_8MB"
- out: sunton
env: "esp32-2432s028r_4MB -e esp32-3248s035c_4MB -e esp32-3248s035r_4MB -e sunton-4827s043c_16MB -e sunton-8048s043c_16MB -e sunton-8048s050c_16MB -e sunton-8048s070c_16MB"
- out: waveshare
env: "esp32-one_ili9486 -e esp32-one_st7796"
- out: wireless-tag
env: "wt32-sc01_4MB -e wt32-sc01_16MB -e wt-86-32-3zw1 -e wt32-sc01-plus_8MB -e wt32-sc01-plus_16MB"
- out: yeacreate

View File

@ -55,7 +55,7 @@ jobs:
- name: Run PlatformIO
run: pio run -e az-touch-mod-esp32_ili9341_4MB -e az-touch-mod-esp32_ili9341_8MB
- name: Run PlatformIO
run: pio run -e makerfabs-tft35-cap
run: pio run -e makerfabs-tft35-cap_4MB -e makerfabs-tft35-cap_16MB
- name: Run PlatformIO
run: pio run -e yeacreate-nscreen32 -e
- name: Run PlatformIO

View File

@ -31,29 +31,32 @@
- Make the MQTT topics configurable
- MQTT discovery now uses a subtopic of `hasp/discovery`. Discovery requires version 0.7.x of the Custom Component.
- Add service start/stop mqtt
- Add SimpleFTPServer to easily upload and download files to the plate *(one simultanious connection only)*
- Add SimpleFTPServer to easily upload and download files to the plate *(one simultaneous connection only)*
- Add service start/stop ftp
- Add configuration for NTP servers and timezone
- Add support system scripts executed when the idle level is changed
### Devices
- Add Elecrow ESP32-Terminal 3.5" SPI and RGB
- Add GS-T3E Smart Panel
- Add Lilygo Ttgo Lily Pi ESP32
- Add Makerfabs ESP32-S3 SPI
- Add Sunton ESP32-S3 TFT 4.3", 5.0" and 7.0"
- Add Sunton ESP32-2432S028R ESP32-3248S035C ESP32-3248S035R
- Add support for Wireless-Tag WT32-SC01 Plus and WT-86-32-3ZW1
- Add support for Wireless-Tag WT32-SC01 Plus and WT32S3-86V
- Deprecate support for WT-86-32-3ZW1 with ESP32-S2
## Bug fixes
- Fix for first touch not working properly
- Add button GPIOs to input discovery message
### Architecture
- Moved to Tasmota Arduino 2.0.10 and ESP-IDF 4.4.5 (thanks @Jason2866)
- Moved to Tasmota Arduino 2.0.11 and ESP-IDF 4.4.5 (thanks @Jason2866)
- Add Arduino-GFX display driver
- Add support for ESP32-S3 devices
- Deprication of support for ESP32-S2 devices due to lack of sRAM
- Add support for ESP32-S3 and ESP32-C3 devices
- Deprecation of support for ESP32-S2 devices due to lack of sRAM
Updated libraries to ArduinoJson 6.21.2, ArduinoStreamUtils 1.7.0, TFT_eSPI 2.5.0, LovyanGFX 1.1.7 and SimpleFTPServer 2.1.5
Updated libraries to ArduinoJson 6.21.3, ArduinoStreamUtils 1.7.3, AceButton 1.10.1, TFT_eSPI 2.5.0, LovyanGFX 1.1.8 and SimpleFTPServer 2.1.5
## v0.6.3
@ -73,7 +76,7 @@ Updated libraries to ArduinoJson 6.21.2, ArduinoStreamUtils 1.7.0, TFT_eSPI 2.5.
### Web UI
- Updated to modern responsive design *(requires JavaScript)*
- Add `/api/info/` and `/api/config/*/` endpoints
- Allow for a customizible `vars.css`, `style.css`, `script.js` and `edit.htm`
- Allow for a customizable `vars.css`, `style.css`, `script.js` and `edit.htm`
- Display a message when the configuration is changed and a reboot is needed
- Add checkbox for backlight inversion to Display settings (thanks @wolffman122)
- Add checkbox to toggle ANSI codes #261 (thanks @geiseri)
@ -139,7 +142,7 @@ Updated libraries to ArduinoJson 6.19.4, ArduinoStreamUtils 1.6.3, AceButton 1.9
- Add AZ-Touch MOD ESP32 with 2.4" or 2.8"
- Add Lilygo®Ttgo Pi ESP32 with TFT 3.5"
- Add Waveshare ESP32 One development board with Rpi MHS4001(B) or Waveshare RPi(C) LCD display
- Add D1-R32 ESP32 development board with with Waveshare ILI9486 Touch Shield
- Add D1-R32 ESP32 development board with Waveshare ILI9486 Touch Shield
### Bug fixes
- Fix bug that caused a crash when both `btnmatrix` and `msgbox` where used (thanks @AndreTeixeira1998)
@ -192,7 +195,7 @@ Updated libraries to AceButton 1.9.1 and ArduinoJson 6.18.5
### Commands:
- Obsolete `dim` and `light` commands, use `backlight` command instead
- Add `discovery` command to facilitate HA CC discovery
- Add `idle` command to retreive idle state, replaces `wakeup` command
- Add `idle` command to retrieve idle state, replaces `wakeup` command
- Updated `moodlight` command with brightness support
- Rewrite `outputX` and add `inputX` command

153
data/da_DK.json Normal file
View File

@ -0,0 +1,153 @@
{
"en": {
"language": "Dansk",
"home": {
"title": "Hovedmenu",
"btn": "Hovedmenu",
"nav": "Forside"
},
"save": "Gem Indstillinger",
"user": "Brugernavn",
"pass": "Adgangskode",
"hasp": {
"title": "HASP Design",
"btn": "HASP Design",
"theme": "UI Tema",
"color1": "Primær farve",
"color2": "Sekundær farve",
"pages": "Start Layout",
"font": "Standardfont",
"startpage": "Opstarts side",
"startdim": "Opstartslysstyrke"
},
"screenshot": {
"title": "Skærmbillede",
"btn": "Skærmbillede",
"nav": "Skærmbillede",
"prev": "Forrige Side",
"next": "Næste Side",
"refresh": "Opdater"
},
"info": {
"title": "Information",
"btn": "Information",
"nav": "Information"
},
"config": {
"title": "Konfiguration",
"btn": "Konfiguration",
"nav": "Indstillinger"
},
"ota": {
"title": "Firmware Opdatering",
"btn": "Firmware Opdatering",
"nav": "Firmware",
"submit": "Opdater Firmware",
"file": "Firmware Fil",
"url": "Firmware URL",
"redirect": "Følg Omdirigeringer",
"never": "Aldrig",
"strict": "Streng",
"always": "Altid"
},
"editor": {
"title": "Fil Editor",
"btn": "Fil Editor",
"nav": "Fil Editor"
},
"reset": {
"title": "Gendan fabriksindstillinger",
"btn": "Gendan fabriksindstillinger",
"warning": "Advarsel",
"message": "Denne proces vil nulstille alle indstillinger til standardværdierne. Den interne flash vil blive slettet, og enheden genstartes. Du skal muligvis oprette forbindelse til WiFi AP vist på panelet for at omkonfigurere enheden, før du får adgang til den igen.",
"fileloss": "ALLE FILER VIL TABE!"
},
"reboot": {
"title": "Genstarter...",
"btn": "Genstart",
"nav": "Genstart",
"message": "Enheden er ved at genstarte."
},
"about": {
"credits": "Baseret på det tidligere arbejde fra følgende open source-udviklere:",
"copyright": "Ophavsret ",
"rights": "Alle rettigheder forbeholdes.",
"clause1": "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
"clause2": "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
"clause3": "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"mit": "MIT Licens",
"bsd": "Bsd Licens",
"freebsd": "FreeBSD Licens",
"apache2": "Apache2 Licens"
},
"wifi": {
"title": "WiFi Indstillinger",
"btn": "WiFi Indstillinger",
"ssid": "SSID"
},
"mqtt": {
"title": "MQTT Indstillinger",
"btn": "MQTT Indstillinger",
"name": "Værtsnavn",
"group": "Gruppenavn",
"host": "Broker",
"port": "Port",
"node_t": "Node Emne",
"group_t": "Gruppe Emne",
"broadcast_t": "Broadcast Emne",
"hass_t": "HA LWT Emne"
},
"http": {
"title": "HTTP Indstillinger",
"btn": "HTTP Indstillinger"
},
"ftp": {
"title": "FTP Indstillinger",
"btn": "FTP Indstillinger",
"port": "FTP Port",
"pasv": "Passiv Port"
},
"gui": {
"title": "Skærm Indstillinger",
"btn": "Skærm Indstillinger",
"antiburn": "Antiforbrænding",
"calibrate": "Kalibrér"
},
"gpio": "GPIO Indstillinger",
"debug": {
"title": "Debug Indstillinger",
"btn": "Debug Indstillinger",
"baud": "Baudrate",
"tele": "Tele Periode",
"ansi": "Brug ANSI-koder",
"host": "Syslog Server",
"port": "Syslog Port",
"ietf": "IETF (RFC 5424)",
"bsd": "BSD (RFC 3164)",
"log": "Facilitet"
},
"time": {
"title": "Tids Indstillinger",
"btn": "Tids Indstillinger",
"region": "Region",
"zone": "Tidszone",
"tz": "Tidszone",
"ntp": "NTP-servere"
},
"region": {
"etc": "Etcetera ",
"continents": "Kontinenter ",
"af": "Afrika ",
"as": "Asien ",
"au": "Australien ",
"aq": "Antarktis ",
"eu": "Europa ",
"na": "Nordamerika ",
"sa": "Sydamerika ",
"islands": "Øer ",
"at": "Atlanterhavet ",
"in": "Indiske Ocean ",
"pa": "Stillehavet "
}
}
}

153
data/de_DE.json Normal file
View File

@ -0,0 +1,153 @@
{
"en": {
"language": "Deutsch",
"home": {
"title": "Hauptmenü",
"btn": "Hauptmenü",
"nav": "Startseite"
},
"save": "Einstellungen speichern",
"user": "Benutzername",
"pass": "Passwort",
"hasp": {
"title": "HASP-Design",
"btn": "HASP-Design",
"theme": "UI-Thema",
"color1": "Hauptfarbe",
"color2": "Sekundärfarbe",
"pages": "Start-Layout",
"font": "Standardschrift",
"startpage": "Startseite",
"startdim": "Starthelligkeit"
},
"screenshot": {
"title": "Bildschirmaufnahme",
"btn": "Bildschirmaufnahme",
"nav": "Bildschirmaufnahme",
"prev": "Vorherige Seite",
"next": "Nächste Seite",
"refresh": "Aktualisieren"
},
"info": {
"title": "Informationen",
"btn": "Informationen",
"nav": "Informationen"
},
"config": {
"title": "Konfiguration",
"btn": "Konfiguration",
"nav": "Konfiguration"
},
"ota": {
"title": "Firmware Update",
"btn": "Firmware Update",
"nav": "Firmware",
"submit": "Firmware aktualisieren",
"file": "Firmware-Datei",
"url": "Firmware-URL",
"redirect": "Umleitungen folgen",
"never": "Niemals",
"strict": "Strikt",
"always": "Immer"
},
"editor": {
"title": "Datei Editor",
"btn": "Datei Editor",
"nav": "Datei Editor"
},
"reset": {
"title": "Werkseinsetzung",
"btn": "Werkseinstellungen zurücksetzen",
"warning": "Warnung",
"message": "Dieser Prozess setzt alle Einstellungen auf die Standardwerte zurück. Der interne Blitz wird gelöscht und das Gerät wird neu gestartet. Möglicherweise müssen Sie eine Verbindung zu dem WiFi AP auf dem Panel herstellen, um das Gerät neu zu konfigurieren, bevor Sie auf es erneut zugreifen.",
"fileloss": "ALLE DATEIEN WERDEN GELÖSCHT!"
},
"reboot": {
"title": "Neustarten...",
"btn": "Neustarten",
"nav": "Neustart",
"message": "Das Gerät wird neu gestartet."
},
"about": {
"credits": "Basierend auf der bisherigen Arbeit der folgenden Open-Source-Entwickler:",
"copyright": "Urheberrechte ",
"rights": "Alle Rechte vorbehalten.",
"clause1": "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
"clause2": "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
"clause3": "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"mit": "MIT-Lizenz",
"bsd": "BSD-Lizenz",
"freebsd": "FreeBSD-Lizenz",
"apache2": "Apache2-Lizenz"
},
"wifi": {
"title": "WiFi-Einstellungen",
"btn": "WiFi-Einstellungen",
"ssid": "SSID"
},
"mqtt": {
"title": "MQTT-Einstellungen",
"btn": "MQTT-Einstellungen",
"name": "Hostname",
"group": "Gruppenname",
"host": "Broker",
"port": "Port",
"node_t": "Knoten-Thema",
"group_t": "Gruppen-Thema",
"broadcast_t": "Broadcast-Thema",
"hass_t": "HA LWT-Thema"
},
"http": {
"title": "HTTP-Einstellungen",
"btn": "HTTP-Einstellungen"
},
"ftp": {
"title": "FTP-Einstellungen",
"btn": "FTP-Einstellungen",
"port": "FTP-Port",
"pasv": "Passiver Port"
},
"gui": {
"title": "Bildschirmeinstellungen",
"btn": "Bildschirmeinstellungen",
"antiburn": "Anti-Burn",
"calibrate": "Kalibrieren"
},
"gpio": "GPIO-Einstellungen",
"debug": {
"title": "Debug-Einstellungen",
"btn": "Debug-Einstellungen",
"baud": "Baudrate",
"tele": "Tele-Periode",
"ansi": "ANSI-Codes verwenden",
"host": "Syslog-Server",
"port": "Syslog-Port",
"ietf": "IETF (RFC 5424)",
"bsd": "BSD (RFC 3164)",
"log": "Facility"
},
"time": {
"title": "Zeit Einstellungen",
"btn": "Zeit Einstellungen",
"region": "Region",
"zone": "Zeitzone",
"tz": "Zeitzone",
"ntp": "NTP-Server"
},
"region": {
"etc": "Etcetera ",
"continents": "Kontinenten ",
"af": "Afrika ",
"as": "Asien ",
"au": "Australien ",
"aq": "Antarctica ",
"eu": "Europa ",
"na": "Nordamerika ",
"sa": "Südamerika ",
"islands": "Inseln ",
"at": "Atlantischer Ozean ",
"in": "Indischer Ozean ",
"pa": "Pazifischer Ozean "
}
}
}

View File

@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.23.0/ace.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.23.0/theme-monokai.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.23.0/mode-html.js"></script><script type="module" src="/static/main.js?COMMIT_HASH"></script><script src="/static/script.js?COMMIT_HASH"></script><title>openHASP File Editor</title><link rel="stylesheet" href="/static/vars.css?COMMIT_HASH"><link rel="stylesheet" href="/static/style.css?COMMIT_HASH"><link rel="icon" href="/static/logo.svg?COMMIT_HASH" type="image/svg+xml"><link href="https://fonts.cdnfonts.com/css/jetbrains-mono" rel="stylesheet"><link href="https://fonts.cdnfonts.com/css/source-code-pro" rel="stylesheet"><style>ul{list-style-type:none;padding-left:20px}ul>li{white-space:nowrap}.inact:hover{cursor:default}.item:hover{cursor:pointer;background-color:#dadaff}.item>span:nth-child(2):hover{text-decoration:underline}.selitem>div{background-color:#ccf}.selitem>div:hover{background-color:#ccf}</style></head><body v-cloak v-scope @vue:mounted="mounted"><div class="container__editor" onmousedown="hidectx()"><div class="container__left"><div id="tree"><div class="item bold"><span class="fi fa-flash" title="/"></span><span>L:</span></div></div></div><div class="resizer" id="dragMe"></div><div class="container__right"><div class="toolbar"><input type="file" id="upload" name="upload" multiple="multiple" hidden><span class="left"><button id="home">Home</button><button onclick='upload(_("tree"),"/")'>Upload</button><button id="save" disabled="disabled">Save</button></span><div class="right"><input id="page" type="number" min="1" max="12" class="number"><button id="load">Reload Pages</button><button id="init">Clear Pages</button></div><span class="left"><button id="cut" disabled="disabled">Cut</button><button id="copy" disabled="disabled">Copy</button><button id="paste" disabled="disabled">Paste</button></span><span id="name"></span><span class="left"><button id="undo" disabled="disabled">Undo</button><button id="redo" disabled="disabled">Redo</button></span><span class="left"><select id="font"><option>JetBrains Mono</option><option selected="selected">Source Code Pro</option><input id="fontsize" type="number" step="any" min="9" max="40" value="12"></span></div><div id="editor" class="container__bottom"></div><div id="preview" class="container__bottom"></div><iframe id="download-frame"></iframe></div><div id="ctx" onmousedown="event.stopPropagation()"><ul><li><span class="icon file"></span>New File</li><li><span class="icon upload"></span>Upload Files</li><li><span class="icon edit"></span>Edit</li><li><span class="icon eye"></span>Preview</li><li><span class="icon download"></span>Download</li><li><span class="icon trash"></span>Delete</li></ul></div></div><div id="toast"></div></body></html>
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.24.2/ace.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.24.2/theme-monokai.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.24.2/mode-html.js"></script><script type="module" src="/static/main.js?COMMIT_HASH"></script><script src="/static/script.js?COMMIT_HASH"></script><title>openHASP File Editor</title><link rel="stylesheet" href="/static/vars.css?COMMIT_HASH"><link rel="stylesheet" href="/static/style.css?COMMIT_HASH"><link rel="icon" href="/static/logo.svg?COMMIT_HASH" type="image/svg+xml"><link href="https://fonts.cdnfonts.com/css/jetbrains-mono" rel="stylesheet"><link href="https://fonts.cdnfonts.com/css/source-code-pro" rel="stylesheet"><style>ul{list-style-type:none;padding-left:20px}ul>li{white-space:nowrap}.inact:hover{cursor:default}.item:hover{cursor:pointer;background-color:#dadaff}.item>span:nth-child(2):hover{text-decoration:underline}.selitem>div{background-color:#ccf}.selitem>div:hover{background-color:#ccf}</style></head><body v-cloak v-scope @vue:mounted="mounted"><div class="container__editor" onmousedown="hidectx()"><div class="container__left"><div id="tree"><div class="item bold"><span class="fi fa-flash" title="/"></span><span>L:</span></div></div></div><div class="resizer" id="dragMe"></div><div class="container__right"><div class="toolbar"><input type="file" id="upload" name="upload" multiple="multiple" hidden><span class="left"><button id="home">Home</button><button onclick='upload(_("tree"),"/")'>Upload</button><button id="save" disabled="disabled">Save</button></span><div class="right"><input id="page" type="number" min="1" max="12" class="number"><button id="load">Reload Pages</button><button id="init">Clear Pages</button></div><span class="left"><button id="cut" disabled="disabled">Cut</button><button id="copy" disabled="disabled">Copy</button><button id="paste" disabled="disabled">Paste</button></span><span id="name"></span><span class="left"><button id="undo" disabled="disabled">Undo</button><button id="redo" disabled="disabled">Redo</button></span><span class="left"><select id="font"><option>JetBrains Mono</option><option selected="selected">Source Code Pro</option><input id="fontsize" type="number" step="any" min="9" max="40" value="12"></span></div><div id="editor" class="container__bottom"></div><div id="preview" class="container__bottom"></div><iframe id="download-frame"></iframe></div><div id="ctx" onmousedown="event.stopPropagation()"><ul><li><span class="icon file"></span>New File</li><li><span class="icon upload"></span>Upload Files</li><li><span class="icon edit"></span>Edit</li><li><span class="icon eye"></span>Preview</li><li><span class="icon download"></span>Download</li><li><span class="icon trash"></span>Delete</li></ul></div></div><div id="toast"></div></body></html>

153
data/es_ES.json Normal file
View File

@ -0,0 +1,153 @@
{
"en": {
"language": "Español",
"home": {
"title": "Menu Principal",
"btn": "Menu Principal",
"nav": "Inicio"
},
"save": "Guardar Configuración",
"user": "Usuario",
"pass": "Contraseña",
"hasp": {
"title": "Diseño de HASP",
"btn": "Diseño de HASP",
"theme": "Tema de IU",
"color1": "Color Primario",
"color2": "Color Secundario",
"pages": "Diseño inicial",
"font": "Fuente por Defecto",
"startpage": "Página inicial",
"startdim": "Brillo inicial"
},
"screenshot": {
"title": "Captura de pantalla",
"btn": "Captura de pantalla",
"nav": "Captura de pantalla",
"prev": "Página Previa",
"next": "Siguiente Página",
"refresh": "Refrescar"
},
"info": {
"title": "Información",
"btn": "Información",
"nav": "Información"
},
"config": {
"title": "Configuración",
"btn": "Configuración",
"nav": "Configuración"
},
"ota": {
"title": "Actualización de firmware",
"btn": "Actualización de firmware",
"nav": "Firmware",
"submit": "Actualizar Firmware",
"file": "Archivo Firmware",
"url": "URL del firmware",
"redirect": "Seguir redirecciones",
"never": "Nunca",
"strict": "Estricto",
"always": "Siempre"
},
"editor": {
"title": "Editor de Archivos",
"btn": "Editor de Archivos",
"nav": "Editor de Archivos"
},
"reset": {
"title": "Restaurar conf de fábrica",
"btn": "Restaurar conf de fábrica",
"warning": "Aviso",
"message": "Este proceso restablecerá todos los ajustes a los valores por defecto. El flash interno se borrará y el dispositivo se reiniciará. Puede que necesite conectarse al AP WiFi mostrado en el panel para reconfigurar el dispositivo antes de volver a acceder a él.",
"fileloss": "¡TODOS LOS ARCHIVOS SERÁN PERDIDOS!"
},
"reboot": {
"title": "Reiniciando...",
"btn": "Reiniciar",
"nav": "Reiniciar",
"message": "El dispositivo se está reiniciando."
},
"about": {
"credits": "Basado en el trabajo anterior de los siguientes desarrolladores de código abierto:",
"copyright": "Copyright ",
"rights": "Todos los derechos reservados.",
"clause1": "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
"clause2": "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
"clause3": "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"mit": "Licencia MIT",
"bsd": "Licencia BSD",
"freebsd": "Licencia FreeBSD",
"apache2": "Licencia Apache2"
},
"wifi": {
"title": "Ajustes Wifi",
"btn": "Ajustes Wifi",
"ssid": "SSID"
},
"mqtt": {
"title": "Ajustes MQTT",
"btn": "Ajustes MQTT",
"name": "Nombre de equipo",
"group": "Nombre del Grupo",
"host": "Broker",
"port": "Puerto",
"node_t": "Tema del Nodo",
"group_t": "Tema del Grupo",
"broadcast_t": "Tema de Broadcast",
"hass_t": "Tema HA LWT"
},
"http": {
"title": "Ajustes HTTP",
"btn": "Ajustes HTTP"
},
"ftp": {
"title": "Ajustes FTP",
"btn": "Ajustes FTP",
"port": "Puerto FTP",
"pasv": "Puerto Pasivo"
},
"gui": {
"title": "Ajustes de Pantalla",
"btn": "Ajustes de Pantalla",
"antiburn": "Anti-quemaduras",
"calibrate": "Calibrar"
},
"gpio": "Ajustes GPIO",
"debug": {
"title": "Ajustes de depuración",
"btn": "Ajustes de depuración",
"baud": "Baudios",
"tele": "Periodo de Tele",
"ansi": "Usar códigos ANSI",
"host": "Servidor Syslog",
"port": "Puerto Syslog",
"ietf": "IETF (RFC 5424)",
"bsd": "BSD (RFC 3164)",
"log": "Facility"
},
"time": {
"title": "Ajustes de Tiempo",
"btn": "Ajustes de Tiempo",
"region": "Región",
"zone": "Zona horaria",
"tz": "Zona horaria",
"ntp": "Servidores NTP"
},
"region": {
"etc": "Etcetera ",
"continents": "Continentes ",
"af": "Africa ",
"as": "Asia ",
"au": "Australia ",
"aq": "Antarctica ",
"eu": "Europa ",
"na": "América del Norte ",
"sa": "América del Sur ",
"islands": "Islas ",
"at": "Océano Atlántico ",
"in": "Océano Índico ",
"pa": "Océano Pacífico "
}
}
}

153
data/fr_FR.json Normal file
View File

@ -0,0 +1,153 @@
{
"en": {
"language": "Français",
"home": {
"title": "Menu Principal",
"btn": "Menu Principal",
"nav": "Page d'accueil"
},
"save": "Enregistrer les Paramètres",
"user": "Nom d'utilisateur",
"pass": "Mot de Passe",
"hasp": {
"title": "Design HASP",
"btn": "Design HASP",
"theme": "Thème UI",
"color1": "Couleur Primaire",
"color2": "Couleur Secondaire",
"pages": "Mise en page",
"font": "Police par défaut",
"startpage": "Page de départ",
"startdim": "Luminosité"
},
"screenshot": {
"title": "Capture d'écran",
"btn": "Capture d'écran",
"nav": "Capture d'écran",
"prev": "Page Précédente",
"next": "Page Suivante",
"refresh": "Actualiser"
},
"info": {
"title": "Information",
"btn": "Information",
"nav": "Information"
},
"config": {
"title": "Configuration",
"btn": "Configuration",
"nav": "Paramètres"
},
"ota": {
"title": "Mise à jour du micrologiciel",
"btn": "Mise à jour du micrologiciel",
"nav": "Micrologiciel",
"submit": "Mettre à jour le firmware",
"file": "Fichier du Firmware",
"url": "URL du Firmware",
"redirect": "Suivre les redirections",
"never": "Jamais",
"strict": "Stricte",
"always": "Toujours"
},
"editor": {
"title": "Éditeur de fichiers",
"btn": "Éditeur de fichiers",
"nav": "Éditeur de fichiers"
},
"reset": {
"title": "Paramètres d'usine",
"btn": "Retour aux paramètres d'usine",
"warning": "Attention",
"message": "Ce processus va réinitialiser tous les paramètres aux valeurs par défaut. Le flash interne sera effacé et l'appareil sera redémarré. Il se peut que vous deviez vous connecter à l'AP WiFi affiché sur le panneau pour reconfigurer l'appareil avant d'y accéder.",
"fileloss": "TOUS LES FICHIERS SERONT PERDUS !"
},
"reboot": {
"title": "Redémarrage en cours...",
"btn": "Redémarrer",
"nav": "Redémarrer",
"message": "L'appareil est en cours de redémarrage."
},
"about": {
"credits": "Basé sur le travail précédent des développeurs Open Source suivants :",
"copyright": "Droits dauteur ",
"rights": "Tous les droits sont réservés.",
"clause1": "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
"clause2": "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
"clause3": "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"mit": "Licence MIT",
"bsd": "Licence BSD",
"freebsd": "Licence FreeBSD",
"apache2": "Licence Apache2"
},
"wifi": {
"title": "Paramètres WiFi",
"btn": "Paramètres WiFi",
"ssid": "SSID"
},
"mqtt": {
"title": "Paramètres MQTT",
"btn": "Paramètres MQTT",
"name": "Nom d'hôte",
"group": "Groupe",
"host": "Broker",
"port": "Port",
"node_t": "Sujet du Node",
"group_t": "Sujet de Groupe",
"broadcast_t": "Sujet Broadcast",
"hass_t": "Sujet HA LWT"
},
"http": {
"title": "Paramètres HTTP",
"btn": "Paramètres HTTP"
},
"ftp": {
"title": "Paramètres FTP",
"btn": "Paramètres FTP",
"port": "Port FTP",
"pasv": "Port Passif"
},
"gui": {
"title": "Paramètres d'affichage",
"btn": "Paramètres d'affichage",
"antiburn": "Anti-brûlure",
"calibrate": "Calibrer"
},
"gpio": "Paramètres GPIO",
"debug": {
"title": "Paramètres de Débogage",
"btn": "Paramètres de Débogage",
"baud": "Baudrate",
"tele": "Période de Tele",
"ansi": "Utiliser les codes ANSI",
"host": "Serveur Syslog",
"port": "Port Syslog",
"ietf": "IETF (RFC 5424)",
"bsd": "BSD (RFC 3164)",
"log": "Facility"
},
"time": {
"title": "Paramètres de l'heure",
"btn": "Paramètres de l'heure",
"region": "Région",
"zone": "Fuseau horaire",
"tz": "Fuseau horaire",
"ntp": "Serveurs NTP"
},
"region": {
"etc": "Etcetera ",
"continents": "Continents ",
"af": "L'Afrique ",
"as": "L'Asie ",
"au": "L'Australie ",
"aq": "Antarctique ",
"eu": "LEurope ",
"na": "L'Amérique du Nord ",
"sa": "L'Amérique du Sud ",
"islands": "Îles ",
"at": "L'océan Atlantique ",
"in": "L'océan Indien ",
"pa": "L'océan Pacifique "
}
}
}

153
data/hu_HU.json Normal file
View File

@ -0,0 +1,153 @@
{
"en": {
"language": "Magyar",
"home": {
"title": "Főmenü",
"btn": "Főmenü",
"nav": "Főoldal"
},
"save": "Beállítások mentése",
"user": "Felhasználónév",
"pass": "Jelszó",
"hasp": {
"title": "Képernyő dizájn",
"btn": "Képernyő dizájn",
"theme": "UI téma",
"color1": "Elsődleges szín",
"color2": "Másodlagos szín",
"pages": "Betöltendő oldalak",
"font": "Alapértelmezett font",
"startpage": "Kezdő oldal",
"startdim": "Kezdeti fényerő"
},
"screenshot": {
"title": "Képernyőkép",
"btn": "Képernyőkép",
"nav": "Képernyőkép",
"prev": "Előző oldal",
"next": "Következő oldal",
"refresh": "Frissítés"
},
"info": {
"title": "Információk",
"btn": "Információk",
"nav": "Információk"
},
"config": {
"title": "Beállítások",
"btn": "Beállítások",
"nav": "Beállítások"
},
"ota": {
"title": "Firmware frissítés",
"btn": "Firmware frissítés",
"nav": "Firmware",
"submit": "Firmware frissítése",
"file": "Firmware fájl",
"url": "Firmware URL",
"redirect": "Átirányítások",
"never": "Soha",
"strict": "Szigorú",
"always": "Mindig"
},
"editor": {
"title": "Fájlkezelő",
"btn": "Fájlkezelő",
"nav": "Fájlkezelő"
},
"reset": {
"title": "Gyári beállítások visszaállítása",
"btn": "Gyári beállítások visszaállítása",
"warning": "Képernyőkép",
"message": "Ez a folyamat az összes beállítást visszaállítja az alapértelmezett értékekre. A belső memória törlődik, majd a készülék újraindul. Előfordulhat, hogy csatlakoznia kell a panelen megjelenő WiFi hozzáférési ponthoz az eszköz újrakonfigurálásához, mielőtt ismét hozzá tudna férni.",
"fileloss": "AZ ÖSSZES FÁJL TÖRLŐDIK!"
},
"reboot": {
"title": "Újraindítás...",
"btn": "Újraindítás",
"nav": "Újraindítás",
"message": "Az eszköz újraindul."
},
"about": {
"credits": "Az alábbi nyílt forráskódú fejlesztők korábbi munkája alapján:",
"copyright": "Copyright ",
"rights": "Minden jog fenntartva.",
"clause1": "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
"clause2": "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
"clause3": "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"mit": "MIT licenc",
"bsd": "BSD licenc",
"freebsd": "FreeBSD licenc",
"apache2": "Apache2 licenc"
},
"wifi": {
"title": "WiFi beállítások",
"btn": "WiFi beállítások",
"ssid": "SSID"
},
"mqtt": {
"title": "MQTT beállítások",
"btn": "MQTT beállítások",
"name": "Név",
"group": "Csoport",
"host": "Szerver",
"port": "Port",
"node_t": "Eszköz topik",
"group_t": "Csoport topik",
"broadcast_t": "Mindenki topik",
"hass_t": "HA LWT topik"
},
"http": {
"title": "HTTP beállítások",
"btn": "HTTP beállítások"
},
"ftp": {
"title": "FTP beállítások",
"btn": "FTP beállítások",
"port": "FTP Port",
"pasv": "Passzív Port"
},
"gui": {
"title": "Képernyő beállítások",
"btn": "Képernyő beállítások",
"antiburn": "Beégésvédelem futtatása",
"calibrate": "Kalibrálás"
},
"gpio": "GPIO beállítások",
"debug": {
"title": "Hibakeresési beállítások",
"btn": "Hibakeresési beállítások",
"baud": "Baud ráta",
"tele": "Tele- periódus",
"ansi": "ANSI kódolás",
"host": "Syslog szerver",
"port": "Syslog port",
"ietf": "IETF (RFC 5424)",
"bsd": "BSD (RFC 3164)",
"log": "Facility"
},
"time": {
"title": "Idő beállítások",
"btn": "Idő beállítások",
"region": "Régió",
"zone": "Időzóna",
"tz": "Időzóna",
"ntp": "NTP szerverek"
},
"region": {
"etc": "Etcetera ",
"continents": "Kontinensek ",
"af": "Afrika ",
"as": "Ázsia ",
"au": "Ausztrália ",
"aq": "Antarktika ",
"eu": "Európa ",
"na": "Észak-Amerika ",
"sa": "Dél-Amerika ",
"islands": "Szigetek ",
"at": "Atlanti-óceán ",
"in": "Indiai-óceán ",
"pa": "Csendes-óceán "
}
}
}

153
data/nl_NL.json Normal file
View File

@ -0,0 +1,153 @@
{
"en": {
"language": "Nederlands",
"home": {
"title": "Hoofdmenu",
"btn": "Hoofdmenu",
"nav": "Hoofdpagina"
},
"save": "Instellingen Opslaan",
"user": "Gebruikersnaam",
"pass": "Wachtwoord",
"hasp": {
"title": "HASP Design",
"btn": "HASP Design",
"theme": "UI Thema",
"color1": "Primaire Kleur",
"color2": "Secundaire Kleur",
"pages": "Start Lay-out",
"font": "Standaard Lettertype",
"startpage": "Startpagina",
"startdim": "Start Helderheid"
},
"screenshot": {
"title": "Schermafdruk",
"btn": "Schermafdruk",
"nav": "Schermafdruk",
"prev": "Vorige Pagina",
"next": "Volgende Pagina",
"refresh": "Vernieuwen"
},
"info": {
"title": "Informatie",
"btn": "Informatie",
"nav": "Informatie"
},
"config": {
"title": "Instellingen",
"btn": "Instellingen",
"nav": "Instellingen"
},
"ota": {
"title": "Firmware Bijwerken",
"btn": "Firmware Bijwerken",
"nav": "Firmware",
"submit": "Firmware Bijwerken",
"file": "Firmware Bestand",
"url": "Firmware URL",
"redirect": "Volg Redirects",
"never": "Nooit",
"strict": "Strikt",
"always": "Altijd"
},
"editor": {
"title": "Bestandseditor",
"btn": "Bestandseditor",
"nav": "Bestandseditor"
},
"reset": {
"title": "Fabrieksinstellingen",
"btn": "Fabrieksinstellingen",
"warning": "Waarschuwing",
"message": "Dit proces zal alle instellingen terugzetten naar de standaardwaarden. De interne flash zal worden gewist en het apparaat wordt opnieuw gestart. U moet mogelijk verbinding maken met het Wifi AP die wordt weergegeven op het paneel om het apparaat opnieuw te configureren voordat u weer toegang krijgt.",
"fileloss": "ALLE BESTANDEN WORDEN VERWIJDERD!"
},
"reboot": {
"title": "Herstarten...",
"btn": "Herstarten",
"nav": "Herstart",
"message": "Het apparaat wordt herstart."
},
"about": {
"credits": "Gebaseerd op het eerdere werk van de volgende Open Source ontwikkelaars:",
"copyright": "Copyright ",
"rights": "Alle rechten voorbehouden.",
"clause1": "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
"clause2": "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
"clause3": "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"mit": "MIT Licentie",
"bsd": "BSD Licentie",
"freebsd": "FreeBSD Licentie",
"apache2": "Apache2 Licentie"
},
"wifi": {
"title": "Wifi Instellingen",
"btn": "Wifi Instellingen",
"ssid": "SSID"
},
"mqtt": {
"title": "MQTT Instellingen",
"btn": "MQTT Instellingen",
"name": "Hostnaam",
"group": "Groepsnaam",
"host": "Broker",
"port": "Poort",
"node_t": "Node Onderwerp",
"group_t": "Groep Onderwerp",
"broadcast_t": "Broadcast Onderwerp",
"hass_t": "HA LWT Onderwerp"
},
"http": {
"title": "HTTP Instellingen",
"btn": "HTTP Instellingen"
},
"ftp": {
"title": "FTP Instellingen",
"btn": "FTP Instellingen",
"port": "FTP Poort",
"pasv": "Passieve Poort"
},
"gui": {
"title": "Scherminstellingen",
"btn": "Scherminstellingen",
"antiburn": "Inbranden Voorkomen",
"calibrate": "Kalibreer"
},
"gpio": "GPIO Instellingen",
"debug": {
"title": "Debug Instellingen",
"btn": "Debug Instellingen",
"baud": "Baudrate",
"tele": "Tele Periode",
"ansi": "Gebruik ANSI codes",
"host": "Syslog Server",
"port": "Syslog Poort",
"ietf": "IETF (RFC 5424)",
"bsd": "BSD (RFC 3164)",
"log": "Faciliteit"
},
"time": {
"title": "Tijdsinstellingen",
"btn": "Tijdsinstellingen",
"region": "Regio",
"zone": "Tijdzone",
"tz": "Tijdzone",
"ntp": "NTP Servers"
},
"region": {
"etc": "Etcetera ",
"continents": "Continenten ",
"af": "Afrika ",
"as": "Azië ",
"au": "Australië ",
"aq": "Antarctica ",
"eu": "Europa ",
"na": "Noord-Amerika ",
"sa": "Zuid-Amerika ",
"islands": "Eilanden ",
"at": "Atlantische Oceaan ",
"in": "Indische Oceaan ",
"pa": "Stille Oceaan "
}
}
}

153
data/pt_BR.json Normal file
View File

@ -0,0 +1,153 @@
{
"en": {
"language": "Portuguese-Brazil",
"home": {
"title": "Menu Principal",
"btn": "Menu Principal",
"nav": "Início"
},
"save": "Guardar Configuração",
"user": "Usuário",
"pass": "Senha",
"hasp": {
"title": "Design do HASP",
"btn": "Design do HASP",
"theme": "Tema da IU",
"color1": "Cor principal",
"color2": "Cor secundária",
"pages": "Layout inicial",
"font": "Fonte padrão",
"startpage": "Startup Page",
"startdim": "Startup Dim"
},
"screenshot": {
"title": "Screenshot",
"btn": "Screenshot",
"nav": "Screenshot",
"prev": "Página Anterior",
"next": "Página Seguinte",
"refresh": "Atualizar"
},
"info": {
"title": "Informação",
"btn": "Informação",
"nav": "Informação"
},
"config": {
"title": "Configuração",
"btn": "Configuração",
"nav": "Configuração"
},
"ota": {
"title": "Atualização do firmware",
"btn": "Atualização do firmware",
"nav": "Firmware",
"submit": "Atualizar o firmware",
"file": "Arquivo de Firmware",
"url": "URL de Firmware",
"redirect": "Seguir redirecionamentos",
"never": "Nunca",
"strict": "Estrito",
"always": "Sempre"
},
"editor": {
"title": "Editor de ficheiros",
"btn": "Editor de ficheiros",
"nav": "Editor de ficheiros"
},
"reset": {
"title": "Repor configuração de fábrica",
"btn": "Repor configuração de fábrica",
"warning": "Aviso",
"message": "Este processo irá redefinir todas as configurações para os valores padrão. O flash interno será apagado e o dispositivo será reiniciado. Talvez seja necessário conectar-se ao WiFi AP exibido no painel para reconfigurar o dispositivo antes de acessá-lo novamente.",
"fileloss": "TODOS OS ARQUIVOS SERÃO PERDIDOS!"
},
"reboot": {
"title": "Reiniciando...",
"btn": "Reiniciar",
"nav": "Reiniciar",
"message": "Este dispositivo está reiniciando."
},
"about": {
"credits": "Com base no trabalho anterior dos seguintes desenvolvedores de código aberto:",
"copyright": "Direitos autorais ",
"rights": "Todos os direitos reservados.",
"clause1": "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
"clause2": "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
"clause3": "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"mit": "Licença MIT",
"bsd": "Licença BSD",
"freebsd": "Licença FreeBSD",
"apache2": "Licença Apache2"
},
"wifi": {
"title": "Configurar Wifi",
"btn": "Configurar Wifi",
"ssid": "SSID"
},
"mqtt": {
"title": "Configurar MQTT",
"btn": "Configurar MQTT",
"name": "Nome do host",
"group": "Nome do Grupo",
"host": "Broker",
"port": "Porta",
"node_t": "Tópico do Node",
"group_t": "Tópico do Grupo",
"broadcast_t": "Tópico do Broadcast",
"hass_t": "Tópico HA LWT"
},
"http": {
"title": "Configurar HTTP",
"btn": "Configurar HTTP"
},
"ftp": {
"title": "Configurar FTP",
"btn": "Configurar FTP",
"port": "Porta FTP",
"pasv": "Porta Passiva"
},
"gui": {
"title": "Configurar Tela",
"btn": "Configurar Tela",
"antiburn": "Anti-queimadura",
"calibrate": "Calibrar"
},
"gpio": "Configurar GPIO",
"debug": {
"title": "Configurar debug",
"btn": "Configurar debug",
"baud": "Baudrate",
"tele": "Período Tele",
"ansi": "Usar códigos ANSI",
"host": "Servidor Syslog",
"port": "Porta Syslog",
"ietf": "IETF (RFC 5424)",
"bsd": "BSD (RFC 3164)",
"log": "Facility"
},
"time": {
"title": "Configurar hora",
"btn": "Configurar hora",
"region": "Região",
"zone": "Fuso horário",
"tz": "Fuso horário",
"ntp": "Servidores NTP"
},
"region": {
"etc": "Etcetera ",
"continents": "Continentes ",
"af": "África ",
"as": "Ásia ",
"au": "Austrália ",
"aq": "Antarctica ",
"eu": "Europa ",
"na": "América do Norte ",
"sa": "América do Sul ",
"islands": "Ilhas ",
"at": "Oceano Atlântico ",
"in": "Oceano Índico ",
"pa": "Oceano Pacífico "
}
}
}

153
data/pt_PT.json Normal file
View File

@ -0,0 +1,153 @@
{
"en": {
"language": "Português",
"home": {
"title": "Menu Principal",
"btn": "Menu Principal",
"nav": "Início"
},
"save": "Guardar Configuração",
"user": "Utilizador",
"pass": "Palavra-passe",
"hasp": {
"title": "Design do HASP",
"btn": "Design do HASP",
"theme": "Tema da IU",
"color1": "Cor Principal",
"color2": "Cor secundária",
"pages": "Layout inicial",
"font": "Fonte padrão",
"startpage": "Startup Page",
"startdim": "Startup Dim"
},
"screenshot": {
"title": "Screenshot",
"btn": "Screenshot",
"nav": "Screenshot",
"prev": "Página Anterior",
"next": "Página Seguinte",
"refresh": "Atualizar"
},
"info": {
"title": "Informação",
"btn": "Informação",
"nav": "Informação"
},
"config": {
"title": "Configuração",
"btn": "Configuração",
"nav": "Configuração"
},
"ota": {
"title": "Atualização do firmware",
"btn": "Atualização do firmware",
"nav": "Firmware",
"submit": "Atualizar o firmware",
"file": "Arquivo de Firmware",
"url": "URL do Firmware",
"redirect": "Seguir Redirecionamentos",
"never": "Nunca",
"strict": "Estrito",
"always": "Sempre"
},
"editor": {
"title": "Editor de ficheiros",
"btn": "Editor de ficheiros",
"nav": "Editor de ficheiros"
},
"reset": {
"title": "Repor configuração de fábrica",
"btn": "Repor configuração de fábrica",
"warning": "Aviso",
"message": "Este processo irá redefinir todas as configurações para os valores padrão. O flash interno será apagado e o dispositivo será reiniciado. Talvez seja necessário conectar-se ao WiFi AP exibido no painel para reconfigurar o dispositivo antes de acessá-lo novamente.",
"fileloss": "TODOS OS ARQUIVOS SERÃO PERDIDOS!"
},
"reboot": {
"title": "Reiniciando...",
"btn": "Reiniciar",
"nav": "Reiniciar",
"message": "O dispositivo está reiniciando."
},
"about": {
"credits": "Baseado no trabalho anterior dos seguintes desenvolvedores de código aberto:",
"copyright": "Copyright ",
"rights": "Todos os direitos reservados.",
"clause1": "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
"clause2": "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
"clause3": "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"mit": "Licença MIT",
"bsd": "Licença BSD",
"freebsd": "Licença FreeBSD",
"apache2": "Licença Apache2"
},
"wifi": {
"title": "Configurar Wifi",
"btn": "Configurar Wifi",
"ssid": "SSID"
},
"mqtt": {
"title": "Configurar MQTT",
"btn": "Configurar MQTT",
"name": "Nome do host",
"group": "Nome do Grupo",
"host": "Broker",
"port": "Porta",
"node_t": "Tópico do Node",
"group_t": "Tópico de Grupo",
"broadcast_t": "Tópico do Broadcast",
"hass_t": "Tópico HA LWT"
},
"http": {
"title": "Configurar HTTP",
"btn": "Configurar HTTP"
},
"ftp": {
"title": "Configurar FTP",
"btn": "Configurar FTP",
"port": "Porta de FTP",
"pasv": "Porta Passiva"
},
"gui": {
"title": "Configurar tela",
"btn": "Configurar tela",
"antiburn": "Anti-queimaduras",
"calibrate": "Calibrar"
},
"gpio": "Configurar MQTT",
"debug": {
"title": "Configurar debug",
"btn": "Configurar debug",
"baud": "Baudrate",
"tele": "Período Tele",
"ansi": "Usar códigos ANSI",
"host": "Servidor Syslog",
"port": "Porta Syslog",
"ietf": "IETF (RFC 5424)",
"bsd": "BSD (RFC 3164)",
"log": "Facility"
},
"time": {
"title": "Configurar Hora",
"btn": "Configurar Hora",
"region": "Região",
"zone": "Fuso horário",
"tz": "Fuso horário",
"ntp": "Servidores NTP"
},
"region": {
"etc": "Etcetera ",
"continents": "Continentes ",
"af": "África ",
"as": "Ásia ",
"au": "Austrália ",
"aq": "Antarctica ",
"eu": "Europa ",
"na": "América do Norte ",
"sa": "América do Sul ",
"islands": "Ilhas ",
"at": "Oceano Atlântico ",
"in": "Oceano Índico ",
"pa": "Oceano Pacífico "
}
}
}

153
data/ro_RO.json Normal file
View File

@ -0,0 +1,153 @@
{
"en": {
"language": "Română",
"home": {
"title": "Meniu principal",
"btn": "Meniu principal",
"nav": "Acasă"
},
"save": "Salvarea setărilor",
"user": "Nume utilizator",
"pass": "Parola",
"hasp": {
"title": "Desenul ecranului",
"btn": "Desenul ecranului",
"theme": "Tema UI",
"color1": "Culoare primară",
"color2": "Culoare secundară",
"pages": "Layout inițial",
"font": "Font implicit",
"startpage": "Pagină inițială",
"startdim": "Luminozitatea"
},
"screenshot": {
"title": "Captură de ecran",
"btn": "Captură de ecran",
"nav": "Captură de ecran",
"prev": "Pagina anterioară",
"next": "Pagina următoare",
"refresh": "Reîmprospătare"
},
"info": {
"title": "Informații",
"btn": "Informații",
"nav": "Informații"
},
"config": {
"title": "Setări",
"btn": "Setări",
"nav": "Setări"
},
"ota": {
"title": "Actualizare Firmware",
"btn": "Actualizare Firmware",
"nav": "Firmware",
"submit": "Actualizarea firmware-ului",
"file": "Fișier firmware",
"url": "URL firmware",
"redirect": "Redirecționări",
"never": "Niciodată",
"strict": "Strict",
"always": "Mereu"
},
"editor": {
"title": "Browser de fișiere",
"btn": "Browser de fișiere",
"nav": "Browser de fișiere"
},
"reset": {
"title": "Resetare la parametri de fabrică",
"btn": "Resetare la parametri de fabrică",
"warning": "Avertizare",
"message": "Acest proces va reseta toate setările la valorile implicite. Flash intern va fi șters și dispozitivul este repornit. Este posibil să fie necesar să vă conectați la WiFi AP afișat pe panou pentru a reconfigura dispozitivul înainte de a-l accesa din nou.",
"fileloss": "TOATE FIȘIERELE VOR FI PIERDE!"
},
"reboot": {
"title": "Repornire...",
"btn": "Repornire",
"nav": "Repornire",
"message": "Dispozitivul se repornire."
},
"about": {
"credits": "Pe baza lucrărilor anterioare ale următorilor dezvoltatori open source:",
"copyright": "Drepturi de autor ",
"rights": "Toate drepturile rezervate.",
"clause1": "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
"clause2": "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
"clause3": "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"mit": "Licență MIT",
"bsd": "Licență BSD",
"freebsd": "Licență FreeBSD",
"apache2": "Licență Apache2"
},
"wifi": {
"title": "Setări WiFi",
"btn": "Setări WiFi",
"ssid": "SSID"
},
"mqtt": {
"title": "Setări MQTT",
"btn": "Setări MQTT",
"name": "Nume gazdă",
"group": "Nume grup",
"host": "Broker",
"port": "Poartă",
"node_t": "Subiect nod",
"group_t": "Subiect Grup",
"broadcast_t": "Subiect difuzare",
"hass_t": "Subiect HA LWT"
},
"http": {
"title": "Setări HTTP",
"btn": "Setări HTTP"
},
"ftp": {
"title": "Setări FTP",
"btn": "Setări FTP",
"port": "Port FTP",
"pasv": "Port Pasiv"
},
"gui": {
"title": "Setări ecran",
"btn": "Setări ecran",
"antiburn": "Anti-arsuri",
"calibrate": "Calibrare"
},
"gpio": "Setări GPIO",
"debug": {
"title": "Setări Depanare",
"btn": "Setări Depanare",
"baud": "Baudrate",
"tele": "Perioada Tele",
"ansi": "Utilizează codurile ANSI",
"host": "Server Syslog",
"port": "Poartă Syslog",
"ietf": "IETF (RFC 5424)",
"bsd": "BSD (RFC 3164)",
"log": "Facilitate"
},
"time": {
"title": "Setări de timp",
"btn": "Setări de timp",
"region": "Regiune",
"zone": "Fus orar",
"tz": "Fus orar",
"ntp": "Servere NTP"
},
"region": {
"etc": "Etcetera ",
"continents": "Continente ",
"af": "Africa ",
"as": "Asia ",
"au": "Australia ",
"aq": "Antarctica ",
"eu": "Europa ",
"na": "America de Nord ",
"sa": "America de Sud ",
"islands": "Insulele ",
"at": "Oceanul Atlantic ",
"in": "Oceanul Indian ",
"pa": "Oceanul Pacific "
}
}
}

File diff suppressed because one or more lines are too long

153
data/zh_CN.json Normal file
View File

@ -0,0 +1,153 @@
{
"en": {
"language": "中文(简体)",
"home": {
"title": "主菜单",
"btn": "主菜单",
"nav": "首页"
},
"save": "保存设置",
"user": "用户名",
"pass": "密码",
"hasp": {
"title": "HASP 设计",
"btn": "HASP 设计",
"theme": "界面主题",
"color1": "主颜色",
"color2": "副颜色",
"pages": "开始布局",
"font": "默认字体",
"startpage": "开机页面",
"startdim": "开机亮度"
},
"screenshot": {
"title": "截屏",
"btn": "截屏",
"nav": "截屏",
"prev": "上一页",
"next": "下一页",
"refresh": "刷新页面"
},
"info": {
"title": "信息",
"btn": "信息",
"nav": "信息"
},
"config": {
"title": "配置",
"btn": "配置",
"nav": "配置"
},
"ota": {
"title": "固件更新",
"btn": "固件更新",
"nav": "固件",
"submit": "更新固件",
"file": "固件文件",
"url": "固件网址",
"redirect": "跟随重定向",
"never": "从不",
"strict": "严格",
"always": "总是"
},
"editor": {
"title": "文件编辑器",
"btn": "文件编辑器",
"nav": "文件编辑器"
},
"reset": {
"title": "出厂重置",
"btn": "出厂重置",
"warning": "警告",
"message": "此过程会将所有设置重置为默认值。 内部闪存将被擦除,设备将重新启动。 您可能需要连接到面板上显示的 WiFi AP 以重新配置设备,然后才能再次访问它。",
"fileloss": "所有文件都会被删除!"
},
"reboot": {
"title": "重启中...",
"btn": "重启",
"nav": "重启",
"message": "设备正在重启。"
},
"about": {
"credits": "基于以下开源开发者的先前工作:",
"copyright": "版权 ",
"rights": "版权所有。",
"clause1": "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
"clause2": "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
"clause3": "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"mit": "MIT 许可证",
"bsd": "BSD 许可证",
"freebsd": "FreeBSD 许可证",
"apache2": "Apache2 许可证"
},
"wifi": {
"title": "Wifi 设置",
"btn": "Wifi 设置",
"ssid": "SSID"
},
"mqtt": {
"title": "MQTT 设置",
"btn": "MQTT 设置",
"name": "主机名",
"group": "组名",
"host": "MQTT 经纪人",
"port": "端口",
"node_t": "设备主题",
"group_t": "群组主题",
"broadcast_t": "广播主题",
"hass_t": "HA LWT 主题"
},
"http": {
"title": "HTTP 设置",
"btn": "HTTP 设置"
},
"ftp": {
"title": "FTP设置",
"btn": "FTP设置",
"port": "FTP 端口",
"pasv": "被动端口"
},
"gui": {
"title": "屏幕设置",
"btn": "屏幕设置",
"antiburn": "防烧",
"calibrate": "校准"
},
"gpio": "GPIO 设置",
"debug": {
"title": "调试设置",
"btn": "调试设置",
"baud": "波特率",
"tele": "远程时期",
"ansi": "使用 ANSI 代码",
"host": "Syslog 服务器",
"port": "Syslog端口",
"ietf": "IETF (RFC 5424)",
"bsd": "BSD (RFC 3164)",
"log": "Facility"
},
"time": {
"title": "时间设置",
"btn": "时间设置",
"region": "区域",
"zone": "时区",
"tz": "时区",
"ntp": "NTP 服务器"
},
"region": {
"etc": "等等 ",
"continents": "大洲数 ",
"af": "非洲 ",
"as": "亚洲 ",
"au": "澳大利亚 ",
"aq": "南极洲 ",
"eu": "欧洲 ",
"na": "北美洲 ",
"sa": "南美洲 ",
"islands": "群岛 ",
"at": "大西洋 ",
"in": "印度洋 ",
"pa": "太平洋 "
}
}
}

View File

@ -254,7 +254,7 @@ typedef void* lv_fs_drv_user_data_t;
#define LV_IMG_CACHE_DEF_SIZE 1
#endif
#ifndef LV_IMG_CACHE_DEF_SIZE_PSRAM
#define LV_IMG_CACHE_DEF_SIZE_PSRAM 20 // special openHASP setting when PSRAM is used
#define LV_IMG_CACHE_DEF_SIZE_PSRAM 12 // special openHASP setting when PSRAM is used
#endif
/*Declare the type of the user data of image decoder (can be e.g. `void *`, `int`, `struct`)*/
@ -758,6 +758,10 @@ typedef void* lv_font_user_data_t;
#endif
#endif // LV_FONT_DEFAULT
#ifndef LV_THEME_DEFAULT_FONT_SMALL
#define LV_THEME_DEFAULT_FONT_SMALL LV_FONT_DEFAULT
#endif
#define LV_THEME_DEFAULT_FONT_NORMAL LV_FONT_DEFAULT
#define LV_THEME_DEFAULT_FONT_SUBTITLE LV_FONT_DEFAULT
#define LV_THEME_DEFAULT_FONT_TITLE LV_FONT_DEFAULT

View File

@ -77,6 +77,7 @@
// #define HASP_LANGUAGE pt_BR // Brazilian Portuguese
// #define HASP_LANGUAGE pt_PT // Portuguese
// #define HASP_LANGUAGE ro_RO // Romanian
// #define HASP_LANGUAGE de_DE // German
/***************************************************
* Web interface coloring

View File

@ -1,6 +1,6 @@
#include "Arduino_RGB_Display_mod.h"
#if defined(ESP32) && (CONFIG_IDF_TARGET_ESP32S3) && defined(HASP_USE_ARDUINOGFX)
#if defined(ESP32) && defined(CONFIG_IDF_TARGET_ESP32S3) && defined(HASP_USE_ARDUINOGFX)
#include "Arduino_GFX.h"
#include "Arduino_DataBus.h"

View File

@ -3,7 +3,7 @@
#include "Arduino_DataBus.h"
#endif
#if defined(ESP32) && (CONFIG_IDF_TARGET_ESP32S3) && defined(HASP_USE_ARDUINOGFX)
#if defined(ESP32) && defined(CONFIG_IDF_TARGET_ESP32S3) && defined(HASP_USE_ARDUINOGFX)
#ifndef _ARDUINO_RGB_DISPLAY_MOD_H_
#define _ARDUINO_RGB_DISPLAY_MOD_H_
@ -11,6 +11,142 @@
#include "Arduino_GFX.h"
#include "Arduino_RGBPanel_mod.h"
static const uint8_t st7701_sensecap_indicator_init_operations[] = {
BEGIN_WRITE,
WRITE_COMMAND_8, 0xFF,
WRITE_BYTES, 5, 0x77, 0x01, 0x00, 0x00, 0x10,
WRITE_C8_D16, 0xC0, 0x3B, 0x00,
WRITE_C8_D16, 0xC1, 0x0D, 0x02,
WRITE_C8_D16, 0xC2, 0x31, 0x05,
WRITE_C8_D8, 0xC7, 0x04,
WRITE_C8_D8, 0xCD, 0x08,
WRITE_COMMAND_8, 0xB0, // Positive Voltage Gamma Control
WRITE_BYTES, 16,
0x00, 0x11, 0x18, 0x0E,
0x11, 0x06, 0x07, 0x08,
0x07, 0x22, 0x04, 0x12,
0x0F, 0xAA, 0x31, 0x18,
END_WRITE,
BEGIN_WRITE,
WRITE_COMMAND_8, 0xB1, // Negative Voltage Gamma Control
WRITE_BYTES, 16,
0x00, 0x11, 0x19, 0x0E,
0x12, 0x07, 0x08, 0x08,
0x08, 0x22, 0x04, 0x11,
0x11, 0xA9, 0x32, 0x18,
// PAGE1
WRITE_COMMAND_8, 0xFF,
WRITE_BYTES, 5, 0x77, 0x01, 0x00, 0x00, 0x11,
WRITE_C8_D8, 0xB0, 0x60, // Vop=4.7375v
WRITE_C8_D8, 0xB1, 0x32, // VCOM=32
WRITE_C8_D8, 0xB2, 0x07, // VGH=15v
WRITE_C8_D8, 0xB3, 0x80,
WRITE_C8_D8, 0xB5, 0x49, // VGL=-10.17v
WRITE_C8_D8, 0xB7, 0x85,
WRITE_C8_D8, 0xB8, 0x21, // AVDD=6.6 & AVCL=-4.6
WRITE_C8_D8, 0xC1, 0x78,
WRITE_C8_D8, 0xC2, 0x78,
END_WRITE,
DELAY, 20,
BEGIN_WRITE,
WRITE_COMMAND_8, 0xE0,
WRITE_BYTES, 3, 0x00, 0x1B, 0x02,
WRITE_COMMAND_8, 0xE1,
WRITE_BYTES, 11,
0x08, 0xA0, 0x00, 0x00,
0x07, 0xA0, 0x00, 0x00,
0x00, 0x44, 0x44,
WRITE_COMMAND_8, 0xE2,
WRITE_BYTES, 12,
0x11, 0x11, 0x44, 0x44,
0xED, 0xA0, 0x00, 0x00,
0xEC, 0xA0, 0x00, 0x00,
END_WRITE,
BEGIN_WRITE,
WRITE_COMMAND_8, 0xE3,
WRITE_BYTES, 4, 0x00, 0x00, 0x11, 0x11,
WRITE_C8_D16, 0xE4, 0x44, 0x44,
WRITE_COMMAND_8, 0xE5,
WRITE_BYTES, 16,
0x0A, 0xE9, 0xD8, 0xA0,
0x0C, 0xEB, 0xD8, 0xA0,
0x0E, 0xED, 0xD8, 0xA0,
0x10, 0xEF, 0xD8, 0xA0,
WRITE_COMMAND_8, 0xE6,
WRITE_BYTES, 4, 0x00, 0x00, 0x11, 0x11,
WRITE_C8_D16, 0xE7, 0x44, 0x44,
END_WRITE,
BEGIN_WRITE,
WRITE_COMMAND_8, 0xE8,
WRITE_BYTES, 16,
0x09, 0xE8, 0xD8, 0xA0,
0x0B, 0xEA, 0xD8, 0xA0,
0x0D, 0xEC, 0xD8, 0xA0,
0x0F, 0xEE, 0xD8, 0xA0,
WRITE_COMMAND_8, 0xEB,
WRITE_BYTES, 7,
0x02, 0x00, 0xE4, 0xE4,
0x88, 0x00, 0x40,
WRITE_C8_D16, 0xEC, 0x3C, 0x00,
WRITE_COMMAND_8, 0xED,
WRITE_BYTES, 16,
0xAB, 0x89, 0x76, 0x54,
0x02, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x20,
0x45, 0x67, 0x98, 0xBA,
WRITE_C8_D8, 0x36, 0x10,
END_WRITE,
BEGIN_WRITE,
//-----------VAP & VAN---------------
WRITE_COMMAND_8, 0xFF,
WRITE_BYTES, 5, 0x77, 0x01, 0x00, 0x00, 0x13,
WRITE_C8_D8, 0xE5, 0xE4,
WRITE_COMMAND_8, 0xFF,
WRITE_BYTES, 5, 0x77, 0x01, 0x00, 0x00, 0x00,
WRITE_COMMAND_8, 0x21, // 0x20 normal, 0x21 IPS
WRITE_C8_D8, 0x3A, 0x60, // 0x70 RGB888, 0x60 RGB666, 0x50 RGB565
WRITE_COMMAND_8, 0x11, // Sleep Out
END_WRITE,
DELAY, 120,
BEGIN_WRITE,
WRITE_COMMAND_8, 0x29, // Display On
END_WRITE,
DELAY, 120,
};
class Arduino_RGB_Display_Mod : public Arduino_GFX{
public:
Arduino_RGB_Display_Mod(

38
lib/FT6336U/.gitignore vendored Normal file
View File

@ -0,0 +1,38 @@
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
# VS Code Setting
.vscode/
# Build Folder
build/

21
lib/FT6336U/LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 aselectroworks
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

5
lib/FT6336U/README.md Normal file
View File

@ -0,0 +1,5 @@
# FT6336U Library
FocalTech FT6336U (Self-Capacitive Touch Panel Controller) library for Arduino.
## License
This code is released under the MIT License. Please see [LICENSE](https://github.com/aselectroworks/Arduino-FT6336U/blob/master/LICENSE) for the full text.

View File

@ -0,0 +1,40 @@
#include "FT6336U.h"
#define I2C_SDA 22
#define I2C_SCL 23
#define RST_N_PIN 21
#define INT_N_PIN 34
FT6336U ft6336u(I2C_SDA, I2C_SCL, RST_N_PIN, INT_N_PIN);
void setup() {
Serial.begin(115200);
ft6336u.begin();
Serial.print("FT6336U Firmware Version: ");
Serial.println(ft6336u.read_firmware_id());
Serial.print("FT6336U Device Mode: ");
Serial.println(ft6336u.read_device_mode());
}
void loop() {
if(digitalRead(INT_N_PIN) != -1) {
Serial.print("FT6336U TD Status: ");
Serial.println(ft6336u.read_td_status());
Serial.print("FT6336U Touch Event/ID 1: (");
Serial.print(ft6336u.read_touch1_event()); Serial.print(" / "); Serial.print(ft6336u.read_touch1_id()); Serial.println(")");
Serial.print("FT6336U Touch Position 1: (");
Serial.print(ft6336u.read_touch1_x()); Serial.print(" , "); Serial.print(ft6336u.read_touch1_y()); Serial.println(")");
Serial.print("FT6336U Touch Weight/MISC 1: (");
Serial.print(ft6336u.read_touch1_weight()); Serial.print(" / "); Serial.print(ft6336u.read_touch1_misc()); Serial.println(")");
Serial.print("FT6336U Touch Event/ID 2: (");
Serial.print(ft6336u.read_touch2_event()); Serial.print(" / "); Serial.print(ft6336u.read_touch2_id()); Serial.println(")");
Serial.print("FT6336U Touch Position 2: (");
Serial.print(ft6336u.read_touch2_x()); Serial.print(" , "); Serial.print(ft6336u.read_touch2_y()); Serial.println(")");
Serial.print("FT6336U Touch Weight/MISC 2: (");
Serial.print(ft6336u.read_touch2_weight()); Serial.print(" / "); Serial.print(ft6336u.read_touch2_misc()); Serial.println(")");
}
}

View File

@ -0,0 +1,57 @@
#include "FT6336U.h"
#include <stdio.h>
#define I2C_SDA 22
#define I2C_SCL 23
#define RST_N_PIN 21
#define INT_N_PIN 34
FT6336U ft6336u(I2C_SDA, I2C_SCL, RST_N_PIN, INT_N_PIN);
void setup() {
Serial.begin(115200);
ft6336u.begin();
// ft6336u.write_device_mode(factory_mode);
Serial.print("FT6336U Device Mode: ");
Serial.println(ft6336u.read_device_mode());
Serial.print("FT6336U Threshold: 0x");
Serial.println(ft6336u.read_touch_threshold(), HEX);
Serial.print("FT6336U Filter Coefficient: 0x");
Serial.println(ft6336u.read_filter_coefficient(), HEX);
Serial.print("FT6336U Control Mode: 0x");
Serial.println(ft6336u.read_ctrl_mode(), HEX);
Serial.print("FT6336U Time Period for enter to Monitor Mode: 0x");
Serial.println(ft6336u.read_time_period_enter_monitor(), HEX);
Serial.print("FT6336U Active Rate: 0x");
Serial.println(ft6336u.read_active_rate(), HEX);
Serial.print("FT6336U Monitor Rate: 0x");
Serial.println(ft6336u.read_monitor_rate(), HEX);
Serial.print("FT6336U LIB Ver: 0x");
Serial.println(ft6336u.read_library_version(), HEX);
Serial.print("FT6336U Chip ID: 0x");
Serial.println(ft6336u.read_chip_id(), HEX);
Serial.print("FT6336U G Mode: 0x");
Serial.println(ft6336u.read_g_mode(), HEX);
Serial.print("FT6336U POWER Mode: 0x");
Serial.println(ft6336u.read_pwrmode(), HEX);
Serial.print("FT6336U Firm ID: 0x");
Serial.println(ft6336u.read_firmware_id(), HEX);
Serial.print("FT6336U Focal Tehc ID: 0x");
Serial.println(ft6336u.read_focaltech_id(), HEX);
Serial.print("FT6336U Release Code ID: 0x");
Serial.println(ft6336u.read_release_code_id(), HEX);
Serial.print("FT6336U State: 0x");
Serial.println(ft6336u.read_state(), HEX);
}
FT6336U_TouchPointType tp;
void loop() {
tp = ft6336u.scan();
char tempString[128];
sprintf(tempString, "FT6336U TD Count %d / TD1 (%d, %4d, %4d) / TD2 (%d, %4d, %4d)\r", tp.touch_count, tp.tp[0].status, tp.tp[0].x, tp.tp[0].y, tp.tp[1].status, tp.tp[1].x, tp.tp[1].y);
Serial.print(tempString);
}

View File

@ -0,0 +1,10 @@
name=FT6336U CTP Controller
version=1.0.2
author=Atsushi Sasaki
maintainer=Atsushi Sasaki
sentence=Arduino FT6336U CTP Controller library
paragraph=Arduino FT6336U CTP Controller library
category=Sensors
url=
architectures=*
includes=FT6336U.h

271
lib/FT6336U/src/FT6336U.cpp Normal file
View File

@ -0,0 +1,271 @@
/**************************************************************************/
/*!
@file FT6336U.cpp
Author: Atsushi Sasaki (https://github.com/aselectroworks)
License: MIT (see LICENSE)
*/
/**************************************************************************/
#include "FT6336U.h"
#include <Wire.h>
FT6336U::FT6336U(uint8_t rst_n, uint8_t int_n)
: rst_n(rst_n), int_n(int_n) {
}
#if defined(ESP32) || defined(ESP8266)
FT6336U::FT6336U(int8_t sda, int8_t scl, uint8_t rst_n, uint8_t int_n)
: sda(sda), scl(scl), rst_n(rst_n), int_n(int_n) {
}
#endif
FT6336U::~FT6336U() {
}
void FT6336U::begin(void) {
// Initialize I2C
#if defined(ESP32) || defined(ESP8266)
if(sda != -1 && scl != -1) {
Wire.begin(sda, scl);
}
else {
Wire.begin();
}
#else
Wire.begin();
#endif
// Int Pin Configuration
pinMode(int_n, INPUT);
// Reset Pin Configuration
pinMode(rst_n, OUTPUT);
digitalWrite(rst_n, LOW);
delay(10);
digitalWrite(rst_n, HIGH);
delay(500);
}
uint8_t FT6336U::read_device_mode(void) {
return (readByte(FT6336U_ADDR_DEVICE_MODE) & 0x70) >> 4;
}
void FT6336U::write_device_mode(DEVICE_MODE_Enum mode) {
writeByte(FT6336U_ADDR_DEVICE_MODE, (mode & 0x07) << 4);
}
uint8_t FT6336U::read_gesture_id(void) {
return readByte(FT6336U_ADDR_GESTURE_ID);
}
uint8_t FT6336U::read_td_status(void) {
return readByte(FT6336U_ADDR_TD_STATUS);
}
uint8_t FT6336U::read_touch_number(void) {
return readByte(FT6336U_ADDR_TD_STATUS) & 0x0F;
}
// Touch 1 functions
uint16_t FT6336U::read_touch1_x(void) {
uint8_t read_buf[2];
read_buf[0] = readByte(FT6336U_ADDR_TOUCH1_X);
read_buf[1] = readByte(FT6336U_ADDR_TOUCH1_X + 1);
return ((read_buf[0] & 0x0f) << 8) | read_buf[1];
}
uint16_t FT6336U::read_touch1_y(void) {
uint8_t read_buf[2];
read_buf[0] = readByte(FT6336U_ADDR_TOUCH1_Y);
read_buf[1] = readByte(FT6336U_ADDR_TOUCH1_Y + 1);
return ((read_buf[0] & 0x0f) << 8) | read_buf[1];
}
uint8_t FT6336U::read_touch1_event(void) {
return readByte(FT6336U_ADDR_TOUCH1_EVENT) >> 6;
}
uint8_t FT6336U::read_touch1_id(void) {
return readByte(FT6336U_ADDR_TOUCH1_ID) >> 4;
}
uint8_t FT6336U::read_touch1_weight(void) {
return readByte(FT6336U_ADDR_TOUCH1_WEIGHT);
}
uint8_t FT6336U::read_touch1_misc(void) {
return readByte(FT6336U_ADDR_TOUCH1_MISC) >> 4;
}
// Touch 2 functions
uint16_t FT6336U::read_touch2_x(void) {
uint8_t read_buf[2];
read_buf[0] = readByte(FT6336U_ADDR_TOUCH2_X);
read_buf[1] = readByte(FT6336U_ADDR_TOUCH2_X + 1);
return ((read_buf[0] & 0x0f) << 8) | read_buf[1];
}
uint16_t FT6336U::read_touch2_y(void) {
uint8_t read_buf[2];
read_buf[0] = readByte(FT6336U_ADDR_TOUCH2_Y);
read_buf[1] = readByte(FT6336U_ADDR_TOUCH2_Y + 1);
return ((read_buf[0] & 0x0f) << 8) | read_buf[1];
}
uint8_t FT6336U::read_touch2_event(void) {
return readByte(FT6336U_ADDR_TOUCH2_EVENT) >> 6;
}
uint8_t FT6336U::read_touch2_id(void) {
return readByte(FT6336U_ADDR_TOUCH2_ID) >> 4;
}
uint8_t FT6336U::read_touch2_weight(void) {
return readByte(FT6336U_ADDR_TOUCH2_WEIGHT);
}
uint8_t FT6336U::read_touch2_misc(void) {
return readByte(FT6336U_ADDR_TOUCH2_MISC) >> 4;
}
// Mode Parameter Register
uint8_t FT6336U::read_touch_threshold(void) {
return readByte(FT6336U_ADDR_THRESHOLD);
}
uint8_t FT6336U::read_filter_coefficient(void) {
return readByte(FT6336U_ADDR_FILTER_COE);
}
uint8_t FT6336U::read_ctrl_mode(void) {
return readByte(FT6336U_ADDR_CTRL);
}
void FT6336U::write_ctrl_mode(CTRL_MODE_Enum mode) {
writeByte(FT6336U_ADDR_CTRL, mode);
}
uint8_t FT6336U::read_time_period_enter_monitor(void) {
return readByte(FT6336U_ADDR_TIME_ENTER_MONITOR);
}
uint8_t FT6336U::read_active_rate(void) {
return readByte(FT6336U_ADDR_ACTIVE_MODE_RATE);
}
uint8_t FT6336U::read_monitor_rate(void) {
return readByte(FT6336U_ADDR_MONITOR_MODE_RATE);
}
// Gesture Parameters
uint8_t FT6336U::read_radian_value(void) {
return readByte(FT6336U_ADDR_RADIAN_VALUE);
}
void FT6336U::write_radian_value(uint8_t val) {
writeByte(FT6336U_ADDR_RADIAN_VALUE, val);
}
uint8_t FT6336U::read_offset_left_right(void) {
return readByte(FT6336U_ADDR_OFFSET_LEFT_RIGHT);
}
void FT6336U::write_offset_left_right(uint8_t val) {
writeByte(FT6336U_ADDR_OFFSET_LEFT_RIGHT, val);
}
uint8_t FT6336U::read_offset_up_down(void) {
return readByte(FT6336U_ADDR_OFFSET_UP_DOWN);
}
void FT6336U::write_offset_up_down(uint8_t val) {
writeByte(FT6336U_ADDR_OFFSET_UP_DOWN, val);
}
uint8_t FT6336U::read_distance_left_right(void) {
return readByte(FT6336U_ADDR_DISTANCE_LEFT_RIGHT);
}
void FT6336U::write_distance_left_right(uint8_t val) {
writeByte(FT6336U_ADDR_DISTANCE_LEFT_RIGHT, val);
}
uint8_t FT6336U::read_distance_up_down(void) {
return readByte(FT6336U_ADDR_DISTANCE_UP_DOWN);
}
void FT6336U::write_distance_up_down(uint8_t val) {
writeByte(FT6336U_ADDR_DISTANCE_UP_DOWN, val);
}
uint8_t FT6336U::read_distance_zoom(void) {
return readByte(FT6336U_ADDR_DISTANCE_ZOOM);
}
void FT6336U::write_distance_zoom(uint8_t val) {
writeByte(FT6336U_ADDR_DISTANCE_ZOOM, val);
}
// System Information
uint16_t FT6336U::read_library_version(void) {
uint8_t read_buf[2];
read_buf[0] = readByte(FT6336U_ADDR_LIBRARY_VERSION_H);
read_buf[1] = readByte(FT6336U_ADDR_LIBRARY_VERSION_L);
return ((read_buf[0] & 0x0f) << 8) | read_buf[1];
}
uint8_t FT6336U::read_chip_id(void) {
return readByte(FT6336U_ADDR_CHIP_ID);
}
uint8_t FT6336U::read_g_mode(void) {
return readByte(FT6336U_ADDR_G_MODE);
}
void FT6336U::write_g_mode(G_MODE_Enum mode){
writeByte(FT6336U_ADDR_G_MODE, mode);
}
uint8_t FT6336U::read_pwrmode(void) {
return readByte(FT6336U_ADDR_POWER_MODE);
}
uint8_t FT6336U::read_firmware_id(void) {
return readByte(FT6336U_ADDR_FIRMARE_ID);
}
uint8_t FT6336U::read_focaltech_id(void) {
return readByte(FT6336U_ADDR_FOCALTECH_ID);
}
uint8_t FT6336U::read_release_code_id(void) {
return readByte(FT6336U_ADDR_RELEASE_CODE_ID);
}
uint8_t FT6336U::read_state(void) {
return readByte(FT6336U_ADDR_STATE);
}
//coordinate diagramFPC downwards
////y ////////////////////264x176
//
//
//x
//
//
FT6336U_TouchPointType FT6336U::scan(void){
touchPoint.touch_count = read_td_status();
if(touchPoint.touch_count == 0) {
touchPoint.tp[0].status = release;
touchPoint.tp[1].status = release;
}
else if(touchPoint.touch_count == 1) {
uint8_t id1 = read_touch1_id(); // id1 = 0 or 1
touchPoint.tp[id1].status = (touchPoint.tp[id1].status == release) ? touch : stream;
touchPoint.tp[id1].x = read_touch1_x();
touchPoint.tp[id1].y = read_touch1_y();
touchPoint.tp[~id1 & 0x01].status = release;
}
else {
uint8_t id1 = read_touch1_id(); // id1 = 0 or 1
touchPoint.tp[id1].status = (touchPoint.tp[id1].status == release) ? touch : stream;
touchPoint.tp[id1].x = read_touch1_x();
touchPoint.tp[id1].y = read_touch1_y();
uint8_t id2 = read_touch2_id(); // id2 = 0 or 1(~id1 & 0x01)
touchPoint.tp[id2].status = (touchPoint.tp[id2].status == release) ? touch : stream;
touchPoint.tp[id2].x = read_touch2_x();
touchPoint.tp[id2].y = read_touch2_y();
}
return touchPoint;
}
// Private Function
uint8_t FT6336U::readByte(uint8_t addr) {
uint8_t rdData = 0;
uint8_t rdDataCount;
do {
Wire.beginTransmission(I2C_ADDR_FT6336U);
Wire.write(addr);
Wire.endTransmission(false); // Restart
delay(10);
rdDataCount = Wire.requestFrom(I2C_ADDR_FT6336U, 1);
} while(rdDataCount == 0);
while(Wire.available()) {
rdData = Wire.read();
}
return rdData;
}
void FT6336U::writeByte(uint8_t addr, uint8_t data) {
DEBUG_PRINTLN("")
DEBUG_PRINT("writeI2C reg 0x")
DEBUG_PRINT(addr, HEX)
DEBUG_PRINT(" -> 0x") DEBUG_PRINTLN(data, HEX)
Wire.beginTransmission(I2C_ADDR_FT6336U);
Wire.write(addr);
Wire.write(data);
Wire.endTransmission();
}

201
lib/FT6336U/src/FT6336U.h Normal file
View File

@ -0,0 +1,201 @@
/**************************************************************************/
/*!
@file FT6336U.h
Author: Atsushi Sasaki(https://github.com/aselectroworks)
License: MIT (see LICENSE)
*/
/**************************************************************************/
#ifndef _FT6336U_H
#define _FT6336U_H
#include <stdint.h>
#include <stdbool.h>
#include <Arduino.h>
#define I2C_ADDR_FT6336U 0x48
// Touch Parameter
#define FT6336U_PRES_DOWN 0x2
#define FT6336U_COORD_UD 0x1
// Registers
#define FT6336U_ADDR_DEVICE_MODE 0x00
typedef enum {
working_mode = 0b000,
factory_mode = 0b100,
} DEVICE_MODE_Enum;
#define FT6336U_ADDR_GESTURE_ID 0x01
#define FT6336U_ADDR_TD_STATUS 0x02
#define FT6336U_ADDR_TOUCH1_EVENT 0x03
#define FT6336U_ADDR_TOUCH1_ID 0x05
#define FT6336U_ADDR_TOUCH1_X 0x03
#define FT6336U_ADDR_TOUCH1_Y 0x05
#define FT6336U_ADDR_TOUCH1_WEIGHT 0x07
#define FT6336U_ADDR_TOUCH1_MISC 0x08
#define FT6336U_ADDR_TOUCH2_EVENT 0x09
#define FT6336U_ADDR_TOUCH2_ID 0x0B
#define FT6336U_ADDR_TOUCH2_X 0x09
#define FT6336U_ADDR_TOUCH2_Y 0x0B
#define FT6336U_ADDR_TOUCH2_WEIGHT 0x0D
#define FT6336U_ADDR_TOUCH2_MISC 0x0E
#define FT6336U_ADDR_THRESHOLD 0x80
#define FT6336U_ADDR_FILTER_COE 0x85
#define FT6336U_ADDR_CTRL 0x86
typedef enum {
keep_active_mode = 0,
switch_to_monitor_mode = 1,
} CTRL_MODE_Enum;
#define FT6336U_ADDR_TIME_ENTER_MONITOR 0x87
#define FT6336U_ADDR_ACTIVE_MODE_RATE 0x88
#define FT6336U_ADDR_MONITOR_MODE_RATE 0x89
#define FT6336U_ADDR_RADIAN_VALUE 0x91
#define FT6336U_ADDR_OFFSET_LEFT_RIGHT 0x92
#define FT6336U_ADDR_OFFSET_UP_DOWN 0x93
#define FT6336U_ADDR_DISTANCE_LEFT_RIGHT 0x94
#define FT6336U_ADDR_DISTANCE_UP_DOWN 0x95
#define FT6336U_ADDR_DISTANCE_ZOOM 0x96
#define FT6336U_ADDR_LIBRARY_VERSION_H 0xA1
#define FT6336U_ADDR_LIBRARY_VERSION_L 0xA2
#define FT6336U_ADDR_CHIP_ID 0xA3
#define FT6336U_ADDR_G_MODE 0xA4
typedef enum {
pollingMode = 0,
triggerMode = 1,
} G_MODE_Enum;
#define FT6336U_ADDR_POWER_MODE 0xA5
#define FT6336U_ADDR_FIRMARE_ID 0xA6
#define FT6336U_ADDR_FOCALTECH_ID 0xA8
#define FT6336U_ADDR_RELEASE_CODE_ID 0xAF
#define FT6336U_ADDR_STATE 0xBC
// Function Specific Type
typedef enum {
touch = 0,
stream,
release,
} TouchStatusEnum;
typedef struct {
TouchStatusEnum status;
uint16_t x;
uint16_t y;
} TouchPointType;
typedef struct {
uint8_t touch_count;
TouchPointType tp[2];
} FT6336U_TouchPointType;
// Uncomment to enable debug messages
//#define FT6336U_DEBUG
// Define where debug output will be printed
#define DEBUG_PRINTER Serial
// Setup debug printing macros
#ifdef FT6336U_DEBUG
#define DEBUG_PRINT(...) \
{ \
DEBUG_PRINTER.print(__VA_ARGS__); \
}
#define DEBUG_PRINTLN(...) \
{ \
DEBUG_PRINTER.println(__VA_ARGS__); \
}
#else
#define DEBUG_PRINT(...) \
{ \
}
#define DEBUG_PRINTLN(...) \
{ \
}
#endif
/**************************************************************************/
/*!
@brief FT6336U I2C CTP controller driver
*/
/**************************************************************************/
class FT6336U
{
public:
FT6336U(uint8_t rst_n, uint8_t int_n);
#if defined(ESP32) || defined(ESP8266)
FT6336U(int8_t sda, int8_t scl, uint8_t rst_n, uint8_t int_n);
#endif
virtual ~FT6336U();
void begin(void);
uint8_t read_device_mode(void);
void write_device_mode(DEVICE_MODE_Enum);
uint8_t read_gesture_id(void);
uint8_t read_td_status(void);
uint8_t read_touch_number(void);
uint16_t read_touch1_x(void);
uint16_t read_touch1_y(void);
uint8_t read_touch1_event(void);
uint8_t read_touch1_id(void);
uint8_t read_touch1_weight(void);
uint8_t read_touch1_misc(void);
uint16_t read_touch2_x(void);
uint16_t read_touch2_y(void);
uint8_t read_touch2_event(void);
uint8_t read_touch2_id(void);
uint8_t read_touch2_weight(void);
uint8_t read_touch2_misc(void);
// Mode Parameter Register
uint8_t read_touch_threshold(void);
uint8_t read_filter_coefficient(void);
uint8_t read_ctrl_mode(void);
void write_ctrl_mode(CTRL_MODE_Enum mode);
uint8_t read_time_period_enter_monitor(void);
uint8_t read_active_rate(void);
uint8_t read_monitor_rate(void);
// Gestrue Parameter Register
uint8_t read_radian_value(void);
void write_radian_value(uint8_t val);
uint8_t read_offset_left_right(void);
void write_offset_left_right(uint8_t val);
uint8_t read_offset_up_down(void);
void write_offset_up_down(uint8_t val);
uint8_t read_distance_left_right(void);
void write_distance_left_right(uint8_t val);
uint8_t read_distance_up_down(void);
void write_distance_up_down(uint8_t val);
uint8_t read_distance_zoom(void);
void write_distance_zoom(uint8_t val);
// System Information
uint16_t read_library_version(void);
uint8_t read_chip_id(void);
uint8_t read_g_mode(void);
void write_g_mode(G_MODE_Enum mode);
uint8_t read_pwrmode(void);
uint8_t read_firmware_id(void);
uint8_t read_focaltech_id(void);
uint8_t read_release_code_id(void);
uint8_t read_state(void);
// Scan Function
FT6336U_TouchPointType scan(void);
private:
int8_t sda = -1;
int8_t scl = -1;
uint8_t rst_n = -1;
uint8_t int_n = -1;
uint8_t readByte(uint8_t addr);
void writeByte(uint8_t addr, uint8_t data);
FT6336U_TouchPointType touchPoint;
};
#endif

View File

@ -75,14 +75,14 @@ build_flags =
-D HASP_VER_MAJ=0
-D HASP_VER_MIN=7
;-D HASP_VER_REV=4
-D HASP_VER_REV=0-rc5
-D HASP_VER_REV=0-rc8
;-D HASP_VER_REV=4-rc1
${override.build_flags}
; -- Shared library dependencies in all environments
; Warning : don't put comments after github links => causes infinite download loop
lib_deps =
bblanchon/ArduinoJson@^6.21.2
bblanchon/ArduinoJson@^6.21.3
;git+https://github.com/fvanroie/ConsoleInput.git
;git+https://github.com/andrethomas/TasmotaSlave.git
;git+https://github.com/lvgl/lvgl.git
@ -104,7 +104,7 @@ build_src_filter = +<*> -<.git/> -<examples/> -<test/> -<tests/> -<stm32f4/> -<l
[lovyangfx]
lib_deps =
lovyan03/LovyanGFX@^1.1.7
lovyan03/LovyanGFX@^1.1.8
[arduinogfx]
lib_deps =

View File

@ -53,7 +53,8 @@ extra_default_envs =
; m5stack-core2
; m5stack-tough
; makerfabs-s3-tft35-spi
; makerfabs-tft35-cap
; makerfabs-tft35-cap_16MB
; makerfabs-tft35-cap_4MB
; makerfabs-tft-s2_ili9488
; nodemcu32s-raspi
; s2-mini-esp32s2_ili9341
@ -140,4 +141,4 @@ build_flags =
-D HASP_USE_TELNET=1
;endregion
;endregion
;endregion

View File

@ -2,7 +2,7 @@
// https://www.online-utility.org/image/convert/to/XBM
// The output must be pasted in a header file, renamed and adjusted to appear
// as as a const unsigned char array in PROGMEM (FLASH program memory).
// as a const unsigned char array in PROGMEM (FLASH program memory).
// The xbm format adds padding to pixel rows so they are a whole number of bytes
// In this example 93 pixel width means 96 bits = 12 bytes

View File

@ -80,7 +80,7 @@ static String esp32ResetReason(uint8_t cpuid)
break; /**<13, RTC Watch dog Reset CPU*/
case 14:
resetReason += F("EXT_CPU");
break; /**<14, for APP CPU, reseted by PRO CPU*/
break; /**<14, for APP CPU, reset by PRO CPU*/
case 15:
resetReason += F("RTCWDT_BROWN_OUT");
break; /**<15, Reset when the vdd voltage is not stable*/
@ -108,7 +108,7 @@ Esp32Device::Esp32Device()
_backlight_invert = (TFT_BACKLIGHT_ON == LOW);
_backlight_power = 1;
_backlight_level = 255;
_backlight_pin = 255; // not TFT_BCKL because it is unkown at this stage
_backlight_pin = 255; // not TFT_BCKL because it is unknown at this stage
/* fill unique identifier with wifi mac */
byte mac[6];

View File

@ -0,0 +1,275 @@
#include "Arduino_PCA9535SWSPI.h"
#if defined(HASP_USE_ARDUINOGFX)
#warning Arduino_PCA9535SWSPI.cpp
#include "driver/gpio.h"
#include "hasplib.h"
Arduino_PCA9535SWSPI::Arduino_PCA9535SWSPI(int8_t sda, int8_t scl, int8_t pwd, int8_t cs, int8_t sck, int8_t mosi, TwoWire *wire)
: _sda(sda), _scl(scl), _pwd(pwd), _cs(cs), _sck(sck), _mosi(mosi), _wire(wire)
{
}
bool Arduino_PCA9535SWSPI::begin(int32_t speed, int8_t dataMode)
{
UNUSED(speed);
UNUSED(dataMode);
_address = PCA9535_IIC_ADDRESS;
_wire->beginTransmission(_address);
if (!_wire->endTransmission())
{
LOG_INFO(TAG_DRVR, "Found xl9535");
is_found = true;
// this->pinMode8(0, 0xFF, OUTPUT);
if (_pwd != GFX_NOT_DEFINED)
{
this->pinMode(_pwd, OUTPUT);
this->digitalWrite(_pwd, 1);
}
this->pinMode(_cs, OUTPUT);
this->digitalWrite(_cs, 1);
this->pinMode(_sck, OUTPUT);
this->digitalWrite(_sck, 1);
this->pinMode(_mosi, OUTPUT);
this->digitalWrite(_mosi, 1);
}
else
{
LOG_INFO(TAG_DRVR, "xl9535 not found");
is_found = false;
}
return is_found;
}
void Arduino_PCA9535SWSPI::beginWrite()
{
this->digitalWrite(_cs, 0);
}
void Arduino_PCA9535SWSPI::endWrite()
{
this->digitalWrite(_cs, 1);
}
void Arduino_PCA9535SWSPI::writeCommand(uint8_t c)
{
// D/C bit, command
this->digitalWrite(_mosi, 0);
this->digitalWrite(_sck, 0);
this->digitalWrite(_sck, 1);
uint8_t bit = 0x80;
while (bit)
{
if (c & bit)
{
this->digitalWrite(_mosi, 1);
}
else
{
this->digitalWrite(_mosi, 0);
}
this->digitalWrite(_sck, 0);
bit >>= 1;
this->digitalWrite(_sck, 1);
}
}
void Arduino_PCA9535SWSPI::writeCommand16(uint16_t)
{
}
void Arduino_PCA9535SWSPI::write(uint8_t d)
{
// D/C bit, data
this->digitalWrite(_mosi, 1);
this->digitalWrite(_sck, 0);
this->digitalWrite(_sck, 1);
uint8_t bit = 0x80;
while (bit)
{
if (d & bit)
{
this->digitalWrite(_mosi, 1);
}
else
{
this->digitalWrite(_mosi, 0);
}
this->digitalWrite(_sck, 0);
bit >>= 1;
this->digitalWrite(_sck, 1);
}
}
void Arduino_PCA9535SWSPI::write16(uint16_t)
{
// not implemented
}
void Arduino_PCA9535SWSPI::writeRepeat(uint16_t p, uint32_t len)
{
// not implemented
}
void Arduino_PCA9535SWSPI::writePixels(uint16_t *data, uint32_t len)
{
// not implemented
}
#if !defined(LITTLE_FOOT_PRINT)
void Arduino_PCA9535SWSPI::writeBytes(uint8_t *data, uint32_t len)
{
// not implemented
}
#endif // !defined(LITTLE_FOOT_PRINT)
void Arduino_PCA9535SWSPI::writeRegister(uint8_t reg, uint8_t *data, size_t len)
{
_wire->beginTransmission(_address);
_wire->write(reg);
for (size_t i = 0; i < len; i++)
{
_wire->write(data[i]);
}
_wire->endTransmission();
}
uint8_t Arduino_PCA9535SWSPI::readRegister(uint8_t reg, uint8_t *data, size_t len)
{
_wire->beginTransmission(_address);
_wire->write(reg);
_wire->endTransmission();
_wire->requestFrom(_address, len);
size_t index = 0;
while (index < len)
data[index++] = _wire->read();
return 0;
}
void Arduino_PCA9535SWSPI::pinMode(uint8_t pin, uint8_t mode)
{
if (is_found)
{
uint8_t port = 0;
if (pin > 15)
{
gpio_set_direction((gpio_num_t)pin, mode == OUTPUT ? GPIO_MODE_OUTPUT : GPIO_MODE_INPUT);
}
else if (pin > 7)
{
this->readRegister(PCA9535_CONFIG_PORT_1_REG, &port, 1);
if (mode == OUTPUT)
{
port = port & (~(1 << (pin - 10)));
}
else
{
port = port | (1 << (pin - 10));
}
this->writeRegister(PCA9535_CONFIG_PORT_1_REG, &port, 1);
}
else
{
this->readRegister(PCA9535_CONFIG_PORT_0_REG, &port, 1);
if (mode == OUTPUT)
{
port = port & (~(1 << pin));
}
else
{
port = port | (1 << pin);
}
this->writeRegister(PCA9535_CONFIG_PORT_0_REG, &port, 1);
}
}
else
{
LOG_INFO(TAG_DRVR, "xl9535 not found");
}
}
void Arduino_PCA9535SWSPI::pinMode8(uint8_t port, uint8_t pin, uint8_t mode)
{
if (is_found)
{
uint8_t _pin = (mode != OUTPUT) ? pin : ~pin;
if (port)
{
this->writeRegister(PCA9535_CONFIG_PORT_1_REG, &_pin, 1);
}
else
{
this->writeRegister(PCA9535_CONFIG_PORT_0_REG, &_pin, 1);
}
}
else
{
LOG_INFO(TAG_DRVR, "xl9535 not found");
}
}
void Arduino_PCA9535SWSPI::digitalWrite(uint8_t pin, uint8_t val)
{
if (is_found)
{
uint8_t port = 0;
uint8_t reg_data = 0;
if (pin > 15)
{
gpio_set_level((gpio_num_t)pin, val);
}
else if (pin > 7)
{
this->readRegister(PCA9535_OUTPUT_PORT_1_REG, &reg_data, 1);
reg_data = reg_data & (~(1 << (pin - 10)));
port = reg_data | val << (pin - 10);
this->writeRegister(PCA9535_OUTPUT_PORT_1_REG, &port, 1);
}
else
{
this->readRegister(PCA9535_OUTPUT_PORT_0_REG, &reg_data, 1);
reg_data = reg_data & (~(1 << pin));
port = reg_data | val << pin;
this->writeRegister(PCA9535_OUTPUT_PORT_0_REG, &port, 1);
}
}
else
{
LOG_INFO(TAG_DRVR, "xl9535 not found");
}
}
int Arduino_PCA9535SWSPI::digitalRead(uint8_t pin)
{
if (is_found)
{
int state = 0;
uint8_t port = 0;
if (pin > 15)
{
state = gpio_get_level((gpio_num_t)pin);
}
else if (pin > 7)
{
this->readRegister(PCA9535_INPUT_PORT_1_REG, &port, 1);
state = port & (pin - 10) ? 1 : 0;
}
else
{
this->readRegister(PCA9535_INPUT_PORT_0_REG, &port, 1);
state = port & pin ? 1 : 0;
}
return state;
}
else
{
LOG_INFO(TAG_DRVR, "xl9535 not found");
}
return 0;
}
#endif

View File

@ -0,0 +1,63 @@
#ifndef _Arduino_PCA9535SWSPI_H_
#define _Arduino_PCA9535SWSPI_H_
#if defined(HASP_USE_ARDUINOGFX)
#warning Arduino_PCA9535SWSPI.h
#include <Wire.h>
#include <Arduino_GFX_Library.h>
#include "Arduino_DataBus.h"
#define PCA9535_IIC_ADDRESS 0X20
#define PCA9535_INPUT_PORT_0_REG 0X00
#define PCA9535_INPUT_PORT_1_REG 0X01
#define PCA9535_OUTPUT_PORT_0_REG 0X02
#define PCA9535_OUTPUT_PORT_1_REG 0X03
#define PCA9535_INVERSION_PORT_0_REG 0X04
#define PCA9535_INVERSION_PORT_1_REG 0X05
#define PCA9535_CONFIG_PORT_0_REG 0X06
#define PCA9535_CONFIG_PORT_1_REG 0X07
class Arduino_PCA9535SWSPI : public Arduino_DataBus
{
public:
Arduino_PCA9535SWSPI(int8_t sda, int8_t scl, int8_t pwd, int8_t cs, int8_t sck, int8_t mosi, TwoWire *wire = &Wire);
bool begin(int32_t speed = GFX_NOT_DEFINED, int8_t dataMode = GFX_NOT_DEFINED) override;
void beginWrite() override;
void endWrite() override;
void writeCommand(uint8_t) override;
void writeCommand16(uint16_t) override;
void write(uint8_t) override;
void write16(uint16_t) override;
void writeRepeat(uint16_t p, uint32_t len) override;
void writePixels(uint16_t *data, uint32_t len) override;
#if !defined(LITTLE_FOOT_PRINT)
void writeBytes(uint8_t *data, uint32_t len) override;
#endif // !defined(LITTLE_FOOT_PRINT)
void pinMode(uint8_t pin, uint8_t mode);
void pinMode8(uint8_t port, uint8_t pin, uint8_t mode);
void digitalWrite(uint8_t pin, uint8_t val);
int digitalRead(uint8_t pin);
protected:
void writeRegister(uint8_t reg, uint8_t *data, size_t len);
uint8_t readRegister(uint8_t reg, uint8_t *data, size_t len);
uint8_t _address;
bool is_found;
int8_t _sda, _scl, _pwd, _cs, _sck, _mosi;
TwoWire *_wire;
private:
};
#endif
#endif // _Arduino_PCA9535SWSPI_H_

View File

@ -66,7 +66,7 @@ struct Panel_M5StackCore2 : public lgfx::Panel_ILI9342
_rotation = 1; // default rotation
}
void reset(void) override
void reset(void)
{
using namespace m5stack;
// AXP192 reg 0x96 = GPIO3&4 control

View File

@ -14,6 +14,10 @@
#define TOUCH_IRQ -1
#endif
#ifndef TOUCH_RST
#define TOUCH_RST -1
#endif
#ifndef TFT_DMA_CHANNEL
#define TFT_DMA_CHANNEL 0
#endif

View File

@ -1,4 +1,4 @@
/* MIT License - Copyright (c) 2019-2022 Francis Van Roie
/* MIT License - Copyright (c) 2019-2023 Francis Van Roie
For full license information read the LICENSE file in the project folder */
#if defined(ARDUINO) && defined(HASP_USE_ARDUINOGFX)
@ -7,6 +7,7 @@
#include "Arduino_RGBPanel_mod.h"
#include "Arduino_RGB_Display_mod.h"
#include "Arduino_PCA9535SWSPI.h"
namespace dev {
@ -34,9 +35,24 @@ void ArduinoGfx::init(int w, int h)
6 /* B1 */, 5 /* B2 */, 3 /* B3 */, 2 /* B4 */, 1 /* hsync_polarity */, 50 /* hsync_front_porch */,
1 /* hsync_pulse_width */, 30 /* hsync_back_porch */, 1 /* vsync_polarity */, 20 /* vsync_front_porch */,
1 /* vsync_pulse_width */, 30 /* vsync_back_porch */, 1 /* pclk_active_neg */);
tft = new Arduino_RGB_Display(w, h, rgbpanel, 0 /* rotation */, TFT_AUTO_FLUSH, bus, TFT_RST,
tft = new Arduino_RGB_Display(w, h, rgbpanel, 0 /* rotation */, TFT_AUTO_FLUSH, bus, TFT_RST,
st7701_type4_init_operations, sizeof(st7701_type4_init_operations));
#elif(TFT_WIDTH == 480) && (TFT_HEIGHT == 480) && defined(SENSECAP_INDICATOR_D1)
Wire.begin(TOUCH_SDA, TOUCH_SCL, I2C_TOUCH_FREQUENCY);
pinMode(TFT_SCLK, OUTPUT);
pinMode(TFT_MOSI, OUTPUT);
pinMode(TFT_MISO, OUTPUT);
Arduino_DataBus* bus = new Arduino_PCA9535SWSPI(TOUCH_SDA, TOUCH_SCL, 5 /* XL PWD */, 4 /* XL CS */,
TFT_SCLK /* XL SCK */, TFT_MOSI /* XL MOSI */, &Wire);
Arduino_ESP32RGBPanel* rgbpanel = new Arduino_ESP32RGBPanel(
TFT_DE, TFT_VSYNC, TFT_HSYNC, TFT_PCLK, TFT_R0, TFT_R1, TFT_R2, TFT_R3, TFT_R4, TFT_G0, TFT_G1, TFT_G2, TFT_G3,
TFT_G4, TFT_G5, TFT_B0, TFT_B1, TFT_B2, TFT_B3, TFT_B4, TFT_HSYNC_POLARITY, TFT_HSYNC_FRONT_PORCH,
TFT_HSYNC_PULSE_WIDTH, TFT_HSYNC_BACK_PORCH, TFT_VSYNC_POLARITY, TFT_VSYNC_FRONT_PORCH, TFT_VSYNC_PULSE_WIDTH,
TFT_VSYNC_BACK_PORCH);
tft = new Arduino_RGB_Display(w, h, rgbpanel, 0 /* rotation */, TFT_AUTO_FLUSH, bus, TFT_RST,
st7701_sensecap_indicator_init_operations, sizeof(st7701_sensecap_indicator_init_operations));
#elif(TFT_WIDTH == 480) && (TFT_HEIGHT == 480) && defined(GC9503V_DRIVER)
Arduino_DataBus* bus = new Arduino_SWSPI(TFT_DC, TFT_CS, TFT_SCLK, TFT_MOSI, TFT_MISO);
Arduino_ESP32RGBPanel* rgbpanel = new Arduino_ESP32RGBPanel(
@ -86,7 +102,7 @@ void ArduinoGfx::init(int w, int h)
LOG_DEBUG(TAG_TFT, F("%s - %d"), __FILE__, __LINE__);
tft->begin(GFX_NOT_DEFINED);
LOG_DEBUG(TAG_TFT, F("%s - %d"), __FILE__, __LINE__);
// tft.setSwapBytes(true); /* set endianess */
// tft.setSwapBytes(true); /* set endianness */
LOG_INFO(TAG_TFT, F(D_SERVICE_STARTED));
}

View File

@ -57,7 +57,7 @@ static uint32_t _read_panel_id(lgfx::Bus_SPI* bus, int32_t pin_cs, uint32_t cmd
return res;
}
#if defined(ESP32S2) || defined(ESP32S3)
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
static lgfx::Bus_Parallel16* init_parallel_16_bus(Preferences* prefs, int8_t data_pins[], uint8_t num)
{
lgfx::Bus_Parallel16* bus = new lgfx::v1::Bus_Parallel16();
@ -85,7 +85,7 @@ static lgfx::Bus_Parallel16* init_parallel_16_bus(Preferences* prefs, int8_t dat
LOG_DEBUG(TAG_TFT, F("%s - %d"), __FILE__, __LINE__);
return bus;
}
#endif // ESP32S2
#endif // ESP32S2/S3
static lgfx::Bus_Parallel8* init_parallel_8_bus(Preferences* prefs, int8_t data_pins[], uint8_t num)
{
@ -223,9 +223,17 @@ static void configure_panel(lgfx::Panel_Device* panel, Preferences* prefs)
#else
cfg.rgb_order = prefs->getBool("rgb_order", false); // true if the red and blue of the panel are swapped
#endif
cfg.dlen_16bit = prefs->getBool("dlen_16bit", false); // true for panels that send data length in 16-bit units
cfg.bus_shared = prefs->getBool("bus_shared", true); // true if the bus is shared with the SD card
// (bus control is performed with drawJpgFile etc.)
bool dlen_16bit = false;
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
if(panel->getBus()) {
lgfx::v1::bus_type_t bus_type = panel->getBus()->busType();
if(bus_type == lgfx::v1::bus_parallel16) dlen_16bit = true;
}
#endif
cfg.dlen_16bit = prefs->getBool("dlen_16bit", dlen_16bit); // true for panels that send data length in 16-bit units
cfg.bus_shared = prefs->getBool("bus_shared", true); // true if the bus is shared with the SD card
// (bus control is performed with drawJpgFile etc.)
panel->config(cfg);
}
@ -240,7 +248,7 @@ lgfx::IBus* _init_bus(Preferences* preferences)
for(uint8_t i = 0; i < 16; i++) {
snprintf(key, sizeof(key), "d%d", i + 1);
data_pins[i] = preferences->getInt(key, data_pins[i]);
LOG_DEBUG(TAG_TFT, F("D%d: %d"), i + 1, data_pins[i]);
LOG_DEBUG(TAG_TFT, F("D%d: %d"), i, data_pins[i]);
}
LOG_DEBUG(TAG_TFT, F("%s - %d"), __FILE__, __LINE__);
@ -252,13 +260,13 @@ lgfx::IBus* _init_bus(Preferences* preferences)
}
LOG_DEBUG(TAG_TFT, F("%s - %d"), __FILE__, __LINE__);
#if defined(ESP32S2)
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
if(is_16bit) {
is_8bit = false;
LOG_VERBOSE(TAG_TFT, F("16-bit TFT bus"));
return init_parallel_16_bus(preferences, data_pins, 16);
} else
#endif // ESP32S2
#endif // ESP32S2/S3
if(is_8bit) {
is_16bit = false;
LOG_VERBOSE(TAG_TFT, F("8-bit TFT bus"));
@ -290,6 +298,11 @@ lgfx::Panel_Device* LovyanGfx::_init_panel(lgfx::IBus* bus)
LOG_VERBOSE(TAG_TFT, F("Panel_ILI9481_b"));
break;
}
case TFT_PANEL_ILI9486: {
panel = new lgfx::Panel_ILI9486();
LOG_VERBOSE(TAG_TFT, F("Panel_ILI9486"));
break;
}
case TFT_PANEL_ILI9488: {
panel = new lgfx::Panel_ILI9488();
LOG_VERBOSE(TAG_TFT, F("Panel_ILI9488"));
@ -417,6 +430,31 @@ lgfx::ITouch* _init_touch(Preferences* preferences)
}
#endif
#if TOUCH_DRIVER == 0x21100
{
auto touch = new lgfx::Touch_TT21xxx();
auto cfg = touch->config();
cfg.x_min = 0;
cfg.x_max = TFT_WIDTH - 1;
cfg.y_min = 0;
cfg.y_max = TFT_HEIGHT - 1;
cfg.pin_int = TOUCH_IRQ;
cfg.bus_shared = true;
cfg.offset_rotation = TOUCH_OFFSET_ROTATION;
// I2C接続の場合
cfg.i2c_port = I2C_TOUCH_PORT;
cfg.i2c_addr = I2C_TOUCH_ADDRESS;
cfg.pin_sda = TOUCH_SDA;
cfg.pin_scl = TOUCH_SCL;
cfg.freq = I2C_TOUCH_FREQUENCY;
touch->config(cfg);
return touch;
}
#endif
#endif // HASP_USE_LGFX_TOUCH
return nullptr;
@ -978,7 +1016,7 @@ void LovyanGfx::init(int w, int h)
LOG_DEBUG(TAG_TFT, F("%s - %d"), __FILE__, __LINE__);
tft.begin();
LOG_DEBUG(TAG_TFT, F("%s - %d"), __FILE__, __LINE__);
tft.setSwapBytes(true); /* set endianess */
tft.setSwapBytes(true); /* set endianness */
LOG_INFO(TAG_TFT, F(D_SERVICE_STARTED));
}
@ -1012,7 +1050,7 @@ void LovyanGfx::show_info()
tftPinInfo(F("TFT_D7"), cfg.pin_d7);
}
#if defined(ESP32S2) || defined(ESP32S3)
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
if(bus_type == lgfx::v1::bus_parallel16) {
LOG_VERBOSE(TAG_TFT, F("Interface : Parallel 16bit"));
auto bus = (lgfx::v1::Bus_Parallel16*)panel->getBus();
@ -1144,7 +1182,7 @@ bool LovyanGfx::is_driver_pin(uint8_t pin)
pin == cfg.pin_d7)
return true;
#if defined(ESP32S2) || defined(ESP32S3)
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
} else if(bus_type == lgfx::v1::bus_parallel16) {
auto bus = (lgfx::v1::Bus_Parallel16*)panel->getBus();
auto cfg = bus->config(); // Get the structure for bus configuration.

View File

@ -16,7 +16,7 @@ void TftEspi::init(int w, int h)
/* TFT init */
tft.begin();
tft.setSwapBytes(true); /* set endianess */
tft.setSwapBytes(true); /* set endianness */
}
void TftEspi::show_info()

View File

@ -12,8 +12,8 @@
#include <Wire.h>
#include "FT6336U.h"
#include "touch_driver.h" // base class
#include "touch_helper.h" // i2c scanner
#include "touch_driver.h" // base class
#include "touch_helper.h" // i2c scanner
#include "../../hasp/hasp.h" // for hasp_sleep_state
extern uint8_t hasp_sleep_state;
@ -67,6 +67,21 @@ class TouchFt6336u : public BaseTouch {
data->state = LV_INDEV_STATE_PR;
hasp_set_sleep_offset(0); // Reset the offset
#if defined(TOUCH_SWAP_XY) && (TOUCH_SWAP_XY)
data->point.x = ft6336u_touch->read_touch1_y();
data->point.y = ft6336u_touch->read_touch1_x();
#else
data->point.x = ft6336u_touch->read_touch1_x();
data->point.y = ft6336u_touch->read_touch1_y();
#endif
#if defined(TOUCH_INVERSE_X) && (TOUCH_INVERSE_X)
data->point.x = _width_max - data->point.x;
#endif
#if defined(TOUCH_INVERSE_Y) && (TOUCH_INVERSE_Y)
data->point.y = _height_max - data->point.y;
#endif
} else {
data->state = LV_INDEV_STATE_REL;
}
@ -77,6 +92,9 @@ class TouchFt6336u : public BaseTouch {
void init(int w, int h)
{
_height_max = h - 1;
_width_max = w - 1;
LOG_INFO(TAG_DRVR, F("Touch SDA : %d"), TOUCH_SDA);
LOG_INFO(TAG_DRVR, F("Touch SCL : %d"), TOUCH_SCL);
LOG_INFO(TAG_DRVR, F("Touch freq. : %d"), I2C_TOUCH_FREQUENCY);
@ -110,6 +128,10 @@ class TouchFt6336u : public BaseTouch {
LOG_ERROR(TAG_DRVR, F("FT6336U touch driver failed to start"));
}
}
private:
uint16_t _width_max;
uint16_t _height_max;
};
} // namespace dev

View File

@ -77,7 +77,7 @@ class TouchGsl1680 : public BaseTouch {
// delay(300); // already happens in touch.begin()
touch_scan(Wire);
// Startup sequence CONTROLER part
// Startup sequence CONTROLLER part
TS.begin(TOUCH_RST, TOUCH_IRQ);
// Setup Interrupt handler

View File

@ -48,8 +48,8 @@ class TouchLovyanGfx : public BaseTouch {
void init(int w, int h)
{
#if defined(TOUCH_SDA) && defined(TOUCH_SCL) && defined(I2C_TOUCH_FREQUENCY)
Wire.begin(TOUCH_SDA, TOUCH_SCL, (uint32_t)I2C_TOUCH_FREQUENCY);
touch_scan(Wire);
// Wire.begin(TOUCH_SDA, TOUCH_SCL, (uint32_t)I2C_TOUCH_FREQUENCY);
// touch_scan(Wire);
#endif
}

View File

@ -72,7 +72,7 @@
// break; /**<13, RTC Watch dog Reset CPU*/
// case 14:
// resetReason += F("EXT_CPU");
// break; /**<14, for APP CPU, reseted by PRO CPU*/
// break; /**<14, for APP CPU, reset by PRO CPU*/
// case 15:
// resetReason += F("RTCWDT_BROWN_OUT");
// break; /**<15, Reset when the vdd voltage is not stable*/
@ -234,12 +234,12 @@ int getMemFree() { // returns the amount of free memory in bytes
// #elif defined(ARDUINO_ARCH_ESP8266)
// return ESP.getFreeHeap();
// #else
// struct mallinfo chuncks = mallinfo();
// struct mallinfo chunks = mallinfo();
// // fordblks
// // This is the total size of memory occupied by free (not in use) chunks.
// return chuncks.fordblks + freeHighMemory();
// return chunks.fordblks + freeHighMemory();
// #endif
// }
@ -254,7 +254,7 @@ int getMemFree() { // returns the amount of free memory in bytes
// #endif
// }
String halGetMacAddress(int start, const char* seperator)
String halGetMacAddress(int start, const char* separator)
{
byte mac[6];
@ -278,7 +278,7 @@ String halGetMacAddress(int start, const char* seperator)
for(int i = start; i < 6; ++i) {
if(mac[i] < 0x10) cMac += "0";
cMac += String(mac[i], HEX);
if(i < 5) cMac += seperator;
if(i < 5) cMac += separator;
}
cMac.toUpperCase();
return cMac;

View File

@ -13,7 +13,7 @@
// size_t halGetFreeHeap(void);
// String halGetCoreVersion(void);
// String halGetChipModel();
String halGetMacAddress(int start, const char* seperator);
String halGetMacAddress(int start, const char* separator);
// uint16_t halGetCpuFreqMHz(void);
// String halDisplayDriverName(void);
// String halGpioName(uint8_t gpio);

View File

@ -387,7 +387,7 @@ void haspReconnect()
// String progress_str((char *)0);
// Shows/hides the the global progress bar and updates the value
// Shows/hides the global progress bar and updates the value
void haspProgressVal(uint8_t val)
{
lv_obj_t* layer = lv_disp_get_layer_sys(NULL);
@ -818,7 +818,7 @@ bool haspGetConfig(const JsonObject& settings)
*
* Read the settings from json and sets the application variables.
*
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
*
* @param[in] settings JsonObject with the config settings.
**/

View File

@ -82,7 +82,7 @@ void my_msgbox_map_clear(lv_obj_t* obj)
lv_btnmatrix_ext_t* ext_btnmatrix = (lv_btnmatrix_ext_t*)lv_obj_get_ext_attr(btnmatrix);
if(!ext_btnmatrix) return;
if(ext_btnmatrix->map_p != msgbox_default_map) // Dont clear the default btnmap
if(ext_btnmatrix->map_p != msgbox_default_map) // Don't clear the default btnmap
my_btnmatrix_map_clear(btnmatrix); // Clear the custom button map if it exists
}
@ -2326,7 +2326,7 @@ static hasp_attribute_type_t attribute_common_method(lv_obj_t* obj, uint16_t att
case ATTR_OPEN:
case ATTR_CLOSE:
if(!obj_check_type(obj, LV_HASP_DROPDOWN)) return HASP_ATTR_TYPE_NOT_FOUND;
event_reset_last_value_sent(); // Prevents manual selection bug because no manual 'down' occured
event_reset_last_value_sent(); // Prevents manual selection bug because no manual 'down' occurred
if(attr_hash == ATTR_OPEN)
lv_dropdown_open(obj);
else

View File

@ -84,7 +84,7 @@ void my_obj_set_template(lv_obj_t* obj, const char* text)
LOG_WARNING(TAG_ATTR, "Failed to allocate memory!");
}
// free the extended user_data when all properies are NULL
// free the extended user_data when all properties are NULL
static void my_prune_ext_tags(lv_obj_t* obj)
{
if(!obj || !obj->user_data.ext) return;
@ -96,7 +96,7 @@ static void my_prune_ext_tags(lv_obj_t* obj)
}
}
// create extended user_data properies object
// create extended user_data properties object
static hasp_ext_user_data_t* my_create_ext_tags(lv_obj_t* obj)
{
void* ext = hasp_calloc(1, sizeof(hasp_ext_user_data_t));
@ -237,7 +237,7 @@ const char* my_obj_get_action(lv_obj_t* obj)
void my_obj_set_swipe(lv_obj_t* obj, const char* payload)
{
hasp_ext_user_data_t* ext = (hasp_ext_user_data_t*)obj->user_data.ext;
static const char* _swipejson = R"({"down":"page back","left":"page next","right":"page prev"})";
static const char* _swipejson = R"({"down":"page back","left":"page next","right":"page prev","up":"page back"})";
// extended tag exists, free old tag if it's not the const _swipejson
if(ext) {
@ -921,7 +921,7 @@ static bool attribute_lookup_lv_property(uint16_t hash, uint8_t * prop)
for(uint32_t i = 0; i < sizeof(props) / sizeof(props[0]); i++) {
if(props[i].hash == hash) {
*prop = props[1].prop;
LOG_WARNING(TAG_ATTR, F("%d found and has propery %d"), hash, props[i].prop);
LOG_WARNING(TAG_ATTR, F("%d found and has property %d"), hash, props[i].prop);
return true;
}
}

View File

@ -177,7 +177,7 @@ static inline bool dispatch_parse_button_attribute(const char* topic_p, const ch
objid = (uint8_t)num;
topic_p = pEnd;
if(*topic_p != '.') return false; // obligated seperator
if(*topic_p != '.') return false; // obligated separator
topic_p++;
hasp_process_attribute(pageid, objid, topic_p, payload, update);
@ -1312,7 +1312,7 @@ void dispatch_current_state(uint8_t source)
// Format filesystem and erase EEPROM
bool dispatch_factory_reset()
{
bool formated = true;
bool formatted = true;
bool erased = true;
bool cleared = true;
@ -1321,15 +1321,15 @@ bool dispatch_factory_reset()
#endif
#if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
formated = HASP_FS.format();
if(formated) filesystemSetupFiles();
formatted = HASP_FS.format();
if(formatted) filesystemSetupFiles();
#endif
#if HASP_USE_EEPROM > 0
erased = configClearEeprom();
#endif
return formated && erased && cleared;
return formatted && erased && cleared;
}
void dispatch_calibrate(const char*, const char*, uint8_t source)
@ -1357,10 +1357,13 @@ void dispatch_idle(const char*, const char* payload, uint8_t source)
uint8_t state = HASP_SLEEP_LAST;
if(!strcmp_P(payload, "off")) {
hasp_set_sleep_state(HASP_SLEEP_OFF);
dispatch_run_script(NULL, "L:/idle_off.cmd", source);
} else if(!strcmp_P(payload, "short")) {
hasp_set_sleep_state(HASP_SLEEP_SHORT);
dispatch_run_script(NULL, "L:/idle_short.cmd", source);
} else if(!strcmp_P(payload, "long")) {
hasp_set_sleep_state(HASP_SLEEP_LONG);
dispatch_run_script(NULL, "L:/idle_long.cmd", source);
} else {
LOG_WARNING(TAG_MSGR, F("Invalid idle value %s"), payload);
return;

View File

@ -215,7 +215,7 @@ void event_timer_refresh(lv_task_t* task)
* Get the hasp eventid for LV_EVENT_PRESSED, LV_EVENT_VALUE_CHANGED, LV_EVENT_LONG_PRESSED_REPEAT and
* LV_EVENT_RELEASED Also updates the sleep state and handles LV_EVENT_DELETE events
* @param obj pointer to a color picker
* @param event type of event that occured
* @param event type of event that occurred
* @param eventid returns the hasp eventid
*/
static bool translate_event(lv_obj_t* obj, lv_event_t event, uint8_t& eventid)
@ -367,7 +367,7 @@ static void log_event(const char* name, lv_event_t event)
/**
* Called when a press on the system layer is detected
* @param obj pointer to a button matrix
* @param event type of event that occured
* @param event type of event that occurred
*/
void first_touch_event_handler(lv_obj_t* obj, lv_event_t event)
{
@ -419,7 +419,7 @@ void swipe_event_handler(lv_obj_t* obj, lv_event_t event)
/**
* Called when a textarea is clicked
* @param obj pointer to a textarea object
* @param event type of event that occured
* @param event type of event that occurred
*/
void textarea_event_handler(lv_obj_t* obj, lv_event_t event)
{
@ -455,7 +455,7 @@ void textarea_event_handler(lv_obj_t* obj, lv_event_t event)
/**
* Called when a button-style object is clicked
* @param obj pointer to a button object
* @param event type of event that occured
* @param event type of event that occurred
*/
void generic_event_handler(lv_obj_t* obj, lv_event_t event)
{
@ -546,7 +546,7 @@ void generic_event_handler(lv_obj_t* obj, lv_event_t event)
/**
* Called when a object state is toggled on/off
* @param obj pointer to a switch object
* @param event type of event that occured
* @param event type of event that occurred
*/
void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
{
@ -591,7 +591,7 @@ void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
/**
* Called when a range value has changed
* @param obj pointer to a dropdown list or roller
* @param event type of event that occured
* @param event type of event that occurred
*/
void selector_event_handler(lv_obj_t* obj, lv_event_t event)
{
@ -670,7 +670,7 @@ void selector_event_handler(lv_obj_t* obj, lv_event_t event)
/**
* Called when a btnmatrix value has changed
* @param obj pointer to a dropdown list or roller
* @param event type of event that occured
* @param event type of event that occurred
*/
void alarm_event_handler(lv_obj_t* obj, lv_event_t event)
{
@ -714,7 +714,7 @@ void alarm_event_handler(lv_obj_t* obj, lv_event_t event)
/**
* Called when a btnmatrix value has changed
* @param obj pointer to a dropdown list or roller
* @param event type of event that occured
* @param event type of event that occurred
*/
void btnmatrix_event_handler(lv_obj_t* obj, lv_event_t event)
{
@ -749,7 +749,7 @@ void btnmatrix_event_handler(lv_obj_t* obj, lv_event_t event)
/**
* Called when a msgbox value has changed
* @param obj pointer to a dropdown list or roller
* @param event type of event that occured
* @param event type of event that occurred
*/
void msgbox_event_handler(lv_obj_t* obj, lv_event_t event)
{
@ -783,7 +783,7 @@ void msgbox_event_handler(lv_obj_t* obj, lv_event_t event)
/**
* Called when a slider or adjustable arc is clicked
* @param obj pointer to a slider
* @param event type of event that occured
* @param event type of event that occurred
*/
void slider_event_handler(lv_obj_t* obj, lv_event_t event)
{
@ -825,7 +825,7 @@ void slider_event_handler(lv_obj_t* obj, lv_event_t event)
/**
* Called when a color picker is clicked
* @param obj pointer to a color picker
* @param event type of event that occured
* @param event type of event that occurred
*/
void cpicker_event_handler(lv_obj_t* obj, lv_event_t event)
{

View File

@ -137,7 +137,7 @@ inline const char* obj_get_type_name(const lv_obj_t* obj)
* Check if an lvgl objecttype name corresponds to a given HASP object ID
* @param obj an lv_obj_t* of the object to check its type
* @param haspobjtype the HASP object ID to check against
* @return true or false wether the types match
* @return true or false whether the types match
* @note
*/
inline bool obj_check_type(const lv_obj_t* obj, lv_hasp_obj_type_t haspobjtype)

View File

@ -288,14 +288,14 @@ bool filesystemSetup(void)
// no SPIFFS settings, as settings depend on SPIFFS
// no Logging, because it depends on the configuration file
// Logging is defered until debugging has started
// Logging is deferred until debugging has started
// FS success or failure is printed at that time !
#if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0
#if defined(ARDUINO_ARCH_ESP8266)
if(!HASP_FS.begin()) {
#else
if(HASP_FS.begin(false)) return true; // already formated
if(HASP_FS.begin(false)) return true; // already formatted
if(!HASP_FS.begin(true)) { // format partition
#endif

View File

@ -209,7 +209,7 @@ static inline void gui_init_filesystems()
#if LV_USE_FS_IF != 0
//_lv_fs_init(); // lvgl File System -- not needed, it done in lv_init() when LV_USE_FILESYSTEM is set
LOG_VERBOSE(TAG_LVGL, F("Filesystem : " D_SETTING_ENABLED));
lv_fs_if_init(); // auxilary file system drivers
lv_fs_if_init(); // auxiliary file system drivers
// filesystem_list_path("L:/");
lv_fs_file_t f;
@ -532,7 +532,7 @@ bool guiGetConfig(const JsonObject& settings)
*
* Read the settings from json and sets the application variables.
*
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
*
* @param[in] settings JsonObject with the config settings.
**/
@ -675,7 +675,7 @@ static void gui_screenshot_to_file(lv_disp_drv_t* disp, const lv_area_t* area, l
*
* Flush buffer into a binary file.
*
* @note: data pixel should be formated to uint16_t RGB. Set by Bitmap header.
* @note: data pixel should be formatted to uint16_t RGB. Set by Bitmap header.
*
* @param[in] pFileName Output binary file name.
*
@ -738,7 +738,7 @@ static void gui_screenshot_to_both(lv_disp_drv_t* disp, const lv_area_t* area, l
*
* Flush buffer into a http client.
*
* @note: data pixel should be formated to uint16_t RGB. Set by Bitmap header.
* @note: data pixel should be formatted to uint16_t RGB. Set by Bitmap header.
*
**/
void guiTakeScreenshot()

234
src/lang/da_DK.h Normal file
View File

@ -0,0 +1,234 @@
// This translation file is maintained on https://crowdin.com/project/openhasp/
// Do not edit directly!
#ifndef HASP_LANG_EN_US_H
#define HASP_LANG_EN_US_H
#define D_ISO_LANG_CODE "en-US"
#define D_USERNAME "Username:"
#define D_PASSWORD "Password:"
#define D_SSID "Ssid:"
#define D_YES "Yes"
#define D_NO "No"
#define D_ERROR_OUT_OF_MEMORY "Out of memory"
#define D_ERROR_UNKNOWN "Unknown error"
#define D_CONFIG_NOT_CHANGED "Settings did not change"
#define D_CONFIG_CHANGED "Settings changed"
#define D_CONFIG_LOADED "Settings loaded"
#define D_FILE_LOADING "Loading %s"
#define D_FILE_LOADED "Loaded %s"
#define D_FILE_LOAD_FAILED "Failed to load %s"
#define D_FILE_SAVING "Saving %s"
#define D_FILE_SAVED "Saved %s"
#define D_FILE_SAVE_FAILED "Failed to save %s"
#define D_FILE_NOT_FOUND "File not found"
#define D_FILE_SIZE_BYTES "bytes"
#define D_FILE_SIZE_KILOBYTES "KiB"
#define D_FILE_SIZE_MEGABYTES "MiB"
#define D_FILE_SIZE_GIGABYTES "GiB"
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
#define D_DECIMAL_POINT "." // decimal comma or point
#define D_SERVICE_STARTING "Starting..."
#define D_SERVICE_STARTED "Started"
#define D_SERVICE_START_FAILED "Failed to start"
#define D_SERVICE_STOPPED "Stopped"
#define D_SERVICE_DISABLED "Disabled"
#define D_SERVICE_CONNECTED "Connected"
#define D_SERVICE_DISCONNECTED "Disconnected"
#define D_SETTING_ENABLED "Enabled"
#define D_SETTING_DISABLED "Disabled"
#define D_SETTING_DEFAULT "Default"
#define D_NETWORK_IP_ADDRESS_RECEIVED "Received IP address %s"
#define D_NETWORK_ONLINE "online"
#define D_NETWORK_OFFLINE "offline"
#define D_NETWORK_CONNECTION_FAILED "Connection failed"
#define D_NETWORK_CONNECTION_UNAUTHORIZED "Authorization failed"
#define D_MQTT_DEFAULT_NAME "plate_%s"
#define D_MQTT_CONNECTING "Connecting..."
#define D_MQTT_CONNECTED "Connected to broker %s as clientID %s"
#define D_MQTT_NOT_CONNECTED "Not connected ???"
#define D_MQTT_DISCONNECTING "Disconnecting..."
#define D_MQTT_DISCONNECTED "Disconnected"
#define D_MQTT_RECONNECTING "Disconnected from broker, reconnection..."
#define D_MQTT_NOT_CONFIGURED "Broker not configured"
#define D_MQTT_STARTED "Started: %d bytes"
#define D_MQTT_FAILED "Failed:"
#define D_MQTT_INVALID_TOPIC "Message has invalid topic"
#define D_MQTT_SUBSCRIBED "Subscribed to %s"
#define D_MQTT_NOT_SUBSCRIBED "Failed to subscribe to %s"
#define D_MQTT_HA_AUTO_DISCOVERY "Register HA auto-discovery"
#define D_MQTT_PAYLOAD_TOO_LONG "Payload too long (%u bytes)"
#define D_TELNET_CLOSING_CONNECTION "Closing session from %s"
#define D_TELNET_CLIENT_LOGIN_FROM "Client login from %s"
#define D_TELNET_CLIENT_CONNECT_FROM "Client connected from %s"
#define D_TELNET_CLIENT_NOT_CONNECTED "Client NOT connected"
#define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Incorrect login attempt from %s"
#define D_TELNET_STARTED "Telnet console started"
#define D_TELNET_FAILED "Failed to start telnet console"
#define D_TELNET_CLIENT_CONNECTED "Client connected"
#define D_TELNET_CLIENT_REJECTED "Client rejected"
#define D_HASP_INVALID_PAGE "Invalid page %u"
#define D_HASP_INVALID_LAYER "Cannot clear system layer"
#define D_HASP_CHANGE_PAGE "Changing page to %u"
#define D_HASP_CLEAR_PAGE "Clearing page %u"
#define D_OBJECT_DELETED "Object deleted"
#define D_OBJECT_UNKNOWN "Unknown object"
#define D_OBJECT_MISMATCH "Objects DO NOT match!"
#define D_OBJECT_LOST "Lost object!"
#define D_OBJECT_CREATE_FAILED "Failed to create object id %u"
#define D_OBJECT_PAGE_UNKNOWN "Page ID %u not defined"
#define D_OBJECT_EVENT_UNKNOWN "Unknown Event %d"
#define D_ATTRIBUTE_UNKNOWN "Unknown property %s"
// D_ATTRIBUTE_OBSOLETE D_ATTRIBUTE_INSTEAD can be used together or just D_ATTRIBUTE_OBSOLETE alone
#define D_ATTRIBUTE_OBSOLETE "%s is obsolete"
#define D_ATTRIBUTE_INSTEAD ", use %s instead"
#define D_ATTRIBUTE_READ_ONLY "%s is read-only"
#define D_ATTRIBUTE_PAGE_METHOD_INVALID "Unable to call %s on a page"
#define D_ATTRIBUTE_ALIGN_INVALID "Invalid align property: %s"
#define D_ATTRIBUTE_COLOR_INVALID "Invalid color property: %s"
#define D_ATTRIBUTE_LONG_MODE_INVALID "Invalid long mode: %s"
#define D_OOBE_SSID_VALIDATED "SSID %s validated"
#define D_OOBE_AUTO_CALIBRATE "Auto calibrate enabled"
#define D_OOBE_CALIBRATED "Already calibrated"
#define D_DISPATCH_COMMAND_NOT_FOUND "Command '%s' not found"
#define D_DISPATCH_INVALID_PAGE "Invalid page %s"
#define D_DISPATCH_REBOOT "Rebooting the MCU now!"
#define D_JSON_FAILED "JSON parsing failed:"
#define D_JSONL_FAILED "JSONL parsing failed at line %u"
#define D_JSONL_SUCCEEDED "Jsonl fully parsed"
#define D_OTA_CHECK_UPDATE "Trying update URL: %s"
#define D_OTA_CHECK_COMPLETE "Update check complete"
#define D_OTA_CHECK_FAILED "Update check failed: %s"
#define D_OTA_UPDATE_FIRMWARE "OTA Firmware Update"
#define D_OTA_UPDATE_COMPLETE "OTA Update complete"
#define D_OTA_UPDATE_APPLY "Applying Firmware & Reboot"
#define D_OTA_UPDATE_FAILED "OTA Update failed"
#define D_OTA_UPDATING_FIRMWARE "Updating firmware..."
#define D_OTA_UPDATING_FILESYSTEM "Updating filesystem..."
#define D_HTTP_HASP_DESIGN "HASP Design"
#define D_HTTP_INFORMATION "Information"
#define D_HTTP_HTTP_SETTINGS "HTTP Settings"
#define D_HTTP_FTP_SETTINGS "FTP Settings"
#define D_HTTP_WIFI_SETTINGS "Wifi Settings"
#define D_HTTP_MQTT_SETTINGS "MQTT Settings"
#define D_HTTP_GPIO_SETTINGS "GPIO Settings"
#define D_HTTP_MDNS_SETTINGS "mDNS Settings"
#define D_HTTP_TELNET_SETTINGS "Telnet Settings"
#define D_HTTP_DEBUG_SETTINGS "Debug Settings"
#define D_HTTP_GUI_SETTINGS "Display Settings"
#define D_HTTP_SAVE_SETTINGS "Save Settings"
#define D_HTTP_UPLOAD_FILE "Upload File"
#define D_HTTP_ERASE_DEVICE "Reset All Settings"
#define D_HTTP_ADD_GPIO "Add New Pin"
#define D_HTTP_BACK "Back"
#define D_HTTP_REFRESH "Refresh"
#define D_HTTP_PREV_PAGE "Prev Page"
#define D_HTTP_NEXT_PAGE "Next Page"
#define D_HTTP_CALIBRATE "Calibrate"
#define D_HTTP_ANTIBURN "Run Anti Burn-in"
#define D_HTTP_SCREENSHOT "Screenshot"
#define D_HTTP_FILE_BROWSER "File Editor"
#define D_HTTP_FIRMWARE_UPGRADE "Firmware Upgrade"
#define D_HTTP_UPDATE_FIRMWARE "Update Firmware"
#define D_HTTP_FACTORY_RESET "Factory Reset"
#define D_HTTP_MAIN_MENU "Main Menu"
#define D_HTTP_REBOOT "Restart"
#define D_HTTP_CONFIGURATION "Configuration"
#define D_HTTP_CONFIG_CHANGED \
"The configuration has changed, please click <a href='/reboot'>Restart</a> to save changes to flash."
#define D_HTTP_SENDING_PAGE "Sent %S page to %s"
#define D_HTTP_FOOTER "by Francis Van Roie"
#define D_INFO_VERSION "Version"
#define D_INFO_BUILD_DATETIME "Build DateTime"
#define D_INFO_ENVIRONMENT "Environment"
#define D_INFO_UPTIME "Uptime"
#define D_INFO_FREE_HEAP "Free Heap"
#define D_INFO_FREE_BLOCK "Free Block"
#define D_INFO_DEVICE_MEMORY "Device Memory"
#define D_INFO_LVGL_MEMORY "LVGL Memory"
#define D_INFO_TOTAL_MEMORY "Total"
#define D_INFO_FREE_MEMORY "Free"
#define D_INFO_FRAGMENTATION "Fragmentation"
#define D_INFO_PSRAM_FREE "PSRam Free"
#define D_INFO_PSRAM_SIZE "PSRam Size"
#define D_INFO_FLASH_SIZE "Flash Size"
#define D_INFO_SKETCH_USED "Program Size Used"
#define D_INFO_SKETCH_FREE "Program Size Free"
#define D_INFO_FS_SIZE "Filesystem Size"
#define D_INFO_FS_USED "Filesystem Used"
#define D_INFO_FS_FREE "Filesystem Free"
#define D_INFO_MODULE "Module"
#define D_INFO_MODEL "Model"
#define D_INFO_FREQUENCY "Frequency"
#define D_INFO_CORE_VERSION "Core Version"
#define D_INFO_RESET_REASON "Reset Reason"
#define D_INFO_STATUS "Status"
#define D_INFO_SERVER "Server"
#define D_INFO_USERNAME "Username"
#define D_INFO_CLIENTID "Client ID"
// #define D_INFO_CONNECTED "Connected"
// #define D_INFO_DISCONNECTED "Disconnected"
#define D_INFO_RECEIVED "Received"
#define D_INFO_PUBLISHED "Published"
#define D_INFO_FAILED "Failed"
#define D_INFO_ETHERNET "Ethernet"
#define D_INFO_WIFI "Wifi"
#define D_INFO_LINK_SPEED "Link Speed"
#define D_INFO_FULL_DUPLEX "Full Duplex"
#define D_INFO_BSSID "BSSID"
#define D_INFO_SSID "SSID"
#define D_INFO_RSSI "Signal Strength"
#define D_INFO_IP_ADDRESS "IP Address"
#define D_INFO_MAC_ADDRESS "MAC Address"
#define D_INFO_GATEWAY "Gateway"
#define D_INFO_DNS_SERVER "DNS Server"
#define D_OOBE_MSG "Tap the screen to setup WiFi or connect to this Access Point:"
#define D_OOBE_SCAN_TO_CONNECT "Scan to connect"
#define D_WIFI_CONNECTING_TO "Connecting to %s"
#define D_WIFI_CONNECTED_TO "Connected to %s, requesting IP..."
#define D_WIFI_RSSI_EXCELLENT "Excellent"
#define D_WIFI_RSSI_GOOD "Good"
#define D_WIFI_RSSI_FAIR "Fair"
#define D_WIFI_RSSI_WEAK "Weak"
#define D_WIFI_RSSI_BAD "Very bad"
#define D_GPIO_SWITCH "Switch"
#define D_GPIO_BUTTON "Push Button"
#define D_GPIO_TOUCH "Capacitive Touch"
#define D_GPIO_LED "Led"
#define D_GPIO_LED_R "Mood Red"
#define D_GPIO_LED_G "Mood Green"
#define D_GPIO_LED_B "Mood Blue"
#define D_GPIO_POWER_RELAY "Power Relay"
#define D_GPIO_LIGHT_RELAY "Light Relay"
#define D_GPIO_PWM "PWM"
#define D_GPIO_DAC "DAC"
#define D_GPIO_SERIAL_DIMMER "Serial Dimmer"
#define D_GPIO_UNKNOWN "Unknown"
#define D_GPIO_PIN "Pin"
#define D_GPIO_GROUP "Group"
#define D_GPIO_GROUP_NONE "None"
#define D_GPIO_STATE_NORMAL "Normal"
#define D_GPIO_STATE_INVERTED "Inverted"
#endif

234
src/lang/de_DE.h Normal file
View File

@ -0,0 +1,234 @@
// This translation file is maintained on https://crowdin.com/project/openhasp/
// Do not edit directly!
#ifndef HASP_LANG_EN_US_H
#define HASP_LANG_EN_US_H
#define D_ISO_LANG_CODE "en-US"
#define D_USERNAME "Username:"
#define D_PASSWORD "Password:"
#define D_SSID "Ssid:"
#define D_YES "Yes"
#define D_NO "No"
#define D_ERROR_OUT_OF_MEMORY "Out of memory"
#define D_ERROR_UNKNOWN "Unknown error"
#define D_CONFIG_NOT_CHANGED "Settings did not change"
#define D_CONFIG_CHANGED "Settings changed"
#define D_CONFIG_LOADED "Settings loaded"
#define D_FILE_LOADING "Loading %s"
#define D_FILE_LOADED "Loaded %s"
#define D_FILE_LOAD_FAILED "Failed to load %s"
#define D_FILE_SAVING "Saving %s"
#define D_FILE_SAVED "Saved %s"
#define D_FILE_SAVE_FAILED "Failed to save %s"
#define D_FILE_NOT_FOUND "File not found"
#define D_FILE_SIZE_BYTES "bytes"
#define D_FILE_SIZE_KILOBYTES "KiB"
#define D_FILE_SIZE_MEGABYTES "MiB"
#define D_FILE_SIZE_GIGABYTES "GiB"
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
#define D_DECIMAL_POINT "." // decimal comma or point
#define D_SERVICE_STARTING "Starting..."
#define D_SERVICE_STARTED "Started"
#define D_SERVICE_START_FAILED "Failed to start"
#define D_SERVICE_STOPPED "Stopped"
#define D_SERVICE_DISABLED "Disabled"
#define D_SERVICE_CONNECTED "Connected"
#define D_SERVICE_DISCONNECTED "Disconnected"
#define D_SETTING_ENABLED "Enabled"
#define D_SETTING_DISABLED "Disabled"
#define D_SETTING_DEFAULT "Default"
#define D_NETWORK_IP_ADDRESS_RECEIVED "Received IP address %s"
#define D_NETWORK_ONLINE "online"
#define D_NETWORK_OFFLINE "offline"
#define D_NETWORK_CONNECTION_FAILED "Connection failed"
#define D_NETWORK_CONNECTION_UNAUTHORIZED "Authorization failed"
#define D_MQTT_DEFAULT_NAME "plate_%s"
#define D_MQTT_CONNECTING "Connecting..."
#define D_MQTT_CONNECTED "Connected to broker %s as clientID %s"
#define D_MQTT_NOT_CONNECTED "Not connected ???"
#define D_MQTT_DISCONNECTING "Disconnecting..."
#define D_MQTT_DISCONNECTED "Disconnected"
#define D_MQTT_RECONNECTING "Disconnected from broker, reconnection..."
#define D_MQTT_NOT_CONFIGURED "Broker not configured"
#define D_MQTT_STARTED "Started: %d bytes"
#define D_MQTT_FAILED "Failed:"
#define D_MQTT_INVALID_TOPIC "Message has invalid topic"
#define D_MQTT_SUBSCRIBED "Subscribed to %s"
#define D_MQTT_NOT_SUBSCRIBED "Failed to subscribe to %s"
#define D_MQTT_HA_AUTO_DISCOVERY "Register HA auto-discovery"
#define D_MQTT_PAYLOAD_TOO_LONG "Payload too long (%u bytes)"
#define D_TELNET_CLOSING_CONNECTION "Closing session from %s"
#define D_TELNET_CLIENT_LOGIN_FROM "Client login from %s"
#define D_TELNET_CLIENT_CONNECT_FROM "Client connected from %s"
#define D_TELNET_CLIENT_NOT_CONNECTED "Client NOT connected"
#define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Incorrect login attempt from %s"
#define D_TELNET_STARTED "Telnet console started"
#define D_TELNET_FAILED "Failed to start telnet console"
#define D_TELNET_CLIENT_CONNECTED "Client connected"
#define D_TELNET_CLIENT_REJECTED "Client rejected"
#define D_HASP_INVALID_PAGE "Invalid page %u"
#define D_HASP_INVALID_LAYER "Cannot clear system layer"
#define D_HASP_CHANGE_PAGE "Changing page to %u"
#define D_HASP_CLEAR_PAGE "Clearing page %u"
#define D_OBJECT_DELETED "Object deleted"
#define D_OBJECT_UNKNOWN "Unknown object"
#define D_OBJECT_MISMATCH "Objects DO NOT match!"
#define D_OBJECT_LOST "Lost object!"
#define D_OBJECT_CREATE_FAILED "Failed to create object id %u"
#define D_OBJECT_PAGE_UNKNOWN "Page ID %u not defined"
#define D_OBJECT_EVENT_UNKNOWN "Unknown Event %d"
#define D_ATTRIBUTE_UNKNOWN "Unknown property %s"
// D_ATTRIBUTE_OBSOLETE D_ATTRIBUTE_INSTEAD can be used together or just D_ATTRIBUTE_OBSOLETE alone
#define D_ATTRIBUTE_OBSOLETE "%s is obsolete"
#define D_ATTRIBUTE_INSTEAD ", use %s instead"
#define D_ATTRIBUTE_READ_ONLY "%s is read-only"
#define D_ATTRIBUTE_PAGE_METHOD_INVALID "Unable to call %s on a page"
#define D_ATTRIBUTE_ALIGN_INVALID "Invalid align property: %s"
#define D_ATTRIBUTE_COLOR_INVALID "Invalid color property: %s"
#define D_ATTRIBUTE_LONG_MODE_INVALID "Invalid long mode: %s"
#define D_OOBE_SSID_VALIDATED "SSID %s validated"
#define D_OOBE_AUTO_CALIBRATE "Auto calibrate enabled"
#define D_OOBE_CALIBRATED "Already calibrated"
#define D_DISPATCH_COMMAND_NOT_FOUND "Command '%s' not found"
#define D_DISPATCH_INVALID_PAGE "Invalid page %s"
#define D_DISPATCH_REBOOT "Rebooting the MCU now!"
#define D_JSON_FAILED "JSON parsing failed:"
#define D_JSONL_FAILED "JSONL parsing failed at line %u"
#define D_JSONL_SUCCEEDED "Jsonl fully parsed"
#define D_OTA_CHECK_UPDATE "Trying update URL: %s"
#define D_OTA_CHECK_COMPLETE "Update check complete"
#define D_OTA_CHECK_FAILED "Update check failed: %s"
#define D_OTA_UPDATE_FIRMWARE "OTA Firmware Update"
#define D_OTA_UPDATE_COMPLETE "OTA Update complete"
#define D_OTA_UPDATE_APPLY "Applying Firmware & Reboot"
#define D_OTA_UPDATE_FAILED "OTA Update failed"
#define D_OTA_UPDATING_FIRMWARE "Updating firmware..."
#define D_OTA_UPDATING_FILESYSTEM "Updating filesystem..."
#define D_HTTP_HASP_DESIGN "HASP Design"
#define D_HTTP_INFORMATION "Information"
#define D_HTTP_HTTP_SETTINGS "HTTP Settings"
#define D_HTTP_FTP_SETTINGS "FTP Settings"
#define D_HTTP_WIFI_SETTINGS "Wifi Settings"
#define D_HTTP_MQTT_SETTINGS "MQTT Settings"
#define D_HTTP_GPIO_SETTINGS "GPIO Settings"
#define D_HTTP_MDNS_SETTINGS "mDNS Settings"
#define D_HTTP_TELNET_SETTINGS "Telnet Settings"
#define D_HTTP_DEBUG_SETTINGS "Debug Settings"
#define D_HTTP_GUI_SETTINGS "Display Settings"
#define D_HTTP_SAVE_SETTINGS "Save Settings"
#define D_HTTP_UPLOAD_FILE "Upload File"
#define D_HTTP_ERASE_DEVICE "Reset All Settings"
#define D_HTTP_ADD_GPIO "Add New Pin"
#define D_HTTP_BACK "Back"
#define D_HTTP_REFRESH "Refresh"
#define D_HTTP_PREV_PAGE "Prev Page"
#define D_HTTP_NEXT_PAGE "Next Page"
#define D_HTTP_CALIBRATE "Calibrate"
#define D_HTTP_ANTIBURN "Run Anti Burn-in"
#define D_HTTP_SCREENSHOT "Screenshot"
#define D_HTTP_FILE_BROWSER "File Editor"
#define D_HTTP_FIRMWARE_UPGRADE "Firmware Upgrade"
#define D_HTTP_UPDATE_FIRMWARE "Update Firmware"
#define D_HTTP_FACTORY_RESET "Factory Reset"
#define D_HTTP_MAIN_MENU "Main Menu"
#define D_HTTP_REBOOT "Restart"
#define D_HTTP_CONFIGURATION "Configuration"
#define D_HTTP_CONFIG_CHANGED \
"The configuration has changed, please click <a href='/reboot'>Restart</a> to save changes to flash."
#define D_HTTP_SENDING_PAGE "Sent %S page to %s"
#define D_HTTP_FOOTER "by Francis Van Roie"
#define D_INFO_VERSION "Version"
#define D_INFO_BUILD_DATETIME "Build DateTime"
#define D_INFO_ENVIRONMENT "Environment"
#define D_INFO_UPTIME "Uptime"
#define D_INFO_FREE_HEAP "Free Heap"
#define D_INFO_FREE_BLOCK "Free Block"
#define D_INFO_DEVICE_MEMORY "Device Memory"
#define D_INFO_LVGL_MEMORY "LVGL Memory"
#define D_INFO_TOTAL_MEMORY "Total"
#define D_INFO_FREE_MEMORY "Free"
#define D_INFO_FRAGMENTATION "Fragmentation"
#define D_INFO_PSRAM_FREE "PSRam Free"
#define D_INFO_PSRAM_SIZE "PSRam Size"
#define D_INFO_FLASH_SIZE "Flash Size"
#define D_INFO_SKETCH_USED "Program Size Used"
#define D_INFO_SKETCH_FREE "Program Size Free"
#define D_INFO_FS_SIZE "Filesystem Size"
#define D_INFO_FS_USED "Filesystem Used"
#define D_INFO_FS_FREE "Filesystem Free"
#define D_INFO_MODULE "Module"
#define D_INFO_MODEL "Model"
#define D_INFO_FREQUENCY "Frequency"
#define D_INFO_CORE_VERSION "Core Version"
#define D_INFO_RESET_REASON "Reset Reason"
#define D_INFO_STATUS "Status"
#define D_INFO_SERVER "Server"
#define D_INFO_USERNAME "Username"
#define D_INFO_CLIENTID "Client ID"
// #define D_INFO_CONNECTED "Connected"
// #define D_INFO_DISCONNECTED "Disconnected"
#define D_INFO_RECEIVED "Received"
#define D_INFO_PUBLISHED "Published"
#define D_INFO_FAILED "Failed"
#define D_INFO_ETHERNET "Ethernet"
#define D_INFO_WIFI "Wifi"
#define D_INFO_LINK_SPEED "Link Speed"
#define D_INFO_FULL_DUPLEX "Full Duplex"
#define D_INFO_BSSID "BSSID"
#define D_INFO_SSID "SSID"
#define D_INFO_RSSI "Signal Strength"
#define D_INFO_IP_ADDRESS "IP Address"
#define D_INFO_MAC_ADDRESS "MAC Address"
#define D_INFO_GATEWAY "Gateway"
#define D_INFO_DNS_SERVER "DNS Server"
#define D_OOBE_MSG "Tap the screen to setup WiFi or connect to this Access Point:"
#define D_OOBE_SCAN_TO_CONNECT "Scan to connect"
#define D_WIFI_CONNECTING_TO "Connecting to %s"
#define D_WIFI_CONNECTED_TO "Connected to %s, requesting IP..."
#define D_WIFI_RSSI_EXCELLENT "Excellent"
#define D_WIFI_RSSI_GOOD "Good"
#define D_WIFI_RSSI_FAIR "Fair"
#define D_WIFI_RSSI_WEAK "Weak"
#define D_WIFI_RSSI_BAD "Very bad"
#define D_GPIO_SWITCH "Switch"
#define D_GPIO_BUTTON "Push Button"
#define D_GPIO_TOUCH "Capacitive Touch"
#define D_GPIO_LED "Led"
#define D_GPIO_LED_R "Mood Red"
#define D_GPIO_LED_G "Mood Green"
#define D_GPIO_LED_B "Mood Blue"
#define D_GPIO_POWER_RELAY "Power Relay"
#define D_GPIO_LIGHT_RELAY "Light Relay"
#define D_GPIO_PWM "PWM"
#define D_GPIO_DAC "DAC"
#define D_GPIO_SERIAL_DIMMER "Serial Dimmer"
#define D_GPIO_UNKNOWN "Unknown"
#define D_GPIO_PIN "Pin"
#define D_GPIO_GROUP "Group"
#define D_GPIO_GROUP_NONE "None"
#define D_GPIO_STATE_NORMAL "Normal"
#define D_GPIO_STATE_INVERTED "Inverted"
#endif

View File

@ -1,3 +1,6 @@
// This translation file is maintained on https://crowdin.com/project/openhasp/
// Do not edit directly!
#ifndef HASP_LANG_EN_US_H
#define HASP_LANG_EN_US_H
@ -10,7 +13,7 @@
#define D_NO "No"
#define D_ERROR_OUT_OF_MEMORY "Out of memory"
#define D_ERROR_UNKNOWN "Unkown error"
#define D_ERROR_UNKNOWN "Unknown error"
#define D_CONFIG_NOT_CHANGED "Settings did not change"
#define D_CONFIG_CHANGED "Settings changed"
@ -209,7 +212,6 @@
#define D_WIFI_RSSI_WEAK "Weak"
#define D_WIFI_RSSI_BAD "Very bad"
// new
#define D_GPIO_SWITCH "Switch"
#define D_GPIO_BUTTON "Push Button"
#define D_GPIO_TOUCH "Capacitive Touch"

View File

@ -1,3 +1,6 @@
// This translation file is maintained on https://crowdin.com/project/openhasp/
// Do not edit directly!
#ifndef HASP_LANG_ES_ES_H
#define HASP_LANG_ES_ES_H
@ -10,7 +13,7 @@
#define D_NO "No" // New
#define D_ERROR_OUT_OF_MEMORY "Memory llena"
#define D_ERROR_UNKNOWN "Error desconocido"
#define D_ERROR_UNKNOWN "Unknown error"
#define D_CONFIG_NOT_CHANGED "No hay cambios en la configuración"
#define D_CONFIG_CHANGED "Configuración cambiada"
@ -67,11 +70,11 @@
#define D_TELNET_CLOSING_CONNECTION "Cerrando sesión de %s"
#define D_TELNET_CLIENT_LOGIN_FROM "Se ha firmado el cliente %s"
#define D_TELNET_CLIENT_CONNECT_FROM "Se ha conectado el cliente %s"
#define D_TELNET_CLIENT_NOT_CONNECTED "Cliente NO conectado"
#define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Intento de conexión incorrecta desde %s"
#define D_TELNET_STARTED "Console Telnet arrancada"
#define D_TELNET_FAILED "Falló el arranque de la consola Telnet"
#define D_TELNET_CLIENT_CONNECTED "Cliente conectado"
#define D_TELNET_CLIENT_NOT_CONNECTED "Cliente NO conectado"
#define D_TELNET_CLIENT_REJECTED "Cliente rechazado"
#define D_HASP_INVALID_PAGE "Página inválida %u"
@ -150,7 +153,6 @@
#define D_HTTP_CONFIGURATION "Configuración"
#define D_HTTP_CONFIG_CHANGED \
"La configuración ha cambiado, haga clic en <a href='/reboot'>Reiniciar</a> para guardar los cambios en la " \
"memoria flash."
#define D_HTTP_SENDING_PAGE "Se envió pagina %S a %s"
#define D_HTTP_FOOTER "por Francis Van Roie"
@ -210,7 +212,6 @@
#define D_WIFI_RSSI_WEAK "Débil"
#define D_WIFI_RSSI_BAD "Muy baka"
// new
#define D_GPIO_SWITCH "Switch"
#define D_GPIO_BUTTON "Botón"
#define D_GPIO_TOUCH "Capacitive Touch" // new

View File

@ -1,3 +1,6 @@
// This translation file is maintained on https://crowdin.com/project/openhasp/
// Do not edit directly!
#ifndef HASP_LANG_FR_FR_H
#define HASP_LANG_FR_FR_H
@ -150,7 +153,6 @@
#define D_HTTP_CONFIGURATION "Configuration"
#define D_HTTP_CONFIG_CHANGED \
"La configuration a changé, cliquez sur <a href='/reboot'>Redémarrer</a> pour enregistrer les modifications dans " \
"le flash."
#define D_HTTP_SENDING_PAGE "La page %S envoyée à %s"
#define D_HTTP_FOOTER "par Francis Van Roie"

View File

@ -1,231 +1,234 @@
#ifndef HASP_LANG_HU_HU_H
#define HASP_LANG_HU_HU_H
// This translation file is maintained on https://crowdin.com/project/openhasp/
// Do not edit directly!
#define D_ISO_LANG_CODE "hu-HU"
#ifndef HASP_LANG_EN_US_H
#define HASP_LANG_EN_US_H
#define D_USERNAME "Felhasználónév:"
#define D_PASSWORD "Jelszó:"
#define D_SSID "SSID:"
#define D_YES "Igen"
#define D_NO "Nem"
#define D_ISO_LANG_CODE "en-US"
#define D_ERROR_OUT_OF_MEMORY "Elfogyott a memória"
#define D_ERROR_UNKNOWN "Ismeretlen hiba"
#define D_USERNAME "Username:"
#define D_PASSWORD "Password:"
#define D_SSID "Ssid:"
#define D_YES "Yes"
#define D_NO "No"
#define D_CONFIG_NOT_CHANGED "A beállítások nem változtak"
#define D_CONFIG_CHANGED "A beállítások megváltoztak"
#define D_CONFIG_LOADED "Beállítások betöltve"
#define D_ERROR_OUT_OF_MEMORY "Out of memory"
#define D_ERROR_UNKNOWN "Unknown error"
#define D_FILE_LOADING "%s betöltése"
#define D_FILE_LOADED "%s betöltve"
#define D_FILE_LOAD_FAILED "%s betöltése nem sikerült"
#define D_FILE_NOT_FOUND "Fájl nem található"
#define D_FILE_SAVING "%s mentése"
#define D_FILE_SAVED "%s mentve"
#define D_FILE_SAVE_FAILED "%s mentése meghiúsult"
#define D_FILE_SIZE_BYTES "bájt"
#define D_CONFIG_NOT_CHANGED "Settings did not change"
#define D_CONFIG_CHANGED "Settings changed"
#define D_CONFIG_LOADED "Settings loaded"
#define D_FILE_LOADING "Loading %s"
#define D_FILE_LOADED "Loaded %s"
#define D_FILE_LOAD_FAILED "Failed to load %s"
#define D_FILE_SAVING "Saving %s"
#define D_FILE_SAVED "Saved %s"
#define D_FILE_SAVE_FAILED "Failed to save %s"
#define D_FILE_NOT_FOUND "File not found"
#define D_FILE_SIZE_BYTES "bytes"
#define D_FILE_SIZE_KILOBYTES "KiB"
#define D_FILE_SIZE_MEGABYTES "MiB"
#define D_FILE_SIZE_GIGABYTES "GiB"
#define D_FILE_SIZE_DIVIDER 1024
#define D_DECIMAL_POINT ","
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
#define D_DECIMAL_POINT "." // decimal comma or point
#define D_SERVICE_STARTING "Indítás..."
#define D_SERVICE_STARTED "Elindítva"
#define D_SERVICE_START_FAILED "Az indítás meghiúsult"
#define D_SERVICE_STOPPED "Megállva"
#define D_SERVICE_DISABLED "Tiltva"
#define D_SERVICE_CONNECTED "Csatlakoztatva"
#define D_SERVICE_DISCONNECTED "Szétkapcsolva"
#define D_SERVICE_STARTING "Starting..."
#define D_SERVICE_STARTED "Started"
#define D_SERVICE_START_FAILED "Failed to start"
#define D_SERVICE_STOPPED "Stopped"
#define D_SERVICE_DISABLED "Disabled"
#define D_SERVICE_CONNECTED "Connected"
#define D_SERVICE_DISCONNECTED "Disconnected"
#define D_SETTING_ENABLED "Engedélyezve"
#define D_SETTING_DISABLED "Letiltva"
#define D_SETTING_DEFAULT "Alapértelmezett"
#define D_SETTING_ENABLED "Enabled"
#define D_SETTING_DISABLED "Disabled"
#define D_SETTING_DEFAULT "Default"
#define D_NETWORK_IP_ADDRESS_RECEIVED "Beállított IP-cím: %s"
#define D_NETWORK_IP_ADDRESS_RECEIVED "Received IP address %s"
#define D_NETWORK_ONLINE "online"
#define D_NETWORK_OFFLINE "offline"
#define D_NETWORK_CONNECTION_FAILED "A kapcsolódás meghiúsult"
#define D_NETWORK_CONNECTION_UNAUTHORIZED "A hitelesítés sikertelen"
#define D_NETWORK_CONNECTION_FAILED "Connection failed"
#define D_NETWORK_CONNECTION_UNAUTHORIZED "Authorization failed"
#define D_MQTT_DEFAULT_NAME "plate_%s"
#define D_MQTT_CONNECTING "Csatlakozás..."
#define D_MQTT_CONNECTED "Csatlakozva a %s szerverhez mint %s"
#define D_MQTT_NOT_CONNECTED "Nincs kapcsolat ???"
#define D_MQTT_DISCONNECTING "Szétkapcsolás..."
#define D_MQTT_DISCONNECTED "Szétkapcsolva"
#define D_MQTT_RECONNECTING "Lekapcsolva a szerverről, újracsatlakozás..."
#define D_MQTT_NOT_CONFIGURED "Nincs konfigurálva MQTT szerver"
#define D_MQTT_STARTED "Elindítva: %d bájt"
#define D_MQTT_FAILED "Nem sikerült:"
#define D_MQTT_INVALID_TOPIC "Az üzenet érvénytelen topik-ot tartalmaz"
#define D_MQTT_SUBSCRIBED "Feliratkozva: %s"
#define D_MQTT_NOT_SUBSCRIBED "Nem sikerült feliratkozni: %s"
#define D_MQTT_HA_AUTO_DISCOVERY "Regisztrálás HA automatikus felfedezésre"
#define D_MQTT_PAYLOAD_TOO_LONG "Túl hosszú payload (%u bájt)"
#define D_MQTT_CONNECTING "Connecting..."
#define D_MQTT_CONNECTED "Connected to broker %s as clientID %s"
#define D_MQTT_NOT_CONNECTED "Not connected ???"
#define D_MQTT_DISCONNECTING "Disconnecting..."
#define D_MQTT_DISCONNECTED "Disconnected"
#define D_MQTT_RECONNECTING "Disconnected from broker, reconnection..."
#define D_MQTT_NOT_CONFIGURED "Broker not configured"
#define D_MQTT_STARTED "Started: %d bytes"
#define D_MQTT_FAILED "Failed:"
#define D_MQTT_INVALID_TOPIC "Message has invalid topic"
#define D_MQTT_SUBSCRIBED "Subscribed to %s"
#define D_MQTT_NOT_SUBSCRIBED "Failed to subscribe to %s"
#define D_MQTT_HA_AUTO_DISCOVERY "Register HA auto-discovery"
#define D_MQTT_PAYLOAD_TOO_LONG "Payload too long (%u bytes)"
#define D_TELNET_CLOSING_CONNECTION "Munkamenet befejezése %s-el"
#define D_TELNET_CLIENT_LOGIN_FROM "Kliens bejelentkezés innen: %s"
#define D_TELNET_CLIENT_CONNECT_FROM "Kliens csatlakozva innen: %s"
#define D_TELNET_CLIENT_NOT_CONNECTED "Kliens NEM csatlakozik"
#define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Helytelen bejelentkezési kísérlet %s-ről"
#define D_TELNET_STARTED "Telnet konzol elindítva"
#define D_TELNET_FAILED "Telnet konzol elindítása meghiúsult"
#define D_TELNET_CLIENT_CONNECTED "Kliens csatlakozva"
#define D_TELNET_CLIENT_REJECTED "Kliens elutasítva"
#define D_TELNET_CLOSING_CONNECTION "Closing session from %s"
#define D_TELNET_CLIENT_LOGIN_FROM "Client login from %s"
#define D_TELNET_CLIENT_CONNECT_FROM "Client connected from %s"
#define D_TELNET_CLIENT_NOT_CONNECTED "Client NOT connected"
#define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Incorrect login attempt from %s"
#define D_TELNET_STARTED "Telnet console started"
#define D_TELNET_FAILED "Failed to start telnet console"
#define D_TELNET_CLIENT_CONNECTED "Client connected"
#define D_TELNET_CLIENT_REJECTED "Client rejected"
#define D_HASP_INVALID_PAGE "Érvénytelen oldal: %u"
#define D_HASP_INVALID_LAYER "Nem törölhető a rendszerréteg"
#define D_HASP_CHANGE_PAGE "Oldalváltás: %u"
#define D_HASP_CLEAR_PAGE "Oldal törlése: %u"
#define D_HASP_INVALID_PAGE "Invalid page %u"
#define D_HASP_INVALID_LAYER "Cannot clear system layer"
#define D_HASP_CHANGE_PAGE "Changing page to %u"
#define D_HASP_CLEAR_PAGE "Clearing page %u"
#define D_OBJECT_DELETED "Objektum törölve"
#define D_OBJECT_UNKNOWN "Ismeretlen objektum"
#define D_OBJECT_MISMATCH "Az objektumok NEM passzolnak!"
#define D_OBJECT_LOST "Elveszett objektum!"
#define D_OBJECT_CREATE_FAILED "%u objektum sikertelen"
#define D_OBJECT_PAGE_UNKNOWN "%u oldalazonosító nincs meghatározva"
#define D_OBJECT_EVENT_UNKNOWN "Ismeretlen esemény %d"
#define D_OBJECT_DELETED "Object deleted"
#define D_OBJECT_UNKNOWN "Unknown object"
#define D_OBJECT_MISMATCH "Objects DO NOT match!"
#define D_OBJECT_LOST "Lost object!"
#define D_OBJECT_CREATE_FAILED "Failed to create object id %u"
#define D_OBJECT_PAGE_UNKNOWN "Page ID %u not defined"
#define D_OBJECT_EVENT_UNKNOWN "Unknown Event %d"
#define D_ATTRIBUTE_UNKNOWN "Ismeretlen tulajdonság: %s"
#define D_ATTRIBUTE_UNKNOWN "Unknown property %s"
// D_ATTRIBUTE_OBSOLETE D_ATTRIBUTE_INSTEAD can be used together or just D_ATTRIBUTE_OBSOLETE alone
#define D_ATTRIBUTE_OBSOLETE "%s elavult"
#define D_ATTRIBUTE_INSTEAD ", helyette %s-t kell használni"
#define D_ATTRIBUTE_READ_ONLY "%s csak olvasható"
#define D_ATTRIBUTE_PAGE_METHOD_INVALID "Nem lehet meghívni %s-t egy oldalon"
#define D_ATTRIBUTE_ALIGN_INVALID "Helytelen elrendezés (align): %s"
#define D_ATTRIBUTE_COLOR_INVALID "Helytelen szín (color): %s"
#define D_ATTRIBUTE_LONG_MODE_INVALID "Helytelen long mód: %s"
#define D_ATTRIBUTE_OBSOLETE "%s is obsolete"
#define D_ATTRIBUTE_INSTEAD ", use %s instead"
#define D_ATTRIBUTE_READ_ONLY "%s is read-only"
#define D_ATTRIBUTE_PAGE_METHOD_INVALID "Unable to call %s on a page"
#define D_ATTRIBUTE_ALIGN_INVALID "Invalid align property: %s"
#define D_ATTRIBUTE_COLOR_INVALID "Invalid color property: %s"
#define D_ATTRIBUTE_LONG_MODE_INVALID "Invalid long mode: %s"
#define D_OOBE_SSID_VALIDATED "%s SSID érvényes"
#define D_OOBE_AUTO_CALIBRATE "Automatikus kalibrálás engedélyezve"
#define D_OOBE_CALIBRATED "Korábban kalibrálva"
#define D_OOBE_SSID_VALIDATED "SSID %s validated"
#define D_OOBE_AUTO_CALIBRATE "Auto calibrate enabled"
#define D_OOBE_CALIBRATED "Already calibrated"
#define D_DISPATCH_COMMAND_NOT_FOUND "%s parancs nem található"
#define D_DISPATCH_INVALID_PAGE "Érvénytelen oldal: %s"
#define D_DISPATCH_REBOOT "Az MCU most újraindul!"
#define D_DISPATCH_COMMAND_NOT_FOUND "Command '%s' not found"
#define D_DISPATCH_INVALID_PAGE "Invalid page %s"
#define D_DISPATCH_REBOOT "Rebooting the MCU now!"
#define D_JSON_FAILED "JSON elemzése nem sikerült:"
#define D_JSONL_FAILED "JSONL elemzése meghiúsult a %u vonalnál"
#define D_JSONL_SUCCEEDED "JSONL teljes körűen elemezve"
#define D_JSON_FAILED "JSON parsing failed:"
#define D_JSONL_FAILED "JSONL parsing failed at line %u"
#define D_JSONL_SUCCEEDED "Jsonl fully parsed"
#define D_OTA_CHECK_UPDATE "A frissítések ellenőrzése az URL-en: %s"
#define D_OTA_CHECK_COMPLETE "A frissítések ellenőrzése befejeződött"
#define D_OTA_CHECK_FAILED "A frissítések ellenőrzése meghiúsult: %s"
#define D_OTA_UPDATE_FIRMWARE "Firmware frissítése OTA-val"
#define D_OTA_UPDATE_COMPLETE "Az OTA frissítés elkészült"
#define D_OTA_UPDATE_APPLY "Firmware alkalmazása és újraindítás"
#define D_OTA_UPDATE_FAILED "Az OTA frissítés meghiúsult"
#define D_OTA_UPDATING_FIRMWARE "Firmware frissítés..."
#define D_OTA_UPDATING_FILESYSTEM "Fájlrendszer frissítés..."
#define D_OTA_CHECK_UPDATE "Trying update URL: %s"
#define D_OTA_CHECK_COMPLETE "Update check complete"
#define D_OTA_CHECK_FAILED "Update check failed: %s"
#define D_OTA_UPDATE_FIRMWARE "OTA Firmware Update"
#define D_OTA_UPDATE_COMPLETE "OTA Update complete"
#define D_OTA_UPDATE_APPLY "Applying Firmware & Reboot"
#define D_OTA_UPDATE_FAILED "OTA Update failed"
#define D_OTA_UPDATING_FIRMWARE "Updating firmware..."
#define D_OTA_UPDATING_FILESYSTEM "Updating filesystem..."
#define D_HTTP_HASP_DESIGN "Képernyő dizájn"
#define D_HTTP_INFORMATION "Információk"
#define D_HTTP_HTTP_SETTINGS "HTTP beállítások"
#define D_HTTP_FTP_SETTINGS "FTP beállítások"
#define D_HTTP_WIFI_SETTINGS "WiFi beállítások"
#define D_HTTP_MQTT_SETTINGS "MQTT beállítások"
#define D_HTTP_GPIO_SETTINGS "GPIO beállítások"
#define D_HTTP_MDNS_SETTINGS "mDNS beállítások"
#define D_HTTP_TELNET_SETTINGS "Telnet beállítások"
#define D_HTTP_DEBUG_SETTINGS "Hibakeresési beállítások"
#define D_HTTP_GUI_SETTINGS "Képernyő beállítások"
#define D_HTTP_SAVE_SETTINGS "Beállítások mentése"
#define D_HTTP_UPLOAD_FILE "Fájl feltöltése"
#define D_HTTP_ERASE_DEVICE "Minden beállítás visszaállítása"
#define D_HTTP_ADD_GPIO "Új pin hozzáadása"
#define D_HTTP_BACK "Vissza"
#define D_HTTP_REFRESH "Frissítés"
#define D_HTTP_PREV_PAGE "Előző oldal"
#define D_HTTP_NEXT_PAGE "Következő oldal"
#define D_HTTP_CALIBRATE "Kalibrálás"
#define D_HTTP_ANTIBURN "Beégésvédelem futtatás"
#define D_HTTP_SCREENSHOT "Képernyőkép"
#define D_HTTP_FILE_BROWSER "Fájlkezelő"
#define D_HTTP_FIRMWARE_UPGRADE "Firmware frissítés"
#define D_HTTP_UPDATE_FIRMWARE "Firmware frissítése"
#define D_HTTP_FACTORY_RESET "Gyári beállítások visszaállítása"
#define D_HTTP_MAIN_MENU "Főmenü"
#define D_HTTP_REBOOT "Újraindítás"
#define D_HTTP_CONFIGURATION "Beállítások"
#define D_HTTP_HASP_DESIGN "HASP Design"
#define D_HTTP_INFORMATION "Information"
#define D_HTTP_HTTP_SETTINGS "HTTP Settings"
#define D_HTTP_FTP_SETTINGS "FTP Settings"
#define D_HTTP_WIFI_SETTINGS "Wifi Settings"
#define D_HTTP_MQTT_SETTINGS "MQTT Settings"
#define D_HTTP_GPIO_SETTINGS "GPIO Settings"
#define D_HTTP_MDNS_SETTINGS "mDNS Settings"
#define D_HTTP_TELNET_SETTINGS "Telnet Settings"
#define D_HTTP_DEBUG_SETTINGS "Debug Settings"
#define D_HTTP_GUI_SETTINGS "Display Settings"
#define D_HTTP_SAVE_SETTINGS "Save Settings"
#define D_HTTP_UPLOAD_FILE "Upload File"
#define D_HTTP_ERASE_DEVICE "Reset All Settings"
#define D_HTTP_ADD_GPIO "Add New Pin"
#define D_HTTP_BACK "Back"
#define D_HTTP_REFRESH "Refresh"
#define D_HTTP_PREV_PAGE "Prev Page"
#define D_HTTP_NEXT_PAGE "Next Page"
#define D_HTTP_CALIBRATE "Calibrate"
#define D_HTTP_ANTIBURN "Run Anti Burn-in"
#define D_HTTP_SCREENSHOT "Screenshot"
#define D_HTTP_FILE_BROWSER "File Editor"
#define D_HTTP_FIRMWARE_UPGRADE "Firmware Upgrade"
#define D_HTTP_UPDATE_FIRMWARE "Update Firmware"
#define D_HTTP_FACTORY_RESET "Factory Reset"
#define D_HTTP_MAIN_MENU "Main Menu"
#define D_HTTP_REBOOT "Restart"
#define D_HTTP_CONFIGURATION "Configuration"
#define D_HTTP_CONFIG_CHANGED \
"A konfiguráció meg lett változtatva. <a href='/reboot'>Indítson újra</a> a beállítások mentéséhez!"
#define D_HTTP_SENDING_PAGE "%S oldal küldése %s-re"
#define D_HTTP_FOOTER "készítette: Francis Van Roie"
"The configuration has changed, please click <a href='/reboot'>Restart</a> to save changes to flash."
#define D_HTTP_SENDING_PAGE "Sent %S page to %s"
#define D_HTTP_FOOTER "by Francis Van Roie"
#define D_INFO_VERSION "Verziószám"
#define D_INFO_BUILD_DATETIME "Build időpontja"
#define D_INFO_ENVIRONMENT "Környezet"
#define D_INFO_VERSION "Version"
#define D_INFO_BUILD_DATETIME "Build DateTime"
#define D_INFO_ENVIRONMENT "Environment"
#define D_INFO_UPTIME "Uptime"
#define D_INFO_FREE_HEAP "Szabad Heap"
#define D_INFO_FREE_BLOCK "Szabad Blokk"
#define D_INFO_DEVICE_MEMORY "Eszköz Memória"
#define D_INFO_LVGL_MEMORY "LVGL Memória"
#define D_INFO_TOTAL_MEMORY "Összesen"
#define D_INFO_FREE_MEMORY "Szabad"
#define D_INFO_FRAGMENTATION "Fragmentáció"
#define D_INFO_PSRAM_FREE "PSRam szabad"
#define D_INFO_PSRAM_SIZE "PSRam méret"
#define D_INFO_FLASH_SIZE "Flash méret"
#define D_INFO_SKETCH_USED "Program használatban"
#define D_INFO_SKETCH_FREE "Program szabad"
#define D_INFO_FREE_HEAP "Free Heap"
#define D_INFO_FREE_BLOCK "Free Block"
#define D_INFO_DEVICE_MEMORY "Device Memory"
#define D_INFO_LVGL_MEMORY "LVGL Memory"
#define D_INFO_TOTAL_MEMORY "Total"
#define D_INFO_FREE_MEMORY "Free"
#define D_INFO_FRAGMENTATION "Fragmentation"
#define D_INFO_PSRAM_FREE "PSRam Free"
#define D_INFO_PSRAM_SIZE "PSRam Size"
#define D_INFO_FLASH_SIZE "Flash Size"
#define D_INFO_SKETCH_USED "Program Size Used"
#define D_INFO_SKETCH_FREE "Program Size Free"
#define D_INFO_FS_SIZE "Filesystem Size"
#define D_INFO_FS_USED "Filesystem Used"
#define D_INFO_FS_FREE "Filesystem Free"
#define D_INFO_MODULE "Modul"
#define D_INFO_MODEL "Modell"
#define D_INFO_FREQUENCY "Frekvencia"
#define D_INFO_CORE_VERSION "Core Verzió"
#define D_INFO_RESET_REASON "Újraindulás oka"
#define D_INFO_STATUS "Státusz"
#define D_INFO_SERVER "Szerver"
#define D_INFO_USERNAME "Felhasználónév"
#define D_INFO_CLIENTID "Kliens ID"
// #define D_INFO_CONNECTED "Csatlakoztatva"
// #define D_INFO_DISCONNECTED "Szétkapcsolva"
#define D_INFO_RECEIVED "Fogadott"
#define D_INFO_PUBLISHED "Küldött"
#define D_INFO_FAILED "Sikertelen"
#define D_INFO_MODULE "Module"
#define D_INFO_MODEL "Model"
#define D_INFO_FREQUENCY "Frequency"
#define D_INFO_CORE_VERSION "Core Version"
#define D_INFO_RESET_REASON "Reset Reason"
#define D_INFO_STATUS "Status"
#define D_INFO_SERVER "Server"
#define D_INFO_USERNAME "Username"
#define D_INFO_CLIENTID "Client ID"
// #define D_INFO_CONNECTED "Connected"
// #define D_INFO_DISCONNECTED "Disconnected"
#define D_INFO_RECEIVED "Received"
#define D_INFO_PUBLISHED "Published"
#define D_INFO_FAILED "Failed"
#define D_INFO_ETHERNET "Ethernet"
#define D_INFO_WIFI "WiFi"
#define D_INFO_LINK_SPEED "Linksebesség"
#define D_INFO_WIFI "Wifi"
#define D_INFO_LINK_SPEED "Link Speed"
#define D_INFO_FULL_DUPLEX "Full Duplex"
#define D_INFO_BSSID "BSSID"
#define D_INFO_SSID "SSID"
#define D_INFO_RSSI "Jelerősség"
#define D_INFO_IP_ADDRESS "IP cím"
#define D_INFO_MAC_ADDRESS "MAC cím"
#define D_INFO_GATEWAY "Átjáró"
#define D_INFO_DNS_SERVER "DNS szerver"
#define D_INFO_RSSI "Signal Strength"
#define D_INFO_IP_ADDRESS "IP Address"
#define D_INFO_MAC_ADDRESS "MAC Address"
#define D_INFO_GATEWAY "Gateway"
#define D_INFO_DNS_SERVER "DNS Server"
#define D_OOBE_MSG "Koppintson a képernyőre a WiFi beállításához, vagy csatlakozzon az alábbi Access Point-hoz:"
#define D_OOBE_SCAN_TO_CONNECT "Szkennelje le a csatlakozáshoz:"
#define D_OOBE_MSG "Tap the screen to setup WiFi or connect to this Access Point:"
#define D_OOBE_SCAN_TO_CONNECT "Scan to connect"
#define D_WIFI_CONNECTING_TO "Csatlakozás %s-hez"
#define D_WIFI_CONNECTED_TO "Csatlakozva %s-hez, IP cím kérése..."
#define D_WIFI_RSSI_EXCELLENT "Kiváló"
#define D_WIFI_RSSI_GOOD ""
#define D_WIFI_RSSI_FAIR "Elfogadható"
#define D_WIFI_RSSI_WEAK "Gyenge"
#define D_WIFI_RSSI_BAD "Rossz"
#define D_WIFI_CONNECTING_TO "Connecting to %s"
#define D_WIFI_CONNECTED_TO "Connected to %s, requesting IP..."
#define D_WIFI_RSSI_EXCELLENT "Excellent"
#define D_WIFI_RSSI_GOOD "Good"
#define D_WIFI_RSSI_FAIR "Fair"
#define D_WIFI_RSSI_WEAK "Weak"
#define D_WIFI_RSSI_BAD "Very bad"
#define D_GPIO_SWITCH "Kapcsoló"
#define D_GPIO_BUTTON "Nyomógomb"
#define D_GPIO_TOUCH "Kapacitív érintő"
#define D_GPIO_SWITCH "Switch"
#define D_GPIO_BUTTON "Push Button"
#define D_GPIO_TOUCH "Capacitive Touch"
#define D_GPIO_LED "Led"
#define D_GPIO_LED_R "Keret Piros"
#define D_GPIO_LED_G "Keret Zöld"
#define D_GPIO_LED_B "Keret Kék"
#define D_GPIO_POWER_RELAY "Általános relé"
#define D_GPIO_LIGHT_RELAY "Lámpa relé"
#define D_GPIO_LED_R "Mood Red"
#define D_GPIO_LED_G "Mood Green"
#define D_GPIO_LED_B "Mood Blue"
#define D_GPIO_POWER_RELAY "Power Relay"
#define D_GPIO_LIGHT_RELAY "Light Relay"
#define D_GPIO_PWM "PWM"
#define D_GPIO_DAC "DAC"
#define D_GPIO_SERIAL_DIMMER "Soros Dimmer"
#define D_GPIO_UNKNOWN "Ismeretlen"
#define D_GPIO_SERIAL_DIMMER "Serial Dimmer"
#define D_GPIO_UNKNOWN "Unknown"
#define D_GPIO_PIN "Pin"
#define D_GPIO_GROUP "Csoport"
#define D_GPIO_GROUP_NONE "Nincs"
#define D_GPIO_STATE_NORMAL "Normál"
#define D_GPIO_STATE_INVERTED "Invertált"
#define D_GPIO_GROUP "Group"
#define D_GPIO_GROUP_NONE "None"
#define D_GPIO_STATE_NORMAL "Normal"
#define D_GPIO_STATE_INVERTED "Inverted"
#endif
#endif

View File

@ -1,3 +1,6 @@
// This translation file is maintained on https://crowdin.com/project/openhasp/
// Do not edit directly!
#ifndef HASP_LANG_NL_NL_H
#define HASP_LANG_NL_NL_H
@ -30,10 +33,6 @@
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
#define D_DECIMAL_POINT "," // decimal comma or point
#define D_SETTING_ENABLED "Ingeschakeld"
#define D_SETTING_DISABLED "Uitgeschakeld"
#define D_SETTING_DEFAULT "Standaard"
#define D_SERVICE_STARTING "Starten..."
#define D_SERVICE_STARTED "Gestart"
#define D_SERVICE_START_FAILED "Starten mislukt"
@ -42,6 +41,10 @@
#define D_SERVICE_CONNECTED "Verbonden"
#define D_SERVICE_DISCONNECTED "Verbroken"
#define D_SETTING_ENABLED "Ingeschakeld"
#define D_SETTING_DISABLED "Uitgeschakeld"
#define D_SETTING_DEFAULT "Standaard"
#define D_NETWORK_IP_ADDRESS_RECEIVED "IP adres %s ontvangen"
#define D_NETWORK_ONLINE "online"
#define D_NETWORK_OFFLINE "offline"

View File

@ -1,19 +1,234 @@
// This translation file is maintained on https://crowdin.com/project/openhasp/
// Do not edit directly!
#ifndef HASP_LANG_PT_BR_H
#define HASP_LANG_PT_BR_H
#include "pt_PT.h" // Common language file
// Overrides
#undef D_ISO_LANG_CODE
#define D_ISO_LANG_CODE "pt-BR"
#undef D_USERNAME
#define D_USERNAME "Usuário:"
#undef D_PASSWORD
#define D_PASSWORD "Senha:"
#define D_SSID "Ssid:"
#define D_YES "Yes"
#define D_NO "No"
#undef D_NETWORK_CONNECTION_FAILED
#define D_ERROR_OUT_OF_MEMORY "Out of memory"
#define D_ERROR_UNKNOWN "Unknown error"
#define D_CONFIG_NOT_CHANGED "Settings did not change"
#define D_CONFIG_CHANGED "Settings changed"
#define D_CONFIG_LOADED "Settings loaded"
#define D_FILE_LOADING "Loading %s"
#define D_FILE_LOADED "Loaded %s"
#define D_FILE_LOAD_FAILED "Failed to load %s"
#define D_FILE_SAVING "Saving %s"
#define D_FILE_SAVED "Saved %s"
#define D_FILE_SAVE_FAILED "Failed to save %s"
#define D_FILE_NOT_FOUND "File not found"
#define D_FILE_SIZE_BYTES "bytes"
#define D_FILE_SIZE_KILOBYTES "KiB"
#define D_FILE_SIZE_MEGABYTES "MiB"
#define D_FILE_SIZE_GIGABYTES "GiB"
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
#define D_DECIMAL_POINT "." // decimal comma or point
#define D_SERVICE_STARTING "Starting..."
#define D_SERVICE_STARTED "Started"
#define D_SERVICE_START_FAILED "Failed to start"
#define D_SERVICE_STOPPED "Stopped"
#define D_SERVICE_DISABLED "Disabled"
#define D_SERVICE_CONNECTED "Connected"
#define D_SERVICE_DISCONNECTED "Disconnected"
#define D_SETTING_ENABLED "Enabled"
#define D_SETTING_DISABLED "Disabled"
#define D_SETTING_DEFAULT "Default"
#define D_NETWORK_IP_ADDRESS_RECEIVED "Received IP address %s"
#define D_NETWORK_ONLINE "online"
#define D_NETWORK_OFFLINE "offline"
#define D_NETWORK_CONNECTION_FAILED "Falhou a conexão"
#define D_NETWORK_CONNECTION_UNAUTHORIZED "Authorization failed"
#define D_MQTT_DEFAULT_NAME "plate_%s"
#define D_MQTT_CONNECTING "Connecting..."
#define D_MQTT_CONNECTED "Connected to broker %s as clientID %s"
#define D_MQTT_NOT_CONNECTED "Not connected ???"
#define D_MQTT_DISCONNECTING "Disconnecting..."
#define D_MQTT_DISCONNECTED "Disconnected"
#define D_MQTT_RECONNECTING "Disconnected from broker, reconnection..."
#define D_MQTT_NOT_CONFIGURED "Broker not configured"
#define D_MQTT_STARTED "Started: %d bytes"
#define D_MQTT_FAILED "Failed:"
#define D_MQTT_INVALID_TOPIC "Message has invalid topic"
#define D_MQTT_SUBSCRIBED "Subscribed to %s"
#define D_MQTT_NOT_SUBSCRIBED "Failed to subscribe to %s"
#define D_MQTT_HA_AUTO_DISCOVERY "Register HA auto-discovery"
#define D_MQTT_PAYLOAD_TOO_LONG "Payload too long (%u bytes)"
#define D_TELNET_CLOSING_CONNECTION "Closing session from %s"
#define D_TELNET_CLIENT_LOGIN_FROM "Client login from %s"
#define D_TELNET_CLIENT_CONNECT_FROM "Client connected from %s"
#define D_TELNET_CLIENT_NOT_CONNECTED "Client NOT connected"
#define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Incorrect login attempt from %s"
#define D_TELNET_STARTED "Telnet console started"
#define D_TELNET_FAILED "Failed to start telnet console"
#define D_TELNET_CLIENT_CONNECTED "Client connected"
#define D_TELNET_CLIENT_REJECTED "Client rejected"
#define D_HASP_INVALID_PAGE "Invalid page %u"
#define D_HASP_INVALID_LAYER "Cannot clear system layer"
#define D_HASP_CHANGE_PAGE "Changing page to %u"
#define D_HASP_CLEAR_PAGE "Clearing page %u"
#define D_OBJECT_DELETED "Object deleted"
#define D_OBJECT_UNKNOWN "Unknown object"
#define D_OBJECT_MISMATCH "Objects DO NOT match!"
#define D_OBJECT_LOST "Lost object!"
#define D_OBJECT_CREATE_FAILED "Failed to create object id %u"
#define D_OBJECT_PAGE_UNKNOWN "Page ID %u not defined"
#define D_OBJECT_EVENT_UNKNOWN "Unknown Event %d"
#define D_ATTRIBUTE_UNKNOWN "Unknown property %s"
// D_ATTRIBUTE_OBSOLETE D_ATTRIBUTE_INSTEAD can be used together or just D_ATTRIBUTE_OBSOLETE alone
#define D_ATTRIBUTE_OBSOLETE "%s is obsolete"
#define D_ATTRIBUTE_INSTEAD ", use %s instead"
#define D_ATTRIBUTE_READ_ONLY "%s is read-only"
#define D_ATTRIBUTE_PAGE_METHOD_INVALID "Unable to call %s on a page"
#define D_ATTRIBUTE_ALIGN_INVALID "Invalid align property: %s"
#define D_ATTRIBUTE_COLOR_INVALID "Invalid color property: %s"
#define D_ATTRIBUTE_LONG_MODE_INVALID "Invalid long mode: %s"
#define D_OOBE_SSID_VALIDATED "SSID %s validated"
#define D_OOBE_AUTO_CALIBRATE "Auto calibrate enabled"
#define D_OOBE_CALIBRATED "Already calibrated"
#define D_DISPATCH_COMMAND_NOT_FOUND "Command '%s' not found"
#define D_DISPATCH_INVALID_PAGE "Invalid page %s"
#define D_DISPATCH_REBOOT "Rebooting the MCU now!"
#define D_JSON_FAILED "JSON parsing failed:"
#define D_JSONL_FAILED "JSONL parsing failed at line %u"
#define D_JSONL_SUCCEEDED "Jsonl fully parsed"
#define D_OTA_CHECK_UPDATE "Trying update URL: %s"
#define D_OTA_CHECK_COMPLETE "Update check complete"
#define D_OTA_CHECK_FAILED "Update check failed: %s"
#define D_OTA_UPDATE_FIRMWARE "OTA Firmware Update"
#define D_OTA_UPDATE_COMPLETE "OTA Update complete"
#define D_OTA_UPDATE_APPLY "Applying Firmware & Reboot"
#define D_OTA_UPDATE_FAILED "OTA Update failed"
#define D_OTA_UPDATING_FIRMWARE "Updating firmware..."
#define D_OTA_UPDATING_FILESYSTEM "Updating filesystem..."
#define D_HTTP_HASP_DESIGN "HASP Design"
#define D_HTTP_INFORMATION "Information"
#define D_HTTP_HTTP_SETTINGS "HTTP Settings"
#define D_HTTP_FTP_SETTINGS "FTP Settings"
#define D_HTTP_WIFI_SETTINGS "Wifi Settings"
#define D_HTTP_MQTT_SETTINGS "MQTT Settings"
#define D_HTTP_GPIO_SETTINGS "GPIO Settings"
#define D_HTTP_MDNS_SETTINGS "mDNS Settings"
#define D_HTTP_TELNET_SETTINGS "Telnet Settings"
#define D_HTTP_DEBUG_SETTINGS "Debug Settings"
#define D_HTTP_GUI_SETTINGS "Display Settings"
#define D_HTTP_SAVE_SETTINGS "Save Settings"
#define D_HTTP_UPLOAD_FILE "Upload File"
#define D_HTTP_ERASE_DEVICE "Reset All Settings"
#define D_HTTP_ADD_GPIO "Add New Pin"
#define D_HTTP_BACK "Back"
#define D_HTTP_REFRESH "Refresh"
#define D_HTTP_PREV_PAGE "Prev Page"
#define D_HTTP_NEXT_PAGE "Next Page"
#define D_HTTP_CALIBRATE "Calibrate"
#define D_HTTP_ANTIBURN "Run Anti Burn-in"
#define D_HTTP_SCREENSHOT "Screenshot"
#define D_HTTP_FILE_BROWSER "File Editor"
#define D_HTTP_FIRMWARE_UPGRADE "Firmware Upgrade"
#define D_HTTP_UPDATE_FIRMWARE "Update Firmware"
#define D_HTTP_FACTORY_RESET "Factory Reset"
#define D_HTTP_MAIN_MENU "Main Menu"
#define D_HTTP_REBOOT "Restart"
#define D_HTTP_CONFIGURATION "Configuration"
#define D_HTTP_CONFIG_CHANGED \
"The configuration has changed, please click <a href='/reboot'>Restart</a> to save changes to flash."
#define D_HTTP_SENDING_PAGE "Sent %S page to %s"
#define D_HTTP_FOOTER "by Francis Van Roie"
#define D_INFO_VERSION "Version"
#define D_INFO_BUILD_DATETIME "Build DateTime"
#define D_INFO_ENVIRONMENT "Environment"
#define D_INFO_UPTIME "Uptime"
#define D_INFO_FREE_HEAP "Free Heap"
#define D_INFO_FREE_BLOCK "Free Block"
#define D_INFO_DEVICE_MEMORY "Device Memory"
#define D_INFO_LVGL_MEMORY "LVGL Memory"
#define D_INFO_TOTAL_MEMORY "Total"
#define D_INFO_FREE_MEMORY "Free"
#define D_INFO_FRAGMENTATION "Fragmentation"
#define D_INFO_PSRAM_FREE "PSRam Free"
#define D_INFO_PSRAM_SIZE "PSRam Size"
#define D_INFO_FLASH_SIZE "Flash Size"
#define D_INFO_SKETCH_USED "Program Size Used"
#define D_INFO_SKETCH_FREE "Program Size Free"
#define D_INFO_FS_SIZE "Filesystem Size"
#define D_INFO_FS_USED "Filesystem Used"
#define D_INFO_FS_FREE "Filesystem Free"
#define D_INFO_MODULE "Module"
#define D_INFO_MODEL "Model"
#define D_INFO_FREQUENCY "Frequency"
#define D_INFO_CORE_VERSION "Core Version"
#define D_INFO_RESET_REASON "Reset Reason"
#define D_INFO_STATUS "Status"
#define D_INFO_SERVER "Server"
#undef D_USERNAME
#define D_INFO_CLIENTID "Client ID"
#undef D_NETWORK_CONNECTION_FAILED
// #define D_INFO_DISCONNECTED "Disconnected"
#define D_INFO_RECEIVED "Received"
#define D_INFO_PUBLISHED "Published"
#define D_INFO_FAILED "Failed"
#define D_INFO_ETHERNET "Ethernet"
#define D_INFO_WIFI "Wifi"
#define D_INFO_LINK_SPEED "Link Speed"
#define D_INFO_FULL_DUPLEX "Full Duplex"
#define D_INFO_BSSID "BSSID"
#define D_INFO_SSID "SSID"
#define D_INFO_RSSI "Signal Strength"
#define D_INFO_IP_ADDRESS "IP Address"
#define D_INFO_MAC_ADDRESS "MAC Address"
#define D_INFO_GATEWAY "Gateway"
#define D_INFO_DNS_SERVER "DNS Server"
#define D_OOBE_MSG "Tap the screen to setup WiFi or connect to this Access Point:"
#define D_OOBE_SCAN_TO_CONNECT "Scan to connect"
#define D_WIFI_CONNECTING_TO "Connecting to %s"
#define D_WIFI_CONNECTED_TO "Connected to %s, requesting IP..."
#define D_WIFI_RSSI_EXCELLENT "Excellent"
#define D_WIFI_RSSI_GOOD "Good"
#define D_WIFI_RSSI_FAIR "Fair"
#define D_WIFI_RSSI_WEAK "Weak"
#define D_WIFI_RSSI_BAD "Very bad"
#define D_GPIO_SWITCH "Switch"
#define D_GPIO_BUTTON "Push Button"
#define D_GPIO_TOUCH "Capacitive Touch"
#define D_GPIO_LED "Led"
#define D_GPIO_LED_R "Mood Red"
#define D_GPIO_LED_G "Mood Green"
#define D_GPIO_LED_B "Mood Blue"
#define D_GPIO_POWER_RELAY "Power Relay"
#define D_GPIO_LIGHT_RELAY "Light Relay"
#define D_GPIO_PWM "PWM"
#undef D_ISO_LANG_CODE
#define D_GPIO_SERIAL_DIMMER "Serial Dimmer"
#define D_GPIO_UNKNOWN "Unknown"
#undef D_PASSWORD
#define D_GPIO_GROUP "Group"
#define D_GPIO_GROUP_NONE "None"
#include "pt_PT.h" // Common language file
#define D_GPIO_STATE_INVERTED "Inverted"
#endif

View File

@ -1,3 +1,6 @@
// This translation file is maintained on https://crowdin.com/project/openhasp/
// Do not edit directly!
#ifndef HASP_LANG_PT_PT_H
#define HASP_LANG_PT_PT_H
@ -19,7 +22,6 @@
#define D_FILE_LOADING "A carregar %s"
#define D_FILE_LOADED "%s carregado"
#define D_FILE_LOAD_FAILED "Não foi possível carregar %s"
#define D_FILE_SAVING "A guardar %s"
#define D_FILE_SAVED "%s guardado"
#define D_FILE_SAVE_FAILED "Não foi possível guardar %s"
@ -68,11 +70,11 @@
#define D_TELNET_CLOSING_CONNECTION "A fechar a ligação de %s"
#define D_TELNET_CLIENT_LOGIN_FROM "Foi feito login ao cliente %s"
#define D_TELNET_CLIENT_CONNECT_FROM "Foi conectado ao cliente %s"
#define D_TELNET_CLIENT_NOT_CONNECTED "Cliente não ligado"
#define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Tentativa de ligação incorreta desde %s"
#define D_TELNET_STARTED "Consola inicializada"
#define D_TELNET_FAILED "Falhou inicialização da consola"
#define D_TELNET_CLIENT_CONNECTED "Cliente ligado"
#define D_TELNET_CLIENT_NOT_CONNECTED "Cliente não ligado"
#define D_TELNET_CLIENT_REJECTED "Cliente rejeitado"
#define D_HASP_INVALID_PAGE "Página inválida %u"
@ -206,9 +208,9 @@
#define D_WIFI_CONNECTED_TO "Ligado a %s, a pedir IP..."
#define D_WIFI_RSSI_EXCELLENT "Excelente"
#define D_WIFI_RSSI_GOOD "Bom"
#define D_WIFI_RSSI_FAIR "Decente"
#define D_WIFI_RSSI_WEAK "Fraco"
#define D_WIFI_RSSI_BAD "Muito baixo"
#define D_WIFI_RSSI_FAIR "Decente"
#define D_GPIO_SWITCH "Interruptor"
#define D_GPIO_BUTTON "Botão"
@ -229,4 +231,4 @@
#define D_GPIO_STATE_NORMAL "Normal" // new
#define D_GPIO_STATE_INVERTED "Inverted" // new
#endif
#endif

View File

@ -1,232 +1,234 @@
#ifndef HASP_LANG_RO_RO_H
#define HASP_LANG_RO_RO_H
// This translation file is maintained on https://crowdin.com/project/openhasp/
// Do not edit directly!
#define D_ISO_LANG_CODE "ro-RO"
#ifndef HASP_LANG_EN_US_H
#define HASP_LANG_EN_US_H
#define D_USERNAME "Nume utilizator:"
#define D_PASSWORD "Parola:"
#define D_SSID "SSID:"
#define D_YES "Da"
#define D_NO "Nu"
#define D_ISO_LANG_CODE "en-US"
#define D_ERROR_OUT_OF_MEMORY "Memorie epuizată"
#define D_ERROR_UNKNOWN "Eroare necunoscută"
#define D_USERNAME "Username:"
#define D_PASSWORD "Password:"
#define D_SSID "Ssid:"
#define D_YES "Yes"
#define D_NO "No"
#define D_CONFIG_NOT_CHANGED "Setările nu s-au schimbat"
#define D_CONFIG_CHANGED "Setările s-au schimbat"
#define D_CONFIG_LOADED "Setările s-au încărcat"
#define D_ERROR_OUT_OF_MEMORY "Out of memory"
#define D_ERROR_UNKNOWN "Unknown error"
#define D_FILE_LOADING "Se încarcă %s"
#define D_FILE_LOADED "S-a încărcat %s"
#define D_FILE_LOAD_FAILED "Încărcarea %s a eșuat"
#define D_FILE_SAVING "Se salvează %s"
#define D_FILE_SAVED "S-a salvat %s"
#define D_FILE_SAVE_FAILED "Salvarea %s a eșuat"
#define D_FILE_NOT_FOUND "Lipsă fișier"
#define D_FILE_SIZE_BYTES "baiți"
#define D_CONFIG_NOT_CHANGED "Settings did not change"
#define D_CONFIG_CHANGED "Settings changed"
#define D_CONFIG_LOADED "Settings loaded"
#define D_FILE_LOADING "Loading %s"
#define D_FILE_LOADED "Loaded %s"
#define D_FILE_LOAD_FAILED "Failed to load %s"
#define D_FILE_SAVING "Saving %s"
#define D_FILE_SAVED "Saved %s"
#define D_FILE_SAVE_FAILED "Failed to save %s"
#define D_FILE_NOT_FOUND "File not found"
#define D_FILE_SIZE_BYTES "bytes"
#define D_FILE_SIZE_KILOBYTES "KiB"
#define D_FILE_SIZE_MEGABYTES "MiB"
#define D_FILE_SIZE_GIGABYTES "GiB"
#define D_FILE_SIZE_DIVIDER 1024
#define D_DECIMAL_POINT ","
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
#define D_DECIMAL_POINT "." // decimal comma or point
#define D_SETTING_ENABLED "Activ"
#define D_SETTING_DISABLED "Inactiv"
#define D_SETTING_DEFAULT "Implicit"
#define D_SERVICE_STARTING "Starting..."
#define D_SERVICE_STARTED "Started"
#define D_SERVICE_START_FAILED "Failed to start"
#define D_SERVICE_STOPPED "Stopped"
#define D_SERVICE_DISABLED "Disabled"
#define D_SERVICE_CONNECTED "Connected"
#define D_SERVICE_DISCONNECTED "Disconnected"
#define D_SERVICE_STARTING "Pornire..."
#define D_SERVICE_STARTED "Pornit"
#define D_SERVICE_START_FAILED "Pornirea a eșuat"
#define D_SERVICE_STOPPED "S-a oprit"
#define D_SERVICE_DISABLED "Dezactivat"
#define D_SERVICE_CONNECTED "Conectat"
#define D_SERVICE_DISCONNECTED "Deconectat"
#define D_SETTING_ENABLED "Enabled"
#define D_SETTING_DISABLED "Disabled"
#define D_SETTING_DEFAULT "Default"
#define D_NETWORK_IP_ADDRESS_RECEIVED "A primit adresa IP %s"
#define D_NETWORK_IP_ADDRESS_RECEIVED "Received IP address %s"
#define D_NETWORK_ONLINE "online"
#define D_NETWORK_OFFLINE "offline"
#define D_NETWORK_CONNECTION_FAILED "Conexiune eșuată"
#define D_NETWORK_CONNECTION_UNAUTHORIZED "Autorizatia a esuat"
#define D_NETWORK_CONNECTION_FAILED "Connection failed"
#define D_NETWORK_CONNECTION_UNAUTHORIZED "Authorization failed"
#define D_MQTT_DEFAULT_NAME "plate_%s"
#define D_MQTT_CONNECTING "Conectare..."
#define D_MQTT_CONNECTED "Conectat la serverul %s ca %s"
#define D_MQTT_NOT_CONNECTED "Nu e conectat ???"
#define D_MQTT_DISCONNECTING "Deconectare..."
#define D_MQTT_DISCONNECTED "Deconectat"
#define D_MQTT_RECONNECTING "Deconectat de la server, reconectare..."
#define D_MQTT_NOT_CONFIGURED "Nu este configurat serverul MQTT"
#define D_MQTT_STARTED "Început: %d octeți"
#define D_MQTT_FAILED "A eșuat:"
#define D_MQTT_INVALID_TOPIC "Mesajul are subiect nevalid"
#define D_MQTT_SUBSCRIBED "Abonat la %s"
#define D_MQTT_NOT_SUBSCRIBED "Abonarea la %s a eșuat"
#define D_MQTT_HA_AUTO_DISCOVERY "Înregistrare la auto-descoperire în HA"
#define D_MQTT_PAYLOAD_TOO_LONG "Payload prea lung (%u baiți)"
#define D_MQTT_CONNECTING "Connecting..."
#define D_MQTT_CONNECTED "Connected to broker %s as clientID %s"
#define D_MQTT_NOT_CONNECTED "Not connected ???"
#define D_MQTT_DISCONNECTING "Disconnecting..."
#define D_MQTT_DISCONNECTED "Disconnected"
#define D_MQTT_RECONNECTING "Disconnected from broker, reconnection..."
#define D_MQTT_NOT_CONFIGURED "Broker not configured"
#define D_MQTT_STARTED "Started: %d bytes"
#define D_MQTT_FAILED "Failed:"
#define D_MQTT_INVALID_TOPIC "Message has invalid topic"
#define D_MQTT_SUBSCRIBED "Subscribed to %s"
#define D_MQTT_NOT_SUBSCRIBED "Failed to subscribe to %s"
#define D_MQTT_HA_AUTO_DISCOVERY "Register HA auto-discovery"
#define D_MQTT_PAYLOAD_TOO_LONG "Payload too long (%u bytes)"
#define D_TELNET_CLOSING_CONNECTION "Terminarea sesiunii de la %s"
#define D_TELNET_CLIENT_LOGIN_FROM "Conectare client de la %s"
#define D_TELNET_CLIENT_CONNECT_FROM "Client conectat de la %s"
#define D_TELNET_CLIENT_NOT_CONNECTED "Clientul NU este conectat"
#define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Încercare incorectă de autentificare de la %s"
#define D_TELNET_STARTED "Consola Telnet pornită"
#define D_TELNET_FAILED "Nu s-a putut porni consola Telnet"
#define D_TELNET_CLIENT_CONNECTED "Client conectat"
#define D_TELNET_CLIENT_REJECTED "Client respins"
#define D_TELNET_CLOSING_CONNECTION "Closing session from %s"
#define D_TELNET_CLIENT_LOGIN_FROM "Client login from %s"
#define D_TELNET_CLIENT_CONNECT_FROM "Client connected from %s"
#define D_TELNET_CLIENT_NOT_CONNECTED "Client NOT connected"
#define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Incorrect login attempt from %s"
#define D_TELNET_STARTED "Telnet console started"
#define D_TELNET_FAILED "Failed to start telnet console"
#define D_TELNET_CLIENT_CONNECTED "Client connected"
#define D_TELNET_CLIENT_REJECTED "Client rejected"
#define D_HASP_INVALID_PAGE "Pagina invalidă: %u"
#define D_HASP_INVALID_LAYER "Nu se poate șterge stratul de sistem"
#define D_HASP_CHANGE_PAGE "Schimbarea paginii: %u"
#define D_HASP_CLEAR_PAGE "Ștergerea paginii: %u"
#define D_HASP_INVALID_PAGE "Invalid page %u"
#define D_HASP_INVALID_LAYER "Cannot clear system layer"
#define D_HASP_CHANGE_PAGE "Changing page to %u"
#define D_HASP_CLEAR_PAGE "Clearing page %u"
#define D_OBJECT_DELETED "Obiect șters"
#define D_OBJECT_UNKNOWN "Obiect necunoscut"
#define D_OBJECT_MISMATCH "Obiectele NU se potrivesc!"
#define D_OBJECT_LOST "Obiect pierdut!"
#define D_OBJECT_CREATE_FAILED "Obiectul %u a eșuat"
#define D_OBJECT_PAGE_UNKNOWN "ID-ul paginii %u nu este definit"
#define D_OBJECT_EVENT_UNKNOWN "Eveniment necunoscut: %d"
#define D_OBJECT_DELETED "Object deleted"
#define D_OBJECT_UNKNOWN "Unknown object"
#define D_OBJECT_MISMATCH "Objects DO NOT match!"
#define D_OBJECT_LOST "Lost object!"
#define D_OBJECT_CREATE_FAILED "Failed to create object id %u"
#define D_OBJECT_PAGE_UNKNOWN "Page ID %u not defined"
#define D_OBJECT_EVENT_UNKNOWN "Unknown Event %d"
#define D_ATTRIBUTE_UNKNOWN "Proprietate necunoscută: %s"
#define D_ATTRIBUTE_UNKNOWN "Unknown property %s"
// D_ATTRIBUTE_OBSOLETE D_ATTRIBUTE_INSTEAD can be used together or just D_ATTRIBUTE_OBSOLETE alone
#define D_ATTRIBUTE_OBSOLETE "%s s-a scos din uz"
#define D_ATTRIBUTE_INSTEAD ", folosiți %s"
#define D_ATTRIBUTE_READ_ONLY "%s este numai în citire"
#define D_ATTRIBUTE_PAGE_METHOD_INVALID "Nu se poate apela %s pe o pagină"
#define D_ATTRIBUTE_ALIGN_INVALID "Aliniere invalidă (align): %s"
#define D_ATTRIBUTE_COLOR_INVALID "Culoare invalidă (color): %s"
#define D_ATTRIBUTE_OBSOLETE "%s is obsolete"
#define D_ATTRIBUTE_INSTEAD ", use %s instead"
#define D_ATTRIBUTE_READ_ONLY "%s is read-only"
#define D_ATTRIBUTE_PAGE_METHOD_INVALID "Unable to call %s on a page"
#define D_ATTRIBUTE_ALIGN_INVALID "Invalid align property: %s"
#define D_ATTRIBUTE_COLOR_INVALID "Invalid color property: %s"
#define D_ATTRIBUTE_LONG_MODE_INVALID "Invalid long mode: %s"
#define D_OOBE_SSID_VALIDATED "SSID %s validat"
#define D_OOBE_AUTO_CALIBRATE "Calibrarea automată este activă"
#define D_OOBE_CALIBRATED "Deja calibrat"
#define D_OOBE_SSID_VALIDATED "SSID %s validated"
#define D_OOBE_AUTO_CALIBRATE "Auto calibrate enabled"
#define D_OOBE_CALIBRATED "Already calibrated"
#define D_DISPATCH_COMMAND_NOT_FOUND "Comanda %s nu a fost găsită"
#define D_DISPATCH_INVALID_PAGE "Pagina invalidă %s"
#define D_DISPATCH_REBOOT "MCU-ul repornește acum!"
#define D_DISPATCH_COMMAND_NOT_FOUND "Command '%s' not found"
#define D_DISPATCH_INVALID_PAGE "Invalid page %s"
#define D_DISPATCH_REBOOT "Rebooting the MCU now!"
#define D_JSON_FAILED "Analiza JSON a eșuat:"
#define D_JSONL_FAILED "Analiza JSONL a eșuat la linia %u"
#define D_JSONL_SUCCEEDED "Analiza JSONL completă"
#define D_JSON_FAILED "JSON parsing failed:"
#define D_JSONL_FAILED "JSONL parsing failed at line %u"
#define D_JSONL_SUCCEEDED "Jsonl fully parsed"
#define D_OTA_CHECK_UPDATE "Verificare la URL-ul actualizărilor: %s"
#define D_OTA_CHECK_COMPLETE "Verificarea actualizării a fost finalizată"
#define D_OTA_CHECK_FAILED "Verificarea actualizării a eșuat: %s"
#define D_OTA_UPDATE_FIRMWARE "Actualizare firmware prin OTA"
#define D_OTA_UPDATE_COMPLETE "Actualizare prin OTA finalizată"
#define D_OTA_UPDATE_APPLY "Aplicarea firmware-ului și repornire"
#define D_OTA_UPDATE_FAILED "Actualizarea prin OTA a eșuat"
#define D_OTA_UPDATING_FIRMWARE "Actualizare firmware..."
#define D_OTA_UPDATING_FILESYSTEM "Actualizare sistem fișiere..."
#define D_OTA_CHECK_UPDATE "Trying update URL: %s"
#define D_OTA_CHECK_COMPLETE "Update check complete"
#define D_OTA_CHECK_FAILED "Update check failed: %s"
#define D_OTA_UPDATE_FIRMWARE "OTA Firmware Update"
#define D_OTA_UPDATE_COMPLETE "OTA Update complete"
#define D_OTA_UPDATE_APPLY "Applying Firmware & Reboot"
#define D_OTA_UPDATE_FAILED "OTA Update failed"
#define D_OTA_UPDATING_FIRMWARE "Updating firmware..."
#define D_OTA_UPDATING_FILESYSTEM "Updating filesystem..."
#define D_HTTP_HASP_DESIGN "Desenul ecranului"
#define D_HTTP_INFORMATION "Informații"
#define D_HTTP_HTTP_SETTINGS "Setări HTTP"
#define D_HTTP_FTP_SETTINGS "Setări FTP"
#define D_HTTP_WIFI_SETTINGS "Setări WiFi"
#define D_HTTP_MQTT_SETTINGS "Setări MQTT"
#define D_HTTP_GPIO_SETTINGS "Setări GPIO"
#define D_HTTP_MDNS_SETTINGS "Setări mDNS"
#define D_HTTP_TELNET_SETTINGS "Setări Telnet"
#define D_HTTP_DEBUG_SETTINGS "Setări de depanare"
#define D_HTTP_GUI_SETTINGS "Setări ecran"
#define D_HTTP_SAVE_SETTINGS "Salvarea setărilor"
#define D_HTTP_UPLOAD_FILE "Încărcare fișier"
#define D_HTTP_ERASE_DEVICE "Resetarea tuturor setărilor"
#define D_HTTP_ADD_GPIO "Adăugare pin"
#define D_HTTP_BACK "Înapoi"
#define D_HTTP_REFRESH "Reîmprospătare"
#define D_HTTP_PREV_PAGE "Pagina anterioară"
#define D_HTTP_NEXT_PAGE "Pagina următoare"
#define D_HTTP_CALIBRATE "Calibrare"
#define D_HTTP_ANTIBURN "Protecție ardere ecran"
#define D_HTTP_SCREENSHOT "Captură de ecran"
#define D_HTTP_FILE_BROWSER "Browser de fișiere"
#define D_HTTP_FIRMWARE_UPGRADE "Actualizare firmware"
#define D_HTTP_UPDATE_FIRMWARE "Actualizarea firmware-ului"
#define D_HTTP_FACTORY_RESET "Resetare la parametri de fabrică"
#define D_HTTP_MAIN_MENU "Meniu principal"
#define D_HTTP_REBOOT "Repornire"
#define D_HTTP_CONFIGURATION "Setări"
#define D_HTTP_HASP_DESIGN "HASP Design"
#define D_HTTP_INFORMATION "Information"
#define D_HTTP_HTTP_SETTINGS "HTTP Settings"
#define D_HTTP_FTP_SETTINGS "FTP Settings"
#define D_HTTP_WIFI_SETTINGS "Wifi Settings"
#define D_HTTP_MQTT_SETTINGS "MQTT Settings"
#define D_HTTP_GPIO_SETTINGS "GPIO Settings"
#define D_HTTP_MDNS_SETTINGS "mDNS Settings"
#define D_HTTP_TELNET_SETTINGS "Telnet Settings"
#define D_HTTP_DEBUG_SETTINGS "Debug Settings"
#define D_HTTP_GUI_SETTINGS "Display Settings"
#define D_HTTP_SAVE_SETTINGS "Save Settings"
#define D_HTTP_UPLOAD_FILE "Upload File"
#define D_HTTP_ERASE_DEVICE "Reset All Settings"
#define D_HTTP_ADD_GPIO "Add New Pin"
#define D_HTTP_BACK "Back"
#define D_HTTP_REFRESH "Refresh"
#define D_HTTP_PREV_PAGE "Prev Page"
#define D_HTTP_NEXT_PAGE "Next Page"
#define D_HTTP_CALIBRATE "Calibrate"
#define D_HTTP_ANTIBURN "Run Anti Burn-in"
#define D_HTTP_SCREENSHOT "Screenshot"
#define D_HTTP_FILE_BROWSER "File Editor"
#define D_HTTP_FIRMWARE_UPGRADE "Firmware Upgrade"
#define D_HTTP_UPDATE_FIRMWARE "Update Firmware"
#define D_HTTP_FACTORY_RESET "Factory Reset"
#define D_HTTP_MAIN_MENU "Main Menu"
#define D_HTTP_REBOOT "Restart"
#define D_HTTP_CONFIGURATION "Configuration"
#define D_HTTP_CONFIG_CHANGED \
"Configurația s-a modificat, pentru a se salva, este necesară <a href='/reboot'>repornirea</a> dispozitivului."
#define D_HTTP_SENDING_PAGE "Pagina %S trimisă la %s"
#define D_HTTP_FOOTER "de Francis Van Roie"
"The configuration has changed, please click <a href='/reboot'>Restart</a> to save changes to flash."
#define D_HTTP_SENDING_PAGE "Sent %S page to %s"
#define D_HTTP_FOOTER "by Francis Van Roie"
#define D_INFO_VERSION "Versiune"
#define D_INFO_BUILD_DATETIME "Data Build-ului"
#define D_INFO_ENVIRONMENT "Mediu"
#define D_INFO_VERSION "Version"
#define D_INFO_BUILD_DATETIME "Build DateTime"
#define D_INFO_ENVIRONMENT "Environment"
#define D_INFO_UPTIME "Uptime"
#define D_INFO_FREE_HEAP "Heap liber"
#define D_INFO_FREE_BLOCK "Bloc liber"
#define D_INFO_DEVICE_MEMORY "Memorie dispozitiv"
#define D_INFO_LVGL_MEMORY "Memorie LVGL"
#define D_INFO_FREE_HEAP "Free Heap"
#define D_INFO_FREE_BLOCK "Free Block"
#define D_INFO_DEVICE_MEMORY "Device Memory"
#define D_INFO_LVGL_MEMORY "LVGL Memory"
#define D_INFO_TOTAL_MEMORY "Total"
#define D_INFO_FREE_MEMORY "Liber"
#define D_INFO_FRAGMENTATION "Fragmentație"
#define D_INFO_PSRAM_FREE "PSRam liber"
#define D_INFO_PSRAM_SIZE "PSRam mărime"
#define D_INFO_FLASH_SIZE "Flash mărime"
#define D_INFO_SKETCH_USED "Mărime program folosită"
#define D_INFO_SKETCH_FREE "Mărime program liberă"
#define D_INFO_FREE_MEMORY "Free"
#define D_INFO_FRAGMENTATION "Fragmentation"
#define D_INFO_PSRAM_FREE "PSRam Free"
#define D_INFO_PSRAM_SIZE "PSRam Size"
#define D_INFO_FLASH_SIZE "Flash Size"
#define D_INFO_SKETCH_USED "Program Size Used"
#define D_INFO_SKETCH_FREE "Program Size Free"
#define D_INFO_FS_SIZE "Filesystem Size"
#define D_INFO_FS_USED "Filesystem Used"
#define D_INFO_FS_FREE "Filesystem Free"
#define D_INFO_MODULE "Modul"
#define D_INFO_MODULE "Module"
#define D_INFO_MODEL "Model"
#define D_INFO_FREQUENCY "Frecvență"
#define D_INFO_CORE_VERSION "Versiune Core"
#define D_INFO_RESET_REASON "Motiv reset"
#define D_INFO_STATUS "Stare"
#define D_INFO_FREQUENCY "Frequency"
#define D_INFO_CORE_VERSION "Core Version"
#define D_INFO_RESET_REASON "Reset Reason"
#define D_INFO_STATUS "Status"
#define D_INFO_SERVER "Server"
#define D_INFO_USERNAME "Utilizatur"
#define D_INFO_CLIENTID "ID Client"
// #define D_INFO_CONNECTED "Conectat"
// #define D_INFO_DISCONNECTED "Deconectat"
#define D_INFO_RECEIVED "Primite"
#define D_INFO_PUBLISHED "Trimise"
#define D_INFO_FAILED "Eșuate"
#define D_INFO_USERNAME "Username"
#define D_INFO_CLIENTID "Client ID"
// #define D_INFO_CONNECTED "Connected"
// #define D_INFO_DISCONNECTED "Disconnected"
#define D_INFO_RECEIVED "Received"
#define D_INFO_PUBLISHED "Published"
#define D_INFO_FAILED "Failed"
#define D_INFO_ETHERNET "Ethernet"
#define D_INFO_WIFI "WiFi"
#define D_INFO_LINK_SPEED "Viteză Link"
#define D_INFO_FULL_DUPLEX "Duplexitate completă"
#define D_INFO_WIFI "Wifi"
#define D_INFO_LINK_SPEED "Link Speed"
#define D_INFO_FULL_DUPLEX "Full Duplex"
#define D_INFO_BSSID "BSSID"
#define D_INFO_SSID "SSID"
#define D_INFO_RSSI "Putere semnal"
#define D_INFO_IP_ADDRESS "Addresa IP"
#define D_INFO_MAC_ADDRESS "Addresa MAC"
#define D_INFO_RSSI "Signal Strength"
#define D_INFO_IP_ADDRESS "IP Address"
#define D_INFO_MAC_ADDRESS "MAC Address"
#define D_INFO_GATEWAY "Gateway"
#define D_INFO_DNS_SERVER "Server DNS"
#define D_INFO_DNS_SERVER "DNS Server"
#define D_OOBE_MSG "Atingeți ecranul pentru a configura WiFi sau conectați-vă la acest punct de acces:"
#define D_OOBE_SCAN_TO_CONNECT "Scanați pentru a vă conecta:"
#define D_OOBE_MSG "Tap the screen to setup WiFi or connect to this Access Point:"
#define D_OOBE_SCAN_TO_CONNECT "Scan to connect"
#define D_WIFI_CONNECTING_TO "Conectare la %s"
#define D_WIFI_CONNECTED_TO "Conectat la %s, cerere IP..."
#define D_WIFI_RSSI_EXCELLENT "Excelentă"
#define D_WIFI_RSSI_GOOD "Bună"
#define D_WIFI_RSSI_FAIR "Acceptabilă"
#define D_WIFI_RSSI_WEAK "Slabă"
#define D_WIFI_RSSI_BAD "Foarte slabă"
#define D_WIFI_CONNECTING_TO "Connecting to %s"
#define D_WIFI_CONNECTED_TO "Connected to %s, requesting IP..."
#define D_WIFI_RSSI_EXCELLENT "Excellent"
#define D_WIFI_RSSI_GOOD "Good"
#define D_WIFI_RSSI_FAIR "Fair"
#define D_WIFI_RSSI_WEAK "Weak"
#define D_WIFI_RSSI_BAD "Very bad"
// new
#define D_GPIO_SWITCH "Întrerupător"
#define D_GPIO_BUTTON "Buton"
#define D_GPIO_TOUCH "Atingere capacitivă"
#define D_GPIO_SWITCH "Switch"
#define D_GPIO_BUTTON "Push Button"
#define D_GPIO_TOUCH "Capacitive Touch"
#define D_GPIO_LED "Led"
#define D_GPIO_LED_R "Ramă Roșu"
#define D_GPIO_LED_G "Ramă Verde"
#define D_GPIO_LED_B "Ramă Albastru"
#define D_GPIO_POWER_RELAY "Releu general"
#define D_GPIO_LIGHT_RELAY "Releu iluminare"
#define D_GPIO_LED_R "Mood Red"
#define D_GPIO_LED_G "Mood Green"
#define D_GPIO_LED_B "Mood Blue"
#define D_GPIO_POWER_RELAY "Power Relay"
#define D_GPIO_LIGHT_RELAY "Light Relay"
#define D_GPIO_PWM "PWM"
#define D_GPIO_DAC "DAC"
#define D_GPIO_SERIAL_DIMMER "Dimer Serial"
#define D_GPIO_UNKNOWN "Necunoscut"
#define D_GPIO_SERIAL_DIMMER "Serial Dimmer"
#define D_GPIO_UNKNOWN "Unknown"
#define D_GPIO_PIN "Pin"
#define D_GPIO_GROUP "Grup"
#define D_GPIO_GROUP_NONE "Nimic"
#define D_GPIO_GROUP "Group"
#define D_GPIO_GROUP_NONE "None"
#define D_GPIO_STATE_NORMAL "Normal"
#define D_GPIO_STATE_INVERTED "Invertat"
#define D_GPIO_STATE_INVERTED "Inverted"
#endif
#endif

234
src/lang/zh_CN.h Normal file
View File

@ -0,0 +1,234 @@
// This translation file is maintained on https://crowdin.com/project/openhasp/
// Do not edit directly!
#ifndef HASP_LANG_EN_US_H
#define HASP_LANG_EN_US_H
#define D_ISO_LANG_CODE "en-US"
#define D_USERNAME "Username:"
#define D_PASSWORD "Password:"
#define D_SSID "Ssid:"
#define D_YES "Yes"
#define D_NO "No"
#define D_ERROR_OUT_OF_MEMORY "Out of memory"
#define D_ERROR_UNKNOWN "Unknown error"
#define D_CONFIG_NOT_CHANGED "Settings did not change"
#define D_CONFIG_CHANGED "Settings changed"
#define D_CONFIG_LOADED "Settings loaded"
#define D_FILE_LOADING "Loading %s"
#define D_FILE_LOADED "Loaded %s"
#define D_FILE_LOAD_FAILED "Failed to load %s"
#define D_FILE_SAVING "Saving %s"
#define D_FILE_SAVED "Saved %s"
#define D_FILE_SAVE_FAILED "Failed to save %s"
#define D_FILE_NOT_FOUND "File not found"
#define D_FILE_SIZE_BYTES "bytes"
#define D_FILE_SIZE_KILOBYTES "KiB"
#define D_FILE_SIZE_MEGABYTES "MiB"
#define D_FILE_SIZE_GIGABYTES "GiB"
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
#define D_DECIMAL_POINT "." // decimal comma or point
#define D_SERVICE_STARTING "Starting..."
#define D_SERVICE_STARTED "Started"
#define D_SERVICE_START_FAILED "Failed to start"
#define D_SERVICE_STOPPED "Stopped"
#define D_SERVICE_DISABLED "Disabled"
#define D_SERVICE_CONNECTED "Connected"
#define D_SERVICE_DISCONNECTED "Disconnected"
#define D_SETTING_ENABLED "Enabled"
#define D_SETTING_DISABLED "Disabled"
#define D_SETTING_DEFAULT "Default"
#define D_NETWORK_IP_ADDRESS_RECEIVED "Received IP address %s"
#define D_NETWORK_ONLINE "online"
#define D_NETWORK_OFFLINE "offline"
#define D_NETWORK_CONNECTION_FAILED "Connection failed"
#define D_NETWORK_CONNECTION_UNAUTHORIZED "Authorization failed"
#define D_MQTT_DEFAULT_NAME "plate_%s"
#define D_MQTT_CONNECTING "Connecting..."
#define D_MQTT_CONNECTED "Connected to broker %s as clientID %s"
#define D_MQTT_NOT_CONNECTED "Not connected ???"
#define D_MQTT_DISCONNECTING "Disconnecting..."
#define D_MQTT_DISCONNECTED "Disconnected"
#define D_MQTT_RECONNECTING "Disconnected from broker, reconnection..."
#define D_MQTT_NOT_CONFIGURED "Broker not configured"
#define D_MQTT_STARTED "Started: %d bytes"
#define D_MQTT_FAILED "Failed:"
#define D_MQTT_INVALID_TOPIC "Message has invalid topic"
#define D_MQTT_SUBSCRIBED "Subscribed to %s"
#define D_MQTT_NOT_SUBSCRIBED "Failed to subscribe to %s"
#define D_MQTT_HA_AUTO_DISCOVERY "Register HA auto-discovery"
#define D_MQTT_PAYLOAD_TOO_LONG "Payload too long (%u bytes)"
#define D_TELNET_CLOSING_CONNECTION "Closing session from %s"
#define D_TELNET_CLIENT_LOGIN_FROM "Client login from %s"
#define D_TELNET_CLIENT_CONNECT_FROM "Client connected from %s"
#define D_TELNET_CLIENT_NOT_CONNECTED "Client NOT connected"
#define D_TELNET_INCORRECT_LOGIN_ATTEMPT "Incorrect login attempt from %s"
#define D_TELNET_STARTED "Telnet console started"
#define D_TELNET_FAILED "Failed to start telnet console"
#define D_TELNET_CLIENT_CONNECTED "Client connected"
#define D_TELNET_CLIENT_REJECTED "Client rejected"
#define D_HASP_INVALID_PAGE "Invalid page %u"
#define D_HASP_INVALID_LAYER "Cannot clear system layer"
#define D_HASP_CHANGE_PAGE "Changing page to %u"
#define D_HASP_CLEAR_PAGE "Clearing page %u"
#define D_OBJECT_DELETED "Object deleted"
#define D_OBJECT_UNKNOWN "Unknown object"
#define D_OBJECT_MISMATCH "Objects DO NOT match!"
#define D_OBJECT_LOST "Lost object!"
#define D_OBJECT_CREATE_FAILED "Failed to create object id %u"
#define D_OBJECT_PAGE_UNKNOWN "Page ID %u not defined"
#define D_OBJECT_EVENT_UNKNOWN "Unknown Event %d"
#define D_ATTRIBUTE_UNKNOWN "Unknown property %s"
// D_ATTRIBUTE_OBSOLETE D_ATTRIBUTE_INSTEAD can be used together or just D_ATTRIBUTE_OBSOLETE alone
#define D_ATTRIBUTE_OBSOLETE "%s is obsolete"
#define D_ATTRIBUTE_INSTEAD ", use %s instead"
#define D_ATTRIBUTE_READ_ONLY "%s is read-only"
#define D_ATTRIBUTE_PAGE_METHOD_INVALID "Unable to call %s on a page"
#define D_ATTRIBUTE_ALIGN_INVALID "Invalid align property: %s"
#define D_ATTRIBUTE_COLOR_INVALID "Invalid color property: %s"
#define D_ATTRIBUTE_LONG_MODE_INVALID "Invalid long mode: %s"
#define D_OOBE_SSID_VALIDATED "SSID %s validated"
#define D_OOBE_AUTO_CALIBRATE "Auto calibrate enabled"
#define D_OOBE_CALIBRATED "Already calibrated"
#define D_DISPATCH_COMMAND_NOT_FOUND "Command '%s' not found"
#define D_DISPATCH_INVALID_PAGE "Invalid page %s"
#define D_DISPATCH_REBOOT "Rebooting the MCU now!"
#define D_JSON_FAILED "JSON parsing failed:"
#define D_JSONL_FAILED "JSONL parsing failed at line %u"
#define D_JSONL_SUCCEEDED "Jsonl fully parsed"
#define D_OTA_CHECK_UPDATE "Trying update URL: %s"
#define D_OTA_CHECK_COMPLETE "Update check complete"
#define D_OTA_CHECK_FAILED "Update check failed: %s"
#define D_OTA_UPDATE_FIRMWARE "OTA Firmware Update"
#define D_OTA_UPDATE_COMPLETE "OTA Update complete"
#define D_OTA_UPDATE_APPLY "Applying Firmware & Reboot"
#define D_OTA_UPDATE_FAILED "OTA Update failed"
#define D_OTA_UPDATING_FIRMWARE "Updating firmware..."
#define D_OTA_UPDATING_FILESYSTEM "Updating filesystem..."
#define D_HTTP_HASP_DESIGN "HASP Design"
#define D_HTTP_INFORMATION "Information"
#define D_HTTP_HTTP_SETTINGS "HTTP Settings"
#define D_HTTP_FTP_SETTINGS "FTP Settings"
#define D_HTTP_WIFI_SETTINGS "Wifi Settings"
#define D_HTTP_MQTT_SETTINGS "MQTT Settings"
#define D_HTTP_GPIO_SETTINGS "GPIO Settings"
#define D_HTTP_MDNS_SETTINGS "mDNS Settings"
#define D_HTTP_TELNET_SETTINGS "Telnet Settings"
#define D_HTTP_DEBUG_SETTINGS "Debug Settings"
#define D_HTTP_GUI_SETTINGS "Display Settings"
#define D_HTTP_SAVE_SETTINGS "Save Settings"
#define D_HTTP_UPLOAD_FILE "Upload File"
#define D_HTTP_ERASE_DEVICE "Reset All Settings"
#define D_HTTP_ADD_GPIO "Add New Pin"
#define D_HTTP_BACK "Back"
#define D_HTTP_REFRESH "Refresh"
#define D_HTTP_PREV_PAGE "Prev Page"
#define D_HTTP_NEXT_PAGE "Next Page"
#define D_HTTP_CALIBRATE "Calibrate"
#define D_HTTP_ANTIBURN "Run Anti Burn-in"
#define D_HTTP_SCREENSHOT "Screenshot"
#define D_HTTP_FILE_BROWSER "File Editor"
#define D_HTTP_FIRMWARE_UPGRADE "Firmware Upgrade"
#define D_HTTP_UPDATE_FIRMWARE "Update Firmware"
#define D_HTTP_FACTORY_RESET "Factory Reset"
#define D_HTTP_MAIN_MENU "Main Menu"
#define D_HTTP_REBOOT "Restart"
#define D_HTTP_CONFIGURATION "Configuration"
#define D_HTTP_CONFIG_CHANGED \
"The configuration has changed, please click <a href='/reboot'>Restart</a> to save changes to flash."
#define D_HTTP_SENDING_PAGE "Sent %S page to %s"
#define D_HTTP_FOOTER "by Francis Van Roie"
#define D_INFO_VERSION "Version"
#define D_INFO_BUILD_DATETIME "Build DateTime"
#define D_INFO_ENVIRONMENT "Environment"
#define D_INFO_UPTIME "Uptime"
#define D_INFO_FREE_HEAP "Free Heap"
#define D_INFO_FREE_BLOCK "Free Block"
#define D_INFO_DEVICE_MEMORY "Device Memory"
#define D_INFO_LVGL_MEMORY "LVGL Memory"
#define D_INFO_TOTAL_MEMORY "Total"
#define D_INFO_FREE_MEMORY "Free"
#define D_INFO_FRAGMENTATION "Fragmentation"
#define D_INFO_PSRAM_FREE "PSRam Free"
#define D_INFO_PSRAM_SIZE "PSRam Size"
#define D_INFO_FLASH_SIZE "Flash Size"
#define D_INFO_SKETCH_USED "Program Size Used"
#define D_INFO_SKETCH_FREE "Program Size Free"
#define D_INFO_FS_SIZE "Filesystem Size"
#define D_INFO_FS_USED "Filesystem Used"
#define D_INFO_FS_FREE "Filesystem Free"
#define D_INFO_MODULE "Module"
#define D_INFO_MODEL "Model"
#define D_INFO_FREQUENCY "Frequency"
#define D_INFO_CORE_VERSION "Core Version"
#define D_INFO_RESET_REASON "Reset Reason"
#define D_INFO_STATUS "Status"
#define D_INFO_SERVER "Server"
#define D_INFO_USERNAME "Username"
#define D_INFO_CLIENTID "Client ID"
// #define D_INFO_CONNECTED "Connected"
// #define D_INFO_DISCONNECTED "Disconnected"
#define D_INFO_RECEIVED "Received"
#define D_INFO_PUBLISHED "Published"
#define D_INFO_FAILED "Failed"
#define D_INFO_ETHERNET "Ethernet"
#define D_INFO_WIFI "Wifi"
#define D_INFO_LINK_SPEED "Link Speed"
#define D_INFO_FULL_DUPLEX "Full Duplex"
#define D_INFO_BSSID "BSSID"
#define D_INFO_SSID "SSID"
#define D_INFO_RSSI "Signal Strength"
#define D_INFO_IP_ADDRESS "IP Address"
#define D_INFO_MAC_ADDRESS "MAC Address"
#define D_INFO_GATEWAY "Gateway"
#define D_INFO_DNS_SERVER "DNS Server"
#define D_OOBE_MSG "Tap the screen to setup WiFi or connect to this Access Point:"
#define D_OOBE_SCAN_TO_CONNECT "Scan to connect"
#define D_WIFI_CONNECTING_TO "Connecting to %s"
#define D_WIFI_CONNECTED_TO "Connected to %s, requesting IP..."
#define D_WIFI_RSSI_EXCELLENT "Excellent"
#define D_WIFI_RSSI_GOOD "Good"
#define D_WIFI_RSSI_FAIR "Fair"
#define D_WIFI_RSSI_WEAK "Weak"
#define D_WIFI_RSSI_BAD "Very bad"
#define D_GPIO_SWITCH "Switch"
#define D_GPIO_BUTTON "Push Button"
#define D_GPIO_TOUCH "Capacitive Touch"
#define D_GPIO_LED "Led"
#define D_GPIO_LED_R "Mood Red"
#define D_GPIO_LED_G "Mood Green"
#define D_GPIO_LED_B "Mood Blue"
#define D_GPIO_POWER_RELAY "Power Relay"
#define D_GPIO_LIGHT_RELAY "Light Relay"
#define D_GPIO_PWM "PWM"
#define D_GPIO_DAC "DAC"
#define D_GPIO_SERIAL_DIMMER "Serial Dimmer"
#define D_GPIO_UNKNOWN "Unknown"
#define D_GPIO_PIN "Pin"
#define D_GPIO_GROUP "Group"
#define D_GPIO_GROUP_NONE "None"
#define D_GPIO_STATE_NORMAL "Normal"
#define D_GPIO_STATE_INVERTED "Inverted"
#endif

View File

@ -4,7 +4,7 @@
/* ===========================================================================
- LOG_FATAL() - A fatal exception is caught, the program should halt with while(1){}
- LOG_ERROR() - An important but non-fatal error occured, this error should be checked and not ignored
- LOG_ERROR() - An important but non-fatal error occurred, this error should be checked and not ignored
- LOG_WARNING() - Send at the end of a function to indicate failure of the sub process, can be ignored
- LOG_TRACE() - Information at the START of an action to notify another function is now running
@ -192,7 +192,7 @@ bool debugGetConfig(const JsonObject& settings)
*
* Read the settings from json and sets the application variables.
*
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
*
* @param[in] settings JsonObject with the config settings.
**/

View File

@ -73,7 +73,7 @@ bool mqttSetConfig(const JsonObject& settings);
// These defaults may be overwritten with values saved by the web interface
#ifndef MQTT_GROUPNAME
#define MQTT_GROUPNAME "plates";
#define MQTT_GROUPNAME "plates"
#endif
#ifndef MQTT_HOSTNAME
@ -104,4 +104,4 @@ bool mqttSetConfig(const JsonObject& settings);
#endif
#endif
#endif // HASP_MQTT_H
#endif // HASP_MQTT_H

View File

@ -745,7 +745,7 @@ bool mqttGetConfig(const JsonObject& settings)
*
* Read the settings from json and sets the application variables.
*
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
*
* @param[in] settings JsonObject with the config settings.
**/

View File

@ -415,7 +415,7 @@ void mqtt_get_info(JsonDocument& doc)
*
* Read the settings from json and sets the application variables.
*
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
*
* @param[in] settings JsonObject with the config settings.
**/

View File

@ -459,7 +459,7 @@ bool mqttGetConfig(const JsonObject& settings)
*
* Read the settings from json and sets the application variables.
*
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
*
* @param[in] settings JsonObject with the config settings.
**/

View File

@ -673,7 +673,7 @@ void gpio_output_group_values(uint8_t group)
// SHOULD only by called from DISPATCH
// Update the normalized value of all group members
// Does not procude logging output
// Does not produce logging output
void gpio_set_normalized_group_values(hasp_update_value_t& value)
{
// Set all pins first, minimizes delays
@ -1001,7 +1001,7 @@ bool gpioGetConfig(const JsonObject& settings)
*
* Read the settings from json and sets the application variables.
*
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
*
* @param[in] settings JsonObject with the config settings.
**/

View File

@ -676,7 +676,7 @@ bool wifiGetConfig(const JsonObject& settings)
*
* Read the settings from json and sets the application variables.
*
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
*
* @param[in] settings JsonObject with the config settings.
**/

View File

@ -194,7 +194,7 @@ bool ftpGetConfig(const JsonObject& settings)
*
* Read the settings from json and sets the application variables.
*
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
*
* @param[in] settings JsonObject with the config settings.
**/

View File

@ -71,7 +71,7 @@ ESP8266WebServer webServer(80);
#include <detail/mimetable.h>
WebServer webServer(80);
#if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
#if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3)
extern const uint8_t EDIT_HTM_GZ_START[] asm("_binary_data_static_edit_htm_gz_start");
extern const uint8_t EDIT_HTM_GZ_END[] asm("_binary_data_static_edit_htm_gz_end");
extern const uint8_t STYLE_CSS_GZ_START[] asm("_binary_data_static_style_css_gz_start");
@ -2310,7 +2310,7 @@ static inline int handleFirmwareFile(String path)
path = path.substring(7);
}
#if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
#if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3)
if(path == F("/edit.htm")) {
return http_send_static_gzip_file(EDIT_HTM_GZ_START, EDIT_HTM_GZ_END, contentType);
// } else if(path == F("/hasp.htm")) { // 39 kB
@ -2765,7 +2765,7 @@ bool httpGetConfig(const JsonObject& settings)
*
* Read the settings from json and sets the application variables.
*
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
*
* @param[in] settings JsonObject with the config settings.
**/

View File

@ -2359,7 +2359,7 @@ bool httpGetConfig(const JsonObject& settings)
*
* Read the settings from json and sets the application variables.
*
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
*
* @param[in] settings JsonObject with the config settings.
**/

View File

@ -120,7 +120,7 @@ bool mdnsGetConfig(const JsonObject& settings)
/**
* Reads the settings from json and sets the application variables.
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
* @param[in] settings JsonObject with the config settings.
**/
bool mdnsSetConfig(const JsonObject& settings)

View File

@ -201,7 +201,7 @@ void otaEverySecond(void)
void otaSetup(void)
{
#if ESP_ARDUINO_VERSION_MAJOR >= 2
/* This method is similar to the single root certificate verfication, but it uses a standard set of root
/* This method is similar to the single root certificate verification, but it uses a standard set of root
* certificates from Mozilla to authenticate against. This allows the client to connect to all public SSL
* servers. */
secureClient.setCACertBundle(rootca_crt_bundle_start);

View File

@ -209,7 +209,7 @@ static inline void telnetProcessData(char ch)
case 8: // Backspace
if(telnetInputIndex > 0) telnetInputIndex--;
break;
case 13: // Cariage Return
case 13: // Carriage Return
telnetProcessLine("");
break;
case 32 ... 250:
@ -444,7 +444,7 @@ bool telnetGetConfig(const JsonObject& settings)
*
* Read the settings from json and sets the application variables.
*
* @note: data pixel should be formated to uint32_t RGBA. Imagemagick requirements.
* @note: data pixel should be formatted to uint32_t RGBA. Imagemagick requirements.
*
* @param[in] settings JsonObject with the config settings.
**/

View File

@ -67,7 +67,7 @@ lib_deps =
; lv_drivers@~7.9.1
;lv_drivers=https://github.com/littlevgl/lv_drivers/archive/7d71907c1d6b02797d066f50984b866e080ebeed.zip
https://github.com/eclipse/paho.mqtt.c.git
bblanchon/ArduinoJson@^6.21.2 ; Json(l) parser
bblanchon/ArduinoJson@^6.21.3 ; Json(l) parser
https://github.com/fvanroie/lv_drivers
git+https://github.com/lvgl/lv_lib_png.git#release/v7

View File

@ -94,8 +94,8 @@ lib_deps =
${env.lib_deps}
git+https://github.com/fvanroie/ConsoleInput.git#dev
; lorol/LittleFS_esp32@^1.0.6 ; for Arduino v1 only
bxparks/AceButton@^1.9.2 ; GPIO button library
bblanchon/StreamUtils@^1.6.3 ; for EEPromStream and BufferedTelnetClient
bxparks/AceButton@^1.10.1 ; GPIO button library
bblanchon/StreamUtils@^1.7.3 ; for EEPromStream and BufferedTelnetClient
; knolleary/PubSubClient@^2.8.0 ; MQTT client
extra_scripts =
@ -139,8 +139,8 @@ lib_deps =
[arduino_esp32_v2]
extends = esp32
framework = arduino
; platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.01.01/platform-espressif32.zip
platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.06.04/platform-espressif32.zip
; platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.05.01/platform-espressif32.zip
platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.08.01/platform-espressif32.zip
lib_ignore =
${esp32.lib_ignore}

View File

@ -4,8 +4,8 @@
; - FT6236 touch controller ;
;***************************************************;
[env:makerfabs-tft35-cap]
extends = arduino_esp32_v2, flash_16mb
[makerfabs-tft35-cap]
extends = arduino_esp32_v2
board = esp32dev
build_flags =
@ -39,3 +39,9 @@ lib_deps =
${arduino_esp32_v2.lib_deps}
${tft_espi.lib_deps}
${ft6336.lib_deps}
[env:makerfabs-tft35-cap_4MB]
extends = makerfabs-tft35-cap, flash_4mb
[env:makerfabs-tft35-cap_16MB]
extends = makerfabs-tft35-cap, flash_16mb

View File

@ -6,7 +6,7 @@
; untested config
[env:yeacreate-nscreen32]
extends = arduino_esp32_v2, flash_8mb
extends = arduino_esp32_v2, flash_16mb
board = esp32dev
build_flags =

View File

@ -0,0 +1,22 @@
; -- Platform specific build flags
[esp32c3]
extends = esp32
board_build.mcu = esp32c3
board_build.f_cpu = 160000000
ps_ram =
-DBOARD_HAS_PSRAM
-D HASP_USE_FREETYPE=1
-D LV_USE_FREETYPE=1
no_ps_ram =
-D HASP_USE_FREETYPE=1
-D LV_USE_FREETYPE=1
; -- The Arduino ESP32 v2.0.2 with 3 available flash sizes:
[arduino_esp32c3_v2]
extends = esp32c3
framework = arduino
;platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.01.01/platform-espressif32.zip
platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.07.00/platform-espressif32.zip
;platform = espressif32@5.3.0

View File

@ -75,7 +75,7 @@ fspi =
extends = esp32s2
framework = arduino
;platform = https://github.com/tasmota/platform-espressif32/releases/download/v2.0.4.1/platform-espressif32-2.0.4.1.zip
platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.06.04/platform-espressif32.zip
platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.07.00/platform-espressif32.zip
; =========================== SOLO ==============================================
@ -83,7 +83,7 @@ platform = https://github.com/tasmota/platform-espressif32/releases/download/202
[arduino_esp32s2-solo_v2]
framework = arduino
; platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.01.01/platform-espressif32.zip
platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.06.04/platform-espressif32.zip
platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.07.00/platform-espressif32.zip
board_build.embed_files = ${esp32.board_build.embed_files}
board_build.filesystem = littlefs
; ----- crash reporter

View File

@ -16,6 +16,6 @@ no_ps_ram =
extends = esp32s3
framework = arduino
;platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.01.01/platform-espressif32.zip
platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.06.04/platform-espressif32.zip
platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.07.00/platform-espressif32.zip
;platform = espressif32@5.3.0

View File

@ -0,0 +1,45 @@
;***************************************************;
; ESP-BOX ;
; - ILI9342 TFT ;
; - TT21100 touch controller ;
;***************************************************;
[env:esp-box]
extends = arduino_esp32s3_v2, flash_16mb
board = esp32s3box
board_build.arduino.memory_type = qio_opi
build_flags =
-D HASP_MODEL="ESP-BOX"
${arduino_esp32s3_v2.build_flags}
${esp32s3.ps_ram}
;region -- TFT_eSPI build options ------------------------
-D LGFX_USE_V1=1
-D HASP_USE_LGFX_TOUCH=1
-D TOUCH_DRIVER=0x21100
-D ILI9341_DRIVER=1
-D INVERT_COLORS=0
-D TFT_ROTATION=2
-D TFT_WIDTH=320
-D TFT_HEIGHT=240
-D TOUCH_SDA=8
-D TOUCH_SCL=18
-D TOUCH_OFFSET_ROTATION=4 ; 1=swap xy, 2=invert x, 4=inverty
-D TOUCH_IRQ=3
-D I2C_TOUCH_FREQUENCY=400000
-D I2C_TOUCH_PORT=1
-D I2C_TOUCH_ADDRESS=0x24
-D TFT_DC=4
-D TFT_CS=5
-D TFT_MOSI=6
-D TFT_SCLK=7
-D TFT_RST=48
-D TFT_BCKL=45
-D SPI_FREQUENCY=40000000
;endregion
lib_deps =
${arduino_esp32s3_v2.lib_deps}
${lovyangfx.lib_deps}
${tft_espi.lib_deps}

View File

@ -4,7 +4,7 @@
; - ft6236 touch controller ;
;***************************************************;
[esp-terminal]
[esp32-terminal]
extends = arduino_esp32s3_v2
board = esp32-s3-devkitc-1
board_build.arduino.memory_type = qio_opi
@ -35,12 +35,12 @@ lib_deps =
${arduino_esp32s3_v2.lib_deps}
${lovyangfx.lib_deps}
[esp-terminal-spi]
extends = esp-terminal
[esp32-terminal-spi]
extends = esp32-terminal
build_flags =
-D HASP_MODEL="ESP32-S3 Terminal SPI"
${esp-terminal.build_flags}
-D HASP_MODEL="ESP32-Terminal SPI"
${esp32-terminal.build_flags}
-D TFT_MISO=14
-D TFT_MOSI=13
-D TFT_SCLK=12
@ -52,12 +52,12 @@ build_flags =
-D TOUCH_SDA=02
-D TOUCH_SCL=01
[esp-terminal-rgb]
extends = esp-terminal
[esp32-terminal-rgb]
extends = esp32-terminal
build_flags =
-D HASP_MODEL="ESP32-S3 Terminal RGB"
${esp-terminal.build_flags}
-D HASP_MODEL="ESP32-Terminal RGB"
${esp32-terminal.build_flags}
-D TFT_WR=18
-D TFT_RD=48
@ -82,8 +82,8 @@ build_flags =
-D TOUCH_SDA=38
-D TOUCH_SCL=39
[env:esp-terminal-spi_16MB]
extends = esp-terminal-spi, flash_16mb
[env:esp32-terminal-spi_16MB]
extends = esp32-terminal-spi, flash_16mb
[env:esp-terminal-rgb_16MB]
extends = esp-terminal-rgb, flash_16mb
[env:esp32-terminal-rgb_16MB]
extends = esp32-terminal-rgb, flash_16mb

View File

@ -27,9 +27,10 @@ build_flags =
-D TFT_CS=15
-D TFT_RST=-1
-D TFT_DC=21
-D TFT_BCKL=-1
-D TFT_BCKL=48
-D SPI_FREQUENCY=40000000
-D SPI_READ_FREQUENCY=16000000
-D TFT_DMA_CHANNEL=1
-D TOUCH_DRIVER=0x6336
-D HASP_USE_LGFX_TOUCH=1
-D TOUCH_SDA=38

View File

@ -0,0 +1,92 @@
;***************************************************;
; SenseCAP Indicator D1, 4-Inch Touch Screen ;
; - Custom esp32-s3 board ;
; - st7701s TFT ;
; - ft6336u touch controller ;
;***************************************************;
[sensecap-indicator-d1]
extends = arduino_esp32s3_v2
board = esp32-s3-devkitc-1
board_build.arduino.memory_type = qio_opi
build_flags =
-D HASP_MODEL="SenseCAP Indicator D1"
${arduino_esp32s3_v2.build_flags}
${esp32s3.ps_ram}
-DSENSECAP_INDICATOR_D1
;-DARDUINO_USB_CDC_ON_BOOT
;-DUSE_USB_CDC_CONSOLE
;region -- ArduinoGFX build options ------------------------
-D HASP_USE_ARDUINOGFX=1
-D HASP_LV_USE_SW_ROTATE=1
-D ST7701_DRIVER=1
-D TFT_WIDTH=480
-D TFT_HEIGHT=480
; Bus Settings
-D TFT_HSYNC=16
-D TFT_VSYNC=17
-D TFT_DE=18
-D TFT_PCLK=21
-D TFT_R0=4
-D TFT_R1=3
-D TFT_R2=2
-D TFT_R3=1
-D TFT_R4=0
-D TFT_G0=10
-D TFT_G1=9
-D TFT_G2=8
-D TFT_G3=7
-D TFT_G4=6
-D TFT_G5=5
-D TFT_B0=15
-D TFT_B1=14
-D TFT_B2=13
-D TFT_B3=12
-D TFT_B4=11
-D TFT_DC=-1
-D TFT_CS=-1
-D TFT_SCLK=41
-D TFT_MOSI=48
-D TFT_MISO=47
-D TFT_RST=-1
-D TFT_BUSY=-1
-D TFT_BCKL=45
; Panel Settings
-D TFT_HSYNC_POLARITY=1
-D TFT_HSYNC_FRONT_PORCH=10
-D TFT_HSYNC_PULSE_WIDTH=8
-D TFT_HSYNC_BACK_PORCH=50
-D TFT_VSYNC_POLARITY=1
-D TFT_VSYNC_FRONT_PORCH=10
-D TFT_VSYNC_PULSE_WIDTH=8
-D TFT_VSYNC_BACK_PORCH=20
-D TFT_PCLK_ACTIVE_NEG=1 ; 0
-D TFT_PREFER_SPEED=18000000
-D TFT_AUTO_FLUSH=1
; Touch Settings
-D TOUCH_DRIVER=0x6336
-D TOUCH_WIDTH=480
-D TOUCH_HEIGHT=480
-D TOUCH_SWAP_XY=0
-D TOUCH_INVERSE_X=1
-D TOUCH_INVERSE_Y=1
-D TOUCH_SDA=39
-D TOUCH_SCL=40
-D TOUCH_RST=-1
-D TOUCH_IRQ=-1
-D I2C_TOUCH_FREQUENCY=400000
-D I2C_TOUCH_ADDRESS=0x48
-D I2C_TOUCH_PORT=1
;endregion
lib_deps =
${arduino_esp32s3_v2.lib_deps}
${arduinogfx.lib_deps}
; ${ft6336.lib_deps}
; git+https://github.com/RobTillaart/TCA9555.git
[env:sensecap-indicator-d1_8MB]
extends = sensecap-indicator-d1, flash_8mb

View File

@ -23,13 +23,7 @@ build_flags =
-D TFT_WIDTH=480
-D TFT_HEIGHT=480
-D TFT_HSYNC_POLARITY=1
-D TFT_HSYNC_FRONT_PORCH=10
-D TFT_HSYNC_PULSE_WIDTH=8
-D TFT_HSYNC_BACK_PORCH=50
-D TFT_VSYNC_POLARITY=1
-D TFT_VSYNC_FRONT_PORCH=10
-D TFT_VSYNC_PULSE_WIDTH=8
-D TFT_VSYNC_BACK_PORCH=20
;-D TFT_PCLK_ACTIVE_NEG=1
;-D TFT_PREFER_SPEED=9000000
-D TFT_AUTO_FLUSH=1
@ -81,6 +75,12 @@ build_flags =
-D TFT_R3=46 ; LCD RGB interface D14
-D TFT_R4=9 ; LCD RGB interface D15
-D TFT_BCKL=4 ; LCD backlight control, high level enable
-D TFT_HSYNC_FRONT_PORCH=10
-D TFT_HSYNC_PULSE_WIDTH=8
-D TFT_HSYNC_BACK_PORCH=50
-D TFT_VSYNC_FRONT_PORCH=10
-D TFT_VSYNC_PULSE_WIDTH=8
-D TFT_VSYNC_BACK_PORCH=20
[env:panlee-zw3d95ce01s-ar-4848_16MB]
extends = panlee-zw3d95ce01s, flash_16mb
@ -118,10 +118,59 @@ build_flags =
-D TFT_R3=1 ; LCD RGB interface D14
-D TFT_R4=15 ; LCD RGB interface D15
-D TFT_BCKL=45 ; LCD backlight control, high level enable
-D TFT_HSYNC_FRONT_PORCH=10
-D TFT_HSYNC_PULSE_WIDTH=8
-D TFT_HSYNC_BACK_PORCH=50
-D TFT_VSYNC_FRONT_PORCH=10
-D TFT_VSYNC_PULSE_WIDTH=8
-D TFT_VSYNC_BACK_PORCH=20
-D I2S_MCLK=38 ; I2S bus MCLK
-D I2S_SCLK=48 ; I2S bus SCLK
-D I2S_LRCK=47 ; I2S bus LRCK
-D I2S_SDO=21 ; I2S bus SDO
-D I2S_SDI=39 ; I2S bus SDI
-D I2C_SCL=6 ; I2C bus, used to configure CODEC, multiplexed peripherals
-D I2C_SDA=7 ; I2C bus, used to configure CODEC, multiplexed peripherals
-D I2C_SDA=7 ; I2C bus, used to configure CODEC, multiplexed peripherals
[env:panlee-zw3d95ce01s-tr-4848_16MB]
extends = panlee-zw3d95ce01s, flash_16mb
build_flags =
-D HASP_MODEL="ZX3D95CE01S-TR-4848"
${panlee-zw3d95ce01s.build_flags}
-D TOUCH_RST=-1 ; Using RC reset
-D TOUCH_SCL=6 ; touch I2C bus clock, multiplexed with external interface
-D TOUCH_SDA=15 ; Touch I2C bus data, multiplexed with external interface
-D TOUCH_INT=4 ; Touch interrupt
-D TFT_RST=41 ; LCD autoreset, use RGB_VS (TFT_VSYNC) signal to keep working
-D TFT_DC=-1
-D TFT_CS=38 ; LCD SPI bus CS
-D TFT_SCLK=45 ; LCD SPI bus SCLK
-D TFT_MOSI=48 ; LCD SPI bus MOSI
-D TFT_MISO=-1 ; LCD SPI bus MISO
-D TFT_DE=40 ; LCD RGB interface DE
-D TFT_VSYNC=41 ; LCD RGB interface VS
-D TFT_HSYNC=42 ; LCD RGB interface HS
-D TFT_PCLK=39 ; LCD RGB interface PCLK
-D TFT_B0=45 ; LCD RGB interface D0
-D TFT_B1=48 ; LCD RGB interface D1
-D TFT_B2=47 ; LCD RGB interface D2
-D TFT_B3=0 ; LCD RGB interface D3
-D TFT_B4=21 ; LCD RGB interface D4
-D TFT_G0=14 ; LCD RGB interface D5
-D TFT_G1=13 ; LCD RGB interface D6
-D TFT_G2=12 ; LCD RGB interface D7
-D TFT_G3=11 ; LCD RGB interface D8
-D TFT_G4=16 ; LCD RGB interface D9
-D TFT_G5=17 ; LCD RGB interface D10
-D TFT_R0=18 ; LCD RGB interface D11
-D TFT_R1=8 ; LCD RGB interface D12
-D TFT_R2=3 ; LCD RGB interface D13
-D TFT_R3=46 ; LCD RGB interface D14
-D TFT_R4=10 ; LCD RGB interface D15
-D TFT_BCKL=5 ; LCD backlight control, high level enable (datasheet states: 4, schematics states: 5 )
-D TFT_HSYNC_PULSE_WIDTH=10
-D TFT_HSYNC_BACK_PORCH=40
-D TFT_HSYNC_FRONT_PORCH=8
-D TFT_VSYNC_PULSE_WIDTH=10
-D TFT_VSYNC_BACK_PORCH=40
-D TFT_VSYNC_FRONT_PORCH=10

View File

@ -62,7 +62,7 @@ lib_deps =
;lv_drivers@~7.9.0
;lv_drivers=https://github.com/littlevgl/lv_drivers/archive/7d71907c1d6b02797d066f50984b866e080ebeed.zip
https://github.com/eclipse/paho.mqtt.c.git
bblanchon/ArduinoJson@^6.21.2 ; Json(l) parser
bblanchon/ArduinoJson@^6.21.3 ; Json(l) parser
https://github.com/fvanroie/lv_drivers
lib_ignore =

View File

@ -93,7 +93,7 @@ lib_deps =
;lv_drivers@~7.9.0
;lv_drivers=https://github.com/littlevgl/lv_drivers/archive/7d71907c1d6b02797d066f50984b866e080ebeed.zip
https://github.com/eclipse/paho.mqtt.c.git
bblanchon/ArduinoJson@^6.21.2 ; Json(l) parser
bblanchon/ArduinoJson@^6.21.3 ; Json(l) parser
https://github.com/fvanroie/lv_drivers
lib_ignore =