Compare commits
300 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
1f6eabeeee | ||
|
|
0309dec38d | ||
|
|
143b80f630 | ||
|
|
6001ab425c | ||
|
|
817d187dd8 | ||
|
|
ab0e622dd9 | ||
|
|
1541c07e99 | ||
|
|
a823bf9739 | ||
|
|
ec79ccf008 | ||
|
|
bd5fb7adc6 | ||
|
|
5e80691b3e | ||
|
|
fbbb10b4e8 | ||
|
|
593a9f8592 | ||
|
|
45f3ab2f13 | ||
|
|
3422a49973 | ||
|
|
e70a661f2f | ||
|
|
7380a485fd | ||
|
|
ddbdf6fcab | ||
|
|
e3e7b16b6a | ||
|
|
4fc051acda | ||
|
|
281d284f67 | ||
|
|
f1a0cd3086 | ||
|
|
773b39f7e5 | ||
|
|
8608b3b397 | ||
|
|
8bbeace1b2 | ||
|
|
cb9ba1a2ff | ||
|
|
204d574457 | ||
|
|
21a8598f87 | ||
|
|
53dabf89fe | ||
|
|
512189af4e | ||
|
|
491b5cb23e | ||
|
|
8ae14a4cff | ||
|
|
c3de9950ac | ||
|
|
3b32ae3754 | ||
|
|
471eab4e93 | ||
|
|
d44ced1cd5 | ||
|
|
2d0212b2f8 | ||
|
|
b018c22922 | ||
|
|
bacfe4bec9 | ||
|
|
8295284b65 | ||
|
|
03842f1a42 | ||
|
|
9363ee3b48 | ||
|
|
42ed489a1c | ||
|
|
4993695a73 | ||
|
|
a56db0170c | ||
|
|
0ac19e4096 | ||
|
|
14328846a7 | ||
|
|
b3648e947d | ||
|
|
ca736ac139 | ||
|
|
cf7f943d82 | ||
|
|
e6e286edd0 | ||
|
|
6c86ed1f7f | ||
|
|
3a4c3fe37d | ||
|
|
ec67e93af0 | ||
|
|
88472c7de1 | ||
|
|
c0e8a46865 | ||
|
|
a7aa574d8c | ||
|
|
e32df95471 | ||
|
|
c19cdd3703 | ||
|
|
1fafff21b9 | ||
|
|
bf11e4c6e6 | ||
|
|
37750c642b | ||
|
|
9340e3c6cd | ||
|
|
280f88de2e | ||
|
|
5b8f19b425 | ||
|
|
fe7da90f30 | ||
|
|
2b1cf79f46 | ||
|
|
5513f1d1ab | ||
|
|
fae2f043e7 | ||
|
|
8e9aa4efc1 | ||
|
|
3871a97d8a | ||
|
|
3f634e3eb5 | ||
|
|
e0455e1635 | ||
|
|
71935d37f8 | ||
|
|
34f057dba4 | ||
|
|
7c42431143 | ||
|
|
cd766c2cad | ||
|
|
1d12f87a5e | ||
|
|
1305284855 | ||
|
|
24a415f773 | ||
|
|
d6d8de0b8e | ||
|
|
50e53ae596 | ||
|
|
92f52be4f1 | ||
|
|
3d01355b75 | ||
|
|
fffc70e733 | ||
|
|
79427157a8 | ||
|
|
942bacdc28 | ||
|
|
415465ee62 | ||
|
|
a21dc7524c | ||
|
|
0e417e5e91 | ||
|
|
1a36d9bf36 | ||
|
|
3d7564b003 | ||
|
|
7bebb0e8bf | ||
|
|
34daabcaad | ||
|
|
817aa011cf | ||
|
|
7f2ecd360e | ||
|
|
f259e202bd | ||
|
|
045c1ed939 | ||
|
|
532f0f5ffe | ||
|
|
805317e865 | ||
|
|
a1e420e2cf | ||
|
|
549a978736 | ||
|
|
184f25cb3f | ||
|
|
dd14d6f88c | ||
|
|
7a4f9f6f70 | ||
|
|
e7df0e5099 | ||
|
|
bda5a311c6 | ||
|
|
e5c44c9510 |
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
|
||||
10
README.md
10
README.md
@@ -1,5 +1,8 @@
|
||||
# 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)
|
||||
|
||||
@@ -13,6 +16,8 @@ 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 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)
|
||||
|
||||
⭐ All Feature Requests can be found here [All Feature Request](https://github.com/Blackymas/NSPanel_HA_Blueprint/labels/new%20feature%20request)
|
||||
@@ -24,8 +29,11 @@ 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:
|
||||

|
||||

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

|
||||

|
||||
|
||||
(Home and Buttonpage)
|
||||
|
||||
|
||||
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.
BIN
custom_configuration/OLD NSPanel version/nspanel_old.HMI
Normal file
BIN
custom_configuration/OLD NSPanel version/nspanel_old.HMI
Normal file
Binary file not shown.
BIN
custom_configuration/OLD NSPanel version/nspanel_old.tft
Normal file
BIN
custom_configuration/OLD NSPanel version/nspanel_old.tft
Normal file
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.
BIN
nspanel.HMI
BIN
nspanel.HMI
Binary file not shown.
BIN
nspanel.tft
BIN
nspanel.tft
Binary file not shown.
13402
nspanel_blueprint.yaml
13402
nspanel_blueprint.yaml
File diff suppressed because it is too large
Load Diff
@@ -107,12 +107,22 @@ 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:
|
||||
@@ -124,6 +134,14 @@ api:
|
||||
- service: upload_tft
|
||||
then:
|
||||
- lambda: 'id(disp1)->upload_tft();'
|
||||
|
||||
##### SERVICE TO UPDATE THE TFT FILE from URL #####
|
||||
- service: upload_tft_url
|
||||
variables:
|
||||
url: string
|
||||
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
|
||||
@@ -153,7 +171,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:
|
||||
@@ -162,7 +180,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:
|
||||
@@ -170,6 +188,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:
|
||||
@@ -179,6 +204,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:
|
||||
@@ -189,6 +215,67 @@ api:
|
||||
switch.is_on: nextion_init
|
||||
- lambda: 'id(disp1).set_component_background_color(component.c_str(), message);'
|
||||
|
||||
##### Service to show a notification-message on the screen #####
|
||||
- service: notification_show
|
||||
variables:
|
||||
label: string
|
||||
text: string
|
||||
then:
|
||||
- wait_until:
|
||||
switch.is_on: nextion_init
|
||||
- lambda: |-
|
||||
id(disp1).send_command_printf("page notification");
|
||||
id(disp1).set_component_text_printf("notification.notifi_label", "%s", label.c_str());
|
||||
id(disp1).set_component_text_printf("notification.notifi_text01", "%s", text.c_str());
|
||||
id(notification_label).publish_state(label.c_str());
|
||||
id(notification_text).publish_state(text.c_str());
|
||||
- switch.turn_on: notification_unread
|
||||
- if:
|
||||
condition:
|
||||
switch.is_on: notification_sound
|
||||
then:
|
||||
- rtttl.play: "two short:d=4,o=5,b=100:16e6,16e6"
|
||||
|
||||
##### Service to clear the notification #####
|
||||
- service: notification_clear
|
||||
then:
|
||||
- wait_until:
|
||||
switch.is_on: nextion_init
|
||||
- lambda: |-
|
||||
id(notification_label).publish_state("");
|
||||
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
|
||||
variables:
|
||||
song_str: string
|
||||
then:
|
||||
- rtttl.play:
|
||||
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
|
||||
variables:
|
||||
@@ -198,126 +285,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);
|
||||
@@ -381,7 +354,7 @@ globals:
|
||||
restore_value: no
|
||||
initial_value: ''
|
||||
|
||||
##### lastclick_ccurrentpage State #####
|
||||
##### lastclick_currentpage State #####
|
||||
- id: currentpage_global
|
||||
type: std::string
|
||||
restore_value: no
|
||||
@@ -393,22 +366,80 @@ 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
|
||||
- lambda: id(disp1).send_command_printf("home.icon_top_01.pic=51");
|
||||
- lambda: id(disp1).send_command_printf("home.left_bt_pic.pic=98");
|
||||
- if:
|
||||
condition:
|
||||
switch.is_on: relay_1
|
||||
then:
|
||||
- lambda: id(disp1).send_command_printf("home.icon_top_01.pic=105");
|
||||
|
||||
|
||||
##### 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
|
||||
- lambda: id(disp1).send_command_printf("home.icon_top_02.pic=51");
|
||||
- lambda: id(disp1).send_command_printf("home.right_bt_pic.pic=98");
|
||||
- if:
|
||||
condition:
|
||||
switch.is_on: relay_2
|
||||
then:
|
||||
- lambda: id(disp1).send_command_printf("home.icon_top_02.pic=106");
|
||||
|
||||
##### Restart NSPanel Button #####
|
||||
##### JUMP PAGE TO SETTING PAGE #####
|
||||
- platform: nextion
|
||||
name: $device_name setting page
|
||||
page_id: 0
|
||||
component_id: 53
|
||||
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: 15
|
||||
internal: true
|
||||
on_click:
|
||||
- button.press: restart_nspanel
|
||||
|
||||
##### Restart NSPanel Button - Boot Page #####
|
||||
- platform: nextion
|
||||
name: ${device_name} Restart
|
||||
page_id: 8
|
||||
component_id: 5
|
||||
internal: true
|
||||
on_click:
|
||||
- button.press: restart_nspanel
|
||||
@@ -417,7 +448,7 @@ binary_sensor:
|
||||
- platform: nextion
|
||||
name: ${device_name} Sleep Modus
|
||||
page_id: 7
|
||||
component_id: 4
|
||||
component_id: 16
|
||||
internal: true
|
||||
on_click:
|
||||
- switch.toggle: sleep_modus
|
||||
@@ -446,22 +477,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
|
||||
@@ -472,12 +511,12 @@ sensor:
|
||||
reference_resistance: 10kOhm
|
||||
filters:
|
||||
- lambda: return x + id(temperature_correction_global);
|
||||
on_value:
|
||||
then:
|
||||
- wait_until:
|
||||
switch.is_on: nextion_init
|
||||
- lambda: id(disp1).set_component_text_printf("home.current_temp", "%.1f°", id(temp_nspanel).state); # onboard temp (thermostat temp) to home page.
|
||||
# - lambda: id(disp1).set_component_text_printf("climate.current_temp", "%.1f", id(temp_nspanel).state);
|
||||
# on_value:
|
||||
# then:
|
||||
# - wait_until:
|
||||
# switch.is_on: nextion_init
|
||||
# - lambda: id(disp1).set_component_text_printf("home.current_temp", "%.1f°", id(temp_nspanel).state); # onboard temp (thermostat temp) to home page.
|
||||
# - lambda: id(disp1).set_component_text_printf("climate.current_temp", "%.1f", id(temp_nspanel).state);
|
||||
|
||||
##### current value of page-climate target_temp #####
|
||||
- platform: template
|
||||
@@ -542,6 +581,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
|
||||
@@ -549,6 +589,18 @@ text_sensor:
|
||||
name: ${device_name} BSSID
|
||||
disabled_by_default: true
|
||||
|
||||
- platform: template
|
||||
name: ${device_name} Notification Label
|
||||
id: notification_label
|
||||
|
||||
- platform: template
|
||||
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
|
||||
@@ -569,6 +621,8 @@ 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
|
||||
@@ -590,6 +644,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
|
||||
@@ -611,6 +667,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
|
||||
@@ -632,6 +690,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
|
||||
@@ -653,6 +713,32 @@ text_sensor:
|
||||
- globals.set:
|
||||
id: currentpage_global
|
||||
value: !lambda return x;
|
||||
- lambda: |-
|
||||
id(page_timer)->execute(int(id(page_timeout).state));
|
||||
|
||||
|
||||
##### 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 #####
|
||||
@@ -675,15 +761,29 @@ switch:
|
||||
assumed_state: off
|
||||
optimistic: true
|
||||
|
||||
##### UPDATE TFT DISPLAY #####
|
||||
##### Notification unread #####
|
||||
- platform: template
|
||||
name: Update TFT display
|
||||
id: tft_update
|
||||
name: ${device_name} Notification unread
|
||||
id: notification_unread
|
||||
entity_category: config
|
||||
turn_on_action:
|
||||
- delay: 16ms
|
||||
- lambda: id(disp1).upload_tft();
|
||||
- switch.turn_off: tft_update
|
||||
restore_state: true
|
||||
optimistic: true
|
||||
|
||||
##### Notification sound #####
|
||||
- platform: template
|
||||
name: ${device_name} Notification sound
|
||||
id: notification_sound
|
||||
entity_category: config
|
||||
restore_state: true
|
||||
optimistic: true
|
||||
|
||||
##### Confirmation Message #####
|
||||
- platform: template
|
||||
name: ${device_name} Confirmation Message
|
||||
id: confirmation_message
|
||||
entity_category: config
|
||||
restore_state: false
|
||||
optimistic: true
|
||||
|
||||
##### PHYSICAL SWITCH 1 #####
|
||||
- platform: gpio
|
||||
@@ -732,6 +832,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:
|
||||
@@ -790,6 +904,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:
|
||||
@@ -799,17 +924,12 @@ display:
|
||||
tft_url: ${nextion_update_url}
|
||||
on_setup:
|
||||
then:
|
||||
- lambda: id(disp1).send_command_printf("page 9"); ##### CHANGE! - Loading page #####
|
||||
- lambda: id(disp1).send_command_printf("page 8");
|
||||
- lambda: id(disp1).set_component_text_printf("boot.esph_version", "%s", "3.2"); ### esphome-version ###
|
||||
- wait_until:
|
||||
api.connected
|
||||
- delay: 0.5s
|
||||
- rtttl.play: "two short:d=4,o=5,b=100:16e6,16e6"
|
||||
- delay: 0.5s
|
||||
- switch.template.publish:
|
||||
id: nextion_init
|
||||
state: on
|
||||
- lambda: id(disp1).send_command_printf("page 0"); #### home page #####
|
||||
- delay: 2s ##### gives the display time to update other components & set the home page #####
|
||||
- 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);'
|
||||
@@ -821,9 +941,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);
|
||||
}
|
||||
- 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