mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-27 21:26:43 +00:00
Merge branch 'HASwitchPlate:master' into master
This commit is contained in:
commit
319e073e68
4
.github/workflows/build.yaml
vendored
4
.github/workflows/build.yaml
vendored
@ -31,11 +31,11 @@ jobs:
|
|||||||
- out: dustinwatts
|
- out: dustinwatts
|
||||||
env: "freetouchdeck_4MB -e freetouchdeck_8MB -e esp32-touchdown"
|
env: "freetouchdeck_4MB -e freetouchdeck_8MB -e esp32-touchdown"
|
||||||
- out: elecrow
|
- out: elecrow
|
||||||
env: "esp32-terminal-rgb_16MB -e esp32-terminal-spi_16MB -e elecrow-s3-8048c070_4MB"
|
env: "esp32-terminal-rgb_16MB -e esp32-terminal-spi_16MB -e elecrow-s3-8048c050_4MB -e elecrow-s3-8048c070_4MB"
|
||||||
- out: globalsecurity
|
- out: globalsecurity
|
||||||
env: gs-t3e_16MB
|
env: gs-t3e_16MB
|
||||||
- out: guition
|
- out: guition
|
||||||
env: esp32-s3-4848s040_16MB
|
env: esp32-s3-4848s040_16MB -e guition-jc4827w543c_4MB
|
||||||
- out: lanbon
|
- out: lanbon
|
||||||
env: lanbon_l8
|
env: lanbon_l8
|
||||||
- out: lilygo-ttgo
|
- out: lilygo-ttgo
|
||||||
|
@ -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.32.8/ace.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.32.8/theme-monokai.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.32.8/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.35.4/ace.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.35.4/theme-monokai.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.35.4/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>
|
@ -86,13 +86,13 @@
|
|||||||
"ssid": "SSID"
|
"ssid": "SSID"
|
||||||
},
|
},
|
||||||
"wg": {
|
"wg": {
|
||||||
"title": "WireGuard Settings",
|
"title": "Ajustes de WireGuard",
|
||||||
"btn": "WireGuard Settings",
|
"btn": "Ajustes de WireGuard",
|
||||||
"vpnip": "VPN IP",
|
"vpnip": "IP VPN",
|
||||||
"privkey": "Private Key",
|
"privkey": "Clave Privada",
|
||||||
"host": "Remote IP",
|
"host": "IP Remota",
|
||||||
"port": "Remote Port",
|
"port": "Puerto Remoto",
|
||||||
"pubkey": "Remote Public Key"
|
"pubkey": "Clave Pública Remota"
|
||||||
},
|
},
|
||||||
"mqtt": {
|
"mqtt": {
|
||||||
"title": "Ajustes MQTT",
|
"title": "Ajustes MQTT",
|
||||||
|
@ -86,13 +86,13 @@
|
|||||||
"ssid": "SSID"
|
"ssid": "SSID"
|
||||||
},
|
},
|
||||||
"wg": {
|
"wg": {
|
||||||
"title": "WireGuard Settings",
|
"title": "Paramètres WireGuard",
|
||||||
"btn": "WireGuard Settings",
|
"btn": "Paramètres WireGuard",
|
||||||
"vpnip": "VPN IP",
|
"vpnip": "IP du VPN",
|
||||||
"privkey": "Private Key",
|
"privkey": "Clé Privée",
|
||||||
"host": "Remote IP",
|
"host": "Adresse IP distante",
|
||||||
"port": "Remote Port",
|
"port": "Port Distant",
|
||||||
"pubkey": "Remote Public Key"
|
"pubkey": "Clé publique distante"
|
||||||
},
|
},
|
||||||
"mqtt": {
|
"mqtt": {
|
||||||
"title": "Paramètres MQTT",
|
"title": "Paramètres MQTT",
|
||||||
|
File diff suppressed because one or more lines are too long
@ -211,7 +211,7 @@ typedef void* lv_group_user_data_t;
|
|||||||
#define LV_USE_FILESYSTEM 1
|
#define LV_USE_FILESYSTEM 1
|
||||||
#if LV_USE_FILESYSTEM
|
#if LV_USE_FILESYSTEM
|
||||||
/*Declare the type of the user data of file system drivers (can be e.g. `void *`, `int`, `struct`)*/
|
/*Declare the type of the user data of file system drivers (can be e.g. `void *`, `int`, `struct`)*/
|
||||||
typedef void* lv_fs_drv_user_data_t;
|
typedef const char* lv_fs_drv_user_data_t;
|
||||||
|
|
||||||
/*File system interface*/
|
/*File system interface*/
|
||||||
#ifndef LV_USE_FS_IF
|
#ifndef LV_USE_FS_IF
|
||||||
@ -229,7 +229,7 @@ typedef void* lv_fs_drv_user_data_t;
|
|||||||
//# define LV_FS_IF_SPIFFS '\0' // no internal esp Flash
|
//# define LV_FS_IF_SPIFFS '\0' // no internal esp Flash
|
||||||
#endif
|
#endif
|
||||||
#endif /*LV_USE_FS_IF*/
|
#endif /*LV_USE_FS_IF*/
|
||||||
#if HASP_TARGET_ARDUINO
|
#if HASP_TARGET_ARDUINO && !defined(LV_FS_PC_PATH)
|
||||||
#define LV_FS_PC_PATH "/littlefs"
|
#define LV_FS_PC_PATH "/littlefs"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -14,6 +14,13 @@
|
|||||||
/*********************
|
/*********************
|
||||||
* DEFINES
|
* DEFINES
|
||||||
*********************/
|
*********************/
|
||||||
|
#ifndef LV_FS_PC_PATH
|
||||||
|
#ifndef WIN32
|
||||||
|
#define LV_FS_PC_PATH "./" /*Project root*/
|
||||||
|
#else
|
||||||
|
#define LV_FS_PC_PATH ".\\" /*Project root*/
|
||||||
|
#endif
|
||||||
|
#endif /*LV_FS_PATH*/
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* TYPEDEFS
|
* TYPEDEFS
|
||||||
@ -26,8 +33,8 @@
|
|||||||
void lv_fs_if_fatfs_init(void);
|
void lv_fs_if_fatfs_init(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if LV_FS_IF_PC != '\0'
|
#if LV_FS_IF_PC != '\0' || LV_FS_IF_SD != '\0'
|
||||||
void lv_fs_if_pc_init(void);
|
void lv_fs_if_pc_init(char letter, const char* path);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
@ -52,9 +59,12 @@ void lv_fs_if_init(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if LV_FS_IF_PC != '\0'
|
#if LV_FS_IF_PC != '\0'
|
||||||
lv_fs_if_pc_init();
|
lv_fs_if_pc_init(LV_FS_IF_PC, LV_FS_PC_PATH);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if LV_FS_IF_SD != '\0'
|
||||||
|
lv_fs_if_pc_init(LV_FS_IF_SD, LV_FS_SD_PATH);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
|
@ -19,17 +19,6 @@
|
|||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*********************
|
|
||||||
* DEFINES
|
|
||||||
*********************/
|
|
||||||
#ifndef LV_FS_PC_PATH
|
|
||||||
#ifndef WIN32
|
|
||||||
#define LV_FS_PC_PATH "./" /*Projet root*/
|
|
||||||
#else
|
|
||||||
#define LV_FS_PC_PATH ".\\" /*Projet root*/
|
|
||||||
#endif
|
|
||||||
#endif /*LV_FS_PATH*/
|
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* TYPEDEFS
|
* TYPEDEFS
|
||||||
**********************/
|
**********************/
|
||||||
@ -77,7 +66,7 @@ static lv_fs_res_t fs_dir_close(lv_fs_drv_t* drv, void* dir_p);
|
|||||||
/**
|
/**
|
||||||
* Register a driver for the File system interface
|
* Register a driver for the File system interface
|
||||||
*/
|
*/
|
||||||
void lv_fs_if_pc_init(void)
|
void lv_fs_if_pc_init(char letter, const char* path)
|
||||||
{
|
{
|
||||||
/*---------------------------------------------------
|
/*---------------------------------------------------
|
||||||
* Register the file system interface in LittlevGL
|
* Register the file system interface in LittlevGL
|
||||||
@ -89,7 +78,7 @@ void lv_fs_if_pc_init(void)
|
|||||||
|
|
||||||
/*Set up fields...*/
|
/*Set up fields...*/
|
||||||
fs_drv.file_size = sizeof(file_t);
|
fs_drv.file_size = sizeof(file_t);
|
||||||
fs_drv.letter = LV_FS_IF_PC;
|
fs_drv.letter = letter;
|
||||||
fs_drv.open_cb = fs_open;
|
fs_drv.open_cb = fs_open;
|
||||||
fs_drv.close_cb = fs_close;
|
fs_drv.close_cb = fs_close;
|
||||||
fs_drv.read_cb = fs_read;
|
fs_drv.read_cb = fs_read;
|
||||||
@ -107,6 +96,8 @@ void lv_fs_if_pc_init(void)
|
|||||||
fs_drv.dir_open_cb = fs_dir_open;
|
fs_drv.dir_open_cb = fs_dir_open;
|
||||||
fs_drv.dir_read_cb = fs_dir_read;
|
fs_drv.dir_read_cb = fs_dir_read;
|
||||||
|
|
||||||
|
fs_drv.user_data = path;
|
||||||
|
|
||||||
lv_fs_drv_register(&fs_drv);
|
lv_fs_drv_register(&fs_drv);
|
||||||
|
|
||||||
// char cur_path[512] = "";
|
// char cur_path[512] = "";
|
||||||
@ -145,10 +136,10 @@ static lv_fs_res_t fs_open(lv_fs_drv_t* drv, void* file_p, const char* path, lv_
|
|||||||
|
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
char buf[256];
|
char buf[256];
|
||||||
sprintf(buf, LV_FS_PC_PATH "/%s", path);
|
sprintf(buf, "%s/%s", drv->user_data, path);
|
||||||
#else
|
#else
|
||||||
char buf[256];
|
char buf[256];
|
||||||
sprintf(buf, LV_FS_PC_PATH "\\%s", path);
|
sprintf(buf, "%s\\%s", drv->user_data, path);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LV_LOG_USER(buf);
|
LV_LOG_USER(buf);
|
||||||
@ -255,6 +246,7 @@ static lv_fs_res_t fs_size(lv_fs_drv_t* drv, void* file_p, uint32_t* size_p)
|
|||||||
|
|
||||||
return LV_FS_RES_OK;
|
return LV_FS_RES_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Give the position of the read write pointer
|
* Give the position of the read write pointer
|
||||||
* @param drv pointer to a driver where this function belongs
|
* @param drv pointer to a driver where this function belongs
|
||||||
@ -318,8 +310,8 @@ static lv_fs_res_t fs_rename(lv_fs_drv_t* drv, const char* oldname, const char*
|
|||||||
static char new[512];
|
static char new[512];
|
||||||
static char old[512];
|
static char old[512];
|
||||||
|
|
||||||
sprintf(old, LV_FS_PC_PATH "/%s", oldname);
|
sprintf(old, "%s/%s", drv->user_data, oldname);
|
||||||
sprintf(new, LV_FS_PC_PATH "/%s", newname);
|
sprintf(new, "%s/%s", drv->user_data, newname);
|
||||||
|
|
||||||
int r = rename(old, new);
|
int r = rename(old, new);
|
||||||
|
|
||||||
@ -365,7 +357,7 @@ static lv_fs_res_t fs_dir_open(lv_fs_drv_t* drv, void* dir_p, const char* path)
|
|||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
/*Make the path relative to the current directory (the projects root folder)*/
|
/*Make the path relative to the current directory (the projects root folder)*/
|
||||||
char buf[256];
|
char buf[256];
|
||||||
sprintf(buf, LV_FS_PC_PATH "/%s", path);
|
sprintf(buf, "%s/%s", drv->user_data, path);
|
||||||
if((d = opendir(buf)) == NULL) {
|
if((d = opendir(buf)) == NULL) {
|
||||||
return LV_FS_RES_FS_ERR;
|
return LV_FS_RES_FS_ERR;
|
||||||
} else {
|
} else {
|
||||||
@ -380,7 +372,7 @@ static lv_fs_res_t fs_dir_open(lv_fs_drv_t* drv, void* dir_p, const char* path)
|
|||||||
|
|
||||||
/*Make the path relative to the current directory (the projects root folder)*/
|
/*Make the path relative to the current directory (the projects root folder)*/
|
||||||
char buf[256];
|
char buf[256];
|
||||||
sprintf(buf, LV_FS_PC_PATH "\\%s\\*", path);
|
sprintf(buf, "%s\\%s\\*", drv->user_data, path);
|
||||||
|
|
||||||
strcpy(next_fn, "");
|
strcpy(next_fn, "");
|
||||||
d = FindFirstFile(buf, &fdata);
|
d = FindFirstFile(buf, &fdata);
|
||||||
|
@ -112,7 +112,7 @@ lib_deps =
|
|||||||
|
|
||||||
[arduinogfx]
|
[arduinogfx]
|
||||||
lib_deps =
|
lib_deps =
|
||||||
moononournation/GFX Library for Arduino@1.4.0 ; Update needs modification of custom PCA class
|
moononournation/GFX Library for Arduino@1.4.7 ; Update needs modification of custom PCA class
|
||||||
;git+https://github.com/moononournation/Arduino_GFX.git
|
;git+https://github.com/moononournation/Arduino_GFX.git
|
||||||
|
|
||||||
[tft_espi]
|
[tft_espi]
|
||||||
|
@ -78,6 +78,7 @@ extra_default_envs =
|
|||||||
; wt-86-32-3zw1
|
; wt-86-32-3zw1
|
||||||
; yeacreate-nscreen32
|
; yeacreate-nscreen32
|
||||||
; wz2432r028
|
; wz2432r028
|
||||||
|
; ws_esp32_s3_touch_lcd_4p3
|
||||||
;endregion
|
;endregion
|
||||||
|
|
||||||
;region -- Define your local COM ports for each environment ---
|
;region -- Define your local COM ports for each environment ---
|
||||||
|
@ -98,4 +98,8 @@ void custom_topic_payload(const char* topic, const char* payload, uint8_t source
|
|||||||
// LOG_VERBOSE(TAG_CUSTOM, "Handled custom message: %s => %s", topic, payload);
|
// LOG_VERBOSE(TAG_CUSTOM, "Handled custom message: %s => %s", topic, payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void custom_state_subtopic(const char* subtopic, const char* payload){
|
||||||
|
// Not used
|
||||||
|
}
|
||||||
|
|
||||||
#endif // HASP_USE_CUSTOM
|
#endif // HASP_USE_CUSTOM
|
||||||
|
@ -53,4 +53,9 @@ void custom_topic_payload(const char* topic, const char* payload, uint8_t source
|
|||||||
// Not used
|
// Not used
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void custom_state_subtopic(const char* subtopic, const char* payload){
|
||||||
|
// Not used
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif // HASP_USE_CUSTOM
|
#endif // HASP_USE_CUSTOM
|
@ -32,6 +32,11 @@ void custom_get_sensors(JsonDocument& doc);
|
|||||||
/* Receive custom topic & payload messages */
|
/* Receive custom topic & payload messages */
|
||||||
void custom_topic_payload(const char* topic, const char* payload, uint8_t source);
|
void custom_topic_payload(const char* topic, const char* payload, uint8_t source);
|
||||||
|
|
||||||
|
/* Get notified when a state message is sent out */
|
||||||
|
/* Can be used to send state changes through other means then MQTT, e.g. Serial2 */
|
||||||
|
/* https://github.com/HASwitchPlate/openHASP/issues/611 */
|
||||||
|
void custom_state_subtopic(const char* subtopic, const char* payload);
|
||||||
|
|
||||||
#endif // HASP_USE_CUSTOM
|
#endif // HASP_USE_CUSTOM
|
||||||
|
|
||||||
#endif // HASP_CUSTOM_H
|
#endif // HASP_CUSTOM_H
|
||||||
|
@ -85,6 +85,10 @@ void ArduinoGfx::init(int w, int h)
|
|||||||
/* More display class: https://github.com/moononournation/Arduino_GFX/wiki/Display-Class */
|
/* More display class: https://github.com/moononournation/Arduino_GFX/wiki/Display-Class */
|
||||||
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_type1_init_operations, sizeof(st7701_type1_init_operations));
|
st7701_type1_init_operations, sizeof(st7701_type1_init_operations));
|
||||||
|
#elif(TFT_WIDTH == 480) && (TFT_HEIGHT == 272) && defined(NV3041A_DRIVER)
|
||||||
|
Arduino_DataBus* bus = new Arduino_ESP32QSPI(TFT_CS, TFT_SCK, TFT_D0, TFT_D1, TFT_D2, TFT_D3);
|
||||||
|
Arduino_GFX* g = new Arduino_NV3041A(bus, TFT_RST, TFT_ROTATION, TFT_IPS);
|
||||||
|
tft = g;
|
||||||
#elif 1
|
#elif 1
|
||||||
/* Reset is not implemented in the panel */
|
/* Reset is not implemented in the panel */
|
||||||
if(TFT_RST != GFX_NOT_DEFINED) {
|
if(TFT_RST != GFX_NOT_DEFINED) {
|
||||||
@ -262,6 +266,116 @@ void IRAM_ATTR ArduinoGfx::flush_pixels(lv_disp_drv_t* disp, const lv_area_t* ar
|
|||||||
|
|
||||||
bool ArduinoGfx::is_driver_pin(uint8_t pin)
|
bool ArduinoGfx::is_driver_pin(uint8_t pin)
|
||||||
{
|
{
|
||||||
|
if(false // start condition is always needed
|
||||||
|
|
||||||
|
// Use individual checks instead of switch statement, as some case labels could be duplicated
|
||||||
|
#ifdef TFT_MOSI
|
||||||
|
|| (pin == TFT_MOSI)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_MISO
|
||||||
|
|| (pin == TFT_MISO)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_SCLK
|
||||||
|
|| (pin == TFT_SCLK)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_CS
|
||||||
|
|| (pin == TFT_CS)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_DC
|
||||||
|
|| (pin == TFT_DC)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_DE
|
||||||
|
|| (pin == TFT_DE)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_PCLK
|
||||||
|
|| (pin == TFT_PCLK)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_VSYNC
|
||||||
|
|| (pin == TFT_VSYNC)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_HSYNC
|
||||||
|
|| (pin == TFT_HSYNC)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_RST
|
||||||
|
|| (pin == TFT_RST)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_BUSY
|
||||||
|
|| (pin == TFT_BUSY)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_RD
|
||||||
|
|| (pin == TFT_RD)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_R0
|
||||||
|
|| (pin == TFT_R0)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_R1
|
||||||
|
|| (pin == TFT_R1)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_R2
|
||||||
|
|| (pin == TFT_R2)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_R3
|
||||||
|
|| (pin == TFT_R3)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_R4
|
||||||
|
|| (pin == TFT_R4)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_G0
|
||||||
|
|| (pin == TFT_G0)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_G1
|
||||||
|
|| (pin == TFT_G1)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_G2
|
||||||
|
|| (pin == TFT_G2)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_G3
|
||||||
|
|| (pin == TFT_G3)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_G4
|
||||||
|
|| (pin == TFT_G4)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_G5
|
||||||
|
|| (pin == TFT_G5)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_B0
|
||||||
|
|| (pin == TFT_B0)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_B1
|
||||||
|
|| (pin == TFT_B1)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_B2
|
||||||
|
|| (pin == TFT_B2)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_B3
|
||||||
|
|| (pin == TFT_B3)
|
||||||
|
#endif
|
||||||
|
#ifdef TFT_B4
|
||||||
|
|| (pin == TFT_B4)
|
||||||
|
#endif
|
||||||
|
#ifdef TOUCH_SDA
|
||||||
|
|| (pin == TOUCH_SDA)
|
||||||
|
#endif
|
||||||
|
#ifdef TOUCH_SCL
|
||||||
|
|| (pin == TOUCH_SCL)
|
||||||
|
#endif
|
||||||
|
#ifdef TOUCH_RST
|
||||||
|
|| (pin == TOUCH_RST)
|
||||||
|
#endif
|
||||||
|
#ifdef TOUCH_IRQ
|
||||||
|
|| (pin == TOUCH_IRQ)
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef ARDUINO_ARCH_ESP8266
|
||||||
|
#ifndef TFT_SPI_OVERLAP
|
||||||
|
if((pin >= 12) && (pin <= 14)) return true; // HSPI
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -299,6 +413,8 @@ const char* ArduinoGfx::get_tft_model()
|
|||||||
return "R61529";
|
return "R61529";
|
||||||
#elif defined(RM68140_DRIVER)
|
#elif defined(RM68140_DRIVER)
|
||||||
return "RM68140";
|
return "RM68140";
|
||||||
|
#elif defined(NV3041A_DRIVER)
|
||||||
|
return "NV3041A";
|
||||||
#else
|
#else
|
||||||
return "Other";
|
return "Other";
|
||||||
#endif
|
#endif
|
||||||
@ -336,6 +452,8 @@ uint32_t ArduinoGfx::get_tft_driver()
|
|||||||
return 0x61529;
|
return 0x61529;
|
||||||
#elif defined(RM68140_DRIVER)
|
#elif defined(RM68140_DRIVER)
|
||||||
return 0x68140;
|
return 0x68140;
|
||||||
|
#elif defined(NV3041A_DRIVER)
|
||||||
|
return 0x3041A;
|
||||||
#else
|
#else
|
||||||
return 0x0;
|
return 0x0;
|
||||||
#endif
|
#endif
|
||||||
|
@ -98,7 +98,7 @@ const char** my_map_create(const char* payload)
|
|||||||
{
|
{
|
||||||
// Reserve memory for JsonDocument
|
// Reserve memory for JsonDocument
|
||||||
// StaticJsonDocument<1024> map_doc;
|
// StaticJsonDocument<1024> map_doc;
|
||||||
size_t maxsize = (128u * ((strlen(payload) / 128) + 1)) + 256;
|
size_t maxsize = (128u * ((strlen(payload) / 128) + 1)) + 1024;
|
||||||
DynamicJsonDocument map_doc(maxsize);
|
DynamicJsonDocument map_doc(maxsize);
|
||||||
DeserializationError jsonError = deserializeJson(map_doc, payload);
|
DeserializationError jsonError = deserializeJson(map_doc, payload);
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ uint16_t dispatchSecondsToNextTeleperiod = 0;
|
|||||||
uint16_t dispatchSecondsToNextSensordata = 0;
|
uint16_t dispatchSecondsToNextSensordata = 0;
|
||||||
uint16_t dispatchSecondsToNextDiscovery = 0;
|
uint16_t dispatchSecondsToNextDiscovery = 0;
|
||||||
uint8_t nCommands = 0;
|
uint8_t nCommands = 0;
|
||||||
haspCommand_t commands[28];
|
haspCommand_t commands[29];
|
||||||
|
|
||||||
moodlight_t moodlight = {.brightness = 255};
|
moodlight_t moodlight = {.brightness = 255};
|
||||||
uint8_t saved_jsonl_page = 0;
|
uint8_t saved_jsonl_page = 0;
|
||||||
@ -52,7 +52,7 @@ uint8_t saved_jsonl_page = 0;
|
|||||||
*/
|
*/
|
||||||
void dispatch_state_subtopic(const char* subtopic, const char* payload)
|
void dispatch_state_subtopic(const char* subtopic, const char* payload)
|
||||||
{
|
{
|
||||||
#if HASP_USE_MQTT == 0 && HASP_USE_TASMOTA_CLIENT == 0
|
#if HASP_USE_MQTT == 0 && defined(HASP_USE_TASMOTA_CLIENT) && HASP_USE_TASMOTA_CLIENT > 0
|
||||||
LOG_TRACE(TAG_MSGR, F("%s => %s"), subtopic, payload);
|
LOG_TRACE(TAG_MSGR, F("%s => %s"), subtopic, payload);
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@ -74,11 +74,15 @@ void dispatch_state_subtopic(const char* subtopic, const char* payload)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HASP_USE_TASMOTA_CLIENT > 0
|
#if defined(HASP_USE_TASMOTA_CLIENT) && HASP_USE_TASMOTA_CLIENT > 0
|
||||||
slave_send_state(subtopic, payload);
|
slave_send_state(subtopic, payload);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(HASP_USE_CUSTOM) && HASP_USE_CUSTOM > 0
|
||||||
|
custom_state_subtopic(subtopic, payload);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void dispatch_state_eventid(const char* topic, hasp_event_t eventid)
|
void dispatch_state_eventid(const char* topic, hasp_event_t eventid)
|
||||||
@ -864,6 +868,46 @@ void dispatch_run_script(const char*, const char* payload, uint8_t source)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
void dispatch_fs(const char*, const char* payload, uint8_t source)
|
||||||
|
{
|
||||||
|
StaticJsonDocument<512> json;
|
||||||
|
|
||||||
|
// Note: Deserialization needs to be (const char *) so the objects WILL be copied
|
||||||
|
// this uses more memory but otherwise the mqtt receive buffer can get overwritten by the send buffer !!
|
||||||
|
DeserializationError jsonError = deserializeJson(json, payload);
|
||||||
|
// json.shrinkToFit();
|
||||||
|
|
||||||
|
if(!jsonError && json.is<JsonObject>()) { // Only JsonObject is valid
|
||||||
|
JsonVariant action;
|
||||||
|
|
||||||
|
const char* cmd = json["cmd"].as<const char*>();
|
||||||
|
const char* src = json["src"].as<const char*>();
|
||||||
|
const char* dst = json["dst"].as<const char*>();
|
||||||
|
int res = 0;
|
||||||
|
|
||||||
|
if(String(cmd) == "stat") {
|
||||||
|
res = filesystem_vfs_file_exists(src);
|
||||||
|
}
|
||||||
|
if(String(cmd) == "rm") {
|
||||||
|
res = filesystem_vfs_delete_file(src);
|
||||||
|
}
|
||||||
|
if(String(cmd) == "cp") {
|
||||||
|
res = filesystem_vfs_copy_file(src, dst);
|
||||||
|
}
|
||||||
|
if(String(cmd) == "ls") {
|
||||||
|
filesystem_list_path(src);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(res) {
|
||||||
|
LOG_WARNING(TAG_MSGR, "Succes");
|
||||||
|
} else {
|
||||||
|
LOG_WARNING(TAG_MSGR, "Failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
#if HASP_TARGET_PC
|
#if HASP_TARGET_PC
|
||||||
static void shell_command_thread(char* cmdline)
|
static void shell_command_thread(char* cmdline)
|
||||||
{
|
{
|
||||||
@ -1318,9 +1362,10 @@ void dispatch_get_discovery_data(JsonDocument& doc)
|
|||||||
JsonArray relay = doc.createNestedArray(F("power"));
|
JsonArray relay = doc.createNestedArray(F("power"));
|
||||||
JsonArray led = doc.createNestedArray(F("light"));
|
JsonArray led = doc.createNestedArray(F("light"));
|
||||||
JsonArray dimmer = doc.createNestedArray(F("dim"));
|
JsonArray dimmer = doc.createNestedArray(F("dim"));
|
||||||
|
JsonArray event = doc.createNestedArray(F("event"));
|
||||||
|
|
||||||
#if HASP_USE_GPIO > 0
|
#if HASP_USE_GPIO > 0
|
||||||
gpio_discovery(input, relay, led, dimmer);
|
gpio_discovery(input, relay, led, dimmer, event);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1592,6 +1637,7 @@ void dispatchSetup()
|
|||||||
dispatch_add_command(PSTR("sensors"), dispatch_send_sensordata);
|
dispatch_add_command(PSTR("sensors"), dispatch_send_sensordata);
|
||||||
dispatch_add_command(PSTR("theme"), dispatch_theme);
|
dispatch_add_command(PSTR("theme"), dispatch_theme);
|
||||||
dispatch_add_command(PSTR("run"), dispatch_run_script);
|
dispatch_add_command(PSTR("run"), dispatch_run_script);
|
||||||
|
// dispatch_add_command(PSTR("fs"), dispatch_fs);
|
||||||
#if HASP_TARGET_PC
|
#if HASP_TARGET_PC
|
||||||
dispatch_add_command(PSTR("shell"), dispatch_shell_execute);
|
dispatch_add_command(PSTR("shell"), dispatch_shell_execute);
|
||||||
#endif
|
#endif
|
||||||
|
@ -197,23 +197,26 @@ bool Parser::is_only_digits(const char* s)
|
|||||||
return strlen(s) == digits;
|
return strlen(s) == digits;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Parser::format_bytes(size_t filesize, char* buf, size_t len)
|
int Parser::format_bytes(uint64_t filesize, char* buf, size_t len)
|
||||||
{
|
{
|
||||||
if(filesize < D_FILE_SIZE_DIVIDER) return snprintf_P(buf, len, PSTR("%d " D_FILE_SIZE_BYTES), filesize);
|
const char* suffix[] = {D_FILE_SIZE_BYTES, D_FILE_SIZE_KILOBYTES, D_FILE_SIZE_MEGABYTES, D_FILE_SIZE_GIGABYTES,
|
||||||
filesize = filesize * 100;
|
D_FILE_SIZE_TERABYTES};
|
||||||
|
uint32_t factor;
|
||||||
|
uint16_t remainder = 0;
|
||||||
|
uint8_t i = 0;
|
||||||
|
uint8_t last_index = (sizeof(suffix) / sizeof(suffix[0])) - 1;
|
||||||
|
|
||||||
filesize = filesize / D_FILE_SIZE_DIVIDER; // multiply by 100 for 2 decimal place
|
while(filesize >= D_FILE_SIZE_DIVIDER && i < last_index) {
|
||||||
if(filesize < D_FILE_SIZE_DIVIDER * 100)
|
i += 1;
|
||||||
return snprintf_P(buf, len, PSTR("%d" D_DECIMAL_POINT "%02d " D_FILE_SIZE_KILOBYTES), filesize / 100,
|
remainder = filesize % D_FILE_SIZE_DIVIDER;
|
||||||
filesize % 100);
|
filesize /= D_FILE_SIZE_DIVIDER;
|
||||||
|
}
|
||||||
|
|
||||||
filesize = filesize / D_FILE_SIZE_DIVIDER; // multiply by 100 for 2 decimal place
|
factor = (uint32_t)filesize;
|
||||||
if(filesize < D_FILE_SIZE_DIVIDER * 100)
|
if(i == 0) return snprintf_P(buf, len, PSTR("%u %s"), factor, suffix[i]);
|
||||||
return snprintf_P(buf, len, PSTR("%d" D_DECIMAL_POINT "%02d " D_FILE_SIZE_MEGABYTES), filesize / 100,
|
|
||||||
filesize % 100);
|
|
||||||
|
|
||||||
return snprintf_P(buf, len, PSTR("%d" D_DECIMAL_POINT "%02d " D_FILE_SIZE_GIGABYTES), filesize / 100,
|
remainder = remainder * 100 / D_FILE_SIZE_DIVIDER;
|
||||||
filesize % 100);
|
return snprintf_P(buf, len, PSTR("%u" D_DECIMAL_POINT "%02u %s"), factor, remainder, suffix[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t Parser::get_action_id(const char* action)
|
uint8_t Parser::get_action_id(const char* action)
|
||||||
|
@ -19,7 +19,7 @@ class Parser {
|
|||||||
static bool is_true(const char* s);
|
static bool is_true(const char* s);
|
||||||
static bool is_true(JsonVariant json);
|
static bool is_true(JsonVariant json);
|
||||||
static bool is_only_digits(const char* s);
|
static bool is_only_digits(const char* s);
|
||||||
static int format_bytes(size_t filesize, char* buf, size_t len);
|
static int format_bytes(uint64_t filesize, char* buf, size_t len);
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef ARDUINO
|
#ifndef ARDUINO
|
||||||
|
@ -24,6 +24,10 @@ void task_every_second_cb(lv_task_t* task)
|
|||||||
{
|
{
|
||||||
haspEverySecond(); // sleep timer & statusupdate
|
haspEverySecond(); // sleep timer & statusupdate
|
||||||
|
|
||||||
|
#if HASP_MQTT_TELNET > 0
|
||||||
|
mqttEverySecond();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if HASP_USE_TELNET > 0
|
#if HASP_USE_TELNET > 0
|
||||||
telnetEverySecond();
|
telnetEverySecond();
|
||||||
#endif
|
#endif
|
||||||
|
@ -180,7 +180,7 @@ void filesystemList()
|
|||||||
#else
|
#else
|
||||||
if(!HASP_FS.begin(true)) { // default vfs path: /littlefs
|
if(!HASP_FS.begin(true)) { // default vfs path: /littlefs
|
||||||
#endif
|
#endif
|
||||||
LOG_ERROR(TAG_FILE, F("Flash file system not mouted."));
|
LOG_ERROR(TAG_FILE, F("Flash file system not mounted."));
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
LOG_VERBOSE(TAG_FILE, F("Listing files on the internal flash:"));
|
LOG_VERBOSE(TAG_FILE, F("Listing files on the internal flash:"));
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#define D_FILE_SIZE_KILOBYTES "KiB"
|
#define D_FILE_SIZE_KILOBYTES "KiB"
|
||||||
#define D_FILE_SIZE_MEGABYTES "MiB"
|
#define D_FILE_SIZE_MEGABYTES "MiB"
|
||||||
#define D_FILE_SIZE_GIGABYTES "GiB"
|
#define D_FILE_SIZE_GIGABYTES "GiB"
|
||||||
|
#define D_FILE_SIZE_TERABYTES "TiB"
|
||||||
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
||||||
#define D_DECIMAL_POINT "." // decimal comma or point
|
#define D_DECIMAL_POINT "." // decimal comma or point
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#define D_FILE_SIZE_KILOBYTES "KiB"
|
#define D_FILE_SIZE_KILOBYTES "KiB"
|
||||||
#define D_FILE_SIZE_MEGABYTES "MiB"
|
#define D_FILE_SIZE_MEGABYTES "MiB"
|
||||||
#define D_FILE_SIZE_GIGABYTES "GiB"
|
#define D_FILE_SIZE_GIGABYTES "GiB"
|
||||||
|
#define D_FILE_SIZE_TERABYTES "TiB"
|
||||||
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
||||||
#define D_DECIMAL_POINT "," // decimal comma or point
|
#define D_DECIMAL_POINT "," // decimal comma or point
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#define D_FILE_SIZE_KILOBYTES "KiB"
|
#define D_FILE_SIZE_KILOBYTES "KiB"
|
||||||
#define D_FILE_SIZE_MEGABYTES "MiB"
|
#define D_FILE_SIZE_MEGABYTES "MiB"
|
||||||
#define D_FILE_SIZE_GIGABYTES "GiB"
|
#define D_FILE_SIZE_GIGABYTES "GiB"
|
||||||
|
#define D_FILE_SIZE_TERABYTES "TiB"
|
||||||
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
||||||
#define D_DECIMAL_POINT "." // decimal comma or point
|
#define D_DECIMAL_POINT "." // decimal comma or point
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
#define D_NO "No" // New
|
#define D_NO "No" // New
|
||||||
|
|
||||||
#define D_ERROR_OUT_OF_MEMORY "Memory llena"
|
#define D_ERROR_OUT_OF_MEMORY "Memory llena"
|
||||||
#define D_ERROR_UNKNOWN "Unknown error"
|
#define D_ERROR_UNKNOWN "Error desconocido"
|
||||||
|
|
||||||
#define D_CONFIG_NOT_CHANGED "No hay cambios en la configuración"
|
#define D_CONFIG_NOT_CHANGED "No hay cambios en la configuración"
|
||||||
#define D_CONFIG_CHANGED "Configuración cambiada"
|
#define D_CONFIG_CHANGED "Configuración cambiada"
|
||||||
@ -30,6 +30,7 @@
|
|||||||
#define D_FILE_SIZE_KILOBYTES "KiB" // new
|
#define D_FILE_SIZE_KILOBYTES "KiB" // new
|
||||||
#define D_FILE_SIZE_MEGABYTES "MiB" // new
|
#define D_FILE_SIZE_MEGABYTES "MiB" // new
|
||||||
#define D_FILE_SIZE_GIGABYTES "GiB" // new
|
#define D_FILE_SIZE_GIGABYTES "GiB" // new
|
||||||
|
#define D_FILE_SIZE_TERABYTES "TiB"
|
||||||
#define D_FILE_SIZE_DIVIDER 1024 // new, kibi or kilo bytes
|
#define D_FILE_SIZE_DIVIDER 1024 // new, kibi or kilo bytes
|
||||||
#define D_DECIMAL_POINT "," // new, decimal comma or point
|
#define D_DECIMAL_POINT "," // new, decimal comma or point
|
||||||
|
|
||||||
@ -127,7 +128,7 @@
|
|||||||
#define D_HTTP_HTTP_SETTINGS "Ajustes HTTP"
|
#define D_HTTP_HTTP_SETTINGS "Ajustes HTTP"
|
||||||
#define D_HTTP_HTTP_SETTINGS "Ajustes FTP"
|
#define D_HTTP_HTTP_SETTINGS "Ajustes FTP"
|
||||||
#define D_HTTP_WIFI_SETTINGS "Ajustes Wifi"
|
#define D_HTTP_WIFI_SETTINGS "Ajustes Wifi"
|
||||||
#define D_HTTP_WIREGUARD_SETTINGS "WireGuard Settings"
|
#define D_HTTP_GUI_SETTINGS "Ajustes WireGuard"
|
||||||
#define D_HTTP_MQTT_SETTINGS "Ajustes MQTT"
|
#define D_HTTP_MQTT_SETTINGS "Ajustes MQTT"
|
||||||
#define D_HTTP_GPIO_SETTINGS "Ajustes GPIO"
|
#define D_HTTP_GPIO_SETTINGS "Ajustes GPIO"
|
||||||
#define D_HTTP_MDNS_SETTINGS "Ajustes mDNS"
|
#define D_HTTP_MDNS_SETTINGS "Ajustes mDNS"
|
||||||
@ -202,8 +203,8 @@
|
|||||||
#define D_INFO_MAC_ADDRESS "Dirección MAC"
|
#define D_INFO_MAC_ADDRESS "Dirección MAC"
|
||||||
#define D_INFO_GATEWAY "Gateway"
|
#define D_INFO_GATEWAY "Gateway"
|
||||||
#define D_INFO_DNS_SERVER "Servidor DNS"
|
#define D_INFO_DNS_SERVER "Servidor DNS"
|
||||||
#define D_INFO_ENDPOINT_IP "Endpoint IP"
|
#define D_INFO_ENDPOINT_IP "IP de punto final"
|
||||||
#define D_INFO_ENDPOINT_PORT "Endpoint Port"
|
#define D_INFO_ENDPOINT_PORT "Puerto de punto final"
|
||||||
|
|
||||||
#define D_OOBE_MSG "Toque la pantalla para ajustar WiFi o conectarse a un punto de acceso"
|
#define D_OOBE_MSG "Toque la pantalla para ajustar WiFi o conectarse a un punto de acceso"
|
||||||
#define D_OOBE_SCAN_TO_CONNECT "Scanee para conectar"
|
#define D_OOBE_SCAN_TO_CONNECT "Scanee para conectar"
|
||||||
@ -216,8 +217,8 @@
|
|||||||
#define D_WIFI_RSSI_WEAK "Débil"
|
#define D_WIFI_RSSI_WEAK "Débil"
|
||||||
#define D_WIFI_RSSI_BAD "Muy baka"
|
#define D_WIFI_RSSI_BAD "Muy baka"
|
||||||
|
|
||||||
#define D_WG_INITIALIZED "Initialized"
|
#define D_WG_INITIALIZED "Inicializado"
|
||||||
#define D_WG_BAD_CONFIG "Missing or bad configuration"
|
#define D_WG_BAD_CONFIG "Falta o mala configuración"
|
||||||
|
|
||||||
#define D_GPIO_SWITCH "Switch"
|
#define D_GPIO_SWITCH "Switch"
|
||||||
#define D_GPIO_BUTTON "Botón"
|
#define D_GPIO_BUTTON "Botón"
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#define D_FILE_SIZE_KILOBYTES "Kio"
|
#define D_FILE_SIZE_KILOBYTES "Kio"
|
||||||
#define D_FILE_SIZE_MEGABYTES "Mio"
|
#define D_FILE_SIZE_MEGABYTES "Mio"
|
||||||
#define D_FILE_SIZE_GIGABYTES "Gio"
|
#define D_FILE_SIZE_GIGABYTES "Gio"
|
||||||
|
#define D_FILE_SIZE_TERABYTES "Tio"
|
||||||
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
||||||
#define D_DECIMAL_POINT "," // decimal comma or point
|
#define D_DECIMAL_POINT "," // decimal comma or point
|
||||||
|
|
||||||
@ -127,7 +128,7 @@
|
|||||||
#define D_HTTP_HTTP_SETTINGS "Paramètres HTTP"
|
#define D_HTTP_HTTP_SETTINGS "Paramètres HTTP"
|
||||||
#define D_HTTP_FTP_SETTINGS "Paramètres FTP"
|
#define D_HTTP_FTP_SETTINGS "Paramètres FTP"
|
||||||
#define D_HTTP_WIFI_SETTINGS "Paramètres Wifi"
|
#define D_HTTP_WIFI_SETTINGS "Paramètres Wifi"
|
||||||
#define D_HTTP_WIREGUARD_SETTINGS "WireGuard Settings"
|
#define D_HTTP_WIREGUARD_SETTINGS "Paramètres WireGuard"
|
||||||
#define D_HTTP_MQTT_SETTINGS "Paramètres MQTT"
|
#define D_HTTP_MQTT_SETTINGS "Paramètres MQTT"
|
||||||
#define D_HTTP_GPIO_SETTINGS "Paramètres GPIO"
|
#define D_HTTP_GPIO_SETTINGS "Paramètres GPIO"
|
||||||
#define D_HTTP_MDNS_SETTINGS "Paramètres mDNS"
|
#define D_HTTP_MDNS_SETTINGS "Paramètres mDNS"
|
||||||
@ -202,8 +203,8 @@
|
|||||||
#define D_INFO_MAC_ADDRESS "Adresse MAC"
|
#define D_INFO_MAC_ADDRESS "Adresse MAC"
|
||||||
#define D_INFO_GATEWAY "Passerelle"
|
#define D_INFO_GATEWAY "Passerelle"
|
||||||
#define D_INFO_DNS_SERVER "Serveur DNS"
|
#define D_INFO_DNS_SERVER "Serveur DNS"
|
||||||
#define D_INFO_ENDPOINT_IP "Endpoint IP"
|
#define D_INFO_ENDPOINT_IP "Adresse IP du point final"
|
||||||
#define D_INFO_ENDPOINT_PORT "Endpoint Port"
|
#define D_INFO_ENDPOINT_IP "Port du point final"
|
||||||
|
|
||||||
#define D_OOBE_MSG "Touchez l'écran pour configurer le WiFi ou branchez ce point d'accès:"
|
#define D_OOBE_MSG "Touchez l'écran pour configurer le WiFi ou branchez ce point d'accès:"
|
||||||
#define D_OOBE_SCAN_TO_CONNECT "Scanner pour se connecter"
|
#define D_OOBE_SCAN_TO_CONNECT "Scanner pour se connecter"
|
||||||
@ -216,8 +217,8 @@
|
|||||||
#define D_WIFI_RSSI_WEAK "Faible"
|
#define D_WIFI_RSSI_WEAK "Faible"
|
||||||
#define D_WIFI_RSSI_BAD "Très mauvais"
|
#define D_WIFI_RSSI_BAD "Très mauvais"
|
||||||
|
|
||||||
#define D_WG_INITIALIZED "Initialized"
|
#define D_WG_INITIALIZED "Initialisé"
|
||||||
#define D_WG_BAD_CONFIG "Missing or bad configuration"
|
#define D_WG_BAD_CONFIG "Configuration manquante ou incorrecte"
|
||||||
|
|
||||||
#define D_GPIO_SWITCH "Interrupteur"
|
#define D_GPIO_SWITCH "Interrupteur"
|
||||||
#define D_GPIO_BUTTON "Bouton"
|
#define D_GPIO_BUTTON "Bouton"
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#define D_FILE_SIZE_KILOBYTES "KiB"
|
#define D_FILE_SIZE_KILOBYTES "KiB"
|
||||||
#define D_FILE_SIZE_MEGABYTES "MiB"
|
#define D_FILE_SIZE_MEGABYTES "MiB"
|
||||||
#define D_FILE_SIZE_GIGABYTES "GiB"
|
#define D_FILE_SIZE_GIGABYTES "GiB"
|
||||||
|
#define D_FILE_SIZE_TERABYTES "TiB"
|
||||||
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
||||||
#define D_DECIMAL_POINT "." // decimal comma or point
|
#define D_DECIMAL_POINT "." // decimal comma or point
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#define D_FILE_SIZE_KILOBYTES "KiB"
|
#define D_FILE_SIZE_KILOBYTES "KiB"
|
||||||
#define D_FILE_SIZE_MEGABYTES "MiB"
|
#define D_FILE_SIZE_MEGABYTES "MiB"
|
||||||
#define D_FILE_SIZE_GIGABYTES "GiB"
|
#define D_FILE_SIZE_GIGABYTES "GiB"
|
||||||
|
#define D_FILE_SIZE_TERABYTES "TiB"
|
||||||
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
||||||
#define D_DECIMAL_POINT "," // decimal comma or point
|
#define D_DECIMAL_POINT "," // decimal comma or point
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#define D_FILE_SIZE_KILOBYTES "KiB"
|
#define D_FILE_SIZE_KILOBYTES "KiB"
|
||||||
#define D_FILE_SIZE_MEGABYTES "MiB"
|
#define D_FILE_SIZE_MEGABYTES "MiB"
|
||||||
#define D_FILE_SIZE_GIGABYTES "GiB"
|
#define D_FILE_SIZE_GIGABYTES "GiB"
|
||||||
|
#define D_FILE_SIZE_TERABYTES "TiB"
|
||||||
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
||||||
#define D_DECIMAL_POINT "." // decimal comma or point
|
#define D_DECIMAL_POINT "." // decimal comma or point
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#define D_FILE_SIZE_KILOBYTES "KiB" // new
|
#define D_FILE_SIZE_KILOBYTES "KiB" // new
|
||||||
#define D_FILE_SIZE_MEGABYTES "MiB" // new
|
#define D_FILE_SIZE_MEGABYTES "MiB" // new
|
||||||
#define D_FILE_SIZE_GIGABYTES "GiB" // new
|
#define D_FILE_SIZE_GIGABYTES "GiB" // new
|
||||||
|
#define D_FILE_SIZE_TERABYTES "TiB"
|
||||||
#define D_FILE_SIZE_DIVIDER 1024 // new, kibi or kilo bytes
|
#define D_FILE_SIZE_DIVIDER 1024 // new, kibi or kilo bytes
|
||||||
#define D_DECIMAL_POINT "." // new, decimal comma or point
|
#define D_DECIMAL_POINT "." // new, decimal comma or point
|
||||||
|
|
||||||
@ -127,7 +128,7 @@
|
|||||||
#define D_HTTP_HTTP_SETTINGS "Configurar HTTP"
|
#define D_HTTP_HTTP_SETTINGS "Configurar HTTP"
|
||||||
#define D_HTTP_FTP_SETTINGS "Configurar FTP"
|
#define D_HTTP_FTP_SETTINGS "Configurar FTP"
|
||||||
#define D_HTTP_WIFI_SETTINGS "Configurar Wifi"
|
#define D_HTTP_WIFI_SETTINGS "Configurar Wifi"
|
||||||
#define D_HTTP_WIREGUARD_SETTINGS "WireGuard Settings"
|
#define D_HTTP_WIREGUARD_SETTINGS "Configurar WireGuard"
|
||||||
#define D_HTTP_MQTT_SETTINGS "Configurar MQTT"
|
#define D_HTTP_MQTT_SETTINGS "Configurar MQTT"
|
||||||
#define D_HTTP_GPIO_SETTINGS "Configurar GPIO"
|
#define D_HTTP_GPIO_SETTINGS "Configurar GPIO"
|
||||||
#define D_HTTP_MDNS_SETTINGS "Configurar mDNS"
|
#define D_HTTP_MDNS_SETTINGS "Configurar mDNS"
|
||||||
@ -216,8 +217,8 @@
|
|||||||
#define D_WIFI_RSSI_BAD "Muito baixo"
|
#define D_WIFI_RSSI_BAD "Muito baixo"
|
||||||
#define D_WIFI_RSSI_FAIR "Decente"
|
#define D_WIFI_RSSI_FAIR "Decente"
|
||||||
|
|
||||||
#define D_WG_INITIALIZED "Initialized"
|
#define D_WG_INITIALIZED "Inicializado"
|
||||||
#define D_WG_BAD_CONFIG "Missing or bad configuration"
|
#define D_WG_BAD_CONFIG "Configuração ausente ou ruim"
|
||||||
|
|
||||||
#define D_GPIO_SWITCH "Interruptor"
|
#define D_GPIO_SWITCH "Interruptor"
|
||||||
#define D_GPIO_BUTTON "Botão"
|
#define D_GPIO_BUTTON "Botão"
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#define D_FILE_SIZE_KILOBYTES "KiB"
|
#define D_FILE_SIZE_KILOBYTES "KiB"
|
||||||
#define D_FILE_SIZE_MEGABYTES "MiB"
|
#define D_FILE_SIZE_MEGABYTES "MiB"
|
||||||
#define D_FILE_SIZE_GIGABYTES "GiB"
|
#define D_FILE_SIZE_GIGABYTES "GiB"
|
||||||
|
#define D_FILE_SIZE_TERABYTES "TiB"
|
||||||
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
||||||
#define D_DECIMAL_POINT "." // decimal comma or point
|
#define D_DECIMAL_POINT "." // decimal comma or point
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#define D_FILE_SIZE_KILOBYTES "KiB"
|
#define D_FILE_SIZE_KILOBYTES "KiB"
|
||||||
#define D_FILE_SIZE_MEGABYTES "MiB"
|
#define D_FILE_SIZE_MEGABYTES "MiB"
|
||||||
#define D_FILE_SIZE_GIGABYTES "GiB"
|
#define D_FILE_SIZE_GIGABYTES "GiB"
|
||||||
|
#define D_FILE_SIZE_TERABYTES "TiB"
|
||||||
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
#define D_FILE_SIZE_DIVIDER 1024 // kibi or kilo bytes
|
||||||
#define D_DECIMAL_POINT "." // decimal comma or point
|
#define D_DECIMAL_POINT "." // decimal comma or point
|
||||||
|
|
||||||
|
@ -210,6 +210,10 @@ IRAM_ATTR void loop()
|
|||||||
/* Runs Every Second */
|
/* Runs Every Second */
|
||||||
haspEverySecond(); // sleep timer & statusupdate
|
haspEverySecond(); // sleep timer & statusupdate
|
||||||
|
|
||||||
|
#if HASP_USE_MQTT > 0
|
||||||
|
mqttEverySecond();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if HASP_USE_FTP > 0
|
#if HASP_USE_FTP > 0
|
||||||
ftpEverySecond();
|
ftpEverySecond();
|
||||||
#endif
|
#endif
|
||||||
|
@ -18,6 +18,7 @@ typedef enum {
|
|||||||
|
|
||||||
void mqttSetup();
|
void mqttSetup();
|
||||||
IRAM_ATTR void mqttLoop();
|
IRAM_ATTR void mqttLoop();
|
||||||
|
void mqttEverySecond();
|
||||||
void mqttEvery5Seconds(bool wifiIsConnected);
|
void mqttEvery5Seconds(bool wifiIsConnected);
|
||||||
void mqttStart();
|
void mqttStart();
|
||||||
void mqttStop();
|
void mqttStop();
|
||||||
|
@ -71,7 +71,7 @@ bool last_mqtt_state = false;
|
|||||||
bool current_mqtt_state = false;
|
bool current_mqtt_state = false;
|
||||||
uint16_t mqtt_reconnect_counter = 0;
|
uint16_t mqtt_reconnect_counter = 0;
|
||||||
|
|
||||||
void mqtt_run_scripts()
|
static inline void mqtt_run_scripts()
|
||||||
{
|
{
|
||||||
if(last_mqtt_state != current_mqtt_state) {
|
if(last_mqtt_state != current_mqtt_state) {
|
||||||
// mqtt_message_t data;
|
// mqtt_message_t data;
|
||||||
@ -104,8 +104,8 @@ void mqtt_run_scripts()
|
|||||||
void mqtt_disconnected()
|
void mqtt_disconnected()
|
||||||
{
|
{
|
||||||
current_mqtt_state = false; // now we are disconnected
|
current_mqtt_state = false; // now we are disconnected
|
||||||
// mqtt_run_scripts();
|
|
||||||
mqtt_reconnect_counter++;
|
mqtt_reconnect_counter++;
|
||||||
|
// mqtt_run_scripts(); // must happen in LVGL loop
|
||||||
}
|
}
|
||||||
|
|
||||||
void mqtt_connected()
|
void mqtt_connected()
|
||||||
@ -115,7 +115,7 @@ void mqtt_connected()
|
|||||||
current_mqtt_state = true; // now we are connected
|
current_mqtt_state = true; // now we are connected
|
||||||
LOG_VERBOSE(TAG_MQTT, F("%s"), current_mqtt_state ? PSTR(D_SERVICE_CONNECTED) : PSTR(D_SERVICE_DISCONNECTED));
|
LOG_VERBOSE(TAG_MQTT, F("%s"), current_mqtt_state ? PSTR(D_SERVICE_CONNECTED) : PSTR(D_SERVICE_DISCONNECTED));
|
||||||
}
|
}
|
||||||
// mqtt_run_scripts();
|
// mqtt_run_scripts(); // must happen in LVGL loop
|
||||||
}
|
}
|
||||||
|
|
||||||
int mqttPublish(const char* topic, const char* payload, size_t len, bool retain)
|
int mqttPublish(const char* topic, const char* payload, size_t len, bool retain)
|
||||||
@ -337,7 +337,7 @@ String mqttGetTopic(Preferences preferences, String subtopic, String key, String
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void mqttParseTopic(String *topic, String subtopic, bool add_slash)
|
void mqttParseTopic(String* topic, String subtopic, bool add_slash)
|
||||||
{
|
{
|
||||||
|
|
||||||
topic->replace(F("%hostname%"), haspDevice.get_hostname());
|
topic->replace(F("%hostname%"), haspDevice.get_hostname());
|
||||||
@ -509,10 +509,14 @@ IRAM_ATTR void mqttLoop(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mqttEvery5Seconds(bool networkIsConnected)
|
void mqttEverySecond()
|
||||||
{
|
{
|
||||||
mqtt_run_scripts();
|
mqtt_run_scripts();
|
||||||
// if(mqttEnabled && networkIsConnected && !mqttClientConnected) {
|
}
|
||||||
|
|
||||||
|
void mqttEvery5Seconds(bool networkIsConnected)
|
||||||
|
{
|
||||||
|
// if(mqttEnabled && networkIsConnected && !current_mqtt_state) {
|
||||||
// LOG_TRACE(TAG_MQTT, F(D_MQTT_RECONNECTING));
|
// LOG_TRACE(TAG_MQTT, F(D_MQTT_RECONNECTING));
|
||||||
// mqttStart();
|
// mqttStart();
|
||||||
// }
|
// }
|
||||||
|
@ -3,8 +3,6 @@
|
|||||||
|
|
||||||
/* Multi threaded asynchronous paho client */
|
/* Multi threaded asynchronous paho client */
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#include "hasp_conf.h"
|
#include "hasp_conf.h"
|
||||||
|
|
||||||
#if HASP_USE_MQTT_ASYNC > 0
|
#if HASP_USE_MQTT_ASYNC > 0
|
||||||
@ -438,7 +436,10 @@ void mqttSetup()
|
|||||||
mqttLwtTopic += MQTT_TOPIC_LWT;
|
mqttLwtTopic += MQTT_TOPIC_LWT;
|
||||||
}
|
}
|
||||||
|
|
||||||
IRAM_ATTR void mqttLoop(){};
|
IRAM_ATTR void mqttLoop() {};
|
||||||
|
|
||||||
|
void mqttEverySecond()
|
||||||
|
{}
|
||||||
|
|
||||||
void mqttEvery5Seconds(bool wifiIsConnected)
|
void mqttEvery5Seconds(bool wifiIsConnected)
|
||||||
{
|
{
|
||||||
|
@ -391,6 +391,9 @@ IRAM_ATTR void mqttLoop()
|
|||||||
if(rc == MQTTCLIENT_SUCCESS && message) mqtt_message_arrived(mqtt_client, topicName, topicLen, message);
|
if(rc == MQTTCLIENT_SUCCESS && message) mqtt_message_arrived(mqtt_client, topicName, topicLen, message);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void mqttEverySecond()
|
||||||
|
{}
|
||||||
|
|
||||||
void mqttEvery5Seconds(bool wifiIsConnected)
|
void mqttEvery5Seconds(bool wifiIsConnected)
|
||||||
{
|
{
|
||||||
if(!mqttIsConnected()) {
|
if(!mqttIsConnected()) {
|
||||||
|
@ -14,10 +14,10 @@
|
|||||||
|
|
||||||
#if defined(ARDUINO_ARCH_ESP32)
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
#include <WiFiClientSecure.h>
|
// #include <WiFiClientSecure.h>
|
||||||
WiFiClient mqttNetworkClient;
|
WiFiClient mqttNetworkClient;
|
||||||
// WiFiClientSecure mqttNetworkClient;
|
// WiFiClientSecure mqttNetworkClient;
|
||||||
extern const uint8_t rootca_crt_bundle_start[] asm("_binary_data_cert_x509_crt_bundle_bin_start");
|
// extern const uint8_t rootca_crt_bundle_start[] asm("_binary_data_cert_x509_crt_bundle_bin_start");
|
||||||
#elif defined(ARDUINO_ARCH_ESP8266)
|
#elif defined(ARDUINO_ARCH_ESP8266)
|
||||||
#include <ESP8266WiFi.h>
|
#include <ESP8266WiFi.h>
|
||||||
#include <EEPROM.h>
|
#include <EEPROM.h>
|
||||||
|
@ -835,7 +835,7 @@ hasp_gpio_config_t gpioGetPinConfig(uint8_t num)
|
|||||||
return gpioConfig[num];
|
return gpioConfig[num];
|
||||||
}
|
}
|
||||||
|
|
||||||
void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonArray& dimmer)
|
void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonArray& dimmer, JsonArray& event)
|
||||||
{
|
{
|
||||||
char description[20] = "";
|
char description[20] = "";
|
||||||
|
|
||||||
@ -849,6 +849,10 @@ void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonA
|
|||||||
relay.add(gpioConfig[i].pin);
|
relay.add(gpioConfig[i].pin);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case BUTTON ... TOUCH:
|
||||||
|
event.add(gpioConfig[i].pin);
|
||||||
|
break;
|
||||||
|
|
||||||
case hasp_gpio_type_t::HASP_DAC:
|
case hasp_gpio_type_t::HASP_DAC:
|
||||||
case hasp_gpio_type_t::LED: // Don't include the moodlight
|
case hasp_gpio_type_t::LED: // Don't include the moodlight
|
||||||
case hasp_gpio_type_t::SERIAL_DIMMER:
|
case hasp_gpio_type_t::SERIAL_DIMMER:
|
||||||
@ -857,8 +861,8 @@ void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonA
|
|||||||
dimmer.add(gpioConfig[i].pin);
|
dimmer.add(gpioConfig[i].pin);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// case BUTTON ... TOUCH:
|
||||||
case SWITCH:
|
case SWITCH:
|
||||||
case BUTTON ... TOUCH:
|
|
||||||
strcpy_P(description, PSTR("none"));
|
strcpy_P(description, PSTR("none"));
|
||||||
break;
|
break;
|
||||||
case BATTERY:
|
case BATTERY:
|
||||||
@ -950,8 +954,8 @@ void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonA
|
|||||||
strcpy_P(description, PSTR("unknown"));
|
strcpy_P(description, PSTR("unknown"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if((gpioConfig[i].type >= hasp_gpio_type_t::SWITCH && gpioConfig[i].type <= hasp_gpio_type_t::WINDOW) ||
|
if((gpioConfig[i].type >= hasp_gpio_type_t::SWITCH && gpioConfig[i].type <= hasp_gpio_type_t::WINDOW)) {
|
||||||
(gpioConfig[i].type >= hasp_gpio_type_t::BUTTON && gpioConfig[i].type <= hasp_gpio_type_t::TOUCH)) {
|
// || (gpioConfig[i].type >= hasp_gpio_type_t::BUTTON && gpioConfig[i].type <= hasp_gpio_type_t::TOUCH)) {
|
||||||
JsonArray arr = input[description];
|
JsonArray arr = input[description];
|
||||||
if(arr.isNull()) arr = input.createNestedArray(description);
|
if(arr.isNull()) arr = input.createNestedArray(description);
|
||||||
arr.add(gpioConfig[i].pin);
|
arr.add(gpioConfig[i].pin);
|
||||||
|
@ -47,7 +47,7 @@ bool gpio_set_pin_state(uint8_t pin, bool power, int32_t val);
|
|||||||
|
|
||||||
void gpio_set_moodlight(moodlight_t& moodlight);
|
void gpio_set_moodlight(moodlight_t& moodlight);
|
||||||
|
|
||||||
void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonArray& dimmer);
|
void gpio_discovery(JsonObject& input, JsonArray& relay, JsonArray& light, JsonArray& dimmer, JsonArray& event);
|
||||||
|
|
||||||
bool gpioSavePinConfig(uint8_t config_num, uint8_t pin, uint8_t type, uint8_t group, uint8_t pinfunc, bool inverted);
|
bool gpioSavePinConfig(uint8_t config_num, uint8_t pin, uint8_t type, uint8_t group, uint8_t pinfunc, bool inverted);
|
||||||
bool gpioIsSystemPin(uint8_t gpio);
|
bool gpioIsSystemPin(uint8_t gpio);
|
||||||
|
@ -45,7 +45,7 @@ build_flags =
|
|||||||
-D LV_ATTRIBUTE_FAST_MEM=IRAM_ATTR
|
-D LV_ATTRIBUTE_FAST_MEM=IRAM_ATTR
|
||||||
-D LV_ATTRIBUTE_TASK_HANDLER=IRAM_ATTR
|
-D LV_ATTRIBUTE_TASK_HANDLER=IRAM_ATTR
|
||||||
-D LV_USE_FS_IF=1
|
-D LV_USE_FS_IF=1
|
||||||
;-D LV_FS_PC_PATH="//littlefs" ; this needs to match the vfs mount pount
|
-D LV_FS_PC_PATH='"/littlefs"' ; this needs to match the vfs mount pount
|
||||||
; -- ArduinoJson build options ----------------------------
|
; -- ArduinoJson build options ----------------------------
|
||||||
-D ARDUINOJSON_ENABLE_PROGMEM=1 ; for PROGMEM arguments
|
-D ARDUINOJSON_ENABLE_PROGMEM=1 ; for PROGMEM arguments
|
||||||
; -- tft_espi build options ------------------------
|
; -- tft_espi build options ------------------------
|
||||||
|
@ -15,7 +15,7 @@ build_flags =
|
|||||||
-D LV_ATTRIBUTE_FAST_MEM=
|
-D LV_ATTRIBUTE_FAST_MEM=
|
||||||
-D LV_ATTRIBUTE_TASK_HANDLER=IRAM_ATTR
|
-D LV_ATTRIBUTE_TASK_HANDLER=IRAM_ATTR
|
||||||
-D LV_USE_FS_IF=1
|
-D LV_USE_FS_IF=1
|
||||||
;-D LV_FS_PC_PATH="//littlefs" ; this needs to match the vfs mount pount
|
-D LV_FS_PC_PATH='"/littlefs"' ; this needs to match the vfs mount pount
|
||||||
; -- ArduinoJson build options ----------------------------
|
; -- ArduinoJson build options ----------------------------
|
||||||
-D ARDUINOJSON_ENABLE_PROGMEM=1 ; for PROGMEM arguments
|
-D ARDUINOJSON_ENABLE_PROGMEM=1 ; for PROGMEM arguments
|
||||||
; -- tft_espi build options ------------------------
|
; -- tft_espi build options ------------------------
|
||||||
|
@ -81,9 +81,6 @@ extends = elecrow-esp32-s3-tft, flash_4mb
|
|||||||
|
|
||||||
build_flags =
|
build_flags =
|
||||||
-D HASP_MODEL="Elecrow WZ8048C070"
|
-D HASP_MODEL="Elecrow WZ8048C070"
|
||||||
-D HASP_LOG_LEVEL=LOG_LEVEL_WARNING
|
|
||||||
-D HASP_USE_CAPTIVE_PORTAL=0
|
|
||||||
; -D HASP_USE_CUSTOM=1
|
|
||||||
|
|
||||||
${elecrow-esp32-s3-tft.build_flags}
|
${elecrow-esp32-s3-tft.build_flags}
|
||||||
${elecrow-tft-common-pins.build_flags}
|
${elecrow-tft-common-pins.build_flags}
|
||||||
@ -127,9 +124,6 @@ extends = elecrow-esp32-s3-tft, flash_4mb
|
|||||||
|
|
||||||
build_flags =
|
build_flags =
|
||||||
-D HASP_MODEL="Elecrow WZ8048C050"
|
-D HASP_MODEL="Elecrow WZ8048C050"
|
||||||
-D HASP_LOG_LEVEL=LOG_LEVEL_WARNING
|
|
||||||
-D HASP_USE_CAPTIVE_PORTAL=0
|
|
||||||
; -D HASP_USE_CUSTOM=1
|
|
||||||
|
|
||||||
${elecrow-esp32-s3-tft.build_flags}
|
${elecrow-esp32-s3-tft.build_flags}
|
||||||
|
|
||||||
|
@ -76,6 +76,10 @@ build_flags =
|
|||||||
-D I2C_TOUCH_FREQUENCY=400000
|
-D I2C_TOUCH_FREQUENCY=400000
|
||||||
-D I2C_TOUCH_ADDRESS=0x5D ; or 0x14
|
-D I2C_TOUCH_ADDRESS=0x5D ; or 0x14
|
||||||
-D I2C_TOUCH_PORT=1
|
-D I2C_TOUCH_PORT=1
|
||||||
|
; USB GPIO - Only need to define these so that the pins do not
|
||||||
|
; show up in the list of available GPIO
|
||||||
|
-D USB_TXD=43
|
||||||
|
-D USB_RXD=44
|
||||||
;endregion
|
;endregion
|
||||||
|
|
||||||
lib_deps =
|
lib_deps =
|
||||||
|
59
user_setups/esp32s3/guition-jc4827w543.ini
Normal file
59
user_setups/esp32s3/guition-jc4827w543.ini
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
;***************************************************;
|
||||||
|
; Guition ESP32-S3 TFT 4.3" ;
|
||||||
|
; - Custom esp32-s3 board ;
|
||||||
|
; - nv3041a 480x272 ;
|
||||||
|
; - gt911 touch controller ;
|
||||||
|
;***************************************************;
|
||||||
|
|
||||||
|
[guition-esp32-s3-tft]
|
||||||
|
extends = arduino_esp32s3_v2
|
||||||
|
board = esp32-s3-devkitc-1
|
||||||
|
board_build.arduino.memory_type = qio_opi
|
||||||
|
|
||||||
|
build_flags =
|
||||||
|
${arduino_esp32s3_v2.build_flags}
|
||||||
|
${esp32s3.ps_ram}
|
||||||
|
;-D HASP_MODEL="Guition 4.3\""
|
||||||
|
|
||||||
|
;region -- ArduinoGFX build options ------------------------
|
||||||
|
-D HASP_USE_ARDUINOGFX
|
||||||
|
-D NV3041A_DRIVER
|
||||||
|
;endregion
|
||||||
|
|
||||||
|
lib_deps =
|
||||||
|
${arduino_esp32s3_v2.lib_deps}
|
||||||
|
${arduinogfx.lib_deps}
|
||||||
|
${goodix.lib_deps}
|
||||||
|
|
||||||
|
|
||||||
|
[guition-tft-common-pins]
|
||||||
|
build_flags =
|
||||||
|
-D TFT_BCKL=1
|
||||||
|
-D TFT_CS=45
|
||||||
|
-D TFT_SCK=47
|
||||||
|
-D TFT_D0=21
|
||||||
|
-D TFT_D1=48
|
||||||
|
-D TFT_D2=40
|
||||||
|
-D TFT_D3=39
|
||||||
|
-D TFT_RST=GFX_NOT_DEFINED
|
||||||
|
-D TFT_ROTATION=0
|
||||||
|
-D TFT_IPS=true
|
||||||
|
-D TFT_WIDTH=480
|
||||||
|
-D TFT_HEIGHT=272
|
||||||
|
|
||||||
|
[env:guition-jc4827w543c_4MB]
|
||||||
|
extends = guition-esp32-s3-tft, flash_4mb
|
||||||
|
debug_tool = esp-builtin
|
||||||
|
debug_build_flags = -Os # optimize for size
|
||||||
|
build_flags =
|
||||||
|
-D HASP_MODEL="Guition ESP32-S3 JC4827W543C"
|
||||||
|
${guition-esp32-s3-tft.build_flags}
|
||||||
|
${guition-tft-common-pins.build_flags}
|
||||||
|
; Touch Settings
|
||||||
|
-D TOUCH_DRIVER=0x0911
|
||||||
|
-D TOUCH_SCL=4
|
||||||
|
-D TOUCH_SDA=8
|
||||||
|
-D TOUCH_IRQ=-1
|
||||||
|
-D TOUCH_RST=38
|
||||||
|
-D I2C_TOUCH_FREQUENCY=0
|
||||||
|
-D I2C_TOUCH_ADDRESS=0x5D
|
@ -83,8 +83,7 @@ build_flags =
|
|||||||
|
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${arduino_esp32s3_v2.lib_deps}
|
${arduino_esp32s3_v2.lib_deps}
|
||||||
${arduinogfx.lib_deps}
|
moononournation/GFX Library for Arduino@1.4.0 ; Update needs modification of custom PCA class ; ${ft6336.lib_deps}
|
||||||
; ${ft6336.lib_deps}
|
|
||||||
; git+https://github.com/RobTillaart/TCA9555.git
|
; git+https://github.com/RobTillaart/TCA9555.git
|
||||||
|
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ build_flags =
|
|||||||
-D TFT_VSYNC_PULSE_WIDTH=4 ; Typical VSYNC Pulse Width
|
-D TFT_VSYNC_PULSE_WIDTH=4 ; Typical VSYNC Pulse Width
|
||||||
-D TFT_VSYNC_BACK_PORCH=8 ; Typical VSYNC Back Porch
|
-D TFT_VSYNC_BACK_PORCH=8 ; Typical VSYNC Back Porch
|
||||||
-D TFT_PCLK_ACTIVE_NEG=1
|
-D TFT_PCLK_ACTIVE_NEG=1
|
||||||
-D TFT_PREFER_SPEED=14000000 ; 1/2 of Typical DCLK Frequency
|
-D TFT_PREFER_SPEED=13900000 ; 1/2 of Typical DCLK Frequency
|
||||||
-D TFT_AUTO_FLUSH=1
|
-D TFT_AUTO_FLUSH=1
|
||||||
; Touch Settings
|
; Touch Settings
|
||||||
-D TOUCH_WIDTH=480
|
-D TOUCH_WIDTH=480
|
||||||
@ -180,7 +180,7 @@ build_flags =
|
|||||||
-D TFT_VSYNC_PULSE_WIDTH=4 ; Typical VSYNC Pulse Width
|
-D TFT_VSYNC_PULSE_WIDTH=4 ; Typical VSYNC Pulse Width
|
||||||
-D TFT_VSYNC_BACK_PORCH=8 ; Typical VSYNC Back Porch
|
-D TFT_VSYNC_BACK_PORCH=8 ; Typical VSYNC Back Porch
|
||||||
-D TFT_PCLK_ACTIVE_NEG=1
|
-D TFT_PCLK_ACTIVE_NEG=1
|
||||||
-D TFT_PREFER_SPEED=14000000 ; 1/2 of Typical DCLK Frequency
|
-D TFT_PREFER_SPEED=13900000 ; 1/2 of Typical DCLK Frequency
|
||||||
-D TFT_AUTO_FLUSH=1
|
-D TFT_AUTO_FLUSH=1
|
||||||
; Touch Settings
|
; Touch Settings
|
||||||
-D TOUCH_WIDTH=800
|
-D TOUCH_WIDTH=800
|
||||||
@ -237,7 +237,7 @@ build_flags =
|
|||||||
-D TFT_VSYNC_PULSE_WIDTH=8 ; Typical VSYNC Pulse Width / 8 GOOD
|
-D TFT_VSYNC_PULSE_WIDTH=8 ; Typical VSYNC Pulse Width / 8 GOOD
|
||||||
-D TFT_VSYNC_BACK_PORCH=12 ; Typical VSYNC Back Porch / 12 GOOD
|
-D TFT_VSYNC_BACK_PORCH=12 ; Typical VSYNC Back Porch / 12 GOOD
|
||||||
-D TFT_PCLK_ACTIVE_NEG=1
|
-D TFT_PCLK_ACTIVE_NEG=1
|
||||||
-D TFT_PREFER_SPEED=14500000 ; 1/2 of Typical DCLK Frequency / 12000000 GOOD
|
-D TFT_PREFER_SPEED=13900000 ; 1/2 of Typical DCLK Frequency / 12000000 GOOD
|
||||||
-D TFT_AUTO_FLUSH=1
|
-D TFT_AUTO_FLUSH=1
|
||||||
; Touch Settings
|
; Touch Settings
|
||||||
-D TOUCH_WIDTH=800
|
-D TOUCH_WIDTH=800
|
||||||
|
86
user_setups/esp32s3/ws_esp32_s3_touch_lcd_4p3.ini
Normal file
86
user_setups/esp32s3/ws_esp32_s3_touch_lcd_4p3.ini
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
;***************************************************;
|
||||||
|
; Waveshare ESP32-S3-Touch-LCD-4.3 ;
|
||||||
|
; - 16-bit RGB TFT ;
|
||||||
|
; - GT911 touch controller ;
|
||||||
|
;***************************************************;
|
||||||
|
|
||||||
|
|
||||||
|
[ws_esp32_s3_touch]
|
||||||
|
extends = arduino_esp32s3_v2, flash_8mb
|
||||||
|
board = esp32-s3-devkitc-1
|
||||||
|
board_build.arduino.memory_type = qio_opi
|
||||||
|
|
||||||
|
build_flags =
|
||||||
|
${arduino_esp32s3_v2.build_flags}
|
||||||
|
${esp32s3.ps_ram}
|
||||||
|
;-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
|
||||||
|
;endregion
|
||||||
|
|
||||||
|
lib_deps =
|
||||||
|
${arduino_esp32s3_v2.lib_deps}
|
||||||
|
${arduinogfx.lib_deps}
|
||||||
|
Arduino_RPi_DPI_RGBPanel_mod
|
||||||
|
${goodix.lib_deps}
|
||||||
|
|
||||||
|
[env:ws_esp32_s3_touch_lcd_4p3]
|
||||||
|
extends = ws_esp32_s3_touch
|
||||||
|
|
||||||
|
build_flags =
|
||||||
|
-D HASP_MODEL="Waveshare ESP32-S3-Touch-LCD-4.3"
|
||||||
|
${ws_esp32_s3_touch.build_flags}
|
||||||
|
; Bus Settings
|
||||||
|
-D LV_VDB_SIZE=76800 ; 10% of full framebuffer
|
||||||
|
-D TFT_WIDTH=800
|
||||||
|
-D TFT_HEIGHT=480
|
||||||
|
-D TFT_DE=5
|
||||||
|
-D TFT_VSYNC=3
|
||||||
|
-D TFT_HSYNC=46
|
||||||
|
-D TFT_PCLK=7
|
||||||
|
-D TFT_B0=14
|
||||||
|
-D TFT_B1=38
|
||||||
|
-D TFT_B2=18
|
||||||
|
-D TFT_B3=17
|
||||||
|
-D TFT_B4=10
|
||||||
|
-D TFT_G0=39
|
||||||
|
-D TFT_G1=0
|
||||||
|
-D TFT_G2=45
|
||||||
|
-D TFT_G3=48
|
||||||
|
-D TFT_G4=47
|
||||||
|
-D TFT_G5=21
|
||||||
|
-D TFT_R0=1
|
||||||
|
-D TFT_R1=2
|
||||||
|
-D TFT_R2=42
|
||||||
|
-D TFT_R3=41
|
||||||
|
-D TFT_R4=40
|
||||||
|
-D TFT_BCKL=6 ; use GPIO06 as backlight PIN
|
||||||
|
; Panel Settings
|
||||||
|
-D TFT_HSYNC_POLARITY=0
|
||||||
|
-D TFT_HSYNC_FRONT_PORCH=20 ; Maximum HSYNC Front Porch
|
||||||
|
-D TFT_HSYNC_PULSE_WIDTH=10 ; Typical HSYNC Pulse Width
|
||||||
|
-D TFT_HSYNC_BACK_PORCH=10 ; Typical HSYNC Back Porch
|
||||||
|
-D TFT_VSYNC_POLARITY=0
|
||||||
|
-D TFT_VSYNC_FRONT_PORCH=10 ; Maximum VSYNC Front Porch
|
||||||
|
-D TFT_VSYNC_PULSE_WIDTH=10 ; Typical VSYNC Pulse Width
|
||||||
|
-D TFT_VSYNC_BACK_PORCH=10 ; Typical VSYNC Back Porch
|
||||||
|
-D TFT_PCLK_ACTIVE_NEG=0
|
||||||
|
-D TFT_PREFER_SPEED=14000000 ; 1/2 of Typical DCLK Frequency
|
||||||
|
-D TFT_AUTO_FLUSH=1
|
||||||
|
; Touch Settings
|
||||||
|
-D TOUCH_WIDTH=800
|
||||||
|
-D TOUCH_HEIGHT=480
|
||||||
|
-D TOUCH_DRIVER=0x911
|
||||||
|
-D TOUCH_SCL=9
|
||||||
|
-D TOUCH_SDA=8
|
||||||
|
-D TOUCH_IRQ=-1
|
||||||
|
-D TOUCH_RST=-1
|
||||||
|
-D I2C_TOUCH_ADDRESS=0x5d ; or 0x5D
|
||||||
|
-D I2C_TOUCH_FREQUENCY=400000
|
||||||
|
-D BACKLIGHT_FREQUENCY=1000 ;adopted frerquency for MP3302DJ-LF-Z (200 to 1000Hz) ->higher is better for sound!
|
||||||
|
lib_deps =
|
||||||
|
${sunton-esp32-s3-tft.lib_deps}
|
||||||
|
${goodix.lib_deps}
|
Loading…
x
Reference in New Issue
Block a user