1391 Commits

Author SHA1 Message Date
Edward Firmo
5fad2ed875 Fix missing value's icons on Climate page
Solves #2111
2024-05-21 10:45:13 +02:00
GitHub Actions
5a6be04a0c Pre-built firmware update: 9109144630 2024-05-16 08:45:00 +00:00
Edward Firmo
0ae9b9184d Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-05-16 10:35:17 +02:00
Edward Firmo
162537312c Fix type issue with IDF 5 2024-05-16 10:35:05 +02:00
GitHub Actions
f5b62f2dc4 Pre-built firmware update: 9108957357 2024-05-16 08:31:00 +00:00
Edward Firmo
402df4d9de Do not test beta on every push 2024-05-16 10:25:13 +02:00
Edward Firmo
dd874c0c3f Use libraries from ESPHome v2024.5.0 2024-05-16 10:21:56 +02:00
Edward Firmo
e6a9580166 Reverts reference to local component
Solves #2113
2024-05-15 22:15:19 +02:00
Edward Firmo
2e55e6d5fe Centralizing buttons on Alarm page
Solves #2110
2024-05-13 19:11:08 +02:00
Edward Firmo
06900a5de6 Merge pull request #2109 from AJediIAm/patch-4
Update blueprint.md
2024-05-12 20:52:25 +02:00
Edward Firmo
498d1d7ed9 Merge pull request #2107 from AJediIAm/patch-3
Update install.md
2024-05-12 20:52:10 +02:00
Edward Firmo
e32dbfe1f7 Merge pull request #2106 from AJediIAm/patch-2
Update install.md
2024-05-12 20:51:57 +02:00
Jaap P
e3524899d1 Update blueprint.md
Updated the home page description with pictures and put it in a table format. 
Picture quality is not great, so it might not be good enough to accept this version. It might be worth the effort to create good screenshots.
2024-05-09 21:33:22 +02:00
Jaap P
7bb86afa02 Update install.md
Add pictures to clarify firmware upload steps
2024-05-09 14:27:06 +02:00
Jaap P
085fc0beb4 Update install.md
Add picture showing how to lift the circuit board
2024-05-09 13:58:09 +02:00
Edward Firmo
b788ad8a1c Use new test format for beta 2024-05-08 10:09:44 +02:00
Edward Firmo
6428b15eec Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-05-08 09:49:57 +02:00
Edward Firmo
877def3a65 Use boolean result from Nextion upload 2024-05-08 09:49:19 +02:00
GitHub Actions
c370c31d82 Pre-built firmware update: 8892065627 2024-04-30 09:04:49 +00:00
Edward Firmo
1ef00adbfc Use arch_restart to restart ESP 2024-04-30 10:57:17 +02:00
GitHub Actions
d4118e27e1 Pre-built firmware update: 8849829037 2024-04-26 14:33:37 +00:00
Edward Firmo
1bb6307f07 Add some delays when stopping BT
To avoid a crash
2024-04-26 16:25:47 +02:00
GitHub Actions
3bee85669c Pre-built firmware update: 8845264091 2024-04-26 08:27:35 +00:00
Edward Firmo
3da9c4d850 Bump to v4.3.8.dev1
Supports #2091
2024-04-26 10:19:23 +02:00
Edward Firmo
5626070323 Wake-up before reporting current page
Tentatively solves #2091
2024-04-26 10:18:13 +02:00
Edward Firmo
e667aa2c82 Merge pull request #2090 from Blackymas/beta
v4.3.7 - Quick Fix for Captive Portal Compile Error
2024-04-25 18:38:42 +02:00
Edward Firmo
33b966c356 Merge pull request #2089 from Blackymas/dev
v4.3.7 to beta
2024-04-25 17:08:07 +02:00
GitHub Actions
1325055d13 Pre-built firmware update: 8833784908 2024-04-25 13:57:28 +00:00
Edward Firmo
9ea9f626dd Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-25 15:40:49 +02:00
Edward Firmo
7d2db5e606 Quick Fix for Captive Portal Compile Error
Solves #2088
2024-04-25 15:40:39 +02:00
GitHub Actions
0af27acb91 Pre-built firmware update: 8833476658 2024-04-25 13:36:03 +00:00
Edward Firmo
0497417939 Don't try to stop captive portal
Solves #2088
2024-04-25 15:26:27 +02:00
Edward Firmo
7b406d85f1 Remove redundant info from climate dump config 2024-04-25 14:48:52 +02:00
Edward Firmo
7ffaba6ef1 Merge pull request #2085 from Blackymas/beta
Lint
2024-04-25 08:19:37 +02:00
Edward Firmo
ddf92517b8 Merge pull request #2084 from Blackymas/dev
Lint
2024-04-25 08:18:48 +02:00
Edward Firmo
7f260a3108 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-25 08:16:18 +02:00
Edward Firmo
ea603a46c7 Lint 2024-04-25 08:16:15 +02:00
Edward Firmo
5987abae14 Merge pull request #2083 from Blackymas/beta
v4.3.6 - Critical Fixes for Custom Buttons
2024-04-25 08:12:29 +02:00
Edward Firmo
e9a35a4aec Merge pull request #2082 from Blackymas/dev
v4.3.6 to beta
2024-04-25 07:41:53 +02:00
GitHub Actions
ead60e7a82 Pre-built firmware update: 8827382086 2024-04-25 05:27:01 +00:00
Edward Firmo
35dc8aa3b5 Climate shows relays assignment on dump config 2024-04-25 07:17:19 +02:00
Edward Firmo
43fd89a679 Update ReleaseNotes.md 2024-04-25 07:06:12 +02:00
Edward Firmo
720e5c3a15 Fix opening embedded thermostat in a button
Solves #2067
2024-04-25 07:01:11 +02:00
Edward Firmo
02c8168667 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-25 06:52:55 +02:00
Edward Firmo
c37d2695a7 Fix custom buttons for domains other than lights
Solves #2080
Solves #2081
2024-04-25 06:52:53 +02:00
Edward Firmo
96986dcecd Merge pull request #2078 from Blackymas/beta
v4.3.5 - Experimenting with Bluetooth Capabilities
2024-04-24 23:56:09 +02:00
Edward Firmo
450810a222 Merge pull request #2077 from Blackymas/dev
v4.3.5 to beta
2024-04-24 23:02:33 +02:00
GitHub Actions
6331f247b5 Pre-built firmware update: 8822106317 2024-04-24 19:28:36 +00:00
Edward Firmo
c9338404ba Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-24 21:18:01 +02:00
Edward Firmo
db578c34bf Bump to v4.3.5 2024-04-24 21:17:49 +02:00
GitHub Actions
3e51445c62 Pre-built firmware update: 8821960718 2024-04-24 19:17:36 +00:00
Edward Firmo
eac6dd1cf7 Prepare references for release 2024-04-24 21:06:48 +02:00
Edward Firmo
1d247db8e8 Experimenting with Bluetooth Capabilities 2024-04-24 21:02:46 +02:00
Edward Firmo
c0d9d70c58 Expand light modes detection
Tentatively solves #2072
2024-04-24 20:48:34 +02:00
Edward Firmo
61bdaf0fa3 Extend max button name length to 14 chars 2024-04-24 15:53:16 +02:00
Edward Firmo
c4b91b8ea0 Manage indoor temp and weather icon as buttons
Solves #2056
2024-04-24 15:46:11 +02:00
Edward Firmo
72d4cd4b01 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-24 15:17:17 +02:00
Edward Firmo
bd4a8d5946 Set default delay before each esphome call
Default set to 10ms
This is to minimize the serial buffer overflow issue
2024-04-24 15:17:11 +02:00
GitHub Actions
163e28c6fd Pre-built firmware update: 8814684647 2024-04-24 10:08:01 +00:00
Edward Firmo
9063030ba2 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-24 11:58:22 +02:00
Edward Firmo
fe26e30a06 Simplify page load
To reduce the chances of a serial buffer overflow
2024-04-24 11:58:19 +02:00
GitHub Actions
85e207914c Pre-built firmware update: 8814096845 2024-04-24 09:22:26 +00:00
Edward Firmo
baef06fadf Round up temperature step
Partially solves #2063
2024-04-24 11:13:02 +02:00
Edward Firmo
79253683f9 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-24 11:00:15 +02:00
Edward Firmo
1c43b8a874 Display embedded temperature in F or C accordingly
Partially solves #2063
2024-04-24 11:00:06 +02:00
GitHub Actions
fdae613124 Pre-built firmware update: 8813464340 2024-04-24 08:36:07 +00:00
Edward Firmo
4e329cb58c Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-24 10:26:31 +02:00
Edward Firmo
0654a54730 Fix icon colors on home page 2024-04-24 10:26:11 +02:00
GitHub Actions
376a9c2c0b Pre-built firmware update: 8781452204 2024-04-22 09:16:29 +00:00
Edward Firmo
29baa6c808 Create nspanel_esphome_addon_ble_tracker.yaml 2024-04-22 11:07:33 +02:00
Edward Firmo
e20c4d2af2 Lint 2024-04-22 10:15:30 +02:00
Edward Firmo
6278cd739e Lint 2024-04-22 10:14:38 +02:00
Edward Firmo
edd1d3fdb8 Lint 2024-04-22 10:13:26 +02:00
Edward Firmo
1cbb5c17d7 Lint 2024-04-22 10:12:44 +02:00
Edward Firmo
075ec9f7fb Lint 2024-04-22 10:07:20 +02:00
Edward Firmo
66c5e58c02 New Add-on: BLE Tracker
Solves #1946
Helps with #1983
2024-04-22 10:01:10 +02:00
GitHub Actions
403f69c25c Pre-built firmware update: 8743062476 2024-04-18 18:48:49 +00:00
Edward Firmo
6021afc0f4 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-18 20:39:16 +02:00
Edward Firmo
d0152de676 Move dependences from matrix 2024-04-18 20:39:06 +02:00
GitHub Actions
78cf4333f1 Pre-built firmware update: 8742907264 2024-04-18 18:36:01 +00:00
Edward Firmo
fcc1b54b6c Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-18 20:26:03 +02:00
Edward Firmo
d106243bd5 Generates individual md5 files 2024-04-18 20:25:28 +02:00
GitHub Actions
a44b1750ba Pre-built firmware update: 8742721298 2024-04-18 18:20:34 +00:00
Edward Firmo
9cdaca8371 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-18 20:06:20 +02:00
Edward Firmo
0c634cfc55 Add combined tests 2024-04-18 20:06:10 +02:00
Edward Firmo
52be1226e5 Use IDF5 2024-04-18 19:59:47 +02:00
Edward Firmo
8be27ae04b Add climate tests 2024-04-18 19:57:40 +02:00
Edward Firmo
4b049312da Add Bluetooth Proxy tests 2024-04-18 19:55:20 +02:00
GitHub Actions
246f301490 Pre-built firmware update: 8742420637 2024-04-18 17:54:34 +00:00
Edward Firmo
6c10d13a28 Use latest actions versions 2024-04-18 19:45:18 +02:00
Edward Firmo
2b7287e89d Lint 2024-04-18 19:43:03 +02:00
Edward Firmo
8026ee1846 Use custom yamllint rules 2024-04-18 19:39:18 +02:00
Edward Firmo
2f26b759da Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-18 19:32:21 +02:00
Edward Firmo
da98f9570d Optimize tests 2024-04-18 19:32:10 +02:00
GitHub Actions
02b0b25cae Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-18 17:28:21 +00:00
Edward Firmo
e3605eab5d Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-18 19:17:45 +02:00
Edward Firmo
5c867d1653 Test deeper with Arduino and IDF v5 2024-04-18 19:17:41 +02:00
GitHub Actions
822b6dab97 Pre-built firmware for NSPanel - Correct call to ap_captive_portal.end() 2024-04-18 16:55:56 +00:00
Edward Firmo
5206898c98 Correct call to ap_captive_portal.end() 2024-04-18 18:44:20 +02:00
Edward Firmo
5274b97551 Lint 2024-04-18 18:41:32 +02:00
Edward Firmo
544b2bc9cf Introducing "Add-on: Bluetooth Proxy"
Supports:
- #1983
- #1946
- #1815
2024-04-18 18:34:49 +02:00
Edward Firmo
c9be4d2422 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-18 12:35:22 +02:00
Edward Firmo
a5092a5939 Stop unnecessary services before TFT upload with pre-built versions 2024-04-18 12:35:20 +02:00
GitHub Actions
62bd8eed17 Pre-built firmware for NSPanel - Add id for BLE tests 2024-04-18 01:59:15 +00:00
Edward Firmo
6276551560 Add id for BLE tests 2024-04-18 03:48:41 +02:00
GitHub Actions
ca10827074 Pre-built firmware for NSPanel - Replace watchdog by dump_config 2024-04-18 01:35:46 +00:00
Edward Firmo
ddea304d1b Replace watchdog by dump_config 2024-04-18 03:25:06 +02:00
Edward Firmo
85d6abae93 Flag display as disconnected during upload
To prevent Blueprint sending data
2024-04-17 10:06:29 +02:00
Edward Firmo
6c2c9ab5bd Introduces "icons" library 2024-04-17 09:40:02 +02:00
Edward Firmo
acf96d4f30 Stop Bluetooth before TFT upload
Helps with:
- #1983
- #1946
- #1815
2024-04-17 09:39:38 +02:00
Edward Firmo
a6f62a053c Use send_command from Nextion 2024-04-16 11:03:20 +02:00
Edward Firmo
94d51c4b49 Use PSRAM with Nextion Upload TFT
Helps with the following:
- #1983
- #1946
- #1815
2024-04-16 10:55:29 +02:00
GitHub Actions
7da53ef510 Pre-built firmware for NSPanel - Remove psram code when psram is not included 2024-04-13 06:20:19 +00:00
Edward Firmo
8a60a15682 Remove psram code when psram is not included 2024-04-13 02:06:13 +02:00
Edward Firmo
e265acfcf1 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-13 02:04:36 +02:00
Edward Firmo
40eae7c065 ESPHome version support on Blueprint side 2024-04-12 10:25:55 +02:00
GitHub Actions
2f562cdd72 Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-12 08:08:11 +00:00
Edward Firmo
d1d0a124b1 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-12 09:59:04 +02:00
Edward Firmo
d59361f937 Report ESPHome version on event call
This will allow version based blueprint
2024-04-12 09:58:50 +02:00
GitHub Actions
f0f64738ef Pre-built firmware for NSPanel - Remove CONFIG_LWIP_MAX_SOCKETS 2024-04-12 07:45:34 +00:00
Edward Firmo
2a0f92d548 Remove CONFIG_LWIP_MAX_SOCKETS
This was breaking `web_server`
Solves #2050
2024-04-12 09:36:21 +02:00
Edward Firmo
60078bd680 Prepares for MdiIcons library 2024-04-12 09:32:01 +02:00
Edward Firmo
3b2a6b7554 Merge pull request #2045 from Blackymas/beta
v4.3.4 - Urgent Fix for Home Screen Interaction
2024-04-10 16:39:03 +02:00
Edward Firmo
f76eccd06d Merge pull request #2044 from Blackymas/dev
Updated compatibility table
2024-04-10 16:34:01 +02:00
Edward Firmo
359c9ed4f0 Updated compatibility table 2024-04-10 16:31:45 +02:00
Edward Firmo
2378e171d0 Merge pull request #2041 from Blackymas/dev
v4.3.4 to beta
2024-04-10 16:29:02 +02:00
GitHub Actions
53aeb3e1ec Pre-built firmware for NSPanel 2024-04-10 14:21:41 +00:00
Edward Firmo
f93c4d8d47 Update validate_esphome_beta.yml 2024-04-10 16:02:54 +02:00
Edward Firmo
a4fb6324d4 Remove unused reference 2024-04-10 15:55:11 +02:00
Edward Firmo
89f95899a1 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-10 15:49:00 +02:00
Edward Firmo
ba1e074bf8 Bump to v4.3.4
Solves #2040
2024-04-10 15:48:38 +02:00
GitHub Actions
0529e39c31 Pre-built firmware for NSPanel - Fix climate page not opening with click on internal temp 2024-04-10 13:44:08 +00:00
Edward Firmo
178b940b46 Fix climate page not opening with click on internal temp
Solves #2040
2024-04-10 15:34:49 +02:00
Edward Firmo
dcde6ce3fb Merge pull request #2039 from Blackymas/beta
Update Python validation
2024-04-10 13:05:35 +02:00
Edward Firmo
3f28641903 Merge pull request #2038 from Blackymas/dev
Update Python validation
2024-04-10 13:04:35 +02:00
Edward Firmo
9cb230fd5f Update validate_python.yml 2024-04-10 13:02:25 +02:00
Edward Firmo
1cdd417340 Update validate_python.yml 2024-04-10 13:00:18 +02:00
Edward Firmo
77f9cf66f1 Update validate_python.yml 2024-04-10 12:58:51 +02:00
Edward Firmo
b5784187ae Replace python validation 2024-04-10 12:56:18 +02:00
Edward Firmo
94ad0211e0 Update .flake8 2024-04-10 12:51:52 +02:00
Edward Firmo
706864a4da Allow to 200 char per line 2024-04-10 12:42:58 +02:00
Edward Firmo
b07f88b5db Merge pull request #2036 from Blackymas/beta
v4.3.3 - Enhancing Flexibility and User Experience
2024-04-10 11:42:59 +02:00
Edward Firmo
f3a67bb3d3 Merge pull request #2037 from Blackymas/dev
Update timezone list
2024-04-10 11:07:45 +02:00
GitHub Actions
d3ec9a2a2f Pre-built firmware for NSPanel - Update timezone list 2024-04-10 08:53:22 +00:00
Edward Firmo
9babe8984d Update timezone list 2024-04-10 10:44:20 +02:00
Edward Firmo
4ad2619108 Lint 2024-04-10 10:26:55 +02:00
Edward Firmo
36d0027845 Ignore dev folder 2024-04-10 10:24:18 +02:00
Edward Firmo
9e52f7f39d Merge pull request #2035 from Blackymas/dev
Update beta with latest minor changes
2024-04-10 10:15:42 +02:00
Edward Firmo
86d5859045 Merge pull request #2034 from MichaelHeimann/dev
Update blueprint doc with timezone description
2024-04-10 10:11:39 +02:00
Edward Firmo
47fb10ed1b Add link to v4.3.2 2024-04-10 10:10:40 +02:00
MichaelHeimann
9e5fb231cb Update blueprint.md Advanced Section
removed ## at the end of the section header
2024-04-10 09:56:20 +02:00
MichaelHeimann
4cb526b8cc Update blueprint.md with Advanced Settings section
not complete, but a start
2024-04-10 09:51:48 +02:00
MichaelHeimann
9ac00037ae Update blueprint.md Hardware button visibility pages
add Hardware Buttons - Visibility Pages
2024-04-10 09:47:30 +02:00
MichaelHeimann
1e90d63b94 Update blueprint.md Entities States (3 is now 4) 2024-04-10 09:42:48 +02:00
MichaelHeimann
bed4c7dad0 Update blueprint doc with timezone description 2024-04-10 09:27:55 +02:00
Edward Firmo
4ad14d5e0f Merge pull request #2033 from Blackymas/dev
v4.3.3 to beta
2024-04-10 09:02:22 +02:00
Edward Firmo
dc8fdbc44e Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-10 08:21:14 +02:00
Edward Firmo
64489159ac Update timezone list 2024-04-10 08:18:14 +02:00
GitHub Actions
6acd5c945b Pre-built firmware for NSPanel - Bump version to 4.3.3 2024-04-10 06:06:45 +00:00
Edward Firmo
fc0f727d83 Bump version to 4.3.3
Getting prepared for a release
2024-04-10 07:57:43 +02:00
Edward Firmo
bc590b9ccf Internal Temperature Reporting Fix After Sleep
Solves #2030
2024-04-09 15:50:00 +02:00
Edward Firmo
a3c707b4e3 Do not clean internal temp when constructing Home page
Solves #2030
2024-04-09 15:43:17 +02:00
Edward Firmo
6f4e1f610f Timezone Selector Added to Blueprint
Solves #2029
2024-04-09 13:54:53 +02:00
Edward Firmo
99a86408a2 Fix timezone split
Solves #2029
2024-04-09 13:34:44 +02:00
Edward Firmo
34889bac3b Merge pull request #2029 from MichaelHeimann/patch-1
Update nspanel_blueprint.yaml
2024-04-09 12:39:56 +02:00
MichaelHeimann
4477fe9e50 Update nspanel_blueprint.yaml
fixes "Error: TypeError: '>' not supported between instances of 'list' and 'int'"
2024-04-09 11:54:44 +02:00
Edward Firmo
94018819f0 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-09 11:44:40 +02:00
Edward Firmo
c7f7e0c7c3 v4.3.3 release notes 2024-04-09 11:44:37 +02:00
GitHub Actions
ff6a21df39 Pre-built firmware for NSPanel - Simplify climate show logic 2024-04-09 08:28:10 +00:00
Edward Firmo
2f45083db5 Simplify climate show logic
Improves #2021
2024-04-09 10:16:18 +02:00
Edward Firmo
cd4fef6870 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-09 10:10:38 +02:00
Edward Firmo
c64132d7b5 Do not show climate page when using internal temperature sensor
Solves #2021
2024-04-09 10:10:35 +02:00
Edward Firmo
376d91aa5a Use initial_value for fw_url
It should be available together with the component
2024-04-09 08:30:29 +02:00
GitHub Actions
b8d8252c19 Pre-built firmware for NSPanel - Merge component nspanel_ha_blueprint_upload_tft into nspanel_ha_blueprint 2024-04-09 06:17:29 +00:00
Edward Firmo
75c35399f1 Add prebuilt to yamlscan on ESPHome validation 2024-04-09 08:13:01 +02:00
Edward Firmo
694ab4f98f Merge component nspanel_ha_blueprint_upload_tft into nspanel_ha_blueprint 2024-04-09 08:08:33 +02:00
Edward Firmo
896f86ddab Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-09 07:56:11 +02:00
Edward Firmo
12837077da Move rgbTo565 to header file
For IDF 5 compatibility
2024-04-09 07:56:06 +02:00
GitHub Actions
70c11efd96 Pre-built firmware for NSPanel - Review components files 2024-04-08 22:02:48 +00:00
Edward Firmo
10e0a47b6f Review components files 2024-04-08 23:47:16 +02:00
Edward Firmo
88cca0d1bf Allow for longer string to Home page values
Solves #2020
2024-04-08 21:23:08 +02:00
Edward Firmo
c727fcd17b Rebuild Home page with automation reload
This will rebuild some components on the Home page when the automation settings changes.
This also adds support to mdi:void which will plot empty/blank icon.
Solves #1992
Solves #2018
Solves #2019
2024-04-08 21:13:20 +02:00
Edward Firmo
6be727d4af Move UtilitiesGroups to PSRAM 2024-04-08 20:36:23 +02:00
GitHub Actions
3a2dd23f86 Pre-built firmware for NSPanel - Report pre-built installed packages on watchdog 2024-04-08 14:23:02 +00:00
Edward Firmo
e1e157a2b8 Report pre-built installed packages on watchdog
Helps with #2024
2024-04-08 16:04:55 +02:00
Edward Firmo
c6d4929a53 Make timezone customization obsolete
Helps with #2024
2024-04-08 16:01:47 +02:00
Edward Firmo
ca7dcd92a9 Fix input identation 2024-04-08 15:52:54 +02:00
Edward Firmo
593f05feb9 Remember timezone on boot
Supports #2024
2024-04-08 15:47:57 +02:00
GitHub Actions
b30ba76960 Pre-built firmware for NSPanel - Timezone support on Blueprint 2024-04-08 12:15:23 +00:00
Edward Firmo
c98f50543d Timezone support on Blueprint
Still pending the code on ESPHome to store for when WiFi is out
Pending API doc.
I haven't merged this in another service for now to not break the API, but this should be done for v4.4.0

Solves #2024
2024-04-08 14:05:57 +02:00
GitHub Actions
019efade79 Pre-built firmware for NSPanel - Rename to lower case 2024-04-07 21:41:14 +00:00
Edward Firmo
a96ac51ed6 Rename to lower case 2024-04-07 23:32:11 +02:00
Edward Firmo
ea6b8bc1b3 Force rename 2024-04-07 23:31:48 +02:00
Edward Firmo
bf508ae8cb Starts customization after code_scan
To reduce total test time
2024-04-07 23:19:37 +02:00
Edward Firmo
610563f80d Trigger action with changes to wall display 2024-04-07 23:16:43 +02:00
Edward Firmo
cc787deba0 Rename to all lower case 2024-04-07 23:14:47 +02:00
GitHub Actions
05a4b1363b Pre-built firmware for NSPanel 2024-04-07 21:11:49 +00:00
Edward Firmo
113984a7e3 Run prebuild right after code_scan 2024-04-07 22:55:49 +02:00
Edward Firmo
314a0a8eab Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-04-07 22:54:14 +02:00
Edward Firmo
d75d559a1e Merge prebuilts task 2024-04-07 22:54:02 +02:00
GitHub Actions
e4b00d5e71 Pre-built firmware for NSPanel - Fix packages order 2024-04-07 20:47:24 +00:00
Edward Firmo
e98a6a45a3 Fix packages order
Adds to #2024
2024-04-07 22:36:58 +02:00
Edward Firmo
6f432a54fd Generate MD5 for wall_display.bin 2024-04-07 22:23:54 +02:00
GitHub Actions
0eb8654663 Pre-built firmware for NSPanel 2024-04-07 20:01:38 +00:00
Edward Firmo
d368cb2239 Add config param to build in ESP-IDF
Adds to #2024
2024-04-07 20:00:06 +02:00
Edward Firmo
9920d23477 Move builds to actions
Adds to #2024
2024-04-07 19:51:57 +02:00
Edward Firmo
93b3281e6e Use const in for loop 2024-04-07 19:49:53 +02:00
Edward Firmo
03b993a83c add md5 files
Adds to #2024
2024-04-07 19:43:35 +02:00
Edward Firmo
8bb708b448 Cleanup bin from esphome folder
Relates to #2024
2024-04-07 19:20:37 +02:00
Edward Firmo
185c6f5d65 Lint 2024-04-07 19:19:27 +02:00
Edward Firmo
674c3d909d Add build flags
Adds to #2024
2024-04-07 19:17:19 +02:00
Edward Firmo
fba844f261 Add NSPanel_HA_Blueprint model to device models
Adds to #2024
2024-04-07 19:10:17 +02:00
Edward Firmo
2f697923cc Make add mac global
Complements #2024
2024-04-07 19:08:24 +02:00
Edward Firmo
5fbae3128f Merge pull request #2024 from MichaelHeimann/Blackymas-urls
Update prebuilt
2024-04-07 18:53:15 +02:00
Edward Firmo
d1b973847e Lint 2024-04-07 18:37:24 +02:00
Edward Firmo
c58dbc3516 Add build flags 2024-04-07 18:33:31 +02:00
Edward Firmo
61aa97f64e Don't include mac address code when not prebuilt 2024-04-07 18:30:58 +02:00
Edward Firmo
0ca7b9fcc7 Build firmware on actions 2024-04-07 18:19:33 +02:00
Edward Firmo
1718d9d6cf Split Wall_Display from NSPANEL_HA_BLUEPRINT 2024-04-07 18:15:50 +02:00
Edward Firmo
aafbc722fd Add build flags 2024-04-07 17:49:46 +02:00
MichaelHeimann
41b2dc0d58 Update nspanel_esphome_prebuilt.yaml 2024-04-07 16:48:52 +02:00
MichaelHeimann
25885620b6 Add files via upload 2024-04-07 16:48:23 +02:00
MichaelHeimann
b66d78bcbd Update nspanel_blueprint.yaml 2024-04-07 16:42:47 +02:00
MichaelHeimann
c0e34f284d Update nspanel_blueprint.yaml
support manual configured AND prebuilt nspanels
2024-04-05 23:37:55 +02:00
MichaelHeimann
a5ab52653c Update nspanel_blueprint.yaml
change project model to Wall_Display
2024-04-05 17:58:29 +02:00
MichaelHeimann
5db3f59679 Add files via upload 2024-04-05 17:25:13 +02:00
MichaelHeimann
96b0e0a6c6 Add files via upload
make fw update actually use fw_url textfield
2024-04-05 17:08:43 +02:00
MichaelHeimann
fddaf9bc6e Add files via upload
add text entry field for fw
2024-04-05 16:57:27 +02:00
MichaelHeimann
2542386c2d Add files via upload
create md5 URL by adding .md5 to firmware url
make firmware url non-internal
2024-04-05 16:37:34 +02:00
Edward Firmo
140cbdd409 Enables PSRAM
Supports #1983
Supports #1946
Supports #1815

Could support esphome/feature-requests#2369
2024-04-05 00:54:51 +02:00
MichaelHeimann
3bb4bdd49f redo device_name suffix generation 2024-04-04 14:11:52 +02:00
MichaelHeimann
a78a282b41 Merge pull request #2 from Blackymas/main
pull from head
2024-04-04 14:10:14 +02:00
Edward Firmo
0e6853f3bf Lint 2024-04-04 14:08:53 +02:00
Edward Firmo
b0d4d22404 Page title when opening details from custom buttons (home page)
Solves #1909
2024-04-04 13:56:26 +02:00
MichaelHeimann
d09680b87c Update nspanel_esphome_core.yaml 2024-04-04 13:41:58 +02:00
Edward Firmo
9b3f64835d Custom buttons toggle entities when no details supported
Solves #1844
2024-04-04 13:35:26 +02:00
MichaelHeimann
d9d7e66bbf Update nspanel_esphome_core.yaml 2024-04-04 12:14:28 +02:00
MichaelHeimann
49170c1b6a Update nspanel_esphome_core.yaml 2024-04-04 12:11:26 +02:00
MichaelHeimann
8a80839aec Update nspanel_esphome_prebuilt.yaml
remove captive portal for space reasons (doesn't work anyways)
2024-04-04 12:00:13 +02:00
MichaelHeimann
4ede301ffa Update nspanel_esphome_prebuilt.yaml 2024-04-04 11:58:20 +02:00
MichaelHeimann
54b87d3d6a Update nspanel_esphome_core.yaml 2024-04-04 11:13:32 +02:00
MichaelHeimann
53113a26d9 Add files via upload
update to 4.3.2
2024-04-04 10:20:34 +02:00
Edward Firmo
7eed2adcc6 Language based bytes per char
Solves #2000
2024-04-04 09:45:52 +02:00
Edward Firmo
6632404c4d Merge pull request #2014 from Blackymas/beta
Fix yaml identation
2024-04-04 06:57:19 +02:00
Edward Firmo
f46ea5dc14 Merge pull request #2013 from Blackymas/dev
Fix yaml identation
2024-04-04 06:49:39 +02:00
Edward Firmo
6e0137bcec Fix yaml identation
Solves #2012
2024-04-04 06:48:44 +02:00
MichaelHeimann
59f9b1ffb5 Update nspanel_esphome_core.yaml 2024-04-03 20:32:22 +02:00
MichaelHeimann
1f835c5a48 Update nspanel_esphome_core.yaml
'name_add_mac_suffix' was not declared error
2024-04-03 20:25:01 +02:00
MichaelHeimann
f2eabcf059 Merge pull request #1 from Blackymas/main
update to 4.3.2
2024-04-03 18:49:50 +02:00
MichaelHeimann
2e802607bb Update nspanel_esphome_core.yaml
try to make the device name respect name_add_mac_suffix
2024-04-03 18:28:20 +02:00
Edward Firmo
29c5e8eea5 Merge pull request #2010 from Blackymas/beta
v4.3.2 - Enhancements and Critical Fixes for a Seamless Experience
2024-04-03 17:58:44 +02:00
Edward Firmo
d0fe64fd67 Merge pull request #2009 from Blackymas/dev
v4.3.2 - Enhancements and Critical Fixes for a Seamless Experience
2024-04-03 17:57:29 +02:00
Edward Firmo
c20f88a3ee v4.3.2 - Enhancements and Critical Fixes for a Seamless Experience 2024-04-03 17:56:03 +02:00
Edward Firmo
fdec06482d Merge pull request #2008 from Blackymas/dev
Use components from beta
2024-04-03 17:05:16 +02:00
Edward Firmo
913d43959b Use components from beta 2024-04-03 16:31:26 +02:00
Edward Firmo
e40aa6d1ca Merge pull request #2007 from Blackymas/dev
v4.3.2b1
2024-04-03 15:07:07 +02:00
MichaelHeimann
235a5b2970 Update nspanel_blueprint.yaml
different name to make it distinguisable
2024-04-03 15:04:31 +02:00
MichaelHeimann
c9d2f0d846 Update nspanel_blueprint.yaml
prebuilt nspanel yaml has projectname NSPanel_HA_Blueprint, so default esp32dev won't show the prebuilt panels
2024-04-03 15:02:25 +02:00
Edward Firmo
bedd30c68f Lint 2024-04-03 14:44:26 +02:00
Edward Firmo
18e9458a57 Bump to v4.3.2b1 2024-04-03 14:41:01 +02:00
Edward Firmo
e61f78fdcf Update ReleaseNotes.md 2024-04-03 14:30:25 +02:00
Edward Firmo
22e655d0e3 Swipe Functionality Restored on Button and Home Pages
Solves #1980
Solves #1994
2024-04-03 14:30:05 +02:00
Edward Firmo
3b12a95ae0 Fix for Missing Titles and Icons on Detailed Entities Pages
Solves #1978
2024-04-03 14:26:34 +02:00
Edward Firmo
a2870f9080 Fix detailed page icon & title
Solves #1978
2024-04-03 14:20:40 +02:00
Edward Firmo
b044561e11 Select display model based on installed TFT 2024-04-03 11:37:34 +02:00
Edward Firmo
2b00485249 Update US Land
Solves #1994
2024-04-03 10:38:36 +02:00
Edward Firmo
bf2ce54279 Align swipe engine with entity pages
Solves #1994
2024-04-03 10:36:15 +02:00
Edward Firmo
58c158a426 Reviewed swipe engine
Solves #1994
2024-04-03 10:18:31 +02:00
Edward Firmo
f3100081a4 REvised swipe engine on home page
Prepares for #1994
2024-04-03 10:04:05 +02:00
Edward Firmo
2580eeb668 Enhanced TFT Update Reliability in ESPHome Nextion Component 2024-04-03 09:49:14 +02:00
MichaelHeimann
5cdadc79ce new version based on 4.3.1
with 
- climate_heat and 
- psram
2024-04-03 01:01:42 +02:00
MichaelHeimann
e49657230d Update nspanel_esphome_prebuilt.yaml
enable climate_heat
2024-04-03 00:53:03 +02:00
MichaelHeimann
0b0e0a4982 Update nspanel_esphome_prebuilt.yaml
now, since ota_http doesn't follow http 302s ..
2024-04-03 00:39:30 +02:00
MichaelHeimann
0248a825e1 Update nspanel_esphome_prebuilt.yaml 2024-04-03 00:34:09 +02:00
MichaelHeimann
720f640ec0 Update nspanel_esphome_prebuilt.yaml 2024-04-03 00:24:43 +02:00
Edward Firmo
4e421bdc23 Immediate Brightness Adjustment from Home Assistant Fixed
Solves #2006
2024-04-02 09:43:16 +02:00
Edward Firmo
7fc9214667 Change brightness when adjusted to a different value
Solves #2006
2024-04-02 09:39:27 +02:00
MichaelHeimann
072e1c6bd5 Update nspanel_esphome_prebuilt.yaml 2024-04-02 03:26:22 +02:00
MichaelHeimann
aad0c3daf1 Update nspanel_esphome_prebuilt.yaml 2024-04-02 02:40:28 +02:00
MichaelHeimann
383d5d3d52 Add files via upload 2024-04-02 02:20:40 +02:00
MichaelHeimann
60c9bfc072 Update nspanel_esphome_prebuilt.bin.md5 2024-04-02 02:20:06 +02:00
MichaelHeimann
2d895f8ae8 Update nspanel_esphome_prebuilt.yaml
http download for firmware
psram
2024-04-02 02:00:42 +02:00
MichaelHeimann
6f9090a866 Update nspanel_esphome_prebuilt.bin.md5 2024-04-02 00:58:52 +02:00
MichaelHeimann
0fccde0385 Add files via upload 2024-04-01 02:00:43 +02:00
MichaelHeimann
410d4b789d add md5_url tp nspanel_esphome_prebuilt.yaml 2024-04-01 01:09:15 +02:00
Edward Firmo
887c3155c2 Refining watchdog 2024-04-01 00:53:18 +02:00
Edward Firmo
87d292496a Return with watchdog
Helps with #2001
2024-04-01 00:29:15 +02:00
Edward Firmo
f0d1b9a7aa Performance improvements - Chips triggers
Helps with #1977
Helps with #2001
2024-04-01 00:11:11 +02:00
Edward Firmo
c7bfe4096a Performance improvement - Home page values triggering
Solves #1977
Hopefully solves #2001
2024-04-01 00:05:33 +02:00
Edward Firmo
8531a49621 Performance improvements - Reduce triggers when line ref down't change signal
Solves #1977
2024-03-31 23:51:30 +02:00
Edward Firmo
6a93083eb7 Lint 2024-03-31 21:29:33 +02:00
Edward Firmo
2393834ae8 Performance improvements & watchdog prep 2024-03-31 21:26:48 +02:00
Edward Firmo
0e089b292b Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-31 19:14:37 +02:00
Edward Firmo
89bda1e0c4 Always process panel's events
Regardless if the panel's name sensor is available
2024-03-31 19:12:59 +02:00
Edward Firmo
a7574100f0 Enhancements and Critical Fixes for a Seamless Experience 2024-03-31 16:03:01 +02:00
Edward Firmo
29effe36f8 Mention change on Release Notes
Solves #2003
Solves #1928
Solves #1949
Solves #1904
Solves #1933
2024-03-31 15:58:17 +02:00
Edward Firmo
af055283f7 Merge pull request #2003 from colincachia/main
Fix typo
2024-03-31 15:49:45 +02:00
Edward Firmo
e5c6f25181 Automatic Update for Weather Icon at Sunrise and Sunset
Solves #1971
2024-03-31 11:54:11 +02:00
Edward Firmo
530697642e Fix for Numeric Button Page Labels Not Displaying
Solves #1961
2024-03-31 11:50:42 +02:00
Edward Firmo
684e6e24a5 Enhanced Version Mismatch Notifications for Comprehensive System Compatibility
Solves #1966
Solves #1968
2024-03-31 11:46:35 +02:00
Edward Firmo
9d48e766b3 Custom Binary State Entities for Hardware Button Status Display Enhancement
Solves #1959
Solves #1973
2024-03-31 11:38:45 +02:00
Edward Firmo
c281a037c2 Documentation Update for "Folder-Watcher" Engine Use
Solves #1974
2024-03-31 11:31:36 +02:00
Edward Firmo
1718bd55f6 Documentation Improvement for TFT Upload Process
Solves #1969
2024-03-31 11:20:09 +02:00
Edward Firmo
c51ca1bd06 Enhanced Temperature Measurement Strategy
Solves #1918
2024-03-31 11:14:34 +02:00
Edward Firmo
41aa61c76e Close Icon Visibility Enhancement
Solves #1984
2024-03-31 11:00:19 +02:00
Edward Firmo
77d7d7ee23 Utilities Dashboard Performance Bug Resolved
Solves #1964
2024-03-31 10:57:00 +02:00
Edward Firmo
2fd5881c66 Device Reboot Issue on Wake Up Resolved
Solves #1976
2024-03-31 10:50:30 +02:00
Edward Firmo
f03f825df8 Alarm Control with Hardware Button Enhancement
Solves #1995
2024-03-31 10:41:13 +02:00
Edward Firmo
d039c04a95 Hebrew Translation Text Reversal Fix
Solves #1999
2024-03-31 10:35:29 +02:00
Edward Firmo
ff6e524548 Documentation Updates for Arduino References
Solves #1997
2024-03-31 10:33:44 +02:00
Edward Firmo
565df092d4 Expanded Wake-Up Sensor Support
Solves #1998
2024-03-31 10:28:00 +02:00
Edward Firmo
c6f692b0f9 Added more device classes to wake-up sensor
Solves #1998
2024-03-31 09:32:21 +02:00
Edward Firmo
acba8b053e Remove json component 2024-03-30 23:16:59 +01:00
Colin Cachia
840554ae8e Merge pull request #1 from colincachia/colincachia-pr-1
Fix mini typo
2024-03-30 18:51:22 +01:00
Colin Cachia
2eeda11841 Fix mini typo
Most probably, due to a copy/paste incident, the description of one of the items is incorrect
2024-03-30 18:50:20 +01:00
MichaelHeimann
f6f032ae22 add prebuilt firmware 2024-03-30 01:46:06 +01:00
MichaelHeimann
f304a5c078 Delete prebuilt/firmware.bin 2024-03-30 01:42:39 +01:00
MichaelHeimann
41c320a3d6 add prebuild firmware.bin 2024-03-30 01:41:02 +01:00
MichaelHeimann
bf0aa0f8fb Create nspanel_esphome_prebuilt.bin.md5 2024-03-30 01:39:37 +01:00
Edward Firmo
c3d55a284e Clean-up new json 2024-03-29 21:53:47 +01:00
Edward Firmo
ae05f133e1 Move webserver to core package
This is reverting back from cJson to ArduinoJson as that was adding to memory consumption when webserver was used (quite common), reducing the benefits of a lighter library.
2024-03-29 21:42:26 +01:00
Edward Firmo
c74eabbe95 Do not evaluate vars before conditions are met
Helps with #1977
2024-03-29 20:28:27 +01:00
Edward Firmo
cbd341a784 Merge pull request #1997 from andythomas/docs240329at
Update docs, look for references to Arduino.
2024-03-29 20:18:53 +01:00
Edward Firmo
67892fb6ed Merge pull request #1999 from leranp/dev
Text Reverese for Hebrew translation
2024-03-29 20:18:39 +01:00
Edward Firmo
63dd57d7f3 Reorg conditions
Helps with #1977
2024-03-29 20:15:35 +01:00
Edward Firmo
5d102472a1 Cleanup trigger's conditions
Helps with #1977
2024-03-29 20:03:48 +01:00
Edward Firmo
e1dd490d4f Cleanup trigger conditions
Helps #1977
2024-03-29 19:59:56 +01:00
Edward Firmo
6c52b16ed1 Fix missing links 2024-03-29 19:42:19 +01:00
Edward Firmo
27b458ae2c Reduce trigger for to 1s
Helps #1977
2024-03-29 19:35:10 +01:00
Edward Firmo
f964620f57 Fix indentation for numeric list
To not break the display as a list.
2024-03-29 19:17:26 +01:00
Andy Thomas
a00e87b147 markdown lint 2024-03-29 17:01:42 +01:00
leranp
cb1f214179 Update nspanel_blueprint.yaml 2024-03-29 17:48:01 +03:00
Andy Thomas
ab04f7a86d Markdown lint 2024-03-29 11:28:49 +01:00
Andy Thomas
ea5e349d7a Update install.md 2024-03-29 10:32:05 +01:00
Andy Thomas
653b525bf0 Update howto.md 2024-03-29 10:14:26 +01:00
Andy Thomas
a665abd22c Update error_initializing.md 2024-03-29 10:07:18 +01:00
Andy Thomas
cccbdd96fd Update different_version.md 2024-03-29 09:57:53 +01:00
Andy Thomas
ea459c8bf4 Update customization.md 2024-03-29 09:51:01 +01:00
Andy Thomas
386d39d85a Update addon_climate.md 2024-03-29 09:33:04 +01:00
Edward Firmo
37cf913c0b Open details with short click on alarm_control_panel entity
Solves #1995
2024-03-29 09:25:11 +01:00
Edward Firmo
48f60c7f99 Reduce refresh rate on utilities page values
Solves #1967
2024-03-29 09:02:01 +01:00
Edward Firmo
ec74ebcc79 Fix parameter entity for entity_details_show
Solves #1987
2024-03-27 16:45:30 +01:00
Edward Firmo
c2ad0e9669 RGB color via localevent
Solves #1963
Solves #1991
2024-03-27 14:24:39 +01:00
Edward Firmo
04ae094baf remove delays on utilities page load 2024-03-27 09:16:40 +01:00
Edward Firmo
b85883993f resetUtilitiesGroups on page load 2024-03-27 09:15:57 +01:00
Edward Firmo
39d41914f4 Utilities update only value changed 2024-03-26 20:17:48 +01:00
Edward Firmo
5df7602fc8 Fix to Utilities pages values 2024-03-26 20:05:19 +01:00
Edward Firmo
ccecd91f6f Utilities page caching
Helps with #1977
2024-03-26 18:58:58 +01:00
Edward Firmo
53781082e6 Use CONFIG_ESP32_REV_MIN_3 (experimental)
#1815
2024-03-26 14:18:43 +01:00
Edward Firmo
071007124b Enable PSRAM (experimental)
Please see the following discussions:
- #1983
- #1946
- #1815
2024-03-26 13:34:54 +01:00
Edward Firmo
dd844d1d3c Prepare for service utilities_group_refresh 2024-03-26 09:37:04 +01:00
Edward Firmo
fe7eae4191 Increase movement rate of cursor lines on utilities page
To compensate the lower refresh rate and keep the same speed, although it might look a bit odd. To be tested.
Helps with #1964
2024-03-25 21:16:10 +01:00
Edward Firmo
801324744c Lint 2024-03-25 21:06:29 +01:00
Edward Firmo
e338d130e5 Lint 2024-03-25 21:03:56 +01:00
Edward Firmo
47d8425683 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-25 20:13:43 +01:00
Edward Firmo
844cc0ec4e Reduce refresh rate on utilities pages lines
From 20Hz to 6.7Hz.
Helps with #1964
2024-03-25 20:13:22 +01:00
Edward Firmo
c27a097a5d Increase "close" button size
Solves #1984
2024-03-25 20:02:05 +01:00
Edward Firmo
efdd18995d Merge pull request #1985 from andythomas/docs240324at
adjust docs for #1918
2024-03-25 19:52:44 +01:00
Edward Firmo
82ceca57a7 add sliding_window_moving_average to adc (temp) sensor
Solves #1918
2024-03-25 19:51:45 +01:00
Edward Firmo
942bd84874 Clean-up 2024-03-25 19:49:53 +01:00
Andy Thomas
cf4b2b8f3c adjust docs for #1918
Less noise requires slightly modified parameters for the heating system.
2024-03-25 13:07:32 +01:00
Edward Firmo
808db53981 Fix line break 2024-03-23 17:37:19 +01:00
Edward Firmo
d62623eef7 Use DNS for manual ip
Solves #1969
2024-03-23 14:16:19 +01:00
Edward Firmo
eb640fb09d Use DNS for manual ip
Solves #1969
2024-03-23 14:12:33 +01:00
Edward Firmo
7e9118a3ce Input "Nextion TFT File Folder" description
Solves #1974
2024-03-23 14:02:21 +01:00
Edward Firmo
f7459b0148 Lint 2024-03-23 13:17:04 +01:00
Edward Firmo
5f5b7cb36c Merge pull request #1973 from lafriks-fork/feat/hw_button_state_entity
Allow to specify entity for HW button state status
2024-03-23 13:10:47 +01:00
Lauris BH
1c61acbb63 Update as per review 2024-03-23 14:03:41 +02:00
Edward Firmo
9b2f7bd2b8 Rebuild versioning notifications
Solves #1759
2024-03-23 11:14:45 +01:00
Lauris BH
dd9e0ec79e Fix linting error and update description 2024-03-23 11:18:47 +02:00
Edward Firmo
a012b17653 Support to numeric button page label
Solves #1961
2024-03-23 00:38:00 +01:00
Edward Firmo
4d7e4da594 Update the weather info when sun entity changes
Solves #1971
This also adds a new sun entity selector to the inputs.
2024-03-23 00:14:55 +01:00
Lauris BH
d5a0bde06c Allow to specify entity for HW button state status 2024-03-23 01:01:12 +02:00
Edward Firmo
7db6e4598d Fix is_uploading_tft name 2024-03-22 12:25:06 +01:00
Edward Firmo
3fb8343246 Ignore Nextion events while uploading
Helps with #1946
2024-03-22 11:25:30 +01:00
Edward Firmo
d2b924b355 Disable all services while upload
A service call still possible, but the services won't do anything.
Helps with #1946
2024-03-22 11:21:50 +01:00
Edward Firmo
dbf57053db Split wakeup_page_id from back_page_id
Solves #1947 and makes the whole wake-up engine more reliable.
2024-03-22 10:45:35 +01:00
Edward Firmo
d35c2a77ba Lint 2024-03-22 10:18:48 +01:00
Edward Firmo
64b72ca2d5 Send pre-defined chip color on boot
This solves #1928 as the pre-defined color will always be used when defined, and also helps with #1949 as it will prevent sending the color on every change when a pre-defined color is used.
2024-03-22 10:05:18 +01:00
Edward Firmo
6d5af5a6e0 Input: Hardware Buttons - Always Show Bar
Solves #1933
2024-03-22 09:39:58 +01:00
Edward Firmo
69bf13326c Move chips vars to main variables area 2024-03-21 22:16:45 +01:00
Edward Firmo
72fa7abb2a Lint 2024-03-21 22:04:26 +01:00
Edward Firmo
772ede7f48 Reduced calls to home page components
Solves #1949
2024-03-21 20:17:52 +01:00
Edward Firmo
1b8c1265e9 Return with delays between service calls
Helps with #1949
2024-03-20 22:50:15 +01:00
Edward Firmo
fddf3bda9f Light page hidden components rearrangement 2024-03-20 22:23:11 +01:00
Edward Firmo
ad8cc7788b Change button bar state when relay changes with local control
Solves #1904
2024-03-20 20:31:20 +01:00
Edward Firmo
a3f54d5c43 Lint 2024-03-20 20:09:59 +01:00
Edward Firmo
828a07a636 Use components from dev 2024-03-20 20:05:35 +01:00
Edward Firmo
5e5476f6e2 Reduce number of calls to Nextion - Relay and buttons bars
Helps with #1949
2024-03-20 19:46:47 +01:00
Edward Firmo
231c9aa426 Set back_page_id to page Home
Solves #1945
2024-03-20 19:28:23 +01:00
Edward Firmo
7455df28e8 Remove json component 2024-03-20 19:21:31 +01:00
Edward Firmo
e263047b15 Merge pull request #1940 from Blackymas/beta
v4.3.1 - Ensuring Compatibility with ESPHome v2024.3.0 and Enhancing Stability
2024-03-20 09:11:21 +01:00
Edward Firmo
a85f6fb6c3 Merge pull request #1939 from Blackymas/dev
Use components from `main`
2024-03-20 09:10:19 +01:00
Edward Firmo
fc9017b3c6 Merge pull request #1938 from Blackymas/beta
v4.3.1 - Ensuring Compatibility with ESPHome v2024.3.0 and Enhancing Stability
2024-03-20 09:09:33 +01:00
Edward Firmo
98aae56235 Use components from main 2024-03-20 09:09:21 +01:00
Edward Firmo
ff9de5bf26 Merge pull request #1937 from Blackymas/dev
v4.3.1 to beta
2024-03-20 08:45:39 +01:00
Edward Firmo
2f47ffc42b Bump to v4.3.1 2024-03-20 08:42:32 +01:00
Edward Firmo
6af2ddac99 Use nspanel_ha_blueprint component from beta 2024-03-19 15:44:18 +01:00
Edward Firmo
a647c69f53 Bump to v4.3.1b2 2024-03-19 15:43:00 +01:00
Edward Firmo
e2c639a32d Move reboot button control to on_touch
So save a few more bytes of memory
2024-03-19 15:32:41 +01:00
Edward Firmo
7a18b75204 Merge pull request #1935 from Blackymas/dev
v4.3.1b1
2024-03-19 15:02:58 +01:00
Edward Firmo
e0415c35cd Remove bluetooth_proxy from customizations
It will exceed memory
2024-03-19 14:10:22 +01:00
Edward Firmo
7fda931f67 Remove pre-build test for now 2024-03-19 14:07:53 +01:00
Edward Firmo
b1412f1d12 Use new get_ip_addresses() from ESPHome v2024.3.0 2024-03-19 13:28:11 +01:00
Edward Firmo
94782bf9fc Add relay_settings to refresh_hardware_buttons_bars verbose logs 2024-03-19 13:22:20 +01:00
Edward Firmo
3dbf577a92 Use component nspanel_ha_blueprint from dev
To update page list
2024-03-19 13:16:35 +01:00
Edward Firmo
ce43a31242 Refresh hw btn bar state if state changed
Solves #1933
2024-03-19 11:15:15 +01:00
Edward Firmo
cc756fda35 hw_button_state service to control buttons individually
Solves #1934
2024-03-19 11:13:55 +01:00
Edward Firmo
f28a02fd5d Remove .bin files 2024-03-19 09:52:13 +01:00
Edward Firmo
5f850ae6a3 Remove pre-build test & build for now
PR#5586 is quite active and breaking this. Waiting until it is more stable.
2024-03-19 09:51:27 +01:00
Edward Firmo
4e7bbef1a0 Bump to v4.3.1b1 2024-03-18 23:58:56 +01:00
Edward Firmo
447a07c65b Move page Boot to pos 0 2024-03-18 23:51:09 +01:00
Edward Firmo
480848558f Release notes v4.3.1 2024-03-18 23:14:33 +01:00
Edward Firmo
8f52de210c Delay on all loops
To avoid serial buffer overflow
2024-03-18 18:57:05 +01:00
Edward Firmo
54a4e7775f Exit notification page with notification clear
Solves #1931
2024-03-18 18:55:02 +01:00
Edward Firmo
9059b20773 Do not save built firmware when using beta 2024-03-18 14:49:49 +01:00
Edward Firmo
8226ea6a5b Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-18 10:10:38 +01:00
Edward Firmo
3f39dbcad8 Use Nextion native components replacing command contruction 2024-03-18 10:10:35 +01:00
GitHub Actions
56813c795b Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-17 21:19:10 +00:00
Edward Firmo
9c807f288d Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-17 22:08:21 +01:00
Edward Firmo
271362511f Use ADC sampling
Use esphome/esphome#6330 to enable sampling on adc sensor and smooth the data.
Solves #1918
2024-03-17 22:07:48 +01:00
GitHub Actions
7fca55361c Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-17 21:05:53 +00:00
Edward Firmo
16b5ce4b0b Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-17 21:56:13 +01:00
Edward Firmo
114ea35e55 Adjust boot delays 2024-03-17 21:56:10 +01:00
Edward Firmo
a9dae8fd08 Fix line movement when value is between -1 and +1
Solves #1926
2024-03-17 21:54:24 +01:00
GitHub Actions
27bd854bd5 Pre-built firmware for NSPanel - Boot page increased spacing on versions labels 2024-03-17 19:31:38 +00:00
Edward Firmo
ac3be262fd Boot page increased spacing on versions labels 2024-03-17 20:21:38 +01:00
GitHub Actions
01e99b2f72 Pre-built firmware for NSPanel - Remove debug logs 2024-03-17 13:47:13 +00:00
Edward Firmo
9cd8f6121f Remove debug logs 2024-03-17 14:37:27 +01:00
Edward Firmo
d28ab920c8 Disable boot timer when all info is available 2024-03-17 14:35:59 +01:00
GitHub Actions
9e6fb6eb85 Pre-built firmware for NSPanel - Fix boot progress calcs 2024-03-17 09:59:59 +00:00
Edward Firmo
0d4293b6e4 Fix boot progress calcs 2024-03-17 10:50:09 +01:00
Edward Firmo
59d4c09857 Update customizations 2024-03-17 10:47:46 +01:00
GitHub Actions
05f7932d04 Pre-built firmware for NSPanel - Fix on customizations 2024-03-17 01:36:31 +00:00
Edward Firmo
05bb498e34 Fix page_changed on customizations 2024-03-17 02:26:44 +01:00
Edward Firmo
79573eb541 Fix incorrect call to utilities page on boot 2024-03-17 02:03:47 +01:00
Edward Firmo
4a52b06704 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-17 01:55:01 +01:00
Edward Firmo
bac85239d0 Fix var name tft_version 2024-03-17 01:54:57 +01:00
GitHub Actions
218c551c3e Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-17 00:35:58 +00:00
Edward Firmo
153a906215 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-17 01:25:03 +01:00
Edward Firmo
efee51ea3d Add boot progress bar 2024-03-17 01:24:59 +01:00
GitHub Actions
3d1baba9cb Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-16 10:38:17 +00:00
Edward Firmo
7e00837d8b Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-16 11:28:02 +01:00
Edward Firmo
fb8448fb7d TFT version engine 2024-03-16 11:27:59 +01:00
Edward Firmo
7829382653 Fix line breaks 2024-03-15 23:36:12 +01:00
GitHub Actions
61c2c93c40 Pre-built firmware for NSPanel - Use for device_name sensor 2024-03-15 21:43:01 +00:00
Edward Firmo
2e4b7f2a87 Use ${name} for device_name sensor
Solves #1907
2024-03-15 22:33:06 +01:00
Edward Firmo
55ed3775d1 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-15 22:13:58 +01:00
Edward Firmo
fc53bfc8d8 Send boot settings only when boot event is detected 2024-03-15 22:13:54 +01:00
GitHub Actions
cd19e9174b Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-15 16:33:55 +00:00
Edward Firmo
1179f94ae2 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-15 17:23:55 +01:00
Edward Firmo
7ce40bc4b7 Clean-up 2024-03-15 17:23:51 +01:00
GitHub Actions
37232e19a0 Pre-built firmware for NSPanel - Reorg refresh_hardware_buttons_bars 2024-03-15 14:20:39 +00:00
Edward Firmo
afbeb7a816 Reorg refresh_hardware_buttons_bars
To save a couple of bytes of RAM
2024-03-15 15:10:40 +01:00
GitHub Actions
9db404c099 Pre-built firmware for NSPanel - Allows change brightness when sleeping 2024-03-15 09:58:09 +00:00
Edward Firmo
45c5453c2f Allows change brightness when sleeping
Solves #1919
2024-03-15 10:48:31 +01:00
Edward Firmo
28eb2d064e Clean-up
No functionality changed
2024-03-15 10:33:07 +01:00
Edward Firmo
c1f4eef816 Show hardware button bars on all pages 2024-03-15 10:31:45 +01:00
GitHub Actions
8603bb9687 Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-15 00:52:39 +00:00
Edward Firmo
5f2045ff95 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-15 01:42:00 +01:00
Edward Firmo
904937f06f Clean-up 2024-03-15 01:36:20 +01:00
GitHub Actions
40a75fe4fe Pre-built firmware for NSPanel - Do not show hidden chips with page refresh 2024-03-15 00:33:46 +00:00
Edward Firmo
9e14c2f5d8 Do not show hidden chips with page refresh
Solves #1915
2024-03-15 01:23:41 +01:00
GitHub Actions
3980458fcc Pre-built firmware for NSPanel - Add to events 2024-03-14 21:55:04 +00:00
Edward Firmo
c0a0d2b96b Add device_name to events 2024-03-14 22:41:41 +01:00
Edward Firmo
79363673d3 Replace sendme by current_page text sensor
Solves #1900
2024-03-14 22:38:22 +01:00
Edward Firmo
ce04dd7b99 Use update_bitwise_setting for Expose Relay Fallback Switch
Solves #1914
2024-03-14 13:36:20 +01:00
Edward Firmo
0dc3d86d2e Utilities Page - Cursor Width
Solves #1910
2024-03-14 11:33:10 +01:00
GitHub Actions
fe27f8c619 Pre-built firmware for NSPanel - Do not update indoortemp when embedded temp changes 2024-03-14 10:07:02 +00:00
Edward Firmo
0be79ea5c4 Do not update indoortemp when embedded temp changes
Solves #1911
2024-03-14 10:56:56 +01:00
Edward Firmo
6e57b20edf Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-14 10:15:09 +01:00
Edward Firmo
6b3fe0cf84 Update and improve RTTTL Play docs and examples
Solves #1912
Solves #1901
2024-03-14 10:15:06 +01:00
GitHub Actions
8be3f8a177 Pre-built firmware for NSPanel - Rebuild esphome::api::CustomAPIDevice declarations 2024-03-13 23:35:40 +00:00
Edward Firmo
57fee3c1c6 Rebuild esphome::api::CustomAPIDevice declarations
To reduce chances of a memory leak
2024-03-14 00:23:48 +01:00
Edward Firmo
82341613df Move up link to start-up issues
Solves #1908
2024-03-14 00:18:02 +01:00
Edward Firmo
5bc1e7db96 Control hw button bars locally
Solves #1904
2024-03-14 00:11:36 +01:00
GitHub Actions
bd7c6590f7 Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-13 20:59:46 +00:00
Edward Firmo
16097a5c1d Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-13 21:48:38 +01:00
Edward Firmo
b00798b6ae Move ap to advanced
There's no use for this without `web_server` and `captive_portal`, so let's save some memory.
2024-03-13 21:48:27 +01:00
GitHub Actions
05edda7ceb Pre-built firmware for NSPanel - Add documentation about duplicated entities 2024-03-13 20:47:23 +00:00
Edward Firmo
acb3b7f82e Add documentation about duplicated entities
Solves #1905
2024-03-13 21:35:04 +01:00
Edward Firmo
dd6dd172e2 Use blueprint status to set api variable on TFT 2024-03-13 21:25:58 +01:00
Edward Firmo
1d95198312 Bump to v4.3.1d1 2024-03-13 21:17:53 +01:00
Edward Firmo
585d3142ae Consider value 0 as a "on" state for sensors
Solves #1902
2024-03-13 21:16:40 +01:00
Edward Firmo
953d0b6139 Remove filter for sensor only in the home page values 2024-03-13 21:03:06 +01:00
Edward Firmo
4f21cb442a Update wifi icon when connection changes 2024-03-13 20:17:49 +01:00
Edward Firmo
f49aadd51e Fix component name on entitypage03 icon01
Solves #1902
2024-03-13 19:21:22 +01:00
Edward Firmo
72f74ddbe4 Alignment entities pages
Solves #1903
2024-03-13 11:33:55 +01:00
Edward Firmo
c6be70c7f2 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-13 09:45:00 +01:00
Edward Firmo
9151358284 Add entitypages_show_entities_icons input
Solves #1885
2024-03-13 09:41:50 +01:00
GitHub Actions
d90c180d91 Pre-built firmware for NSPanel - Fix test for temp_units 2024-03-13 08:32:11 +00:00
Edward Firmo
1fb11564d6 Fix test for temp_units
Solves #1834
2024-03-13 09:21:54 +01:00
Edward Firmo
fc2bd3d40b Twice the limits for entities values on CJK
Hopefully solves #1884
2024-03-13 09:18:44 +01:00
Edward Firmo
b02f3c080a Do not show page index when only 1 page
Solves #1883
2024-03-13 08:53:26 +01:00
Edward Firmo
bfe27f0693 Remove default labels on utilities
Solves #1899
2024-03-13 08:38:34 +01:00
Edward Firmo
4ff219075e Merge pull request #1893 from Blackymas/beta
Lint
2024-03-12 16:46:43 +01:00
Edward Firmo
0e8c98e798 Merge pull request #1892 from Blackymas/dev
Lint
2024-03-12 16:45:34 +01:00
Edward Firmo
6fd55ce65d Lint 2024-03-12 16:41:15 +01:00
Edward Firmo
5288cf68b6 Lint 2024-03-12 16:38:51 +01:00
Edward Firmo
e3fb149b58 Use newer python 2024-03-12 16:30:54 +01:00
Edward Firmo
7422704fcc Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-12 16:26:47 +01:00
Edward Firmo
358c363077 Don't test automatically on main 2024-03-12 16:26:34 +01:00
Edward Firmo
427604712d Merge pull request #1890 from Blackymas/beta
v4.3 - Welcome to Framework ESP-IDF, an Utilities Dashboard and Enhanced Localization
2024-03-12 16:17:31 +01:00
Edward Firmo
083ed5bc61 Merge pull request #1889 from Blackymas/dev
v4.3.0 release prep
2024-03-12 16:10:06 +01:00
GitHub Actions
0c83264750 Pre-built firmware for NSPanel - Use components from 2024-03-12 15:08:43 +00:00
Edward Firmo
8af43c2bcc Use components from main 2024-03-12 15:59:02 +01:00
Edward Firmo
33fd9dfd38 Merge pull request #1888 from Blackymas/beta
v4.3 - Welcome to Framework ESP-IDF, an Utilities Dashboard and Enhanced Localization
2024-03-12 15:58:54 +01:00
Edward Firmo
619c18fddc Merge pull request #1887 from Blackymas/dev
v4.3.0 to beta
2024-03-12 15:49:31 +01:00
GitHub Actions
b26f10fc03 Pre-built firmware for NSPanel - Getting prepared for release 2024-03-12 14:25:05 +00:00
Edward Firmo
04d7be368c Getting prepared for release 2024-03-12 12:06:35 +01:00
Edward Firmo
b41caf73be Bump to v4.3.0
Getting ready for releasing
2024-03-12 11:54:53 +01:00
Edward Firmo
edd3e3532d Fix Relay 02 - Chip Icon selector 2024-03-12 11:40:14 +01:00
Edward Firmo
9bd6b4504d Merge pull request #1882 from Blackymas/dev
v4.3.0b3
2024-03-11 23:07:08 +01:00
Edward Firmo
45994f3c0b Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-11 23:00:27 +01:00
Edward Firmo
d61e71a605 Prevents showing "None" when unit_of_mesurement is not available
Solves #1877
2024-03-11 23:00:13 +01:00
GitHub Actions
356d799f92 Pre-built firmware for NSPanel - notification_show minor optimization 2024-03-11 21:59:33 +00:00
Edward Firmo
c8bb294e5e notification_show minor optimization 2024-03-11 22:49:43 +01:00
Edward Firmo
5ab53b794e Support multi-line for bug description 2024-03-11 22:40:02 +01:00
Edward Firmo
8af0802c2d Merge branch 'beta' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-11 22:34:05 +01:00
Edward Firmo
2fb273a4cf Bump to v4.3.0b3 2024-03-11 22:28:03 +01:00
Edward Firmo
e39489e6ad Move notification buttons engine to ESPHome
Solves #1881
Improves #1501
2024-03-11 22:20:36 +01:00
Edward Firmo
1045ce1860 Fix label filter on utilities page
Solves #1877
2024-03-11 21:33:15 +01:00
GitHub Actions
8342532536 Pre-built firmware for NSPanel - Fix invalid call to 2024-03-11 17:58:28 +00:00
Edward Firmo
92940d82f2 Fix invalid call to fan.oscillate
Solves #1873
2024-03-11 18:43:44 +01:00
GitHub Actions
4545174cf1 Pre-built firmware for NSPanel - Merge pull request #1878 from Blackymas/dev 2024-03-10 22:43:08 +00:00
Edward Firmo
e9aa032f66 Compile pre-built on dev only 2024-03-10 23:37:22 +01:00
Edward Firmo
8191762c51 Merge pull request #1878 from Blackymas/dev
v4.3.0b2
2024-03-10 23:33:39 +01:00
Edward Firmo
299633ebf9 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-10 23:32:59 +01:00
Edward Firmo
1e3ba659cf Merge branch 'beta' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-10 23:32:00 +01:00
GitHub Actions
c8686cc379 Pre-built firmware for NSPanel - Bump to v4.3.0b2 2024-03-10 22:30:36 +00:00
Edward Firmo
f2f137789d Bump to v4.3.0b2 2024-03-10 23:20:26 +01:00
Edward Firmo
8b45ec7a85 Rebuild utilities page constructor
Solves #1877
2024-03-10 23:13:57 +01:00
Edward Firmo
79a82f764a Do not show QR code icon when disabled
Solves #1876
2024-03-10 22:33:27 +01:00
GitHub Actions
e79dad99c8 Pre-built firmware for NSPanel - Merge pull request #1874 from Blackymas/dev 2024-03-10 19:37:28 +00:00
Edward Firmo
9b0faffbf2 Merge pull request #1874 from Blackymas/dev
v4.3.0b1
2024-03-10 20:28:00 +01:00
Edward Firmo
9da0744d80 lint 2024-03-10 20:18:10 +01:00
Edward Firmo
599d05ec7d Merge branch 'beta' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-10 20:13:41 +01:00
Edward Firmo
0b6d8e0fd1 bump to v4.3.0b1 2024-03-10 20:06:14 +01:00
Edward Firmo
19ecf80f45 Add pics of utilities page 2024-03-10 19:48:37 +01:00
Edward Firmo
78ee28bc6d Home Assistant icon is shown in red 2024-03-10 19:18:21 +01:00
GitHub Actions
191d1227b9 Pre-built firmware for NSPanel - Rebuilt fan.oscillate call 2024-03-10 13:04:18 +00:00
Edward Firmo
10f928a92d Rebuilt fan.oscillate call
Hopefully solves #1873
2024-03-10 13:54:32 +01:00
Edward Firmo
78f5804730 Cleaning logs 2024-03-09 13:51:33 +01:00
Edward Firmo
03f5b74849 Handle utilities missing items
Solves #168
2024-03-09 10:02:35 +01:00
Edward Firmo
3314280297 New input: Main Climate - Always Show Chip
Solves #1869
2024-03-09 00:02:52 +01:00
Edward Firmo
ee600264c6 Lint 2024-03-08 18:19:38 +01:00
Edward Firmo
1e072a05b3 Creating TFTs v4.3dev4 2024-03-08 18:17:50 +01:00
GitHub Actions
053db917bf Pre-built firmware for NSPanel - Automatic Font Size Adjustment for Entity Page Values 2024-03-08 16:04:07 +00:00
Edward Firmo
7fc66610dc Automatic Font Size Adjustment for Entity Page Values
Solves #1728
2024-03-08 16:54:00 +01:00
Edward Firmo
d328307793 Input - Hide indoor temp
Solves #1724
2024-03-08 16:08:59 +01:00
Edward Firmo
5e9bbb455f Additional Value on Home Page
Solves #1838
2024-03-08 15:58:39 +01:00
Edward Firmo
acd57abdf6 Fix the blueprint update instructions 2024-03-08 14:20:44 +01:00
Edward Firmo
a47c70ae80 Bump HMI to v4.3dev4 2024-03-08 13:36:06 +01:00
Edward Firmo
26c5a42914 Lint 2024-03-08 13:33:42 +01:00
Edward Firmo
32e9246ace Clean-up logs
To reduce RAM requirements
2024-03-08 13:23:30 +01:00
Edward Firmo
1d52396e96 Redraws hw buttons bars after page constructor 2024-03-08 13:20:22 +01:00
Edward Firmo
fa8ee066ac Return notific button engine to Blueprint
Solves #1867
2024-03-08 13:06:55 +01:00
Edward Firmo
6042d3ea94 Fix icon selection
Solves #1178
Solves #1864
2024-03-08 09:56:28 +01:00
Edward Firmo
48a4b3edbf Merge pull request #1865 from andythomas/docs_at240307
Updated docs
2024-03-08 09:51:18 +01:00
Edward Firmo
ae090a2481 Added thanks in the release notes 2024-03-08 09:50:36 +01:00
Andy Thomas
2ebc92439c Lint 2024-03-07 13:00:35 +01:00
Andy Thomas
33c3d55879 Update climate addon docs
Include a concrete example with data.
2024-03-07 12:44:01 +01:00
Edward Firmo
70edd8e5e8 Typo 2024-03-07 10:34:50 +01:00
Edward Firmo
f17b82d350 Update error_initializing.md 2024-03-07 10:34:14 +01:00
Andy Thomas
9f24df32c4 Update 'Blueprint' doc 2024-03-07 09:36:54 +01:00
Andy Thomas
631516f7c6 Update 'compiling errors' doc 2024-03-07 09:25:42 +01:00
GitHub Actions
940f1d90fe Pre-built firmware for NSPanel - Revert display_mode info on event 2024-03-06 20:39:04 +00:00
Edward Firmo
1c367f5269 Revert display_mode info on event 2024-03-06 21:29:32 +01:00
Edward Firmo
b633ac1fe3 Page utilities - Line movement
Solves #168
2024-03-06 21:20:24 +01:00
Edward Firmo
2caf2cced4 Fix Home page utilities icon 2024-03-06 19:48:14 +01:00
Edward Firmo
6d829a7104 Fix Note 2024-03-06 19:46:34 +01:00
Edward Firmo
b796760c81 Fix elif 2024-03-06 19:04:13 +01:00
Edward Firmo
56ff12be12 lock state based icons & colors
Solves #1178
2024-03-06 19:02:29 +01:00
Edward Firmo
6cca648fc9 Fix reference to nspanel.service.pages.
Solves #1862
2024-03-06 18:55:12 +01:00
Edward Firmo
0bff5fc99f Use state_translated from HA v2024.3.0 2024-03-06 18:52:48 +01:00
Edward Firmo
24c6d4d5c0 Expanded Support for "Lock" Entities on Buttons and Chips
Solves #1341
Solves #1723
2024-03-05 23:42:53 +01:00
Edward Firmo
9370f1f3fe Aligning icons on page utilities
Solves #168
2024-03-05 21:16:38 +01:00
Edward Firmo
39662deb91 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-03-03 22:42:06 +01:00
Edward Firmo
f02a6d6b51 Add comments to new pages selector 2024-03-03 22:41:52 +01:00
GitHub Actions
5fbfa2c3d0 Pre-built firmware for NSPanel - v4.3dev2 - Selectable pages for bar buttons 2024-03-03 21:34:40 +00:00
Edward Firmo
536410615e v4.3dev2 - Selectable pages for bar buttons
Supports #168
Solves #1517
Solves #1507
2024-03-03 22:24:29 +01:00
Edward Firmo
c272d56219 Lint 2024-03-02 10:17:44 +01:00
Edward Firmo
b79e657809 Expanded Entity Selection for Home and Climate Pages
Solves #1577
2024-03-02 10:11:30 +01:00
Edward Firmo
695d4a8583 Prevents empty QRcode items sent to panel on initialization
Solves #1849
2024-03-02 09:38:08 +01:00
Edward Firmo
393ae9443e Clean-up inputs
Cosmetics only
2024-03-01 21:57:35 +01:00
Edward Firmo
acff2efd21 No more branch selection for TFT 2024-03-01 21:04:29 +01:00
Edward Firmo
71c2d712dd Update service names on HowTo
Supports #168
2024-03-01 13:50:45 +01:00
Edward Firmo
e830501e97 Fix visibility to secondary values
Supports #168
2024-03-01 13:27:30 +01:00
Edward Firmo
8e71c9b52e Page Utitilies - Blueprint - Show main line
Supports #168
2024-03-01 13:19:31 +01:00
Edward Firmo
38006f256b Lint 2024-03-01 12:59:03 +01:00
Edward Firmo
a7b51ee3c7 Bump to v4.3dev1 2024-03-01 12:57:44 +01:00
Edward Firmo
e689c26915 Clean-up utilities page before showing
Solves #168
2024-03-01 12:49:14 +01:00
Edward Firmo
35caab3659 Lint 2024-02-29 22:00:20 +01:00
Edward Firmo
68fcf691a7 Introducing the Utilities Dashboard
Solves #168
2024-02-29 21:43:06 +01:00
Edward Firmo
1df8e1c6ef Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-29 21:21:08 +01:00
Edward Firmo
748aff12e8 Lint 2024-02-29 21:20:53 +01:00
GitHub Actions
f076e7bf03 Pre-built firmware for NSPanel - Add button utilities to home page 2024-02-29 20:18:37 +00:00
Edward Firmo
f0503412b2 Add button utilities to home page
Solves #168
2024-02-29 21:08:23 +01:00
Edward Firmo
9a6ad742f7 Page utilities - Blueprint - Page constructor & refresher
Solves #168
2024-02-29 19:43:01 +01:00
Edward Firmo
fb7b477f5d Handle empty items in ids 2024-02-29 19:15:22 +01:00
Edward Firmo
ca6c2db015 Components visibility service to support list of components
To reduce number of calls
2024-02-29 18:01:24 +01:00
Edward Firmo
9c03569925 Enhanced Localization: Translated Values
Solves #1777
2024-02-29 15:50:43 +01:00
GitHub Actions
0a904068cb Pre-built firmware for NSPanel - Use from HA v2023.3.0 2024-02-29 13:22:02 +00:00
Edward Firmo
fb09556f7c Use state_translated from HA v2023.3.0
Solves #1777
2024-02-29 14:10:59 +01:00
Edward Firmo
4bc176d01f Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-29 13:22:57 +01:00
Edward Firmo
75495eac93 Remove input "Activate entity page - TRUE/FALSE (Optional)"
The icon will be shown if any entity is assigned.
Supports #999
Supports #946
2024-02-29 13:22:38 +01:00
GitHub Actions
2d6ba06800 Pre-built firmware for NSPanel - Prevents light icons to become totally white 2024-02-29 11:00:43 +00:00
Edward Firmo
a3df5f97a6 Prevents light icons to become totally white
Solves #1567
2024-02-29 11:50:27 +01:00
Edward Firmo
87051d8241 Go to page home when closing
Supports #168
2024-02-28 22:30:09 +01:00
Edward Firmo
149b7bc753 Page utilities - Blueprint - Triggers
Supports #168
2024-02-28 21:37:49 +01:00
Edward Firmo
141244140b Page utilities - Blueprint - Variables - As list
Supports #168
2024-02-28 21:29:09 +01:00
Edward Firmo
569a2cf702 Page utilities - Blueprint - Variables
Supports #168
2024-02-28 21:22:28 +01:00
Edward Firmo
0127bcd8d6 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-28 21:11:13 +01:00
Edward Firmo
f5cb3f6b6e Utilities pages - Blueprint - Inputs 2024-02-28 21:03:11 +01:00
GitHub Actions
79d17012c5 Pre-built firmware for NSPanel - Add page utilites 2024-02-28 18:29:08 +00:00
Edward Firmo
22dd4b0c89 Add page utilites
Supports #168
2024-02-28 19:19:22 +01:00
GitHub Actions
755ced3130 Pre-built firmware for NSPanel - Call service only on touch release 2024-02-28 04:37:34 +00:00
Edward Firmo
df6a565254 Call service only on touch release
Solves #1340
Solves #1822
2024-02-28 05:25:16 +01:00
GitHub Actions
45700b5fef Pre-built firmware for NSPanel - Merge pull request #1839 from shing6326/dev 2024-02-27 22:48:32 +00:00
Edward Firmo
975fc4bd74 Merge pull request #1839 from shing6326/dev
 fix icon, fix required key not provided @data['oscillating…
2024-02-27 23:38:20 +01:00
Edward Firmo
83007112ed Update CJK files 2024-02-27 23:19:11 +01:00
Edward Firmo
9819f52d27 Streamlined Interface: No More Empty Pages
Solves #946
Solves #999
2024-02-27 23:04:52 +01:00
Edward Firmo
fccf3ef6bf Hide empty entities pages
Partially solves #946
Partially solves #999
2024-02-27 22:59:40 +01:00
Edward Firmo
0eccb542b4 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-27 21:35:45 +01:00
Edward Firmo
6347205d05 Hide empty button pages
Partially solves #946
Partially solves #999
2024-02-27 21:35:35 +01:00
GitHub Actions
a587b07359 Pre-built firmware for NSPanel - fix icon, fix required key not provided @data['oscillating'] error 2024-02-27 19:47:02 +00:00
Billy Chan
6f1a6107c9 fix icon, fix required key not provided @data['oscillating'] error 2024-02-28 03:34:55 +08:00
GitHub Actions
fa7b321134 Pre-built firmware for NSPanel - Page Fan with Oscillate Button 2024-02-27 15:01:42 +00:00
Edward Firmo
77f6dacbc1 Page Fan with Oscillate Button
Solves #1340
2024-02-27 15:49:43 +01:00
Edward Firmo
d56baef68d Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-27 14:49:31 +01:00
Edward Firmo
8c8521dc23 Page Light with Power Button
Solves #1549
2024-02-27 14:49:28 +01:00
GitHub Actions
af6ef8f859 Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-27 13:06:22 +00:00
Edward Firmo
c2d2bb4fe2 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-27 13:56:23 +01:00
Edward Firmo
185737e1eb User-Defined Decimal Separator
Solves #1161
2024-02-27 13:55:34 +01:00
Edward Firmo
9ff59624e0 Custom decimal separator on climate page
Solves #1161
2024-02-27 13:47:08 +01:00
Edward Firmo
f819c1fe33 Make button page label visible
Solves #1814
2024-02-27 13:45:36 +01:00
Edward Firmo
455e1f06e4 User defined decimal separator for embedded temperature
Solves #1161
2024-02-27 11:43:03 +01:00
GitHub Actions
f88e8c4afa Pre-built firmware for NSPanel - Fix initial_value for mui_decimal_separator 2024-02-27 10:07:14 +00:00
Edward Firmo
ea474098c8 Fix initial_value for mui_decimal_separator 2024-02-27 10:57:27 +01:00
Edward Firmo
d5f5a3eaaf User defined decimal separator for values
Partially solves #1161
2024-02-27 10:32:06 +01:00
Edward Firmo
89876fdfcf Stop BLE scan before upload TFT
Solves #1815
Solves #1823
2024-02-27 08:00:01 +01:00
Edward Firmo
46a71dd10a Lint 2024-02-27 00:47:11 +01:00
Edward Firmo
ae48ec0bf1 Mock up utilities page 2
In preparation to #168
2024-02-27 00:27:47 +01:00
Edward Firmo
05ce94a7d7 Clean-up inputs 2024-02-26 23:42:19 +01:00
Edward Firmo
28f18fe806 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-26 22:57:29 +01:00
Edward Firmo
9d9ab4c08d Update release notes 2024-02-26 22:57:25 +01:00
GitHub Actions
8793b0f5fd Pre-built firmware for NSPanel - Watchdog was removed 2024-02-26 18:39:59 +00:00
Edward Firmo
d369cd8d23 Watchdog was removed 2024-02-26 19:30:10 +01:00
Edward Firmo
d94e98ee63 Lint 2024-02-26 19:24:22 +01:00
Edward Firmo
d00d082d45 Limits max_runs on queued scripts
Solves #1832
2024-02-26 19:20:45 +01:00
Edward Firmo
4b90515425 Lint 2024-02-26 19:05:34 +01:00
Edward Firmo
9487ca9fe0 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-26 18:36:17 +01:00
Edward Firmo
16e9b899d6 HW button bar in all pages
Partially solves #1835
Partially solves #1517
Solves #1507
2024-02-26 18:36:12 +01:00
Edward Firmo
692e145162 Remove watchdog and reduced logging
Solves #1832
2024-02-26 17:15:09 +01:00
Edward Firmo
f2a1f27e0c HW button bar in all pages
Partially solves #1835
Partially solves #1517
Solves #1507
2024-02-26 09:38:20 +01:00
Edward Firmo
abd55b4bc0 Reorg repo 2024-02-25 17:29:28 +01:00
Edward Firmo
d66aa59b35 Reorg repo 2024-02-25 17:27:11 +01:00
GitHub Actions
751daac8ca Pre-built firmware for NSPanel 2024-02-23 23:27:02 +00:00
Edward Firmo
ec7e97650e Fix dependencies 2024-02-24 00:16:52 +01:00
Edward Firmo
741d2802bd Add test to cool & ble_proxy 2024-02-24 00:14:19 +01:00
Edward Firmo
5e29988209 Lint 2024-02-24 00:06:33 +01:00
Edward Firmo
9da8a02d2c Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-24 00:01:36 +01:00
Edward Firmo
93369d62ec component_visibility replaces component_hide and component_show services
Optimization
2024-02-24 00:01:30 +01:00
GitHub Actions
68c2410feb Pre-built firmware for NSPanel - Fix namespace names 2024-02-23 22:18:20 +00:00
Edward Firmo
13a1822c6e Fix namespace names 2024-02-23 23:08:40 +01:00
Edward Firmo
6467f666f3 Upload TFT memory optimization
Helps with #1686
2024-02-23 23:07:55 +01:00
Edward Firmo
718ec12e3c Fix home page missing components
Solves #1833
2024-02-23 22:57:13 +01:00
Edward Firmo
f640f00d82 Delete page_names.h 2024-02-23 12:22:52 +01:00
Edward Firmo
e8d127681c Fix reference to NextionComponent 2024-02-23 12:19:20 +01:00
Edward Firmo
b3043facad Fix reference to NextionComponent 2024-02-23 12:16:51 +01:00
Edward Firmo
e37cb6dbfd Validate ESPHome when components changes 2024-02-23 12:15:22 +01:00
Edward Firmo
38b2da0976 Fix type name to NextionComponent 2024-02-23 12:12:48 +01:00
Edward Firmo
384e7d4c29 Use latest actions/checkout 2024-02-23 12:10:19 +01:00
Edward Firmo
158a28befc Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-23 12:04:49 +01:00
Edward Firmo
55ea00b50a Add nextion_components.h 2024-02-23 12:04:47 +01:00
GitHub Actions
677bebcafc Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-23 08:31:31 +00:00
Edward Firmo
7f09156414 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-23 09:22:22 +01:00
Edward Firmo
32909c0f2a brightness is now float 2024-02-23 09:21:40 +01:00
GitHub Actions
c184559cff Pre-built firmware for NSPanel - Added captive_portal and removed web_server 2024-02-22 23:19:37 +00:00
Edward Firmo
64563dc0c7 Added captive_portal and removed web_server 2024-02-23 00:09:47 +01:00
Edward Firmo
975dfe87af Include pull request 2024-02-23 00:07:08 +01:00
Edward Firmo
29a22ad8dd Create validate_python.yml 2024-02-23 00:05:43 +01:00
Edward Firmo
96dc528237 Move components to root 2024-02-22 23:57:00 +01:00
Edward Firmo
02d571703f Move components to root 2024-02-22 23:56:16 +01:00
Edward Firmo
b96ef8fde2 Fix external component url 2024-02-22 23:50:49 +01:00
Edward Firmo
3a4ebfdf02 Lint 2024-02-22 23:43:21 +01:00
Edward Firmo
3c27ec3638 Lint 2024-02-22 23:41:19 +01:00
Edward Firmo
01005b5863 Memory optimization & external components
Helps with #1686
- This is deprecating Relay local fallback switches (replaced by globals) to save memory.
- Using reboot timeout from ESPHome instead of custom engine
- Do not change page is already there.
- Use of external components to streamline some repetitive code
- API always transfer colors in RGB array to keep consistency
2024-02-22 23:19:34 +01:00
GitHub Actions
dc12a64724 Pre-built firmware for NSPanel 2024-02-21 01:05:51 +00:00
GitHub Actions
8088ebbf88 Pre-built firmware for NSPanel - Selectable font size for screensaver time display 2024-02-20 23:22:22 +00:00
Edward Firmo
9a2a2a4273 Selectable font size for screensaver time display
Solves #1689
2024-02-21 00:12:36 +01:00
Edward Firmo
9b1e652040 Lint 2024-02-20 18:10:40 +01:00
Edward Firmo
7d640907ac Lint 2024-02-20 12:18:57 +01:00
Edward Firmo
f53ea8792e Utilities page mock-up
In preparation for #168
2024-02-20 12:14:31 +01:00
Edward Firmo
3be0a56ac7 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-19 23:41:49 +01:00
Edward Firmo
7d8bb128c2 Bump secondary hmi to v4.3dev 2024-02-19 23:41:30 +01:00
GitHub Actions
1497c94061 Pre-built firmware for NSPanel - IDF v5 compatibility 2024-02-19 22:16:54 +00:00
Edward Firmo
7be80f9de3 IDF v5 compatibility 2024-02-19 23:07:15 +01:00
GitHub Actions
4965a2b2bc Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-19 20:19:05 +00:00
Edward Firmo
99693bada7 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-19 21:09:39 +01:00
Edward Firmo
421f6dd905 Rebuild update of home page values
Improves #1802
2024-02-19 21:09:35 +01:00
Edward Firmo
15ed97dc06 Rebuild calls to update chips on Home page
Improves #1802
2024-02-19 20:56:51 +01:00
Edward Firmo
88888d0f38 Rebuild update to climate chip in Home page
Improves #1802
2024-02-19 20:48:05 +01:00
Edward Firmo
cfd0c51bfe Rebuild update of custom buttons on Home page
Improves #1802
2024-02-19 20:10:25 +01:00
Edward Firmo
5bc202ed81 Rebuild calls to update indoor temperature
Improves #1802
2024-02-19 19:50:28 +01:00
GitHub Actions
2b3d64c6e4 Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-19 18:34:28 +00:00
Edward Firmo
22998feb31 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-19 19:23:38 +01:00
Edward Firmo
7480aab072 Rebuild calls to outdoor temperature updates
Improves #1802
2024-02-19 19:21:37 +01:00
Edward Firmo
ed0b739821 Add input home_page_background_update
Helps with #1802 by reducing the number of executions of the automation and call to update home page when that input is disabled.
2024-02-19 18:50:58 +01:00
GitHub Actions
5074187120 Pre-built firmware for NSPanel - Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-19 17:07:55 +00:00
Edward Firmo
de14a0275d Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-19 17:58:16 +01:00
Edward Firmo
5f1f6c14f6 Remove restart with 15sec press
The benefit was small compared to the restriction caused. Still available as a customization or with the reset button.
Helps with #1711
2024-02-19 17:58:11 +01:00
GitHub Actions
beb1b327bd Pre-built firmware for NSPanel - Fix package_import_url 2024-02-19 11:55:17 +00:00
Edward Firmo
c485ec1f17 Fix package_import_url 2024-02-19 12:46:16 +01:00
Edward Firmo
8bc2c20969 Remove web server authentication 2024-02-19 12:31:52 +01:00
Edward Firmo
85a39c683c Clean-up 2024-02-19 12:23:13 +01:00
Edward Firmo
38f6e66b85 Trigger action when prebuilt yaml changes 2024-02-19 12:21:30 +01:00
Edward Firmo
7c63d276cc Add an icon to firmware_url component 2024-02-19 12:18:23 +01:00
Edward Firmo
898213eec5 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-19 12:07:52 +01:00
Edward Firmo
3f04b6a1d4 Adjust url to dev
(must be reversed before release)
2024-02-19 12:07:41 +01:00
GitHub Actions
3e330f0369 Pre-built firmware for NSPanel 2024-02-19 11:00:51 +00:00
Edward Firmo
b8f747b8a1 Improved commit message for firmware build 2024-02-19 11:50:44 +01:00
Edward Firmo
eb83666496 Clean-up 2024-02-19 11:44:56 +01:00
Edward Firmo
4b3e0dd4dd Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-19 11:42:59 +01:00
Edward Firmo
88a03996b7 Use commit name from trigger 2024-02-19 11:42:43 +01:00
GitHub Actions
fc025b1333 Automatically update ESPHome firmware for NSPanel 2024-02-19 10:35:07 +00:00
Edward Firmo
fe4aad6f6b Copy instead of move firmware 2024-02-19 11:25:42 +01:00
Edward Firmo
bb1c9343a4 Lint 2024-02-19 11:11:10 +01:00
Edward Firmo
e09a57688b prebuilt action 2024-02-19 10:56:24 +01:00
Edward Firmo
61516584c8 Lint 2024-02-19 10:40:13 +01:00
Edward Firmo
19b1ec5a0b Lint 2024-02-19 10:27:02 +01:00
Edward Firmo
945df79e7f Use barndawgie/build-action@v1.9.0 2024-02-19 10:25:37 +01:00
Edward Firmo
144f9c2a58 FIx testing file names 2024-02-19 09:17:24 +01:00
Edward Firmo
e80df1a63d Fix file name for nspanel_esphome_basic 2024-02-19 09:13:48 +01:00
Edward Firmo
544880459a Lint 2024-02-19 09:07:12 +01:00
Edward Firmo
a5bb903f5f Lint 2024-02-19 09:02:32 +01:00
Edward Firmo
9c7172c4d5 Lint 2024-02-19 08:58:57 +01:00
Edward Firmo
b933becf1a Return captive_portal and web_server 2024-02-19 08:45:26 +01:00
Edward Firmo
ee45d68146 Fix folder for ESPHome files 2024-02-19 08:26:59 +01:00
Edward Firmo
49d249334e upload_tft inline doc 2024-02-19 08:23:04 +01:00
Edward Firmo
f12bc58db9 Document service upload_tft 2024-02-19 08:07:04 +01:00
Edward Firmo
1ff97bf75f New API 2024-02-19 00:31:16 +01:00
Edward Firmo
3d933cd76d New API 2024-02-18 23:19:16 +01:00
Edward Firmo
92585eb06e txt replacing text 2024-02-18 17:49:44 +01:00
Edward Firmo
e394151369 Lint 2024-02-18 17:23:58 +01:00
Edward Firmo
91f6f443e4 Lint 2024-02-18 17:21:13 +01:00
Edward Firmo
b81729a140 Lint 2024-02-18 17:16:53 +01:00
Edward Firmo
7c91fa64ea Lint 2024-02-18 17:12:00 +01:00
Edward Firmo
530c074ce1 Lint 2024-02-18 17:04:21 +01:00
Edward Firmo
4bb878a02b Lint 2024-02-18 16:57:44 +01:00
Edward Firmo
f8945a076d Lint 2024-02-18 16:52:40 +01:00
Edward Firmo
d4c7306b7a Lint 2024-02-18 16:48:09 +01:00
Edward Firmo
7901cbf278 Lint 2024-02-18 16:43:48 +01:00
Edward Firmo
2e202d5935 Update validate_yamllint.yml 2024-02-18 16:40:24 +01:00
Edward Firmo
67476989e3 Update api.md 2024-02-18 11:17:30 +01:00
Edward Firmo
f1ba44ce25 New API schema (in progress) 2024-02-18 11:01:49 +01:00
Edward Firmo
65d37d7403 Rebuilding API (INCOMPLETE) 2024-02-17 21:05:56 +01:00
Edward Firmo
01161b9f25 Merge pull request #1809 from Blackymas/beta
Fix release notes title
2024-02-17 11:21:32 +01:00
Edward Firmo
f453bcffd4 Merge pull request #1808 from Blackymas/v4.2.6dev
Update ReleaseNotes.md
2024-02-17 11:19:26 +01:00
Edward Firmo
32457fcbff Update ReleaseNotes.md 2024-02-17 07:59:54 +01:00
Edward Firmo
7179c21bd8 Merge pull request #1807 from Blackymas/beta
v4.2.6 - Enhancing Stability and User Experience
2024-02-17 00:53:00 +01:00
Edward Firmo
34a69def42 Merge pull request #1806 from Blackymas/v4.2.6dev
v4.2.6 - Enhancing Stability and User Experience
2024-02-17 00:23:10 +01:00
Edward Firmo
e1ddf3e43a Bump to v4.2.6 2024-02-16 23:55:34 +01:00
Edward Firmo
76155b3b1d Prebuilt yaml (experimental) 2024-02-16 22:47:17 +01:00
Edward Firmo
5c8fd6301a New schema for services 2024-02-16 22:45:31 +01:00
Edward Firmo
41613e2af1 esp-idf as default framework 2024-02-16 19:43:34 +01:00
Edward Firmo
edf8c22409 Use new url for download TFT 2024-02-16 19:02:44 +01:00
Edward Firmo
aa760968c4 Rebuild device_name engine
The solution based on `device_attr` wasn't reliable, so I've replaced it by a sensor.

Solves #1787
2024-02-16 19:01:07 +01:00
Edward Firmo
c0430b4410 Keep addons in the root
To avoid breaking changes
2024-02-16 18:55:42 +01:00
Edward Firmo
dc4a5f43e1 Reorg repo
Simplifies things
2024-02-16 16:55:12 +01:00
Edward Firmo
67e358b526 Check if entity_id is valid before getting attributes
Solves #1637
2024-02-16 10:18:38 +01:00
Edward Firmo
fbfdaa6d3b Merge pull request #1801 from illuzn/doc_update
Documentation Enhancement: Add note about bluetooth proxy RAM usage
2024-02-16 00:53:41 +01:00
Edward Firmo
d411a207cb Only hide buttons when page is visible 2024-02-16 00:04:27 +01:00
Edward Firmo
776dc0918e Bump to v4.2.6dev 2024-02-15 23:59:17 +01:00
Edward Firmo
3fa3552768 Lint 2024-02-15 23:56:19 +01:00
Edward Firmo
c82ea7761a Merge pull request #1800 from illuzn/icon_update
Sync icons with HA core 2024.2
2024-02-15 23:44:12 +01:00
Edward Firmo
04248847a5 Use globals for version
Solves #1794
2024-02-15 23:38:45 +01:00
Edward Firmo
5324c4f4b3 Fix button id during upload
Solves #1794
2024-02-15 23:18:21 +01:00
Edward Firmo
716c5c38f3 Move Nextion external component to core
Solves #1803
2024-02-15 22:58:42 +01:00
Edward Firmo
a73b756f51 Clarify memory usage on the customization docs
Solves #1686
2024-02-15 13:45:02 +01:00
illuzn
a59fbac4cd Linting 2024-02-15 22:11:51 +10:30
illuzn
3370f309b6 Sync icons with HA core 2024.2 changes 2024-02-15 22:07:14 +10:30
illuzn
5cd0455e3d Update customisation docs to reflect RAM issues with bluetooth proxy 2024-02-15 21:32:27 +10:30
Edward Firmo
97133cea0b Improve instructions to adjust sleep brightness
Solves #1796
2024-02-14 11:54:45 +01:00
Edward Firmo
579a67feac Do not show chips when climate is auto
Solves #1265
2024-02-14 10:15:07 +01:00
Edward Firmo
668aad4bb2 Do not trigger delay for automation and scene on page construction
Solves #1746
2024-02-14 09:38:04 +01:00
Edward Firmo
a952750a8b Lint 2024-02-13 22:08:58 +01:00
Edward Firmo
7e1f8318ce Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-13 20:30:06 +01:00
Edward Firmo
da58286a44 Fix display when unit of measurement isn't provided
Solves #1790
Solves #1792
2024-02-13 20:30:02 +01:00
Edward Firmo
5a5e963321 Merge pull request #1789 from Blackymas/beta
No validation to text fields
2024-02-13 08:39:33 +01:00
Edward Firmo
eec369dbe6 Merge pull request #1788 from Blackymas/dev
No validation to text fields
2024-02-13 08:33:57 +01:00
Edward Firmo
14121f20d4 No validation to text fields 2024-02-13 08:31:47 +01:00
Edward Firmo
855e606bc8 Merge pull request #1786 from Blackymas/beta
Lint
2024-02-12 13:00:52 +01:00
Edward Firmo
0565f5a997 Merge pull request #1785 from Blackymas/dev
Lint
2024-02-12 12:54:50 +01:00
Edward Firmo
a52a7cee55 Lint 2024-02-12 12:52:15 +01:00
Edward Firmo
156dbf8345 Lint 2024-02-12 12:50:37 +01:00
Edward Firmo
1c8c90d6de Set fetch-depth to 0 2024-02-12 12:49:06 +01:00
Edward Firmo
fd5c7e2a73 Merge pull request #1784 from Blackymas/beta
v4.2.5 - Celebrating 1000 Stars with Enhanced Functionality and UI Improvements
2024-02-12 12:37:39 +01:00
Edward Firmo
7282c23ffd Merge pull request #1783 from Blackymas/dev
v4.2.5 beta
2024-02-12 10:35:18 +01:00
Edward Firmo
cd6eb12e6e Lint 2024-02-12 10:26:24 +01:00
Edward Firmo
05bdd410cc this update is compatible with existing v4.2 components 2024-02-12 10:21:23 +01:00
Edward Firmo
5111fdb3f1 Bump to v4.2.5
Getting prepared to a release.
2024-02-12 09:49:19 +01:00
Edward Firmo
b7c500fef1 Use stable Nextion component 2024-02-12 09:36:03 +01:00
Edward Firmo
a0796a66fc Add link to goal 2024-02-12 09:32:27 +01:00
Edward Firmo
81bbffe43a Lint 2024-02-11 22:21:08 +01:00
Edward Firmo
8dbb83c6d9 Improved Blueprint Input Clarity
Solves #1782
2024-02-11 21:09:42 +01:00
Edward Firmo
d062b542d3 LocalTuya Fan Speed Controls Fix
Solves #1706
2024-02-11 01:21:50 +01:00
Edward Firmo
9c88dd27ea Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-02-11 01:14:31 +01:00
Edward Firmo
2143f4ae27 Split fan.set_percentage from fan.turn_on
Solves an issue when using fan from LocalTuya integration.

Solves #1706
2024-02-11 01:14:25 +01:00
Edward Firmo
e1666fab40 Update ReleaseNotes.md 2024-02-09 19:37:49 +01:00
Edward Firmo
73e82bbfe5 Merge pull request #1778 from bluefoxlee/dev
Update Size 48 font and international character set text.
2024-02-09 19:33:23 +01:00
Edward Firmo
d1d19ffb06 upload_tft_baud_rate on UI 2024-02-09 19:32:07 +01:00
bluefoxlee
f85844d4dd Update size 48 fonts.
Update size 48 fonts in order to fix missing CJK characters. 
Found one missing issue in Climate page.
2024-02-10 02:09:34 +08:00
bluefoxlee
a0e37e811e Update and rename International-charset.txt
Update and rename 2248-International-charset.txt to 2271-International-charset.txt.
To fix size 48 missing CJK characters
2024-02-10 02:07:57 +08:00
Edward Firmo
4750a22ddf Update nspanel_esphome_addon_upload_tft.yaml
Use target speed only when setup
2024-02-09 10:14:06 +01:00
Edward Firmo
7e70e7c3c1 User exit reparse from upload in the component 2024-02-09 09:55:36 +01:00
Edward Firmo
c60f4e97ce Remove direct uart comm
To avoid lost of sync with Nextion queue
2024-02-08 12:46:48 +01:00
Edward Firmo
1e036a204c Unify set_tft_file 2024-02-08 08:22:04 +01:00
Edward Firmo
27b7317070 Getting prepared to v4.2.5 release 2024-02-08 08:15:23 +01:00
Edward Firmo
0b8ac56521 Direct TFT Transfer from GitHub for Arduino Users 2024-02-07 23:57:55 +01:00
Edward Firmo
b02be58888 Revert TFT Upload 2024-02-07 20:59:03 +01:00
Edward Firmo
e552d1c2b1 Remove unused keys from example 2024-02-07 13:38:51 +01:00
Edward Firmo
02deba2380 Align with changed on Nextion component (Lint) 2024-02-07 12:13:58 +01:00
Edward Firmo
4378acacfa Use pr6192 2024-02-07 04:27:42 +01:00
Edward Firmo
7dfe5af6bf Lint 2024-02-07 03:54:24 +01:00
Edward Firmo
a45d421c01 lint 2024-02-07 03:53:10 +01:00
Edward Firmo
604705d9b6 Use new tft upload with persistent connections 2024-02-07 03:49:38 +01:00
Edward Firmo
64ab3fa4b9 Remove tft_branch selector. 2024-02-07 00:30:57 +01:00
Edward Firmo
7629fa086b Don't retry upload unless is a nextion failure 2024-02-06 11:12:43 +01:00
Edward Firmo
6b03d7c44f Don't run scripts during upload 2024-02-06 10:32:18 +01:00
Edward Firmo
9cae2b3d9f Use on_value on select 2024-02-06 10:27:23 +01:00
Edward Firmo
e73cfb731d Clean-up upload engine 2024-02-06 09:54:51 +01:00
Edward Firmo
52e3dd174c Use macro YESNO to standardize True/False messages 2024-02-02 08:53:51 +01:00
Edward Firmo
b94461b39f Initialization tracking
Solves #1528
2024-02-01 19:25:10 +01:00
Edward Firmo
730fc62643 Lint 2024-02-01 14:18:41 +01:00
Edward Firmo
bbb49e189b Lint 2024-02-01 14:13:31 +01:00
Edward Firmo
083936b1a5 Deprecate "Show while loading" 2024-02-01 14:06:13 +01:00
Edward Firmo
b14cdf6678 Shortening model 2024-02-01 09:46:01 +01:00
Edward Firmo
0f19d91e49 Add trigger on blueprint entity state 2024-01-31 18:20:18 +01:00
Edward Firmo
4b1de06991 Update CJK TFT files 2024-01-31 17:53:43 +01:00
Edward Firmo
f70e08cc8f Ensure notification is shown
It possibly fixes #1751
2024-01-31 17:43:42 +01:00
Edward Firmo
31cd798f6f Fix Update of Media Player Icons on Custom Buttons
Solves #1716
2024-01-31 16:58:57 +01:00
Edward Firmo
309f97626c Add "Fan" to chips 2024-01-31 16:43:42 +01:00
Edward Firmo
e5776e948c Move and push latest tag
Solves #1740
2024-01-31 13:20:48 +01:00
Edward Firmo
70e98495a2 Media Player Visualization on Chips 2024-01-31 13:12:52 +01:00
Edward Firmo
cbf2c8d904 Fix Icon's Colors on Home Page Values
Solves #1694
2024-01-31 11:39:34 +01:00
Edward Firmo
51d450a2dc Fix icon color for Home page values
Solves #1694
2024-01-31 11:33:40 +01:00
Edward Firmo
9d88d84faf Publish diagnostic sensor "Blueprint" and simplify TFT upload 2024-01-31 11:31:29 +01:00
Edward Firmo
74ea1ebb0e Move exit_reparse to advanced 2024-01-31 03:35:38 +01:00
Edward Firmo
a01486b454 Fix display in Fahrenheit when Blueprint fails the first time
Solves #1678
2024-01-31 00:56:10 +01:00
Edward Firmo
a5a7c280b7 Lint 2024-01-30 23:32:25 +01:00
Edward Firmo
d4e5e75c9a Clean-up variable_entity
Trying to solve #1746
2024-01-30 23:15:18 +01:00
Edward Firmo
8404a6e62c Converts betwwen C/F before display embedded climate
Solves #1678
2024-01-30 17:03:31 +01:00
Edward Firmo
8e17dfe122 Enhanced Memory Allocation When Uploading TFT 2024-01-29 07:58:33 +01:00
Edward Firmo
505714c6f3 Clarify logs requirements 2024-01-29 07:51:00 +01:00
Edward Firmo
443dfa57c0 Clean-up Blueprint Inputs
Solves #1722
2024-01-29 01:07:48 +01:00
Edward Firmo
edae578cbf Use "page x, entity y" pattern for button & entity pages inputs
Solves #1722
2024-01-29 01:00:33 +01:00
Edward Firmo
77fea5df53 Update all docs with friendly_name
Solves #1719
2024-01-28 21:27:23 +01:00
Edward Firmo
8bca15ae66 Fix missing command on Alarm page enter button
Hopefully this solves #1705
2024-01-28 20:57:36 +01:00
Edward Firmo
8145b61b4f Lint 2024-01-28 20:46:11 +01:00
Edward Firmo
cc5c1dde78 Lint 2024-01-28 20:44:09 +01:00
Edward Firmo
f73f4eba53 Create release_tag.yml
Solves #1740
2024-01-28 20:34:43 +01:00
Edward Firmo
51f2df89bd Review v.4.2.5 notes 2024-01-28 20:25:21 +01:00
Edward Firmo
b3f440985d Use regex for panel name
Improves #1719
2024-01-27 11:54:18 +01:00
Edward Firmo
1492d1b0c0 Fix translation in Czech
Solves #1695
2024-01-27 11:45:30 +01:00
Edward Firmo
8bf92697e7 Fix device_class based icons on cover page
Solves #1688
2024-01-26 17:15:25 +01:00
Edward Firmo
d1d91ae1f2 Lint 2024-01-25 21:18:00 +01:00
Edward Firmo
499dbca170 Lint 2024-01-25 20:20:12 +01:00
Edward Firmo
d646644663 Lint 2024-01-25 20:11:09 +01:00
Edward Firmo
06c2a338eb Relay Interlocking
Solves #965
2024-01-25 20:07:04 +01:00
Edward Firmo
5403776b9a Revert temperature_unit_is_fahrenheit 2024-01-25 17:01:13 +01:00
Edward Firmo
b1b2eef001 Instructions to use non-default branch/tag/version
Solves #609
2024-01-25 17:00:24 +01:00
Edward Firmo
95abb02b5a Identify unavailable area on EU model into the HMI 2024-01-25 12:01:39 +01:00
Edward Firmo
e5329338df Add support to friendly names
Solves #1719
2024-01-25 11:01:46 +01:00
Edward Firmo
da3e1d57d1 Merge pull request #1720 from andythomas/dev
Dev Update docs (install.md) with memory requirements
2024-01-24 13:41:01 +01:00
Andy Thomas
81a2597ced Lint 2024-01-24 10:42:58 +01:00
Andy Thomas
68f3452990 Update docs (install.md) with memory requirements 2024-01-24 10:35:24 +01:00
Andy Thomas
8cf35ac632 Merge remote-tracking branch 'upstream/dev' into dev 2024-01-24 10:07:14 +01:00
Edward Firmo
d5c21adec3 Review alarm control panel docs
Solves #1715
2024-01-23 21:51:56 +01:00
Edward Firmo
79fb4ff0ca Review alarm docs based on new implementation on v4.2
Solves #1715
2024-01-23 21:30:27 +01:00
Edward Firmo
905d57f3ca Lint 2024-01-22 23:29:07 +01:00
Edward Firmo
a09cc9382f Preparing support to Friendly Name 2024-01-22 23:19:39 +01:00
Edward Firmo
a58a7f5443 Update device_name on boot only 2024-01-22 22:50:25 +01:00
Edward Firmo
0af730fd5a Less frequent update for device_name 2024-01-22 22:42:00 +01:00
Edward Firmo
4abd37d981 New ESP-IDF upload memory optimization 2024-01-22 22:33:56 +01:00
Edward Firmo
cd73bbec88 Drop support to legacy panel selection 2024-01-22 22:31:36 +01:00
Edward Firmo
bccb7c86af Reduce variables stored to flash 2024-01-22 22:14:52 +01:00
Edward Firmo
98c6cf9849 Expose sensors to HA 2024-01-21 23:13:38 +01:00
Edward Firmo
1c2cbb9fd2 Expose diagnostics sensors 2024-01-21 00:48:10 +01:00
Edward Firmo
eb9ddcc790 Wake-up sensors
Solves #1687
2024-01-21 00:46:56 +01:00
Edward Firmo
922caf3ca9 Dynamic icons on cover page
Solves #1688
2024-01-20 18:20:19 +01:00
Edward Firmo
ebf89ac078 Export all pics
To support #1696
2024-01-20 13:23:24 +01:00
Edward Firmo
319b6c0349 Add "unknown" to mui 2024-01-19 11:16:07 +01:00
Edward Firmo
eed29a2360 Use version tag instead of main to download TFT
This will avoid old firmware downloading latest TFT from `main`, as it will instead download it from the tag related to the release.
It will fail with users running testing versions, like v4.2.5dev`, which could be a good thing.
2024-01-18 14:09:56 +01:00
Edward Firmo
49c6c34b12 Update ReleaseNotes.md
Solves #1637
2024-01-18 12:31:31 +01:00
Edward Firmo
36c6df726b Enable long click action when no entity is assigned to HW button
Solves #1637
2024-01-18 12:27:46 +01:00
Edward Firmo
6171699d8c Fix is_on/is_off for climate icons
Hopefully solves #1675
2024-01-18 12:17:42 +01:00
Edward Firmo
ea0839ee26 Pointing questions to Discussions area 2024-01-18 08:06:05 +01:00
Edward Firmo
d704de853a Merge pull request #1681 from Blackymas/beta
v4.2.4 - Critical bug fixes
2024-01-18 07:33:12 +01:00
Edward Firmo
ce049f5c8e Link to v4.2.4 - Critical bug fixes 2024-01-18 07:09:57 +01:00
Edward Firmo
4d4c869f45 Merge pull request #1680 from Blackymas/dev
v4.2.4 to beta
2024-01-18 06:58:13 +01:00
Edward Firmo
cb01aeb5ab Update ReleaseNotes.md 2024-01-18 06:53:53 +01:00
Edward Firmo
20cb5224c7 Fix layout of pics 2024-01-18 06:41:47 +01:00
Edward Firmo
9bde7edd59 Bump to v4.2.4 2024-01-18 06:37:30 +01:00
Edward Firmo
67a103df25 Bump to v4.2.4dev 2024-01-18 00:59:46 +01:00
Edward Firmo
4bd1104d42 Fix crash on boot init when no climate entity is selected
Solves #1677
Solves #1676
2024-01-18 00:58:38 +01:00
Edward Firmo
bb46aa9722 Fallback to 115200bps permanently and faster when no connection from ESPHome
Solves #1667
Solves #1674
2024-01-18 00:36:45 +01:00
Andy Thomas
452bf9c282 Revert "add temperature_step to logger"
This reverts commit 9c3b301aa0.
2024-01-17 20:21:54 +01:00
Andy Thomas
d7363e950b Merge branch 'dev' of https://github.com/andythomas/NSPanel_HA_Blueprint into dev 2024-01-17 20:08:48 +01:00
Edward Firmo
4d73312b18 Merge pull request #1673 from Blackymas/beta
Revert template title
2024-01-17 20:08:34 +01:00
Edward Firmo
f26afa06a8 Merge pull request #1672 from Blackymas/dev
Revert template title
2024-01-17 20:07:28 +01:00
Edward Firmo
8849afbbb0 Revert template title 2024-01-17 20:05:26 +01:00
Andy Thomas
9c3b301aa0 add temperature_step to logger 2024-01-17 20:04:30 +01:00
Edward Firmo
f5f2c05550 Merge pull request #1671 from Blackymas/beta
Fix empty title on issues templates
2024-01-17 20:03:27 +01:00
Edward Firmo
eb2f5c987a Merge pull request #1670 from Blackymas/dev
Fix empty title on issues templates
2024-01-17 20:02:11 +01:00
Edward Firmo
51639e43ae Fix empty title 2024-01-17 20:00:45 +01:00
Edward Firmo
9acc00c6df Merge pull request #1669 from Blackymas/beta
v4.2.3 - Bug fixes and minor enhancements
2024-01-17 19:51:27 +01:00
Edward Firmo
7b5af70a4f Merge pull request #1668 from Blackymas/dev
v4.2.3 to beta
2024-01-17 19:30:04 +01:00
Edward Firmo
1c49bc046d Bump to v4.2.3 2024-01-17 19:01:39 +01:00
Edward Firmo
e1b7c4242d Fix crash on climate page, fix climate icon and color
#1649
2024-01-17 14:56:25 +01:00
Edward Firmo
6df5ad0578 Lint 2024-01-17 14:52:19 +01:00
Edward Firmo
cf25bb380b Remove some of the "None" from the code
And also added the changes proposed by https://github.com/Blackymas/NSPanel_HA_Blueprint/issues/1649#issuecomment-1895813283
2024-01-17 14:45:58 +01:00
Edward Firmo
2473816f34 Reverts: "Prioritize legacy upload when TFT is not detected"
Based on feedback from #1659
2024-01-17 14:05:47 +01:00
Edward Firmo
b94b9ffd2e Move sendme to Postinitialize Event
Tentatively solves #1495
2024-01-17 14:04:23 +01:00
Edward Firmo
13110f9949 Move sendme to Postinitialize Event
Tentatively solves #1495
2024-01-17 14:02:03 +01:00
Edward Firmo
52aaea3bb5 Fix for Battery Indicator
Solves #1661
2024-01-17 11:23:49 +01:00
Edward Firmo
01f5ba93a1 Fix battery indicator on cover page
Solves #1661
2024-01-17 11:06:05 +01:00
Edward Firmo
c1a0c0991e Prioritize legacy upload when TFT is not detected
Improves #1659
2024-01-17 10:22:06 +01:00
Edward Firmo
1a20b0cc42 Run tests when tests scripts changes 2024-01-17 09:04:38 +01:00
Edward Firmo
a9c36239d8 Fix current_brightness name conflict 2024-01-17 09:00:29 +01:00
Edward Firmo
c281a68bee Set accuracy_decimals for sensors 2024-01-17 02:57:16 +01:00
Edward Firmo
52b65d1536 Remove None type from global entity load engine
Hopefully this solves #1649
2024-01-17 02:21:44 +01:00
Edward Firmo
9a761dbc71 Replace deprecated global display_last_brightness on "Set display as a light" 2024-01-17 02:04:42 +01:00
Edward Firmo
ccf139fa5f Revert simplification of tft upload
Solves #1659
2024-01-17 01:14:49 +01:00
Edward Firmo
57c1576cc5 Update esphome_advanced_climate_heat_customizations.yaml 2024-01-17 01:06:39 +01:00
Edward Firmo
af64a7ba40 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-01-17 01:00:27 +01:00
Edward Firmo
979f09a673 Merge pull request #1658 from bkbartk/dev
Update nspanel_blueprint.yaml
2024-01-17 01:00:01 +01:00
Edward Firmo
4b585b672d Add Dutch/Italian date format
Add Dutch/Italian date format #1658
2024-01-17 00:59:47 +01:00
Edward Firmo
0e35bae534 Turn-off display when screensaver time is disabled
Potentially solves #1620
2024-01-17 00:41:23 +01:00
Edward Firmo
01c898b98c Restores watchdog rounds every minute at second 30 2024-01-16 22:16:02 +01:00
bkbartk
4bd63e0673 Update nspanel_blueprint.yaml
add Dutch/Italian date format,
Germany and Poland use a . where the Netherlands and Italian use a -
both including leading 0

Maybe making it completely variable would be better, but I'm not sure it's user friently enough.
2024-01-16 20:53:55 +01:00
Edward Firmo
6a64ae5592 Disable blank_issues_enabled 2024-01-16 19:19:33 +01:00
Edward Firmo
071a13076f Prevents crash when climate can't provide hvac_action
Probably solves #1649
2024-01-16 18:23:49 +01:00
Edward Firmo
29087e2ca0 Merge pull request #1648 from Blackymas/beta
v4.2.2 - Bug fixes and minor enhancements
2024-01-16 13:38:04 +01:00
Edward Firmo
dd3f3457c4 Merge pull request #1646 from Blackymas/dev
v4.2.2 to Beta
2024-01-16 11:51:02 +01:00
Edward Firmo
9c68166098 Bump to v4.2.2 2024-01-16 11:28:38 +01:00
Edward Firmo
9a501c45a2 Do not convert Celsius to Fahrenheit when displaying embedded temperature
Solves #1640
2024-01-16 11:17:15 +01:00
Edward Firmo
759e49bdf2 Update ReleaseNotes.md 2024-01-16 11:15:35 +01:00
Edward Firmo
3db3985c03 Send default color if calculated isn't RGB
Solves #1643
2024-01-16 10:38:24 +01:00
Edward Firmo
f34a6b4c1d Reduce watchdog executions
Trying to solve #1620
2024-01-16 10:11:00 +01:00
Edward Firmo
519a8b48fb Lint 2024-01-16 10:00:54 +01:00
Edward Firmo
59cc6a536e Rebuild embedded climate changing calls
Solves #1613
Solves #1627
2024-01-16 09:43:26 +01:00
Edward Firmo
c34018c021 Embedded climate to display the correct slider
Partially solves #1613
Partially solves #1627
2024-01-16 09:03:18 +01:00
Edward Firmo
d55366e3fb Lint 2024-01-16 08:55:11 +01:00
Edward Firmo
89c5cf227d Update "TFT update" manual 2024-01-16 08:53:59 +01:00
Edward Firmo
02b0e8a340 Improved TFT update instructions 2024-01-16 08:50:16 +01:00
Edward Firmo
6dd4733b4b Rebuild Embedded Climate page constructor
Partially solves #1613
Partially solves #1627
2024-01-16 08:42:14 +01:00
Edward Firmo
4cdd80550f Add log to climate page constructor
To help troubleshooting:
- #1627
- #1613
2024-01-16 00:18:23 +01:00
Edward Firmo
17c200da53 Add firmware update service 2024-01-15 19:55:25 +01:00
Edward Firmo
284aa843b4 Drop support to weather.get_forecast
Solves #1630
2024-01-15 19:21:23 +01:00
Edward Firmo
0fbe9bce0f Adding "Compiling Errors Guide" 2024-01-15 18:02:30 +01:00
Edward Firmo
43c78b76f8 Add shortcut to HA logs 2024-01-15 17:57:15 +01:00
Edward Firmo
a2eea277bc Update ReleaseNotes.md 2024-01-15 17:48:14 +01:00
Edward Firmo
edb2fb4a2e Add "Dynamic icons using device_class"
Relates to #1610
2024-01-15 16:32:52 +01:00
Edward Firmo
a6338b173f Prioritize icon from attributes over icon from device_class. 2024-01-15 13:00:55 +01:00
Edward Firmo
2765efa3ca Fix bug preventing device_class based icon to load 2024-01-15 12:55:21 +01:00
Edward Firmo
b46ab6a6d2 Don't use state for sensor's device class icons
Solves b3543af0b7 (commitcomment-137046780)
2024-01-15 12:41:21 +01:00
Edward Firmo
a1a2a897c6 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-01-15 10:41:06 +01:00
Edward Firmo
e0c6fb9810 Remove old upload code
To make it easier to compilers with low resources
2024-01-15 10:41:01 +01:00
Edward Firmo
aae12d0be7 Update validate_yamllint.yml 2024-01-15 01:09:20 +01:00
Edward Firmo
a820723f44 Update validate_yamllint.yml 2024-01-15 01:07:19 +01:00
Edward Firmo
9d6285633c Update validate_yamllint.yml 2024-01-15 01:06:39 +01:00
Edward Firmo
7ed8bd60a4 Added pic for clean build files 2024-01-15 00:56:12 +01:00
Edward Firmo
33a0e418be Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-01-15 00:20:03 +01:00
Edward Firmo
83016ec605 Reduce yaml double verification 2024-01-15 00:19:52 +01:00
Edward Firmo
13e725be02 Merge pull request #1633 from illuzn/light-brightness-fix
Fix for Lights with no brightness supported_features
2024-01-15 00:12:21 +01:00
Edward Firmo
6e8ca96e4f Make it valid to other domains 2024-01-15 00:09:28 +01:00
Edward Firmo
b3543af0b7 Fix typo 2024-01-15 00:05:47 +01:00
Edward Firmo
45a56a4340 Merge pull request #1635 from illuzn/dynamic-icon-patch
Implement dynamic icons and use device_class
2024-01-14 23:51:46 +01:00
Edward Firmo
a2bc755b89 Merge pull request #1628 from illuzn/alignment-fix
[BUG FIX] Fixes the incorrect labelling of the entity pages alignment on US Portrait.
2024-01-14 23:48:54 +01:00
Edward Firmo
40efe3d7b3 Merge pull request #1610 from PaulAntonDeen/patch-2
Add ISO8601 date formatting as an option
2024-01-14 23:48:22 +01:00
Edward Firmo
878cf6a58c Lint 2024-01-14 23:48:01 +01:00
Edward Firmo
008016a3d6 Make it a dict of dicts
To simplify the code.
I've also moved the dictionary to the variables areas as that other place is copied via anchors to many places in the code.
2024-01-14 23:45:39 +01:00
Edward Firmo
286123f9c7 Lint 2024-01-14 23:20:44 +01:00
Edward Firmo
f0a817fff6 Removed unnecessary code and prepared release notes (draft) 2024-01-14 23:15:35 +01:00
Edward Firmo
126e5c0d7b Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-01-14 23:09:48 +01:00
Edward Firmo
217b456e75 Fix crash when internal temp sensor was not defined
This was preventing the rendering of other elements on Home page until those elements gets an update on it's statuses.
This change also add a input for default icon fallback colors for `on` and `off` states.
Solves #1624
2024-01-14 23:09:30 +01:00
illuzn
08d44d4064 Typo fixes 2024-01-15 05:21:12 +10:30
illuzn
ae80c7f1ed Covers, binary_sensors, sensors and switches now use their state and device_classes to dynamically determine the icon displayed.
The mappings used are the same as HA frontend.

This should work wherever the anchor `variable_entity` is called - i.e. button pages, entity pages, home buttons, home status bar, home sensors,
2024-01-15 05:16:17 +10:30
illuzn
df2c7cff28 supported_features attribute is already obtained elsewhere so use that instead. 2024-01-15 01:23:13 +10:30
illuzn
73def31fce Incorrect branch 2024-01-15 01:21:46 +10:30
illuzn
8122516ceb Hides the secondary state shown in bri if the light doesn't support changing brightness. 2024-01-15 01:10:37 +10:30
illuzn
7b40f31599 Fixes the labelling of the alignment on US Portrait.
Need to confirm that this confirguration is the same for EU and US Landscape - it may be that the Nextion HMI is different for US Portrait because of rotation.
2024-01-14 16:53:00 +10:30
Edward Firmo
a81be28085 Merge pull request #1609 from PaulAntonDeen/patch-1
Fix Wi-Fi reference on QR code example
2024-01-12 22:47:38 +01:00
Paul Deen
f74dc421e4 Update nspanel_blueprint.yaml
Added ISO8601 month day seperation for date : "-" see https://en.wikipedia.org/wiki/ISO_8601
2024-01-12 16:13:46 +01:00
Paul Deen
0ac153dd56 Update blueprint.md
Update the QR code string from Wi-Fi to WIFI to match the QR URI standard (not it will work if you scan it with an android phone).
2024-01-12 15:58:39 +01:00
Edward Firmo
327de69a6f Merge pull request #1608 from Blackymas/beta
v4.2.1 - Bug fixes
2024-01-12 14:23:27 +01:00
Edward Firmo
1036182bd2 Merge pull request #1607 from Blackymas/dev
v4.2.1 to beta
2024-01-12 13:42:09 +01:00
Edward Firmo
6bda8a56ea Bump to v4.2.1 2024-01-12 13:27:00 +01:00
Edward Firmo
dc1f836684 Moving "changing the framework" higher 2024-01-11 23:37:49 +01:00
Edward Firmo
f0216982e0 Update howto.md 2024-01-11 23:19:45 +01:00
Edward Firmo
007fb1f70d Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-01-11 23:16:42 +01:00
Edward Firmo
7b1557894b Add "Clean build files" to the update instructions
Solves #1601
2024-01-11 23:16:39 +01:00
Edward Firmo
8b4e3ea4c9 Update howto.md 2024-01-11 23:00:50 +01:00
Edward Firmo
1e570dc18e Fix links 2024-01-11 22:46:05 +01:00
Edward Firmo
66b1e0b3e7 Ask for panel model 2024-01-11 22:11:19 +01:00
Edward Firmo
982453109a Fix crash when light don't provides an icon color
Solves #1599
2024-01-11 22:03:46 +01:00
Edward Firmo
4cb2142b83 Merge pull request #1591 from Blackymas/beta
v4.2 - Multi-Alarm Control, Dual Thermostat Functionality, and More
2024-01-11 18:15:29 +01:00
Edward Firmo
221c6a38b2 Merge pull request #1595 from Blackymas/dev
Lint
2024-01-11 17:57:42 +01:00
Edward Firmo
be1266dd24 Lint 2024-01-11 17:56:23 +01:00
Edward Firmo
c57ae981db Lint 2024-01-11 17:50:57 +01:00
Edward Firmo
e7d6e19cf4 Merge pull request #1594 from Blackymas/dev
Lint
2024-01-11 17:35:59 +01:00
Edward Firmo
5b099b9c63 Lint 2024-01-11 17:30:29 +01:00
Edward Firmo
a03e348a90 Lint 2024-01-11 17:23:10 +01:00
Edward Firmo
2fdc32285f Merge pull request #1593 from Blackymas/dev
Lint
2024-01-11 17:15:47 +01:00
Edward Firmo
9f5e162b11 Lint 2024-01-11 17:10:04 +01:00
Edward Firmo
1c76d8eb7b Lint 2024-01-11 17:08:05 +01:00
Edward Firmo
e06cd0d464 Lint 2024-01-11 17:01:46 +01:00
Edward Firmo
03114ac80c Merge pull request #1590 from Blackymas/dev
v4.2 - Prepare for release
2024-01-11 16:55:43 +01:00
Edward Firmo
ca8f49a24d Bump to v4.2
Ready for release
2024-01-11 16:51:17 +01:00
Edward Firmo
8f94bdae58 Merge pull request #1589 from bluefoxlee/dev
Update CJK character set for future reference
2024-01-11 12:38:28 +01:00
Edward Firmo
ec95810e21 Update release notes 2024-01-11 12:37:52 +01:00
Edward Firmo
019c420024 Testing the test 2024-01-11 12:29:55 +01:00
bluefoxlee
3b160f4d63 Adding Punctuation 2024-01-11 19:28:27 +08:00
bluefoxlee
9aa17c29a3 Delete dev/ui/fonts/CJK/20902--ChineseCharacters-Set.txt 2024-01-11 19:28:03 +08:00
bluefoxlee
1fa7e348be Adding Punctuation 2024-01-11 19:27:43 +08:00
Edward Firmo
3dd70c3be1 Testing the test 2024-01-11 12:26:16 +01:00
bluefoxlee
0606196d29 Adding Punctuation 2024-01-11 19:26:14 +08:00
Edward Firmo
82dd4cb833 Update validate_yamllint.yml 2024-01-11 12:23:59 +01:00
bluefoxlee
56d1e2e407 Add Japanese/Korean/Hong Kong Character Set
Add Japanese/Korean/Hong Kong Character Set
2024-01-11 19:23:12 +08:00
bluefoxlee
47e67d2d4b Update to 5551 Chinese Characters Set
Update to 5551 Chinese Characters Set
2024-01-11 19:22:06 +08:00
bluefoxlee
db0cd22193 Replace 4808 Set
Replace 
4808-Characters-Set.txt
With
5551-Chinese-Characters-Set.txt
2024-01-11 19:21:25 +08:00
Edward Firmo
d1328cde66 Update validate_yamllint.yml 2024-01-11 12:20:58 +01:00
Edward Firmo
78839a1396 Testing the test 2024-01-11 12:17:51 +01:00
Edward Firmo
ec140bf55d Update validate_yamllint.yml 2024-01-11 12:15:46 +01:00
Edward Firmo
a1e50237fb Update validate_yamllint.yml 2024-01-11 12:13:42 +01:00
Edward Firmo
1ce2efd25f Testing the test 2024-01-11 12:09:39 +01:00
Edward Firmo
a705964468 Update validate_yamllint.yml 2024-01-11 12:07:24 +01:00
Edward Firmo
126e9fb946 Testing the tests...
This should generate warnings on yamllint
2024-01-11 12:06:04 +01:00
Edward Firmo
ff3bde78e4 Update nspanel_esphome_prebuilt.yaml 2024-01-11 12:03:44 +01:00
Edward Firmo
37450c5643 Update validate_yamllint.yml 2024-01-11 12:01:34 +01:00
Edward Firmo
6bf36ded89 Lint 2024-01-11 11:52:39 +01:00
Edward Firmo
ce9d45504c disable empty-values rule 2024-01-11 11:45:07 +01:00
Edward Firmo
36eea7c483 Typo 2024-01-11 11:42:49 +01:00
Edward Firmo
f50994d4bc Disable quoted-strings rule 2024-01-11 11:39:55 +01:00
Edward Firmo
1059528825 Disable key ordering rule 2024-01-11 11:36:06 +01:00
Edward Firmo
0c6f62f9b8 Update yamllint.yml 2024-01-11 11:33:01 +01:00
Edward Firmo
3e75c94031 Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-01-11 11:25:09 +01:00
Edward Firmo
c62ad5454b Sort Milestones by title 2024-01-11 11:22:22 +01:00
Edward Firmo
f8fee99972 Merge pull request #1587 from andythomas/bugfix_1574
bugfix for embedded climate/cool functionality
2024-01-11 11:08:45 +01:00
Edward Firmo
cb840c53a8 Update ReleaseNotes.md 2024-01-11 10:55:43 +01:00
Andy Thomas
c7fd545701 corrected typo 2024-01-11 08:59:44 +01:00
Andy Thomas
35f09a5582 bugfix for embedded climate/cool functionality 2024-01-11 08:43:35 +01:00
Edward Firmo
287a49f617 Merge pull request #1586 from Blackymas/dev
v4.2 Beta 7
2024-01-11 01:54:03 +01:00
Edward Firmo
0a2970eb7f Bump version to 4.2beta.7 2024-01-11 01:48:19 +01:00
Edward Firmo
755e69388f Beta 7 2024-01-11 01:34:06 +01:00
Edward Firmo
03d1aa477c Fix crash when light doesn't provide attribute rgb_color
Solves #1584
Solves #1585
2024-01-11 01:32:20 +01:00
Edward Firmo
ff42959751 Lint 2024-01-11 01:13:57 +01:00
Edward Firmo
c642da6c3c Upload file selector on esp-idf only 2024-01-11 00:52:56 +01:00
Edward Firmo
06b0ccfd10 Add reference to #1583
Add reference to #1583
2024-01-10 21:08:08 +01:00
Edward Firmo
dc4312c302 Wrap-up release notes 2024-01-10 21:00:35 +01:00
Edward Firmo
45c3eafece Merge pull request #1581 from Blackymas/dev
v4.2 Beta 6
2024-01-10 15:18:27 +01:00
Edward Firmo
cc976ec820 Bump version to 4.2beta.6 2024-01-10 14:10:53 +01:00
Edward Firmo
c8d84a6458 Use relative pics 2024-01-10 09:20:17 +01:00
Edward Firmo
e906fc76b9 Add web_server 2024-01-10 08:37:12 +01:00
Edward Firmo
f53f1fb30c Fix display of unit_of_measurement when it is None
Solves #1576
2024-01-10 08:25:07 +01:00
Edward Firmo
a1e23fc4be Moved outside CJK folder 2024-01-10 02:54:41 +01:00
Edward Firmo
948124927d Fix tft url when nextion_update_url is selected 2024-01-10 01:49:17 +01:00
Edward Firmo
1078125b98 Avoid displayin "None" when no icon is available
Display `all_icons.blank` instead.
Solves #1576
2024-01-10 01:36:48 +01:00
Edward Firmo
9dc93d8969 Getting ready for release 2024-01-09 23:54:50 +01:00
Edward Firmo
7c46f5d1f0 Merge pull request #1573 from andythomas/dev
Dev Allow to set upper and lower set point for embedded thermostat
2024-01-09 23:52:12 +01:00
Edward Firmo
e5fcd218e5 Update ReleaseNotes.md 2024-01-09 23:34:40 +01:00
Edward Firmo
abf90eec4a Expand this to climate cool & dual 2024-01-09 23:27:44 +01:00
Edward Firmo
945732b51a Issues templates 2024-01-09 23:09:15 +01:00
Andy Thomas
8c70f3b94d rename according to esphome convention 2024-01-09 22:21:43 +01:00
Edward Firmo
f9777209e3 Merge pull request #1575 from Blackymas/dev
v4.2 Beta 5
2024-01-09 21:19:15 +01:00
Edward Firmo
1fc0b22f44 Lint 2024-01-09 18:53:38 +01:00
Edward Firmo
a9ef296fb2 Display ° when moving sliders
Solves #1569
2024-01-09 18:49:57 +01:00
Andy Thomas
315d982029 Update documentation: set points embedded heater 2024-01-09 18:37:17 +01:00
Andy Thomas
ff5894fa68 allow to define set points for embedded heater
This allow to set the upper and lower set point for the embedded thermostat heater. The naming was taken from the HA generic thermostat, i.e. `cold_tolerance` and `hot_tolerance`
2024-01-09 18:33:39 +01:00
Edward Firmo
b9c66a33a6 Add "Model does not match" to manual 2024-01-09 18:24:24 +01:00
Edward Firmo
02615c0cd0 Merge pull request #1570 from Blackymas/dev
v4.2 Beta 4
2024-01-09 14:22:48 +01:00
Edward Firmo
dc2c777580 Rebuilt climate sliders limits
Solves #1551
Solves #1554
Solves #1561
Solves #1562
2024-01-09 14:03:29 +01:00
Edward Firmo
d010cf4b28 Fix icon color based on state
Solves #1565
2024-01-09 12:14:35 +01:00
Edward Firmo
33cce61147 ESP-IDF v5 compatibility 2024-01-09 11:38:17 +01:00
Edward Firmo
973d8ec37a Check if entity is valid before using it's values
Trying to fix #1559 and #1563
2024-01-09 00:29:44 +01:00
Edward Firmo
a520d0773c Merge pull request #1559 from Blackymas/dev
v4.2 Beta 2
2024-01-08 20:35:50 +01:00
Edward Firmo
869c8160d4 Prioritize user's selected icon color
Solves #1558
2024-01-08 20:30:36 +01:00
Edward Firmo
4bc3fdb28b Keeps relay info updated
Solves #1550
2024-01-08 18:59:10 +01:00
Edward Firmo
d71a1e1fe8 Change slider focus with click on temperature values 2024-01-08 16:04:03 +01:00
Edward Firmo
cded65a9ec Lint 2024-01-08 15:49:13 +01:00
Edward Firmo
f24ba9739d Lint 2024-01-08 15:40:33 +01:00
Edward Firmo
86acccc36b Updated install 2024-01-08 15:37:15 +01:00
Edward Firmo
cfb8352f85 Lint 2024-01-08 12:39:03 +01:00
Edward Firmo
a056106a9f Lint 2024-01-08 12:35:59 +01:00
Edward Firmo
2bc47b41d6 Merge pull request #1555 from Blackymas/dev
v4.2 Beta 1
2024-01-08 12:23:35 +01:00
Edward Firmo
eff58b978a Test against released ESPHome 2024-01-08 10:28:19 +01:00
Edward Firmo
649bc9ff0d Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-01-08 10:26:23 +01:00
Edward Firmo
c50a6cc5e4 Lint 2024-01-08 10:26:14 +01:00
Edward Firmo
c8be47b2e5 Delete nspanel_esphome_prebuilt.bin 2024-01-08 10:24:02 +01:00
Edward Firmo
940477b1a9 Bump version to "4.2beta.1" 2024-01-08 10:23:20 +01:00
Edward Firmo
6ddac2d53f Text improvements 2024-01-08 10:15:42 +01:00
Edward Firmo
b304be171d Send both target_temp_high and target_temp_low when calling set_temperature service with range
Solves #1551
Solves #1554
Solves #1542
2024-01-07 22:41:33 +01:00
Edward Firmo
1e65a7ef05 Lint 2024-01-07 01:42:41 +01:00
Edward Firmo
4590c9e1c7 Rebuild climate sliders
Solves #1459
Solves #1510
Solves #1531
Solves #1542
Solves #1547
2024-01-07 01:33:58 +01:00
Edward Firmo
d17206c57d Set slider to be controlled by +/-
Solves #1548
2024-01-07 00:16:56 +01:00
Edward Firmo
10b323c2d6 Lint 2024-01-06 20:26:01 +01:00
Edward Firmo
88d84a8bbd Lint 2024-01-06 20:20:49 +01:00
Edward Firmo
8c4c06b067 Lint 2024-01-06 20:14:54 +01:00
Edward Firmo
6f5ebab2ed Lint 2024-01-06 20:09:31 +01:00
Edward Firmo
2422400a28 Lint 2024-01-06 20:03:14 +01:00
Edward Firmo
c77758b0f2 Uploading to Nextion 2024-01-06 15:49:04 +01:00
Edward Firmo
ef434eb3b6 Integrating your panel to Home Assistant 2024-01-06 14:04:48 +01:00
Edward Firmo
11deb78613 Add instructions for when the buttons are not available
Solves #1494
2024-01-06 08:51:12 +01:00
Edward Firmo
56be238c65 Lint 2024-01-06 08:42:02 +01:00
Edward Firmo
df1434fd34 Inform the change API Encryption breaks connection with HA
Solves #1540
2024-01-06 08:33:48 +01:00
Edward Firmo
27ca231442 Lint 2024-01-06 01:15:03 +01:00
Edward Firmo
8b2ed460b6 Lint 2024-01-06 01:11:40 +01:00
Edward Firmo
e86919afec Lint 2024-01-06 01:09:23 +01:00
Edward Firmo
9a8ff1159b Standardize heater_relay on docs
Solves #1541
2024-01-06 00:44:29 +01:00
Edward Firmo
fd3b67288c Add instruction on how-to open pages from Home Assistant
Solves #1471
Solves #1522
2024-01-05 22:47:51 +01:00
Edward Firmo
68d921c1ee Fix page name on long_press of buttons pages
Solves #1535
Solves #1534
Solves #1511
2024-01-05 13:30:19 +01:00
Edward Firmo
a259d354b3 Lint 2024-01-05 12:25:00 +01:00
Edward Firmo
02b7420798 Lint 2024-01-05 12:23:00 +01:00
Edward Firmo
5470794a17 Lint 2024-01-05 12:20:26 +01:00
Edward Firmo
f410a205e9 Lint 2024-01-05 12:18:29 +01:00
Edward Firmo
706c600c5c Lint 2024-01-05 12:10:11 +01:00
Edward Firmo
bed6d63c7a Lint 2024-01-05 12:01:21 +01:00
Edward Firmo
f77657fabb Lint 2024-01-05 11:53:50 +01:00
Edward Firmo
d4949d16d7 Lint 2024-01-05 11:51:29 +01:00
Edward Firmo
9686a62619 Lint 2024-01-05 11:49:42 +01:00
Edward Firmo
1896e4fc68 Lint 2024-01-05 11:44:19 +01:00
Edward Firmo
f12d4c1eea Lint 2024-01-05 11:41:56 +01:00
Edward Firmo
d235ddb4ac Lint 2024-01-05 11:35:07 +01:00
Edward Firmo
4d540a8b94 Lint 2024-01-05 11:33:34 +01:00
Edward Firmo
daa9142f7f Lint 2024-01-05 11:27:52 +01:00
Edward Firmo
a617a84dc7 Lint 2024-01-05 11:24:32 +01:00
Edward Firmo
c0ffb0896c Lint 2024-01-05 11:21:57 +01:00
Edward Firmo
03d04fcd6b Markdown links 2024-01-05 11:16:12 +01:00
Edward Firmo
75c2ff88b7 Run only when a -md file changes 2024-01-05 11:14:25 +01:00
Edward Firmo
3b1a704b36 Exceptions 2024-01-05 11:11:01 +01:00
Edward Firmo
c35808b560 Remove docs in German 2024-01-05 11:06:39 +01:00
Edward Firmo
9c0958dc51 Lint 2024-01-05 10:59:55 +01:00
Edward Firmo
de3ec8e3d9 Lint 2024-01-05 10:54:53 +01:00
Edward Firmo
f69b48df52 Lint 2024-01-05 10:50:55 +01:00
Edward Firmo
371803dcf3 Markdown links 2024-01-05 10:45:50 +01:00
Edward Firmo
bcc8794b19 Lint 2024-01-05 10:35:35 +01:00
Edward Firmo
c3b11eb581 Lint 2024-01-05 10:33:14 +01:00
Edward Firmo
ddbe7d9723 Lint 2024-01-05 10:29:36 +01:00
Edward Firmo
216f6f3102 Markdown links 2024-01-05 10:27:05 +01:00
Edward Firmo
db8e204fa6 Update validate_markdown.yml 2024-01-05 10:20:59 +01:00
Edward Firmo
afea2518ce Create config file 2024-01-05 10:19:16 +01:00
Edward Firmo
484fc4ba8c Update validate_markdown.yml 2024-01-05 10:13:25 +01:00
Edward Firmo
d158a801ad Update validate_markdown.yml 2024-01-05 10:11:21 +01:00
Edward Firmo
5268e214a3 Lint 2024-01-05 10:07:09 +01:00
Edward Firmo
71e33527a5 Lint 2024-01-05 10:05:38 +01:00
Edward Firmo
671145a56b Lint 2024-01-05 10:03:03 +01:00
Edward Firmo
65dc1cdf25 Lint 2024-01-05 09:59:24 +01:00
Edward Firmo
e766b8ccb9 Lint 2024-01-05 09:46:38 +01:00
Edward Firmo
bba6eb2aa6 Lint 2024-01-05 09:37:12 +01:00
Edward Firmo
ad2edfd905 Markdown lint 2024-01-05 09:30:42 +01:00
Edward Firmo
716845bd0b Markdown lint 2024-01-05 09:28:10 +01:00
Edward Firmo
8e70389fc4 Update README.md 2024-01-05 09:23:44 +01:00
Edward Firmo
c08c133a15 Revert "Use yaml for rules"
This reverts commit 70e6a88638.
2024-01-05 09:17:49 +01:00
Edward Firmo
70e6a88638 Use yaml for rules 2024-01-05 09:16:41 +01:00
Edward Firmo
469a84492c Update .markdownlint.jsonc 2024-01-05 09:14:32 +01:00
Edward Firmo
099f530947 Update validate_markdown.yml 2024-01-05 09:09:28 +01:00
Edward Firmo
f6b400aafa Update validate_markdown.yml 2024-01-05 09:08:23 +01:00
Edward Firmo
dae5d5b574 Update link to config file 2024-01-05 09:04:26 +01:00
Edward Firmo
f0661f0a6c Update validate_markdown.yml 2024-01-05 08:57:12 +01:00
Edward Firmo
8f200fbd0a Update validate_markdown.yml 2024-01-05 08:39:18 +01:00
Edward Firmo
195105e1f6 Update validate_markdown.yml 2024-01-05 08:37:47 +01:00
Edward Firmo
0cc4c4fddb Update validate_markdown.yml 2024-01-05 08:36:23 +01:00
Edward Firmo
d099d45eae Update validate_markdown.yml 2024-01-05 08:32:04 +01:00
Edward Firmo
b5115df38e Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-01-05 08:26:07 +01:00
Edward Firmo
797698ed4f Update Markdown validations 2024-01-05 08:25:57 +01:00
Edward Firmo
0d4c2a012b Merge pull request #1537 from tikismoke/patch-1
DOC explain relay fallback mode
2024-01-05 07:49:44 +01:00
Edward Firmo
763693c2ca Validate markdown 2024-01-05 07:48:47 +01:00
Edward Firmo
bc6be10462 Update ReleaseNotes.md 2024-01-05 07:32:14 +01:00
Edward Firmo
cbb08dc747 A bit of rewording and adding reference to the issue
Solves #1349
2024-01-05 07:20:03 +01:00
tikismoke
c4c65ebf34 Update customization.md 2024-01-05 05:04:26 +01:00
Edward Firmo
622279c732 Update install.md 2024-01-05 02:44:00 +01:00
Edward Firmo
76738b6c61 Update install.md 2024-01-05 02:43:08 +01:00
Edward Firmo
173fb22fd7 Update install.md 2024-01-05 02:39:42 +01:00
Edward Firmo
8de24eafa1 Update install.md 2024-01-05 02:16:56 +01:00
Edward Firmo
d3388f2f01 Update install.md 2024-01-05 02:16:03 +01:00
Edward Firmo
4416605d85 That is not that important 2024-01-05 01:49:42 +01:00
Edward Firmo
f28f4b59d6 Replacing highlights with blockquotes 2024-01-05 01:47:51 +01:00
Edward Firmo
ded74c787f Migrating highlights to blockquotes 2024-01-05 01:39:23 +01:00
Edward Firmo
3916649e73 Update install.md 2024-01-05 01:21:04 +01:00
Edward Firmo
c293b3b2ec Update install.md 2024-01-05 01:20:05 +01:00
Edward Firmo
ca47631472 Updated intallation instructions (partial) 2024-01-05 00:53:09 +01:00
Edward Firmo
e19520e7df Update CJK fonts
Based on new fonts from #1532
2024-01-04 23:24:02 +01:00
Edward Firmo
37f2606aed Remove redundant refresh calls
Solves #1529
2024-01-04 23:02:48 +01:00
Edward Firmo
f77c7efbd6 Fix buttons positions on US Land models
Solves #1533
2024-01-04 21:49:15 +01:00
Edward Firmo
0cc3e4fe6d Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2024-01-04 21:36:02 +01:00
Edward Firmo
b620f543a2 Add charsets to the repo 2024-01-04 21:35:48 +01:00
Edward Firmo
32b29f140f Merge pull request #1532 from bluefoxlee/dev
Update CJK fonts and T.Chinese translation
2024-01-04 21:34:55 +01:00
bluefoxlee
0467fed532 Merge branch 'Blackymas:dev' into dev 2024-01-05 03:28:08 +08:00
Edward Firmo
24eb593a29 Update install.md 2024-01-04 20:27:54 +01:00
bluefoxlee
57e2106baa Update CJK fonts
- Add HKSCS most command characters (548)
- Add fullwidth punctuation marks
- Adjust font typeface/size
2024-01-05 03:27:21 +08:00
Edward Firmo
8cbe6181f1 Update install.md 2024-01-04 20:27:05 +01:00
bluefoxlee
d694867474 Update T.Chinese translation
Very minor update.
2024-01-05 03:21:14 +08:00
Edward Firmo
f178c45d16 Update install.md 2024-01-04 20:15:59 +01:00
Edward Firmo
348763d4d6 Update installation instructions
This still draft
2024-01-04 20:02:41 +01:00
Edward Firmo
9f4b571ddf Update buttons on climate page
Solves #1515
2024-01-04 15:40:53 +01:00
Edward Firmo
77a2ab7c46 Do not update climate entity when page home is refreshed
Solves #1530
2024-01-04 15:33:06 +01:00
Edward Firmo
fe124dfe9c Handles HVAC mode auto
Solves #1459
2024-01-04 10:58:19 +01:00
Edward Firmo
8f46a44cca Store TFT file to resist power cycle 2024-01-04 10:53:06 +01:00
Edward Firmo
7414d116fd New installation manual (draft) 2024-01-04 10:51:33 +01:00
Edward Firmo
602bc03d02 Change TFT selector's saving on power cycle 2024-01-04 02:50:29 +01:00
Edward Firmo
e0d821a7ed Prevent repeated report settings in a sequence 2024-01-04 01:35:19 +01:00
Edward Firmo
795e23aba6 Support single temperature when range is null
Solves #1510
2024-01-04 01:24:58 +01:00
Edward Firmo
4979fe856e Update nspanel_esphome_prebuilt.bin 2024-01-03 23:54:29 +01:00
Edward Firmo
beae026a0b Rebuilt nspanel_us files
Solves #1509
2024-01-03 23:52:40 +01:00
Edward Firmo
3ba64b6108 Add SSID to wifi change instructions
Solves #1476
2024-01-03 23:28:59 +01:00
Edward Firmo
ffa34d67bd Rebuilt nspanel_CJK_eu.hmi
Solves #1513
The TFT was also re-generated, but has no difference to the previous one.
2024-01-03 23:19:11 +01:00
Edward Firmo
5be3692ab6 Remember wake-up page after power cycle
Solves #1520
2024-01-03 23:10:22 +01:00
Edward Firmo
10eed8723e Refining release notes 2024-01-03 22:13:17 +01:00
Edward Firmo
1afbb79402 Update ReleaseNotes.md 2024-01-03 21:47:14 +01:00
Edward Firmo
289eb8e395 Fix links 2024-01-03 20:32:20 +01:00
Edward Firmo
30ed450a4f TFT upload selectors 2024-01-03 20:16:33 +01:00
Edward Firmo
00d8cc9c94 Publish prebuilt yaml 2024-01-03 00:11:49 +01:00
Edward Firmo
cb4edd2a0f Add instrutions to change Wi-Fi password
Solves #1177
Solves #1476
2024-01-02 22:42:11 +01:00
Edward Firmo
04ea3398f9 Create nspanel_esphome_prebuilt.bin 2024-01-02 17:27:02 +01:00
Edward Firmo
295ee0e81e Set correct brightness on sleep
Solves #1492
2024-01-02 16:35:39 +01:00
Edward Firmo
adca6a7039 Prepares for pre-build 2024-01-02 16:34:24 +01:00
Edward Firmo
9c755d453a Fix reference to custom buttons on climate page
Solves #1481
2024-01-02 15:41:41 +01:00
Edward Firmo
a1fa64fdfb Fix attribute name hvac_modes 2024-01-02 14:43:37 +01:00
Edward Firmo
522c8bb8cc Yamllint 2024-01-02 14:38:16 +01:00
Edward Firmo
4ab62f817d Fix supported features engine for climate 2024-01-02 14:37:42 +01:00
Edward Firmo
e98e2612bf Fix new component names on climate page 2024-01-02 14:37:05 +01:00
Edward Firmo
e45d07cfd7 Show heat_cool icon when dual climate add-on installed 2024-01-02 13:54:32 +01:00
Edward Firmo
07fda78fdc yamllint 2024-01-02 13:45:31 +01:00
Edward Firmo
64f4399382 Fallback to legacy upload tft
To support Lovelace UI tft installed
2024-01-02 13:39:59 +01:00
Edward Firmo
98fc65debd Improve clarity on changes to icons
Solves #1504
2024-01-02 12:38:15 +01:00
Edward Firmo
7cf66890fd Yamllint 2024-01-01 22:57:53 +01:00
Edward Firmo
e3509453cd Clean-up commented code 2024-01-01 22:55:10 +01:00
Edward Firmo
944f3bf221 Fix call to set_climate with new parameters 2024-01-01 22:48:13 +01:00
Edward Firmo
a89a54bbac Fix blueprint generating invalid automation 2024-01-01 22:16:40 +01:00
Edward Firmo
f09021d859 Dual target climate page
- Solves #909
- Partially solves #1486
- Solves #1481
- Solves #1459
- Solves #1006
- Solves #1106
2024-01-01 22:04:51 +01:00
Edward Firmo
35b0c23be8 Refresh pages when new settings comes 2023-12-31 22:00:16 +01:00
Edward Firmo
d32bf23ebe Screensaver time support %p not present
Solves #1492
2023-12-31 13:38:38 +01:00
Edward Firmo
e02ee95198 Rebuilt Upload TFT
Rebuilt again, now based on the ESPHome's Nextion component instead of local code.
Still not there yet, specially when Lovelace UI tft is installed, but hopefully this solves #1383 and solves #1491.
2023-12-30 01:59:51 +01:00
Edward Firmo
05ab9a8664 Reduces invalid_cooldown to 100ms
Solves #1479
2023-12-28 12:27:46 +01:00
Edward Firmo
33a0a34938 Reorg substitutions
Makes easier custom passwords.
2023-12-28 12:27:00 +01:00
Edward Firmo
00640bd360 Add queue_size to nextion_status 2023-12-28 12:14:20 +01:00
Edward Firmo
e361284c4c Add Nextion queue info to Watchdog logs 2023-12-28 11:32:44 +01:00
Edward Firmo
a49a8fc7ba Add substitution for invalid_cooldown
Solves #1479
2023-12-28 10:34:19 +01:00
Edward Firmo
501855e777 Custom buttons icon size
Solves #1480
2023-12-28 04:37:02 +01:00
Edward Firmo
ad08c45352 Translations - Korean
https://github.com/Blackymas/NSPanel_HA_Blueprint/discussions/1447#discussioncomment-7961280
2023-12-28 03:31:38 +01:00
Edward Firmo
d7d249308a Reboot with Wi-Fi timeout 2023-12-28 02:16:21 +01:00
Edward Firmo
a929d88dc4 Update translations - Korean
https://github.com/Blackymas/NSPanel_HA_Blueprint/discussions/1447#discussioncomment-7961236
2023-12-28 02:03:54 +01:00
Edward Firmo
faed4a9111 Added entities pages
Need the borders (panel) in the pictures
2023-12-28 00:13:06 +01:00
Edward Firmo
73fba3b449 Use climate defaults from HA 2023-12-27 23:03:45 +01:00
Edward Firmo
18abbaf506 Watchdog to log baud rate 2023-12-27 22:22:18 +01:00
Edward Firmo
7fb322d4d8 New baud rate selector 2023-12-27 19:36:58 +01:00
Edward Firmo
2528d3506e Baud rate as a select control 2023-12-27 18:39:55 +01:00
Edward Firmo
60a56aade2 Selectable baud rate 2023-12-27 18:38:27 +01:00
Edward Firmo
801fc83986 Removed lovelace_custom_command
It was not in use
2023-12-27 18:18:37 +01:00
Edward Firmo
27bdc3272b Fix string value is None for dictionary value @ data['code_format']
Potentially solves #1462
2023-12-27 18:08:46 +01:00
Edward Firmo
c15179b215 Improving watchdog 2023-12-27 17:52:24 +01:00
Edward Firmo
357572d401 Extend watchdog to add-ons 2023-12-27 14:26:47 +01:00
Edward Firmo
4ad5457b0f ESPHome Watchdog
This implements a watchdog script with complementing the scripts `on_setup` and `refresh_wifi_icon` to be checking the components every minute and taking proper actions (when possible).
Solves #1464
2023-12-27 13:57:16 +01:00
Edward Firmo
29fface258 Simplifies reboot calls 2023-12-26 01:55:18 +01:00
Edward Firmo
ee76e3bd87 Turn-off Nextion on shutdown 2023-12-24 17:05:47 +01:00
Edward Firmo
c5c04ae262 Bump version to 4.2dev.2 2023-12-23 00:30:40 +01:00
Edward Firmo
c708b37b76 Add universal icons to buttons 2023-12-23 00:21:56 +01:00
Edward Firmo
eef2053a23 Fix translations - French
https://github.com/Blackymas/NSPanel_HA_Blueprint/discussions/829#discussioncomment-7930760
2023-12-22 21:49:40 +01:00
Edward Firmo
4621e73ec9 Icons are always forced 2023-12-22 21:19:41 +01:00
Edward Firmo
4b70d69397 Update fonts
Based on #1453
Helps with #1359
2023-12-22 21:14:53 +01:00
Edward Firmo
f251935ec6 Fix hw button indicator on Home page
Solves #1458
2023-12-22 20:11:47 +01:00
Edward Firmo
2dba0277f3 Fix harware buttons not working 2023-12-22 19:53:31 +01:00
Edward Firmo
bc2b9e8d04 Add icons for all domains
Solves #1461
2023-12-22 19:38:51 +01:00
Edward Firmo
c5155ceafa Merge pull request #1455 from Floppe/entlabels
Fix entity pages labels,
2023-12-22 15:38:45 +01:00
Edward Firmo
fa85b8129a Remove #DEBUG tag 2023-12-22 15:23:15 +01:00
Edward Firmo
0f94c3e3d3 Move fix to the shared code
So it applies globally
2023-12-22 15:22:01 +01:00
Edward Firmo
12d3ef937e Merge branch 'dev' of https://github.com/Blackymas/NSPanel_HA_Blueprint into dev 2023-12-22 12:25:09 +01:00
Edward Firmo
666b1a2214 Comment out Lovelace UI commands
It was a nice UI, but wasn't helping with the TFT upload.
2023-12-22 12:25:02 +01:00
Edward Firmo
379dbfbed7 Merge pull request #1453 from bluefoxlee/dev
Update T.Chinese translation and Zi fonts.
2023-12-22 09:07:23 +01:00
Joachim Wickman
48c4cf9a89 Fix entity pages labels, was blank before. 2023-12-22 09:53:24 +02:00
bluefoxlee
8da2360798 Update Zi fonts 2023-12-22 08:47:42 +08:00
bluefoxlee
143b61bfe1 Update T.Chinese Translation 2023-12-22 08:38:58 +08:00
Edward Firmo
26d3d12236 Fix invalid reference to icon_color_rgb
Solves #963
2023-12-22 00:03:58 +01:00
Edward Firmo
2a0968e786 Fix num param update_msg 2023-12-21 23:59:16 +01:00
Edward Firmo
4f645903b2 Upload TFT improvements for Lovelace UI
Solve #1331
2023-12-21 21:41:53 +01:00
Edward Firmo
38489aa117 yamllint 2023-12-21 02:36:58 +01:00
Edward Firmo
e01b298e05 Translations to Japanese
https://github.com/Blackymas/NSPanel_HA_Blueprint/discussions/829#discussioncomment-6002461
2023-12-21 02:23:08 +01:00
Edward Firmo
e8d41675ae Support to Korean
https://github.com/Blackymas/NSPanel_HA_Blueprint/discussions/829#discussioncomment-6064294
2023-12-21 02:13:27 +01:00
Edward Firmo
3f5e75ab45 ESPHome min version 2023.12.0 2023-12-21 01:44:44 +01:00
Edward Firmo
096b932daa Remove DEBUG code 2023-12-20 21:13:38 +01:00
Edward Firmo
bf60bb50ae Increased meridiem length
Solves #1359
2023-12-20 21:08:56 +01:00
Edward Firmo
8569a1b85b Fix button bar position
Solves #1459
2023-12-20 20:59:52 +01:00
Edward Firmo
040477a8c3 Fix icons mapping
Solves #1359
2023-12-20 20:55:59 +01:00
Edward Firmo
ce0035cd76 Update instructions for Lovelace UI users
Solves #1331
2023-12-20 12:49:34 +01:00
Edward Firmo
af9e081643 Splitting global_settings service
Looks like ESPHome didn't like the service calls with so many parameters.
2023-12-20 11:33:16 +01:00
Edward Firmo
cfa16bc8e2 Display time on screensaver page
Solves #1065
Solves #1439
2023-12-20 09:48:10 +01:00
Edward Firmo
fd0edd28f6 Bump version to 4.2dev.1 2023-12-19 23:02:23 +01:00
Edward Firmo
f3dc79a66f Update derived TFT files 2023-12-19 22:55:24 +01:00
Edward Firmo
2646e89a25 Update zh-tw translations
https://github.com/Blackymas/NSPanel_HA_Blueprint/issues/1359#issuecomment-1863492589
2023-12-19 22:47:52 +01:00
Edward Firmo
65c3761ff8 Add text field to screensaver
Supports #1065
Supports #1439
2023-12-19 22:15:44 +01:00
Edward Firmo
ced41b50e3 Enhanced timeout flexibility for Sleep, Page fallback, and Dimming settings
Solves #1438
2023-12-19 21:42:48 +01:00
Edward Firmo
0164de9aaa Update ReleaseNotes.md 2023-12-19 16:29:35 +01:00
Edward Firmo
0210488fe9 yamllint 2023-12-19 16:21:46 +01:00
Edward Firmo
482fe16e75 Add meridiem to translations
Solves #1359
2023-12-19 16:19:37 +01:00
Edward Firmo
a7c5533121 Clean-up add-ons engine 2023-12-19 11:55:22 +01:00
Edward Firmo
3ff0c394ce Remove script.service_call_climate
To make things simpler
2023-12-19 10:55:27 +01:00
Edward Firmo
1b13be1eaa Sort scripts by name
To make it easier to find things
2023-12-19 10:49:17 +01:00
Edward Firmo
88a49b00e4 Use back_page_id on screensaver page
Let's simplify things!
2023-12-19 10:25:07 +01:00
Edward Firmo
052fc9551c Change back_page_id
Reduces a bit the memory in TFT
Simplify the process
Open space for more pages to be used
Not visible by users
2023-12-19 09:59:42 +01:00
Edward Firmo
32d969ed3e Renamed wifi component
To distinct from `wifi_default`
2023-12-19 02:57:27 +01:00
Edward Firmo
9f570eddd7 push-button--momentary-switch 2023-12-19 02:40:17 +01:00
Edward Firmo
a6466b3c75 Push button / Momentary switch 2023-12-19 02:38:43 +01:00
Edward Firmo
a2727e77f4 Update deep_sleep instructions
Based on changes introduced by esphome/esphome#5666
2023-12-19 02:28:02 +01:00
Edward Firmo
626550a082 Add upload blank tft button to advanced package 2023-12-19 02:23:43 +01:00
Edward Firmo
41a4be4bb5 Removing trailing spaces 2023-12-19 02:05:35 +01:00
Edward Firmo
7baff2c54c Add blueprint not detected icon on home page
Helps with #1436
2023-12-19 02:01:36 +01:00
Edward Firmo
647fe27bc0 Change mode on preset home 2023-12-18 23:25:12 +01:00
Edward Firmo
6e55c61032 Implements target_low and target_high substitutions
Solves #1418
2023-12-18 23:22:36 +01:00
Edward Firmo
5877af3493 Add climate dual to validations 2023-12-18 22:45:27 +01:00
Edward Firmo
346897ac94 Initial support to addon_climate_dual 2023-12-18 22:38:32 +01:00
Edward Firmo
e8e483a92a yamllint 2023-12-18 17:54:09 +01:00
Edward Firmo
9d68ecb5ab yamllint 2023-12-18 17:52:17 +01:00
Edward Firmo
a84c428ab8 yamllint 2023-12-18 17:48:45 +01:00
Edward Firmo
98d3a9189c yamllint 2023-12-18 17:42:45 +01:00
Edward Firmo
25567fa381 Alarm page cannot be used as wake-up page
Solves #1435
2023-12-18 16:02:29 +01:00
Edward Firmo
03f7315ab8 REmove alarm from wakeup list
With new support to multiple alarms, we don't know which one to open.
Solves #1435
2023-12-18 16:00:33 +01:00
Edward Firmo
540a27e7cc Forbidden very long lines 2023-12-18 15:44:15 +01:00
Edward Firmo
4f8a69d2e7 yamllint 2023-12-18 15:42:51 +01:00
Edward Firmo
75c9246c5e yamllint 2023-12-18 15:40:13 +01:00
Edward Firmo
83c641deef yamllint 2023-12-18 15:28:42 +01:00
Edward Firmo
286e98ecef yamllint 2023-12-18 15:16:00 +01:00
Edward Firmo
d432a88a8e yamllint 2023-12-18 15:08:49 +01:00
Edward Firmo
bbbbb6b967 Yamllint 2023-12-18 15:03:26 +01:00
Edward Firmo
ffd657db9f yamllint 2023-12-18 14:58:33 +01:00
Edward Firmo
aa56ae21d5 yamllint 2023-12-18 14:48:46 +01:00
Edward Firmo
d5ea5318e0 yamllint 2023-12-18 14:43:33 +01:00
Edward Firmo
1a4dbb2b55 yamllint 2023-12-18 14:37:05 +01:00
Edward Firmo
8204c40a05 yamlint 2023-12-18 14:34:45 +01:00
Edward Firmo
540227aff8 yamllint 2023-12-18 14:26:35 +01:00
Edward Firmo
98eacf5bf5 comments-indentation yamllint 2023-12-18 14:16:11 +01:00
Edward Firmo
a608348424 Use yamllint default
More strict rules
2023-12-18 14:14:30 +01:00
Edward Firmo
e812a4e738 Fix indentation on services 2023-12-18 13:56:35 +01:00
Edward Firmo
dda34e021c Advanced mode no longer enforces esp-idf 2023-12-18 13:40:50 +01:00
Edward Firmo
b086ccc16d Support to Fahrenheit with esp-idf 2023-12-18 13:21:19 +01:00
Edward Firmo
a1e488c72f yaml lint 2023-12-18 12:58:25 +01:00
Edward Firmo
0e8736586b yaml lint 2023-12-18 12:57:07 +01:00
Edward Firmo
773de2bd51 Support internal temperature in Fahrenheit 2023-12-18 12:44:16 +01:00
Edward Firmo
c97be551c0 Enhanced control for automation entities on buttons
Solves #1291
Solves #810
Solves #1249
Solves #1291
Solves #320
Solves #331
2023-12-18 12:11:57 +01:00
Edward Firmo
b38829ae32 Add swipe control to screensaver page
Solves #665
2023-12-18 03:59:17 +01:00
Edward Firmo
e45e848501 Chips can be inverted
Solves #1365
2023-12-18 03:28:19 +01:00
Edward Firmo
9bac2c1ca8 Added support to climate on the hardware buttons
Possibly solves #1295
2023-12-18 03:15:33 +01:00
Edward Firmo
9146147438 Home page chips now supports covers
Solves #932
2023-12-18 03:05:59 +01:00
Edward Firmo
68158d96a3 Add support to remote
Solves #1434
2023-12-18 02:59:30 +01:00
Edward Firmo
85febce168 Add support to remote
Solves #1434
2023-12-18 02:58:44 +01:00
Edward Firmo
07d5f63d7c Move hw button label assignment to boot sequence
Partially solves #1409
2023-12-18 00:26:23 +01:00
Edward Firmo
e9fcc39470 Replicate latest changes 2023-12-17 23:57:35 +01:00
Edward Firmo
a3b55e341f Stop timers before upload tft 2023-12-17 23:41:18 +01:00
Edward Firmo
5f1c289f5b Fix missing ; 2023-12-17 23:01:25 +01:00
Edward Firmo
b5c8069e21 Support to alarm entities everywhere
Solves #1109
2023-12-17 22:52:30 +01:00
Edward Firmo
278baa44f9 Home page chips support to alarm 2023-12-17 22:24:49 +01:00
Edward Firmo
eb28c98da9 Review breaking changes
For improved clarity
2023-12-17 22:05:57 +01:00
Edward Firmo
857cda0552 Jump to wakeup page if blueprint isn't responding
Solves #1432
2023-12-17 21:43:14 +01:00
Edward Firmo
5999a984ba Replace bt_alarm by custom button07
Solves #1109
2023-12-17 21:33:39 +01:00
Edward Firmo
d5c7f7dc4f Try a reset first 2023-12-17 17:59:21 +01:00
Edward Firmo
b7e4a46476 Move en-docs to docs folder 2023-12-17 17:57:12 +01:00
Edward Firmo
3483f4e411 Upload baud rate selectable as substitution
Solves #1430 (or the next time something similar is found).
2023-12-17 15:15:03 +01:00
Edward Firmo
5c0eb29f21 Move on_touch logs to VERBOSE 2023-12-17 12:50:38 +01:00
Edward Firmo
a2dc5913fa Move page constructors to TFT
To reduce comms between ESPHome and Nextion, which could help with some sync issues found with 921600 bps.
2023-12-17 12:44:12 +01:00
Edward Firmo
bd99afa14b change Nextion2Text to utf-8
Using this now: https://github.com/MMMZZZZ/Nextion2Text/issues/14#issuecomment-1688084921
2023-12-17 11:01:59 +01:00
Edward Firmo
1b14e70df0 Change char encoding to utf-8
From iso-8859-1
2023-12-17 08:32:21 +01:00
Edward Firmo
d6c9d97d08 Add exit_reparse_on_start
New feature from ESPHome 2023.12.0
2023-12-16 23:25:57 +01:00
Edward Firmo
975bbb08a1 Moved CJK TFT files to advanced folder
Still to be decided if this will be supported as a normal installation, as there's no documentation indicating this files and it can cause confusion.
2023-12-16 23:05:44 +01:00
Edward Firmo
b495fc75f0 Updating error_initializing.md
Solves #1256
2023-12-16 22:47:52 +01:00
Edward Firmo
8eaec1682e Update blueprint.md
Solves #1256
2023-12-16 21:35:13 +01:00
Edward Firmo
22ed24a058 Update blueprint.md 2023-12-16 21:31:46 +01:00
Edward Firmo
884bef9774 Standardize suggested yaml between docs
Supports #1256
2023-12-16 20:36:55 +01:00
Edward Firmo
a070626ee1 Support to Chinese (Taiwan) and prepared for other CJK languages
Adds to #1359
2023-12-16 20:21:17 +01:00
Edward Firmo
f644adbb1b Sets charset variable to CJK
Adds to #1359
2023-12-16 20:05:34 +01:00
Edward Firmo
f1cf3aa3f2 Creating CJK TFT files
Solves #1359
2023-12-16 20:02:51 +01:00
Edward Firmo
d29c6382f7 Home page values update with same engine as chips
Solves #963
2023-12-16 19:43:36 +01:00
Edward Firmo
17115e09cc Selectable icon size on button pages
Solves #960
2023-12-16 18:48:34 +01:00
Edward Firmo
c8d805e174 Add zh-tw to the language list
Solves #1413 (blueprint only)
2023-12-16 09:53:50 +01:00
Edward Firmo
54638c619c Remove touchevent sensor
It was replaced by new `on_touch` trigger from Nextion component
2023-12-16 08:41:58 +01:00
Edward Firmo
6239149ec6 Don't send None as friendly name 2023-12-16 00:57:08 +01:00
Edward Firmo
31ff6b4716 Add log on touch event 2023-12-16 00:28:42 +01:00
Edward Firmo
36cad5ee4c Send component ID on touch 2023-12-16 00:21:24 +01:00
Edward Firmo
dc305d210c New on_touch event from Nextion component 2023-12-16 00:17:38 +01:00
Edward Firmo
f445be86ab Target validations to ESPHome beta 2023-12-15 23:45:48 +01:00
Edward Firmo
15d5b4cf17 Log if display is detected 2023-12-15 23:42:38 +01:00
Edward Firmo
c57e4165d0 Merge pull request #1386 from Blackymas/beta
v4.1.4 - Supports Home Assistant 2023.12.0
2023-12-05 18:51:35 +01:00
507 changed files with 68977 additions and 23603 deletions

136
.github/ISSUE_TEMPLATE/bug.yml vendored Normal file
View File

@@ -0,0 +1,136 @@
---
name: Bug Report
description: If something isn't working as expected, let us know here.
title: "`Bug` "
labels: [Bug]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out a bug report!
We aim to keep everything working perfectly, so your detailed reports are crucial.
Report only one specific issue per submission. If you encounter another issue, create a new report for effective tracking and resolution.
The more detail you provide, the quicker we can help.
> [!WARNING]
> Omit any private or sensitive information, as this bug report will be publicly visible.
- type: markdown
attributes:
value: |
## Version Information
Provide version numbers for TFT, ESPHome, and Blueprint. These can be found on your device's boot screen and in the automation where the blueprint is set.
- type: input
attributes:
label: TFT Version
description: Enter the TFT version number.
placeholder: e.g., 4.3.2
validations:
required: false
- type: input
attributes:
label: ESPHome Version
description: Enter the ESPHome version number.
placeholder: e.g., 4.3.2
validations:
required: false
- type: input
attributes:
label: Blueprint Version
description: Enter the Blueprint version number.
placeholder: e.g., 4.3.2
validations:
required: false
- type: dropdown
attributes:
label: Panel Model
description: Select your NSPanel model.
options:
- EU
- US
- US (Landscape)
validations:
required: false
- type: markdown
attributes:
value: |
## Bug Details
- type: textarea
attributes:
label: What is the bug?
description: Describe the bug clearly and concisely.
placeholder: e.g., When I try this, I get this result, but I expected that...
- type: textarea
attributes:
label: Steps to Reproduce
description: Detail the steps to reproduce the behavior. Include screenshots or other relevant information.
placeholder: |
1. Go to '...'
2. Click on '...'
3. See error on '...'
- type: markdown
attributes:
value: |
## Additional Information (Optional)
- type: textarea
attributes:
label: Your Panel's YAML
description: Provide your panel's YAML configuration.
render: yaml
placeholder: |
# Example YAML configuration
# ...
- type: textarea
attributes:
label: ESPHome Logs
description: >
Access these logs via the **Logs** button on the ESPHome Dashboard.
These logs are crucial for diagnosing issues with your device.
Please follow the guidelines below to ensure the logs are comprehensive:
- **Boot Issues**: If the problem occurs during boot, capture the logs from the start of your device to a minute or two after the boot completes.
Look for errors or unusual messages during this period.
- **TFT File Update Issues**: For problems related to TFT file updates,
include logs from the moment you press the **Update TFT Display** button until a few seconds after the device restarts.
Pay attention to any error messages or warnings during the update process.
- **Other Issues**: For other types of problems, include logs that encompass the issue's onset and continue for a short duration thereafter.
This will help in pinpointing the exact moment and nature of the issue.
Remember, the more detailed the logs, the easier it is to identify and resolve the problem.
- type: textarea
attributes:
label: Home Assistant Logs
description: >
To access Home Assistant logs, navigate to **Settings** > **System** > [**Logs**](https://my.home-assistant.io/redirect/logs/).
When reporting an issue, please focus on providing logs specifically relevant to the problem:
- **NSPanel Blueprint Automation**: If your issue is related to automation using the NSPanel blueprint, include only those logs that directly pertain to this process.
- **Panel and ESPHome**: For issues involving your panel and ESPHome, carefully select and share logs that show interactions or errors between these components.
- **Relevancy is Key**: To expedite troubleshooting, avoid including logs that are not related to the issue at hand. This helps in focusing on the pertinent information.
Your attention to sharing targeted and relevant log data is greatly appreciated and aids in efficient problem resolution.
...

20
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,20 @@
---
blank_issues_enabled: false
contact_links:
- name: Questions & General Discussions
url: https://github.com/Blackymas/NSPanel_HA_Blueprint/discussions
about: Join our Discussions for community chats, questions, idea sharing, and collaboration. Use Issues for reporting bugs or requesting enhancements.
- name: Troubleshooting TFT Transfer Issues
url: https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/tft_upload.md
about: Having trouble transferring a TFT file? Our guide might have the solution.
- name: Resolve Compiling Errors
url: https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/error_compiling.md
about: Check this guide if you're experiencing compile errors.
- name: Getting Started Guide
url: https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/install.md
about: New to NSPanel HA Blueprint? Start here for installation and setup instructions.
...

32
.github/ISSUE_TEMPLATE/enhancement.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
---
name: Enhancement Request
description: Suggest an idea for this project
title: "`Enhancement` "
labels: [Enhancement]
body:
- type: markdown
attributes:
value: "Thank you for taking the time to suggest an enhancement!"
- type: input
attributes:
label: Enhancement Summary
description: A brief summary of the enhancement.
placeholder: e.g., Add support for XYZ feature...
validations:
required: true
- type: textarea
attributes:
label: Detailed Description
description: Please provide a detailed description of the enhancement. Include any specific use cases or functionality you envision.
placeholder: "Describe the enhancement in detail..."
validations:
required: true
- type: textarea
attributes:
label: Additional Context
description: "Provide any additional context or screenshots that might help us understand the enhancement better."
placeholder: "Add any other context or screenshots about the enhancement request here."
...

32
.github/workflows/release_tag.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
---
name: Update Tags
# yamllint disable-line rule:truthy
on:
release:
types: [published]
jobs:
update-tags:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Set up Git
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
- name: Move and push stable tag
run: |
git tag -f stable ${{ github.event.release.tag_name }}
git push -f origin stable
- name: Move and push latest tag
run: |
git tag -f latest ${{ github.event.release.tag_name }}
git push -f origin latest
...

View File

@@ -1,5 +1,7 @@
---
name: Validate Blueprint YAML
# yamllint disable-line rule:truthy
on:
push:
paths:
@@ -7,8 +9,6 @@ on:
pull_request:
paths:
- "nspanel_blueprint.yaml"
#schedule:
# - cron: "0 0 * * *"
workflow_dispatch:
jobs:
@@ -16,6 +16,9 @@ jobs:
name: Validate Blueprint YAML
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v4.1.0
- uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Validate nspanel_blueprint.yaml
run: yamllint -c "./.yamllint/rules.yml" nspanel_blueprint.yaml
run: yamllint -c "./.rules/yamllint.yml" nspanel_blueprint.yaml
...

View File

@@ -0,0 +1,26 @@
---
name: Validate C++ (Clang Format)
# yamllint disable-line rule:truthy
on:
push:
paths:
- '**/*.h'
- '**/*.c'
- '**/*.cpp'
pull_request:
paths:
- '**/*.h'
- '**/*.c'
- '**/*.cpp'
workflow_dispatch:
jobs:
clang-format-checking:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- uses: RafikFarhad/clang-format-github-action@v3
with:
sources: "components/nspanel_ha_blueprint/*.h,components/nspanel_ha_blueprint/*.cpp,components/nspanel_ha_blueprint_upload_tft/*.h,components/nspanel_ha_blueprint_upload_tft/*.cpp"
...

View File

@@ -1,153 +1,373 @@
name: Validate ESPHome
---
name: Validate and Build ESPHome
# yamllint disable-line rule:truthy
on:
push:
paths:
- "nspanel_esphome*.yaml"
- "advanced/esphome/nspanel_esphome*.yaml"
- "esphome/nspanel_esphome*.yaml"
- "prebuilt/nspanel_esphome*.yaml"
- "prebuilt/wall_display*.yaml"
- ".test/*.yaml"
- "*.h"
- "*.c"
- "*.cpp"
- "*.py"
pull_request:
paths:
- "nspanel_esphome*.yaml"
- "advanced/esphome/nspanel_esphome*.yaml"
#schedule:
# - cron: "0 0 * * *"
- "esphome/nspanel_esphome*.yaml"
- "prebuilt/nspanel_esphome*.yaml"
- "prebuilt/wall_display*.yaml"
- ".test/*.yaml"
- "*.h"
- "*.c"
- "*.cpp"
- "*.py"
workflow_dispatch:
concurrency:
# yamllint disable-line rule:line-length
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
setup_dependencies:
name: Setup & Cache Dependencies
runs-on: ubuntu-latest
outputs:
cache-hit-idf-v4: ${{ steps.cache-idf-v4.outputs.cache-hit }}
cache-hit-idf-v5: ${{ steps.cache-idf-v5.outputs.cache-hit }}
cache-hit-arduino: ${{ steps.cache-arduino.outputs.cache-hit }}
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Cache ESP-IDF v4 Dependencies
id: cache-idf-v4
uses: actions/cache@main
with:
path: |
~/.esphome/cache
~/.platformio/packages
~/.platformio/platforms
key: ${{ runner.os }}-esp-idf-v4-${{ hashFiles('**/esphome_idf_basic.yaml') }}
restore-keys: |
${{ runner.os }}-esp-idf-v4-
- name: Cache ESP-IDF v5 Dependencies
id: cache-idf-v5
uses: actions/cache@main
with:
path: |
~/.esphome/cache
~/.platformio/packages
~/.platformio/platforms
key: ${{ runner.os }}-esp-idf-v5-${{ hashFiles('**/esphome_idf5_basic.yaml') }}
restore-keys: |
${{ runner.os }}-esp-idf-v5-
- name: Cache Arduino Dependencies
id: cache-arduino
uses: actions/cache@main
with:
path: |
~/.esphome/cache
~/.platformio/packages
~/.platformio/platforms
key: ${{ runner.os }}-arduino-${{ hashFiles('**/esphome_ard_basic.yaml') }}
restore-keys: |
${{ runner.os }}-arduino-
code_scan:
name: Code scan (YAML)
runs-on: "ubuntu-latest"
needs: setup_dependencies
steps:
- uses: actions/checkout@v4.1.0
- name: Validate nspanel_esphome.yaml
run: yamllint -c "./.yamllint/rules.yml" nspanel_esphome.yaml
- name: Validate nspanel_esphome_core.yaml
run: yamllint -c "./.yamllint/rules.yml" advanced/esphome/nspanel_esphome_core.yaml
- name: Validate nspanel_esphome_addon_upload_tft.yaml
run: yamllint -c "./.yamllint/rules.yml" advanced/esphome/nspanel_esphome_addon_upload_tft.yaml
- name: Validate nspanel_esphome_advanced.yaml
run: yamllint -c "./.yamllint/rules.yml" advanced/esphome/nspanel_esphome_advanced.yaml
- name: Validate nspanel_esphome_addon_climate_base.yaml
run: yamllint -c "./.yamllint/rules.yml" advanced/esphome/nspanel_esphome_addon_climate_base.yaml
- name: Validate nspanel_esphome_addon_climate_cool.yaml
run: yamllint -c "./.yamllint/rules.yml" nspanel_esphome_addon_climate_cool.yaml
- name: Validate nspanel_esphome_addon_climate_heat.yaml
run: yamllint -c "./.yamllint/rules.yml" nspanel_esphome_addon_climate_heat.yaml
- name: Checkout Code
uses: actions/checkout@main
build_core:
name: Core
runs-on: "ubuntu-latest"
needs:
- code_scan
steps:
- uses: actions/checkout@v4.1.0
- name: Build core
uses: esphome/build-action@v1.8.0
- name: Setup Python
uses: actions/setup-python@main
with:
yaml_file: "./.test/esphome_core.yaml"
python-version: '3.8'
- name: Install Yamllint
run: pip install yamllint
- name: Validate YAML files
run: find . -name "*.yaml" -exec yamllint -c ./.rules/yamllint.yml {} +
build_cores:
name: Core
needs: [code_scan, setup_dependencies]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- id: idf_v4
yaml_file: ".test/esphome_idf_basic.yaml"
cache-hit: ${{ needs.setup_dependencies.outputs.cache-hit-idf-v4 }}
- id: idf_v5
yaml_file: ".test/esphome_idf5_basic.yaml"
cache-hit: ${{ needs.setup_dependencies.outputs.cache-hit-idf-v5 }}
- id: ard
yaml_file: ".test/esphome_ard_basic.yaml"
cache-hit: ${{ needs.setup_dependencies.outputs.cache-hit-arduino }}
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Firmware
if: steps.matrix.outputs.cache-hit != 'true'
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
build_advanced:
name: Advanced
runs-on: "ubuntu-latest"
needs:
- build_core
steps:
- uses: actions/checkout@v4.1.0
- name: Build core+advanced
uses: esphome/build-action@v1.8.0
with:
yaml_file: "./.test/esphome_advanced.yaml"
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_advanced.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_advanced.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_advanced.yaml"
build_climate_heat:
name: Climate (heat)
runs-on: "ubuntu-latest"
needs:
- build_core
steps:
- uses: actions/checkout@v4.1.0
- name: Build core+climate_heat
uses: esphome/build-action@v1.8.0
- name: Checkout repository
uses: actions/checkout@main
- name: Build Advanced Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_climate_heat.yaml"
yaml_file: ${{ matrix.yaml_file }}
build_ble_tracker:
name: BLE Tracker
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_ble_tracker.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_ble_tracker.yaml"
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Build BLE Tracker Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
build_bluetooth_proxy:
name: Bluetooth Proxy
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_bluetooth_proxy.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_bluetooth_proxy.yaml"
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Build Bluetooth Proxy Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
build_climate_cool:
name: Climate (cool)
runs-on: "ubuntu-latest"
needs:
- build_core
steps:
- uses: actions/checkout@v4.1.0
- name: Build core+climate_cool
uses: esphome/build-action@v1.8.0
with:
yaml_file: "./.test/esphome_climate_cool.yaml"
name: Climate Cool
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_climate_cool.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_climate_cool.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_climate_cool.yaml"
build_climate_heat_advanced:
name: Advanced+climate (heat)
runs-on: "ubuntu-latest"
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Build Climate Cool Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
build_climate_heat:
name: Climate Heat
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_climate_heat.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_climate_heat.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_climate_heat.yaml"
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Build Climate Heat Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
build_climate_dual:
name: Climate Dual
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_climate_dual.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_climate_dual.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_climate_dual.yaml"
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Build Climate Dial Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
build_customizations:
name: Customizations
needs:
- build_climate_heat
- build_advanced
steps:
- uses: actions/checkout@v4.1.0
- name: Build core+advanced+climate_heat
uses: esphome/build-action@v1.8.0
with:
yaml_file: "./.test/esphome_advanced_climate_heat.yaml"
- build_climate_heat
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_advanced_climate_heat_customizations.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_advanced_climate_heat_customizations.yaml"
build_climate_cool_advanced_esp_idf:
name: esp-idf & Bluetooth proxy
runs-on: "ubuntu-latest"
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Build Customizations Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
build_climate_ble_proxy:
name: Climate Cool + Bluetooth Proxy
needs:
- build_climate_cool
- build_advanced
- build_bluetooth_proxy
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_climate_cool_bluetooth_proxy.yaml"
steps:
- uses: actions/checkout@v4.1.0
- name: Build core+advanced+climate_cool+esp_idf
uses: esphome/build-action@v1.8.0
- name: Checkout repository
uses: actions/checkout@main
- name: Build Customizations Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_advanced_climate_cool_esp_idf.yaml"
yaml_file: ${{ matrix.yaml_file }}
#build_climate_cool_advanced_esp_idf5:
# name: esp-idf v5 & Bluetooth proxy
# runs-on: "ubuntu-latest"
# needs:
# - build_climate_cool_advanced_esp_idf
# steps:
# - uses: actions/checkout@v4.1.0
# - name: Build core+advanced+climate_cool+esp_idf5
# uses: esphome/build-action@v1.8.0
# with:
# yaml_file: "./.test/esphome_advanced_climate_cool_esp_idf5.yaml"
build_climate_heat_advanced_customization:
name: Customizations
runs-on: "ubuntu-latest"
needs:
- build_climate_heat_advanced
- build_climate_cool_advanced_esp_idf
build_prebuilt_firmware:
name: Prebuilt Firmware
runs-on: ubuntu-latest
needs: code_scan
if: github.ref == 'refs/heads/dev' || github.base_ref == 'dev'
steps:
- uses: actions/checkout@v4.1.0
- name: Build core+advanced+climate_heat+customizations
uses: esphome/build-action@v1.8.0
- uses: actions/checkout@main
- name: Build ESPHome Prebuilt Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_advanced_climate_heat_customizations.yaml"
yaml_file: prebuilt/nspanel_esphome_prebuilt.yaml
#build_climate_cool_advanced_esp_idf5:
# name: esp-idf v5 & Bluetooth proxy
# runs-on: "ubuntu-latest"
# needs:
# - build_climate_cool
# - build_advanced
# steps:
# - uses: actions/checkout@v4.1.0
# - name: Build core+advanced+climate_cool+esp_idf
# uses: esphome/build-action@v1.8.0
# with:
# yaml_file: "./.test/esphome_advanced_climate_cool_esp_idf5.yaml"
- name: Move and Rename Firmware File - nspanel_esphome_prebuilt
run: |
mkdir -p prebuilt
cp prebuilt/.esphome/build/nspanel/.pioenvs/nspanel/firmware.bin prebuilt/nspanel_esphome_prebuilt.bin || true
cp prebuilt/.esphome/build/nspanel/.pioenvs/nspanel/firmware-factory.bin prebuilt/nspanel_esphome_prebuilt-factory.bin || true
- name: Build ESPHome Prebuilt Wall Display Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: prebuilt/wall_display.yaml
- name: Move and Rename Firmware File - wall_display
run: |
mkdir -p prebuilt
cp prebuilt/.esphome/build/nspanel/.pioenvs/nspanel/firmware.bin prebuilt/wall_display.bin || true
cp prebuilt/.esphome/build/nspanel/.pioenvs/nspanel/firmware-factory.bin prebuilt/wall_display-factory.bin || true
- name: Generate checksum for Firmware Files
run: |
md5sum prebuilt/nspanel_esphome_prebuilt.bin > prebuilt/nspanel_esphome_prebuilt.bin.md5
md5sum prebuilt/nspanel_esphome_prebuilt-factory.bin > prebuilt/nspanel_esphome_prebuilt-factory.bin.md5
md5sum prebuilt/wall_display.bin > prebuilt/wall_display.bin.md5
md5sum prebuilt/wall_display-factory.bin > prebuilt/wall_display-factory.bin.md5
- name: Commit and Push Firmware Files
run: |
git config --global user.name 'GitHub Actions'
git config --global user.email 'actions@github.com'
git add prebuilt/*.bin prebuilt/*.md5
git commit -m "Pre-built firmware update: ${{ github.run_id }}"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
...

View File

@@ -1,157 +1,333 @@
---
name: Validate ESPHome (beta)
# yamllint disable-line rule:truthy
on:
workflow_dispatch:
pull_request:
paths:
- "nspanel_esphome*.yaml"
- "advanced/esphome/nspanel_esphome*.yaml"
#schedule:
#- cron: "0 0 * * *"
concurrency:
# yamllint disable-line rule:line-length
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
setup_dependencies:
name: Setup & Cache Dependencies
runs-on: ubuntu-latest
outputs:
cache-hit-idf-v4: ${{ steps.cache-idf-v4.outputs.cache-hit }}
cache-hit-idf-v5: ${{ steps.cache-idf-v5.outputs.cache-hit }}
cache-hit-arduino: ${{ steps.cache-arduino.outputs.cache-hit }}
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Cache ESP-IDF v4 Dependencies
id: cache-idf-v4
uses: actions/cache@main
with:
path: |
~/.esphome/cache
~/.platformio/packages
~/.platformio/platforms
key: ${{ runner.os }}-esp-idf-v4-${{ hashFiles('**/esphome_idf_basic.yaml') }}
restore-keys: |
${{ runner.os }}-esp-idf-v4-
- name: Cache ESP-IDF v5 Dependencies
id: cache-idf-v5
uses: actions/cache@main
with:
path: |
~/.esphome/cache
~/.platformio/packages
~/.platformio/platforms
key: ${{ runner.os }}-esp-idf-v5-${{ hashFiles('**/esphome_idf5_basic.yaml') }}
restore-keys: |
${{ runner.os }}-esp-idf-v5-
- name: Cache Arduino Dependencies
id: cache-arduino
uses: actions/cache@main
with:
path: |
~/.esphome/cache
~/.platformio/packages
~/.platformio/platforms
key: ${{ runner.os }}-arduino-${{ hashFiles('**/esphome_ard_basic.yaml') }}
restore-keys: |
${{ runner.os }}-arduino-
code_scan:
name: Code scan (YAML)
runs-on: "ubuntu-latest"
needs: setup_dependencies
steps:
- uses: actions/checkout@v4.1.0
- name: Validate nspanel_esphome.yaml
run: yamllint -c "./.yamllint/rules.yml" nspanel_esphome.yaml
- name: Validate nspanel_esphome_core.yaml
run: yamllint -c "./.yamllint/rules.yml" advanced/esphome/nspanel_esphome_core.yaml
- name: Validate nspanel_esphome_addon_upload_tft.yaml
run: yamllint -c "./.yamllint/rules.yml" advanced/esphome/nspanel_esphome_addon_upload_tft.yaml
- name: Validate nspanel_esphome_advanced.yaml
run: yamllint -c "./.yamllint/rules.yml" advanced/esphome/nspanel_esphome_advanced.yaml
- name: Validate nspanel_esphome_addon_climate_base.yaml
run: yamllint -c "./.yamllint/rules.yml" advanced/esphome/nspanel_esphome_addon_climate_base.yaml
- name: Validate nspanel_esphome_addon_climate_cool.yaml
run: yamllint -c "./.yamllint/rules.yml" nspanel_esphome_addon_climate_cool.yaml
- name: Validate nspanel_esphome_addon_climate_heat.yaml
run: yamllint -c "./.yamllint/rules.yml" nspanel_esphome_addon_climate_heat.yaml
- name: Checkout Code
uses: actions/checkout@main
build_core:
name: Core
runs-on: "ubuntu-latest"
needs:
- code_scan
steps:
- uses: actions/checkout@v4.1.0
- name: Build core
uses: esphome/build-action@v1.8.0
- name: Setup Python
uses: actions/setup-python@main
with:
yaml_file: "./.test/esphome_core.yaml"
python-version: '3.8'
- name: Install Yamllint
run: pip install yamllint
- name: Validate YAML files
run: find . -name "*.yaml" -exec yamllint -c ./.rules/yamllint.yml {} +
build_cores:
name: Core
needs: [code_scan, setup_dependencies]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- id: idf_v4
yaml_file: ".test/esphome_idf_basic.yaml"
cache-hit: ${{ needs.setup_dependencies.outputs.cache-hit-idf-v4 }}
- id: idf_v5
yaml_file: ".test/esphome_idf5_basic.yaml"
cache-hit: ${{ needs.setup_dependencies.outputs.cache-hit-idf-v5 }}
- id: ard
yaml_file: ".test/esphome_ard_basic.yaml"
cache-hit: ${{ needs.setup_dependencies.outputs.cache-hit-arduino }}
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Firmware
if: steps.matrix.outputs.cache-hit != 'true'
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_advanced:
name: Advanced
runs-on: "ubuntu-latest"
needs:
- build_core
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_advanced.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_advanced.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_advanced.yaml"
steps:
- uses: actions/checkout@v4.1.0
- name: Build core+advanced
uses: esphome/build-action@v1.8.0
- name: Checkout repository
uses: actions/checkout@main
- name: Build Advanced Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_advanced.yaml"
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_climate_heat:
name: Climate (heat)
runs-on: "ubuntu-latest"
needs:
- build_core
build_ble_tracker:
name: BLE Tracker
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_ble_tracker.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_ble_tracker.yaml"
steps:
- uses: actions/checkout@v4.1.0
- name: Build core+climate_heat
uses: esphome/build-action@v1.8.0
- name: Checkout repository
uses: actions/checkout@main
- name: Build BLE Tracker Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_climate_heat.yaml"
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_bluetooth_proxy:
name: Bluetooth Proxy
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_bluetooth_proxy.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_bluetooth_proxy.yaml"
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Build Bluetooth Proxy Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_climate_cool:
name: Climate (cool)
runs-on: "ubuntu-latest"
needs:
- build_core
name: Climate Cool
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_climate_cool.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_climate_cool.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_climate_cool.yaml"
steps:
- uses: actions/checkout@v4.1.0
- name: Build core+climate_cool
uses: esphome/build-action@v1.8.0
- name: Checkout repository
uses: actions/checkout@main
- name: Build Climate Cool Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_climate_cool.yaml"
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_climate_heat_advanced:
name: Advanced+climate (heat)
runs-on: "ubuntu-latest"
build_climate_heat:
name: Climate Heat
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_climate_heat.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_climate_heat.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_climate_heat.yaml"
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Build Climate Heat Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_climate_dual:
name: Climate Dual
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_climate_dual.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_climate_dual.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_climate_dual.yaml"
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Build Climate Dial Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_customizations:
name: Customizations
needs:
- build_climate_heat
- build_advanced
- build_climate_heat
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_advanced_climate_heat_customizations.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_advanced_climate_heat_customizations.yaml"
steps:
- uses: actions/checkout@v4.1.0
- name: Build core+advanced+climate_heat
uses: esphome/build-action@v1.8.0
- name: Checkout repository
uses: actions/checkout@main
- name: Build Customizations Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_advanced_climate_heat.yaml"
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_climate_cool_advanced_esp_idf:
name: esp-idf & Bluetooth proxy
runs-on: "ubuntu-latest"
build_climate_ble_proxy:
name: Climate Cool + Bluetooth Proxy
needs:
- build_climate_cool
- build_advanced
- build_bluetooth_proxy
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_climate_cool_bluetooth_proxy.yaml"
steps:
- uses: actions/checkout@v4.1.0
- name: Build core+advanced+climate_cool+esp_idf
uses: esphome/build-action@v1.8.0
- name: Checkout repository
uses: actions/checkout@main
- name: Build Customizations Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_advanced_climate_cool_esp_idf.yaml"
yaml_file: ${{ matrix.yaml_file }}
version: beta
#build_climate_cool_advanced_esp_idf5:
# name: esp-idf v5 & Bluetooth proxy
# runs-on: "ubuntu-latest"
# needs:
# - build_climate_cool_advanced_esp_idf
# steps:
# - uses: actions/checkout@v4.1.0
# - name: Build core+advanced+climate_cool+esp_idf5
# uses: esphome/build-action@v1.8.0
# with:
# yaml_file: "./.test/esphome_advanced_climate_cool_esp_idf5.yaml"
# version: beta
build_climate_heat_advanced_customization:
name: Customizations
runs-on: "ubuntu-latest"
needs:
- build_climate_heat_advanced
- build_climate_cool_advanced_esp_idf
build_prebuilt_firmware:
name: Prebuilt Firmware
runs-on: ubuntu-latest
needs: code_scan
if: github.ref == 'refs/heads/dev' || github.base_ref == 'dev'
steps:
- uses: actions/checkout@v4.1.0
- name: Build core+advanced+climate_heat+customizations
uses: esphome/build-action@v1.8.0
- uses: actions/checkout@main
- name: Build ESPHome Prebuilt Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_advanced_climate_heat_customizations.yaml"
yaml_file: prebuilt/nspanel_esphome_prebuilt.yaml
version: beta
#build_climate_cool_advanced_esp_idf5:
# name: esp-idf v5 & Bluetooth proxy
# runs-on: "ubuntu-latest"
# needs:
# - build_climate_cool
# - build_advanced
# steps:
# - uses: actions/checkout@v4.1.0
# - name: Build core+advanced+climate_cool+esp_idf
# uses: esphome/build-action@v1.8.0
# with:
# yaml_file: "./.test/esphome_advanced_climate_cool_esp_idf5.yaml"
# version: beta
- name: Build ESPHome Prebuilt Wall Display Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: prebuilt/wall_display.yaml
version: beta
...

58
.github/workflows/validate_markdown.yml vendored Normal file
View File

@@ -0,0 +1,58 @@
---
name: Validate Markdown
# yamllint disable-line rule:truthy
on:
pull_request:
paths:
- '**/*.md'
push:
paths:
- '**/*.md'
workflow_dispatch:
jobs:
markdown-lint:
name: Markdown Lint
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@main
with:
fetch-depth: '0'
# https://github.com/marketplace/actions/markdownlint-cli2-action
- name: Identify changed files
uses: tj-actions/changed-files@v41
id: changed-files
with:
files: '**/*.md'
separator: ","
# https://github.com/marketplace/actions/markdownlint-cli2-action
- name: Markdown Lint
uses: DavidAnson/markdownlint-cli2-action@v14
if: steps.changed-files.outputs.any_changed == 'true'
with:
globs: ${{ steps.changed-files.outputs.all_changed_files }}
separator: ","
config: '.rules/.markdownlint.jsonc'
fix: true
markdown-links:
name: Check links
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@main
with:
fetch-depth: '0'
# https://github.com/gaurav-nelson/github-action-markdown-link-check
- name: Markdown links
uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
# yamllint disable-line rule:truthy
check-modified-files-only: yes
config-file: '.rules/mlc_config.json'
base-branch: 'main'
...

30
.github/workflows/validate_python.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
---
name: Validate Python (flake8)
# yamllint disable-line rule:truthy
on:
push:
paths:
- '*.py'
pull_request:
paths:
- '*.py'
workflow_dispatch:
jobs:
flake8-lint:
runs-on: ubuntu-latest
name: Lint
steps:
- name: Check out source repository
uses: actions/checkout@main
- name: Set up Python environment
uses: actions/setup-python@main
with:
python-version: "3.11"
- name: flake8 Lint
uses: py-actions/flake8@v2
with:
max-line-length: "200"
path: "components/nspanel_ha_blueprint"
...

49
.github/workflows/validate_yamllint.yml vendored Normal file
View File

@@ -0,0 +1,49 @@
---
name: Validate YAML (secondary files)
# yamllint disable-line rule:truthy
on:
push:
paths:
- '**/*.yml'
- '**/*.yaml'
pull_request:
paths:
- '**/*.yml'
- '**/*.yaml'
workflow_dispatch:
jobs:
code_scan:
name: Validate YAML
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Identify changed files
uses: tj-actions/changed-files@v41
id: changed-files
with:
files: '**/*.y*ml'
separator: ","
- name: Validate YAML
if: steps.changed-files.outputs.any_changed == 'true'
run: |
IFS=',' read -ra FILES <<< "${{ steps.changed-files.outputs.all_changed_files }}"
for file in "${FILES[@]}"; do
if [[ "$file" =~ ^nspanel_esphome.*\.yaml$ ]] || \
[[ "$file" =~ ^esphome/nspanel_esphome.*\.yaml$ ]] || \
[[ "$file" =~ ^prebuilt/nspanel_esphome.*\.yaml$ ]] || \
[[ "$file" == "nspanel_blueprint.yaml" ]]; then
echo "Skipping $file"
continue
fi
echo "::group::Validating $file"
yamllint -c "./.rules/yamllint.yml" "$file"
echo "::endgroup::"
done
...

2
.gitignore vendored
View File

@@ -11,5 +11,3 @@ Nextion2Text.*
# Ignore dev folder
dev
nspanel_esphome_prebuilt.yaml

View File

@@ -0,0 +1,4 @@
{
"MD013": { "line_length": 200 }
}

2
.rules/markdownlint.yml Normal file
View File

@@ -0,0 +1,2 @@
MD013:
line_length: 200

13
.rules/mlc_config.json Normal file
View File

@@ -0,0 +1,13 @@
{
"ignorePatterns": [
{
"pattern": "^http://homeassistant\\.local.*$"
},
{
"pattern": "^https://sonoff.tech/product/central-control-panel/nspanel/$"
},
{
"pattern": "^https://sonoff.tech/wp-content/uploads/2021/11/%E4%BA%A7%E5%93%81%E5%8F%82%E6%95%B0%E8%A1%A8-NSPanel-20210831.pdf$"
}
]
}

42
.rules/yamllint.yml Normal file
View File

@@ -0,0 +1,42 @@
# https://yamllint.readthedocs.io/en/stable/configuration.html#default-configuration
---
yaml-files:
- '*.yaml'
- '*.yml'
- '.yamllint'
rules:
anchors:
forbid-undeclared-aliases: true
forbid-duplicated-anchors: true
braces: enable
brackets: enable
colons: enable
commas: enable
comments:
level: warning
comments-indentation:
level: warning
document-end:
level: warning
document-start:
level: warning
empty-lines: enable
empty-values: disable
float-values:
level: warning
hyphens: enable
indentation: enable
key-duplicates: enable
key-ordering: disable
line-length:
max: 200
new-line-at-end-of-file: enable
new-lines: enable
octal-values:
level: warning
quoted-strings: disable
trailing-spaces: enable
truthy:
level: warning
...

View File

@@ -1,11 +0,0 @@
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
core_package: !include ../nspanel_esphome.yaml # Core package
advanced_package: !include ../advanced/esphome/nspanel_esphome_advanced.yaml
#addon_climate_heat: !include ../nspanel_esphome_addon_climate_heat.yaml
#addon_climate_cool: !include ../nspanel_esphome_addon_climate_cool.yaml

View File

@@ -1,21 +0,0 @@
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
core_package: !include ../nspanel_esphome.yaml # Core package
advanced_package: !include ../advanced/esphome/nspanel_esphome_advanced.yaml
#addon_climate_heat: !include ../nspanel_esphome_addon_climate_heat.yaml
addon_climate_cool: !include ../nspanel_esphome_addon_climate_cool.yaml
esp32:
framework:
type: esp-idf
bluetooth_proxy:
# Set Wi-Fi power save mode to "LIGHT" as required for Bluetooth on ESP32
wifi:
power_save_mode: LIGHT

View File

@@ -1,23 +0,0 @@
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
core_package: !include ../nspanel_esphome.yaml # Core package
advanced_package: !include ../advanced/esphome/nspanel_esphome_advanced.yaml
#addon_climate_heat: !include ../nspanel_esphome_addon_climate_heat.yaml
addon_climate_cool: !include ../nspanel_esphome_addon_climate_cool.yaml
esp32:
framework:
type: esp-idf
version: 5.0.2
platform_version: 6.3.2
bluetooth_proxy:
# Set Wi-Fi power save mode to "LIGHT" as required for Bluetooth on ESP32
wifi:
power_save_mode: LIGHT

View File

@@ -1,11 +0,0 @@
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
core_package: !include ../nspanel_esphome.yaml # Core package
advanced_package: !include ../advanced/esphome/nspanel_esphome_advanced.yaml
addon_climate_heat: !include ../nspanel_esphome_addon_climate_heat.yaml
#addon_climate_cold: !include ../nspanel_esphome_addon_climate_cold.yaml

View File

@@ -0,0 +1,15 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
advanced_package: !include ../esphome/nspanel_esphome_advanced.yaml
esp32:
framework:
type: arduino
...

View File

@@ -1,15 +1,18 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
nextion_update_blank_url: "http://homeassistant.local:8123/local/nspanel/dev/nspanel_blank.tft"
nextion_blank_url: "http://homeassistant.local:8123/local/nspanel_blank.tft"
packages:
core_package: !include ../nspanel_esphome.yaml # Core package
advanced_package: !include ../advanced/esphome/nspanel_esphome_advanced.yaml
addon_climate_heat: !include ../nspanel_esphome_addon_climate_heat.yaml
#addon_climate_cold: !include ../nspanel_esphome_addon_climate_cold.yaml
basic_package: !include ../nspanel_esphome.yaml # Core package
advanced_package: !include ../esphome/nspanel_esphome_advanced.yaml
addon_climate_heat: !include ../esphome/nspanel_esphome_addon_climate_heat.yaml
esp32:
framework:
type: arduino
##### Customizations from Wiki #####
api:
@@ -25,27 +28,9 @@ binary_sensor:
id: display_state
platform: template
lambda: |-
return (id(current_page).state != "screensaver");
# Enable Bluetooth proxy
bluetooth_proxy:
return (current_page->state != "screensaver");
button:
##### UPDATE TFT BLANK DISPLAY #####
#- name: ${device_name} Update TFT display (blank)
# platform: template
# icon: mdi:file-sync
# id: tft_update_blank
# entity_category: config
# on_press:
# - logger.log: "Button pressed: Update TFT display (blank)"
# - binary_sensor.template.publish:
# id: nextion_init
# state: false
# - delay: 16ms
# - lambda: |-
# id(disp1)->set_tft_url("${nextion_update_blank_url}");
# id(disp1).upload_tft();
# Adds a button to put the panel to sleep
- name: ${device_name} Sleep
id: force_sleep
@@ -55,8 +40,8 @@ button:
then:
- logger.log: Button Sleep pressed
- lambda: |-
if (id(current_page).state != "screensaver") id(disp1).goto_page("screensaver");
goto_page->execute("screensaver");
# Adds a button to wake-up the panel (similar to the existing service)
- name: ${device_name} Wake-up
id: force_wake_up
@@ -66,10 +51,10 @@ button:
then:
- logger.log: Button Wake-up pressed
- lambda: |-
if (id(current_page).state == "screensaver") id(disp1).goto_page(id(wakeup_page_name).state.c_str());
// id(timer_page).execute(id(wakeup_page_name).state.c_str()); // enable this if you want page timeout to be reset
id(timer_sleep).execute(id(wakeup_page_name).state.c_str(), int(id(timeout_sleep).state));
id(timer_dim).execute(id(wakeup_page_name).state.c_str(), int(id(timeout_dim).state));
if (current_page->state == "screensaver") id(disp1).goto_page(id(wakeup_page_name).state.c_str());
// timer_page->execute(); // enable this if you want page timeout to be reset
timer_sleep->execute();
timer_dim->execute();
# Add custom presets to your climate (heat in this example)
climate:
@@ -91,16 +76,13 @@ climate:
default_target_temperature_low: 17.5 ${temp_units}
mode: "heat"
# Change framework to `esp-idf`
esp32:
framework:
type: esp-idf
esphome:
# change OTA password, remove after flashing
on_boot:
- lambda: |-
id(my_ota).set_auth_password("New password");
- priority: 601.0
then:
- lambda: |-
id(my_ota).set_auth_password("New password");
# Limit the amount of resources used for compiling
compile_process_limit: 1
@@ -117,12 +99,12 @@ light:
- lambda: |-
ESP_LOGD("light.display_light", "Turn-on");
if (current_page->state == "screensaver") disp1->goto_page(wakeup_page_name->state.c_str());
timer_reset_all->execute(wakeup_page_name->state.c_str());
timer_reset_all->execute();
on_turn_off:
then:
- lambda: |-
ESP_LOGD("light.display_light", "Turn-off");
disp1->goto_page("screensaver");
goto_page->execute("screensaver");
logger:
# Enable hardware UART serial logging
@@ -144,18 +126,18 @@ output:
uint8_t current_brightness = int(round(display_light->current_values.is_on() ? (display_light->current_values.get_brightness() * 100.0f) : 0.0));
ESP_LOGV("output.display_output", "current_brightness: %i%%", current_brightness);
set_brightness->execute(current_brightness);
script:
# Updates the existing `page_changed` script to update the `display_light` status when a page changes
- id: !extend page_changed
then:
- lambda: |-
ESP_LOGD("script.page_changed(custom)", "page: %s", page.c_str());
ESP_LOGD("script.page_changed(custom)", "page: %s", current_page->state.c_str());
ESP_LOGV("script.page_changed(custom)", "is_on(): %s", display_light->current_values.is_on() ? "True" : "False");
if (page == "screensaver" and display_light->current_values.is_on()) {
if (current_page->state == "screensaver" and display_light->current_values.is_on()) {
auto call = display_light->turn_off();
call.perform();
} else if (page != "screensaver" and (not display_light->current_values.is_on())) {
} else if (current_page->state != "screensaver" and (not display_light->current_values.is_on())) {
auto call = display_light->turn_on();
call.perform();
}
@@ -164,13 +146,13 @@ script:
- id: !extend set_brightness
then:
- lambda: |-
ESP_LOGD("script.set_brightness(custom)", "brightness: %i%%", brightness);
uint8_t current_brightness = int(round(display_light->current_values.is_on() ? (display_light->current_values.get_brightness() * 100.0f) : 0.0));
ESP_LOGV("script.set_brightness(custom)", "current_brightness: %i%%", current_brightness);
if (brightness != current_brightness) {
ESP_LOGD("script.set_brightness(custom)", "brightness: %.0f%%", brightness);
uint8_t current_light_brightness = int(round(display_light->current_values.is_on() ? (display_light->current_values.get_brightness() * 100.0f) : 0.0));
ESP_LOGV("script.set_brightness(custom)", "current_light_brightness: %i%%", current_light_brightness);
if (brightness != current_light_brightness) {
if (current_page->state != "screensaver" and brightness > 0) {
auto call = display_light->turn_on();
call.set_brightness(static_cast<float>(id(display_last_brightness)) / 100.0f);
call.set_brightness(current_brightness->state / 100.0f);
call.perform();
} else if (display_light->current_values.is_on()) {
auto call = display_light->turn_off();
@@ -188,14 +170,8 @@ time:
- !secret mysntpserver
- europe.pool.ntp.org
- 0.pool.ntp.org
on_time:
#- hours: 22
# minutes: 0
# seconds: 0
# then:
# - deep_sleep.enter:
# sleep_duration: 7h
# Scheduled relay
on_time:
- hours: 7
minutes: 30
seconds: 0
@@ -242,11 +218,6 @@ time:
mode: auto
target_temperature: 18°C
uart:
# Set Nextion comms baud rate to 921600 bps
- id: !extend tf_uart
baud_rate: 9600
web_server:
# Custom web server credentials
auth:
@@ -266,5 +237,4 @@ wifi:
- ssid: !secret wifi_ssid_backup
password: !secret wifi_password_backup
priority: 0
# Set Wi-Fi power save mode to "LIGHT" as required for Bluetooth on ESP32
power_save_mode: LIGHT
...

View File

@@ -0,0 +1,14 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Basic package
esp32:
framework:
type: arduino
...

View File

@@ -0,0 +1,15 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_climate_cool: !include ../esphome/nspanel_esphome_addon_climate_cool.yaml
esp32:
framework:
type: arduino
...

View File

@@ -0,0 +1,15 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_climate_dual: !include ../esphome/nspanel_esphome_addon_climate_dual.yaml
esp32:
framework:
type: arduino
...

View File

@@ -0,0 +1,15 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_climate_heat: !include ../esphome/nspanel_esphome_addon_climate_heat.yaml
esp32:
framework:
type: arduino
...

View File

@@ -1,11 +0,0 @@
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
core_package: !include ../nspanel_esphome.yaml # Core package
#advanced_package: !include ../advanced/esphome/nspanel_esphome_advanced.yaml
#addon_climate_heat: !include ../nspanel_esphome_addon_climate_heat.yaml
addon_climate_cool: !include ../nspanel_esphome_addon_climate_cool.yaml

View File

@@ -1,11 +0,0 @@
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
core_package: !include ../nspanel_esphome.yaml # Core package
#advanced_package: !include ../advanced/esphome/nspanel_esphome_advanced.yaml
addon_climate_heat: !include ../nspanel_esphome_addon_climate_heat.yaml
#addon_climate_cool: !include ../nspanel_esphome_addon_climate_cool.yaml

View File

@@ -1,11 +0,0 @@
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
core_package: !include ../nspanel_esphome.yaml # Core package
#advanced_package: !include ../advanced/esphome/nspanel_esphome_advanced.yaml
#addon_climate_heat: !include ../nspanel_esphome_addon_climate_heat.yaml
#addon_climate_cool: !include ../nspanel_esphome_addon_climate_cool.yaml

View File

@@ -0,0 +1,17 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
advanced_package: !include ../esphome/nspanel_esphome_advanced.yaml
esp32:
framework:
type: esp-idf
version: 5.0.2
platform_version: 6.3.2
...

View File

@@ -0,0 +1,16 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Basic package
esp32:
framework:
type: esp-idf
version: 5.0.2
platform_version: 6.3.2
...

View File

@@ -0,0 +1,17 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_ble_tracker: !include ../esphome/nspanel_esphome_addon_ble_tracker.yaml
esp32:
framework:
type: esp-idf
version: 5.0.2
platform_version: 6.3.2
...

View File

@@ -0,0 +1,17 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_bluetooth_proxy: !include ../esphome/nspanel_esphome_addon_bluetooth_proxy.yaml
esp32:
framework:
type: esp-idf
version: 5.0.2
platform_version: 6.3.2
...

View File

@@ -0,0 +1,17 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_climate_cool: !include ../esphome/nspanel_esphome_addon_climate_cool.yaml
esp32:
framework:
type: esp-idf
version: 5.0.2
platform_version: 6.3.2
...

View File

@@ -0,0 +1,17 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_climate_dual: !include ../esphome/nspanel_esphome_addon_climate_dual.yaml
esp32:
framework:
type: esp-idf
version: 5.0.2
platform_version: 6.3.2
...

View File

@@ -0,0 +1,17 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_climate_heat: !include ../esphome/nspanel_esphome_addon_climate_heat.yaml
esp32:
framework:
type: esp-idf
version: 5.0.2
platform_version: 6.3.2
...

View File

@@ -0,0 +1,11 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
advanced_package: !include ../esphome/nspanel_esphome_advanced.yaml
...

View File

@@ -0,0 +1,14 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
advanced_package: !include ../esphome/nspanel_esphome_advanced.yaml
addon_climate_heat: !include ../esphome/nspanel_esphome_addon_climate_heat.yaml
# addon_climate_cold: !include ../esphome/nspanel_esphome_addon_climate_cold.yaml
# addon_climate_dual: !include ../esphome/nspanel_esphome_addon_climate_dual.yaml
...

View File

@@ -0,0 +1,238 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_blank_url: "http://homeassistant.local:8123/local/nspanel_blank.tft"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
advanced_package: !include ../esphome/nspanel_esphome_advanced.yaml
addon_climate_heat: !include ../esphome/nspanel_esphome_addon_climate_heat.yaml
# addon_climate_cold: !include ../esphome/nspanel_esphome_addon_climate_cold.yaml
# addon_climate_dual: !include ../esphome/nspanel_esphome_addon_climate_dual.yaml
##### Customizations from Wiki #####
api:
# Encrypt the communication between ESPHome and Home Assistant
encryption:
key: !secret api_encryption_key
# Reboot if HA is not connected for 15 minutes
reboot_timeout: 15min
binary_sensor:
# Is display awake?
- name: ${device_name} Display state
id: display_state
platform: template
lambda: |-
return (current_page->state != "screensaver");
button:
# Adds a button to put the panel to sleep
- name: ${device_name} Sleep
id: force_sleep
platform: template
icon: mdi:sleep
on_press:
then:
- logger.log: Button Sleep pressed
- lambda: |-
goto_page->execute("screensaver");
# Adds a button to wake-up the panel (similar to the existing service)
- name: ${device_name} Wake-up
id: force_wake_up
platform: template
icon: mdi:alarm
on_press:
then:
- logger.log: Button Wake-up pressed
- lambda: |-
if (current_page->state == "screensaver") id(disp1).goto_page(id(wakeup_page_name).state.c_str());
// timer_page->execute(); // enable this if you want page timeout to be reset
timer_sleep->execute();
timer_dim->execute();
# Add custom presets to your climate (heat in this example)
climate:
- id: !extend thermostat_embedded
heat_deadband: 0.3
heat_overrun: 0.0
default_preset: "Home"
preset:
- name: "Off"
default_target_temperature_low: ${temp_min} ${temp_units}
mode: "off"
- name: Home
default_target_temperature_low: 21 ${temp_units}
mode: "heat"
- name: Away
default_target_temperature_low: 16.5 ${temp_units}
mode: "heat"
- name: Sleep
default_target_temperature_low: 17.5 ${temp_units}
mode: "heat"
esphome:
# change OTA password, remove after flashing
on_boot:
- priority: 601.0
then:
- lambda: |-
id(my_ota).set_auth_password("New password");
# Limit the amount of resources used for compiling
compile_process_limit: 1
light:
# Add the display as a light in Home Assistant
- name: ${device_name} Display
id: display_light
icon: mdi:tablet-dashboard
platform: monochromatic
output: display_output
default_transition_length: 0s
on_turn_on:
then:
- lambda: |-
ESP_LOGD("light.display_light", "Turn-on");
if (current_page->state == "screensaver") disp1->goto_page(wakeup_page_name->state.c_str());
timer_reset_all->execute();
on_turn_off:
then:
- lambda: |-
ESP_LOGD("light.display_light", "Turn-off");
goto_page->execute("screensaver");
logger:
# Enable hardware UART serial logging
baud_rate: 115200
ota:
# change OTA password, remove after flashing
password: !secret wifi_password
id: my_ota
output:
# Output required by `display_light` to send the commands to Nextion
- id: display_output
platform: template
type: float
write_action:
- lambda: |-
ESP_LOGV("output.display_output", "state: %f", state);
uint8_t current_brightness = int(round(display_light->current_values.is_on() ? (display_light->current_values.get_brightness() * 100.0f) : 0.0));
ESP_LOGV("output.display_output", "current_brightness: %i%%", current_brightness);
set_brightness->execute(current_brightness);
script:
# Updates the existing `page_changed` script to update the `display_light` status when a page changes
- id: !extend page_changed
then:
- lambda: |-
ESP_LOGD("script.page_changed(custom)", "page: %s", current_page->state.c_str());
ESP_LOGV("script.page_changed(custom)", "is_on(): %s", display_light->current_values.is_on() ? "True" : "False");
if (current_page->state == "screensaver" and display_light->current_values.is_on()) {
auto call = display_light->turn_off();
call.perform();
} else if (current_page->state != "screensaver" and (not display_light->current_values.is_on())) {
auto call = display_light->turn_on();
call.perform();
}
# Updates the existing `set_brightness` script to update the `display_light` status when a new brightness level is set
- id: !extend set_brightness
then:
- lambda: |-
ESP_LOGD("script.set_brightness(custom)", "brightness: %.0f%%", brightness);
uint8_t current_light_brightness = int(round(display_light->current_values.is_on() ? (display_light->current_values.get_brightness() * 100.0f) : 0.0));
ESP_LOGV("script.set_brightness(custom)", "current_light_brightness: %i%%", current_light_brightness);
if (brightness != current_light_brightness) {
if (current_page->state != "screensaver" and brightness > 0) {
auto call = display_light->turn_on();
call.set_brightness(current_brightness->state / 100.0f);
call.perform();
} else if (display_light->current_values.is_on()) {
auto call = display_light->turn_off();
call.set_brightness(0);
call.perform();
}
}
time:
- id: !extend time_provider
timezone: "America/Cancun"
# Use my own local network time server
platform: sntp
servers:
- !secret mysntpserver
- europe.pool.ntp.org
- 0.pool.ntp.org
# Scheduled relay
on_time:
- hours: 7
minutes: 30
seconds: 0
then:
- switch.turn_on: relay_1
- hours: 12
minutes: 15
seconds: 0
then:
- switch.turn_off: relay_1
- hours: 19
minutes: 30
seconds: 0
then:
- switch.turn_on: relay_1
- hours: 23
minutes: 30
seconds: 0
then:
- switch.turn_off: relay_1
# Scheduled climate
- hours: 7
minutes: 0
seconds: 0
then:
- climate.control:
id: thermostat_embedded
mode: auto
target_temperature: 22°C
- hours: 19
minutes: 0
seconds: 0
then:
- climate.control:
id: thermostat_embedded
mode: auto
target_temperature: 20°C
- hours: 23
minutes: 0
seconds: 0
then:
- climate.control:
id: thermostat_embedded
mode: auto
target_temperature: 18°C
web_server:
# Custom web server credentials
auth:
username: !secret web_server_username
password: !secret web_server_password
wifi:
networks:
- id: !extend wifi_default
# Set IP address manually
manual_ip:
static_ip: 192.168.0.123
gateway: 192.168.0.1
subnet: 255.255.255.0
# Set dual network
priority: 10
- ssid: !secret wifi_ssid_backup
password: !secret wifi_password_backup
priority: 0
...

View File

@@ -0,0 +1,10 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Basic package
...

View File

@@ -0,0 +1,11 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_ble_tracker: !include ../esphome/nspanel_esphome_addon_ble_tracker.yaml
...

View File

@@ -0,0 +1,11 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_bluetooth_proxy: !include ../esphome/nspanel_esphome_addon_bluetooth_proxy.yaml
...

View File

@@ -0,0 +1,11 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_climate_cool: !include ../esphome/nspanel_esphome_addon_climate_cool.yaml
...

View File

@@ -0,0 +1,12 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_climate_cool: !include ../esphome/nspanel_esphome_addon_climate_cool.yaml
addon_bluetooth_proxy: !include ../esphome/nspanel_esphome_addon_bluetooth_proxy.yaml
...

View File

@@ -0,0 +1,11 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_climate_dual: !include ../esphome/nspanel_esphome_addon_climate_dual.yaml
...

View File

@@ -0,0 +1,11 @@
---
substitutions:
device_name: nspanel
wifi_ssid: "nspanel"
wifi_password: "NSPanel_HA_Blueprint"
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
packages:
basic_package: !include ../nspanel_esphome.yaml # Core package
addon_climate_heat: !include ../esphome/nspanel_esphome_addon_climate_heat.yaml
...

View File

@@ -1,3 +1,4 @@
---
api_encryption_key: MSANehPIH8kCp/vGcpPcKPSkYnv3zchyxkXCleXJinM=
mysntpserver: 192.168.0.1
web_server_password: NotASecret01
@@ -5,3 +6,4 @@ web_server_username: NotASecret01
wifi_password: NotASecret01
wifi_password_backup: NotASecret01
wifi_ssid_backup: NotASecret01
...

View File

@@ -1,13 +0,0 @@
# https://yamllint.readthedocs.io/en/stable/configuration.html#default-configuration
extends: relaxed
rules:
anchors:
forbid-undeclared-aliases: true
forbid-duplicated-anchors: true
# 255 chars should be enough, but don't fail if a line is longer
line-length:
max: 255
level: warning

116
README.md
View File

@@ -1,16 +1,16 @@
# NSPanel Custom with HA Blueprint
This innovative solution is designed to revolutionize how you interact with your Sonoff NSPanel.
Our goal? To make the customization of your NSPanel seamless, intuitive, and completely code-free!
*Are you happy with our version for NSPanel? Please consider supporting us with a donation.*
<br>[![Paypal](https://user-images.githubusercontent.com/41958506/212499642-b2fd097a-0938-4bfc-b37b-74df64592c58.png)](https://www.paypal.com/donate/?hosted_button_id=S974SWQMB8PB2)
[![Paypal](https://user-images.githubusercontent.com/41958506/212499642-b2fd097a-0938-4bfc-b37b-74df64592c58.png)](https://www.paypal.com/donate/?hosted_button_id=S974SWQMB8PB2)
[![Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.](https://my.home-assistant.io/badges/blueprint_import.svg)](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2FBlackymas%2FNSPanel_HA_Blueprint%2Fblob%2Fmain%2Fnspanel_blueprint.yaml)
[![ESPHome (latest)](https://github.com/Blackymas/NSPanel_HA_Blueprint/actions/workflows/validate_esphome.yml/badge.svg)](https://github.com/Blackymas/NSPanel_HA_Blueprint/actions/workflows/validate_esphome.yml)
[![Validate ESPHome (beta)](https://github.com/Blackymas/NSPanel_HA_Blueprint/actions/workflows/validate_esphome_beta.yml/badge.svg)](https://github.com/Blackymas/NSPanel_HA_Blueprint/actions/workflows/validate_esphome_beta.yml)
# NSPanel Custom with HA Blueprint
This innovative solution is designed to revolutionize how you interact with your Sonoff NSPanel. Our goal? To make the customization of your NSPanel seamless, intuitive, and completely code-free!
## Table of Contents
1. [Project Highlights](#-project-highlights)
2. [Documentation & Resources](#-documentation--resources)
3. [Features](#-features)
@@ -29,10 +29,10 @@ This innovative solution is designed to revolutionize how you interact with your
## 📚 Documentation & Resources
- **Getting Started:** Dive into our comprehensive [Documentation and Setup Guide](/docs/en/README.md) for detailed instructions.
- **Video Tutorial:** Prefer visual learning? Check out our [Step-by-Step Setup Video](/docs/en/README.md).
- **Troubleshooting:** Encounter an issue? Here's how to report it: [WIKI HowTo](/docs/en/README.md).
- **Feature Requests:** Got ideas? Share them [here](/Blackymas/NSPanel_HA_Blueprint/labels/new%20feature%20request).
- **Getting Started:** Dive into our comprehensive [Documentation and Setup Guide](docs/README.md) for detailed instructions.
- **Video Tutorial:** Prefer visual learning? Check out our [Step-by-Step Setup Video](docs/README.md).
- **Troubleshooting:** Encounter an issue? Here's how to report it: [WIKI HowTo](docs/README.md).
- **Feature Requests:** Got ideas? Share them [here](https://github.com/Blackymas/NSPanel_HA_Blueprint/labels/new%20feature%20request).
- **What's Next?:** Discover what's next and what we are working on right now in our [Milestones](https://github.com/Blackymas/NSPanel_HA_Blueprint/milestones?direction=asc&sort=due_date)
## 🚀 Features
@@ -43,7 +43,7 @@ This innovative solution is designed to revolutionize how you interact with your
- Buttons show current brightness and cover position in the button itself
- Buttons label can be assigned via blueprint
- Weather + 5 days weather forecast
- Thermostat + Touch + [Relay control for floor heating](/docs/en/addon_climate.md)
- Thermostat + Touch + [Relay control for floor heating](docs/addon_climate.md)
- Light control (brightness, color and temperature) - via long Press
- Cover control (open, close and position) - via long press
- Settings page (display brightness, display dim brightness, sleep mode, reboot NSPanel)
@@ -54,13 +54,12 @@ This innovative solution is designed to revolutionize how you interact with your
- 2 physical switches with optional fallback mode
- and much more ;)
## 📖 Pages Overview
### Home
![Home EU](docs/pics/eu_home.png)
<br>
![Home US](docs/pics/us_home.png)
- Current weather with button to Weather Forcast page
@@ -73,23 +72,32 @@ This innovative solution is designed to revolutionize how you interact with your
- Room humidity
- Up to 3 user's selectable entities
&nbsp;
### Button Page
### Buttons Pages
![3 Buttonpage](https://user-images.githubusercontent.com/41958506/203654022-c6d81263-ce56-4a84-917a-9d4911f19f55.png)
![NEW Domains](https://user-images.githubusercontent.com/41958506/206879659-3aea30c1-b126-4d52-a869-abf6adfc8fa1.png)
- Up to 32 buttons
- 4 Button pages
- Up to 8 buttons per page, across 4 different pages, totaling 32 buttons
- Button design is automatically generated based on the selected entity
- Buttons show current brightness and cover position in the button itself
- Buttons label can be assigned via blueprint
- All buttons with long press function
- Automatic detection by long press if it is a light, cover or climate for submenu
- Swipe between all pages
- Swipe also down and up for fast access to certain pages
- Buttons display current brightness and cover position directly on the button
- Button labels can be assigned via blueprint
- All buttons feature a long-press function
- Automatic detection of light, cover, fan, media player, alarm or climate entities for submenus through long press
- Swipe between all pages
- Swipe up and down for quick access to specific pages
### Entities Pages
![Entities EU](docs/pics/eu_entities.png)
![Entities US](docs/pics/us_entities.png)
- Up to 8 entities per page, across 4 different pages, totaling 32 entities
- Icons and labels can be individually configured via blueprint or automatically detected for each entity
- Flexible alignment options for values as per user preference
&nbsp;
### Light Settings
![4 lightsetting 1](https://user-images.githubusercontent.com/41958506/203654055-943d1910-7673-4d9f-ad81-7ef00d155e5a.png)
![5 Lightsetting 2](https://user-images.githubusercontent.com/41958506/203654076-93e110df-f314-4cf1-8500-ed667f2202fd.png)
![6 Lightsetting 3](https://user-images.githubusercontent.com/41958506/203654179-f7303b02-c886-4890-b976-cb498940a627.png)
@@ -100,8 +108,8 @@ This innovative solution is designed to revolutionize how you interact with your
- Color temperature slider
- Jump back to the right button page
&nbsp;
### Cover Settings
![8 Cover](https://user-images.githubusercontent.com/41958506/203654290-c6ec2f2f-7924-492c-914c-0d96dc3907e0.png)
- Open and close cover
@@ -109,29 +117,28 @@ This innovative solution is designed to revolutionize how you interact with your
- Cover battery value (when available)
- jump back to the right button page
&nbsp;
### Thermostat / Climate
- Target temperature control slider
- Target temperature control slider
- Current temperature
- 4 user's selectable values (for water and external temperatures, etc.)
- All the standard climate controls from Home Assistant (`heat`, `fan`, `cool`, `auto`, `dry`)
- 2 user's selectable buttons
- [Can be used for local control (even when Wi-Fi is unavailable) when your panel's relays are used to control your cooler/heater](/docs/en/addon_climate.md)
- [Can be used for local control (even when Wi-Fi is unavailable) when your panel's relays are used to control your cooler/heater](docs/addon_climate.md)
&nbsp;
### Fan speed
- Turn-on and turn-off fan
- Set speed via slider or buttons
- jump back to the right button page
&nbsp;
### Alarm
- Arm/disarm an alarm (standard modes supported by Home Assistant)
- Support to numeric pin for arming or disarming
&nbsp;
### Weather Forecast
![9 Weather](https://user-images.githubusercontent.com/41958506/203654307-24000d00-b7e1-47eb-bd64-9e97b508db52.png)
- 5 days weather forecast via swipe (supports most used weather integrations)
@@ -144,11 +151,10 @@ This innovative solution is designed to revolutionize how you interact with your
- Thunderstorm probability
- Wind speed
&nbsp;
### Display Settings
![Settings EU](docs/pics/eu_settings.png)
<br>
![Settings US](docs/pics/us_settings.png)
- Restart NSPanel
@@ -156,22 +162,27 @@ This innovative solution is designed to revolutionize how you interact with your
- Display dim brightness slider
### Boot
![Boot EU](docs/pics/eu_boot.png)
<br>
![Boot US](docs/pics/us_boot.png)
![Boot EU](docs/pics/eu_boot.png)
![Boot US](docs/pics/us_boot.png)
## Home Assistant interface
## Device's page
On the device's page under "Devices & Services" you can set the global configuration of your device and see the value of it's sensors and relays:
![Device Setting - Controls](docs/pics/ha_device_controls.png)<br>
![Device Setting - Sensors](docs/pics/ha_device_sensors.png)<br>
![Device Setting - Configuration](docs/pics/ha_device_configuration.png)<br>
![Device Setting - Diagnostic](docs/pics/ha_device_diagnostic.png)<br>
![Device Setting - Controls](docs/pics/ha_device_controls.png)
![Device Setting - Sensors](docs/pics/ha_device_sensors.png)
![Device Setting - Configuration](docs/pics/ha_device_configuration.png)
![Device Setting - Diagnostic](docs/pics/ha_device_diagnostic.png)
## Automation (Blueprint)
In your automations you use the blueprint's inputs to define what will be shown on your panel and how it should behave:
![Blueprint 01](docs/pics/ha_blueprint_01.png)
![Blueprint 02](docs/pics/ha_blueprint_02.png)
@@ -179,7 +190,6 @@ In your automations you use the blueprint's inputs to define what will be shown
![Blueprint 04](docs/pics/ha_blueprint_04.png)
![Blueprint 05](docs/pics/ha_blueprint_05.png)
## 🚀 Contributing
- **Pull Requests:** Please direct all pull requests to the `DEV` branch, not the `main` branch.
@@ -198,15 +208,15 @@ Join our vibrant community! Whether you're seeking support, wanting to contribut
A huge thank you to everyone who has contributed to making this project a reality. Your support, feedback, and contributions have been invaluable.
And special thanks for the other projects which inspired us:
- Hellis81: https://github.com/Hellis81/NS-panel
- Jimmyboy83: https://github.com/Jimmyboy83/nspanel
- joBr99: https://github.com/joBr99/Generate-HASP-Fonts
- lovejoy77: https://github.com/lovejoy777/NSpanel
- Marcfager: https://github.com/marcfager/nspanel-mf
- Masto: https://github.com/masto/NSPanel-Demo-Files
- sairon: https://github.com/sairon/esphome-nspanel-lovelace-ui
- SmartHome Yourself: https://www.youtube.com/c/SmarthomeyourselfDe_DIY
- [Hellis81](https://github.com/Hellis81/NS-panel)
- [Jimmyboy83](https://github.com/Jimmyboy83/nspanel)
- [joBr99](https://github.com/joBr99/Generate-HASP-Fonts)
- [lovejoy77](https://github.com/lovejoy777/NSpanel)
- [Marcfager](https://github.com/marcfager/nspanel-mf)
- [Masto](https://github.com/masto/NSPanel-Demo-Files)
- [sairon](https://github.com/sairon/esphome-nspanel-lovelace-ui)
- [SmartHome Yourself](https://www.youtube.com/c/SmarthomeyourselfDe_DIY)
## 💖 Donations

View File

@@ -1,87 +1,816 @@
# v4.2 <= pending update
# v4.3 - Welcome to Framework ESP-IDF, an Utilities Dashboard and Enhanced Localization
## General
This milestone release is not just about adopting a new technical foundation;
it's about enhancing the capabilities and experiences of our users through significant performance improvements,
more comprehensive API documentation, customizable user interfaces and improved localization.
## Support this project
And with a nice Utilities Dashboard as a bonus!!
### As always, we would like to thank everyone who donated to this project and remind you that every donation helps to support this project - so if you haven't made a donation yet, now would be a good time ;)
Our dedication to refining the user experience and expanding customization options continues, with this release featuring:
[![Paypal](https://user-images.githubusercontent.com/41958506/212499642-b2fd097a-0938-4bfc-b37b-74df64592c58.png)](https://www.paypal.com/donate/?hosted_button_id=S974SWQMB8PB2)
- **Utilities Dashboard**: A new addition, offering a customizable overview for essential utility metrics such as solar production,
wind energy, EV charging status, battery levels, and water or gas consumption.
&nbsp;
## General <= pending update
The focus this time was on making easier to transfer the TFT files.
- **Comprehensive API Documentation**: Simplifying customization and integration for developers and users, enabling tailored experiences with detailed service documentation.
As this project grows with features, it becomes more hungry of resources from all sides (ESPHome, your Home Assistant server and even the Nextion display) and with that the chances of something going wrong when updating increased.
- **Localization and Personalization**: Advances in user-defined settings, like decimal separators and value translations, contribute to a more intuitive interface.
Weve also streamlined the display to exclude empty pages, making navigation more efficient.
So at this release we concentrated on cleaning up de code everywhere and shave some unnecessary elements, making the system easier to install and opening some space for future features. But you still can find a couple of nice new things not related to the cleaning.
- **Performance and Functionality**: The shift to the ESP-IDF framework not only boosts performance but also paves the way for future enhancements,
keeping NSPanel at the forefront of smart control technology.
As we embrace the ESP-IDF framework, we're excited to explore the new horizons it brings to the NSPanel firmware. Dive into v4.3 and discover the advancements that await.
## ESP-IDF Framework Transition
With this release, we've officially transitioned to the **ESP-IDF** framework.
This move is part of our ongoing efforts to enhance the memory capacity and expand the features available on the ESP, facilitating broader customization and new functionalities.
For users updating to this version:
- **Flashing Required**: To adopt the ESP-IDF framework, flashing your device using a serial cable is necessary. This step mirrors the initial custom firmware setup process.
- **Arduino Framework Still Available**: For those who prefer the `arduino` framework or require Over-The-Air (OTA) updates, it remains an option.
Detailed guidance on how to choose your framework is provided in our [customization documentation](https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/customization.md#frameworks).
This transition is a significant milestone for us, promising a robust platform for our community.
We're here to help with any questions or assistance needed during this change.
For more details and support, visit our [community discussion](https://github.com/Blackymas/NSPanel_HA_Blueprint/discussions/1756).
&nbsp;
## Updating
Updates may come with changes on the blueprint inputs and we highly recommend you review your settings and make sure all fields have the correct selection. We did our best to support your legacy settings and avoid breaking your system, but please double check your settings if you see something not working as expected.
Please review your settings post-update to ensure compatibility.
Refer to the update procedures [here](https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/howto.md#update-blueprint).
### Files that need to be reloaded:
1. nspanel_eu.tft, nspanel_us.tft or nspanel_us_land.tft - v4.2
2. nspanel_esphome.yaml - v4.2
3. nspanel_blueprint.yaml - v4.2
## Breaking Changes and Guidance
With this release, we're implementing several important changes.
While we strive to improve the panel, we understand that changes can affect your setups.
Here's a detailed overview and guidance for a smooth transition:
####
1. **Home Assistant v2024.3.0 is required**. You can see the full version compatibility list [here](docs/version_compatibility.md).
### Instructions
_You can find the update procedures following here:_
- [(EN) How To - All important thing you should know - Update](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(EN)-HowTo---All-important-thing-you-should-know#2-update-blueprint)
- [(DE) How To - Alle wichtigen Dinge die man wissen sollte - Update](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte#2-update-blueprint)
2. **Transition to ESP-IDF Framework**: This release marks the official switch to the ESP-IDF framework, enhancing performance and allowing for more complex features.
- **What to Do**: You'll need to flash your device with the new firmware using a serial connection.
Detailed instructions are available in our [installation guide](docs/install.md#flashing-the-device-for-the-first-time).
- **Support for Arduino Framework**: If you're not ready to make the switch or prefer the Arduino framework, it's still supported for OTA updates.
See our [framework customization documentation](https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/customization.md#frameworks) for details on how to select your preferred framework.
&nbsp;
## Breaking changes
3. **Several Services Changed**: In our pursuit to enhance integration capabilities and future-proof our services, we've undertaken a comprehensive restructuring of our API.
This change is aimed at improving functionality and compatibility but may require adjustments to your current automations.
- **What to Do**: We strongly encourage you to review our updated [API documentation](docs/api.md).
This resource has been meticulously updated to assist you in updating your automation scripts accordingly.
Pay special attention to the examples section, which offers valuable insights and practical guidance for adapting your existing setups seamlessly.
1. Service `esphome.xxxxx_set_component_color` parameter `background` is deprecated.
2. Due to the additional custom buttons, the other buttons on home page changed their positions.
3. The Wi-Fi power save mode is back to "NONE" as default.<br>
This was the default until v4.0, but we changed on v4.1 to support Bluetooth components, however as this is not used by the majority of users, we are reverting back to the original setting. You can (and should if you want use Bluetooth) enforce other mode as a customization, like in the example bellow:
```yaml
##### My customization - Start #####
# Enable Bluetooth proxy
bluetooth_proxy:
# Set Wi-Fi power save mode to "LIGHT" as required for Bluetooth on ESP32
wifi:
power_save_mode: LIGHT
##### My customization - End #####
```
4. Default baud rate for advanced mode is back to 115200 bps, to avoid issues when creating buttons pages.
4. **15s Hardware Button Press No Longer Restarts the Device**: This feature was removed to repurpose the hardware button for more versatile uses.
- **What to Do**: If you relied on this feature, see our [customization guide](https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/customization.md#restart-with-15s-button-press) for alternatives.
Additionally, the reset pin remains an option for manual resets.
5. **Relay Fallback Switches Removed**: These switches were deprecated and have now been removed to streamline the firmware and reduce memory usage.
- **What to Do**: For users who utilized customizations to expose these switches, refer to our updated customization guide.
Alternatively, use the `esphome.xxxxx_init_hardware` service for a similar functionality without the memory overhead.
6. **Home Page Redesign**: We've redesigned the Home page layout to incorporate an additional value (sensor) and a utilities button, resulting in a minor repositioning of some components.
This change enhances the page's functionality, offering you a broader overview of your smart home at a glance.
While adjusting to the new layout, you might find some of your usual indicators or controls have shifted places, but they're all still readily accessible, designed with intuitive interaction in mind.
We appreciate your understanding and patience during this transition.
Our goal is to ensure NSPanel continues to evolve in a way that enhances your experience and meets future needs.
Our community and support channels are open for any questions or assistance you may require.
&nbsp;
## Overview of noteworthy changes
1. Standardized entity's icons
2. Additional custom buttons on Home page
3. Outdoor temperature selectable font size
- [Transition to ESP-IDF as Default Framework](#transition-to-esp-idf-as-default-framework)
- [New API documentation](#new-api-documentation)
- [Selectable font size for screensaver time display](#selectable-font-size-for-screensaver-time-display)
- [Enhanced Visibility of Hardware Button Bars Across Pages](#enhanced-visibility-of-hardware-button-bars-across-pages)
- [User-Defined Decimal Separator](#user-defined-decimal-separator)
- [Page Light with Power Button](#page-light-with-power-button)
- [Page Fan with Oscillate Button](#page-fan-with-oscillate-button)
- [Streamlined Interface: No More Empty Pages](#streamlined-interface-no-more-empty-pages)
- [Enhanced Localization: Translated Values](#enhanced-localization-translated-values)
- [Expanded Entity Selection for Home and Climate Pages](#expanded-entity-selection-for-home-and-climate-pages)
- [Introducing the Utilities Dashboard](#introducing-the-utilities-dashboard)
- [Expanded Support for "Lock" Entities on Buttons and Chips](#expanded-support-for-lock-entities-on-buttons-and-chips)
- [Additional Value on Home Page](#additional-value-on-home-page)
- [Automatic Font Size Adjustment for Entity Page Values](#automatic-font-size-adjustment-for-entity-page-values)
&nbsp;
## Details of noteworthy changes
### Transition to ESP-IDF as Default Framework
We've transitioned to ESP-IDF, enhancing our platform's performance and capabilities.
This change promises new possibilities for your projects.
Those continuing with the Arduino framework can find instructions for setting framework preferences.
### 1. Standardized entity's icons
The engine for defining the icons to be shown and it's color was standardize between all the pages, so now you may see a more consistent User's Interface.
For more information, visit our [discussion](https://github.com/Blackymas/NSPanel_HA_Blueprint/discussions/1756).
&nbsp;
### 2. Additional custom buttons on Home page
It's that simple, now you have 6 buttons where used to be 3. 😉
### New API documentation
Now all the services available are listed in a comprehensive documentation, making easier for people who want to customize their systems,
integrate to other automations and to encourage new collaborators to our repository.
&nbsp;
### 3. Outdoor temperature selectable font size
Now you can select the font size of your outdoor temperature display:
For more details, please visit our [API documentation](docs/api.md).
![image](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/263f14d6-39f7-41d2-ae12-72f403d811fd)
### Selectable font size for screensaver time display
Now you can chose the font size for your clock display in the screen saver. There are 3 sizes available:
> Important: Long text with bigger fonts may exceed the limit of space reserved for this with incomplete information shown.
![Image](docs/pics/ha_blueprint_sreensaver.png)
&nbsp;
## Next topics we are currently working on
See here: https://github.com/Blackymas/NSPanel_HA_Blueprint/labels/roadmap
#### 72px
![image](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/030ba092-69d4-467d-b5ab-52979c94e742)
![image](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/ae56276f-10be-420c-a156-87f33d1fc322)
![image](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/0aecb76b-c7b1-4257-b2eb-caed513a1f06)
&nbsp;
## Special thanks to:
### 112px
![image](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/689f7fa3-afe5-43e0-839c-a16ca32d0657)
![image](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/5093d1e7-be6b-4042-8e2d-84bf10d0bd2f)
## New Contributors
### 192px
![image](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/3060bea9-4804-45d3-940e-64767e1f3577)
<!-- markdownlint-disable MD028 -->
> [!IMPORTANT]
> For this time to be displayed you must select a brightness higher than 0 on the device's page (under **Settings** > **Devices & Services** > **ESPHome**).
> [!WARNING]
> Some fonts may not support all the languages.
> [!WARNING]
> Bigger fonts may not fit well on your display and the selected time format.
> Please select a different font in that case.
<!-- markdownlint-enable MD028 -->
### Enhanced Visibility of Hardware Button Bars Across Pages
The hardware button bars, which display the status of entities linked to physical buttons, are now configurable to appear across all pages,
including the screensaver, providing a constant visual reference to your system's status.
This update introduces a new setting within the blueprint, allowing you to customize the visibility of these bars according to your preferences.
Whether you need continuous monitoring on certain pages or want to maintain a cleaner look on others, this flexibility enhances your control.
Additionally, we've introduced the option to personalize the color of these bars, offering further customization to match your panel's aesthetic or to signify different statuses at a glance.
![Hardware Button Bars Color Customization](docs/pics/ha_blueprint_hw_buttons_colors.png)
This feature enhances the NSPanel's functionality by ensuring important status indicators are always within view, tailored precisely to how you use your smart home.
### User-Defined Decimal Separator
You can now select the decimal separator for displaying numbers on your NSPanel.
This feature allows for consistency with your regional number format preferences, improving the clarity of numerical information.
Simply go to the settings to choose between the dot (.) and comma (,) as your decimal separator for a display that matches your preference.
![User-Defined Decimal Separator Setting](docs/pics/ha_blueprint_decimal_separator.png)
This update aims to enhance the flexibility and usability of the NSPanel interface for users worldwide.
### Page Light with Power Button
The page Light has been updated to include a power button, simplifying the process of toggling your light on or off.
This intuitive addition allows for quick adjustments directly from the page Light, enhancing the user experience by providing a straightforward control mechanism.
![Page Light Power Button](docs/pics/eu_light.png)
This enhancement streamlines light management, making it more accessible and convenient for everyday use.
### Page Fan with Oscillate Button
The Fan page now features an oscillate button, making it easier to control your fan's oscillation settings.
This convenient update enables users to activate or deactivate the oscillation function with a single tap, directly from the Fan page itself.
It's designed to improve the user experience by offering a simple and effective control option.
![Page Fan Oscillate Button](docs/pics/us_fan.png)
This update simplifies fan operation, enhancing accessibility and usability for all users.
### Streamlined Interface: No More Empty Pages
We've improved the NSPanel interface by ensuring that only populated pages are displayed, both for button and entities pages.
This update creates a more intuitive and clutter-free experience, automatically hiding any pages without assigned entities.
There's no need for additional setup; if a page has no entities linked to it, it simply won't appear on your panel, making navigation smoother and more efficient.
### Enhanced Localization: Translated Values
In a significant step towards a more localized user experience, the values displayed on the NSPanel are now translated using Home Assistant's `state_translated` function, introduced in HA v2024.3.0.
This means that not only are the project's strings translated, but also values provided by Home Assistant, such as those from text sensors or binary sensors.
This enhancement simplifies readability and usability for users interacting with the panel in different languages.
> [!NOTE]
> The translations are managed by Home Assistant and will correspond to the language settings
> specified under [**Settings** > **System** > **General**](https://my.home-assistant.io/redirect/general/).
### Expanded Entity Selection for Home and Climate Pages
With the latest update, we've significantly broadened the range of entities that can be incorporated into the Home and Climate pages,
aligning these sections with the extensive capabilities of the Entities pages.
This enhancement enables a more versatile and detailed representation of your smart home's metrics directly on your NSPanel,
from environmental sensors to energy monitors, offering a tailored view of your home's status at a glance.
When combined with the [Translated Values](#enhanced-localization-translated-values),
this expanded entity selection not only allows for a more personalized dashboard but also ensures that the information displayed is accessible and understandable,
regardless of your preferred language.
Together, these features elevate the NSPanel's functionality, providing you with a richer, more contextually relevant interface that adapts to your specific monitoring needs and preferences.
### Introducing the Utilities Dashboard
The "Utilities Dashboard" is a versatile feature tailored to offer a straightforward overview of your chosen utility metrics.
It's designed for flexibility, allowing you to customize up to six data points, such as solar production, wind energy, EV charging status,
battery levels, water, and gas consumption, according to what's relevant to your home.
This customization ensures that the dashboard only displays the utilities you're monitoring, maintaining a clean and uncluttered interface.
![US model - Utilities Dashboard](docs/pics/us_page_utilities.png) ![EU model - Utilities Dashboard](docs/pics/eu_page_utilities.png)
![Blueprint - Utilities](docs/pics/ha_blueprint_utilities.png)
### Expanded Support for "Lock" Entities on Buttons and Chips
We're enhancing the NSPanel's integration capabilities by extending support for "lock" entities to both buttons and chips.
This development significantly broadens your ability to interact with and control lock mechanisms directly from the NSPanel.
Whether securing your home or managing access to different areas, these updates streamline the control process, integrating seamlessly with your smart home's security setup.
### Additional Value on Home Page
In our continuous effort to enhance the NSPanel's utility and efficiency, we're pleased to announce that the Home page now accommodates a fourth value, complete with its icon.
This addition allows for a more comprehensive at-a-glance view of your essential metrics directly from the home screen, ensuring that crucial information is always just a glance away.
### Automatic Font Size Adjustment for Entity Page Values
We've enhanced the entities pages with an automatic font size adjustment feature to improve the display of values, especially for longer strings or values with lengthy units.
This smart adjustment reduces the occurrence of truncated values by dynamically resizing the font based on the string length.
While the selection of fonts for the panel remains limited, this automatic resizing significantly enhances readability,
ensuring that all displayed information is clear and fully visible at a glance.
## v4.3.1 - Ensuring Compatibility with ESPHome v2024.3.0 and Enhancing Stability
Patch v4.3.1 focuses primarily on ensuring full compatibility with the latest ESPHome v2024.3.0 IP address format changes, crucial for the smooth compilation and operation of the NSPanel project.
This timely update addresses critical compatibility issues, alongside implementing key bug fixes and optimizations.
It underscores our ongoing commitment to enhancing stability and ensuring a reliable experience for all NSPanel users, keeping pace with the evolving ESPHome ecosystem.
### Support for ESPHome v2024.3.0 IP Address Format
- **Criticality:** Critical (required for compiling with ESPHome 2024.3.0)
- **Affected Components:** ESPHome
- **Description:** This update introduces necessary adjustments to accommodate the new IP address format introduced by ESPHome v2024.3.0,
ensuring uninterrupted project compilation and enhancing compatibility.
This critical update is the cornerstone of patch v4.3.1, deployed simultaneously with ESPHome to ensure NSPanel users experience no disruption in service.
This adaptation ensures that NSPanel firmware remains fully functional and up-to-date with ESPHome's latest advancements,
reaffirming our commitment to providing a seamless and stable user experience.
### Button Bars Visibility Enhancement and Configuration Change
- **Criticality:** Breaking Change (with Enhancement)
- **Affected Components:** Blueprint
- **Description:** The visibility of button bars, indicating the status of entities linked to hardware buttons,
has been updated to be visible across all pages by default, including the screensaver.
This enhancement improves the accessibility of crucial status information.
Users who previously customized the visibility settings for button bars will need to review and adjust their configurations to align with the new default behavior.
This change enables users to selectively exclude button bars from specific pages if desired, providing greater flexibility and control over the interface's appearance.
### Service `hw_button_state` Update
- **Criticality:** Breaking Change (with Enhancement)
- **Affected Components:** Blueprint and ESPHome
- **Description:** The method for controlling the state of hardware buttons has been refined with the introduction of a `button_mask` parameter.
This update simplifies the process of simultaneously updating the visual state of multiple hardware buttons,
enhancing user interaction by providing a more intuitive interface for managing button states.
Users can now specify the buttons they wish to control using a single `button_mask` parameter,
offering a streamlined approach for activating or deactivating the on-screen indication bars of the hardware buttons.
This change fosters a more flexible and efficient user experience in configuring the visual feedback for button states.
### Celsius Display Issue for Embedded Temperature Sensor Resolved (#1834)
- **Criticality:** Medium
- **Affected Components:** ESPHome
- **Description:** Addressed an issue where the NSPanel's built-in temperature sensor incorrectly displayed temperature readings in Celsius, even when Fahrenheit was expected.
This fix ensures temperature readings are accurately represented according to the user's settings, improving usability and consistency across the system.
### Resolution for Panel Naming When `device_name` Is Not Provided (#1907)
- **Criticality:** Medium
- **Affected Components:** ESPHome
- **Description:** Corrected a bug that caused the new "Device Name" sensor to report "nspanel"
and therefore fail on defining services names when a `device_name` substitution was not specified by the user.
### External Temperature Sensor Selection Now Correctly Overrides Embedded Sensor Value (#1911)
- **Criticality:** Medium
- **Affected Components:** Blueprint and ESPHome
- **Description:** Fixed a display issue where the built-in sensor's temperature reading persisted despite configuration for an external sensor.
### Utilities Dashboard Now Correctly Omits Default Labels When Customized (#1899)
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Description:** Enhanced the utilities dashboard by ensuring custom labels properly replace or remove default ones for a personalized display.
### Clarification and Improvements to `rtttl_play` Service Documentation (#1901 and #1912)
- **Criticality:** Minor
- **Affected Components:** Documentation
- **Description:** Updated documentation for clearer guidance on using the `rtttl_play` service for custom sounds and alerts.
### Correction of Missing Icon Display Issue on Entities Page 3 (#1902)
- **Criticality:** Minor
- **Affected Components:** TFT
- **Description:** Addressed a bug preventing certain icons from displaying on the third Entities page, ensuring a consistent user interface.
### Icons No Longer Appear "Disabled" for Sensor Values of 0.0 (#1902)
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Description:** Resolved an incorrect icon color display issue where they appeared disabled at a sensor value of exactly 0.0.
### Vertical Alignment Improvements on Entities Pages for Enhanced Readability (#1903)
- **Criticality:** Minor
- **Affected Components:** TFT
- **Description:** Adjusted the vertical alignment of text and icons on Entities pages for a more visually appealing presentation.
### Enhanced Guidance on Handling Duplicated Entities on the Device's Page (#1905)
- **Criticality:** Minor
- **Affected Components:** Documentation
- **Description:** Updated documentation to better address and resolve issues related to entity duplication on the device's page on Home Assistant.
### Compilation Guidance Updated for Customizations with the Latest Version (#1914)
- **Criticality:** Minor
- **Affected Components:** Documentation
- **Description:** Resolved documentation issues leading to compilation errors during customization, facilitating smoother custom feature implementation.
### Elimination of Transient Icon Flashes on the Home Page During Page Transitions (#1915)
- **Criticality:** Minor
- **Affected Components:** Blueprint, ESPHome and TFT
- **Description:** Fixed a visual glitch where icons briefly flashed during transitions, streamlining the visual experience.
### Real-Time Brightness Adjustment Now Effective Even During Sleep Mode (#1919)
- **Criticality:** Minor
- **Affected Components:** ESPHome
- **Description:** Ensured brightness settings changes are immediately applied, even when the panel is in sleep mode.
### Smooth Cursor Movement on Utilities Page Near Zero Sensor Readings (#1926)
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Description:** Ensured cursor movement on the Utilities page is smooth and accurate, even with sensor readings defining the cursor direction is between 0 and 1.
### Notification Screen Clearing Now Functional with `notification_clear` Service Call (#1931)
- **Criticality:** Minor
- **Affected Components:** ESPHome
- **Description:** Enabled clear display of notifications from the screen upon invoking the `notification_clear` service, enhancing display control.
### Page Indicator Removed for Single-Page Views (#1883)
- **Criticality:** Enhancement
- **Affected Components:** TFT
- **Description:** Improved UI by removing unnecessary page indicators when only one page is present, simplifying navigation.
### Entities Page Font Adjustment for CJK Fonts Improved (#1884)
- **Criticality:** Enhancement
- **Affected Components:** ESPHome
- **Description:** Optimized font sizing and display on Entities pages for CJK fonts, addressing readability issues.
### User Option Added to Disable Entities Page Icons for a Text-Focused View (#1885)
- **Criticality:** Enhancement
- **Affected Components:** Blueprint
- **Description:** Introduced an option to disable icons on Entities pages, allowing for a simplified, text-only display.
### Utilities Page Line Cursor Size Customization Option Added (#1910)
- **Criticality:** Enhancement
- **Affected Components:** Blueprint
- **Description:** Provided customization options for cursor size on the Utilities dashboard, enhancing data visualization.
### Temperature Measurement Sampling Enhancement (#1918)
- **Criticality:** Enhancement
- **Affected Components:** ESPHome
- **Description:** Enhanced the temperature reporting mechanism of the NSPanel's built-in temperature sensor by implementing a sampling method.
Now, the sensor collects 12 intermediate measurements and calculates their average before reporting the temperature.
This enhancement, which does not alter the 1-minute measurement interval, aims to provide smoother and more stable temperature readings,
improving accuracy and reliability for users monitoring their environment.
### Boot Page Visual Feedback Enhancements for Clearer System Status Display (#1923)
- **Criticality:** Enhancement
- **Affected Components:** ESPHome and TFT
- **Description:** Updated the Boot page to offer clearer visual feedback on version information and system status, with a new progress bar.
## v4.3.2 - Enhancements and Critical Fixes for a Seamless Experience
In this patch, we focus on enhancing the NSPanel experience by introducing critical fixes and requested enhancements to improve overall system stability and user interaction.
This update addresses key issues, such as the incorrect display of the "boot" page upon wake-up, and optimizes the performance of the Utilities Dashboard to prevent potential overload states.
With updates across firmware, user interface, and documentation, v4.3.2 underscores our dedication to delivering a seamless and robust smart home control solution.
### Device Reboot Issue on Wake Up Resolved (#1947 and #1976)
- **Criticality:** Medium
- **Affected Components:** Blueprint
- **Issue Number:** #1947 and #1976
- **Description:** Resolved a critical issue causing the NSPanel to boot to the "boot" page rather than the "home" page under certain conditions, such as upon waking.
This correction ensures the panel directly accesses the "home" page, streamlining user interaction by promptly presenting the main interface.
Effective implementation of this fix necessitates clearing the build files before updating.
The procedure below guides you through cleaning build files in the ESPHome Dashboard, an essential step to actualize this update.
### Utilities Dashboard Performance Bug Resolved (#1949 and #1964)
- **Criticality:** Medium
- **Affected Components:** Blueprint and ESPHome
- **Issue Number:** #1949 and #1964
- **Description:** Fixed a significant performance bug in the "Utilities Dashboard" related to sensors with high update frequencies.
Previously, sensors updating frequently could overload the Home Assistant host, causing the blueprint execution to delay.
As updates persisted, this led to multiple instances of the blueprint being triggered, eventually hitting the limit of 50 concurrent instances.
This update minimizes the issue, ensuring smooth operation and reducing the chances of a overload state, thereby maintaining efficient and reliable dashboard performance.
#### How to Clean-up Build Files
1. Navigate to your ESPHome Dashboard.
2. Select the 3-dot menu adjacent to your device's listing.
3. Choose "**Clean Build Files**".
![Clean Build Files Instruction](https://raw.githubusercontent.com/Blackymas/NSPanel_HA_Blueprint/dev/docs/pics/esphome_dashboard_clean_build_files.png)
> [!IMPORTANT]
> Cleaning build files is a mandatory step for this update to apply successfully.
> It ensures your NSPanel operates smoothly with the new improvements post-update.
### Fix for Inverted Chip Icon Color Issue (#1928)
- **Criticality:** Minor
- **Affected Components:** Blueprint, TFT
- **Issue Number:** #1928
- **Description:** Resolved an issue where the color of icons on inverted chips did not display correctly on the home page, affecting the visual distinction and readability of these elements.
This fix ensures that icons on inverted chips are now properly rendered, maintaining consistency and enhancing the overall aesthetic of the user interface.
This correction contributes to a more intuitive and visually appealing experience for users, reinforcing the clarity of information presented on the NSPanel.
### Fix for Numeric Button Page Labels Not Displaying (#1961)
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Issue Number:** #1961
- **Description:** Resolved an issue where button page labels consisting solely of numbers were not being displayed, ensuring that numeric titles are now properly shown.
This fix enhances interface clarity by allowing users to utilize numerical identifiers for their button pages, thereby improving navigation and usability within the NSPanel environment.
### Automatic Update for Weather Icon at Sunrise and Sunset (#1971)
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Issue Number:** #1971
- **Description:** Addressed a bug where the weather icon on the home page did not automatically update to reflect changes at sunrise and sunset, necessitating a manual page reload.
With this fix, the icon now refreshes automatically to provide an accurate representation of the weather conditions in relation to the day and night cycle.
This improvement ensures a more dynamic and responsive user interface, enhancing the visual experience by seamlessly integrating natural environmental changes.
### Fix for Missing Titles and Icons on Detailed Entities Pages (#1978)
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Issue Number:** #1978
- **Description:** Resolved an issue on detailed entities pages where page titles and icons were not being displayed, leading to a lack of clarity and navigation challenges for users.
This fix ensures that each detailed page now correctly showcases its respective title and icon,
enhancing the overall user interface by providing immediate context and visual cues for better usability and navigation within the NSPanel environment.
### Swipe Functionality Restored on Button and Home Pages (#1980 and #1994)
- **Criticality:** Minor
- **Affected Components:** TFT
- **Issue Number:** #1980 and #1994
- **Description:** Addressed issues impacting swipe functionality on button pages and the home page, which previously hindered smooth navigation through swipe gestures.
This update restores proper swipe operation, allowing users to effortlessly switch between pages with a simple gesture.
Enhancing swipe responsiveness contributes to a more fluid and intuitive user experience, reinforcing the ease of navigating the NSPanel's interface.
### Typo Correction in Blueprint Inputs (#2003)
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Issue Number:** #2003
- **Description:** Corrected a minor typo in the blueprint inputs to ensure accuracy and clarity in the configuration options.
This adjustment, made in the description for the `hw_buttons_bar_color_off` input, showcases our commitment to detail and high-quality documentation,
enhancing user experience by providing clear and precise instructions.
- **Special Thanks:** Our thanks go to @colincachia for this attentive correction.
This action highlights the importance of community involvement and the collective effort to maintain the project's high standards, even in the smallest details.
### Immediate Brightness Adjustment from Home Assistant Fixed
- **Criticality:** Minor
- **Affected Components:** ESPHome
- **Issue Number:** #2006
- **Description:** Resolved a minor issue affecting brightness adjustments made from Home Assistant.
Previously, when the brightness target was reduced via Home Assistant, the change was not immediately reflected on the NSPanel.
This update ensures that any adjustments to brightness settings are promptly applied,
maintaining consistency between the Home Assistant interface and the NSPanel's display for a more synchronized and responsive user experience.
### Custom Binary State Entities for Hardware Button Status Display Enhancement (#1904, #1933, #1959, #1973)
- **Criticality:** Enhancement
- **Affected Components:** Blueprint
- **Issue Number:** #1904, #1933, #1959, #1973
- **Description:** This update introduces the capability to assign custom binary state entities to the hardware button status display.
This significant enhancement allows for the hardware button bar to reflect the status of a different entity than the one assigned to the button itself,
providing users with greater customization and flexibility in their interface interactions.
This development enriches user feedback mechanisms, enabling more intuitive and dynamic control options within the NSPanel environment.
- **Special Thanks:** Our heartfelt appreciation goes to @lafriks for their invaluable contribution and initiative in developing this feature.
These efforts have notably advanced the customization potential of NSPanel, fostering a more versatile and user-centric experience.
### Enhanced Temperature Measurement Strategy (#1918)
- **Criticality:** Enhancement
- **Affected Components:** ESPHome
- **Issue Number:** #1918
- **Description:** Thanks to the dedicated efforts and thorough testing by our community,
the NSPanel's built-in temperature sensor now employs a more sophisticated measurement strategy for enhanced accuracy and responsiveness.
By integrating a combination of four samples per measurement and employing a `sliding_window_moving_average` filter with a window size of six,
the sensor's reporting frequency has been adjusted to every 10 seconds.
This methodological enhancement, chiefly proposed and tested by community members @andythomas and @grigi,
ensures a smoother temperature curve and faster response to environmental changes such as opening a window.
While the adjusted frequency means data is reported more often, ESPHome's efficient data transmission only when changes occur ensures that the impact on Home Assistant's data processing is minimal.
This significant improvement, sparked by proactive community involvement,
not only enhances the NSPanel's functionality but also broadens the scope for more dynamic and responsive environmental automations.
- **Special Thanks:** To @andythomas and @grigi for their exceptional work in testing and proposing these adjustments, truly embodying the spirit of community-driven development.
Your active participation and contributions have been instrumental in refining this feature.
### Enhanced Version Mismatch Notifications for Comprehensive System Compatibility (#1966 and #1968)
- **Criticality:** Enhancement
- **Affected Components:** Blueprint
- **Issue Number:** #1966 and #1968
- **Description:** The version mismatch notification system has been significantly improved to cover all critical components of the NSPanel project,
including the ESPHome firmware, Home Assistant blueprint, and Nextion TFT file.
This update ensures that notifications are more descriptive, pinpointing which component is out of sync and providing specific instructions for resolution.
This targeted approach helps users quickly identify and rectify compatibility issues, maintaining the system's overall harmony and preventing disruptions in functionality.
### Documentation Improvement for TFT Upload Process (#1969)
- **Criticality:** Enhancement
- **Affected Components:** Documentation
- **Issue Number:** #1969
- **Description:** Enhanced the documentation to clarify the necessity of DNS for downloading TFT files from GitHub during the TFT upload process.
This update addresses confusion encountered when manually setting IP addresses as part of customizations, emphasizing that a DNS server must be specified to enable remote TFT downloads.
For setups lacking DNS configuration, the documentation now highlights the alternative of using local TFT transfer via the `nextion_update_url` substitution.
This clarification aims to streamline the TFT update process, ensuring users have a clear understanding of the requirements for successful TFT file downloads and uploads,
thereby enhancing the overall setup experience.
### Documentation Update for "Folder-Watcher" Engine Use (#1974)
- **Criticality:** Enhancement
- **Affected Components:** Blueprint
- **Issue Number:** #1974
- **Description:** Updated documentation to provide clearer instructions on the "folder-watcher" engine's use within the NSPanel project.
This engine, which triggers TFT updates upon changes in a user-specified folder, may not be widely used but offers valuable functionality for those who do.
The documentation now more accurately describes how to leverage this feature for automated TFT updates, aiming to improve understanding and ease of use for interested users.
### Close Icon Visibility Enhancement (#1984)
- **Criticality:** Enhancement
- **Affected Components:** TFT
- **Issue Number:** #1984
- **Description:** Enhanced the visibility of the "close" icon (represented as an "x" sign) located at the top right corner of various pages.
By slightly increasing the size of this icon, users can now more easily identify and interact with it, improving the overall usability of the NSPanel interface.
This minor yet impactful adjustment ensures a smoother, more intuitive navigation experience for all users.
### Alarm Control with Hardware Button Enhancement (#1995)
- **Criticality:** Enhancement
- **Affected Components:** Blueprint
- **Issue Number:** #1995
- **Description:** Enhanced the functionality of hardware buttons for a more intuitive interaction with alarm control panels.
Now, a short click on a hardware button assigned to an entity from the `alarm_control_panel` domain will open its detailed page, aligning with the behavior for `climate` and `media_player` entities.
This update facilitates quicker access to alarm controls directly from the NSPanel, streamlining user interactions.
Long clicks continue to open the detailed page for these and other domains, maintaining a consistent and user-friendly experience across various controls.
### Documentation Updates for Arduino References (#1997)
- **Criticality:** Enhancement
- **Affected Components:** Documentation
- **Issue Number:** #1997
- **Description:** Comprehensive updates and refinements were made to the project documentation, with a particular focus on correcting and clarifying references related to the Arduino framework.
This effort led to a thorough review and subsequent enhancement of various sections of the documentation, improving clarity, accuracy, and usefulness across the board.
Special thanks to the author of this PR, @andythomas, whose dedicated work went beyond just addressing
Arduino framework references to include minor fixes and overall improvements to the documentation.
These contributions have significantly elevated the quality of information available to users, ensuring that the documentation remains a reliable and up-to-date resource for the community.
### Expanded Wake-Up Sensor Support (#1998)
- **Criticality:** Enhancement
- **Affected Components:** Blueprint
- **Issue Number:** #1998
- **Description:** The range of supported device classes for wake-up sensors on the NSPanel has been significantly expanded.
Now, in addition to the previously supported door, motion, and occupancy sensors, the NSPanel firmware accommodates a wider variety of sensor types.
These enhancements enable the panel to wake up from sleep mode upon detecting various environmental changes, improving responsiveness and user interaction.
The newly supported device classes include:
- door
- garage_door
- lock
- motion
- occupancy
- opening
- smoke
- sound
- vibration
- window
This update broadens the NSPanel's integration capabilities with home automation systems, allowing for a more dynamic and reactive smart home environment.
### Hebrew Translation Text Reversal Fix (#1999)
- **Criticality:** Enhancement
- **Affected Components:** Blueprint
- **Issue Number:** #1999
- **Description:** Addressed a specific issue with the Hebrew translation where text was displayed in reverse order, hindering readability and user experience.
This fix ensures that Hebrew text is correctly aligned and presented, enhancing the interface for Hebrew-speaking users.
The commitment to support diverse languages and correct such localization issues underscores our dedication to providing a user-friendly experience for all NSPanel users,
regardless of their language.
### Enhanced TFT Update Reliability in ESPHome Nextion Component
- **Criticality:** Enhancement
- **Affected Components:** ESPHome
- **Description:** Improved the reliability of TFT updates within the ESPHome Nextion component.
This enhancement optimizes the process of updating the NSPanel's display, ensuring smoother transitions and reducing the potential for update failures.
The upgrade targets the underlying mechanisms of the Nextion component in ESPHome,
refining its functionality to offer a more dependable and efficient update experience for users implementing TFT changes.
## v4.3.3 - Enhancing Flexibility and User Experience
With the v4.3.3 update, we're focused on refining the NSPanel's usability and customization capabilities, addressing user feedback to enhance the intuitive interaction with the panel.
From streamlining light entity controls to expanding text length for entities on the home page, each change is aimed at improving the user experience.
This patch also introduces experimental features, such as prebuilt firmware updates and PSRAM use, pushing the boundaries of what's possible with NSPanel,
while also ensuring a smoother, more reliable interface across different languages and configurations.
### Simplified Light Entity Control on Custom Buttons (#1844)
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Issue Number:** #1844
- **Description:** Addressed an inconsistency where light entities with only on/off capabilities erroneously showed an extended screen with a brightness slider.
This fix streamlines the control interface for such light entities, aligning with their actual capabilities.
### Deletion of Button Icons from Home Page Enabled (#1992)
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Issue Number:** #1992
- **Description:** Resolved an issue preventing the removal of button icons from the home page.
Users can now delete or change button icons as needed, providing flexibility in customizing the panel's appearance.
### Correction of Missing Characters on Button Pages for Multi-Byte Languages (#2000)
- **Criticality:** Minor
- **Affected Components:** Blueprint, ESPHome, and TFT
- **Issue Number:** #2000
- **Description:** Resolved a display issue affecting multi-byte languages, where specific characters were missing on the button pages.
This fix ensures complete and accurate representation of all languages across the NSPanel interface, including Hebrew and others where a character may occupy more than a single byte.
### Entity Display Persistence on Home Page Addressed (#2018)
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Issue Number:** #2018
- **Description:** Fixed a bug where entities removed from the blueprint continued to display on the home page.
This update ensures that the home page accurately reflects the current configuration, removing any unassigned entities.
### Resolved Unintended Climate Control Page Access (#2021)
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Issue Number:** #2021
- **Description:** Fixed an issue where touching the temperature display on the home page erroneously opened the climate control page, even in the absence of configured climate entities.
This update ensures that interactions with the temperature display are consistent with the available configurations, enhancing the intuitive use of the NSPanel.
### Internal Temperature Reporting Fix After Sleep (#2030)
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Issue Number:** #2030
- **Description:** Resolved an issue where the internal temperature indicator disappeared for a few seconds upon waking the panel from sleep mode.
This fix ensures the internal temperature, especially when sourced from the panel's internal sensor,
remains consistently displayed without interruption when transitioning from sleep to the home page, enhancing the stability and reliability of environmental monitoring on the NSPanel.
### Advanced Settings Page Entity Name Enhancement (#1909)
- **Criticality:** Enhancement
- **Affected Components:** Blueprint
- **Issue Number:** #1909
- **Description:** Improved the advanced settings page by providing clearer entity names when opened from a custom button,
enhancing user navigation and configuration understanding within the NSPanel settings.
### Support for `mdi:void` Icon on Homepage for Blank Display (#2019)
- **Criticality:** Enhancement
- **Affected Components:** Blueprint
- **Issue Number:** #2019
- **Description:** Implemented support for the `mdi:void` icon on the homepage, allowing for a blank display where no icon is preferred.
This enhancement provides users with greater customization flexibility, enabling a cleaner and more minimalistic interface by opting not to show any icon.
### Extended Text Length for Entities on Home Page (#2020)
- **Criticality:** Enhancement
- **Affected Components:** TFT
- **Issue Number:** #2020
- **Description:** Enhanced the home page by allowing for longer text for entities values.
This improvement accommodates more detailed values, improving clarity and user understanding of displayed data and controls.
### Timezone Selector Added to Blueprint
- **Criticality:** Enhancement
- **Affected Components:** Blueprint and ESPHome
- **Description:** Introduced a timezone selector within the Blueprint configuration, streamlining the setup process and enhancing user convenience.
This addition simplifies the configuration of the NSPanel, significantly reducing the need for YAML customizations related to timezone settings.
By providing a direct method to specify the timezone, this enhancement ensures that time displays and other time-sensitive features on the NSPanel accurately reflect the user's local time,
contributing to a more personalized and accurate user experience.
### Prebuilt Firmware Updates (#2024) - EXPERIMENTAL
- **Criticality:** Enhancement
- **Affected Components:** ESPHome
- **Issue Number:** #2024
- **Description:** The prebuilt firmware has been updated to incorporate the latest fixes and enhancements,
ensuring users have access to the most current and stable version without the need for manual compilation.
This is another important step in our goal torwards [Simplifying User Experience for NSPanel Firmware](https://github.com/Blackymas/NSPanel_HA_Blueprint/discussions/1602),
allowing users to directly download the firmware from GitHub without the need of compiling it locally.
- **Special Thanks:** To @MichaelHeimann for trimming this feature, fixing bugs and reviving this idea.
### Use of PSRAM (#1815, #1946, and #1983) - EXPERIMENTAL
- **Criticality:** Enhancement
- **Affected Components:** ESPHome
- **Issue Number:** #1815, #1946, and #1983
- **Description:** We are introducing the use of PSRAM memory available on the NSPanel.
This will possibly open space for additional features to be developed in the future and the use of more customizations for your panel.
- **Special Thanks:** To @Bascht74 and @olicooper for giving the directions to enable the use of non-standard pins for PSRAM used in NSPanel,
and to @X-Ryl669 and @MichaelHeimann for all the tests, tips, and feedback around this.
## v4.3.4 - Urgent Fix for Home Screen Interaction
This patch release addresses a critical issue from the v4.3.3 update that affected the touch functionality on the Home screen, specifically impacting the ability to navigate to the climate page.
### Critical Touch Interaction Bug Fixed (#2040)
- **Criticality:** Critical
- **Affected Components:** Blueprint
- **Issue Number:** #2040
- **Description:** Fixed an issue where users were unable to navigate to the climate control page by touching the temperature display on the Home screen.
This bug was inadvertently introduced in the v4.3.3 update and has been promptly resolved to restore full functionality.
Users can now interact with the temperature display as intended, facilitating seamless access to the climate controls.
This update is essential for ensuring that the NSPanel functions correctly, maintaining the quality and reliability expected by our users.
We apologize for any inconvenience caused and thank you for your continued support.
## v4.3.5 - Experimenting with Bluetooth Capabilities
This patch release v4.3.5 introduces experimental Bluetooth features alongside critical fixes and enhancements.
The new Bluetooth capabilities leverage the previously untapped potential of the NSPanel's Bluetooth modem, enabled by the increased memory availability in the ESP-IDF framework.
### New Bluetooth Features (Experimental)
- **BLE Tracker Add-on**
- **Description:** This add-on enables the NSPanel to act as a Bluetooth Low Energy (BLE) tracker, allowing it to detect and report the presence of BLE devices in its vicinity.
This feature is instrumental for presence detection and smart home automation scenarios.
- **Bluetooth Proxy Add-on**
- **Description:** The Bluetooth Proxy add-on allows the NSPanel to act as a bridge or proxy for other Bluetooth devices, facilitating communication between BLE devices and Home Assistant.
This can significantly extend the functionality of Home Assistant in managing Bluetooth devices without direct connectivity.
### Temperature Display and Control Fixes
- **Temperature Increment Error in Climate Card Resolved (#2076)**
- **Criticality:** Medium
- **Affected Components:** ESPHome
- **Description:** Corrected a rounding error in the climate card, which caused temperature set points to adjust in increments of 0.9 degrees.
This fix ensures temperature adjustments are now rounded to the nearest whole number, aligning with expected control behavior.
- **Consistent Temperature Unit Display Across Panels (#2056)**
- **Criticality:** Medium
- **Affected Components:** ESPHome
- **Description:** Resolved an issue where the internal temperature sensor did not convert temperatures from Celsius to Fahrenheit for display on the home screen,
despite displaying correctly on the climate page. Temperatures are now consistently shown in the user-defined units across all NSPanel displays.
### Control and Interface Enhancements
- **Improved Custom Button Response for Dimmable Color Lights (#2072)**
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Description:** Fixed a bug where custom buttons for dimmable color lights only toggled the lights on/off.
The buttons now correctly adjust brightness and color settings, enhancing user control.
- **Homepage Weather and Climate Control Delay Minimized (#2056)**
- **Criticality:** Minor
- **Affected Components:** ESPHome and TFT
- **Description:** Introduced a minor delay optimization for weather updates and climate control interactions on the home page, improving the responsiveness and user experience.
- **Consistent Icon Color Display on Home Page (#2043)**
- **Criticality:** Minor
- **Affected Components:** Blueprint
- **Description:** Addressed an issue where icons on the home page always displayed in white, regardless of the set color.
Icons now correctly reflect the specified colors, enhancing visual consistency and user interface aesthetics.
### System Stability and Functionality
- **Restoration of Webserver Functionality Post-Upgrade (#2054, #2050)**
- **Criticality:** Critical
- **Affected Components:** ESPHome
- **Description:** Fixed issues that caused the webserver component to stop functioning following recent upgrades.
This repair restores full webserver functionality, essential for user access and system configuration via a web interface.
- **Reliability Improvements for TFT Uploads with Bluetooth Components (#1946, #1815)**
- **Criticality:** Medium
- **Affected Components:** ESPHome
- **Description:** Enhanced the reliability of TFT file uploads when the Bluetooth proxy or the BLE Tracker are enabled.
This fix addresses disruptions previously experienced during TFT updates, ensuring smoother and more reliable firmware installations.
This update, v4.3.5, is a significant step towards harnessing the full potential of the NSPanel's hardware capabilities, especially its Bluetooth functionality,
while continuing to refine the user experience and system stability.
We appreciate the community's active involvement in identifying these issues and thank everyone for their contributions to improving the firmware.
## v4.3.6 - Critical Fixes for Custom Buttons
This release of v4.3.6 is an urgent patch to address critical issues affecting the functionality of custom buttons on the NSPanel.
These fixes ensure that custom buttons properly trigger actions for climate and alarm controls, and correct the integration with external thermostat entities.
### Fixes for Custom Button Functionality
- **Climate Page Accessibility Restored (#2067)**
- **Criticality:** Critical
- **Affected Components:** Blueprint
- **Description:** Resolved an issue where the climate page was not opening when triggered from a custom button.
Users can now access the climate controls directly from the home screen without interruption.
- **Alarm Control from Custom Button Restored (#2081)**
- **Criticality:** Critical
- **Affected Components:** Blueprint
- **Description:** Fixed a malfunction where custom buttons configured for alarm control were unresponsive.
This update restores full functionality, allowing for immediate access and control of alarm settings from the home page.
- **Integration of External Thermostat Entities Fixed (#2080)**
- **Criticality:** Critical
- **Affected Components:** ESPHome
- **Description:** Corrected an issue introduced in v4.3.5 where external thermostat entities (the ones controlled by Home Assistant) linked to custom buttons were not functioning correctly.
With this fix, users can again utilize custom buttons to control their external thermostats effectively.
This patch release v4.3.6 ensures that custom buttons on the NSPanel are fully operational, addressing urgent issues that impacted user interaction and control of climate and alarm systems.
We thank our community for their prompt reporting and patience as we continue to enhance the NSPanel experience.
## v4.3.7 - Quick Fix for Captive Portal Compile Error
This patch addresses a critical compile error related to the captive portal feature, ensuring smooth and successful firmware compilations for users utilizing this feature.
### Captive Portal Compile Error Resolved (#2088)
- **Criticality:** Critical
- **Affected Components:** ESPHome
- **Issue Number:** #2088
- **Description:** Fixed a critical issue where users faced a compilation error due to an undeclared reference to 'ap_captive_portal'.
This fix corrects the reference error, restoring the ability to compile with the captive portal enabled.
Users who do not utilize the captive portal can continue without modification, while those who do should see successful compilations without further adjustments.
This release ensures that all users, regardless of their use of the captive portal feature, can compile and update their firmware without interruption.
We apologize for any inconvenience caused and appreciate your patience as we continue to improve the NSPanel firmware.
## Support
For support or more information about this update,
visit our [GitHub repository](https://github.com/Blackymas/NSPanel_HA_Blueprint)
or our [online documentation](https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/README.md).
## What's Next?
Discover our upcoming projects in our [Milestones](https://github.com/Blackymas/NSPanel_HA_Blueprint/milestones?direction=asc&sort=title&state=open).
## Special Thanks
We extend our heartfelt thanks to the contributors who have played a pivotal role in enhancing the NSPanel's capabilities and documentation in this release:
- **@shing6326**: For diligently addressing and fixing issues related to the new Fan oscillating feature.
Your efforts have significantly improved its functionality and reliability (#1839).
- **@andythomas**: For the comprehensive enhancements made to our documentation.
Your contributions have made our guides more informative and accessible, enriching the user experience for everyone (#1865).
## Previous releases
- [v4.3.6 - Critical Fixes for Custom Buttons](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.3.6)
- [v4.3.5 - Experimenting with Bluetooth Capabilities](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.3.5)
- [v4.3.4 - Urgent Fix for Home Screen Interaction](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.3.4)
- [v4.3.3 - Enhancing Flexibility and User Experience](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.3.3)
- [v4.3.2 - Enhancements and Critical Fixes for a Seamless Experience](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.3.2)
- [v4.3.1 - Ensuring Compatibility with ESPHome v2024.3.0 and Enhancing Stability](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.3.1)
- [v4.3 - Welcome to Framework ESP-IDF, an Utilities Dashboard and Enhanced Localization](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.3.0)
- [v4.2.6 - Enhancing Stability and User Experience](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.2.6)
- [v4.2.5 - Celebrating 1000 Stars with Enhanced Functionality and UI Improvements](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.2.5)
- [v4.2.4 - Critical bug fixes](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.2.4)
- [v4.2.3 - Bug fixes and minor enhancements](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.2.3)
- [v4.2.2 - Bug fixes and minor enhancements](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.2.2)
- [v4.2.1 - Bug fixes](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.2.1)
- [v4.2 - Multi-Alarm Control, Dual Thermostat Functionality, and More](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.2)
- [v4.1.4 - Support to Home Assistant 2023.12.0](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.1.4)
- [v4.1.3 - Bug fixes](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.1.3)
- [v4.1.2 - Bug fixes and minor enhancements](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.1.2)
@@ -103,4 +832,3 @@ See here: https://github.com/Blackymas/NSPanel_HA_Blueprint/labels/roadmap
- [v2.0.2](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v2.0.2)
- [v2.0.1 - Bug Fixes](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v2.0.1)
- [v2.0.0](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v2.0.0)
- [v1.0.1 Blueprint](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/latest)

15
advanced/.gitignore vendored
View File

@@ -1,15 +0,0 @@
# Ignore Mac DS_Store files
.DS_Store
**/.DS_Store
Nextion2Text.*
*.cmd
*.bat
# Ignore IntelliJ IDEA project directory
.idea
# Ignore dev folder
dev
nspanel_esphome_prebuilt.yaml

View File

@@ -1,149 +0,0 @@
#####################################################################################################
##### NSPANEL ESPHOME created by Blackymas - https://github.com/Blackymas/NSPanel_HA_Blueprint #####
##### ESPHome Add-on for Climate control - Shared - This will be called by heat/cool #####
##### PLEASE only make changes if it is necessary and also the required knowledge is available. #####
##### For normal use with the Blueprint, no changes are necessary. #####
#####################################################################################################
##### ATTENTION: This will add climate elements to the core system and requires the core part. #####
#####################################################################################################
substitutions:
### Local thermostat defaults ###
# https://esphome.io/components/climate/thermostat.html
temp_units: "°C"
heater_relay: "0" # Select 1 for "Relay 1", 2 for "Relay 2" or "0" to a dummy switch/disabled
cooler_relay: "0" # Select 1 for "Relay 1", 2 for "Relay 2" or "0" to a dummy switch/disabled
min_off_time: "300"
min_run_time: "300"
min_idle_time: "30"
# https://esphome.io/components/climate/index.html#base-climate-configuration
temp_min: "5"
temp_max: "45"
temp_step: "0.5"
##### DO NOT CHANGE THIS #####
addon_climate_cool: "false"
addon_climate_heat: "false"
##############################
climate:
- platform: thermostat
name: ${device_name} Thermostat
id: thermostat_embedded
sensor: temp_nspanel
min_idle_time: ${min_idle_time}s
visual:
min_temperature: ${temp_min} ${temp_units}
max_temperature: ${temp_max} ${temp_units}
#temperature_step: ${temp_step} ${temp_units}
temperature_step:
target_temperature: 0.5 #This is hard coded for now as ESPHome isn't supporting a substitution here. In contact with support.
current_temperature: 0.1
idle_action:
- switch.turn_off: relay_${heater_relay}
default_preset: "Off"
on_boot_restore_from: memory
internal: false
on_state:
- logger.log: Climate state changed - Start
- script.execute: addon_climate_update_page_climate
- script.execute: addon_climate_update_page_home
- logger.log: Climate state changed - End
globals:
##### Is embedded thermostat visible on climate page? #####
- id: is_addon_climate_visible
type: bool
restore_value: false
initial_value: 'false'
##### Embeded climate friendly name #####
- id: addon_climate_friendly_name
type: std::string
restore_value: false
initial_value: '"${device_name} Thermostat"'
switch:
##### PHYSICAL SWITCH 0 (Dummy) - Used when relay is not set #####
- name: ${device_name} Relay 0 (dummy)
platform: template
id: relay_0
lambda: !lambda return false;
internal: true
optimistic: true
script:
- id: !extend addon_climate_update_page_home
mode: restart
then:
- lambda: |-
// Update home.climate_entity variable
detailed_entity->publish_state((id(is_embedded_thermostat)) ? "embedded_climate" : "");
disp1->set_component_value("climate.embedded", (id(is_embedded_thermostat)) ? 1 : 0);
// Update chips
if (id(is_embedded_thermostat))
id(update_climate_icon).execute("home.icon_top_03", int(thermostat_embedded->action), int(thermostat_embedded->mode));
- id: !extend addon_climate_service_call
then:
- lambda: |-
id(is_addon_climate_visible) = true;
disp1->set_component_value("climate.embedded", 1);
auto call = thermostat_embedded->make_call();
if (key == "set_temperature")
call.set_target_temperature(stof(value) / 10);
else if (key == "hvac_mode")
call.set_mode(value);
call.perform();
- id: !extend addon_climate_set_climate
then:
- lambda: |-
id(is_addon_climate_visible) = embedded_climate;
- id: !extend addon_climate_update_page_climate
then:
- lambda: |-
if (current_page->state == "climate" and id(is_addon_climate_visible))
{
disp1->set_component_text_printf("page_label", id(addon_climate_friendly_name).c_str());
float temp_step = ${temp_step};
float temp_offset = ${temp_min};
float temp_max = ${temp_max};
float total_steps = (temp_max-temp_offset)/temp_step;
set_climate->execute
(
thermostat_embedded->current_temperature, // current_temp
thermostat_embedded->target_temperature, // target_temp
int(round(${temp_step}*10)), // temp_step
int(round(total_steps)), // total_steps //int(round((10*thermostat_embedded->target_temperature-temp_offset)/temp_step)), // slider_val
int(round(${temp_min}*10)), // temp_offset
"", // climate_icon
true // embedded_climate
);
// Update target temp icon
update_climate_icon->execute("climate.target_icon", int(thermostat_embedded->action), int(thermostat_embedded->mode));
// Update buttons bar
// Hide not supported hotspots
disp1->hide_component("button01");
disp1->hide_component("button02");
if (${addon_climate_heat}) disp1->show_component("button03"); else disp1->hide_component("button03"); //Heat
if (${addon_climate_cool}) disp1->show_component("button04"); else disp1->hide_component("button04"); //Cool
disp1->hide_component("button05");
disp1->hide_component("button06");
disp1->show_component("button07"); //Off
// Set buttons colors
disp1->set_component_font_color("climate.button01", 6339);
disp1->set_component_font_color("climate.button02", 6339);
disp1->set_component_font_color("climate.button03", (thermostat_embedded->mode==climate::CLIMATE_MODE_HEAT) ? 64164 : ((${addon_climate_heat}) ? 48631 : 6339));
disp1->set_component_font_color("climate.button04", (thermostat_embedded->mode==climate::CLIMATE_MODE_COOL) ? 1055 : ((${addon_climate_cool}) ? 48631 : 6339));
disp1->set_component_font_color("climate.button05", 6339);
disp1->set_component_font_color("climate.button06", 6339);
disp1->set_component_font_color("climate.button07", (thermostat_embedded->mode==climate::CLIMATE_MODE_OFF) ? 10597 : 35921);
}
- id: !extend addon_climate_set_climate_friendly_name
then:
- lambda: |-
id(addon_climate_friendly_name) = friendly_name;

View File

@@ -1,948 +0,0 @@
#####################################################################################################
##### NSPANEL ESPHOME created by Blackymas - https://github.com/Blackymas/NSPanel_HA_Blueprint #####
##### TFT Upload engine #####
##### PLEASE only make changes if it is necessary and also the required knowledge is available. #####
##### For normal use with the Blueprint, no changes are necessary. #####
#####################################################################################################
##### ATTENTION: This will add advanced elements to the core system and requires the core part. #####
#####################################################################################################
substitutions:
################## Defaults ##################
# Just in case user forgets to set something #
nextion_update_url: "http://github.com/Blackymas/NSPanel_HA_Blueprint/raw/main/custom_configuration/nspanel_eu.tft"
nextion_blank_url: "http://github.com/Blackymas/NSPanel_HA_Blueprint/raw/main/custom_configuration/nspanel_blank.tft"
##############################################
##### DON'T CHANGE THIS #####
upload_tft_chunk_size_max: "32768"
#############################
#external_components:
# - source: github://pr#3256 # adds esp-idf support to http_request
# components:
# - http_request
# - source: github://pr#5910
# components:
# - nextion
# - uart
# refresh: 1s
##### HTTP REQUEST #####
# Enables http client #
# for upload_tft. #
########################
#http_request:
# id: httpclient
api:
services:
##### SERVICE TO UPDATE THE TFT FILE from URL #####
##### It will use the default url if url is empty or "default"
- service: upload_tft_url
variables:
url: string
then:
- lambda: |-
static const char *const TAG = "service.upload_tft_url";
ESP_LOGVV(TAG, "Starting...");
std::string clean_url = url;
// Convert to lowercase
std::transform(clean_url.begin(), clean_url.end(), clean_url.begin(),
[](unsigned char c){ return std::tolower(c); });
// Trim trailing spaces
auto endPos = clean_url.find_last_not_of(" \t");
if (std::string::npos != endPos) {
clean_url = clean_url.substr(0, endPos + 1);
}
if ( clean_url.empty() or clean_url == "default") url = tft_list->state;
upload_tft->execute(url.c_str());
button:
##### UPDATE TFT DISPLAY #####
- name: ${device_name} Update TFT display
platform: template
icon: mdi:file-sync
id: tft_update
entity_category: config
on_press:
- lambda: |-
static const char *const TAG = "button.tft_update.on_press";
ESP_LOGD(TAG, "Update TFT display button pressed");
upload_tft->execute(tft_list->state.c_str());
display:
- id: !extend disp1
tft_url: ${nextion_update_url}
script:
- id: upload_tft_nextion #NOT IN USE FOR NOW
mode: single
parameters:
url: string
then:
- lambda: |-
static const char *const TAG = "script.upload_tft_new";
ESP_LOGVV(TAG, "Starting...");
nextion_status->execute();
auto delay_seconds_ = [](int seconds) {
ESP_LOGD(TAG, "Wait %i seconds", seconds);
for (int i = 0; i < (seconds*4); i++) {
#ifdef ARDUINO
delay(250);
#elif defined(USE_ESP_IDF)
vTaskDelay(pdMS_TO_TICKS(250));
#endif
App.feed_wdt();
}
};
std::string framework = "Unknown";
#ifdef ARDUINO
framework = "Arduino";
#elif defined(ESP_PLATFORM)
framework = "ESP-IDF";
#endif
if (disp1->is_setup()) {
disp1->set_backlight_brightness(1);
disp1->set_component_text_printf("confirm.title", "Upload TFT\\r%s", framework.c_str());
disp1->set_component_text_printf("confirm.body", "Preparing...");
disp1->goto_page("confirm");
disp1->hide_component("bt_close");
disp1->hide_component("bt_accept");
disp1->hide_component("bt_clear");
disp1->hide_component("bt_close");
App.feed_wdt();
delay_seconds_(1);
display_wrapped_text->execute("confirm.body", "Informing the blueprint that panel is unavailable...", 18);
disp1->hide_component("bt_close");
App.feed_wdt();
}
nextion_init->publish_state(false);
App.feed_wdt();
if (disp1->is_setup()) {
delay_seconds_(1);
display_wrapped_text->execute("confirm.body", "Stopping scripts...", 18);
App.feed_wdt();
}
stop_all->execute();
if (disp1->is_setup()) delay_seconds_(1);
App.feed_wdt();
ESP_LOGD(TAG, "Try #1 at 921600 bps");
nextion_status->execute();
if (disp1->is_setup()) {
display_wrapped_text->execute("confirm.body", "Try #1 at 921600 bps", 18);
App.feed_wdt();
delay_seconds_(1);
}
//if (disp1->upload_tft(921600)) id(restart_nspanel).press();
ESP_LOGW(TAG, "Try #1 failed");
if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "Try #1 failed", 18);
App.feed_wdt();
delay_seconds_(5);
ESP_LOGD(TAG, "Try #2 at 921600 bps");
nextion_status->execute();
App.feed_wdt();
if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "Try #2 at 921600 bps", 18);
//if (disp1->upload_tft(921600)) id(restart_nspanel).press();
ESP_LOGW(TAG, "Try #2 failed");
if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "Try #2 failed", 18);
App.feed_wdt();
delay_seconds_(5);
ESP_LOGD(TAG, "Try #3 at 115200 bps");
nextion_status->execute();
App.feed_wdt();
if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "Try #3 at 115200 bps", 18);
//if (disp1->upload_tft(115200)) id(restart_nspanel).press();
ESP_LOGW(TAG, "Try #3 failed");
App.feed_wdt();
if (disp1->is_setup()) {
display_wrapped_text->execute("confirm.body", "Try #3 failed. Restarting display.", 18);
App.feed_wdt();
delay_seconds_(3);
}
ESP_LOGD(TAG, "Turn off Nextion");
id(screen_power).turn_off();
delay_seconds_(2);
ESP_LOGD(TAG, "Turn on Nextion");
id(screen_power).turn_on();
delay_seconds_(10);
App.feed_wdt();
ESP_LOGD(TAG, "Try #4 at 115200 bps");
nextion_status->execute();
if (disp1->is_setup()) {
disp1->set_backlight_brightness(1);
disp1->set_component_text_printf("confirm.title", "Upload TFT\\r%s", framework.c_str());
display_wrapped_text->execute("confirm.body", "Try #4 at 115200 bps", 18);
disp1->goto_page("confirm");
disp1->hide_component("bt_close");
disp1->hide_component("bt_accept");
disp1->hide_component("bt_clear");
disp1->hide_component("bt_close");
App.feed_wdt();
delay_seconds_(1);
}
//if (disp1->upload_tft(115200)) id(restart_nspanel).press();
ESP_LOGE(TAG, "TFT upload failed");
if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "TFT upload failed", 18);
if (disp1->is_setup()) delay_seconds_(2);
ESP_LOGD(TAG, "Turn off Nextion");
if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "Restarting...", 18);
if (disp1->is_setup()) delay_seconds_(2);
id(screen_power).turn_off();
delay_seconds_(2);
ESP_LOGD(TAG, "Turn on Nextion");
id(screen_power).turn_on();
ESP_LOGD(TAG, "Restarting ESPHome");
delay_seconds_(2);
id(restart_nspanel).press();
ESP_LOGD(TAG, "Finished!");
- id: upload_tft
mode: single
parameters:
url: string
then:
- lambda: |-
static const char *const TAG = "script.upload_tft";
ESP_LOGD(TAG, "Starting...");
auto delay_seconds_ = [](int seconds) {
ESP_LOGD(TAG, "Wait %i seconds", seconds);
for (int i = 0; i < (seconds*4); i++) {
#ifdef ARDUINO
delay(250);
#elif defined(USE_ESP_IDF)
vTaskDelay(pdMS_TO_TICKS(250));
#endif
App.feed_wdt();
}
};
std::string framework = "Unknown";
#ifdef ARDUINO
framework = "Arduino";
#elif defined(ESP_PLATFORM)
framework = "ESP-IDF";
#endif
if (disp1->is_setup()) {
disp1->set_backlight_brightness(1);
disp1->set_component_text_printf("confirm.title", "Upload TFT\\r%s", framework.c_str());
disp1->set_component_text_printf("confirm.body", "Preparing...");
disp1->goto_page("confirm");
disp1->hide_component("bt_close");
disp1->hide_component("bt_accept");
disp1->hide_component("bt_clear");
disp1->hide_component("bt_close");
delay_seconds_(1);
display_wrapped_text->execute("confirm.body", "Informing the blueprint that panel is unavailable...", 18);
disp1->hide_component("bt_close");
}
nextion_init->publish_state(false);
if (disp1->is_setup()) {
delay_seconds_(1);
display_wrapped_text->execute("confirm.body", "Stopping scripts...", 18);
}
stop_all->execute();
if (disp1->is_setup()) delay_seconds_(1);
std::vector<uint8_t> buffer_;
bool is_updating_ = false;
bool upload_first_chunk_sent_ = false;
int content_length_ = 0;
int tft_size_ = 0;
auto set_baud_rate_ = [](int baud_rate) {
#ifdef USE_ARDUINO
auto *uart = reinterpret_cast<uart::ESP32ArduinoUARTComponent *>(tf_uart);
#endif
#ifdef USE_ESP_IDF
auto *uart = reinterpret_cast<uart::IDFUARTComponent *>(tf_uart);
#endif
uart->set_baud_rate(baud_rate);
uart->setup();
};
auto send_nextion_command = [](const std::string &command) -> bool
{
static const char *const TAG = "script.upload_tft.send_nextion_command";
ESP_LOGD(TAG, "Sending: %s", command.c_str());
id(tf_uart).write_str(command.c_str());
const uint8_t to_send[3] = {0xFF, 0xFF, 0xFF};
id(tf_uart).write_array(to_send, sizeof(to_send));
return true;
};
auto recv_ret_string_ = [](std::string &response, uint32_t timeout, bool recv_flag) -> uint16_t
{
static const char *const TAG = "script.upload_tft.recv_ret_string_";
uint16_t ret;
uint8_t c = 0;
uint8_t nr_of_ff_bytes = 0;
uint64_t start;
bool exit_flag = false;
bool ff_flag = false;
start = millis();
while ((timeout == 0 && id(tf_uart).available()) || millis() - start <= timeout)
{
if (!id(tf_uart).available())
{
App.feed_wdt();
continue;
}
id(tf_uart).read_byte(&c);
if (c == 0xFF)
{
nr_of_ff_bytes++;
}
else
{
nr_of_ff_bytes = 0;
ff_flag = false;
}
if (nr_of_ff_bytes >= 3)
ff_flag = true;
response += (char) c;
if (recv_flag)
{
if (response.find(0x05) != std::string::npos)
{
exit_flag = true;
}
}
App.feed_wdt();
delay(2);
if (exit_flag || ff_flag)
{
break;
}
}
if (ff_flag)
response = response.substr(0, response.length() - 3); // Remove last 3 0xFF
ret = response.length();
return ret;
};
auto upload_end_ = [&](bool completed) -> bool
{
static const char *const TAG = "script.upload_tft.upload_end_";
ESP_LOGD(TAG, "Completed: %i", completed ? 1 : 0);
//ESP_LOGD(TAG, "Restarting Nextion");
//send_nextion_command("rest");
#ifdef ARDUINO
delay(1500);
#elif defined(ESP_PLATFORM)
//vTaskDelay(pdMS_TO_TICKS(1500));
#endif
is_updating_ = false;
if (!completed) ESP_LOGD(TAG, "Nextion TFT upload will try again");
return completed;
};
#ifdef ARDUINO // arduino # To do: Move to Nextion component on ESPHome
size_t transfer_buffer_size_ = 0;
uint8_t *transfer_buffer_{nullptr};
auto upload_by_chunks_arduino = [&](HTTPClient *http, const std::string &url, int range_start) -> int
{
static const char *const TAG = "script.upload_tft.upload_by_chunks_arduino";
int range_end;
if (range_start == 0 && transfer_buffer_size_ > 16384) { // Start small at the first run in case of a big skip
range_end = 16384 - 1;
} else {
range_end = range_start + transfer_buffer_size_ - 1;
}
if (range_end > tft_size_)
range_end = tft_size_;
char range_header[64];
sprintf(range_header, "bytes=%d-%d", range_start, range_end);
ESP_LOGD(TAG, "Requesting range: %s", range_header);
int tries = 1;
int code;
bool begin_status;
while (tries <= 10) {
begin_status = http->begin(url.c_str());
++tries;
if (!begin_status) {
ESP_LOGD(TAG, "Connection failed");
delay(1000);
continue;
};
http->addHeader("Range", range_header);
code = http->GET();
if (code == 200 || code == 206) {
break;
}
ESP_LOGW(TAG, "HTTP Request failed; URL: %s; Error: %s, retries(%d/10)", url.c_str(),
HTTPClient::errorToString(code).c_str(), tries);
http->end();
delay(1000);
}
if (tries > 10) {
return -1;
}
std::string recv_string;
size_t size;
int fetched = 0;
int range = range_end - range_start;
int write_len;
// fetch next segment from HTTP stream
while (fetched < range) {
size = http->getStreamPtr()->available();
if (!size) {
App.feed_wdt();
delay(2);
continue;
}
int c = http->getStreamPtr()->readBytes(
&transfer_buffer_[fetched], ((size > transfer_buffer_size_) ? transfer_buffer_size_ : size));
fetched += c;
}
http->end();
ESP_LOGD(TAG, "Fetched %d bytes", fetched);
// upload fetched segments to the display in 4KB chunks
for (int i = 0; i < range; i += 4096) {
App.feed_wdt();
write_len = content_length_ < 4096 ? content_length_ : 4096;
id(tf_uart).write_array(&transfer_buffer_[i], write_len);
content_length_ -= write_len;
ESP_LOGD(TAG, "Uploaded %0.1f %%, remaining %d bytes, heap: %d",
100.0 * (tft_size_ - content_length_) / tft_size_,
content_length_, ESP.getFreeHeap());
if (!upload_first_chunk_sent_) {
upload_first_chunk_sent_ = true;
delay(500);
}
recv_ret_string_(recv_string, 5000, true);
if (recv_string[0] != 0x05) { // 0x05 == "ok"
ESP_LOGD(TAG, "recv_string [%s]",
format_hex_pretty(reinterpret_cast<const uint8_t *>(recv_string.data()), recv_string.size()).c_str());
}
// handle partial upload request
if (recv_string[0] == 0x08 && recv_string.size() == 5) {
uint32_t result = 0;
for (int j = 0; j < 4; ++j) {
result += static_cast<uint8_t>(recv_string[j + 1]) << (8 * j);
}
if (result > 0) {
ESP_LOGD(TAG, "Nextion reported new range %d", result);
content_length_ = tft_size_ - result;
return result;
}
}
recv_string.clear();
}
return range_end + 1;
};
auto upload_tft_ = [&](const std::string &url, unsigned int update_baud_rate_) -> bool
{
static const char *const TAG = "script.upload_tft.upload_tft_arduino";
ESP_LOGD(TAG, "Nextion TFT upload requested");
ESP_LOGD(TAG, " url: %s", url.c_str());
ESP_LOGD(TAG, " baud_rate: %i", update_baud_rate_);
if (is_updating_) {
ESP_LOGD(TAG, "Currently updating");
return upload_end_(false);
}
if (!network::is_connected()) {
ESP_LOGD(TAG, "Network is not connected");
return upload_end_(false);
}
if (!disp1->is_setup()) {
ESP_LOGD(TAG, "Setting Nextion protocol reparse mode to passive");
exit_reparse->execute();
delay_seconds_(5);
}
is_updating_ = true;
HTTPClient http;
http.setTimeout(15000); // Yes 15 seconds.... Helps 8266s along
http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
bool begin_status = http.begin(url.c_str());
if (!begin_status) {
is_updating_ = false;
ESP_LOGD(TAG, "Connection failed");
ExternalRAMAllocator<uint8_t> allocator(ExternalRAMAllocator<uint8_t>::ALLOW_FAILURE);
allocator.deallocate(transfer_buffer_, transfer_buffer_size_);
return upload_end_(false);
} else {
ESP_LOGD(TAG, "Connected");
}
http.addHeader("Range", "bytes=0-255");
const char *header_names[] = {"Content-Range"};
http.collectHeaders(header_names, 1);
ESP_LOGD(TAG, "Requesting URL: %s", url.c_str());
http.setReuse(true);
// try up to 5 times. DNS sometimes needs a second try or so
int tries = 1;
int code = http.GET();
delay(100);
while (code != 200 && code != 206 && tries <= 5) {
ESP_LOGW(TAG, "HTTP Request failed; URL: %s; Error: %s, retrying (%d/5)", url.c_str(),
HTTPClient::errorToString(code).c_str(), tries);
delay(250);
code = http.GET();
++tries;
}
if ((code != 200 && code != 206) || tries > 5) {
return upload_end_(false);
}
String content_range_string = http.header("Content-Range");
content_range_string.remove(0, 12);
content_length_ = content_range_string.toInt();
tft_size_ = content_length_;
http.end();
if (content_length_ < 4096) {
ESP_LOGE(TAG, "Failed to get file size");
return upload_end_(false);
}
ESP_LOGD(TAG, "Updating Nextion");
// The Nextion will ignore the update command if it is sleeping
char command[128];
// Tells the Nextion the content length of the tft file and baud rate it will be sent at
// Once the Nextion accepts the command it will wait until the file is successfully uploaded
// If it fails for any reason a power cycle of the display will be needed
sprintf(command, "whmi-wris %d,%d,1", content_length_, update_baud_rate_);
ESP_LOGD(TAG, "Clear serial receive buffer: %d", id(tf_uart).available());
// Clear serial receive buffer
uint8_t d;
while (id(tf_uart).available()) {
id(tf_uart).read_byte(&d);
};
send_nextion_command(command);
if (update_baud_rate_ != id(tf_uart).get_baud_rate()) {
set_baud_rate_(update_baud_rate_);
//id(tf_uart).set_baud_rate(update_baud_rate_);
//id(tf_uart).setup();
//delay_seconds_(2);
}
ESP_LOGD(TAG, "Waiting for upgrade response");
std::string response;
recv_ret_string_(response, 5000, true); // This can take some time to return
// The Nextion display will, if it's ready to accept data, send a 0x05 byte.
ESP_LOGD(TAG, "Upgrade response is [%s]",
format_hex_pretty(reinterpret_cast<const uint8_t *>(response.data()), response.size()).c_str());
if (response.find(0x05) != std::string::npos) {
ESP_LOGD(TAG, "Preparation for tft update done");
} else {
ESP_LOGD(TAG, "Preparation for tft update failed %d \"%s\"", response[0], response.c_str());
return upload_end_(false);
}
// Nextion wants 4096 bytes at a time. Make chunk_size a multiple of 4096
uint32_t chunk_size = 8192;
if (ESP.getFreeHeap() > 81920) { // Ensure some FreeHeap to other things and limit chunk size
chunk_size = ESP.getFreeHeap() - 65536;
chunk_size = int(chunk_size / 4096) * 4096;
chunk_size = chunk_size > ${upload_tft_chunk_size_max} ? ${upload_tft_chunk_size_max} : chunk_size;
} else if (ESP.getFreeHeap() < 32768) {
chunk_size = 4096;
}
if (transfer_buffer_ == nullptr) {
ExternalRAMAllocator<uint8_t> allocator(ExternalRAMAllocator<uint8_t>::ALLOW_FAILURE);
ESP_LOGD(TAG, "Allocating buffer size %d, Heap size is %" PRIu32, chunk_size, ESP.getFreeHeap());
transfer_buffer_ = allocator.allocate(chunk_size);
if (transfer_buffer_ == nullptr) { // Try a smaller size
ESP_LOGD(TAG, "Could not allocate buffer size: %d trying 4096 instead", chunk_size);
chunk_size = 4096;
ESP_LOGD(TAG, "Allocating %d buffer", chunk_size);
transfer_buffer_ = allocator.allocate(chunk_size);
if (!transfer_buffer_)
{
return upload_end_(false);
}
}
transfer_buffer_size_ = chunk_size;
}
ESP_LOGD(TAG, "Updating tft from \"%s\" with a file size of %d using %zu chunksize, Heap Size %" PRIu32,
url.c_str(), content_length_, transfer_buffer_size_, ESP.getFreeHeap());
int result = 0;
while (content_length_ > 0) {
result = upload_by_chunks_arduino(&http, url, result);
if (result < 0) {
ESP_LOGD(TAG, "Error updating Nextion!");
return upload_end_(false);
}
App.feed_wdt();
ESP_LOGD(TAG, "Heap Size %" PRIu32 ", Bytes left %d", ESP.getFreeHeap(), content_length_);
}
is_updating_ = false;
ESP_LOGD(TAG, "Successfully updated Nextion!");
return upload_end_(true);
};
#elif defined(ESP_PLATFORM) // esp-idf # To do: Move to Nextion component on ESPHome
auto upload_range_esp_idf_ = [&](const std::string &url, int range_start) -> int {
static const char *const TAG = "script.upload_tft.upload_range_esp_idf_";
ESP_LOGVV(TAG, "url: %s", url.c_str());
uint range_size_ = tft_size_ - range_start;
ESP_LOGVV(TAG, "tft_size_: %i", tft_size_);
ESP_LOGV(TAG, "Available heap: %u", esp_get_free_heap_size());
int range_end = (range_start == 0) ? std::min(tft_size_, 16383) : tft_size_;
if (range_size_ <= 0 or range_end <= range_start) {
ESP_LOGE(TAG, "Invalid range");
ESP_LOGD(TAG, "Range start: %i", range_start);
ESP_LOGD(TAG, "Range end: %i", range_end);
ESP_LOGD(TAG, "Range size: %i", range_size_);
return -1;
}
esp_http_client_config_t config = {
.url = url.c_str(),
.cert_pem = nullptr,
};
esp_http_client_handle_t client = esp_http_client_init(&config);
char range_header[64];
sprintf(range_header, "bytes=%d-%d", range_start, range_end);
ESP_LOGV(TAG, "Requesting range: %s", range_header);
esp_http_client_set_header(client, "Range", range_header);
ESP_LOGVV(TAG, "Available heap: %u", esp_get_free_heap_size());
ESP_LOGV(TAG, "Opening http connetion");
esp_err_t err;
if ((err = esp_http_client_open(client, 0)) != ESP_OK) {
ESP_LOGE(TAG, "Failed to open HTTP connection: %s", esp_err_to_name(err));
esp_http_client_cleanup(client);
return -1;
}
ESP_LOGV(TAG, "Fetch content length");
int content_length = esp_http_client_fetch_headers(client);
ESP_LOGV(TAG, "content_length = %d", content_length);
if (content_length <= 0) {
ESP_LOGE(TAG, "Failed to get content length: %d", content_length);
esp_http_client_cleanup(client);
return -1;
}
int total_read_len = 0, read_len;
ESP_LOGV(TAG, "Allocate buffer");
uint8_t* buffer = new uint8_t[4096];
std::string recv_string;
if (buffer == nullptr) {
ESP_LOGE(TAG, "Failed to allocate memory for buffer");
ESP_LOGV(TAG, "Available heap: %u", esp_get_free_heap_size());
} else {
ESP_LOGV(TAG, "Memory for buffer allocated successfully");
while (true) {
App.feed_wdt();
ESP_LOGVV(TAG, "Available heap: %u", esp_get_free_heap_size());
int read_len = esp_http_client_read(client, reinterpret_cast<char*>(buffer), 4096);
ESP_LOGVV(TAG, "Read %d bytes from HTTP client, writing to UART", read_len);
if (read_len > 0) {
tf_uart->write_array(buffer, read_len);
ESP_LOGVV(TAG, "Write to UART successful");
recv_ret_string_(recv_string, 5000, true);
content_length_ -= read_len;
ESP_LOGD(TAG, "Uploaded %0.2f %%, remaining %d bytes, heap: %d",
100.0 * (tft_size_ - content_length_) / tft_size_,
content_length_, esp_get_free_heap_size());
if (recv_string[0] != 0x05) { // 0x05 == "ok"
ESP_LOGD(TAG, "recv_string [%s]",
format_hex_pretty(reinterpret_cast<const uint8_t *>(recv_string.data()), recv_string.size()).c_str());
}
// handle partial upload request
if (recv_string[0] == 0x08 && recv_string.size() == 5) {
uint32_t result = 0;
for (int j = 0; j < 4; ++j) {
result += static_cast<uint8_t>(recv_string[j + 1]) << (8 * j);
}
if (result > 0) {
ESP_LOGI(TAG, "Nextion reported new range %" PRIu32, result);
content_length_ = tft_size_ - result;
// Deallocate the buffer when done
delete[] buffer;
ESP_LOGVV(TAG, "Memory for buffer deallocated");
esp_http_client_cleanup(client);
esp_http_client_close(client);
return result;
}
}
recv_string.clear();
} else if (read_len == 0) {
ESP_LOGV(TAG, "End of HTTP response reached");
break; // Exit the loop if there is no more data to read
} else {
ESP_LOGE(TAG, "Failed to read from HTTP client, error code: %d", read_len);
break; // Exit the loop on error
}
}
// Deallocate the buffer when done
delete[] buffer;
ESP_LOGVV(TAG, "Memory for buffer deallocated");
}
esp_http_client_cleanup(client);
esp_http_client_close(client);
return range_end + 1;
};
auto upload_tft_ = [&](const std::string &url, unsigned int update_baud_rate_) -> bool {
static const char *const TAG = "script.upload_tft.upload_tft_esp_idf";
ESP_LOGD(TAG, "Nextion TFT upload requested");
ESP_LOGD(TAG, " url: %s", url.c_str());
ESP_LOGD(TAG, " baud_rate: %i", update_baud_rate_);
if (is_updating_) {
ESP_LOGW(TAG, "Currently updating");
return upload_end_(false);
}
if (!network::is_connected()) {
ESP_LOGE(TAG, "Network is not connected");
return upload_end_(false);
}
if (!disp1->is_setup()) {
ESP_LOGD(TAG, "Setting Nextion protocol reparse mode to passive");
exit_reparse->execute();
delay_seconds_(5);
}
is_updating_ = true;
// Define the configuration for the HTTP client
ESP_LOGV(TAG, "Establishing connection to HTTP server");
ESP_LOGVV(TAG, "Available heap: %u", esp_get_free_heap_size());
esp_http_client_config_t config = {
.url = url.c_str(),
.cert_pem = nullptr,
.method = HTTP_METHOD_HEAD,
.timeout_ms = 15000,
};
// Initialize the HTTP client with the configuration
ESP_LOGV(TAG, "Initializing HTTP client");
ESP_LOGV(TAG, "Available heap: %u", esp_get_free_heap_size());
esp_http_client_handle_t http = esp_http_client_init(&config);
if (!http) {
ESP_LOGE(TAG, "Failed to initialize HTTP client.");
return upload_end_(false); // return -1 to indicate an error
}
// Perform the HTTP request
ESP_LOGV(TAG, "Check if the client could connect");
ESP_LOGV(TAG, "Available heap: %u", esp_get_free_heap_size());
esp_err_t err = esp_http_client_perform(http);
if (err != ESP_OK) {
ESP_LOGE(TAG, "HTTP request failed: %s", esp_err_to_name(err));
esp_http_client_cleanup(http);
return upload_end_(false);
}
// Check the HTTP Status Code
int status_code = esp_http_client_get_status_code(http);
ESP_LOGV(TAG, "HTTP Status Code: %d", status_code);
size_t tft_file_size = esp_http_client_get_content_length(http);
ESP_LOGD(TAG, "TFT file size: %zu", tft_file_size);
if (tft_file_size < 4096) {
ESP_LOGE(TAG, "File size check failed. Size: %zu", tft_file_size);
esp_http_client_cleanup(http);
return upload_end_(false);
} else {
ESP_LOGD(TAG, "File size check passed. Proceeding...");
}
content_length_ = tft_file_size;
tft_size_ = tft_file_size;
ESP_LOGD(TAG, "Updating Nextion");
// The Nextion will ignore the update command if it is sleeping
char command[128];
// Tells the Nextion the content length of the tft file and baud rate it will be sent at
// Once the Nextion accepts the command it will wait until the file is successfully uploaded
// If it fails for any reason a power cycle of the display will be needed
sprintf(command, "whmi-wris %d,%d,1", content_length_, update_baud_rate_);
// Clear serial receive buffer
uint8_t d;
while (id(tf_uart).available()) {
id(tf_uart).read_byte(&d);
};
send_nextion_command(command);
if (update_baud_rate_ != id(tf_uart).get_baud_rate()) {
set_baud_rate_(update_baud_rate_);
//id(tf_uart).set_baud_rate(update_baud_rate_);
//id(tf_uart).setup();
}
std::string response;
ESP_LOGD(TAG, "Waiting for upgrade response");
recv_ret_string_(response, 2000, true); // This can take some time to return
// The Nextion display will, if it's ready to accept data, send a 0x05 byte.
ESP_LOGD(TAG, "Upgrade response is [%s]",
format_hex_pretty(reinterpret_cast<const uint8_t *>(response.data()), response.size()).c_str());
if (response.find(0x05) != std::string::npos) {
ESP_LOGV(TAG, "Preparation for tft update done");
} else {
ESP_LOGE(TAG, "Preparation for tft update failed %d \"%s\"", response[0], response.c_str());
esp_http_client_cleanup(http);
return upload_end_(false);
}
ESP_LOGD(TAG, "Updating tft from \"%s\" with a file size of %d, Heap Size %" PRIu32,
url.c_str(), content_length_, esp_get_free_heap_size());
ESP_LOGV(TAG, "Starting transfer by chunks loop");
int result = 0;
while (content_length_ > 0) {
result = upload_range_esp_idf_(url.c_str(), result);
if (result < 0) {
ESP_LOGE(TAG, "Error updating Nextion!");
esp_http_client_cleanup(http);
return upload_end_(false);
}
App.feed_wdt();
ESP_LOGV(TAG, "Heap Size %" PRIu32 ", Bytes left %d", esp_get_free_heap_size(), content_length_);
}
is_updating_ = false;
ESP_LOGD(TAG, "Successfully updated Nextion!");
ESP_LOGD(TAG, "Close HTTP connection");
esp_http_client_close(http);
esp_http_client_cleanup(http);
return upload_end_(true);
};
#endif
ESP_LOGD(TAG, "Try #1 at 921600 bps");
if (disp1->is_setup()) {
display_wrapped_text->execute("confirm.body", "Try #1 at 921600 bps", 18);
delay_seconds_(1);
}
if (upload_tft_(url, 921600)) id(restart_nspanel).press();
ESP_LOGW(TAG, "Try #1 failed");
if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "Try #1 failed", 18);
delay_seconds_(5);
ESP_LOGD(TAG, "Try #2 at 921600 bps");
if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "Try #2 at 921600 bps", 18);
if (upload_tft_(url, 921600)) id(restart_nspanel).press();
ESP_LOGW(TAG, "Try #2 failed");
if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "Try #2 failed", 18);
delay_seconds_(5);
ESP_LOGD(TAG, "Try #3 at 115200 bps");
if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "Try #3 at 115200 bps", 18);
if (upload_tft_(url, 115200)) id(restart_nspanel).press();
ESP_LOGW(TAG, "Try #3 failed");
if (disp1->is_setup()) {
display_wrapped_text->execute("confirm.body", "Try #3 failed. Restarting display.", 18);
delay_seconds_(3);
}
ESP_LOGD(TAG, "Turn off Nextion");
id(screen_power).turn_off();
delay_seconds_(2);
ESP_LOGD(TAG, "Turn on Nextion");
id(screen_power).turn_on();
delay_seconds_(10);
ESP_LOGD(TAG, "Try #4 at 115200 bps");
if (disp1->is_setup()) {
disp1->set_backlight_brightness(1);
disp1->set_component_text_printf("confirm.title", "Upload TFT\\r%s", framework.c_str());
display_wrapped_text->execute("confirm.body", "Try #4 at 115200 bps", 18);
disp1->goto_page("confirm");
disp1->hide_component("bt_close");
disp1->hide_component("bt_accept");
disp1->hide_component("bt_clear");
disp1->hide_component("bt_close");
delay_seconds_(1);
}
if (upload_tft_(url, 115200)) id(restart_nspanel).press();
ESP_LOGE(TAG, "TFT upload failed");
if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "TFT upload failed", 18);
if (disp1->is_setup()) delay_seconds_(2);
ESP_LOGD(TAG, "Turn off Nextion");
if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "Restarting...", 18);
if (disp1->is_setup()) delay_seconds_(2);
id(screen_power).turn_off();
delay_seconds_(2);
ESP_LOGD(TAG, "Turn on Nextion");
id(screen_power).turn_on();
ESP_LOGD(TAG, "Restarting ESPHome");
delay_seconds_(2);
id(restart_nspanel).press();
ESP_LOGD(TAG, "Finished!");
select:
- id: tft_list
name: Update TFT display URL
platform: template
options:
- "${nextion_update_url}"
- "${nextion_blank_url}"
initial_option: "${nextion_update_url}"
optimistic: true
restore_value: false
internal: false
entity_category: config
icon: mdi:file-arrow-up-down-outline
disabled_by_default: true
set_action:
- lambda: |-
static const char *const TAG = "select.tft_list.set_action";
ESP_LOGD(TAG, "Selected TFT URL: %s", x.c_str());

File diff suppressed because it is too large Load Diff

View File

@@ -1,21 +0,0 @@
Page page0
Attributes
ID : 0
Scope : local
Dragging : 0
Send Component ID : disabled
Locked : no
Swide up page ID : disabled
Swide down page ID : disabled
Swide left page ID : disabled
Swide right page ID: disabled
QR Code qr0
Attributes
ID : 1
Scope : local
Dragging : 0
Send Component ID: disabled
Text : https://github.com/Blackymas/NSPanel_HA_Blueprint
Max. Text Size : 50

View File

@@ -1,31 +0,0 @@
Page screensaver
Attributes
ID : 0
Scope : local
Dragging : 0
Send Component ID : disabled
Locked : no
Swide up page ID : disabled
Swide down page ID : disabled
Swide left page ID : disabled
Swide right page ID: disabled
Events
Preinitialize Event
printh 92
prints "currentpage",0
printh 00
prints "blank-screensaver",0
printh 00
printh FF FF FF
dim=0
printh 92
prints "nspanelevent",0
printh 00
prints "{\"page\": \"blank-screensaver\", \"component\": \"currentpage\", \"value\": \"pagechange\", \"version\": \"2023.09.19\"}",0
printh 00
printh FF FF FF
Touch Press Event
page blank

View File

@@ -1,36 +0,0 @@
Page screensaver
Attributes
ID : 0
Scope : local
Dragging : 0
Send Component ID : disabled
Locked : no
Swide up page ID : disabled
Swide down page ID : disabled
Swide left page ID : disabled
Swide right page ID: disabled
Events
Preinitialize Event
sendme
dim=0
Touch Release Event
page orign.val
Variable (int32) orign
Attributes
ID : 2
Scope: local
Value: 0
TouchCap wakeup
Attributes
ID : 1
Scope: local
Value: 0
Events
Touch Press Event
page orign.val

View File

@@ -1,207 +0,0 @@
Page notification
Attributes
ID : 0
Scope : local
Dragging : 0
Send Component ID : disabled
Locked : no
Swide up page ID : disabled
Swide down page ID : disabled
Swide left page ID : disabled
Swide right page ID: disabled
Events
Preinitialize Event
if(api==0)
{
page home
}else
{
sendme
}
Touch Press Event
printh 91
prints "touchevent",0
printh 00
prints rand,0
printh FF FF FF
Touch Release Event
printh 91
prints "touchevent",0
printh 00
prints rand,0
printh FF FF FF
Variable (string) lastclick
Attributes
ID : 6
Scope : local
Text :
Max. Text Size: 100
Text notifi_text01
Attributes
ID : 1
Scope : local
Dragging : 0
Send Component ID : disabled
Associated Keyboard: none
Text :
Max. Text Size : 250
Text notifi_label
Attributes
ID : 2
Scope : local
Dragging : 0
Send Component ID : disabled
Associated Keyboard: none
Text :
Max. Text Size : 30
Text loading
Attributes
ID : 5
Scope : local
Dragging : 0
Send Component ID : disabled
Associated Keyboard: none
Text :
Max. Text Size : 1
Button button_back
Attributes
ID : 7
Scope : local
Dragging : 0
Send Component ID: disabled
State : unpressed
Text : 
Max. Text Size : 3
Events
Touch Press Event
page home
Button bt_accept
Attributes
ID : 8
Scope : local
Dragging : 0
Send Component ID: disabled
State : unpressed
Text : 
Max. Text Size : 3
Events
Touch Release Event
lastclick.txt="{\"page\": \"notification\", \"component\": \"accept\", \"value\": \"release\"}"
printh 92
prints "nspanelevent",0
printh 00
prints lastclick.txt,0
printh 00
printh FF FF FF
Button bt_clear
Attributes
ID : 9
Scope : local
Dragging : 0
Send Component ID: disabled
State : unpressed
Text : 
Max. Text Size : 3
Events
Touch Release Event
lastclick.txt="{\"page\": \"notification\", \"component\": \"clear\", \"value\": \"release\"}"
printh 92
prints "nspanelevent",0
printh 00
prints lastclick.txt,0
printh 00
printh FF FF FF
Timer swipestore
Attributes
ID : 4
Scope : local
Period (ms): 50
Enabled : no
Events
Timer Event
swipex=tch0
swipey=tch1
Timer wakeup_timer
Attributes
ID : 10
Scope : local
Period (ms): 100
Enabled : yes
Events
Timer Event
if(dim<brightness)
{
dimdelta=brightness-dim
dimdelta/=10
if(dimdelta<1)
{
dimdelta=1
}
dim+=dimdelta
}else
{
wakeup_timer.en=0
}
TouchCap swipe
Attributes
ID : 3
Scope: local
Value: 0
Events
Touch Press Event
swipestore.en=1 // Start swipestore timer
Touch Release Event
swipestore.en=0
// Touch has ended, x
if(tch0==0)
{
swipec=swipex-tch2
// From Left to Right
if(swipec>swipedx)
{
//page
}
// Right to Left
swipec2=0-swipedx
if(swipec<swipec2)
{
//page
}
}
// Touch has ended, y
if(tch1==0)
{
swipec=swipey-tch3
// From Up to Down
if(swipec>100)
{
//page
}
// Down to Up
swipec2=0-swipedy
if(swipec<-100)
{
//page
}
}

View File

@@ -1,36 +0,0 @@
Page screensaver
Attributes
ID : 0
Scope : local
Dragging : 0
Send Component ID : disabled
Locked : no
Swide up page ID : disabled
Swide down page ID : disabled
Swide left page ID : disabled
Swide right page ID: disabled
Events
Preinitialize Event
sendme
dim=0
Touch Release Event
page orign.val
Variable (int32) orign
Attributes
ID : 2
Scope: local
Value: 0
TouchCap wakeup
Attributes
ID : 1
Scope: local
Value: 0
Events
Touch Press Event
page orign.val

View File

@@ -1,9 +0,0 @@
# Creating `nspanel_us_land.HMI` from `nspanel_eu.HMI`:
## Program.s:
Change to `display_mode=3`
## Page `home`:
1. Change left_bt_pic (x,y,w,h) from ( 47,307,120,3) to (467,173,3,120)
2. Change right_bt_pic(x,y,w,h) from (288,307,120,3) to (467, 27,3,120)
3. Rotate pictures 30 & 31 by 90degrees - You will find the rotated pics under pics folder where this instruction file is.

View File

@@ -1,36 +0,0 @@
Page screensaver
Attributes
ID : 0
Scope : local
Dragging : 0
Send Component ID : disabled
Locked : no
Swide up page ID : disabled
Swide down page ID : disabled
Swide left page ID : disabled
Swide right page ID: disabled
Events
Preinitialize Event
sendme
dim=0
Touch Release Event
page orign.val
Variable (int32) orign
Attributes
ID : 2
Scope: local
Value: 0
TouchCap wakeup
Attributes
ID : 1
Scope: local
Value: 0
Events
Touch Press Event
page orign.val

View File

@@ -0,0 +1,45 @@
# __init__.py
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components.esp32 import add_idf_sdkconfig_option
from esphome.core import CORE, coroutine_with_priority
# from esphome.cpp_tools import CppFile
CODEOWNERS = ["@edwardtfn"]
nspanel_ha_blueprint_ns = cg.esphome_ns.namespace('nspanel_ha_blueprint')
# MdiIcons = nspanel_ha_blueprint_ns.class_('MdiIcons', cg.Component)
CONFIG_SCHEMA = cv.All(
cv.Schema({}),
)
@coroutine_with_priority(1.0)
async def to_code(config):
if CORE.using_arduino:
cg.add_build_flag("-DCONFIG_D0WD_PSRAM_CLK_IO=5")
cg.add_build_flag("-DCONFIG_D0WD_PSRAM_CS_IO=18")
if CORE.using_esp_idf:
add_idf_sdkconfig_option("CONFIG_D0WD_PSRAM_CLK_IO", 5)
add_idf_sdkconfig_option("CONFIG_D0WD_PSRAM_CS_IO", 18)
add_idf_sdkconfig_option("CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST", True)
add_idf_sdkconfig_option("CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY", True)
add_idf_sdkconfig_option("CONFIG_ESP32_REV_MIN_3", True)
# add_idf_sdkconfig_option("CONFIG_LWIP_MAX_SOCKETS", 5) # This breakes web_server
add_idf_sdkconfig_option("CONFIG_MBEDTLS_DYNAMIC_BUFFER", True)
add_idf_sdkconfig_option("CONFIG_MBEDTLS_DYNAMIC_FREE_CA_CERT", True)
add_idf_sdkconfig_option("CONFIG_MBEDTLS_DYNAMIC_FREE_CONFIG_DATA", True)
add_idf_sdkconfig_option("CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC", True)
add_idf_sdkconfig_option("CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY", True)
add_idf_sdkconfig_option("CONFIG_SPIRAM_RODATA", True)
add_idf_sdkconfig_option("CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP", True)
cg.add_define("USE_NSPANEL_HA_BLUEPRINT")
cg.add_global(nspanel_ha_blueprint_ns.using)
# Setup the MdiIcons class instance
# mdi_icons = cg.new_Pvariable('mdi_icons')
# yield cg.register_component(mdi_icons, config)

View File

@@ -0,0 +1,24 @@
// ha_components.cpp
#include "ha_components.h"
namespace nspanel_ha_blueprint {
// Function Definition
HomeAssistantEntity extractHomeAssistantEntity(const std::string& entity_id) {
size_t dotPos = entity_id.find(".");
HomeAssistantEntity result;
if (dotPos != std::string::npos) {
// Extract domain and id from the entity_id string
result.domain = entity_id.substr(0, dotPos);
result.id = entity_id.substr(dotPos + 1);
} else {
// No dot found, the entire entity_id is considered as id.
result.domain = "invalid";
result.id = entity_id;
}
return result;
}
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,36 @@
// ha_components.h
#pragma once
#include <string>
// Defines structures and functions related to Home Assistant entities within the nspanel_ha_blueprint namespace.
namespace nspanel_ha_blueprint {
// Represents a Home Assistant entity with a domain and an identifier.
struct HomeAssistantEntity {
std::string domain; // The domain part of the entity, like "light" or "switch".
std::string id; // The unique identifier of the entity within its domain.
};
/**
* Extracts the domain name and unique ID from a given Home Assistant entity string.
*
* This function parses a Home Assistant entity string to extract and separate the domain
* and ID components of the entity. If the string does not contain a valid entity format
* (i.e., "domain.id"), the function will mark the domain as "invalid" and treat the entire
* string as the ID. It also handles a special case where "alarm_control_panel" should be
* shortened to "alarm", though the implementation of this feature needs to be added in the
* function's definition in the corresponding .cpp file.
*
* Usage example:
* auto entity = extractHomeAssistantEntity("light.kitchen");
* // entity.domain would be "light"
* // entity.id would be "kitchen"
*
* @param entity_id The input string containing either the combined domain and unique ID or just the unique ID.
* @return A HomeAssistantEntity struct containing the extracted domain and the unique ID.
*/
HomeAssistantEntity extractHomeAssistantEntity(const std::string& entity_id);
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,21 @@
// hardware.cpp
#include "hardware.h"
namespace nspanel_ha_blueprint {
template<typename SettingsEnum>
void update_bitwise_setting(uint8_t& settings, bool condition, SettingsEnum flag) {
if (condition) {
settings |= flag; // Set bit
} else {
settings &= ~flag; // Clear bit
}
}
// Explicit template instantiation
// Note: You need to explicitly instantiate templates for all enums used as SettingsEnum
template void update_bitwise_setting<ButtonSettings>(uint8_t& settings, bool condition, ButtonSettings flag);
template void update_bitwise_setting<RelaySettings>(uint8_t& settings, bool condition, RelaySettings flag);
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,73 @@
// hardware.h
#pragma once
#include <cstdint>
// Namespace for nspanel_ha_blueprint, encapsulating definitions related to hardware settings.
namespace nspanel_ha_blueprint {
/**
* @enum ButtonSettings
* Represents the settings for hardware buttons using individual bits within a uint8_t value.
* This allows efficient storage and manipulation of settings for multiple buttons in a compact form.
*
* The bit allocations are as follows:
* - Bit 0: Left button enabled.
* - Bit 1: Left button state (0 for `off`, 1 for `on`).
* - Bits 2-3: Reserved for future use.
* - Bit 4: Right button enabled.
* - Bit 5: Right button state (0 for `off`, 1 for `on`).
* - Bits 6-7: Reserved for future use.
*
* These settings facilitate easy manipulation of button states and configurations through bitwise operations.
*/
enum ButtonSettings {
ButtonLeft_Enabled = 1 << 0, ///< Enables left button visualization on screen.
ButtonLeft_State = 1 << 1, ///< Indicates current state of the left button.
// Bits 2 and 3 are reserved for future expansion.
ButtonRight_Enabled = 1 << 4, ///< Enables right button visualization on screen.
ButtonRight_State = 1 << 5, ///< Indicates current state of the right button.
// Bits 6 and 7 are reserved for future expansion.
};
/**
* @enum RelaySettings
* Represents the settings for relays using individual bits within a uint8_t value.
* This approach allows for the efficient storage and manipulation of settings for multiple
* relays in a single byte, enabling compact representation and ease of setting manipulation.
*
* The bit allocations are as follows:
* - Bit 0: Relay 1 local control enabled.
* - Bit 1: Relay 1 fallback mode enabled.
* - Bits 2-3: Reserved for future use.
* - Bit 4: Relay 2 local control enabled.
* - Bit 5: Relay 2 fallback mode enabled.
* - Bits 6-7: Reserved for future use.
*
* These settings support flexible relay configuration and state management through bitwise operations.
*/
enum RelaySettings {
Relay1_Local = 1 << 0, ///< Enables local control for Relay 1.
Relay1_Fallback = 1 << 1, ///< Enables fallback mode for Relay 1.
// Bits 2 and 3 are reserved for future expansion.
Relay2_Local = 1 << 4, ///< Enables local control for Relay 2.
Relay2_Fallback = 1 << 5, ///< Enables fallback mode for Relay 2.
// Bits 6 and 7 are reserved for future expansion.
};
/**
* Updates a settings byte according to a specified condition and flag.
*
* This function template applies a bitwise operation to modify the settings byte based on
* the provided condition and flag. If the condition is true, the bit corresponding to the flag
* is set; otherwise, it's cleared. This method enables dynamic and conditional settings updates.
*
* @param settings Reference to the settings byte to be modified.
* @param condition Boolean condition determining how the settings byte is modified.
* @param flag The specific bit flag (from ButtonSettings or RelaySettings) to modify.
*/
template<typename SettingsEnum>
void update_bitwise_setting(uint8_t& settings, bool condition, SettingsEnum flag);
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,61 @@
// icons.cpp
#include "icons.h"
#include <vector>
#ifdef USE_PSRAM
#ifdef USE_ARDUINO
#include <esp32-hal-psram.h>
#else // ESP-IDF
#include <esp_heap_caps.h> // Required for heap capabilities functions
#endif // ARDUINO vs ESP-IDF
#endif // USE_PSRAM
namespace nspanel_ha_blueprint {
std::vector<Icon> icons; // This declaration may not be necessary; see below
bool initializeIconsVector() {
Icon* allocatedMemory = nullptr;
// Try to allocate the vector in PSRAM
#ifdef USE_PSRAM
#if defined(USE_ARDUINO)
if (psramFound())
allocatedMemory = static_cast<Icon*>(ps_malloc(10 * sizeof(Icon)));
#else // ESP-IDF
allocatedMemory = static_cast<Icon*>(heap_caps_malloc(10 * sizeof(Icon), MALLOC_CAP_SPIRAM));
#endif
if (allocatedMemory != nullptr) {
new (&icons) std::vector<Icon>(allocatedMemory, allocatedMemory + 10); // Placement new to initialize vector
return true; // Successfully allocated in PSRAM
}
#endif
// Fallback to DRAM if PSRAM allocation fails or if PSRAM is not used
allocatedMemory = static_cast<Icon*>(malloc(10 * sizeof(Icon)));
if (allocatedMemory != nullptr) {
new (&icons) std::vector<Icon>(allocatedMemory, allocatedMemory + 10); // Placement new to initialize vector
return true; // Successfully allocated in DRAM
}
return false; // Allocation failed
}
void Icon::updateIcon(const char* code, uint16_t color, bool vis) {
if (strcmp(last_icon_code, code) != 0 || last_icon_color != color || visible != vis) {
strncpy(last_icon_code, code, 4);
last_icon_code[4] = '\0';
last_icon_color = color;
visible = vis;
}
}
Icon* findIcon(uint8_t page_id, const char* comp) {
for (auto& icon : icons) {
if (icon.page_id == page_id && strcmp(icon.component, comp) == 0) {
return &icon;
}
}
return nullptr;
}
}

View File

@@ -0,0 +1,32 @@
// icons.h
#pragma once
#include <cstdint>
#include <cstring> // For strncpy and strcmp
#include <vector>
namespace nspanel_ha_blueprint {
struct Icon {
uint8_t page_id; // Page ID, placed logically before the component
char component[15]; // Component name (max 14 chars + null terminator)
char last_icon_code[5]; // UTF-8 code (4 bytes + null terminator)
uint16_t last_icon_color; // Color value
bool visible; // Visibility of the icon
// Constructor with default values
Icon(uint8_t pid, const char* comp, const char* code = "\xEF\xBF\xBF", uint16_t color = UINT16_MAX, bool vis = true)
: page_id(pid), last_icon_color(color), visible(vis) {
strncpy(const_cast<char*>(component), comp, 14); // Use const_cast to bypass const for initialization
const_cast<char*>(component)[14] = '\0'; // Ensure null termination safely
strncpy(last_icon_code, code, 4);
last_icon_code[4] = '\0';
}
void updateIcon(const char* code, uint16_t color, bool vis);
};
extern std::vector<Icon> icons; // Global list of icons
Icon* findIcon(uint8_t page_id, const char* component);
}

View File

@@ -0,0 +1,64 @@
// mdiicons.cpp
#include "mdiicons.h"
#include "esphome/core/log.h"
using namespace esphome;
MdiIcons::MdiIcons() : iconPool(nullptr), iconPoolSize(0), iconPoolCapacity(100) {}
void MdiIcons::setup() {
iconPool = new MdiIcon[iconPoolCapacity];
if (!iconPool) {
ESP_LOGE("MdiIcons", "Failed to allocate memory for icons in PSRAM");
return;
}
memset(iconPool, 0, iconPoolCapacity * sizeof(MdiIcon));
ESP_LOGI("MdiIcons", "Icon pool initialized with capacity %u", iconPoolCapacity);
}
void MdiIcons::dump_config() {
ESP_LOGCONFIG("MdiIcons", "MDI Icons: Initialized with pool capacity %u", iconPoolCapacity);
}
const MdiIcon* MdiIcons::find_icon(const char* name) const {
for (size_t i = 0; i < iconPoolSize; ++i) {
if (strcmp(iconPool[i].name, name) == 0) {
return &iconPool[i];
}
}
return nullptr;
}
bool MdiIcons::add_icon(const char* name, const char* code) {
if (find_icon(name) != nullptr) {
ESP_LOGW("MdiIcons", "Icon '%s' is already in the pool. Not adding again.", name);
return false;
}
if (iconPoolSize >= iconPoolCapacity) {
resize_pool();
}
strncpy(iconPool[iconPoolSize].name, name, sizeof(MdiIcon::name) - 1);
strncpy(iconPool[iconPoolSize].code, code, sizeof(MdiIcon::code) - 1);
iconPool[iconPoolSize].name[sizeof(MdiIcon::name) - 1] = '\0';
iconPool[iconPoolSize].code[sizeof(MdiIcon::code) - 1] = '\0';
iconPoolSize++;
ESP_LOGI("MdiIcons", "New icon '%s' added to the pool.", name);
return true;
}
void MdiIcons::resize_pool() {
size_t newCapacity = iconPoolCapacity * 2;
MdiIcon* newPool = new MdiIcon[newCapacity];
if (!newPool) {
ESP_LOGE("MdiIcons", "Failed to resize the icon pool");
return;
}
memcpy(newPool, iconPool, iconPoolSize * sizeof(MdiIcon));
delete[] iconPool;
iconPool = newPool;
iconPoolCapacity = newCapacity;
ESP_LOGI("MdiIcons", "Icon pool resized to %u.", iconPoolCapacity);
}

View File

@@ -0,0 +1,33 @@
// mdiicons.h
#ifndef MDI_ICONS_H
#define MDI_ICONS_H
#include "esphome/core/component.h"
#include "esphome/core/log.h"
#include <cstring>
struct MdiIcon {
char name[32]; // Icon name, assuming max length of 31 characters + null terminator
char code[5]; // Icon code, 4 bytes + null terminator (UTF-8 characters)
};
class MdiIcons : public esphome::Component {
public:
MdiIcons(); // Constructor declaration
void setup() override; // Setup method declaration
void dump_config() override; // Dump config method declaration
const MdiIcon* find_icon(const char* name) const; // Method to find an icon by name
bool add_icon(const char* name, const char* code); // Method to add an icon
private:
MdiIcon* iconPool; // Dynamic array of MdiIcons
size_t iconPoolSize; // Number of icons currently in the pool
size_t iconPoolCapacity; // Current capacity of the pool
void resize_pool(); // Method to resize the icon pool
};
#endif // MDI_ICONS_H

View File

@@ -0,0 +1,36 @@
// nextion_components.cpp
#include "nextion_components.h"
#include <algorithm>
#include <cstring>
namespace nspanel_ha_blueprint {
NextionComponent extractNextionComponent(const std::string& input, const std::string& defaultPage) {
NextionComponent result{};
size_t dotPos = input.find(".");
if (dotPos != std::string::npos) {
// Handling special case and standard extraction
strncpy(result.page, input.substr(0, std::min<size_t>(dotPos, 14)).c_str(), 14);
result.page[14] = '\0'; // Ensure null termination
strncpy(result.component_id, input.substr(dotPos + 1, 14).c_str(), 14);
result.component_id[14] = '\0'; // Ensure null termination
result.is_current_page = false;
} else {
// Default page case
strncpy(result.page, defaultPage.c_str(), 14);
result.page[14] = '\0'; // Ensure null termination
strncpy(result.component_id, input.c_str(), 14);
result.component_id[14] = '\0'; // Ensure null termination
result.is_current_page = true;
}
if (strcmp(result.page, defaultPage.c_str()) == 0) {
result.is_current_page = true;
}
return result;
}
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,49 @@
// nextion_components.h
#pragma once
#include <string>
#include <vector>
#include <cstdint>
namespace nspanel_ha_blueprint {
struct NextionComponent {
char page[15]; // 14 characters + null terminator, representing the Nextion display page
char component_id[15]; // 14 characters + null terminator, representing the component ID within the page
bool is_current_page; // Flag indicating whether the component is on the current page
};
/**
* Extracts the page name and component ID from a given input string.
* If the input string omits the page, a default page name is used.
* Handles a special case for "alarm_control_panel" by shortening it to "alarm".
*
* @param input The input string containing the component ID, optionally prefixed by the page name and a dot.
* @param defaultPage The default page name to use if the input string does not specify a page.
* @return A NextionComponent struct with the extracted or default page name, component ID, and current page status.
*/
NextionComponent extractNextionComponent(const std::string& input, const std::string& defaultPage);
/**
* Converts an RGB color represented as a vector of integers to the 16-bit 5-6-5 format supported by Nextion displays.
*
* This function takes a vector containing three integer values representing
* the red, green, and blue components of an RGB color, each in the range 0-255.
* It then converts these values into a single uint16_t value in 5-6-5 format,
* commonly used for color displays. The conversion process masks and shifts
* the components to fit into the 5 bits for red, 6 bits for green, and 5 bits for blue.
*
* @param rgb A vector of integers with exactly three elements: [red, green, blue].
* @return The color encoded in 16-bit 5-6-5 format, or UINT16_MAX if the input vector
* does not contain at least three elements.
*/
template <typename Container>
inline uint16_t rgbTo565(const Container& rgb) {
if (rgb.size() != 3) {
return UINT16_MAX; // Use UINT16_MAX as an error indicator
}
return ((rgb[0] & 0xF8) << 8) | ((rgb[1] & 0xFC) << 3) | (rgb[2] >> 3);
}
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,26 @@
// pages.cpp
#include "pages.h"
#include <cstring>
namespace nspanel_ha_blueprint {
uint8_t get_page_id(const std::string& page_name) {
for (uint8_t i = 0; i < page_names.size(); ++i) {
if (strcmp(page_names[i], page_name.c_str()) == 0) {
return i;
}
}
return UINT8_MAX;
}
bool isStringInList(const std::string& strToSearch, std::initializer_list<std::string> list) {
for (const auto& str : list) {
if (strToSearch == str) {
return true;
}
}
return false;
}
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,72 @@
// pages.h
#pragma once
#include <array>
#include <cstdint>
#include <string>
#include <initializer_list>
namespace nspanel_ha_blueprint {
/**
* @file pages.h
* Defines constants and functions related to page names for the NSPanel HA Blueprint project.
*/
// Constants
/**
* A compile-time constant array containing the names of pages.
* These names correspond to various pages of the Nextion TFT file in use,
* such as settings, home, weather information, and more.
*/
constexpr std::array<const char*, 28> page_names = {
"boot",
"home",
"weather01",
"weather02",
"weather03",
"weather04",
"weather05",
"climate",
"settings",
"screensaver",
"light",
"cover",
"buttonpage01",
"buttonpage02",
"buttonpage03",
"buttonpage04",
"notification",
"qrcode",
"entitypage01",
"entitypage02",
"entitypage03",
"entitypage04",
"fan",
"alarm",
"keyb_num",
"media_player",
"confirm",
"utilities"
};
/**
* Retrieves the index of a given page name within the page_names array.
*
* @param page_name The name of the page to find.
* @return The index of the page_name in the page_names array. If the page_name
* is not found, returns UINT8_MAX as an indicator that no matching page was found.
*/
uint8_t get_page_id(const std::string& page_name);
/**
* Checks if a given string is present within a list of strings.
*
* @param strToSearch The string to search for within the list.
* @param list An initializer list of strings to search within.
* @return `true` if the target string is found within the list, `false` otherwise.
*/
bool isStringInList(const std::string& strToSearch, std::initializer_list<std::string> list);
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,49 @@
// text.cpp
#include "text.h"
#include <algorithm>
#include <cctype>
#include <cstring>
namespace nspanel_ha_blueprint {
template <unsigned int N>
void copyStringToCharArray(char (&dest)[N], const std::string& src) {
size_t length = std::min(src.size(), static_cast<size_t>(N - 1));
std::strncpy(dest, src.c_str(), length);
dest[length] = '\0';
}
// Explicit template instantiation might be needed depending on usage
// template void copyStringToCharArray<YOUR_SIZE_HERE>(char (&)[YOUR_SIZE_HERE], const std::string&);
bool isNumberChar(char c) {
return std::isdigit(static_cast<unsigned char>(c)) || c == '.' || c == '-' || c == ',';
}
std::string adjustDecimalSeparator(const std::string& input, char decimalSeparator) {
if (decimalSeparator == '.') {
return input;
}
size_t numericEnd = 0;
for (; numericEnd < input.size() && isNumberChar(input[numericEnd]); ++numericEnd);
std::string numericPart = input.substr(0, numericEnd);
std::string suffix = input.substr(numericEnd);
char* end;
double val = strtod(numericPart.c_str(), &end);
if (end != numericPart.c_str() && *end == '\0') {
size_t decimalPointPos = numericPart.find('.');
if (decimalPointPos != std::string::npos) {
numericPart[decimalPointPos] = decimalSeparator;
}
return numericPart + suffix;
} else {
return input;
}
}
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,40 @@
// text.h
#pragma once
#include <string>
namespace nspanel_ha_blueprint {
/**
* Copies the contents of a std::string to a fixed-size char array, ensuring
* null termination. The destination array size is automatically deduced.
* Designed for fixed-size char arrays only.
*
* @param dest A reference to the destination char array.
* @param src The source std::string to copy.
*/
template <unsigned int N>
void copyStringToCharArray(char (&dest)[N], const std::string& src);
/**
* Determines if a character is part of a numeric string. This includes digits,
* a period (.), a minus sign (-), or a comma (,).
*
* @param c The character to check.
* @return True if the character is part of a number; false otherwise.
*/
bool isNumberChar(char c);
/**
* Adjusts the decimal separator in a numeric string to the specified character.
* Only the first occurrence is replaced if it's a valid number followed by text.
* Returns the original string if it doesn't start with a valid number.
*
* @param input The string containing a numeric value followed by text.
* @param decimalSeparator The character to use as the decimal separator.
* @return A string with the adjusted decimal separator if valid; otherwise, the original string.
*/
std::string adjustDecimalSeparator(const std::string& input, char decimalSeparator);
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,32 @@
// upload_tft.cpp
#ifdef NSPANEL_HA_BLUEPRINT_ADDON_UPLOAD_TFT
#include "upload_tft.h"
namespace nspanel_ha_blueprint {
std::string construct_tft_url(const std::string& branch, const std::string& model,
const std::string& defaultUrl, const std::string& baseUrl) {
std::string relative_branch = branch.find("b") != std::string::npos ? "beta" : branch.find("d") != std::string::npos ? "dev" : branch;
std::string file_name;
if (model == "NSPanel Blank") file_name = "nspanel_blank.tft";
else if (model == "NSPanel EU") file_name = "nspanel_eu.tft";
else if (model == "NSPanel US") file_name = "nspanel_us.tft";
else if (model == "NSPanel US Landscape") file_name = "nspanel_us_land.tft";
else if (model == "NSPanel EU (CJK languages)") file_name = "nspanel_CJK_eu.tft";
else if (model == "NSPanel US (CJK languages)") file_name = "nspanel_CJK_us.tft";
else if (model == "NSPanel US Landscape (CJK languages)") file_name = "nspanel_CJK_us_land.tft";
return file_name.empty() ? defaultUrl : baseUrl + relative_branch + "/hmi/" + file_name;
}
std::string getNSPanelText(int displayMode, int charset) {
if (displayMode < 1 || displayMode > 3 || charset < 1 || charset > 2) return "";
std::string text = (displayMode == 1) ? "NSPanel EU" : (displayMode == 2) ? "NSPanel US" : "NSPanel US Landscape";
if (charset == 2) text += " (CJK languages)";
return text;
}
} // namespace nspanel_ha_blueprint
#endif // NSPANEL_HA_BLUEPRINT_ADDON_UPLOAD_TFT

View File

@@ -0,0 +1,34 @@
// upload_tft.h
#pragma once
#ifdef NSPANEL_HA_BLUEPRINT_ADDON_UPLOAD_TFT
#include <string>
namespace nspanel_ha_blueprint {
/**
* Constructs the TFT file URL based on branch, model, default URL, and base URL.
*
* @param branch The branch version input, potentially containing keywords like "beta" or "dev".
* @param model The device model, determining the specific TFT file name.
* @param defaultUrl The fallback URL if no specific file is associated with the model.
* @param baseUrl The base URL, to which branch and file names are appended to create the full URL.
* @return A string representing the fully constructed URL.
*/
std::string construct_tft_url(const std::string& branch, const std::string& model,
const std::string& defaultUrl, const std::string& baseUrl);
/**
* Generates a descriptive text for the NSPanel based on display mode and charset.
*
* @param displayMode Numeric code for the NSPanel's display mode: 1 for "EU", 2 for "US", 3 for "US Landscape".
* @param charset Numeric code for the character set: 1 for "International (original)", 2 for "CJK languages".
* @return A string describing the NSPanel configuration, or an empty string if inputs don't match any configuration.
*/
std::string getNSPanelText(int displayMode, int charset);
} // namespace nspanel_ha_blueprint
#endif // NSPANEL_HA_BLUEPRINT_ADDON_UPLOAD_TFT

View File

@@ -0,0 +1,73 @@
// utilities.cpp
#include "utilities.h"
#include <cstdlib> // For malloc/free
#ifdef USE_ESP_IDF
#include "esp_heap_caps.h"
#elif defined(USE_ARDUINO)
#include "esp32-hal-psram.h"
#endif
namespace nspanel_ha_blueprint {
UtilitiesGroupValues *UtilitiesGroups = nullptr;
void resetUtilitiesGroups() {
// Dynamically allocate the UtilitiesGroups array in PSRAM
#ifdef USE_ESP_IDF
UtilitiesGroups = static_cast<UtilitiesGroupValues*>(heap_caps_malloc(8 * sizeof(UtilitiesGroupValues), MALLOC_CAP_SPIRAM));
#elif defined(USE_ARDUINO)
UtilitiesGroups = static_cast<UtilitiesGroupValues*>(ps_malloc(8 * sizeof(UtilitiesGroupValues)));
#endif
if (!UtilitiesGroups) UtilitiesGroups = new UtilitiesGroupValues[8]; // Fallback to internal SRAM if PSRAM is not available or not supported
if (!UtilitiesGroups) return; // Fail nicely if no memory is available
// Initialize UtilitiesGroups with default values
const UtilitiesGroupValues initialUtilitiesGroups[8] = {
{"grid", "\0", "\0", 0},
{"group01", "\0", "\0", 0},
{"group02", "\0", "\0", 0},
{"group03", "\0", "\0", 0},
{"group04", "\0", "\0", 0},
{"group05", "\0", "\0", 0},
{"group06", "\0", "\0", 0},
{"home", "\0", "\0", 0}
};
for (size_t i = 0; i < 8; ++i) {
std::strcpy(UtilitiesGroups[i].group_id, initialUtilitiesGroups[i].group_id);
std::strcpy(UtilitiesGroups[i].value1, initialUtilitiesGroups[i].value1);
std::strcpy(UtilitiesGroups[i].value2, initialUtilitiesGroups[i].value2);
UtilitiesGroups[i].direction = initialUtilitiesGroups[i].direction;
}
}
void cleanupUtilitiesGroups() {
if (UtilitiesGroups != nullptr) {
free(UtilitiesGroups); // Compatible with both heap_caps_malloc and ps_malloc
UtilitiesGroups = nullptr; // Prevent dangling pointers
}
}
uint8_t findUtilitiesGroupIndex(const char* group_id) {
int low = 0;
int high = 7; // Directly use the number of elements in UtilitiesGroups - 1
while (low <= high) {
int mid = low + (high - low) / 2;
int cmp = std::strcmp(UtilitiesGroups[mid].group_id, group_id);
if (cmp < 0) {
low = mid + 1;
} else if (cmp > 0) {
high = mid - 1;
} else {
return static_cast<uint8_t>(mid); // Found
}
}
return UINT8_MAX; // Not found
}
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,44 @@
// utilities.h
#pragma once
#include <cstdint>
#include <cstring> // For std::strcpy
#include <string>
namespace nspanel_ha_blueprint {
struct UtilitiesGroupValues {
char group_id[8]; // 7 characters + null terminator
char value1[11]; // 10 characters + null terminator
char value2[11]; // 10 characters + null terminator
int8_t direction;
};
extern UtilitiesGroupValues *UtilitiesGroups;
void resetUtilitiesGroups();
void cleanupUtilitiesGroups();
uint8_t findUtilitiesGroupIndex(const char* group_id);
/**
* Copies the contents of a std::string to a fixed-size char array, ensuring
* null termination. The destination array size is automatically deduced.
* Designed for fixed-size char arrays only.
*
* @param dest A reference to the destination char array.
* @param src The source std::string to copy.
*/
template <unsigned int N>
void copyStringToCharArray(char (&dest)[N], const std::string& src) {
// Ensure we do not exceed the buffer size, leaving space for the null terminator
size_t length = std::min(src.size(), N - 1);
// Copy the string data into the destination buffer
std::strncpy(dest, src.c_str(), length);
// Explicitly null-terminate the destination buffer
dest[length] = '\0';
}
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,20 @@
// versioning.cpp
#include "versioning.h"
#include <cstdio> // For sscanf
namespace nspanel_ha_blueprint {
bool compare_versions(const char* version1, const char* version2) {
int major1 = 0, minor1 = 0;
int major2 = 0, minor2 = 0;
// Parse the version strings into major and minor numbers
sscanf(version1, "%d.%d", &major1, &minor1);
sscanf(version2, "%d.%d", &major2, &minor2);
// Compare the parsed major and minor numbers
return (major1 == major2) && (minor1 == minor2);
}
} // namespace nspanel_ha_blueprint

View File

@@ -0,0 +1,19 @@
// versioning.h
#pragma once
namespace nspanel_ha_blueprint {
/**
* Compares two version strings by major and minor version numbers, assuming the version
* strings are formatted as "major.minor". This function parses both version strings and
* compares their major and minor components.
*
* @param version1 The first version string to compare, in "major.minor" format.
* @param version2 The second version string to compare, in "major.minor" format.
* @return True if both the major and minor versions of version1 and version2 are equal,
* false otherwise.
*/
bool compare_versions(const char* version1, const char* version2);
} // namespace nspanel_ha_blueprint

View File

@@ -1,20 +1,24 @@
# Manuals:
### Setup
## Setup
- [First Steps | Installation and Setup](install.md)
- [Blueprint | Setup and explanation of the Blueprint](blueprint.md)
- [HowTo | All important things you should know](howto.md)
### Common issues
- [Common Issues | TFT Upload](tft_upload.md)
- [Common Issues | Stuck on Initializing](error_initializing.md)
- [Common Issues | AccuWeather Setup & Blank weather pages](weather.md)
### Advanced settings
- [Customization](customization.md)
- [Add-on climate](addon_climate.md)
- [Alarm Control Panel](alarm.md)
- [Version compatibility matrix](version_compatibility.md)
&nbsp;
&nbsp;
# Setup and overview videos:
## Common issues
- [Panel startup issues](error_initializing.md)
- [Compiling Errors](error_compiling.md)
- [TFT Upload](tft_upload.md)
## Advanced settings
- [Customization](customization.md)
- [Add-on Bluetooth Proxy](addon_bluetooth_proxy.md)
- [Add-on Climate](addon_climate.md)
- [Alarm Control Panel](alarm.md)
- [API](api.md)
- [Using Different Versions of This Project](different_version.md)
## Setup and overview videos:
- **_[Overview and features](https://www.youtube.com/watch?v=b7vW4YtUaTs) - Mark Watt Tech_**
- **_[How to setup](https://www.youtube.com/watch?v=jpSTA_ILB8g) - Mark Watt Tech_**
- **_[(DE) Einrichtungs und konfigurations video](https://www.youtube.com/watch?v=3afPFg6kUdc) - SmartHome yourself_**

64
docs/addon_ble_tracker.md Normal file
View File

@@ -0,0 +1,64 @@
# Add-on: BLE Tracker
## Description
This add-on enables your NSPanel to use its internal Bluetooth module to track nearby Bluetooth Low Energy (BLE) devices
using the [ESPHome BLE Tracker component](https://esphome.io/components/esp32_ble_tracker.html).
> [!IMPORTANT]
> Configuring the BLE Tracker on your NSPanel is crucial for enabling device discovery and presence detection functionalities efficiently.
This component should be managed with careful consideration of ESP32's memory capabilities, especially when other Bluetooth components are used concurrently.
## Prerequisites
- The `esp-idf` framework is recommended for the [ESP32 Platform](customization.md#framework-esp-idf) to ensure optimal operation and compatibility when using BLE features.
The `arduino` framework is not advised as it may increase memory usage and impact the performance negatively.
> [!WARNING]
> Using the `arduino` framework can lead to high memory consumption which might interfere with the stability of BLE operations on the NSPanel.
It is crucial to use the `esp-idf` framework to avoid such issues.
## Configuration Steps
1. **Edit Your ESPHome YAML File**: Incorporate the BLE Tracker component into your NSPanel's configuration by adding the necessary entries under the `esp32_ble_tracker:` section as shown below:
```yaml
substitutions:
device_name: "YOUR_NSPANEL_NAME" # Set your NSPanel's device name
friendly_name: "Your Friendly Name" # Set a friendly display name
wifi_ssid: !secret wifi_ssid # Your Wi-Fi SSID
wifi_password: !secret wifi_password # Your Wi-Fi password
# Optional configurations (uncomment if needed)
## Add-on for specific tracked devices or automation triggers
# sensor:
# - platform: ble_rssi
# mac_address: MAC_ADDRESS_OF_DEVICE
# name: "BLE Device RSSI"
## If you wanna set non-standard parameters to your BLE tracker, just add like this:
# esp32_ble_tracker:
# scan_parameters:
# interval: 1100ms
# window: 1100ms
# active: true
# Package Configuration
packages:
remote_package:
url: https://github.com/Blackymas/NSPanel_HA_Blueprint
ref: main
refresh: 300s
files:
- nspanel_esphome.yaml # Basic NSPanel package
# Optional packages for advanced features and other add-ons
- esphome/nspanel_esphome_addon_ble_tracker.yaml # BLE Tracker add-on package
# - esphome/nspanel_esphome_addon_bluetooth_proxy.yaml
# - esphome/nspanel_esphome_addon_climate_cool.yaml
# - esphome/nspanel_esphome_addon_climate_heat.yaml
# - esphome/nspanel_esphome_addon_climate_dual.yaml
```
2. **Update Substitutions**: Customize `"YOUR_NSPANEL_NAME"` and `"Your Friendly Name"` to appropriate identifiers for your device and its Bluetooth functionality.
3. **Save and Upload**: After making the necessary changes, save your configuration file and upload it to your NSPanel via the ESPHome dashboard.
> [!NOTE]
> The first time this component is enabled for an ESP32, the code partition needs to be resized.
> Please flash the ESP32 via USB when adding this to your configuration. After that, you can use OTA updates again.
This configuration allows your NSPanel to efficiently manage Bluetooth connections, acting as a proxy for various BLE operations.

View File

@@ -0,0 +1,65 @@
# Add-on: Bluetooth Proxy
## Description
This add-on enables your NSPanel to function as a Bluetooth Low Energy (BLE) proxy utilizing its internal Bluetooth module
along with the [ESPHome Bluetooth Proxy component](https://esphome.io/components/bluetooth_proxy.html).
> [!IMPORTANT]
> It is crucial to configure the Bluetooth Proxy using this add-on for optimal memory management, which involves releasing the Bluetooth stack prior to any TFT updates.
### Prerequisites
- Ensure the `esp-idf` framework is utilized for the [ESP32 Platform](customization.md#framework-esp-idf) when enabling Bluetooth features.
Avoid switching to the `arduino` framework as it significantly increases memory usage, potentially causing installation failures on your panel.
> [!WARNING]
> The `arduino` framework, while compatible, should not be used for Bluetooth-intensive applications on the NSPanel due to its higher memory consumption.
### Configuration Steps
1. **Edit Your ESPHome YAML File**: Add the Bluetooth Proxy add-on to your configuration by including the `remote_package` entry under the `packages` section as illustrated below:
```yaml
substitutions:
device_name: "YOUR_NSPANEL_NAME" # Set your NSPanel's device name
friendly_name: "Your Friendly Name" # Set a friendly display name
wifi_ssid: !secret wifi_ssid # Your Wi-Fi SSID
wifi_password: !secret wifi_password # Your Wi-Fi password
# Optional configurations (uncomment if needed)
## Add-on for climate control
# heater_relay: "1" # Options: "1" or "2"
# Begin Customization Section
##### Customization - Start #####
## If you wanna set non-standard parameters to your Bluetooth proxy just add like this:
# esp32_ble_tracker:
# scan_parameters:
# interval: 1100ms
# window: 1100ms
# active: true
#
# bluetooth_proxy:
# active: true
##### Customization - End #####
# Package Configuration
packages:
remote_package:
url: https://github.com/Blackymas/NSPanel_HA_Blueprint
ref: main
refresh: 300s
files:
- nspanel_esphome.yaml # Basic NSPanel package
# Optional packages for advanced features and other add-ons
# - esphome/nspanel_esphome_addon_ble_tracker.yaml
- esphome/nspanel_esphome_addon_bluetooth_proxy.yaml # Bluetooth Proxy add-on package
# - esphome/nspanel_esphome_addon_climate_cool.yaml
# - esphome/nspanel_esphome_addon_climate_heat.yaml
# - esphome/nspanel_esphome_addon_climate_dual.yaml
```
2. **Update Substitutions**: Customize `"YOUR_NSPANEL_NAME"` and `"Your Friendly Name"` to appropriate identifiers for your device and its Bluetooth functionality.
3. **Save and Upload**: After making the necessary changes, save your configuration file and upload it to your NSPanel via the ESPHome dashboard.
> [!NOTE]
> The first time this component is enabled for an ESP32, the code partition needs to be resized.
> Please flash the ESP32 via USB when adding this to your configuration. After that, you can use OTA updates again.
This configuration allows your NSPanel to efficiently manage Bluetooth connections, acting as a proxy for various BLE operations.

255
docs/addon_climate.md Normal file
View File

@@ -0,0 +1,255 @@
# Add-on: Climate
## Description
This add-on enables the use of your panel's relays to act as a thermostat (either cooler or heater)
using the internal temperature sensor and independent of the network availability.
### Attention
1. The NSPanel is limited to 2A per relay.
Don't use it for directly power your cooler/heater if exceeding the panel specifications:
- 150W/110V/Gang, 300W/110V/Total
- 300W/220V/Gang, 600W/220V/Total
2. A target temperature must be set on the climate entity in Home Assistant or the page Climate in your panel.
> [!NOTE]
> More details on the [Sonoff NSPanel's page](https://sonoff.tech/product/central-control-panel/nspanel/)
> and the [product specifications document](https://sonoff.tech/wp-content/uploads/2021/11/%E4%BA%A7%E5%93%81%E5%8F%82%E6%95%B0%E8%A1%A8-NSPanel-20210831.pdf).
## Installation
You will need to add the reference to `addon_climate_heat`, `addon_climate_cool` or `addon_climate_dual` files on your ESPHome settings in the `package` section
and after the `remote_package` (base code), as shown below (for `heat` in this example):
> [!NOTE]
> Occasionally, ESPHome updates may result in the `entity_id` of embedded thermostats being appended with `_2`.
> If you experience this change, refer to this [forum post](https://community.home-assistant.io/t/esphome-devices-all-renamed-with-2-added/388146) on the Home Assistant Forum for guidance.
```yaml
substitutions:
# Settings - Editable values
device_name: "YOUR_NSPANEL_NAME"
friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
# Add-on configuration (if needed)
## Add-on climate
heater_relay: "1" # Possible values: "1" or "2"
# Customization area
##### My customization - Start #####
##### My customization - End #####
# Basic and optional configurations
packages:
remote_package:
url: https://github.com/Blackymas/NSPanel_HA_Blueprint
ref: main
refresh: 300s
files:
- nspanel_esphome.yaml # Basic package
# Optional advanced and add-on configurations
# - esphome/nspanel_esphome_advanced.yaml
# - esphome/nspanel_esphome_addon_ble_tracker.yaml
# - esphome/nspanel_esphome_addon_bluetooth_proxy.yaml
# - esphome/nspanel_esphome_addon_climate_cool.yaml
- esphome/nspanel_esphome_addon_climate_heat.yaml
# - esphome/nspanel_esphome_addon_climate_dual.yaml
```
## Configuration
The following keys are available to be used in your `substitutions`:
<!-- markdownlint-disable MD013 MD033 -->
Key|Required|Supported values|Default|Description
:-|:-:|:-:|:-:|:-
cooler_relay|Mandatory for *cool* and *dual*|`1` or `2`|`0` (disabled)|Relay used for control the cooler. User `1` for "Relay 1" or `2` for "Relay 2".
heater_relay|Mandatory for *heat* and *dual*|`1` or `2`|`0` (disabled)|Relay used for control the heater. User `1` for "Relay 1" or `2` for "Relay 2".
temp_units|Optional|`°C` or `°F`|`°C`|Temperature unit.
min_off_time|Optional|Positive integer representing the number of seconds|`300`|Minimum duration (in seconds) the cooling/heating action must be disengaged before it may be engaged.
min_run_time|Optional|Positive integer representing the number of seconds|`300`|Minimum duration (in seconds) the cooling/heating action must be engaged before it may be disengaged.
min_idle_time|Optional|Positive integer representing the number of seconds|`30`|Minimum duration (in seconds) the idle action must be active before calling another climate action.
target_low|Optional|Number representing a temperature in the selected unit|`18`|The initial lower treshold for the target temperature.
target_high|Optional|Number representing a temperature in the selected unit|`24`|The initial higher treshold for the target temperature.
temp_min|Optional|Number representing a temperature in the selected unit|*cool: `15`*<br>*heat: `7`*<br>*dual: `7`* |The minimum temperature the climate device can reach. Used to set the range of the frontend gauge.
temp_max|Optional|Number representing a temperature in the selected unit|*cool: `45`*<br>*heat: `35`*<br>*dual: `45`* |The maximum temperature the climate device can reach. Used to set the range of the frontend gauge.
temp_step|Optional|Number representing a temperature in the selected unit|`0.5`|The granularity with which the target temperature can be controlled.
cool_deadband|Optional|Number representing a temperature hysteresis in the selected unit|`0.5`|The minimum temperature differential (temperature above the set point) before engaging cooling.
cool_overrun|Optional|Number representing a temperature hysteresis in the selected unit|`0.5`|The minimum temperature differential (cooling beyond the set point) before disengaging cooling.
heat_deadband|Optional|Number representing a temperature hysteresis in the selected unit|`0.5`|The minimum temperature differential (temperature below the set point) before engaging heat.
heat_overrun|Optional|Number representing a temperature hysteresis in the selected unit|`0.5`|The minimum temperature differential (heating beyond the set point) before disengaging heat.
<!-- markdownlint-enable MD013 MD033 -->
- All values must be delimited with `""`
- For more details on the keys, please take a look at [ESPHome Base Climate Configurations](https://esphome.io/components/climate/index.html#base-climate-configuration)
and [ESPHome Climate Thermostat - Additional actions behavior](https://esphome.io/components/climate/thermostat.html#additional-actions-behavior).
## Examples
### Cooler
```yaml
substitutions:
# Settings - Editable values
device_name: "YOUR_NSPANEL_NAME"
friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
# Add-on configuration (if needed)
## Add-on climate
cooler_relay: "1" # Possible values: "1" or "2"
temp_units: "°F" # Temperatures in Fahrenheit
temp_min: "40" # Min supported temperature is 40°F
temp_max: "80" # Max supported temperature is 80°F
temp_step: "1" # Temperature granularity is 1°F
cool_deadband: "1.2" # Temperature delta before engaging cooling
cool_overrun: "1.2" # Temperature delta before disengaging cooling
# Customization area
##### My customization - Start #####
##### My customization - End #####
# Basic and optional configurations
packages:
remote_package:
url: https://github.com/Blackymas/NSPanel_HA_Blueprint
ref: main
refresh: 300s
files:
- nspanel_esphome.yaml # Basic package
# Optional advanced and add-on configurations
# - esphome/nspanel_esphome_advanced.yaml
# - esphome/nspanel_esphome_addon_ble_tracker.yaml
# - esphome/nspanel_esphome_addon_bluetooth_proxy.yaml
- esphome/nspanel_esphome_addon_climate_cool.yaml
# - esphome/nspanel_esphome_addon_climate_heat.yaml
# - esphome/nspanel_esphome_addon_climate_dual.yaml
```
### Heater
```yaml
substitutions:
# Settings - Editable values
device_name: "YOUR_NSPANEL_NAME"
friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
# Add-on configuration (if needed)
## Add-on climate
heater_relay: "1" # Possible values: "1" or "2"
temp_units: "°F" # Temperatures in Fahrenheit
temp_min: "40" # Min supported temperature is 40°F
temp_max: "80" # Max supported temperature is 80°F
temp_step: "1" # Temperature granularity is 1°F
heat_deadband: "1.2" # Temperature delta before engaging heat
heat_overrun: "1.2" # Temperature delta before disengaging heat
# Customization area
##### My customization - Start #####
##### My customization - End #####
# Basic and optional configurations
packages:
remote_package:
url: https://github.com/Blackymas/NSPanel_HA_Blueprint
ref: main
refresh: 300s
files:
- nspanel_esphome.yaml # Basic package
# Optional advanced and add-on configurations
# - esphome/nspanel_esphome_advanced.yaml
# - esphome/nspanel_esphome_addon_ble_tracker.yaml
# - esphome/nspanel_esphome_addon_bluetooth_proxy.yaml
# - esphome/nspanel_esphome_addon_climate_cool.yaml
- esphome/nspanel_esphome_addon_climate_heat.yaml
# - esphome/nspanel_esphome_addon_climate_dual.yaml
```
### Dual
```yaml
substitutions:
# Settings - Editable values
device_name: "YOUR_NSPANEL_NAME"
friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
# Add-on configuration (if needed)
## Add-on climate
heater_relay: "1" # Possible values: "1" or "2"
cooler_relay: "2" # Possible values: "1" or "2"
temp_units: "°F" # Temperatures in Fahrenheit
temp_min: "40" # Min supported temperature is 40°F
temp_max: "80" # Max supported temperature is 80°F
temp_step: "1" # Temperature granularity is 1°F
cool_deadband: "1.2" # Temperature delta before engaging cooling
cool_overrun: "1.2" # Temperature delta before disengaging cooling
heat_deadband: "1.2" # Temperature delta before engaging heat
heat_overrun: "1.2" # Temperature delta before disengaging heat
# Customization area
##### My customization - Start #####
##### My customization - End #####
# Basic and optional configurations
packages:
remote_package:
url: https://github.com/Blackymas/NSPanel_HA_Blueprint
ref: main
refresh: 300s
files:
- nspanel_esphome.yaml # Basic package
# Optional advanced and add-on configurations
# - esphome/nspanel_esphome_advanced.yaml
# - esphome/nspanel_esphome_addon_ble_tracker.yaml
# - esphome/nspanel_esphome_addon_bluetooth_proxy.yaml
# - esphome/nspanel_esphome_addon_climate_cool.yaml
# - esphome/nspanel_esphome_addon_climate_heat.yaml
- esphome/nspanel_esphome_addon_climate_dual.yaml
```
### Real Use Case Example: Water Underfloor Heating with NSPanel
The NSPanel works nicely as a replacement for existing water underfloor heating controllers, installed at eye level and often powered by 100-240VAC.
In my specific use case, the control valve is of the 'normally closed' type, meaning that an open relay indicates 'no heating.'
I have utilized relay #1 for this purpose. It's important to note that this setup does not act as a PID controller, but operates on a simple on-off mechanism.
The system initiates heating at a preset value below and turns it off at a value above the set point.
I have set these values to `0.1°C` below and `0.1°C` above the target temperature, respectively.
These adjustments have been effectively maintaining the desired temperature in all of our four rooms.
The thermostat's settings range from a minimum of `15°C` to a maximum of `22°C`, with a granularity of `0.1°C` for adjustments.
Furthermore, I have selected `18.3°C` as the default target temperature.
```yaml
##### addon-configuration #####
## addon_climate ##
heater_relay: "1" #Use relay 1
temp_min: "15"
temp_max: "22"
temp_step: "0.1"
cold_tolerance: "0.1"
hot_tolerance: "0.1"
##### CHANGE ME END #####
climate:
- id: !extend thermostat_embedded
visual:
temperature_step: ${temp_step}
preset:
- name: Home
default_target_temperature_low: 18.3
mode: "heat"
```
Please note that employing any filter to smooth the temperature readings, such as averaging, is discouraged if the relevant timescale exceeds 1min.
Such filtering methods can delay the response times of an already slow underfloor heating system.
Despite this, the temperature stability achieved is quite satisfactory, as illustrated in the graph below.
![Temperature vs Time](pics/addon_underfloor.png)
*On March 24th (around 9:20 PM) and March 25th (around 7:30AM) a window was opened, and all heaters were set to 'off.' for 30min*

75
docs/alarm.md Normal file
View File

@@ -0,0 +1,75 @@
# Alarm Control Panel
You can control an Alarm Control Panel from your NSPanel, which allows you to set the alarm mode to standard
modes supported by Home Assistant (Home, Away, Night, Vacation, or Custom bypass) or disarm the alarm.
Currently, the NSPanel supports alarms without a code or with a numeric code. For alarms using a text code,
the NSPanel will display it, but interactions (like button clicks) will send service calls to Home Assistant
without the code, leading to failed operations that require a code.
> [!IMPORTANT]
> **Security advisory**
> The default communication between your NSPanel (ESPHome) and Home Assistant (HA) is not encrypted. This
> could allow someone with network access to monitor and replicate the service calls. This risk is
> particularly relevant when controlling your alarm system.
>
> To enhance security, we strongly recommend enabling API encryption for NSPanel users managing an Alarm
> system. Follow the instructions in the ["API encryption" example here](customization.md#api-encryption)
> to implement this security measure.
## Configuration
### Allow the device to make Home Assistant service calls
First, you need to configure your Home Assistant to permit your NSPanel to make service calls. While
most services are handled via the Blueprint, ESPHome needs to send events with all necessary data in
plain text for these service calls. To mitigate any security risks, alarm-related calls are managed
directly by the panel.
To enable this:
1. Go to your ESPHome integrations panel (Settings > Devices and Services > ESPHome).
2. Click "Configure" next to your panel's entry.
![Configure option in ESPHome integrations panel](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/37bfc622-c0cd-4941-a397-3eeb2ddbe6a2)
3. Select the "Allow the device to make Home Assistant service calls" option.
![Allow service calls option in ESPHome configuration](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/9b20a1b6-94ad-4fff-aef2-eb3599db9bf1)
### Blueprint settings
To assign Alarm Control Panel entities to buttons:
1. Open the NSPanel Blueprint automation.
2. Find the button configuration section.
3. Choose a button and select your alarm control panel entity.
4. Click "Save" to complete setup.
![Assigning Alarm Control Panel entities in Blueprint](pics/ha_blueprint_home_custom_buttons_alarm.png)
Follow these steps to ensure your NSPanel is correctly configured for controlling your alarm system.
## Controlling your alarm from your panel
When an alarm control panel is configured in your Blueprint automation, the alarm icon appears on your
NSPanel's Home page or the respective button page. This icon changes based on the alarm state, detailed
in the following table.
Clicking this button opens the Alarm Control Panel page. Here, you can adjust alarm settings with a
single click or return to the Home page.
![View of the Alarm Control Panel page on NSPanel](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/bc312981-3d5a-42c7-b0b4-203457ff549f)
### Description of states shown with the alarm icon
<!-- markdownlint-disable MD013 -->
State | Color | Icon | Icon Name | Description
-- | -- | -- | -- | --
disarmed | White | ![shield-off-outline](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/5b1c8219-3958-4096-9100-0b4ef47e7dac) | mdi:shield-off-outline | The alarm is disarmed (off).
armed_home | Green | ![shield-home-outline](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/1ed9347b-139a-4729-a795-b08934b56581) | mdi:shield-home-outline | The alarm is armed in home mode.
armed_away | Green | ![shield-lock-outline](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/998db33c-3ec5-47dd-9686-c28eee81e9eb) | mdi:shield-lock-outline | The alarm is armed in away mode.
armed_night | Green | ![shield-moon-outline](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/84528bca-577d-4a43-8366-e6f9e41bc7b4) | mdi:shield-moon-outline | The alarm is armed in night mode.
armed_vacation | Green | ![shield-airplane-outline](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/067218de-ec8c-4fce-a427-7848a7ae9f27) | mdi:shield-airplane-outline | The alarm is armed in vacation mode.
armed_custom_bypass | Green | ![shield-half-full](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/af7ed346-28eb-4796-b62b-2a51e9cb6272) | mdi:shield-half-full | The alarm is armed in bypass mode.
pending | Amber | ![shield-outline](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/31bcd613-04d6-455a-a443-3299211d487e) | mdi:shield-outline | The alarm is pending (towards triggered).
arming | Amber | ![shield-outline](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/31bcd613-04d6-455a-a443-3299211d487e) | mdi:shield-outline | The alarm is arming.
disarming | Amber | ![shield-off-outline](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/37c02584-dd65-4575-8d95-c7346de599e4) | mdi:shield-off-outline | The alarm is disarming.
triggered | Red | ![shield-alert-outline](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/ee1ec55b-e671-4aa0-9baa-77eb2a8c8c7f) | mdi:shield-alert-outline | The alarm is triggered.
unknown/unavailable | White | ![shield-alert-outline](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/94725493/a382e5ab-2e16-453c-bc9b-b3dcd3825de7) | mdi:shield-alert-outline | The alarm state is unknown or unavailable.
<!-- markdownlint-enable MD013 -->

843
docs/api.md Normal file
View File

@@ -0,0 +1,843 @@
# API
This document provides details on custom services designed for integration with Home Assistant, including their usage, parameters, and examples.
## Summary
- [Service Documentation](#service-documentation)
- [Button Service (`button`)](#button-service-button): Configures properties and state of buttons on a specified button page.
- [Command Service (`command`)](#command-service-command): Sends a custom command directly to the display.
- [Component Color Service (`component_color`)](#component-color-service-component_color): Changes the foreground color of a specified component on the display.
- [Component Text Service (`component_text`)](#component-text-service-component_text): Updates the text of a specified component on the display.
- [Component Value Service (`component_val`)](#component-value-service-component_val): Updates the value of a specified component on the display.
- [Components Visibility Service (`components_visibility`)](#components-visibility-service-components_visibility): Hides or shows a specified component on the display.
- [Entity Details Show Service (`entity_details_show`)](#entity-details-show-service-entity_details_show): Displays detailed information for a specific entity.
- [Hardware Button State Indication Service (`hw_button_state`)](#hardware-button-state-indication-service-hw_button_state):
Updates the visual state (on/off) of the left and right hardware button indicators on the panel.
- [Icon Service (`icon`)](#icon-service-icon): Updates a chip or custom button's icon, color, and visibility.
- [Initialization Service: Global (`init_global`)](#initialization-service-init_global): Transfers global settings on initialization.
- [Initialization Service: Hardware (`init_hardware`)](#initialization-service-init_hardware): Transfers NSPanel hardware settings during initialization.
- [Initialization Service: Home Page (`init_page_home`)](#initialization-service-init_page_home): Transfers settings for the "Home" page on initialization.
- [Initialization Service: Settings Page (`init_page_settings`)](#initialization-service-init_page_settings): Transfers settings for the "Settings" page on initialization.
- [Notification Clear Service (`notification_clear`)](#notification-clear-service-notification_clear): Clears the current notification from the screen.
- [Notification Show Service (`notification_show`)](#notification-show-service-notification_show): Displays a notification-message on the screen.
- [QR Code Service (`qrcode`)](#qr-code-service-qrcode): Displays a QR code on the panel or updates the QR code information for local control.
- [RTTTL Play Service (`rtttl_play`)](#rtttl-play-service-rtttl_play): Plays melodies encoded in the RTTTL format.
- [Upload TFT Service (`upload_tft`)](#tft-file-update-service-upload_tft): Enables TFT file updates from a URL, requiring the "Upload TFT" add-on.
- [Value Service (`value`)](#value-service-value): Updates an entity to display specific values.
- [Wake Up Service (`wake_up`)](#wake-up-service-wake_up): Activates the display from a screensaver or low-brightness state.
- [Alarm Settings Page Service (`page_alarm`)](#alarm-settings-page-service-page_alarm): Updates the Alarm page with current state information.
- [Climate Page Service (`page_climate`)](#climate-page-service-page_climate): Updates the Climate page with current state information.
- [Media Player Page Service (`page_media_player`)](#media-player-page-service-page_media_player): Updates the Media Player page with current state information.
- [Screen Components](#screen-components)
- [Home page - Chips](#home-page---chips)
- [User-defined Chips](#user-defined-chips)
- [Relays Chips](#relays-chips)
- [Climate Chip](#climate-chip)
- [Home page - Custom Buttons](#home-page---custom-buttons)
- [Home page - Values](#home-page---values)
- [Entities Pages - Values](#entities-pages---values)
## Service Documentation
### General Guidance
In general, there's no validation on the content of the parameters in a service call.
Please make sure to fulfill the validation from the service caller side, otherwise it can drive to a crash in the ESPHome side, it will most likely restart the panel.
One example is with colors. In almost all cases, it is expected an array with 3 unsigned integers between 0 to 255.
If you send anything different, the conversion to the RGB565 used by Nextion will crash.
### Table of Contents
<!-- markdownlint-disable MD013 -->
| Service ID | Service Name | Description |
|------------|--------------|-------------|
| [`button`](#button-service-button) | [Button Service](#button-service-button) | Configures properties and state of buttons on a specified button page. |
| [`command`](#command-service-command) | [Command Service](#command-service-command) | Sends a custom command directly to the display. |
| [`component_color`](#component-color-service-component_color) | [Component Color Service](#component-color-service-component_color) | Changes the foreground color of a specified component on the display. |
| [`component_text`](#component-text-service-component_text) | [Component Text Service](#component-text-service-component_text) | Updates the text of a specified component on the display. |
| [`component_val`](#component-value-service-component_val) | [Component Value Service](#component-value-service-component_val) | Updates the value of a specified component on the display. |
| [`components_visibility`](#components-visibility-service-components_visibility) | [Components Visibility Service](#components-visibility-service-components_visibility) | Hides or shows a specified component on the display. |
| [`entity_details_show`](#entity-details-show-service-entity_details_show) | [Entity Details Show Service](#entity-details-show-service-entity_details_show) | Displays detailed information for a specific entity. |
| [`hw_button_state`](#hardware-button-state-indication-service-hw_button_state) | [Hardware Button State Indication Service](#hardware-button-state-indication-service-hw_button_state) | Updates the visual state (on/off) of the left and right hardware button indicators on the panel. |
| [`icon`](#icon-service-icon) | [Icon Service](#icon-service-icon) | Updates a chip or custom button's icon, color, and visibility. |
| [`init_global`](#initialization-service-init_global) | [Initialization Service](#initialization-service-init_global) | Transfers global settings on initialization. |
| [`init_hardware`](#initialization-service-init_hardware) | [Initialization Service](#initialization-service-init_hardware) | Transfers NSPanel hardware settings during initialization. |
| [`init_page_home`](#initialization-service-init_page_home) | [Initialization Service](#initialization-service-init_page_home) | Transfers settings for the "Home" page on initialization. |
| [`init_page_settings`](#initialization-service-init_page_settings) | [Initialization Service](#initialization-service-init_page_settings) | Transfers settings for the "Settings" page on initialization. |
| [`notification_clear`](#notification-clear-service-notification_clear) | [Notification Clear Service](#notification-clear-service-notification_clear) | Clears the current notification from the screen. |
| [`notification_show`](#notification-show-service-notification_show) | [Notification Show Service](#notification-show-service-notification_show) | Displays a notification-message on the screen. |
| [`page_alarm`](#alarm-settings-page-service-page_alarm) | [Alarm Settings Page Service](#alarm-settings-page-service-page_alarm) | Updates the Alarm page with current state information. |
| [`page_climate`](#climate-page-service-page_climate) | [Climate Page Service](#climate-page-service-page_climate) | Updates the Climate page with current state information. |
| [`page_media_player`](#media-player-page-service-page_media_player) | [Media Player Page Service](#media-player-page-service-page_media_player) | Updates the Media Player page with current state information. |
| [`qrcode`](#qr-code-service-qrcode) | [QR Code Service](#qr-code-service-qrcode) | Displays a QR code on the panel or update the QR code information for local control. |
| [`rtttl_play`](#rtttl-play-service-rtttl_play) | [RTTTL Play Service](#rtttl-play-service-rtttl_play) | Plays melodies encoded in the RTTTL format. |
| [`upload_tft`](#tft-file-update-service-upload_tft) | [Upload TFT Service](#tft-file-update-service-upload_tft) | Enables TFT file updates from a URL, requiring the "Upload TFT" add-on. |
| [`value`](#value-service-value) | [Value Service](#value-service-value) | Updates an entity to display specific values. |
| [`wake_up`](#wake-up-service-wake_up) | [Wake Up Service](#wake-up-service-wake_up) | Activates the display from a screensaver or low-brightness state. |
<!-- markdownlint-enable MD013 -->
### Button Service: `button`
Configures the properties and state of buttons on a specified button page, allowing for dynamic updates to button appearance and behavior based on specified parameters.
**Usage:**
This service is designed for dynamic user interface adjustments, enabling the customization of button states, icons, colors, and labels.
It's particularly useful for reflecting changes in device states or user interactions within the UI.
**Parameters:**
- `page` (string): The page identifier where the button is located.
- `id` (string): The button's unique identifier.
- `state` (bool): The state of the button, which can affect its background picture and other visual elements.
- `icon` (string): Icon codepoint from [HASwitchPlate Material Design Icons](https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html).
Example: "\uE6E8" for `mdi:lightbulb-on-outline`.
- `icon_color` (int[]): The RGB color array for the icon.
- `icon_font` (int): The Nextion font identifier for the icon (default is 8).
- `bri` (string): Brightness level or other dynamic information to display on the button close to the icon.
- `label` (string): The main text label displayed on the button.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_button
data:
page: "buttonpage01"
id: "button08"
state: true
icon: "\uE6E8" # Example for mdi:lightbulb-on-outline
icon_color: [255, 0, 0] # Red
icon_font: 2
bri: "75%"
label: "Living Room"
```
> [!NOTE]
> Replace `<your_panel_name>` with the specific name of your panel configured in Home Assistant.
> This service dynamically updates the specified button's properties to match the provided parameters.
### Command Service: `command`
Sends a custom command directly to the display, enabling direct interaction and dynamic content updates.
**Usage:**
This service is particularly useful for advanced customizations and direct display manipulations, such as showing messages, updating statuses, or any other display-centric commands.
**Parameters:**
- `cmd` (string): The command string to be sent to the display. Please refer to [The Nextion Instruction Set](https://nextion.tech/instruction-set/) for a comprehensive list of commands supported.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_command
data:
cmd: "page home" # Go to page "Home"
```
> [!NOTE]
> Replace `<your_panel_name>` with your specific panel name as configured in Home Assistant to ensure correct service execution.
>
> Ensure the command string (`cmd`) is properly formatted according to your display's command processing capabilities.
### Component Color Service: `component_color`
Changes the foreground color of a specified component on the display, enabling dynamic color updates for user interface customization.
**Usage:**
This service is ideal for creating visually dynamic interfaces, allowing elements to change color based on conditions,
events, or user actions, such as indicating status changes or highlighting specific UI components.
**Parameters:**
- `id` (string): Identifier of the component whose color will be updated. It is essential that this matches the component's ID in your display layout to ensure the correct element is targeted.
- `color` (int[]): The new color for the component, specified as an RGB array (e.g., `[255, 0, 0]` for red).
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_component_color
data:
id: "home.time"
color: [255, 0, 0] # Changes the component's color to red
```
> [!NOTE]
> Replace `<your_panel_name>` with your specific panel name as configured in Home Assistant to ensure correct service execution.
>
> Ensure the `id` and color parameters accurately target and define the new color for the component.
### Component Text Service: `component_text`
Updates the text of a specified component on the display, enabling dynamic text content updates.
**Usage:**
Ideal for user interfaces that require real-time text updates, such as status messages, labels, or any text-based information display.
**Parameters:**
- `id` (string): Identifier of the component whose text will be updated. Ensure this matches the component's ID in your display layout.
- `txt` (string): The new text content to display. This can include static text or dynamic information passed at runtime.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_component_text
data:
id: "home.time"
txt: "12:34"
```
> [!NOTE]
> Replace `<your_panel_name>` with your specific panel name as configured in Home Assistant to ensure correct service execution.
>
> Make sure the `id` corresponds to the correct component on your display for the text update to work as intended.
### Component Value Service: `component_val`
Updates the value of a specified component on the display, enabling dynamic value updates.
**Usage:**
Ideal for interfaces requiring real-time updates of numerical values, such as counters, temperature readings, or any numeric indicators.
**Parameters:**
- `id` (string): Identifier of the component whose value will be updated. It's crucial this matches the component's ID in your display layout accurately.
- `val` (int): The new integer value to be set for the component. This can represent various data types, depending on the component's purpose (e.g., temperature, humidity levels).
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_component_val
data:
id: "cover.coverslider"
val: 25
```
> [!NOTE]
> Replace `<your_panel_name>` with your specific panel name as configured in Home Assistant to ensure correct service execution.
>
> Ensure the `id` accurately matches the component on your display to successfully update its value.
### Components Visibility Service: `components_visibility`
Hides or shows a list of component on the display, allowing for dynamic interface changes.
**Usage:**
This service is ideal for creating interactive user interfaces that adapt by hiding or showing certain elements based on user actions, conditions, or events.
**Parameters:**
- `ids` (string[]): Array of identifiers of the components to be hidden/shown. It is crucial that this matches the component's ID in your display layout to ensure the correct element is hidden/shown.
- `visible` (bool): Set to true to show the component, or false to hide it.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_component_hide
data:
ids: [ "date", "time" ] # Hides the date and time display on Home page
visible: false
```
<!-- markdownlint-disable MD028 -->
> [!NOTE]
> Replace <your_panel_name> with your specific panel name as configured in Home Assistant to ensure correct service execution.
>
> Ensure the ids matches the component on your display you wish to hide or show.
> [!IMPORTANT]
> This command only works when the page is visible.
>
> If a component being hidden/shown is not part of the current page, the command will fail and an error message will be logged.
<!-- markdownlint-enable MD028 -->
### Entity Details Show Service: `entity_details_show`
This service is designed to display detailed information about a specific entity within the panel's interface.
It enables users to navigate to a dedicated page showing extensive details about an entity, such as a light or a climate,
and provides a structured way to return to either the home page or a specific button page.
**Usage:**
Ideal for interfaces requiring detailed entity information across various contexts.
By specifying the `entity` and `back_page`, users are offered a seamless navigation experience,
ensuring they can easily access detailed information and return to their initial navigation point within the interface.
**Parameters:**
- `entity` (string): The unique identifier of the entity (`entity_id` in Home Assistant) for which details are displayed.
- `back_page` (string): The page identifier to return to after viewing entity details.
Valid options are `home` for the home page or `buttonpage01` to `buttonpage04` for button pages.
No other pages are supported to maintain navigation consistency.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_entity_details_show
data:
entity: "light.living_room"
back_page: "buttonpage01"
```
> [!NOTE]
> Ensure to replace <your_panel_name> with the specific name of your panel configured in Home Assistant.
> This setup provides a direct and user-friendly way to access and return from detailed entity information, enhancing the interface's usability.
### Hardware Button State Indication Service: `hw_button_state`
This service dynamically updates the on-screen indication bars for the hardware buttons, reflecting the current state of the entities they control.
It's designed to provide immediate visual feedback, enhancing the user interface by showing the active/inactive state of the left and right hardware button indicators on the panel.
**Usage:**
Utilize this service to modify the visual state (on/off) of hardware button indicators on the panel, corresponding to the state of entities controlled by these buttons.
This allows for visual feedback that matches the operational state of the buttons.
**Parameters:**
- `button_mask` (int): A bitwise identifier for buttons. Use `1` for the left button, `2` for the right button, and `3` for both buttons.
- `state` (bool): The state to apply to the button(s) indicated by `button_mask`. True for on (active), false for off (inactive).
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_hw_button_state
data:
button_mask: 3 # Targets both the left (1) and right (2) buttons
state: true # Turns the indication bars on for both buttons
```
> [!NOTE]
> Replace `<your_panel_name>` with your specific panel name as configured in Home Assistant.
> This service leverages a bitmask (`button_mask`) for flexible control over multiple hardware buttons simultaneously, offering a streamlined method for updating their visual states.
### Icon Service: `icon`
Updates a chip or custom button's icon, color, and visibility within Home Assistant.
**Usage:**
This service is ideal for dynamically updating icons on your Panel, allowing for a customizable and interactive user interface.
**Parameters:**
- `id` (string): Identifier of the chip or button component. Refer to "[Screen components](#screen-components)" for more details.
- `icon` (string): Icon codepoint from [HASwitchPlate Material Design Icons](https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html).
Example: "\uE6E8" for `mdi:lightbulb-on-outline`.
- `icon_color` (int[]): RGB color array for the icon. Example: `[0, 255, 0]` for green.
- `visible` (bool): Flag indicating whether the icon should be visible (`true`) or hidden (`false`).
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_icon
data:
id: "home.chip03"
icon: "\uE6E8" # Example for mdi:lightbulb-on-outline
icon_color: [0, 255, 0] # Green
visible: true
```
> [!NOTE]
> Ensure the placeholder `<your_panel_name>` is replaced with the specific panel name you will need to reference in your Home Assistant configuration.
### Initialization Service: `init_global`
Transfers global settings from the blueprint to ESPHome,
ensuring that ESPHome is configured with the necessary parameters for operation according to the blueprint specifications.
**Usage:**
This service is crucial during the initialization phase or when global settings need to be updated to reflect changes in the blueprint.
It configures ESPHome with settings that affect overall functionality and user interface aspects.
**Parameters:**
- `blueprint_version` (string): Specifies the version of the blueprint being used.
- `ent_value_xcen` (int): Alignment of values on entities pages (0 for right (default), 1 for center or 2 for left).
- `mui_please_confirm` (string): Localized (language based) message used for asking for confirmation in the UI.
- `mui_unavailable` (string): Localized (language based) message used for indicating unavailability in the UI.
- `screensaver_time` (bool): Enables or disables the screensaver time display.
- `screensaver_time_font` (int): Specifies the font id for the screensaver time display.
- `screensaver_time_color` (int[]): Specifies the RGB color array for the screensaver time display.
- `decimal_separator` (string): The char to be used as decimal separator.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_init_global
data:
blueprint_version: "4.2.5"
ent_value_xcen: 0
mui_please_confirm: "Confirme, por favor."
mui_unavailable: "Indisponível"
screensaver_time: true
screensaver_time_font: 11
screensaver_time_color: [165, 42, 42] # Reddish-brown
decimal_separator: ","
```
> [!NOTE]
> Replace `<your_panel_name>` with the specific name of your panel configured in Home Assistant.
>
> This service should be called to update ESPHome with the latest global settings as specified in your blueprint.
### Initialization Service: `init_hardware`
Configures NSPanel hardware settings in ESPHome according to the specifications provided in the blueprint,
ensuring each component operates with the correct parameters for control, appearance, and fallback behavior.
**Usage:**
This service is essential for initializing or updating button and relay configurations to reflect changes in the blueprint.
It tailors ESPHome's hardware operations for specific use cases, including local control capabilities, iconography, color indications, and fallback states.
**Parameters:**
- `relay1_local_control` (bool): Enables or disables local control for Relay 1.
- `relay1_icon` (string):
Icon codepoint from [HASwitchPlate Material Design Icons](https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html) for Relay 1.
- `relay1_icon_color` (int[]): The RGB color array for Relay 1's icon.
- `relay1_fallback` (bool): Determines the fallback state for Relay 1 in case of communication loss.
- `relay2_local_control` (bool): Enables or disables local control for Relay 2.
- `relay2_icon` (string):
Icon codepoint from [HASwitchPlate Material Design Icons](https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html) for Relay 2.
- `relay2_icon_color` (int[]): The RGB color array for Relay 2's icon.
- `relay2_fallback` (bool): Determines the fallback state for Relay 2 in case of communication loss.
- `button_left` (bool): Enable/disable left button status visualization.
- `button_right` (bool): Enable/disable right button status visualization.
- `button_bar_color_on` (int[]): RGB color array for the hardware button bar when the status is `On`.
- `button_bar_color_off` (int[]): RGB color array for the hardware button bar when the status is `Off`.
- `embedded_climate` (bool): Indicates whether climate control is embedded in the panel.
- `embedded_climate_friendly_name` (string): Provides a friendly name for the embedded climate control.
- `embedded_indoor_temperature` (bool): Determines if indoor temperature display is enabled.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_init_hardware
data:
relay1_local_control: true
relay1_icon: "\uE3A5" # Example for mdi:numeric-1-box-outline
relay1_icon_color: [248, 0, 0] # Red
relay1_fallback: false
relay2_local_control: true
relay2_icon: "\uE3A8" # Example for mdi:numeric-2-box-outline
relay2_icon_color: [0, 252, 0] # Green
relay2_fallback: true
button_left: true
button_right: true
button_bar_color_on: [31, 169, 255] # Blueish
button_bar_color_off: [44, 44, 44] # Dark gray
embedded_climate: true
embedded_climate_friendly_name: "Termostato da Sala"
embedded_indoor_temperature: true
```
> [!NOTE]
> Replace `<your_panel_name>` with the specific name of your panel configured in Home Assistant.
> This service initializes buttons and relay settings based on the provided parameters, customizing relay functionality and presentation as defined in the blueprint.
### Initialization Service: `init_page_home`
Configures the "Home" page settings and user interface elements in ESPHome,
aligning with the blueprint specifications to create a personalized and functional home screen.
**Usage:**
This service plays a crucial role in the initial setup and ongoing updates of the "Home" page,
facilitating dynamic adjustments to layout, appearance, and interactive elements.
It accommodates extensive customizations, impacting both visual appeal and functionality of UI components.
**Parameters:**
- `date_color` (int[]): RGB color array for the date display.
- `time_format` (string): Format string for displaying time, supporting standard time formatting symbols.
- `time_color` (int[]): RGB color array for the time display.
- `meridiem` (string[]): Array of strings for AM/PM labels, applicable if the time format includes meridiem.
- `chip_font` (int): Font Id for icons or chips displayed on the "Home" page.
- `custom_buttons_font` (int): Font Id for custom button icons on the "Home" page.
- `qrcode` (bool): Flag indicating whether the QR code button is enabled.
- `qrcode_icon` (string):
Icon codepoint from [HASwitchPlate Material Design Icons](https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html)
for the QR code button.
- `qrcode_icon_color` (int[]): RGB color array for the QR code button icon.
- `entities_pages_icon` (string):
Icon codepoint from [HASwitchPlate Material Design Icons](https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html)
for the entities page button.
- `entities_pages_icon_color` (int[]): RGB color array for the entities page button icon.
- `utilities` (bool): Flag indicating whether the utilities page button is enabled.
- `utilities_icon` (string):
Icon codepoint from [HASwitchPlate Material Design Icons](https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html)
for the utilities page button.
- `utilities_icon_color` (int[]): RGB color array for utilities page button icon.
- `outdoor_temp_font` (int): Font Id for outdoor temperature indication on the "Home" page.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_init_page_home
data:
date_color: [255, 255, 255] # White
time_format: "HH:mm"
time_color: [255, 255, 255] # White
meridiem: ["AM", "PM"]
chip_font: 8
custom_buttons_font: 9
qrcode: true
qrcode_icon: "\uE432" # Example for mdi:qrcode-scan
qrcode_icon_color: [0, 255, 0] # Green
entities_pages_icon: "\uEDCF" # Example for mdi:format-list-bulleted-square
entities_pages_icon_color: [0, 0, 255] # Blue
utilities: true
utilities_icon: "\uE299" # Example for mdi:gauge
utilities_icon_color: [255, 255, 255] # White
outdoor_temp_font: 5
```
> [!NOTE]
> Ensure to replace `<your_panel_name>` with the actual name of your panel configured in Home Assistant.
> This service customizes the "Home" page with specified settings, enhancing the panel's interface based on the project's blueprint.
### Initialization Service: `init_page_settings`
Populates the "Settings" page with configurable options in the panel,
tailored according to the project's blueprint to create a user-friendly and cohesive settings interface.
**Usage:**
This service is crucial for the initial configuration and subsequent updates of the "Settings" page.
It facilitates the customization of labels and functionalities, including reboot actions and screen brightness adjustments, directly from the panel's interface.
This customization ensures that the settings are not only accessible but also intuitive for end-users.
**Parameters:**
- `reboot` (string): Text label for the reboot button, guiding users on the action to restart the device.
- `brightness` (string): Description label for adjusting the screen's brightness.
- `bright` (string): Label preceding the slider for selecting the high brightness level, indicating the option for a brighter screen setting.
- `dim` (string): Label preceding the slider for selecting the dimmed brightness level, indicating the option for a lower light setting.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_init_page_settings
data:
reboot: "Restart Device"
brightness: "Screen Brightness"
bright: "Bright Mode:"
dim: "Dim Mode:"
```
> [!NOTE]
> Replace `<your_panel_name>` with the specific name of your panel configured in Home Assistant.
> This service customizes the "Settings" page according to specified labels, enhancing user interaction with device settings.
### Notification Clear Service: `notification_clear`
Removes any displayed notification from the screen, allowing the display to return to its normal state or view.
**Usage:**
This service is essential after displaying notifications or alerts.
It ensures the user interface remains clean and uncluttered by clearing messages once they are no longer needed or have been acknowledged.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_notification_clear
```
> [!NOTE]
> Replace `<your_panel_name>` with the specific name of your panel configured in Home Assistant to ensure the service executes correctly.
This simple action clears the current notification from the display, maintaining a tidy interface.
### Notification Show Service: `notification_show`
Displays a notification message on the screen, enabling dynamic presentation of information or alerts.
**Usage:**
Designed for scenarios requiring immediate feedback or notification on the display,
this service is suitable for showing alerts, informational messages, or updates directly on the screen interface.
**Parameters:**
- `label` (string): A brief title or label for the notification, typically displayed in a prominent, bold format.
- `message` (string): The detailed message or content of the notification, providing the main information or alert to the user.
The system will automatically wrap text to fit the display unless `\r` is used to insert manual line breaks. When `\r` is present,
the system respects only the line breaks provided by the user, enhancing message formatting control.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_notification_show
data:
label: "Security Alert"
message: "Front door opened at 10:30 PM\rPlease check the entrance."
```
> [!NOTE]
> Replace `<your_panel_name>` with the specific name of your panel configured in Home Assistant.
> The action ensures the service executes correctly, displaying the notification with the specified `label` and `message`.
>
> Utilize `\r` within the message for custom line breaks, offering precise formatting control.
### Alarm Settings Page Service: `page_alarm`
Populates the alarm settings page with the current configuration and state information,
seamlessly integrating with the panel's interface to reflect the latest settings and statuses of the alarm system.
**Usage:**
The `page_alarm` service is specifically designed to dynamically update the alarm settings page, providing users with immediate access to the alarm system's controls and information.
It plays a crucial role in ensuring a responsive and user-friendly interface for alarm management, allowing for real-time interaction with the alarm system directly from the panel.
**Parameters:**
- `page_title` (string): The title displayed at the top of the alarm settings page.
- `state` (string): The current state of the alarm system, such as "armed_home" or "disarmed".
- `supported_features` (int): A bitmask indicating the features supported by the alarm system.
This determines the controls and options available on the alarm settings page.
The bitmask values are aligned with the
[Home Assistant Alarm Control Panel Supported Features](https://github.com/home-assistant/core/blob/33ff6b5b6ee3d92f4bb8deb9594d67748ea23d7c/homeassistant/components/alarm_control_panel/const.py#L32).
- `code_format` (string): Specifies the code format required for arming/disarming the alarm system, such as numeric or alphanumeric.
- `code_arm_required` (bool): Indicates whether a code is required to arm the system.
- `entity` (string): The entity ID of the alarm system, used for state updates and control actions.
- `mui_alarm` (string[]): An array of localized text strings for the alarm control buttons, supporting various alarm states and actions.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_page_alarm
data:
page_title: "Home Security System"
state: "disarmed"
supported_features: 31 # Example: Supports arm/disarm, home/away modes, etc.
code_format: "number"
code_arm_required: true
entity: "alarm_control_panel.home_alarm"
mui_alarm:
- "Zuhause"
- "Abwesend"
- "Nacht"
- "Urlaub"
- "Umgehen"
- "Entwaffnen"
```
> [!NOTE]
> Ensure to replace `<your_panel_name>` with the actual name of your panel configured in Home Assistant.
> This service configuration allows for the alarm settings page to dynamically reflect the current features, state, and control options of your alarm system, enhancing the overall user experience.
### Climate Page Service: `page_climate`
Updates the climate page with the current state information, seamlessly integrating with the panel's interface to display the latest climate settings and statuses.
**Usage:**
Designed to dynamically update the climate page, this service ensures users have instant access to climate control settings and information.
It's crucial for maintaining a responsive and informative interface for efficient climate management.
**Parameters:**
- `current_temp` (float): The current temperature.
- `supported_features` (int): Bitmask indicating the climate device's supported features.
These features determine the available climate controls and settings on the device.
The bitmask values correspond to features such as temperature control, mode setting, fan speed adjustment, etc., as defined in Home Assistant's climate component constants.
For detailed descriptions of each feature and its corresponding bitmask value, refer to the
[Home Assistant Climate Component Constants](https://github.com/home-assistant/core/blob/33ff6b5b6ee3d92f4bb8deb9594d67748ea23d7c/homeassistant/components/climate/const.py#L156C7-L156C27).
- `target_temp` (float): The set target temperature.
- `target_temp_high` (float): The high end of the target temperature range, for devices that support temperature ranges.
- `target_temp_low` (float): The low end of the target temperature range.
- `temp_step` (int): Increment step for temperature adjustment, effectively the granularity of temperature change allowed.
- `total_steps` (int): Total number of steps for temperature adjustment, calculated as ((temp_max - temp_min) / temp_step).
- `temp_offset` (int): Offset applied to the temperature reading for calibration.
- `climate_icon` (string): Icon representing the current climate status,
selected from [HASwitchPlate Material Design Icons](https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html).
- `embedded_climate` (bool): Flag indicating if climate controls are embedded within the interface.
- `entity` (string): Entity ID for the climate device.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_page_climate
data:
current_temp: 22.5
supported_features: 1 | 4 # Assuming '1' is for temperature control and '4' is for fan mode, as an example.
target_temp: 24.0
target_temp_high: 25.0
target_temp_low: 19.0
temp_step: 5 # Adjust in 0.5°C increments.
total_steps: 56 # Calculated based on the device's temperature range and step.
temp_offset: 70 # Applied as a calibration offset.
climate_icon: "\uE392" # mdi:thermostat
embedded_climate: true
entity: "climate.living_room"
```
> [!NOTE]
> Replace `<your_panel_name>` with the specific name of your panel configured in Home Assistant.
> This service ensures the climate page reflects the latest in climate control settings, enhancing the user experience by providing up-to-date information.
### Media Player Page Service: `page_media_player`
Updates the media player page with current configuration and state information,
integrating seamlessly with the panel's interface to display the latest media playback status and controls.
**Usage:**
The `page_media_player` service is specifically tailored to dynamically update the media player page, ensuring users have immediate access to media playback controls and information.
This service is essential for providing a responsive and user-friendly interface for media management, allowing real-time interaction with the media player directly from the panel.
**Parameters:**
- `entity` (string): The entity ID of the media player.
- `state` (string): The current state of the media player (e.g., playing, paused, stopped).
- `is_volume_muted` (bool): Indicates whether the volume is currently muted.
- `friendly_name` (string): The friendly name of the media player to be displayed as the page title.
- `volume_level` (int): The current volume level of the media player.
- `media_title` (string): The title of the currently playing media.
- `media_artist` (string): The artist of the currently playing media.
- `media_duration` (float): The total duration of the currently playing media in seconds.
- `media_position` (float): The current playback position within the media in seconds.
- `media_position_delta` (float): The amount of time in seconds since the last update of the media position.
- `supported_features` (int): A bitmask indicating the features supported by the media player, such as play/pause, next/previous track, volume control, etc.
The bitmask values correspond to the
[Home Assistant Media Player Supported Features](https://github.com/home-assistant/core/blob/33ff6b5b6ee3d92f4bb8deb9594d67748ea23d7c/homeassistant/components/media_player/const.py#L177).
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_page_media_player
data:
entity: "media_player.living_room"
state: "playing"
is_volume_muted: false
friendly_name: "Living Room Player"
volume_level: 40
media_title: "Favorite Song"
media_artist: "Famous Artist"
media_duration: 180
media_position: 30
media_position_delta: 0.5
supported_features: 84 # Example: Play, Pause, Next, Previous
```
> [!NOTE]
> Replace `<your_panel_name>` with the specific name of your panel configured in Home Assistant.
> This service ensures the media player page reflects the latest in media playback settings and status, enhancing the user experience by providing up-to-date information.
### QR Code Service: `qrcode`
Displays a QR code on the display, which can be used for various purposes such as sharing a WiFi password or linking to a website.
**Usage:**
This service enables the dynamic display of QR codes on a specified page of the ESPHome user interface, allowing for the convenient sharing of information.
It's particularly useful for settings where quick, scannable access to data is beneficial.
**Parameters:**
- `title` (string): The title or heading to display above the QR code, providing context or instructions.
- `qrcode` (string): The actual data or URL to be encoded into the QR code.
- `show` (bool): A flag that determines whether to immediately display the QR code page upon calling the service.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_qrcode
data:
title: "Wi-Fi Access"
qrcode: "WIFI:T:WPA;S:mynetwork;P:mypass;;"
show: true
```
<!-- markdownlint-disable MD028 -->
> [!NOTE]
> Replace `<your_panel_name>` with the specific name of your panel configured in Home Assistant.
> This service will generate and display the QR code based on the provided data, navigating to the QR code page if `show` is set to `true`.
> [!NOTE]
> This service is typically invoked during initialization to preload QR Code information based on blueprint settings,
> ensuring the data is accessible on the panel even without Wi-Fi connectivity.
> To update the QR Code information without immediately displaying it, call this service with `show: false`.
> This allows for seamless updates to the QR Code content without disrupting the current user interface.
<!-- markdownlint-enable MD028 -->
### RTTTL Play Service: `rtttl_play`
Plays melodies encoded in the RTTTL format, enabling the integration of audio feedback or alerts with simple text-based melody strings.
**Usage:**
This service is perfect for projects requiring audio signals, such as notifications, alerts, or simple melodies, by interpreting RTTTL (Ring Tone Text Transfer Language) strings.
RTTTL is a compact format for storing melody sequences in a text-based format, making it ideal for simple audio devices like buzzers.
**Parameters:**
- `tone` (string): The RTTTL string representing the melody to be played.
This string must conform to the RTTTL format, which includes the melody's name, default settings, and a sequence of notes.
**Example Tones:**
For example tones and further inspiration, you can visit examples of RTTTL songs [here](https://codebender.cc/sketch:109888#RTTTL%20Songs.ino).
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_rtttl_play
data:
tone: "The Simpsons:d=4,o=5,b=160:c.6,e6,f#6,8a6,g.6,e6,c6,8a,8f#,8f#,8f#,2g,8p,8p,8f#,8f#,8f#,8g,a#.,8c6,8c6,8c6,c6"
```
> [!NOTE]
> Replace `<your_panel_name>` with your specific panel name as configured in Home Assistant to ensure correct service execution.
>
> Ensure the `tone` parameter contains a valid RTTTL string to successfully play the melody.
### TFT File Update Service: `upload_tft`
Enables the remote update of the panel's TFT file from a specified URL or a default location, available exclusively with the "Upload TFT" add-on installed.
This service is valuable for downloading alternative TFT files for customization or addressing file access issues.
**Usage:**
This service is crucial for dynamically updating the TFT file, facilitating seamless transitions between different configurations or updates.
It's particularly useful for applying custom interface designs or updates when direct access to the repository is limited.
**Parameters:**
- `url` (string): The URL for downloading the TFT file.
If set to "default", it utilizes the URL from the "**Update TFT - Display Model**" selection in Home Assistant (**Settings** > **Devices & Services** > **ESPHome**).
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_upload_tft
data:
url: "http://homeassistant.local:8123/local/custom_tft_file.tft" # URL to the new TFT file
```
<!-- markdownlint-disable MD028 -->
> [!NOTE]
> Replace `<your_panel_name>` with your specific panel name as configured in Home Assistant.
> Using "default" fetches the URL associated with the selected display model in Home Assistant settings, simplifying updates or customizations.
> [!ATTENTION]
> The "Upload TFT" add-on must be installed for this service to be available, enhancing the panel's flexibility for interface customization or troubleshooting.
<!-- markdownlint-enable MD028 -->
### Value Service: `value`
Updates an entity to display specific values, allowing for dynamic updates of icons, names, and value colors within Home Assistant.
**Usage:**
This service is intended for entities that need to display information dynamically, such as sensor readings or state values, with customized icons, names, and color coding for both icon and value.
**Parameters:**
- `id` (string): Identifier of the entity being updated. For details on entity identifiers, refer to "[Screen components](#screen-components)".
- `icon` (string): Icon codepoint from [HASwitchPlate Material Design Icons](https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html).
Indicates the icon displayed next to the value.
- `icon_color` (int[]): RGB color array for the icon, allowing for custom icon colors.
- `name` (string): The display name for the entity, useful for labeling the value displayed.
- `value` (string): The actual value to be displayed next to the icon and name.
- `value_color` (int[]): RGB color array for the value text, enabling custom coloring of the displayed value.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_value
data:
id: "sensor.temperature"
icon: "\uE6E8" # Example for mdi:thermometer
icon_color: [255, 0, 0] # Red
name: "Temperature"
value: "75°F"
value_color: [255, 255, 0] # Yellow
```
> [!NOTE]
> Replace `<your_panel_name>` with your specific panel name as configured in Home Assistant to ensure correct service execution.
### Wake Up Service: `wake_up`
Activates the display from a screensaver or low-power state, enabling dynamic interface adjustments based on user interactions or automated triggers.
**Usage:**
Ideal for scenarios requiring the display to become active upon certain events, such as motion detection, thereby conserving energy while ensuring the display is available when needed.
**Parameters:**
- `reset_timer` (bool): Determines whether to reset the sleep and dimming timers upon waking up the display.
Setting this to `true` ensures the display remains active during user presence, while `false` retains the existing timer durations.
**Home Assistant Example:**
```yaml
service: esphome.<your_panel_name>_wake_up
data:
reset_timer: true
```
> [!NOTE]
> Replace `<your_panel_name>` with the specific name of your panel configured in Home Assistant.
> This action ensures the service is executed correctly, waking the display and optionally resetting timers based on the reset_timer parameter.
**Practical Use Case: Motion Sensor Activation:**
This service can be seamlessly integrated with a motion sensor to wake the display when motion is detected, making it instantly usable.
Additionally, if the display is already awake, calling this service with `reset_timer: true` can reset the sleep timer,
keeping the display active as long as there is movement and allowing it to sleep normally once no motion is detected.
The example bellow integrates the `wake_up` service with a motion sensor to ensure the display wakes or remains awake during periods of activity, reverting to sleep mode after inactivity.
```yaml
automation:
- alias: "Wake Display on Motion"
trigger:
- platform: state
entity_id: binary_sensor.motion_sensor_123
to: 'on'
action:
- service: esphome.<your_panel_name>_wake_up
data:
reset_timer: true
mode: restart
```
> [!NOTE]
> Adjust `<your_panel_name>` and `binary_sensor.motion_sensor_123` to your actual panel and sensor entity IDs.
> This setup ensures the display is responsive to environmental conditions, enhancing user interaction while managing energy consumption efficiently.
## Screen components
### Home Page - Chips
![Image](pics/Nextion_Components_Home_Chips_EU.png)
![Image](pics/Nextion_Components_Home_Chips_US.png)
#### User-defined Chips
- **Description**: Chips are icons that are shown in specific situations or hidden. Their behaviour is controlled by the blueprint.
- **Type**: Icon only with no touch commands.
- **Availability**: Global (available even when page is not visible).
- **Ids**: `home.chip01` to `home.chip07`.
#### Relays Chips
- **Description**: Icons representing each of the relays states.
- **Type**: Icon only with no touch commands.
- **Availability**: Global (available even when page is not visible).
- **Ids**: `home.chip_relay1` and `home.chip_relay2`.
#### Climate Chip
- **Description**: Icon representing the state of the main climate entity.
- **Type**: Icon only with no touch commands.
- **Availability**: Global (available even when page is not visible).
- **Ids**: `home.chip_relay1` and `home.chip_relay2`.
### Home Page - Custom buttons
![Image](pics/Nextion_Components_Home_Custom_Buttons_EU.png)
![Image](pics/Nextion_Components_Home_Custom_Buttons_US.png)
### Home Page - Values
![Image](pics/Nextion_Components_Home_Values_EU.png)
![Image](pics/Nextion_Components_Home_Values_US.png)
This is a multi-component system, with names `value01` to `value03` containing the state of the entity,
where `value01_icon` to `value03_icon` supports the icons.
### Entities Pages - Values
Just like in "[Home Page - Values](#home-page---values)", this is a multi-component system, with names `value01` to `value08` containing the state of the entity,
where `value01_icon` to `value08_icon` supports the icons and, exclusivelly in the Entities pages, `value01_label` to `value08_label`,
which will contain the friendly name or some alternative label for the entities.
Each to these sets are sent using the [Value Service (`value`)](#value-service-value), with up to 8 individual calls to this service for each page construction.

238
docs/blueprint.md Normal file
View File

@@ -0,0 +1,238 @@
# Blueprint Automation
This article covers the settings in the Blueprint Automation.
The Blueprint Automation is the central configuration element of this solution for the NSPanel.
In principle, the setup of the automation is self-explanatory.
The individual elements of the Blueprint are described below.
It is possible to change both the color of the labels and the icons for most of the elements on each screen.
On the blueprint settings, you will be able to select any of the MDI icons supported by Home Assistant, however, your panel will only support the icons available on the [HASwitchPlate Material Design Icons](https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html).
For an easier overview, the menu items "Icon Color" and "Label Color" will not be described separately in the following documentation.
## Basic settings
### NSPanel device (REQUIRED)
You will be presented with a list of all of your ESPHome ESP32 devices and you must select your panel from the list.
This is technically the only required field, as basic functionality will be available when the Blueprint knows to which panel it has to send the settings.
> [!NOTE]
> You cannot have more than one blueprint based automation per each panel
### Language for NSPanel
The language can be selected via the drop-down menu.
Currently around 30 languages are supported, but if you cannot find your language there,
please create a [new feature request](https://github.com/Blackymas/NSPanel_HA_Blueprint/issues/new) and we will be happy to help.
### Date format
Select how you want to see the date displayed on your panel (Home page and weather pages are affected).
### Time format
Select how you want to see the time displayed on your panel's Home page.
### Timezone
Select the timezone for this panel. Default (nothing) sets the timezone of the machine the firmware was compiled on. Important to set for prebuilt firmware.
## Weather and Temperature
### Weather entity from HA
Select a Weather entity to use.
Most of the weather integrations are supported, however some may be able to provide more information than others.
We run all of our tests with "Accuweather", so the parameters shown on the panel are targetting this integration and will be shown with your integration when available.
### Outdoor temperature Sensor (Optional)
Optionally, the value of an outdoor temperature sensor can be used here.
If no separate sensor is used, the value of the weather integration will be used.
### Indoor Temperature Sensor (Optional)
An indoor temperature sensor is not necessary.
Leave the field empty if you want to use the temperature sensor of the NSPanel.
If the value of the sensor needs to be corrected, this can be done via the temperature correction for the NSPanel under HA Devices.
## Home page - Entities States
| Entity | Description | Example |
| --- | --- | --- |
| Home page - Entity State 01-04 (Optional) | Up to four HA entities can be displayed on the home screen. | ![PXL_20240509_183412876](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/5879533/49fba8fb-ad1e-44e7-9958-99dd47e2ad95) |
| Home page - Chips 01-07 (optional) | Used to display icons of HA binary entities on the home screen. The icon is displayed then the entity is on/open/true/active. Otherwise, no icon is displayed. | ![chip](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/5879533/1c7e798f-bae8-4998-b35e-149689ced27f) |
| Custom button 01-06 (Optional) | 7 custom buttons that can be assigned to different entities from your Home Assistant. The behavior of these buttons will depend on the entity's domain (light, media player, etc). | ![192351376](https://github.com/Blackymas/NSPanel_HA_Blueprint/assets/5879533/be2f21e0-02eb-4b32-999f-e303df74f6b6) |
## Alarm Control Panel
An alarm control panel entity can be controlled by your panel.
When you assign the entity here, its icon will be shown as a button on the Home page.
## Climate
### Climate to Control (Optional)
Here you select the main climate entity controlled by your panel.
Its temperature will be used on the Home page and by clicking on that value you will be able to control the climate settings.
You can optionally use your panel to control a climate system locally, using its temperature sensor and relays.
You will find more details about this on the Add-on Climate documentation.
If you are using the climate add-on, it will create a climate entity in your panel's device page.
You still have to select that entity on this field in the blueprint settings to have it used as your main climate.
Additional climate entities can be assigned to buttons and will be explained later in this document.
On the blueprint settings, you will also find settings for sensors and custom buttons to be shown on all the climate pages.
## QR Code
### Activate QR Code (Optional)
Activates the QR Code page and shows the QR Code button on the Home page.
### QR Code content (Optional)
String, which is shown as a QR Code on the NSPanel.
This can be a simple text, an URL or could also be used for a simplified login to the Wi-Fi.
Here is an example (simply change SSID and password to your credentials and either use "WPA" or "WEP"):
`WIFI:S:SSID;T:WPA/WEP;P:PASSWORD;;`
#### Example:
For a network with the following parameters:
- **SSID:** my_ssid
- **Pass:** MySecurePa$$w0rd
- **Type:** WPA
Your QR code string will look like this:
`WIFI:S:my_ssid;T:WPA;P:MySecurePa$$w0rd;;`
For more details about these specifications, please visit the [WPA3™ Specification v3.1, chapter 7](https://www.wi-fi.org/system/files/WPA3%20Specification%20v3.1.pdf#page=24).
## Hardware Buttons
### Visibility Pages
Choose the pages where the bars, indicating the status of entities linked to hardware buttons, will be displayed.
### Activate Relay x local Fallback (Optional)
Normally, the internal relays of the NSPanels are triggered via HA.
If the NSPanel loses Wi-Fi connection or HA is down, the hardware button can then switch the corresponding relay directly.
### Left/Right Hardware Button - Entity (Optional)
The entity that should be switched with the left/right hardware button.
### Left/Right Hardware Button Name - Label (Optional)
Text on the screen above the corresponding hardware button (home screen).
### Left/Right Hardware Button hold assignment - VALUE (optional)
Selection of what action should happen when the button is pressed for a longer time.
### Left/Right Hardware Button custom hold action - VALUE (Optional)
Selection of the action to start when holding the button.
## Button Page 01-04
### Button Page 01-04 name - LABEL (Optional)
Text on the respective button screens.
### Buttons 01 - 32 (Optional)
The buttons can be accessed by swiping on the Home Screen and their functions are completely identical.
Either the individual button pages can be accessed one after the other by swiping to the left, or the button pages can be accessed directly by swiping up, down or to the right.
The buttons are numbered as follows:
#### EU and US landscape models:
| | Button Page 1 | Button Page 2 | Button Page 3 | Button Page 4 |
| :--: | :--: | :--: | :--: | :--: |
| Row 1 | 01 02 03 04 | 09 10 11 12 | 17 18 19 20 | 25 26 27 28 |
| Row 2 | 05 06 07 08 | 13 14 15 16 | 21 22 23 24 | 29 30 31 32 |
#### US model:
| | Button Page 1 | Button Page 2 | Button Page 3 | Button Page 4 |
| :--: | :--: | :--: | :--: | :--: |
| Row 1 | 01 &nbsp;&nbsp;&nbsp; 02 | 09 &nbsp;&nbsp;&nbsp; 10 | 17 &nbsp;&nbsp;&nbsp; 18 | 25 &nbsp;&nbsp;&nbsp; 26 |
| Row 2 | 03 &nbsp;&nbsp;&nbsp; 04 | 11 &nbsp;&nbsp;&nbsp; 12 | 19 &nbsp;&nbsp;&nbsp; 20 | 27 &nbsp;&nbsp;&nbsp; 28 |
| Row 3 | 05 &nbsp;&nbsp;&nbsp; 06 | 13 &nbsp;&nbsp;&nbsp; 14 | 21 &nbsp;&nbsp;&nbsp; 22 | 29 &nbsp;&nbsp;&nbsp; 30 |
| Row 4 | 07 &nbsp;&nbsp;&nbsp; 08 | 15 &nbsp;&nbsp;&nbsp; 16 | 23 &nbsp;&nbsp;&nbsp; 24 | 31 &nbsp;&nbsp;&nbsp; 32 |
When the respective button is pressed, a toggle action is executed or the corresponding page is automatically opened, e.g.
the cover control for covers, etc.
For 2 state buttons (where toggle is the default action), a long press in the button will open it's corresponding page, when supported.
For each button an own name can be specified optionally.
All buttons offer the possibility to optionally confirm the execution of the action.
This can be activated or deactivated separately for each button via *"Confirm execution of the button press"*.
## Entity Page 01-04
### Activate Entity Page (Optional)
This option activates the entity pages on the Home Screen.
The entity pages can be used for example to display values or statuses of entities on the individual pages.
### Entity Page 01-04 name - LABEL (Optional)
Naming of the corresponding Entity Screens.
### Entity 01 - 32 (Optional)
The entity pages can be accessed by pressing the symbol on the Home Screen and their functions are completely identical.
The entities are numbered as follows:
| Entity page | Entities shown |
| :--: | :--: |
| 1 | 01 to 08 |
| 2 | 09 to 16 |
| 3 | 17 to 24 |
| 4 | 25 to 32 |
Additionally there is the possibility to choose an icon of your choice for the Entities button on the Home page.
Of course there is also the possibility to enter a label for each of the 4 pages and the aligment for the values on the entities pages.
## Advanced Settings
### System settings - Decimal Separator
Choose the decimal separator for displaying numbers.
### Delay to avoid synchronization problems
If the Wi-Fi signal is poor, you may have issues when loading some pages.
If this happens, try to increase this delay as that may help.
### Nextion TFT File Folder (Optional)
Specify the path to the folder containing the Nextion TFT file. This is to be used together with the option nextion_upload_tft on the "Update TFT Display - Model" option on the device's page.
## Example Screenshots
![Blueprint 01](pics/ha_blueprint_01.png)
![Blueprint 02](pics/ha_blueprint_02.png)
![Blueprint 03](pics/ha_blueprint_03.png)
![Blueprint 04](pics/ha_blueprint_04.png)
![Blueprint 05](pics/ha_blueprint_05.png)

750
docs/customization.md Normal file
View File

@@ -0,0 +1,750 @@
# Customization
Table of contents:
- [Description](#description)
- [Instructions](#instructions)
- [Memory Management](#memory-management)
- [Removing Standard Settings](#removing-standard-settings)
- [Examples](#examples)
- [API encryption](#api-encryption)
- [Custom OTA password](#custom-ota-password)
- [Web server credentials](#web-server-credentials)
- [Reboot when API fails](#reboot-when-api-fails)
- [Manual IP](#manual-ip)
- [Hidden Wi-Fi](#hidden-wi-fi)
- [Connect to multiple networks](#connect-to-multiple-networks)
- [SNTP (time) server](#sntp-time-server)
- [Sensor for display awake vs sleeping](#sensor-for-display-awake-vs-sleeping)
- [Deep sleep](#deep-sleep)
- [Enforce time zone](#enforce-time-zone)
- [Compiling ESPHome on lower powered machines](#compiling-esphome-on-lower-powered-machines)
- [Sleep & Wake-up buttons](#sleep--wake-up-buttons)
- [Set display as a light](#set-display-as-a-light)
- [Scheduled actions](#scheduled-actions)
- [Scheduled relay](#scheduled-relay)
- [Scheduled climate](#scheduled-climate)
- [Frameworks](#frameworks)
- [Framework `arduino`](#framework-arduino)
- [Framework `esp-idf`](#framework-esp-idf)
- [Bluetooth proxy](#bluetooth-proxy)
- [BLE tracker](#ble-tracker)
- [Logger via UART](#logger-via-uart)
- [Climate custom presets](#climate-custom-presets)
- [Push button / Momentary switch](#push-button--momentary-switch)
- [Expose relay fallback switch](#expose-relay-fallback-switch)
- [Relay Interlocking](#relay-interlocking)
- [Remove non-essential components](#remove-non-essential-components)
&nbsp;
&nbsp;
## Description
This project adds lots of functionalities to your NSPanel and we are constantly adding new features based on user's feedback.
However, you might have some specific case that are not included on the current implementation or is not a common case for other users.
You can take advantage of [ESPHome Configuration Types](https://esphome.io/guides/configuration-types.html) to add your custom functionality
or even to customize an existing functionality with minimum effort and this document intents to clarify how to use this and give some examples of customization.
Please feel free to add your own customation to this document by creating a PR in the `dev` branch.
***IMPORTANT:***
- *Use customization at your own risk. Custom/advanced systems won't be supported by this project's team.*
- *Please monitor the memory consumption when using customizations. Getting closer to the full memory can drive to errors in the system or prevent your system to support the future updates.*
&nbsp;
## Instructions
There's nothing particular for this project, so you can just use any of the [ESPHome Configuration Types](https://esphome.io/guides/configuration-types.html)
and only edit your local ESPHome yaml settings.
Most of the ESPHome components in this project contains an `Id`, which can be used together with the `!extend` key to add or replace existing code.
You should add your customizations at the end of your ESPHome yaml, as in the example bellow:
```yaml
substitutions:
# Settings - Editable values
device_name: "YOUR_NSPANEL_NAME"
friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
# Add-on configuration (if needed)
## Add-on climate
# heater_relay: "1" # Possible values: "1" or "2"
# Customization area
##### My customization - Start #####
# Encrypt the communication between ESPHome and Home Assistant
api:
encryption:
key: !secret api_encryption_key
# More detailed log (for troubleshooting only)
logger:
level: VERBOSE
##### My customization - End #####
# Basic and optional configurations
packages:
remote_package:
url: https://github.com/Blackymas/NSPanel_HA_Blueprint
ref: main
refresh: 300s
files:
- nspanel_esphome.yaml # Basic package
# Optional advanced and add-on configurations
# - esphome/nspanel_esphome_advanced.yaml
# - esphome/nspanel_esphome_addon_ble_tracker.yaml
# - esphome/nspanel_esphome_addon_bluetooth_proxy.yaml
# - esphome/nspanel_esphome_addon_climate_cool.yaml
# - esphome/nspanel_esphome_addon_climate_heat.yaml
# - esphome/nspanel_esphome_addon_climate_dual.yaml
```
## Memory Management
When adding new components or code to your ESP32, it's important to be mindful of memory usage.
Your device has limited memory, and every addition uses some of this precious resource.
### Understanding Memory Usage
After compiling your firmware, you'll see a summary showing how much memory your firmware needs.
Here's what it might look like:
```log
Successfully created esp32 image.
Linking .pioenvs/office-workstation-panel/firmware.elf
RAM: [= ] 10.5% (used 34484 bytes from 327680 bytes)
Flash: [======= ] 67.5% (used 1239253 bytes from 1835008 bytes)
Building .pioenvs/office-workstation-panel/firmware.bin
Creating esp32 image...
Successfully created esp32 image.
```
- **Static Memory**: This is the memory required to load your firmware.
Running your firmware requires additional memory.
- **Dynamic Memory**: This is the memory allocated while your firmware is running.
ESPHome checks if your static memory usage exceeds your device's limits to prevent installation issues, but it doesn't check dynamic memory usage.
**Aim to keep static RAM usage below 20% and static Flash usage below 75%** to ensure there's enough room for dynamic operations.
### Risks of Exceeding Memory Limits
Exceeding memory limits can lead to issues:
- **During Compilation**: ESPHome might prevent firmware installation if static memory is too high.
- **During Runtime**: Exceeding dynamic memory can cause unexpected restarts.
- **During Startup**: If your device runs out of memory at startup, it may not load the firmware, resulting in a black screen and an unresponsive device.
The solution is to use a serial cable to reflash your device with a lighter firmware.
### Tips for Managing Memory
- Be cautious when adding memory-intensive components like `bluetooth_proxy`.
- Compile your firmware with the option to download it before installation.
This lets you check static memory usage without risking wireless installation issues.
## Removing Standard Settings
You can use customizations to remove certain default components or settings from this project.
This is useful for altering standard settings or freeing up memory for additional components.
Here's how you might remove some default settings:
```yaml
# Removes the `captive_portal` component
captive_portal: !remove
# Removes the OTA password
ota:
password: !remove
```
> [!ATTENTION]
> Be aware of the implications before removing components or settings.
> Some of them are crucial for allowing your panel to interact correctly with the blueprint or for enabling ESPHome to install the firmware Over The Air.
> Incorrect removals could render your panel unusable, potentially requiring a reflash via a serial cable.
## Examples
### API encryption
> [!IMPORTANT]
> Changing the API encryption can break the connection to Home Assistant,
> requiring the device to be removed from integrations (**Settings** > **Devices & Services** > **ESPHome**) and then re-added.
This is highly recommended when you are transfer sensitive information between your panel and Home Assistant,
as when you use your panel to enter the PIN for an Alarm Control Panel.
```yaml
# Encrypt the communication between ESPHome and Home Assistant
api:
encryption:
key: !secret api_encryption_key
```
### Custom OTA password
By default, the Wi-Fi password will be used as your OTA password, but you can replace it.
First, you need to change the default password using this code.
```yaml
# change OTA password, remove after flashing
esphome:
on_boot:
- priority: 601.0
then:
- lambda: |-
id(my_ota).set_auth_password("New password");
ota:
password: !secret wifi_password
id: my_ota
```
After flashing the device, you must remove the code above and replace it with the code below to start using this customization.
```yaml
# Use my global OTA password
ota:
password: !secret ota_password
```
### Web server credentials
By default, the web server credentials are defined by this project using `admin` as `username` and your `Wi-Fi password` as `password`, but you can replace it using this customization:
```yaml
# Custom web server credentials
web_server:
auth:
username: !secret web_server_username
password: !secret web_server_password
```
### Reboot when API fails
Reboot your panel if it loses it's connection to Home Assistant for more than a certain time (15 minutes in this example).
Sometimes the low level ESP functions could report that the ESP is connected to the network, when in fact it is not and only a full reboot fixes it.
To support long times without Wi-Fi, this is disabled by default in this project, but you can set a reasonable interval to restart, based on your network reliability.
```yaml
# Reboot if HA is not connected for 15 minutes
api:
reboot_timeout: 15min
```
### Manual IP
Set IP address manually.
> [!ATTENTION]
> At least one DNS server is required to enable TFT transfer direcly from GitHub, otherwise use `nextion_update_url`.
```yaml
# Set IP address manually
wifi:
networks:
- id: !extend wifi_default
manual_ip:
static_ip: 192.168.0.123
gateway: 192.168.0.1
subnet: 255.255.255.0
dns1: 1.1.1.1 # At least one DNS server is required to enable TFT transfer direcly from GitHub, otherwise use `nextion_update_url`.
dns2: 8.8.8.8
```
### Hidden Wi-Fi
Connect to a hidden Wi-Fi network.
```yaml
# Connect to a hidden Wi-Fi network.
wifi:
networks:
- id: !extend wifi_default
hidden: true
fast_connect: true
```
### Connect to multiple networks
NSPanel will attempt to connect to the one with the highest signal strength or, if you set a priority, it will try to connect to the highest priority.
After failing it will connect to the second network.
```yaml
# Set dual network
wifi:
networks:
- id: !extend wifi_default
priority: 10
- ssid: !secret wifi_ssid_backup
password: !secret wifi_password_backup
priority: 0
```
### SNTP (time) server
ESPHome takes it's time from Home Assistant, however you can configure it to use a Network Time Server instead.
```yaml
# Use my own local network time server
time:
- id: !extend time_provider
platform: sntp
servers:
- !secret mysntpserver
- europe.pool.ntp.org
- 0.pool.ntp.org
```
### Sensor for display awake vs sleeping
Creates a binary sensor to indicate either when the display is showing some page (`on`) or sleeping (`off`).
```yaml
# Is display awake?
binary_sensor:
- name: Display state
id: display_state
platform: template
lambda: |-
return (current_page->state != "screensaver");
```
You can easily invert the meaning to have a sensor for display sleeping:
```yaml
# Is display sleeping?
binary_sensor:
- name: Display sleeping
id: display_sleeping
platform: template
lambda: |-
return (current_page->state == "screensaver");
```
### Deep sleep
In this example, the panel will deep sleep for 7 hours, starting at 23:00:00 every day, for its maximum energy saving.
During this time, nothing will be shown, the screen will be off and therefore no response to touch, and the panel will be disconnected from Wi-Fi,
but you can still wake-up the panel by pressing one of the hardware buttons (the left one in this example):
```yaml
# Define the wake-up button. Use pin 14 for left button or pin 27 for right button
deep_sleep:
wakeup_pin:
number: 14
allow_other_uses: true
wakeup_pin_mode: INVERT_WAKEUP
binary_sensor:
- id: !extend left_button
pin:
allow_other_uses: true
time:
- id: !extend time_provider
on_time:
- hours: 23
minutes: 0
seconds: 0
then:
- deep_sleep.enter:
sleep_duration: 7h
```
You can find more ideas around this on [#955](https://github.com/Blackymas/NSPanel_HA_Blueprint/issues/955).
### Enforce time zone
Until v3.4 (including), the time was coming from Home Assistant with it's timezone, so the Blueprint was sending the info with no transformation, to the panel.
From v4.0, the time reference still coming from HA (or optionally from a time server), but is calculated in ESPHome, which will try to detect the timezone from the server.
From v4.3.3 or later, the time still calculated on ESPHome side, however, you can select the timezone on the Blueprint, making this customization obsolete.
If your system is not showing the time in the correct timezone, it's probabily ESPHome not succeeding on finding your time zone.
You can easily force a timezone by adding this to your ESPHome settings:
```yaml
time:
- id: !extend time_provider
timezone: "America/Cancun"
```
### Compiling ESPHome on lower powered machines
For systems with lower CPU or memory capabilities, like an RPi 3 or systems with less than 2GB of RAM, this could help preventing errors caused by lack of resources when compiling ESPHome firmware.
More datails on the [ESPHome docs](https://esphome.io/changelog/2022.11.0.html#running-esphome-on-lower-powered-machines).
```yaml
# Limit the amount of resources used for compiling
esphome:
compile_process_limit: 1
```
### Sleep & Wake-up buttons
There are several ways to wake-up or put your panel to sleep, but in this example we tried a simple approach by adding two buttons (you can implement only one of those if you want):
```yaml
button:
# Adds a button to put the panel to sleep
- name: Sleep
id: force_sleep
platform: template
icon: mdi:sleep
on_press:
then:
- logger.log: Button Sleep pressed
- lambda: |-
goto_page->execute("screensaver");
# Adds a button to wake-up the panel (similar to the existing service)
- name: Wake-up
id: force_wake_up
platform: template
icon: mdi:alarm
on_press:
then:
- logger.log: Button Wake-up pressed
- lambda: |-
if (current_page->state == "screensaver") id(disp1).goto_page(id(wakeup_page_name).state.c_str());
// timer_page->execute(); // enable this if you want page timeout to be reset
timer_sleep->execute();
timer_dim->execute();
```
### Set display as a light
You can set your display as a light in Home Assistant, so you can control the brightness and turn on/off just like any other light,
and even use this in your automation to control when your panel is on with the same automation you use for your lights:
```yaml
light:
# Add the display as a light in Home Assistant
- name: Display
id: display_light
icon: mdi:tablet-dashboard
platform: monochromatic
output: display_output
default_transition_length: 0s
on_turn_on:
then:
- lambda: |-
ESP_LOGD("light.display_light", "Turn-on");
if (current_page->state == "screensaver") disp1->goto_page(wakeup_page_name->state.c_str());
timer_reset_all->execute();
on_turn_off:
then:
- lambda: |-
ESP_LOGD("light.display_light", "Turn-off");
goto_page->execute("screensaver");
output:
# Output required by `display_light` to send the commands to Nextion
- id: display_output
platform: template
type: float
write_action:
- lambda: |-
ESP_LOGV("output.display_output", "state: %f", state);
uint8_t current_brightness = int(round(display_light->current_values.is_on() ? (display_light->current_values.get_brightness() * 100.0f) : 0.0));
ESP_LOGV("output.display_output", "current_brightness: %i%%", current_brightness);
set_brightness->execute(current_brightness);
script:
# Updates the existing `page_changed` script to update the `display_light` status when a page changes
- id: !extend page_changed
then:
- lambda: |-
ESP_LOGD("script.page_changed(custom)", "page: %s", current_page->state.c_str());
ESP_LOGV("script.page_changed(custom)", "is_on(): %s", display_light->current_values.is_on() ? "True" : "False");
if (current_page->state == "screensaver" and display_light->current_values.is_on()) {
auto call = display_light->turn_off();
call.perform();
} else if (current_page->state != "screensaver" and (not display_light->current_values.is_on())) {
auto call = display_light->turn_on();
call.perform();
}
# Updates the existing `set_brightness` script to update the `display_light` status when a new brightness level is set
- id: !extend set_brightness
then:
- lambda: |-
ESP_LOGD("script.set_brightness(custom)", "brightness: %.0f%%", brightness);
uint8_t current_light_brightness = int(round(display_light->current_values.is_on() ? (display_light->current_values.get_brightness() * 100.0f) : 0.0));
ESP_LOGV("script.set_brightness(custom)", "current_light_brightness: %i%%", current_light_brightness);
if (brightness != current_light_brightness) {
if (current_page->state != "screensaver" and brightness > 0) {
auto call = display_light->turn_on();
call.set_brightness(static_cast<float>(current_brightness->state) / 100.0f);
call.perform();
} else if (display_light->current_values.is_on()) {
auto call = display_light->turn_off();
call.set_brightness(0);
call.perform();
}
}
```
### Scheduled actions
Although ESPHome doesn't have a Scheduler component, it is possible to use the timer to schedule actions and this is entirely managed in the device,
so it will work even if Home Assistant and/or the Wi-Fi are unavailable.
Following some examples:
#### Scheduled relay
```yaml
# Scheduled relay
time:
- id: !extend time_provider
on_time:
- hours: 7
minutes: 30
seconds: 0
then:
- switch.turn_on: relay_1
- hours: 12
minutes: 15
seconds: 0
then:
- switch.turn_off: relay_1
- hours: 19
minutes: 0
seconds: 0
then:
- switch.turn_on: relay_1
- hours: 23
minutes: 30
seconds: 0
then:
- switch.turn_off: relay_1
```
#### Scheduled climate
> [!NOTE]
> This requires add-on climate to be installed
```yaml
# Scheduled climate
time:
- id: !extend time_provider
on_time:
- hours: 7
minutes: 0
seconds: 0
then:
- climate.control:
id: thermostat_embedded
mode: auto
target_temperature: 22°C
- hours: 19
minutes: 0
seconds: 0
then:
- climate.control:
id: thermostat_embedded
mode: auto
target_temperature: 20°C
- hours: 23
minutes: 0
seconds: 0
then:
- climate.control:
id: thermostat_embedded
mode: auto
target_temperature: 18°C
```
### Frameworks
> [!IMPORTANT]
> When switching between frameworks, make sure to update the device with a serial cable as the partition table is different between the two frameworks
as [OTA Update Component](https://esphome.io/components/ota) updates will not change the partition table. While it will appear to work, the device will boot the old framework after a reset.
This project currently uses `esp-idf` as default framework.
You can overlap the settings with this customization.
> [!NOTE]
> For more info about frameworks, please visit [ESPHome docs](https://esphome.io/components/esp32).
`esp-idf` is maintained by EspressIF and is kept updated,
more boards are supported and the memory management is better, making it ideal if you wanna customize your panel to support memory consumption functionalities,
like `bluetooth_proxy` or [Improv](https://www.improv-wifi.com/). Consequently, this project uses `esp-idf` as the default framework since `v4.3`.
However, the `arduino` protocol still very popular and, therefore, more components are available and the project allows to switch between the frameworks
by adding the following lines in your panel's yaml file.
#### Framework `arduino`
```yaml
# Change framework to `arduino`
esp32:
framework:
type: arduino
```
#### Framework `esp-idf`
```yaml
# Change framework to `esp-idf`
# (should not be required)
esp32:
framework:
type: esp-idf
```
### Bluetooth Proxy
Please refer to the "[Add-on: Bluetooth Proxy](addon_bluetooth_proxy.md)" guide.
### BLE Tracker
Please refer to the "[Add-on: BLE Tracker Proxy](addon_ble_tracker.md)" guide.
### Logger via UART
By default, the logging via hardware UART is disable in this project.
You can enable it by setting the baud rate accordingly to your interface:
```yaml
# Enable hardware UART serial logging
logger:
baud_rate: 115200
```
### Climate custom presets
```yaml
# Add custom presets to your climate (heat in this example)
climate:
- id: !extend thermostat_embedded
default_preset: "Home"
preset:
- name: "Off"
default_target_temperature_low: ${temp_min} ${temp_units}
mode: "off"
- name: Home
default_target_temperature_low: 21 ${temp_units}
mode: "heat"
- name: Away
default_target_temperature_low: 16.5 ${temp_units}
mode: "heat"
- name: Sleep
default_target_temperature_low: 17.5 ${temp_units}
mode: "heat"
```
### Push button / Momentary switch
You can set the physical relays to be `on` only while the hardware buttons are pressed, and then back to `off` when the buttons are released:
```yaml
binary_sensor:
# Left button custom action: Push button / Momentary switch - Relay 1
- id: !extend left_button
on_click:
then:
on_press:
then:
switch.turn_on: relay_1
on_release:
switch.turn_off: relay_1
# Right button custom action: Push button / Momentary switch - Relay 2
- id: !extend right_button
on_click:
then:
on_press:
then:
switch.turn_on: relay_2
on_release:
switch.turn_off: relay_2
```
### Expose Relay Fallback Switch
You can configure a local fallback relay to integrate with Home Assistant.
This is particularly useful for devices like WiFi-connected lights.
For instance, you can program it to cut the power to a connected light under certain conditions, directly via a switch.
#### Use Case
One application, as utilized by @tikismoke and detailed in [#1349](https://github.com/Blackymas/NSPanel_HA_Blueprint/issues/1349), is in response to fluctuating energy prices.
When the energy price is high, an automation can change the fallback mode to cut off the relay.
This ensures that the bulb does not consume energy in standby mode. However, it will still function normally with `light.toggle` from the blueprint in all other cases.
Local control is reinstated when the power price returns to normal.
On the next switch activation, the relay turns `on`, powering up the bulb.
Subsequent activations will trigger `light.toggle` from the blueprint, as this functionality is already embedded in the ESPHome YAML code.
> [!NOTE]
> In this scenario, the bulb must be set to turn `on` automatically when power is restored.
```yaml
# Expose relay local control switch to Home Assistant
switch:
- name: Relay 1 Local
platform: template
id: relay1_local
entity_category: config
internal: false
lambda: |-
return (id(relay_settings) & nspanel_ha_blueprint::RelaySettings::Relay1_Local);
turn_on_action:
- lambda: nspanel_ha_blueprint::update_bitwise_setting(id(relay_settings), true, RelaySettings::Relay1_Local);
on_turn_on:
- logger.log: "Relay 1 Local turned On!"
turn_off_action:
- lambda: nspanel_ha_blueprint::update_bitwise_setting(id(relay_settings), false, RelaySettings::Relay1_Local);
on_turn_off:
- logger.log: "Relay 1 Local turned Off!"
- name: Relay 2 Local
platform: template
id: relay2_local
entity_category: config
internal: false
lambda: return (id(relay_settings) & nspanel_ha_blueprint::RelaySettings::Relay2_Local);
turn_on_action:
- lambda: nspanel_ha_blueprint::update_bitwise_setting(id(relay_settings), true, RelaySettings::Relay2_Local);
on_turn_on:
- logger.log: "Relay 2 Local turned On!"
turn_off_action:
- lambda: nspanel_ha_blueprint::update_bitwise_setting(id(relay_settings), false, RelaySettings::Relay2_Local);
on_turn_off:
- logger.log: "Relay 2 Local turned Off!"
```
### Relay Interlocking
This is using ESPHome capability to prevents the two relays to be active at the same time, which could be useful in some cases,
like to control a cover like discussed in [#965](https://github.com/Blackymas/NSPanel_HA_Blueprint/issues/965).
> [!ATTENTION]
> There are some considerations about using software interlocking on the [ESPHome GPIO Switch documentation](https://esphome.io/components/switch/gpio.html#interlocking).
Please read that carefully to understand what this is doing.
```yaml
switch:
# Prevents the two relays to be on simultaneously
- id: !extend relay_1
interlock: [relay_1, relay_2]
interlock_wait_time: 500ms # Please adjust this accordingly
- id: !extend relay_2
interlock: [relay_1, relay_2]
interlock_wait_time: 500ms # Please adjust this accordingly
```
### Remove non-essential components
This can be useful to free-up memory, so other custom components could be used instead.
```yaml
# Removes captive portal
captive_portal: !remove
# Removes embedded web server
web_server: !remove
```
### Restart with 15s button press
This could be used to have an easy way to restart your panel locally in addition to the [reset pin in the bottom of your panel](pics/eu_reset_button.png).
```yaml
binary_sensor:
# Restarts the Nextion display after pressing and holding the left button for 15s
- id: !extend left_button
on_multi_click:
- timing:
- ON for at least 15.0s
invalid_cooldown: ${invalid_cooldown}
then: # Restart the display
- switch.turn_off: screen_power
- delay: 5s
- switch.turn_on: screen_power
- delay: 2s
- lambda: disp1->soft_reset();
- delay: 2s
- script.execute: setup_sequence
# Restarts ESPHome after pressing and holding the right button for 15s
- id: !extend right_button
on_multi_click:
- timing:
- ON for at least 15.0s
invalid_cooldown: ${invalid_cooldown}
then: # Restart the panel
- button.press: restart_nspanel
```

View File

@@ -1,3 +0,0 @@
## Attention
The manuals in Germany are not being updated. Please use the latest documents in English. Your browser translations can help if English is an issue for you.

View File

@@ -1,233 +0,0 @@
Dieser Artikel befasst sich mit den Einstellungen in der Blueprint Automatisierung.
Die Blueprint Automation ist das zentrale Konfigurationselement dieser Lösung für das NSPanel.&nbsp;
Im Prinzip ist die Einrichtung der Automatisierung selbsterklärend. Nachfolgend werden die einzelnen Elemente des Blueprints beschrieben.
Es ist möglich, sowohl die Farbe der Labels als auch der Icons für die meisten Elemente auf den einzelnen Screens zu verändern.
Standard für die Farbe ist "65535". Der gewünschten Nextion Farbcode kann unter ```https://nodtem66.github.io/nextion-hmi-color-convert/index.html herausgesucht werden.```
Die Icons unter folgendem Link können verwendet werden:
```https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html```
Es wird der Übersichtlichkeit halber in der folgenden Dokumentation nicht gesondert auf die Menüeinträge "Icon Color" und "Label Color" eingegangen.
&nbsp;
# Parameter
### ESPhome Node Name
Bezieht sich auf den ESPhome-Gerätenamen. **Zulässig sind die Zeichen "__",a-z, 0-9, jedoch keine Sonder- und Leerzeichen**. Dies ist eine Einschränkung seitens HA, da aus dem Device-Name des Blueprints die jeweiligen Entity_IDs generiert werden.
### Language for NSPanel
Über das Dropdown Menü kann die Sprache ausgewählt werden. Unterstützt werden derzeit 26 Sprachen.
### Delay to avoid synchronization problems
Es kann bei schlechtem WLAN Signal vorkommen, dass Menüs nicht komplett geladen werden. Sollte dies vorkommen, kann hier ein Delay in ms Schritten eingestellt werden, um dies zu kompensieren.
## Weather and Temperature
### Weather Integration
Auswahl zwischen der HA Weather Integration oder dem genaueren Accuweather.
### Weather entity from HA
Dropdown Menü zur Auswahl der zu verwendenden Weather Entität. Beispiel: Wenn in Punkt 7 "Accuweather" ausgewählt wird, so muss hier die Entität für Accuweather ausgewählt werden.
### Outdoor Temperature Sensor (Optional)
Optional kann hier der Wert eines Aussentemperatur Sensor verwendet werden. Falls kein separater Sensor verwendet wird, wird der Wert der Wetter-Integration verwendet.
### Outdoor Temperature Sensor - LABEL COLOR (Optional)
Hier kann die Farbe der Beschriftung des Labels geändert werden. Siehe Link oben im Artikel.
### Indoor Temperature Sensor (Optional)
Optional kann hier der Wert eines InnentemperaturSensor verwendet werden. Wird das Feld leer gelassen, wird der Temperatursensor des NSPanels verwendet. Zusätzlich ist unter HA Devices eine Temperaturkorrektur für den NSPanel-Sensor möglich.
## Sensor Home Page
### Sensor 01-03 - Entity (Optional)
Bis zu drei Sensoren können auf dem Home Screen dargestellt werden. Hierzu die HA Entität auswählen.
## Chips
### Chip 01-07 - Entity (Optional)
Zur Darstellung von HA Entities auf dem Home Screen. Kann verwendet werden um bspw. den Status eines bestimmten Schalters auf dem NSPanel darzustellen.
## Climate
### Climate to Control (Optional)
Wenn eine Climate Integration gesteuert werden soll, muss diese hier eingegeben werden. Erreichbar ist diese dann über die Temperatur auf dem Home Screen des NSPanels.
### Climate Control optimistic Mode (Optional)
Abhängig von der Klima Steuerung, kann für ein besseres Ansprechverhalten der Optimistic Mode verwendet werden. Die vorgenommenen Änderungen werden erst bei verlassen des Screens auf das Device übertragen.
### Hot Water Charge Button (Optional)
Optionaler Schalter um bspw. einen Boiler an- bzw. aus zu schalten.
## QR Code
### Activate QR Code - TRUE/FALSE (Optional)
Aktiviert die QR Code Page sowie den Button auf dem Home Screen.
### QR Code content - VALUE (optional)
String, der als QR Code dargestellt werden soll. Dies kann ein Text sein, eine URL oder beispielsweise auch für einen vereinfachten Login ins WiFi verwendet werden (hier einfach SSID und Password ersetzen sowie entweder "WPA" oder "WEP" verwenden):
```WIFI:S:SSID;T:WPA/WEP;P:PASSWORD;;```
## Hardware Buttons
### Delay for HW-Buttons hold in seconds - VALUE
Einstellung, wie lange ein Button gedrückt bleiben muss, um einen "hold" zu erkennen. Default: 1 Sekunde.
### Activate Relay x local Fallback (Optional)
Normalerweise werden die internen Relays über HA getriggert. Ist dieser Menüpunkt aktiviert, so wird das jeweilige Relays bei betätigen des Linken bzw. Rechten Hardware Buttons geschaltet, sollte HA offline sein.
### Left/Right Hardware Button - Entity (Optional)
Hier kann die Entitiy ausgewählt werden, welche mit dem linken/rechten Hardware Button geschaltet werden soll.
### Left/Right Hardware Button Name - Label (Optional)
Text auf dem Screen über dem jeweiligen Hardware Button (Home Screen)
### Left/Right Hardware Button hold assignment - VALUE (optional)
Auswahl, welche Action passieren soll, wenn der Button länger gedrückt bleibt.
### Left/Right Hardware Button custom hold action - VALUE (Optional)
Auswahl der zu startenden Action beim Halten des Buttons.
## Button Page 01-04
### Button Page 01-04 name - LABEL (Optional)
Text auf den jeweiligen Button Screens.
### Buttons 01 - 32 (Optional)
Die Buttons sind durch Wischen auf dem Home Screen zu erreichen und in ihrer Funktion völlig identisch.
Entweder können nacheinander die einzelnen Button Pages durch Wischen nach links erreicht werden, oder direkt auf die Button Pages durch Wischen nach oben, unten oder rechts angesprungen werden.
Die Buttons sind wie folgt nummeriert:
| | Button Page 1 | Button Page 2 | Button Page 3 | Button Page 4 |
| ------- | ------------- | ------------- | ------------- | ------------- |
| Zeile 1 | 01 02 03 04 | 09 10 11 12 | 17 18 19 20 | 25 26 27 28 |
| Zeile 2 | 05 06 07 08 | 13 14 15 16 | 21 22 23 24 | 29 30 31 32 |
Es können folgende Entitäten hinterlegt werden:
- Light
- Switch
- Cover
- Input Boolean
- Automation
- Button
- Input Button
- Scene
- Person
- Script
- Binary Sensor
- Fan
- Climate
Wenn der jeweilige Button gedrückt wird, wird automatisch die korrespondierende Seite aufgerufen, bspw. bei Cover die Coversteuerung etc.
Für jeden Button kann optional ein eigener Name angegeben werden.
Alle Buttons bieten die Möglichkeit, die Ausführung der Aktion optional bestätigen zu lassen. Dies kann separat für jeden Button über *"Confirm execution of the button press"* aktiviert bzw. deaktiviert werden.
## Entity Page 01-04
### Activate Entity Page - TRUE/FALSE (Optional)
Hiermit können die Entity Pages auf dem Home Screen aktiviert werden. Diese können verwendet werden, um bspw. Werte oder Status von Entitäten auf den einzelnen Pages darzustellen.
### Entity Page 01-04 name - LABEL (Optional)
Text auf den jeweiligen Entity Screens.
### Entity 01 - 32 (Optional)
Die Entity Pages sind durch drücken auf das Entity Symbol auf dem Home Screen zu erreichen und in ihrer Funktion völlig identisch.
Die Entities sind wie folgt nummeriert:
| | Entity Page 1 | Entity Page 2 | Entity Page 3 | Entity Page 4 |
| ------- | ------------- | ------------- | ------------- | ------------- |
| Zeile 1 | 01 02 03 04 | 09 10 11 12 | 17 18 19 20 | 25 26 27 28 |
| Zeile 2 | 05 06 07 08 | 13 14 15 16 | 21 22 23 24 | 29 30 31 32 |
Zusätzlich besteht die Möglichkeit, ein Icon für jede Entität aus derzeit 6896 Icons auszuwählen.
Natürlich gibt es auch die Möglichkeit, eine eigene Entitätsbezeichnung einzugeben und eine Bezeichnung für die 4 Seiten zu vergeben. Wenn kein Entity-Label gesetzt ist, wird der Friendly Name von HA übernommen.
Die derzeit verfügbaren Icons finden sich hier: https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html
Zum Einfügen des ausgewählten Icons auf das "U" des Icons klicken und in das jeweilige Feld im Blueprint einfügen. Es wird danach ein "komisches" Symbol im Blueprint angezeigt, dies ist jedoch korrekt.
## Custom Configuration
### Hot Water Temperatur Sensor (Optional)
Optionaler Heiß Wasser Sensor.
### Top 04 Flame
Zeigt ein Flammen-Symbol auf dem Home Screen an, bspw. wenn eine Therme angeschaltet (On) ist.
### Nextion TFT File Folder
Kann freigelassen werden. Wird aber benötigt, wenn eine eigene TFT Konfiguration verwendet werden soll.
### Synchronization of all all values (Optional)
Light und Cover Seiten (Werte) werden kontinuierlich upgedatet (kann zu Flackern führen).
### Synchronization of all all Sliders (Optional)
Light und Cover Seiten (Position der Cover) werden kontinuierlich upgedatet (kann zu Flackern führen).
***
Beispiel Screenshots:
![image-20230317162851693](./assets/image-20230317162851693.png)
![image-20230317162944247](./assets/image-20230317162944247.png)
![image-20230317163012105](./assets/image-20230317163012105.png)
![image-20230317163035519](./assets/image-20230317163035519.png)

View File

@@ -1,29 +0,0 @@
Es müssen verschiedene Dinge eingerichtet werden. Wenn diese nicht oder falsch eingerichtet sind, bleibt das NSPanel bei der Initialisierung stehen:<br>
![boot](https://user-images.githubusercontent.com/123868814/215597698-b89eb275-6c67-480a-a9d5-623ab17bee1b.png)
<br><br>
#### 1. Wurde ESPHome korrekt geflashed
Stellen Sie sicher, dass Sie die ESPHome-Konfiguration auf dem NSPanel installiert haben<br>
<br>
#### 2. ESPHome Name
Der Gerätename in ESPHome darf nur Kleinbuchstaben, Zahlen oder einen Unterstrich (\_) enthalten. Wenn Bindestriche (-) verwendet werden, kommt es zu Problemen.<br>
![Screenshot 2023-01-30 212555](https://user-images.githubusercontent.com/123868814/215598710-af41f2f6-7184-4469-9e45-a91504803722.png)<br>
<br>
#### 3. NSPanel zu HA hinzugefügt
Die ESPHome-Integration muss für jedes NSPanel im HA hinzugefügt werden:
![HAESPHomeIntegration](https://user-images.githubusercontent.com/123868814/215600125-a9e8cb72-17b3-4517-8132-bb3c5da5a50a.png)<br>
<br>
#### 4. Blueprint installiert und Automation aktiviert
Sicherstellen, dass der Blueprint installiert ist:<br>
[![Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.](https://my.home-assistant.io/badges/blueprint_import.svg)](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2FBlackymas%2FNSPanel_HA_Blueprint%2Fblob%2Fmain%2Fnspanel_blueprint.yaml)<br>
![Screenshot 2023-01-30 213511](https://user-images.githubusercontent.com/123868814/215600277-4c66bc36-91d5-40c9-9d81-21bd8be4b114.png)
Sicherstellen, dass eine Automatisierung für das NSPanel erstellt wurde und dass der **ESP Node Name** exakt dem Namen im ESPHome entspricht
![Screenshot 2023-01-30 214156](https://user-images.githubusercontent.com/123868814/215601843-bb5c31f7-6827-4c95-ac01-6b94e6dfdff4.png)
<br><br><br>
Sobald diese Schritte vorgenommen wurden, sollte sich das Display nach einem kurzen Delay verbinden.

View File

@@ -1,309 +0,0 @@
In diesem Beitrag werden wir alle wichtigen Dinge zu verschiedenen Themen zusammen tragen, die im Laufe der Zeit uns auffallen.&nbsp;
> ### _**HINWEIS! sollte dir bei der Konfiguration etwas auffallen oder du irgendein Problem hattest und es lösen konntest, wäre es für uns und alle anderen in der Community super, wenn du dein Wissen mit uns teilst. Dazu kannst du mir ein kurze Nachricht schreiben und ich nehme es in diesem Beitrag dann mit auf.**_
&nbsp;
> ### WICHTIG! Wenn du ein Problem bei der Einrichtung oder einer Funktion hast und ein _**"Issue auf Github"**_ eröffnest, beschreibe dein Problem bitte so genau wie möglich. Auch Bilder können hier helfen.
&nbsp;
> ### WICHTIG! Wenn du ein _**"Issue"**_ eröffnest, folge bitter der Anleitung sieh hier [Wie erstelle ich "Issues"](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte#1-wie-erstelle-ich-issues-wenn-ich-ein-problem-habe)
&nbsp;
&nbsp;
***
&nbsp;
# Inhalt:
1. [Wie erstelle ich "Issues" wenn ich ein Problem habe ](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte#1-wie-erstelle-ich-issues-wenn-ich-ein-problem-habe)
1. [Update Blueprint](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte#2-update-blueprint)
1. [Update ESPHome](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte#3-update-esphome)
1. [Update TFT](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte#4-update-tft)
1. Manueller TFT Upload über lokalen HA (in Arbeit)
1. Upload TFT Fehler und Lösung (in Arbeit)
1. [Notification via HA](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte#7-notification-via-ha)
1. [Climate für Relays](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte#8-climate-für-relays)
1. [Interne Switches als Lampe darstellen in HA](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte#9-interne-switches-als-lampe-darstellen-in-ha)
1. Schnell Navigation (in Arbeit)
1. [Bestimmte Seiten direkt aufrufen](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte#11-bestimmte-seiten-direkt-aufrufen)
1. [RTTTL Sound abspielen](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte#12-rtttl-sound-abspielen)
1. Erweiterte Funktionen und Automatisierungen (in Arbeit)
1. [Automationen starten via Input_Boolean](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte#14-automationen-starten-via-input_boolean)
&nbsp;
***
&nbsp;
## 1. Wie erstelle ich "Issues" wenn ich ein Problem habe
> _**Um dein Problem lösen zu können, ist es für uns wichtig so viele Informationen wie möglich zu haben**_
* Probleme können auf DE oder EN erstellt werden.
* Beschreibe dein Problem so genau wie möglich.
* Schreibe bitte deine ESPHome und Home Assistant Version
* gehe bitte auf deine Automation und dann auf die "3 Punkte" und danach auf _**Als YAML bearbeiten**_. Kopiere den kompletten Code und füge es dem Ticket bei
* Ein wichtiger "Helfer" beim lösen der Probleme ist der Trace einer Automation. Den Trace findest du unter _**Einstellungen --> Automatisierungen & Szenen --> deine NSPanel Automatisierung --> Traces (rechts oben)**_
> TRACES! Bitte führe erneut aus, was nicht funktioniert und öffne danach sofort den Trace. Oft muss auch nach dem Reboot der trace geöffnet werden. Im Boot werden die meisten Dinge geladen.
> WICHTIG! im Trace kannst du anhand der _**"Orangen"**_ Linien sehen welchen Weg die Automation gegangen ist. Bitte teile uns diesen Weg mit. Außerdem erstelle bitte davon ein oder mehrer Screenshots die du deinem Ticket hinzufügst. Besonders wichtig ist für uns wo die _**"Orangen"**_ Linie aufhört, denn meist ist dort auch das Problem
> WICHTIG! Wenn du den Trace geöffnet hast, gibt es ganz oben die _**"Zeitstempel"**_. Es ist wichtig das du den richtigen Zeitstempel auswählst.
### Beispiel Trace nach Reboot:
![Bildschirmfoto 2022-11-27 um 14 54 58](https://user-images.githubusercontent.com/41958506/204139082-70d3a8d1-1c82-43cb-88f2-573f2e276a48.png)
### Beispiel Automatisierungen Blueprint:
```
alias: YYXYYXYYX - NSPanel Configuration
description: ""
use_blueprint:
path: nspanel_configuration.yaml
input:
nspanel_name: nspanel_dev
language: DE
sync_value_ha: select_no
sync_slider_ha: select_no
weather: AccuWeather
accuweather: home_wetter
outdoortemp: sensor.terrasse_garage_motion_sensor_temperature
humidity: sensor.kinderzimmer_lea_temperatur_sensor_humidity
hotwatertemp: sensor.hotwater_temp
hotwatercharge: switch.charge
heatingsystemflame: binary_sensor.flamestatus
climate: climate.nspanel_buro
left_button_entity: light.haustur_spot_2
right_button_entity: light.haustur_spot_1
entity01: light.buro_sideboard
entity01_name: Sideboard
entity02: cover.kuche_rollo
entity02_name: Küche Rollo
entity03: switch.buro_dart_beleuchtung
entity03_name: Dart Licht
delay: 2
right_button_name: Test 1
left_button_name: Test 2
```
------
## 2. Update Blueprint
>Derzeit bietet HA nicht die Möglichkeit, Blueprints direkt über das UI upzudaten. Dies muss manuell bspw. über den File Editor geschehen.
>WICHTIG! Um eine neue Version des NSPanels zu installieren, muss zwingend der Blueprint, ESPHome sowie das TFT upgedatet werden!
1. Letztes Release des Blueprints von Github aus dem Repository laden.
2. Das existierende YAML File "nspanel_blueprint.yaml" im Folder ***./config/blueprints/automation/Blackymas*** mit der neuen Version ersetzen.
3. Automationen neu laden oder Home Assistant neu starten.
4. Der neue Blueprint steht zur Verfügung. Bereits vorgenommene Einstellungen werden übernommen.
![BlueprintUpdate](./(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte.assets/BlueprintUpdate.PNG)
------
## 3. Update ESPHome
>WICHTIG! Um eine neue Version des NSPanels zu installieren, muss zwingend der Blueprint, ESPHome sowie das TFT upgedatet werden!
Zum ESPHome Update auf die ESPHome Integration gehen.
Dann die Konfiguration validieren:
![image-20230203111717731](./(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte.assets/image-20230203111717731.png)
Wenn die Validierung durchgelaufen ist, erscheint ein grünes Checkmark im oberen Bereich des Fensters. Danach auf "Install" klicken:
![image-20230203111838285](./(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte.assets/image-20230203111838285.png)
Ein neues Fenster öffnet sich, hier die gewünschte Verbindung zum Panel auswählen:
![image-20230203111919475](./(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte.assets/image-20230203111919475.png)
Danach startet der Installationsvorgang. Dies kann ein paar Minuten in Anspruch nehmen:
![image-20230203112632305](./(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte.assets/image-20230203112632305.png)
------
## 4. Update TFT
>WICHTIG! Um eine neue Version des NSPanels zu installieren, muss zwingend der Blueprint, ESPHome sowie das TFT upgedatet werden!
Das Update des Displays kann über das UI erfolgen:
1. Im Menü ***Einstellungen --> Geräte & Services --> Integrationen*** unter der ESPHome Integration das Display auswählen.
2. Unter Configuration den Switch "Update TFT Display" drücken.
3. Das Display beginnt den Update Prozess und startet anschließend neu.
![DisplayUpdate](./(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte.assets/DisplayUpdate.PNG)
------
## 5. Manueller TFT Upload über lokalen HA
In Arbeit
------
## 6. Upload TFT Fehler und Lösung
In Arbeit
------
## 7. Notification via HA
Um eine Notification auf dem NSPanel anzeigen zu lassen, kann folgender Service Call verwendet werden:
```
service: esphome.panelname_notification_show
data:
label: Example text
text: Example text
```
Um die Notifications auf dem Panel zu bestätigen, kann folgender Service Call verwendet werden:
```
service: esphome.panelname_notification_clear
data: {}
```
Die Notifications können einfach in eine Automation mit aufgenommen werden:
```
description: ""
mode: single
trigger:
- platform: state
entity_id:
- binary_sensor.motion_detector
to: "on"
condition: []
action:
- service: esphome.panelname_notification_show
data:
label: Motion Detected
text: Example for a Notification on the Panel Screen
```
------
## 8. Climate für Relays
Um das NSPanel zur Steuerung eines Heizkörpers oder einer Fussbodenheizung zu nutzen, muss im HA mindestens ein Generic Thermostat angelegt sein. Siehe hierzu: https://www.home-assistant.io/integrations/generic_thermostat/
Beispielkonfiguration Generic Thermostat:
```
climate:
- platform: generic_thermostat
name: Study
heater: switch.study_heater ## Wenn das NSPanel Relays den Heizkreis Regler schaltet, kann dieser hier definiert werden
target_sensor: sensor.study_temperature ## Hier kann der NSPanel Sensor verwendet werden
min_temp: 15
max_temp: 21
ac_mode: false
target_temp: 17
cold_tolerance: 0.3
hot_tolerance: 0
min_cycle_duration:
seconds: 5
keep_alive:
minutes: 3
initial_hvac_mode: "off"
away_temp: 16
precision: 0.1
```
Danach muss die climate.entity noch entsprechend in der Panel Configuration hinterlegt werden:![climate](./(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte.assets/climate.PNG)
------
## 9. Interne Switches als Lampe darstellen in HA
In der Welt von Home Assistant ist das Relays im NSPanel ein Schalter. Und obwohl das im Allgemeinen richtig ist, werden diese Relays oft z. B. für eine Leuchte oder einen Ventilator verwendet. Wenn nun bspw. eine Lampe direkt mit dem Relays geschaltet wird, so ist es wünschenswert, dass auch im HA der Switch als Lampe angezeigt wird oder diese "Lampe" einer Lichter-Gruppe hinzugefügt werden soll.
Mit der Switch as X-Integration können diese Schalter in die Entitätstypen umwandeln, die dem jeweiligen Anwendungsfall am besten entsprechen: https://www.home-assistant.io/integrations/switch_as_x/
![Swichasx](./(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte.assets/Swichasx.png)
------
## 10. Schnell Navigation
In Arbeit
------
## 11. Bestimmte Seiten direkt aufrufen
Manchmal kann es Sinn machen, automatisch eine bestimmte Seite des Displays anzeigen zu lassen. Um dies zu tun, kann folgender Service genutzt werden:
```
service: esphome.nspanel_send_command_printf
data:
cmd: page home
```
Um bspw. direkt die Button Page 2 anzuzeigen, muss "home" durch "buttonpage02" ersetzt werden.
Folgende Seiten sind derzeit verfügbar:
![img](./assets/Bildschirmfoto_2023-03-21_um_00.24.01.png)
------
## 12. RTTTL Sound abspielen
HA kann ein RTTTL an das NSPanel schicken, dabei sind eigene Melodien möglich.
Hierzu wird folgender Service verwendet: ***nspanel_play_rtttl***
Man findet viele RTTTL-Strings im Web, wichtig ist, dass diese mit dem Namen und dann einem Doppelpunkt beginnen müssen.
Hier ein Beispiel:
```
The Simpsons:d=4,o=5,b=160:c.6,e6,f#6,8a6,g.6,e6,c6,8a,8f#,8f#,8f#,2g,8p,8p,8f#,8f#,8f#,8g,a#.,8c6,8c6,8c6,c6
```
![image-20230320222454441](./assets/image-20230320222454441.png)
Mehr Informationen unter: https://esphome.io/components/rtttl.html#common-beeps
Mehr Songs hier: https://codebender.cc/sketch:109888#RTTTL%20Songs.ino
------
## 13. Erweiterte Funktionen und Automatisierungen
In Arbeit
------
## 14. Automationen starten via Input_Boolean
Obwohl mit dem NSPanel Scripts direkt über die Buttons gestartet werden können, gibt es auch die Möglichkeit, mittels Input_Boolean direkt Automationen zu starten.
Hierzu muss erst ein Helper angelegt werden unter ***Settings --> Devices&Services --> Helpers***, siehe hierzu: https://www.home-assistant.io/integrations/input_boolean/![Toggle1](./(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte.assets/Toggle1.PNG)
Anschliessend wird der erstellte Input_Boolean als Trigger in eine beliebige Automation aufgenommen unter State:![Toggle2](./(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte.assets/Toggle2.PNG)
Im letzten Schritt den Trigger noch einem Button in der Panel Config zuordnen:![Toggle3](./(DE)-HowTo---Alle-wichtigen-Dinge-die-man-wissen-sollte.assets/Toggle3.PNG)
------

View File

@@ -1,190 +0,0 @@
In diesem Beitrag geht es um die erst Konfiguration. Hier werden alle wichtigen Schritte zur Installation und Einrichtung von ESPHome und dem Blueprint beschrieben.&nbsp;
**_Step by Step [Einrichtungs Video](https://www.youtube.com/watch?v=3afPFg6kUdc)_**
&nbsp;
> ### _**ACHTUNG! solltest du vorher bereits auf deinem NSPanel die Version "nspanel-lovelace-ui" von joBr99 eingerichtet haben, ist ein zwischen Schritt nötig - sonst ist es nicht möglich diese oder irgendeine andere Version zu installieren**_
&nbsp;
&nbsp;
***
&nbsp;
# Inhalt:
1. [Kurz Version der Einrichtung von Esphome und Blueprint](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-Erste-Schritte---Installation-und-Einrichtung#1-kurz-version-der-einrichtung-von-esphome-und-blueprint)
2. [Version "nspanel-lovelace-ui" von joBr99 wurde vorher installiert](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-Erste-Schritte---Installation-und-Einrichtung#2-version-nspanel-lovelace-ui-von-jobr99-wurde-vorher-installiert)
3. [Advance Modus für ESPHome und HA Profis](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-Erste-Schritte---Installation-und-Einrichtung#3-advanced-configuration-für-alle-esphome-und-home-assistant-profis)
4. [Step by Step Einrichtung und Konfiguration](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-Erste-Schritte---Installation-und-Einrichtung#4-step-by-step-konfiguration-und-einrichtung-von-esphome-und-blueprint)
&nbsp;
***
&nbsp;
&nbsp;
## 1. Kurz Version der Einrichtung von Esphome und Blueprint
> _**(für alle die bereits mit ESPhome und Home Assistant Erfahrung haben)**_
#### 1. Als erstes muss das Blueprint installiert werden. Dazu nutze bitte folgenden Link
[![Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.](https://my.home-assistant.io/badges/blueprint_import.svg)](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2FBlackymas%2FNSPanel_HA_Blueprint%2Fblob%2Fmain%2Fnspanel_blueprint.yaml)
> Es ist auch möglich den Code aus der Datei _**"nspnael_blueprint.yaml"**_ zu kopieren und in HA einzufügen.
> Hinweise dazu findest du unter [Using Automation Blueprints](https://www.home-assistant.io/docs/automation/using_blueprints/) und [Automation blueprint tutorial](https://www.home-assistant.io/docs/blueprint/tutorial/#create-the-blueprint-file)
#### 2. Nun muss von Github das File **_"nspanel_eu.tft"_** oder **_"nspanel_us.tft"_**heruntergeladen werden
![Bildschirmfoto 2023-01-23 um 21 31 05](https://user-images.githubusercontent.com/41958506/214161397-ec927f77-be77-433d-84a5-79fbfed33932.png)
#### 3. Das File muss nun auf deinen Home Assistant Server in den Ordner **_"www"_** hochgeladen werden. Siehe dazu auch hier [Home Assistant HTTP](https://www.home-assistant.io/integrations/http/#hosting-files) 'Hosting Files' Bereich für weiter Informationen.
![Bildschirmfoto 2023-01-23 um 21 33 20](https://user-images.githubusercontent.com/41958506/214162088-3bd67e46-c389-496f-a937-757ad63e1fe2.png)
#### 4. im nächsten Schritt muss eine neues ESP32 Device in ESPHome erstellt werden
#### 5. wenn das neue ESP32 Device erstellt wurde, klicke als nächstes bei dem soeben angelegten Device auf _**"Edit"**_ um den Web-Editor zu öffnen. Nun muss folgender Code kopiert und eingesetzt werden.
> ❗ _**WICHTIG!**_ Der bereits vorhanden Code in der ESPHome Datei muss _**"KOMPLETT"**_ gelöscht werden und durch den unten stehenden Code _**"ERSETZT"**_ werden.
> ❗ _**WICHTIG!**_ im Block _**"CHANGE ME"**_ müssen alle Werte _**(device_name, wifi_ssid, wifi_password)**_ in den _**" "**_ durch deine eigenen Werte ersetzt werden. Es ist hier auch möglich mit _**"!secret"**_ zu arbeiten
> ⚠️ _**ACHTUNG!**_ es dürfen bei _**"device_name"**_ max. 15 Zeichen _**[a-z] und [0-9]**_ verwendet werden und alles müssen _**"Kleinbuchstaben"**_ sein. Weiterhin sind Zeichen wie _**[-], [SONDERZEICHEN] und [LEERZEICHEN]**_ verboten und führen zu Problemen mit dem Blueprint.
> **Beispiel:** _**nspanel_blackymas**_
&nbsp;
### CODE:
```
substitutions:
###### CHANGE ME START ######
device_name: "YOUR NSPANEL_NAME"
wifi_ssid: "YOUR WIFI SSID"
wifi_password: "YOUR WIFI PASSWORD"
nextion_update_url: "http://HOME-ASSISTANT-IP:8123/local/nspanel_eu.tft" # URL to local tft File
# nextion_update_url: "https://raw.githubusercontent.com/Blackymas/NSPanel_HA_Blueprint/main/nspanel_eu.tft" # URL to Github
##### CHANGE ME END #####
##### DO NOT CHANGE ANYTHING! #####
packages:
##### download esphome code from Github
remote_package:
url: https://github.com/Blackymas/NSPanel_HA_Blueprint
ref: main
files: [nspanel_esphome.yaml]
refresh: 1s
esp32:
framework:
type: esp-idf
##### DO NOT CHANGE ANYTHING! #####
```
> Im Pfad **_http://HOME-ASSISTANT-IP:8123/local/nspanel_eu.tft_** muss nun die IP Adresse von deinem _**Home Assistant Server**_ eingetragen werden. (_**/local/**_ ist das selbe Verzeichnis wie **_"www"_**
>
>
> Das kann dann wie folgt aussehen **_http://192.168.1.1:8123/local/nspanel_eu.tft_**
> ⚠️ **_ACHTUNG_** Du kannst auch den Pfad zu Github verwenden **_https://raw.githubusercontent.com/Blackymas/NSPanel_HA_Blueprint/main/nspanel_eu.tft_** und das TFT direkt von Github herunter laden. Aber dabei kann es zu Problemen mit dem Upload zum NSPanel kommen. Das hängt von deinem Internet und WLAN ab. Für mehr Informationen zu diesem Thema schauen auf der **_Issue_** Seite im Github. Das ganze sollte dann so aussehen
```
# nextion_update_url: "http://HOME-ASSISTANT-IP:8123/local/nspanel_eu.tft" # URL to local tft File
nextion_update_url: "https://raw.githubusercontent.com/Blackymas/NSPanel_HA_Blueprint/main/nspanel_eu.tft" # URL to Github
```
> ⚠️ **_ACHTUNG_** soll das US Layout des Panels verwendet werden, dann muss anstelle von "nspanel_eu.tft" in der nextion_update_url "nspanel_us.tft" verwendet werden!&nbsp;
#### 6. Jetzt kann das NSPanel mit dem neuen ESPHome Code geflasht werden
> wie das NSPanel geflasht wird kannst du dir hier ansehen [Anleitung - Flash Sonoff NSPanel mit ESPHome](https://www.youtube.com/watch?v=3afPFg6kUdc)
#### 7. Nachdem das NSPanel fertig geflasht wurde, kannst du unter _**"Einstellungen --> Geräte & Dienste --> Integration hinzufügen"**_ dein neues Gerät hinzufügen und fertig einrichten
#### 8. im letzten Schritt muss nun nur noch das TFT hochgeladen werden. Dazu öffne in der Integration ESPHome dein neues Device und aktiviere unter _**"Konfiguration"**_ den Punkt _**"Update TFT display"**_. Jetzt wird von deinem lokalen Home Assistant Server oder Github das aktuelle TFT File geladen und auf dein NSPanel hochgeladen. _**ACHTUNG!**_ dieser Vorgang kann einen Moment dauern
#### 9. jetzt ist die Einrichtung vom ESPHome und dem NSPanel abgeschlossen.
#### 10. Nun kannst du über das Blueprint dein NSPanel konfigurieren. Dazu gehe auf _**"Einstellungen --> Automatisierungen & Szenen --> Vorlagen --> NSPanel Configuration --> AUTOMATISIERUNG ERSTELLEN"**_ und starte mit der Einrichtung vom NSPanel.
> **HINWEIS!** Trage im Blueprint im Feld _**"ESPHOME Node Name"**_ exakt den selben Namen ein, den du in der _**"ESPHome Datei"**_ vergeben hast.
> **Beispiel:** _**nspanel_blackymas**_
&nbsp;
&nbsp;
***
&nbsp;
&nbsp;
## 2. Version "nspanel-lovelace-ui" von joBr99 wurde vorher installiert
> _**in der Version "nspanel-lovelace-ui" von joBr99 sind ein paar Besonderheiten eingebaut, die es nicht so einfach ermöglichen eine neue Version und TFT auf das NSPanel zu flashen. Da wir dieses Problem aber schon hatten, haben wir natürlich auch schon eine Lösung für euch ;)**_
### _**Es ist notwendig eine "Leeres TFT" Datei hochzuladen, solange "Lovelace ui" noch auf dem NSPanel installiert ist.**_
> WICHTIG! Wenn du bereits das NSPanel mit meiner Version installiert hast, musst du zuerst wieder "Lovelace ui" vollständig installieren.
### Folgende Schritte sind notwendig:
1. lade dir aus dem Ordner _**custom_configuration**_ die Datei _**"nspanel_blank.tft"**_ herunter.
2. lade nun die TFT Datei _**"nspanel_blank.tft"**_ in den Ordner _**"www"**_ in Home Assistant hoch
3. gehe jetzt zu dem Punkt _**"Entwicklerwerzeuge --> Dienste"**_ und suche dort nach dem Dienst
&nbsp;
_**"ESPHome: DEVICE_NAME_upload_tft"**_ --> (esphome.device_name_upload_tft)
4. unter URL musst du jetzt den Pfad zu deiner Datei _**nspanel_blank.tft**_ eingeben. Das könnte zum Beispiel so aussehen _**"http://IP_HOME_ASSISTANT:8123/local/nspanel_blank.tft"**_
5. nun sollte die TFT Datei auf das NSPanel gespielt werden. Es kann einen Moment dauern, bis es fertig ist
6. sollte alles funktioniert haben, sollte auf dem NSPanel nur eine weiße Seite zu sehen sein
7. jetzt kann mit der Einrichtung und Konfiguration meiner Version fortgesetzt werden. Dazu siehe [Kurz Version der Einrichtung von Esphome und Blueprint](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-Erste-Schritte---Installation-und-Einrichtung#1-kurz-version-der-einrichtung-von-esphome-und-blueprint)
&nbsp;
&nbsp;
***
&nbsp;
&nbsp;
## 3. Advanced configuration für alle ESPHome und Home Assistant Profis
* Blueprint Datei _**"nspnael_blueprint.yaml"**_ kann auch manuell installiert werden
* ESPHome Datei_**"nspanel_esphome.yaml"**_ kann auch manuell installiert werden. Dadurch können weitere _**"Advanced"**_ Konfigurationen aktiviert oder hinzugefügt werden.
* Außerdem besteht die Möglichkeit das TFT File _**"nspanel_eu.tft"**_ manuell hochzuladen. Das Ganze kann auch mit einem _**"Folder Watcher"**_ kombiniert werden
* zusätzlich stellen wir die HMI Datei _**"nspanel_eu.HMI"**_ für den Nextion Editor zur Verfügung, um Grafiken und Programmierung bei bedarf anpassen zu können
> _**ACHTUNG!**_ Wer diesen Modus benutzt, sollte wissen was er tut. Wir geben hier keinen Support!
&nbsp;
&nbsp;
***
&nbsp;
&nbsp;
## 4. Step by Step Konfiguration und Einrichtung von ESPHome und Blueprint
> _**(für alle die neu im Thema ESPhome sind oder noch keine Erfahrungen gesammelt haben)**_

View File

@@ -1,29 +0,0 @@
> ### _**ACHTUNG! Wenn bereits die Version "nspanel-lovelace-ui" von joBr99 auf dem NSPanel installiert ist, ist ein Zwischenschritt notwendig - ansonsten ist es nicht möglich, diese oder eine andere Version zu installieren.**_
>Siehe hierzu [Installation und Einrichtung](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-Erste-Schritte---Installation-und-Einrichtung#2-version-nspanel-lovelace-ui-von-jobr99-wurde-vorher-installiert)
<br>
> ### _**Die frühere Methode, bei der NSPanel das TFT direkt von GitHub heruntergeladen hat, wurde eingestellt, da eine große Anzahl von Benutzern langsame oder fehlgeschlagene Downloads verzeichnete. Daher muss der Upload nun mit einer lokal gehosteten tft-Datei vorgenommen werden**_
Es gibt eine Reihe von Problemen, die das Hochladen des TFT-Uploads beeinträchtigen können. Diese Probleme betreffen nicht das NSPanel HA Blueprint-Projekt, sondern scheinen bei Nextion-Displays und ESPhome aufzutreten. Nicht alle der unten genannten Ursachen betreffen alle Benutzer, jedoch haben die folgenden Massnahmen unter jedem Punkt zu einer Lösung geführt.
<br>In order of likelihood:
#### 1. Eine lokale Datenquelle verwenden (Home Assistant)
Dies ist die häufigste Ursache für Probleme und der Grund, warum unsere Anleitung nicht mehr auf das Herunterladen des TFT von GitHub verweisen. Durch Ändern der nextion_update_url zum Hosten der TFT-Datei auf dem lokalen HA werden die meisten Probleme gelöst.
Siehe hierzu Punkt 2-4 in den [Installation und Einrichtung](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki/(DE)-Erste-Schritte---Installation-und-Einrichtung#2-version-nspanel-lovelace-ui-von-jobr99-wurde-vorher-installiert)
<br><br>
#### 2. HTTP anstelle von HTTPS
Während HTTPS für einige Benutzer funktionieren kann, mussten wir feststellen, dass es eine Reihe von Problemen verursachen kann. Eine Möglichkeit ist, das TFT-Dateihosting und nextion_update_url auf HTTPS umzustellen.
<br><br>
#### 3. Netzwerkprobleme
Eine instabile Netzwerkverbindung kann zu Verbindungsabbrüchen führen. Das NSPanel näher an den WiFi Zugangspunkt zu bringen, oder den Router neu zu starten sind zwei Möglichkeiten, dieses Problem zu lösen.
Wenn die Fehlermeldung _Connection Refused_ oder _Connection Reset_ erscheint, ist dies das häufigste Problem.
<br><br>
#### 4. DNS
Ähnlich wie Punkt 2, sollte eine IP Adresse statt die DNS Auflösung verwendet werden:
also http://192.168.0.100:8123/local/nspanel.tft anstelle von http://homeassistant.local:8123/local/nspanel.tft

View File

@@ -1,36 +0,0 @@
## Konfiguration
#### Im Home Assistant NSPanel Blueprint
Im Blueprint muss als Integration "Accuweather" ausgewählt werden und die Weather Entitiy von AccuWeather (bspw. Home) ausgewählt werden:<br>
![Screenshot 2023-01-30 214603](https://user-images.githubusercontent.com/123868814/215602716-60d92287-943f-465b-aac7-8b47795ef608.png)<br>
<br>
#### AccuWeather Vorhersage aktivieren
Unter Settings - Devices&Services - Accuweather - Configure muss der Haken bei "Weather forecast" gesetzt sein:
![Screenshot 2023-01-30 214638](https://user-images.githubusercontent.com/123868814/215602723-7732578b-3870-4c1a-baec-5ebee98b37ad.png)<br>
<br>
#### Überprüfen in Developer Tools
#### In developer tools the weather entity should have the attribute 'attribution: Data provided by AccuWeather'<br>
Unter Developer Tools - States kann die AccuWeather integration überprüft werden. Die Weather Entity (hier im Beispiel weather.home) muss das Attribute "attribution: Data provided by Accuweather" haben:
#### ![Screenshot 2023-01-30 214739](https://user-images.githubusercontent.com/123868814/215602730-87093a5d-1a67-460d-9a9c-27a93371ea82.png)<br>
<br>
<br>
## Wenn das Problem immer noch besteht
Es kann in Einzelfällen vorkommen, dass mehrere Wetter Integrationen nicht zusammen funktionieren. Um dies zu beheben, empfehlen wir ALLE Wetter Integrations zu löschen und AccuWeather neu hinzuzufügen. Achtung: Dabei werden alle assoziierten Daten sowie Entities gelöscht!!
Das Vorgehen ist wie folgt:
#### 1. Löschen der Standard und AccuWeather Integration
#### 2. Hinzufügen der AccuWeather Integration & Aktivieren der Vorhersage
#### 3. In der Blueprint Automation des NSPanels AccuWeather hinzufügen und die Entität auswählen

Some files were not shown because too many files have changed in this diff Show More