Compare commits
288 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
787f337220 | ||
|
|
44aaea74ec | ||
|
|
4a346ce2d2 | ||
|
|
4ead4382a2 | ||
|
|
1e64e134f9 | ||
|
|
68190ece4b | ||
|
|
81d0bcf304 | ||
|
|
94364d711e | ||
|
|
2953942fbd | ||
|
|
51173352d2 | ||
|
|
1bec2b1160 | ||
|
|
4921453a1b | ||
|
|
95a4447eeb | ||
|
|
350b3f4ca7 | ||
|
|
a8172a1b06 | ||
|
|
df10d09736 | ||
|
|
4f31326b8e | ||
|
|
f0e557b5e4 | ||
|
|
80d19b1da1 | ||
|
|
df0855862f | ||
|
|
d23fe9616c | ||
|
|
76fee43d3b | ||
|
|
e8fd5e2020 | ||
|
|
89faeb3ec1 | ||
|
|
a006af2654 | ||
|
|
4ea23c7cf5 | ||
|
|
1e7ead8e46 | ||
|
|
d88290474e | ||
|
|
75f17f0d3e | ||
|
|
8a21f88df9 | ||
|
|
5a01431670 | ||
|
|
7c90677d99 | ||
|
|
fe65530eb5 | ||
|
|
ecd806b1c5 | ||
|
|
72e59947b6 | ||
|
|
8869eb2f67 | ||
|
|
c7c54261cb | ||
|
|
27185ea88c | ||
|
|
bfe2c65bfd | ||
|
|
45dafc3d0d | ||
|
|
c9c31bba57 | ||
|
|
485e5cc8d2 | ||
|
|
175c927ee8 | ||
|
|
4392bf251b | ||
|
|
9616ea4c8f | ||
|
|
2a9162e809 | ||
|
|
df976b0a90 | ||
|
|
220b5fb02b | ||
|
|
a0a0d16af7 | ||
|
|
f97b298d00 | ||
|
|
6feba8a56d | ||
|
|
0ff61a2e4a | ||
|
|
aee6e7bb57 | ||
|
|
602a58cc40 | ||
|
|
5e45641687 | ||
|
|
8b2beec50c | ||
|
|
3278de673a | ||
|
|
3cf5fb3eeb | ||
|
|
d53a34b83f | ||
|
|
e4f0dba8fa | ||
|
|
3ea33a6dfa | ||
|
|
6b11ffb7cf | ||
|
|
3047204272 | ||
|
|
61af338a96 | ||
|
|
729414944b | ||
|
|
22dbd2814b | ||
|
|
44836d1e4d | ||
|
|
881c50dd1f | ||
|
|
ce7dfb1423 | ||
|
|
c45bd4057f | ||
|
|
3401340563 | ||
|
|
7f7d496beb | ||
|
|
c7ec9f97b7 | ||
|
|
3c58a29e73 | ||
|
|
7fd5658630 | ||
|
|
81f6783ca1 | ||
|
|
cf430fc1a8 | ||
|
|
7f6c9c696b | ||
|
|
7580a38b4f | ||
|
|
14532444bc | ||
|
|
f2a424027d | ||
|
|
f038eaed87 | ||
|
|
3f00773927 | ||
|
|
7e63a4cb18 | ||
|
|
e6fd475947 | ||
|
|
1869f8023d | ||
|
|
860f5ddbba | ||
|
|
218ef94c9c | ||
|
|
730e0acd99 | ||
|
|
c8afa129b5 | ||
|
|
ee0c21128d | ||
|
|
1aed46b71f | ||
|
|
4e38a928fc | ||
|
|
d58ba87dbb | ||
|
|
640e245cf8 | ||
|
|
f056dace88 | ||
|
|
3211f44770 | ||
|
|
bd5b1303f2 | ||
|
|
8ff0cad379 | ||
|
|
fdcd37c6d0 | ||
|
|
6a464325d7 | ||
|
|
3af0c20670 | ||
|
|
7ee10d4ca6 | ||
|
|
884c8d91e6 | ||
|
|
07b8e99b01 | ||
|
|
d74b70f864 | ||
|
|
e70fcd54eb | ||
|
|
ea5b80e3b8 | ||
|
|
b5cd83240f | ||
|
|
7d241d1400 | ||
|
|
ee2e1d53d2 | ||
|
|
36e0344345 | ||
|
|
eb6eebfd46 | ||
|
|
0de7850c39 | ||
|
|
5f1d2b9d10 | ||
|
|
0abd5531cb | ||
|
|
0fdcd088ec | ||
|
|
29df75263b | ||
|
|
5035b89956 | ||
|
|
9de5abff25 | ||
|
|
a113e0cd43 | ||
|
|
a2f5e69b76 | ||
|
|
0e41a87659 | ||
|
|
f6a6a7adb0 | ||
|
|
8abfee7b54 | ||
|
|
70038014a2 | ||
|
|
268c6a7e23 | ||
|
|
133165e79e | ||
|
|
99f2b2815d | ||
|
|
d6f0958652 | ||
|
|
6704e320da | ||
|
|
d0d09b93a4 | ||
|
|
155ab33086 | ||
|
|
55ed836400 | ||
|
|
6ac6a25803 | ||
|
|
26844cd290 | ||
|
|
7dc0f49809 | ||
|
|
71cd913135 | ||
|
|
dfa3ee901a | ||
|
|
f7131aaca0 | ||
|
|
fefb1374fd | ||
|
|
8f5165bd1b | ||
|
|
94a51da6fe | ||
|
|
e422a158ca | ||
|
|
b43d83291b | ||
|
|
e751938cdd | ||
|
|
b8321807dc | ||
|
|
3a42c12c00 | ||
|
|
d552fb458b | ||
|
|
a7b96d8582 | ||
|
|
18f188bb32 | ||
|
|
f44d3fd8d1 | ||
|
|
a0b8697a4f | ||
|
|
de8f463968 | ||
|
|
6642a46a04 | ||
|
|
0b856cbb83 | ||
|
|
e41c02e883 | ||
|
|
6f3dc4a010 | ||
|
|
d46eecc57c | ||
|
|
7223103905 | ||
|
|
547338c5b1 | ||
|
|
811aca8cfa | ||
|
|
0465a9eb8b | ||
|
|
45907e1ce5 | ||
|
|
3ff82ef8cd | ||
|
|
5f6cc373fe | ||
|
|
4801f6c6b9 | ||
|
|
02b4f6e178 | ||
|
|
b0161d41f8 | ||
|
|
d1702ccacf | ||
|
|
281be927a7 | ||
|
|
c352047991 | ||
|
|
c058fd4fb1 | ||
|
|
e4e5cb0f51 | ||
|
|
da611e384a | ||
|
|
5292bbff8b | ||
|
|
a22311c4e8 | ||
|
|
0d250fb56b | ||
|
|
5ba5d2fb08 | ||
|
|
51170c514d | ||
|
|
53cf4f1371 | ||
|
|
6ab6892f5b | ||
|
|
a38948ad2f | ||
|
|
0f56e859db | ||
|
|
365f863fc2 | ||
|
|
cf2e648a21 | ||
|
|
b7c077faad | ||
|
|
44d65c3cd7 | ||
|
|
069cece05e | ||
|
|
276524686a | ||
|
|
a46b3ad20b | ||
|
|
295096a9d7 | ||
|
|
0c6b994161 | ||
|
|
63e1ab4947 | ||
|
|
9ec2bac284 | ||
|
|
6fdbec1486 | ||
|
|
f11215c097 | ||
|
|
7ec5bb6a04 | ||
|
|
aae9bd8d8a | ||
|
|
cdf980ee8f | ||
|
|
7b23050791 | ||
|
|
faaa698e46 | ||
|
|
4b5c10a68e | ||
|
|
b00720d465 | ||
|
|
c4cf3049b2 | ||
|
|
f7e76bdbd8 | ||
|
|
4294fb39b2 | ||
|
|
eb2f810161 | ||
|
|
17e11063e3 | ||
|
|
70e2f724f7 | ||
|
|
f3787c812a | ||
|
|
a056a13f0b | ||
|
|
13d5b7a1d2 | ||
|
|
2c8a45153b | ||
|
|
be12633af1 | ||
|
|
81e4149b11 | ||
|
|
4b98f4a80a | ||
|
|
d83f37962d | ||
|
|
33b0d0674a | ||
|
|
b7f2c18c85 | ||
|
|
cda0e0c1d6 | ||
|
|
42eb9b5d71 | ||
|
|
35be40fb93 | ||
|
|
1d5c40d7a8 | ||
|
|
c1ea2e1810 | ||
|
|
f9562d495a | ||
|
|
58ad89ee4e | ||
|
|
b4a0800929 | ||
|
|
e27c92ef0e | ||
|
|
936c152ca6 | ||
|
|
fadd725662 | ||
|
|
ab5d30d0ce | ||
|
|
12ecc30e1f | ||
|
|
985cf69f0b | ||
|
|
ffa9deaf54 | ||
|
|
8613208b5f | ||
|
|
7b1bbb704a | ||
|
|
5acbdef022 | ||
|
|
96f855e930 | ||
|
|
c504ade7d4 | ||
|
|
5941b6dab4 | ||
|
|
33416b498c | ||
|
|
beb8941c80 | ||
|
|
33d8487adf | ||
|
|
cb5e9a2afe | ||
|
|
802a089c16 | ||
|
|
edad480e4f | ||
|
|
6181cbca97 | ||
|
|
572fb9e934 | ||
|
|
52dabed6ee | ||
|
|
d12d8fbd86 | ||
|
|
b0d57e63e3 | ||
|
|
baf3ff4e95 | ||
|
|
c061c0bae1 | ||
|
|
797c7d1a32 | ||
|
|
b1b63b11cd | ||
|
|
2ac8305eff | ||
|
|
eb9d9e0f1e | ||
|
|
9a1b447087 | ||
|
|
7fb8480138 | ||
|
|
ad26272524 | ||
|
|
147cf0f497 | ||
|
|
fa08f6b54a | ||
|
|
0f2d5fbd29 | ||
|
|
d645f4c02e | ||
|
|
f0af3f1562 | ||
|
|
b78699c9d5 | ||
|
|
c3f2ddd499 | ||
|
|
6f962ebfd0 | ||
|
|
7f768ced45 | ||
|
|
37e287d253 | ||
|
|
298e67a29d | ||
|
|
f1af69581e | ||
|
|
351b84ad96 | ||
|
|
e050bce77e | ||
|
|
01de27059d | ||
|
|
7407a2841b | ||
|
|
2f1a947cfc | ||
|
|
f26e5e33cc | ||
|
|
5a040cbd8e | ||
|
|
d2c383ef82 | ||
|
|
ffc89d07e9 | ||
|
|
2bae66f6fe | ||
|
|
09aaabf4c5 | ||
|
|
5de8c739f8 | ||
|
|
1220715e9b | ||
|
|
8cb194b3b9 | ||
|
|
dd4f6c3b9e |
13
.github/FUNDING.yml
vendored
Normal file
13
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||
custom: https://www.paypal.com/donate/?hosted_button_id=S974SWQMB8PB2
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,3 +1,6 @@
|
||||
# Ignore Mac DS_Store files
|
||||
.DS_Store
|
||||
**/.DS_Store
|
||||
|
||||
# Ignore IntelliJ IDEA project directory
|
||||
.idea
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# NSPanel Custom with HA Blueprint
|
||||
|
||||
*You use our NSPanel version and are satisfied with it? Then we would be very happy about a donation to support our project.*
|
||||
|
||||
[](https://www.paypal.com/donate/?hosted_button_id=S974SWQMB8PB2)
|
||||
|
||||
[](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2FBlackymas%2FNSPanel_HA_Blueprint%2Fblob%2Fmain%2Fnspanel_blueprint.yaml)
|
||||
@@ -14,7 +16,7 @@ The goal was to create a version that allows everyone to use the NSpanel fully l
|
||||
|
||||
📕 Full documentation and installation is available here [NSPanel Configuration, Setup and HowTo](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki).
|
||||
|
||||
📌 Step by Step - [Setup Video](https://www.youtube.com/watch?v=3afPFg6kUdc)
|
||||
📌 Step by Step - [Setup and Overview Video´s](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki)
|
||||
|
||||
🚀 How to create "Issues" when I have a problem [WIKI HowTo](https://github.com/Blackymas/NSPanel_HA_Blueprint/wiki)
|
||||
|
||||
@@ -27,7 +29,8 @@ The goal was to create a version that allows everyone to use the NSpanel fully l
|
||||
🙋 WE ARE LOOKING FOR YOU! _**We are always looking for people who would like to support this project. We are looking for help with "programming new features, writing documentation or translating documentation to EN. If you are interested then please contact us :)**_
|
||||
|
||||
## NSPanel:
|
||||

|
||||

|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
BIN
custom_configuration/OLD NSPanel version/OLD_nspanel_blank.tft
Normal file
BIN
custom_configuration/OLD NSPanel version/OLD_nspanel_blank.tft
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
custom_configuration/nspanel_blank.HMI
Normal file
BIN
custom_configuration/nspanel_blank.HMI
Normal file
Binary file not shown.
Binary file not shown.
10787
nspanel_blueprint.yaml
10787
nspanel_blueprint.yaml
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@
|
||||
|
||||
|
||||
##### ADVANCED CONFIGURATION - activate only when you know what you do ##############################
|
||||
# substitutions:
|
||||
# substitutions:
|
||||
# ## usage of secrets-file ## -> comment in ###### Change ME ######
|
||||
# device_name: "nspanel-name" # Wird im Blueprint benötigt!
|
||||
# wifi_ssid: !secret nspanel_wifi_ssid # add in your esphome secrets file.
|
||||
@@ -36,7 +36,7 @@ wifi:
|
||||
ssid: ${wifi_ssid}
|
||||
password: ${wifi_password}
|
||||
power_save_mode: none
|
||||
##### advanced config - uncomment to use static IP-Config #####
|
||||
##### advanced config - uncomment to use static IP-Config #####
|
||||
# manual_ip:
|
||||
# static_ip: ${ip}
|
||||
# gateway: ${gw}
|
||||
@@ -49,15 +49,19 @@ wifi:
|
||||
password: ${wifi_password}
|
||||
|
||||
##### Functionality for the Nextion display #####
|
||||
external_components:
|
||||
- source: github://pr#2956
|
||||
components: [nextion]
|
||||
refresh: 1h
|
||||
# external_components:
|
||||
# - source: github://pr#2956
|
||||
# components: [nextion]
|
||||
# refresh: 1h
|
||||
|
||||
##### ESPHOME CONFIGURATION #####
|
||||
esphome:
|
||||
name: ${device_name}
|
||||
min_version: 2022.10.2
|
||||
on_boot:
|
||||
priority: 601
|
||||
then:
|
||||
- lambda: id(disp1).send_command_printf("DRAKJHSUYDGBNCJHGJKSHBDN");
|
||||
|
||||
##### TYPE OF ESP BOARD #####
|
||||
esp32:
|
||||
@@ -70,13 +74,13 @@ web_server:
|
||||
auth:
|
||||
username: admin
|
||||
password: ${wifi_password}
|
||||
##### advanced config - change to use web_password #####
|
||||
##### advanced config - change to use web_password #####
|
||||
# password: ${web_password}
|
||||
|
||||
##### OTA PASSWORD #####
|
||||
ota:
|
||||
password: ${wifi_password}
|
||||
##### advanced config - change to use ota_password #####
|
||||
##### advanced config - change to use ota_password #####
|
||||
# password: ${ota_password}
|
||||
safe_mode: true
|
||||
reboot_timeout: 3min
|
||||
@@ -107,16 +111,26 @@ uart:
|
||||
baud_rate: 115200
|
||||
id: tf_uart
|
||||
|
||||
###### REBOOT BUTTON #####
|
||||
##### START - BUTTON CONFIGURATION #####
|
||||
button:
|
||||
###### REBOOT BUTTON #####
|
||||
- platform: restart
|
||||
name: ${device_name} Restart
|
||||
id: restart_nspanel
|
||||
|
||||
##### UPDATE TFT DISPLAY #####
|
||||
- platform: template
|
||||
name: ${device_name} Update TFT display
|
||||
icon: mdi:file-sync
|
||||
id: tft_update
|
||||
entity_category: config
|
||||
on_press:
|
||||
- delay: 16ms
|
||||
- lambda: id(disp1).upload_tft();
|
||||
|
||||
##### START - API CONFIGURATION #####
|
||||
api:
|
||||
##### advanced config - activate to use api_password #####
|
||||
##### advanced config - activate to use api_password #####
|
||||
# password: ${api_password}
|
||||
services:
|
||||
|
||||
@@ -132,7 +146,7 @@ api:
|
||||
then:
|
||||
- lambda: 'id(disp1)->set_tft_url(url.c_str());'
|
||||
- lambda: 'id(disp1)->upload_tft();'
|
||||
|
||||
|
||||
##### Service to send a command "printf" directly to the display #####
|
||||
- service: send_command_printf
|
||||
variables:
|
||||
@@ -161,7 +175,7 @@ api:
|
||||
- lambda: 'id(disp1).set_component_value(component.c_str(), message);'
|
||||
|
||||
##### Service to send a command "hide componente" directly to the display #####
|
||||
- service: send_command_hide
|
||||
- service: send_command_hide ### unused ###
|
||||
variables:
|
||||
component: string
|
||||
then:
|
||||
@@ -170,7 +184,7 @@ api:
|
||||
- lambda: 'id(disp1).hide_component(component.c_str());'
|
||||
|
||||
##### Service to send a command "show componente" directly to the display #####
|
||||
- service: send_command_show
|
||||
- service: send_command_show ### unused ###
|
||||
variables:
|
||||
component: string
|
||||
then:
|
||||
@@ -178,6 +192,13 @@ api:
|
||||
switch.is_on: nextion_init
|
||||
- lambda: 'id(disp1).show_component(component.c_str());'
|
||||
|
||||
##### Service to send a command "show ALL componente" directly to the display #####
|
||||
- service: send_command_show_all ### unused ###
|
||||
then:
|
||||
- wait_until:
|
||||
switch.is_on: nextion_init
|
||||
- lambda: 'id(disp1).show_component("255");'
|
||||
|
||||
##### Service to send a command "font color" directly to the display #####
|
||||
- service: send_command_font_color
|
||||
variables:
|
||||
@@ -187,7 +208,7 @@ api:
|
||||
- wait_until:
|
||||
switch.is_on: nextion_init
|
||||
- lambda: 'id(disp1).set_component_font_color(component.c_str(), message);'
|
||||
|
||||
|
||||
##### Service to send a command "background color" directly to the display #####
|
||||
- service: send_command_background_color
|
||||
variables:
|
||||
@@ -229,6 +250,16 @@ api:
|
||||
id(notification_text).publish_state("");
|
||||
- switch.turn_off: notification_unread
|
||||
|
||||
##### Service to set entity-information for settings-page(s)
|
||||
- service: set_settings_entity
|
||||
variables:
|
||||
entity: string
|
||||
then:
|
||||
- wait_until:
|
||||
switch.is_on: nextion_init
|
||||
- lambda: |-
|
||||
id(settings_entity).publish_state(entity.c_str());
|
||||
|
||||
##### Service to play a rtttl tones #####
|
||||
# Example tones : https://codebender.cc/sketch:109888#RTTTL%20Songs.ino
|
||||
- service: play_rtttl
|
||||
@@ -236,7 +267,18 @@ api:
|
||||
song_str: string
|
||||
then:
|
||||
- rtttl.play:
|
||||
rtttl: !lambda 'return song_str;'
|
||||
rtttl: !lambda 'return song_str;'
|
||||
|
||||
# Service to show a QR code on the display (ex. for WiFi password)
|
||||
- service: qr_code
|
||||
variables:
|
||||
qrdata: string
|
||||
then:
|
||||
- wait_until:
|
||||
switch.is_on: nextion_init
|
||||
- lambda: |-
|
||||
id(disp1).send_command_printf("page qrcode");
|
||||
id(disp1).set_component_text_printf("qrcode.qrcode_value", "%s", qrdata.c_str());
|
||||
|
||||
#### Service to send thermostat cycle state ####
|
||||
- service: send_thermostat_cycle_state
|
||||
@@ -247,126 +289,12 @@ api:
|
||||
switch.is_on: nextion_init
|
||||
- lambda: |-
|
||||
//ESP_LOGD("nextion", "thermostat sendig value %f", value);
|
||||
int left=16; // 16 is empty left.
|
||||
int mid=17; // 17 is empty mid.
|
||||
int right=18; // 18 is empty right.
|
||||
if (value < 13.5) {
|
||||
left=16;
|
||||
mid=17;
|
||||
right=18;
|
||||
} else if (value >= 13.5 and value < 14) {
|
||||
left=19;
|
||||
mid=17;
|
||||
right=18;
|
||||
} else if (value >= 14 and value < 14.5) {
|
||||
left=20;
|
||||
mid=17;
|
||||
right=18;
|
||||
} else if (value >= 14.5 and value < 15) {
|
||||
left=21;
|
||||
mid=17;
|
||||
right=18;
|
||||
} else if (value >= 15 and value < 15.5) {
|
||||
left=22;
|
||||
mid=17;
|
||||
right=18;
|
||||
} else if (value >= 15.5 and value < 16) {
|
||||
left=23;
|
||||
mid=17;
|
||||
right=18;
|
||||
} else if (value >= 16 and value < 16.5) {
|
||||
left=24;
|
||||
mid=17;
|
||||
right=18;
|
||||
} else if (value >= 16.5 and value < 17) {
|
||||
left=25;
|
||||
mid=17;
|
||||
right=18;
|
||||
} else if (value >= 17 and value < 17.5) {
|
||||
left=26;
|
||||
mid=17;
|
||||
right=18;
|
||||
} else if (value >= 17.5 and value < 18) {
|
||||
left=27;
|
||||
mid=17;
|
||||
right=18;
|
||||
} else if (value >= 18 and value < 18.5) {
|
||||
left=28;
|
||||
mid=17;
|
||||
right=18;
|
||||
} else if (value >= 18.5 and value < 19) {
|
||||
left=29;
|
||||
mid=30;
|
||||
right=18;
|
||||
} else if (value >= 19 and value < 19.5) {
|
||||
left=29;
|
||||
mid=31;
|
||||
right=18;
|
||||
} else if (value >= 19.5 and value < 20) {
|
||||
left=29;
|
||||
mid=32;
|
||||
right=18;
|
||||
} else if (value >= 20 and value < 20.5) {
|
||||
left=29;
|
||||
mid=33;
|
||||
right=18;
|
||||
} else if (value >= 20.5 and value < 21) {
|
||||
left=29;
|
||||
mid=34;
|
||||
right=18;
|
||||
} else if (value >= 21 and value < 21.5) {
|
||||
left=29;
|
||||
mid=35;
|
||||
right=18;
|
||||
} else if (value >= 21.5 and value < 22) {
|
||||
left=29;
|
||||
mid=36;
|
||||
right=18;
|
||||
} else if (value >= 22 and value < 22.5) {
|
||||
left=29;
|
||||
mid=37;
|
||||
right=38;
|
||||
} else if (value >= 22.5 and value < 23) {
|
||||
left=29;
|
||||
mid=37;
|
||||
right=39;
|
||||
} else if (value >= 23 and value < 23.5) {
|
||||
left=29;
|
||||
mid=37;
|
||||
right=40;
|
||||
} else if (value >= 23.5 and value < 24) {
|
||||
left=29;
|
||||
mid=37;
|
||||
right=41;
|
||||
} else if (value >= 24 and value < 24.5) {
|
||||
left=29;
|
||||
mid=37;
|
||||
right=42;
|
||||
} else if (value >= 24.5 and value < 25) {
|
||||
left=29;
|
||||
mid=37;
|
||||
right=43;
|
||||
} else if (value >= 25 and value < 25.5) {
|
||||
left=29;
|
||||
mid=37;
|
||||
right=44;
|
||||
} else if (value >= 25.5 and value < 26) {
|
||||
left=29;
|
||||
mid=37;
|
||||
right=45;
|
||||
} else if (value >= 26 and value < 26.5) {
|
||||
left=29;
|
||||
mid=37;
|
||||
right=46;
|
||||
} else if (value >= 26.5 and value < 27) {
|
||||
left=29;
|
||||
mid=37;
|
||||
right=47;
|
||||
} else if (value >= 27) {
|
||||
left=29;
|
||||
mid=37;
|
||||
right=48;
|
||||
}
|
||||
int v = int(2 * std::min(std::max(value - 13.5, 0.0), 5.0));
|
||||
int left = v + (v ? 19 : 16); // 16 is empty left.
|
||||
v = int(2 * std::min(std::max(value - 18.0, 0.0), 4.0));
|
||||
int mid = v + (v ? 29 : 17); // 17 is empty mid.
|
||||
v = int(2 * std::min(std::max(value - 21.5, 0.0), 5.5));
|
||||
int right = v + (v ? 37 : 18); // 18 is empty right.
|
||||
// sends the 3 images to the display
|
||||
//ESP_LOGD("nextion", "thermostat left %i", left);
|
||||
//ESP_LOGD("nextion", "thermostat mid %i", mid);
|
||||
@@ -378,6 +306,41 @@ api:
|
||||
id(disp1).set_component_text_printf("target_temp", "%.1f°", value);
|
||||
id(display_target_temp).publish_state(value);
|
||||
|
||||
#### Service to set the buttons ####
|
||||
- service: set_button
|
||||
variables:
|
||||
btn_id: string
|
||||
btn_pic: int
|
||||
btn_bg: int
|
||||
btn_icon_font: int
|
||||
btn_txt_font: int
|
||||
btn_bri_font: int
|
||||
btn_icon: string
|
||||
btn_label: string
|
||||
btn_bri_txt: string
|
||||
then:
|
||||
- wait_until:
|
||||
switch.is_on: nextion_init
|
||||
- lambda: |-
|
||||
// ESP_LOGD("nextion", "set button %s", btn_id.c_str());
|
||||
std::string btnicon = btn_id.c_str() + std::string("icon");
|
||||
std::string btntext = btn_id.c_str() + std::string("text");
|
||||
std::string btnbri = btn_id.c_str() + std::string("bri");
|
||||
id(disp1).send_command_printf("%spic.pic=%i", btn_id.c_str(), btn_pic);
|
||||
id(disp1).set_component_background_color(btnicon.c_str(), btn_bg);
|
||||
id(disp1).set_component_background_color(btntext.c_str(), btn_bg);
|
||||
id(disp1).set_component_background_color(btnbri.c_str(), btn_bg);
|
||||
id(disp1).set_component_font_color(btnicon.c_str(), btn_icon_font);
|
||||
id(disp1).set_component_font_color(btntext.c_str(), btn_txt_font);
|
||||
id(disp1).set_component_font_color(btnbri.c_str(), btn_bri_font);
|
||||
id(disp1).set_component_text_printf(btnicon.c_str(), "%s", btn_icon.c_str());
|
||||
id(disp1).set_component_text_printf(btntext.c_str(), "%s", btn_label.c_str());
|
||||
// id(disp1).set_component_text_printf(btnbri.c_str(), "%s", btn_bri_txt.c_str());
|
||||
if (strcmp(btn_bri_txt.c_str(), "0") != 0) {
|
||||
id(disp1).set_component_text_printf(btnbri.c_str(), "%s", btn_bri_txt.c_str());
|
||||
} else {
|
||||
id(disp1).set_component_text_printf(btnbri.c_str(), " ");
|
||||
}
|
||||
|
||||
##### START - GLOBALS CONFIGURATION #####
|
||||
globals:
|
||||
@@ -430,7 +393,7 @@ globals:
|
||||
restore_value: no
|
||||
initial_value: ''
|
||||
|
||||
##### lastclick_ccurrentpage State #####
|
||||
##### lastclick_currentpage State #####
|
||||
- id: currentpage_global
|
||||
type: std::string
|
||||
restore_value: no
|
||||
@@ -442,22 +405,75 @@ binary_sensor:
|
||||
###### LEFT BUTTON BELOW DISPLAY TO TOGGLE RELAY#####
|
||||
- platform: gpio
|
||||
name: ${device_name} Left Button
|
||||
id: left_button
|
||||
pin:
|
||||
number: 14
|
||||
inverted: true
|
||||
on_click:
|
||||
then:
|
||||
- if:
|
||||
condition:
|
||||
and:
|
||||
- switch.is_on: relay1_fallback
|
||||
- not:
|
||||
api.connected:
|
||||
then:
|
||||
- switch.toggle: relay_1
|
||||
- if:
|
||||
condition:
|
||||
switch.is_on: relay_1
|
||||
then:
|
||||
- lambda: id(disp1).send_command_printf("home.left_bt_pic.pic=78");
|
||||
- lambda: id(disp1).send_command_printf("home.icon_top_01","\U0000E3A5");
|
||||
else:
|
||||
- lambda: id(disp1).send_command_printf("home.left_bt_pic.pic=77");
|
||||
- lambda: id(disp1).send_command_printf("home.icon_top_01","\U0000FFFF");
|
||||
|
||||
|
||||
##### RIGHT BUTTON BELOW DISPLAY TO TOGGLE RELAY #####
|
||||
- platform: gpio
|
||||
name: ${device_name} Right Button
|
||||
id: right_button
|
||||
pin:
|
||||
number: 27
|
||||
inverted: true
|
||||
on_click:
|
||||
then:
|
||||
- if:
|
||||
condition:
|
||||
and:
|
||||
- switch.is_on: relay2_fallback
|
||||
- not:
|
||||
api.connected:
|
||||
then:
|
||||
- switch.toggle: relay_2
|
||||
- if:
|
||||
condition:
|
||||
switch.is_on: relay_2
|
||||
then:
|
||||
- lambda: id(disp1).send_command_printf("home.right_bt_pic.pic=78");
|
||||
- lambda: id(disp1).send_command_printf("home.icon_top_02","\U0000E3A8");
|
||||
else:
|
||||
- lambda: id(disp1).send_command_printf("home.right_bt_pic.pic=77");
|
||||
- lambda: id(disp1).send_command_printf("home.icon_top_02","\U0000FFFF");
|
||||
|
||||
##### JUMP PAGE TO SETTING PAGE #####
|
||||
- platform: nextion
|
||||
name: $device_name setting page
|
||||
page_id: 0
|
||||
component_id: 52
|
||||
internal: true
|
||||
on_multi_click:
|
||||
- timing:
|
||||
- ON for at least 1s #LONG Press
|
||||
then:
|
||||
- lambda: 'id(disp1).send_command_printf("page settings");'
|
||||
|
||||
##### Restart NSPanel Button - Setting Page #####
|
||||
- platform: nextion
|
||||
name: ${device_name} Restart
|
||||
page_id: 7
|
||||
component_id: 9
|
||||
component_id: 13
|
||||
internal: true
|
||||
on_click:
|
||||
- button.press: restart_nspanel
|
||||
@@ -466,7 +482,7 @@ binary_sensor:
|
||||
- platform: nextion
|
||||
name: ${device_name} Restart
|
||||
page_id: 8
|
||||
component_id: 5
|
||||
component_id: 4
|
||||
internal: true
|
||||
on_click:
|
||||
- button.press: restart_nspanel
|
||||
@@ -475,7 +491,7 @@ binary_sensor:
|
||||
- platform: nextion
|
||||
name: ${device_name} Sleep Modus
|
||||
page_id: 7
|
||||
component_id: 4
|
||||
component_id: 14
|
||||
internal: true
|
||||
on_click:
|
||||
- switch.toggle: sleep_modus
|
||||
@@ -504,22 +520,30 @@ sensor:
|
||||
- platform: wifi_signal
|
||||
name: ${device_name} RSSI
|
||||
update_interval: 60s
|
||||
on_value:
|
||||
- if:
|
||||
condition:
|
||||
wifi.connected:
|
||||
then:
|
||||
- lambda: id(disp1).set_component_text_printf("home.wifi_icon", "%s", "\U0000E5A8");
|
||||
else:
|
||||
- lambda: id(disp1).set_component_text_printf("home.wifi_icon", "%s", "\U0000FFFF");
|
||||
|
||||
##### INTERNAL TEMPERATUE SENSOR, ADC VALUE #####
|
||||
##### INTERNAL TEMPERATURE SENSOR, ADC VALUE #####
|
||||
- platform: adc
|
||||
id: ntc_source
|
||||
pin: 38
|
||||
update_interval: 10s
|
||||
update_interval: 60s
|
||||
attenuation: 11db
|
||||
|
||||
##### INTERNAL TEMPERATUE SENSOR, adc reading converted to resistance (calculation)#####
|
||||
##### INTERNAL TEMPERATURE SENSOR, adc reading converted to resistance (calculation)#####
|
||||
- platform: resistance
|
||||
id: resistance_sensor
|
||||
sensor: ntc_source
|
||||
configuration: DOWNSTREAM
|
||||
resistor: 11.2kOhm
|
||||
|
||||
##### INTERNAL TEMPERATUE SENSOR, resistance to temperature (calculation) #####
|
||||
##### INTERNAL TEMPERATURE SENSOR, resistance to temperature (calculation) #####
|
||||
- platform: ntc
|
||||
name: ${device_name} Temperature
|
||||
id: temp_nspanel
|
||||
@@ -557,7 +581,7 @@ sensor:
|
||||
- number.set:
|
||||
id: display_brightness
|
||||
value: !lambda 'return int(x);'
|
||||
# send text field percentage of current_lightslider_val
|
||||
# send text field percentage of current_lightslider_val
|
||||
- lambda: id(disp1).set_component_text_printf("settings.a03", "%i", id(display_brightness_global));
|
||||
|
||||
###### Display DIM Brightness GET VALUE FROM NSPanel SLIDER #####
|
||||
@@ -573,7 +597,7 @@ sensor:
|
||||
- number.set:
|
||||
id: display_dim_brightness
|
||||
value: !lambda 'return int(x);'
|
||||
# send text field percentage of current_lightslider_val
|
||||
# send text field percentage of current_lightslider_val
|
||||
- lambda: id(disp1).set_component_text_printf("settings.a04", "%i", id(display_dim_brightness_global));
|
||||
|
||||
###### Send current page to HA
|
||||
@@ -600,6 +624,7 @@ text_sensor:
|
||||
ip_address:
|
||||
name: ${device_name} IP
|
||||
disabled_by_default: true
|
||||
id: ip_address
|
||||
ssid:
|
||||
name: ${device_name} SSID
|
||||
disabled_by_default: true
|
||||
@@ -615,6 +640,10 @@ text_sensor:
|
||||
name: ${device_name} Notification Text
|
||||
id: notification_text
|
||||
|
||||
- platform: template
|
||||
name: ${device_name} Settings Entity
|
||||
id: settings_entity
|
||||
|
||||
##### last click sensor, the main action variable - push to HA #####
|
||||
- platform: nextion
|
||||
nextion_id: disp1
|
||||
@@ -635,7 +664,9 @@ text_sensor:
|
||||
- globals.set:
|
||||
id: lastclick_general_global
|
||||
value: !lambda return x;
|
||||
|
||||
- lambda: |-
|
||||
id(page_timer)->execute(int(id(page_timeout).state));
|
||||
|
||||
##### last click lightsettings page, the main action variable - push to HA #####
|
||||
- platform: nextion
|
||||
nextion_id: disp1
|
||||
@@ -656,6 +687,8 @@ text_sensor:
|
||||
- globals.set:
|
||||
id: lastclick_lightsettings_global
|
||||
value: !lambda return x;
|
||||
- lambda: |-
|
||||
id(page_timer)->execute(int(id(page_timeout).state));
|
||||
|
||||
##### last click coversettings page, the main action variable - push to HA #####
|
||||
- platform: nextion
|
||||
@@ -677,6 +710,8 @@ text_sensor:
|
||||
- globals.set:
|
||||
id: lastclick_coversettings_global
|
||||
value: !lambda return x;
|
||||
- lambda: |-
|
||||
id(page_timer)->execute(int(id(page_timeout).state));
|
||||
|
||||
##### last click climate page, the main action variable - push to HA #####
|
||||
- platform: nextion
|
||||
@@ -698,6 +733,8 @@ text_sensor:
|
||||
- globals.set:
|
||||
id: lastclick_climatesettings_global
|
||||
value: !lambda return x;
|
||||
- lambda: |-
|
||||
id(page_timer)->execute(int(id(page_timeout).state));
|
||||
|
||||
##### currentpage sensor, the main action variable - push to HA #####
|
||||
- platform: nextion
|
||||
@@ -719,9 +756,35 @@ text_sensor:
|
||||
- globals.set:
|
||||
id: currentpage_global
|
||||
value: !lambda return x;
|
||||
- lambda: |-
|
||||
id(page_timer)->execute(int(id(page_timeout).state));
|
||||
|
||||
|
||||
##### START - SWITCH CONFIGURATION #####
|
||||
##### touchevent sensor, Reset the page timeout #####
|
||||
- platform: nextion
|
||||
nextion_id: disp1
|
||||
#name: ${device_name} touchevent
|
||||
id: disp1_touchevent
|
||||
update_interval: 50ms
|
||||
component_name: touchevent
|
||||
internal: true
|
||||
filters:
|
||||
- lambda: |-
|
||||
static std::string touchevent_history = "";
|
||||
if (strcmp(x.c_str(), touchevent_history.c_str()) != 0) {
|
||||
touchevent_history = x;
|
||||
return x;
|
||||
// touchevent_history = "";
|
||||
} else {
|
||||
return {};
|
||||
}
|
||||
on_value:
|
||||
then:
|
||||
- lambda: |-
|
||||
id(page_timer)->execute(int(id(page_timeout).state));
|
||||
|
||||
|
||||
##### START - SWITCH CONFIGURATION #####
|
||||
switch:
|
||||
|
||||
# ##### Restart switch ######
|
||||
@@ -765,16 +828,6 @@ switch:
|
||||
restore_state: false
|
||||
optimistic: true
|
||||
|
||||
##### UPDATE TFT DISPLAY #####
|
||||
- platform: template
|
||||
name: ${device_name} Update TFT display
|
||||
id: tft_update
|
||||
entity_category: config
|
||||
turn_on_action:
|
||||
- delay: 16ms
|
||||
- lambda: id(disp1).upload_tft();
|
||||
- switch.turn_off: tft_update
|
||||
|
||||
##### PHYSICAL SWITCH 1 #####
|
||||
- platform: gpio
|
||||
name: ${device_name} Relay 1
|
||||
@@ -788,7 +841,7 @@ switch:
|
||||
id: relay_2
|
||||
pin:
|
||||
number: 19
|
||||
|
||||
|
||||
##### DISPLAY ALWAYS ON #####
|
||||
- platform: gpio
|
||||
name: ${device_name} Screen Power
|
||||
@@ -822,6 +875,20 @@ switch:
|
||||
value: '1'
|
||||
- lambda: id(disp1).set_component_value("settings.a02",1);
|
||||
|
||||
##### Relay Local control Fallback #####
|
||||
- platform: template
|
||||
name: ${device_name} Relay 1 Local Fallback
|
||||
id: relay1_fallback
|
||||
entity_category: config
|
||||
restore_state: true
|
||||
optimistic: true
|
||||
|
||||
- platform: template
|
||||
name: ${device_name} Relay 2 Local Fallback
|
||||
id: relay2_fallback
|
||||
entity_category: config
|
||||
restore_state: true
|
||||
optimistic: true
|
||||
|
||||
##### START - NUMBER CONFIGURATION #####
|
||||
number:
|
||||
@@ -880,6 +947,17 @@ number:
|
||||
id: temperature_correction_global
|
||||
value: !lambda 'return x;'
|
||||
|
||||
##### page-timeout #####
|
||||
- platform: template
|
||||
name: ${device_name} Page Timeout
|
||||
id: page_timeout
|
||||
entity_category: config
|
||||
min_value: 0
|
||||
max_value: 60
|
||||
initial_value: 10
|
||||
step: 1
|
||||
restore_value: true
|
||||
optimistic: true
|
||||
|
||||
##### START - DISPLAY START CONFIGURATION #####
|
||||
display:
|
||||
@@ -890,9 +968,11 @@ display:
|
||||
on_setup:
|
||||
then:
|
||||
- lambda: id(disp1).send_command_printf("page 8");
|
||||
- lambda: id(disp1).set_component_text_printf("boot.esph_version", "%s", "3.2.2"); ### esphome-version ###
|
||||
- wait_until:
|
||||
api.connected
|
||||
- delay: 0.5s
|
||||
- lambda: id(disp1).set_component_text_printf("boot.ip_addr", "%s", id(ip_address).state.c_str());
|
||||
- delay: 1s
|
||||
- number.set:
|
||||
id: display_brightness
|
||||
value: !lambda 'return id(display_brightness_global);'
|
||||
@@ -904,13 +984,25 @@ display:
|
||||
- lambda: id(disp1).send_command_printf("settings.brightslider.val=%i", id(display_brightness_global));
|
||||
- lambda: id(disp1).send_command_printf("settings.dimslider.val=%i", id(display_dim_brightness_global));
|
||||
- lambda: id(disp1).send_command_printf("home.sleepmodus.val=%i", id(sleep_modus_global));
|
||||
- lambda: |-
|
||||
id(disp1).set_component_value("settings.a02",0);
|
||||
if (id(sleep_modus_global) == 1)
|
||||
{
|
||||
id(disp1).set_component_value("settings.a02",1);
|
||||
}
|
||||
- delay: 0.5s
|
||||
- lambda: id(disp1).set_component_value("settings.a02", id(sleep_modus_global) == 1);
|
||||
- delay: 1s
|
||||
- switch.template.publish:
|
||||
id: nextion_init
|
||||
state: on
|
||||
|
||||
### Script for page_timer
|
||||
script:
|
||||
- id: page_timer
|
||||
mode: restart
|
||||
parameters:
|
||||
delay: int
|
||||
then:
|
||||
- lambda: ESP_LOGD("nspanel", "start page-timer delay %i", int(id(page_timeout).state));
|
||||
- delay: !lambda return delay *1000;
|
||||
- lambda: |-
|
||||
if (id(disp1_currentpage).state == "home" or id(disp1_currentpage).state == "screensaver" or id(disp1_currentpage).state == "boot" or int(id(page_timeout).state) == 0) {
|
||||
ESP_LOGD("nspanel", "no page-jump");
|
||||
} else {
|
||||
ESP_LOGD("nspanel", "timer->home");
|
||||
id(disp1).send_command_printf("page 0");
|
||||
}
|
||||
|
||||
BIN
nspanel_eu.HMI
Normal file
BIN
nspanel_eu.HMI
Normal file
Binary file not shown.
BIN
nspanel_eu.tft
Normal file
BIN
nspanel_eu.tft
Normal file
Binary file not shown.
BIN
nspanel_us.HMI
Normal file
BIN
nspanel_us.HMI
Normal file
Binary file not shown.
BIN
nspanel_us.tft
Normal file
BIN
nspanel_us.tft
Normal file
Binary file not shown.
Reference in New Issue
Block a user