Merge pull request #31 from Blackymas/dev

Dev to Beta
This commit is contained in:
Blackymas
2022-11-07 00:07:13 +01:00
committed by GitHub
22 changed files with 25853 additions and 3857 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

5
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,5 @@
{
"files.associations": {
"*.yaml": "home-assistant"
}
}

File diff suppressed because it is too large Load Diff

BIN
custom_configuration/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,5 @@
{
"files.associations": {
"*.yaml": "home-assistant"
}
}

View File

@@ -0,0 +1,159 @@
# NSPanel Custom with HA Blueprint
Custom Firmware for NsPanel (esphome) and HA Blueprint with configuration of button, light settings, thermostate, colorwheel, colortemp, cover, weather preview, automatic TFT upload etc.
Why another version for the NSPanel?
Well - all versions I've seen have been missing something everywhere.
That's why I decided to create something myself.
My thanks to Masto, Marcfager, lovejoy777, Hellis81 and SmartHome yourself ( link see below) for sharing your code. Give them the credit they deserve, I'm merely a copy paste ninja. XDD
### GOAL:
My goal was to create a version that could be quickly adopted for multiple NSPanels.
In addition, the configuration should be as simple as possible. Therefore I decided to put most of it into a HA Blueprint
In addition, another NSPanel can be configured very quickly. But have a look yourself ;)
![My project-1-16](https://user-images.githubusercontent.com/41958506/192649717-6b04cd1a-1829-4fd5-8ba4-09eaf32f85d0.png)
![My project-1-18](https://user-images.githubusercontent.com/41958506/192650810-c7210d15-a07e-4f70-a593-af0a51c7f4bb.png)
(Home / Thermostat - more pictures see below)
## Features:
- easy to use and simple configuration via Blueprint
- 40 buttons on 5 button pages with long press function for settings (more buttons are also possible)
- Weather + 5 days weather forcast
- Thermostat + Touch + Relay control for floor heating
- Light control (brightness-slider, colorwheel, TempColor-slider) - via Long Press
- Cover control (open, close, position-slider) - via long press
- Settings page (display brightness, display dim brightness, auto-dim, sleep mode, reboot NSPanel)
- Swipe between pages
- Top menu with 10 icons for specific states
- Heating control (hot water)
- Auto Upload TFT File to Nextion Display
- Swipe between pages
- modern design - design easy to change via Adobe Express (free + design template)
- 2 pysical switches
- and much more ;)
## NSPanel:
![My project-1-16](https://user-images.githubusercontent.com/41958506/192649717-6b04cd1a-1829-4fd5-8ba4-09eaf32f85d0.png)
![My project-1-17](https://user-images.githubusercontent.com/41958506/192650793-9b657fa2-8056-46d7-aca3-065cde291df8.png)
(Home / Weather Forcast)
![My project-1-18](https://user-images.githubusercontent.com/41958506/192650810-c7210d15-a07e-4f70-a593-af0a51c7f4bb.png)
![My project-1-20](https://user-images.githubusercontent.com/41958506/192652078-ec4f3268-c00b-42a8-b1f9-c4da3e53d7a5.png)
(Thermostat / Settings Page)
![My project-1-22](https://user-images.githubusercontent.com/41958506/192652105-23baac1d-9dee-40c1-8596-9cae8827cf1c.png)
![My project-1-23](https://user-images.githubusercontent.com/41958506/192652116-93b850d3-553b-4f14-bb0f-78dff959e2fd.png)
(Light Settings Colorwheel / Light Settings TempColor)
![My project-1-24](https://user-images.githubusercontent.com/41958506/192652126-91b0aae9-75ae-44a0-842d-0a78d93f2da5.png)
![My project-1-25](https://user-images.githubusercontent.com/41958506/192652131-604c0636-0f96-44b8-ae6a-793bde56d0e1.png)
(Cover Settings / Button Page)
![My project-1-26](https://user-images.githubusercontent.com/41958506/192652263-297cda87-3eff-452c-9ec3-3cd76da94de7.png)
## Blueprint:
![Bildschirmfoto 2022-09-27 um 23 13 33](https://user-images.githubusercontent.com/41958506/192652755-069f91c9-927e-4aea-9569-d596cdfa0e56.png)
# Pages
## Home
- current weather with button to Weather Forcast page
- Temperature outside
- Status icons at the top
- Room temperature with button to thermostat page
- Room humidity
- Hot water temperature
- Button to display settings page
## Weather Forcast
- 5 days Weather Forcast via swipe (Integration Accuweather - but should also go with another integration)
- Lowest and highest temperature outside
- Date
- Rain probability
- Sunshine hours
- Sun pressure
- Thunderstorm probability
- Wind speed
- Night thunderstorm probability and wind speed
## Thermostat
- Touch Temp control
- Outside temperature
- Hot water
- Floor heating on, off and idle
- Hot water button
- Status icons
## Display Settings
- Restart NSPanel
- Sleep mode - display off after time X
- Display brightness slider
- Display dim brightness slider
- Status Brightness in %
## Light Settings
- Light on and off (alignment with HA)
- Light color with Colorwheel
- Light color with TempColor slider
- Brightness Slider
- Brightness in %.
- Tempcolor value
- Jump back to the right button page
## Cover Settings
- Open and close cover
- Cover position via slider
- Cover battery value (I use Ikea roller blind)
- jump back to the right button page
## Button Page
- 40 Button
- 5 Button pages
- all buttons with long press function
- automatic detection by long press if it is a light or cover for submenu
- swipe between all pages
- swipe also down and up for fast access to certain pages
- number of buttons and button pages can be extended - functions like long press, light settings and cover settings stay the same
## Upcoming Features
- Shorten Esphome code and transfer to Blueprint
- Cover page with window open status as image
- small design adjustments
- Notifications on Home Page
- Energy and Gas consumption on home page
- Extra page for energy dashboard
- Garbage plan with icon on home page
- Let's see what ideas I still have ;)
## HowTo Deutsch
1. den Code aus der Datei esphome.yaml kopieren und in HA unter esphome einfügen. Vorher muss natürlich ein Device erstellt werden.
1.2 in der ESPhome Datei müssen Passwörter eingesetzt werden. Entweder in der ESPHome Secret oder einfach in der ESPhome Datei
1.3 Einige Entities sind aktuell noch in der Esphome Datei angegeben (direkt unter den Passwörtern. Diese Entities müssen noch angepasst werden. In zukunft will ich aber auch diese ins Bluebrint einbauen
3. den Code aus der Datei blueprint.yaml kopieren und eine neue yaml Datei unter config/blueprints erstellen und den Code einfügen
4. HA Automationen neu starten -> Enticklerwerkzege -> YAML -> Automatisierungen
5. den Code aus der Datei sensor.yaml und climate.yaml kopieren und eine eigenen yaml Datei erstellen. Der Code wird in zukunft direkt im Blueprint eingebaut.
6. den Code aus der Datei folder_wather kopieren und in der coniguration.yaml einfügen
7. TFT File auf Home Assistant hochladen (Der Pfad kann später im Blueprint angegeben werden
8. Blueprint unter Automationen auswählen und und Felder ausfüllen.
## Thanks to:
SmartHome yourself: https://www.youtube.com/c/SmarthomeyourselfDe_DIY
Masto: https://github.com/masto/NSPanel-Demo-Files
Marcfager: https://github.com/marcfager/nspanel-mf
lovejoy77: https://github.com/lovejoy777/NSpanel
Hellis81: https://github.com/Hellis81/NS-panel

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,18 @@
climate:
- platform: generic_thermostat
unique_id: cf308990-0dbd-4e8a-be77-aec56d7a5aa4
name: NSPanel Büro
heater: switch.nspanel_buro_relay_2
target_sensor: sensor.nspanel_buro_temperature
min_temp: 13
max_temp: 27
ac_mode: false
target_temp: 22
cold_tolerance: 0.5
hot_tolerance: 0.5
min_cycle_duration:
seconds: 60
keep_alive:
minutes: 3
initial_hvac_mode: "heat"
precision: 0.5

View File

@@ -0,0 +1,7 @@
# Please insert into the default file "configuration.yaml
# Folder must be changed to the directory where the tft file (Nextion Editor) will be uploaded
###########
#
#Folder watcher for NS panel auto upload tft
folder_watcher:
- folder: /config/www/nspanel/

View File

@@ -0,0 +1,78 @@
##### Sensor ######
sensor:
- platform: template
sensors:
wochentag:
friendly_name: "Wochentag"
unique_id: 6ac64850-8563-456c-b562-92343dd96f0b
value_template: >
{% set days = ['Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,', 'Samstag,', 'Sonntag,'] %}
{{ now().timestamp() | timestamp_custom(days[now().weekday()] ~ ' %d.%m')}}
icon_template: mdi:calendar-range
- platform: template
sensors:
wochentag01:
friendly_name: "Wochentag+1"
unique_id: 6b2aad54-3eb0-48cc-ae32-ee3574197f1b
value_template: >
{% set days = ['Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,', 'Samstag,', 'Sonntag,', 'Montag,'] %}
{{(as_timestamp(now())+ (86400)) | timestamp_custom(days[now().weekday()+1] ~ ' %d.%m') }}
icon_template: mdi:calendar-range
- platform: template
sensors:
wochentag02:
friendly_name: "Wochentag+2"
unique_id: edbddaf0-2791-4774-b8d4-aa706f75cc7a
value_template: >
{% set days = ['Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,', 'Samstag,', 'Sonntag,', 'Montag,', 'Dienstag,'] %}
{{(as_timestamp(now())+ (172800)) | timestamp_custom(days[now().weekday()+2] ~ ' %d.%m') }}
icon_template: mdi:calendar-range
- platform: template
sensors:
wochentag03:
friendly_name: "Wochentag+3"
unique_id: ad592622-db86-40f7-9961-4c1ffd21c711
value_template: >
{% set days = ['Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,', 'Samstag,', 'Sonntag,', 'Montag,', 'Dienstag,', 'Mittwoch,'] %}
{{(as_timestamp(now())+ (259200)) | timestamp_custom(days[now().weekday()+3] ~ ' %d.%m') }}
icon_template: mdi:calendar-range
- platform: template
sensors:
wochentag04:
friendly_name: "Wochentag+4"
unique_id: dcb3ed45-2b89-4672-a04f-a55f025ac745
value_template: >
{% set days = ['Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,', 'Samstag,', 'Sonntag,', 'Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,'] %}
{{(as_timestamp(now())+ (345600)) | timestamp_custom(days[now().weekday()+4] ~ ' %d.%m') }}
icon_template: mdi:calendar-range
- platform: template
sensors:
wochentag05:
friendly_name: "Wochentag+5"
unique_id: 77e642a5-de54-452d-9f4a-febe3a7851c2
value_template: >
{% set days = ['Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,', 'Samstag,', 'Sonntag,', 'Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,'] %}
{{(as_timestamp(now())+ (432000)) | timestamp_custom(days[now().weekday()+ 5] ~ ' %d.%m') }}
icon_template: mdi:calendar-range
###### NSPanel Büro - climate target temperature #####
- platform: template
sensors:
nspanel_buro_target_temp:
unique_id: 2393ab74-21ce-42d3-b15e-ec162b9d6f31
friendly_name: NSPanel Buro Target Temp
value_template: "{{ state_attr('climate.nspanel_buro', 'temperature') }}"
###### NSPanel Büro - climate target temperature #####
- platform: template
sensors:
nspanel_lea_target_temp:
unique_id: e8e61ff7-3a41-47ad-bd6c-303f730de96f
friendly_name: NSPanel Lea Target Temp
value_template: "{{ state_attr('climate.nspanel_lea', 'temperature') }}"

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,159 @@
# NSPanel Custom with HA Blueprint
Custom Firmware for NsPanel (esphome) and HA Blueprint with configuration of button, light settings, thermostate, colorwheel, colortemp, cover, weather preview, automatic TFT upload etc.
Why another version for the NSPanel?
Well - all versions I've seen have been missing something everywhere.
That's why I decided to create something myself.
My thanks to Masto, Marcfager, lovejoy777, Hellis81 and SmartHome yourself ( link see below) for sharing your code. Give them the credit they deserve, I'm merely a copy paste ninja. XDD
### GOAL:
My goal was to create a version that could be quickly adopted for multiple NSPanels.
In addition, the configuration should be as simple as possible. Therefore I decided to put most of it into a HA Blueprint
In addition, another NSPanel can be configured very quickly. But have a look yourself ;)
![My project-1-16](https://user-images.githubusercontent.com/41958506/192649717-6b04cd1a-1829-4fd5-8ba4-09eaf32f85d0.png)
![My project-1-18](https://user-images.githubusercontent.com/41958506/192650810-c7210d15-a07e-4f70-a593-af0a51c7f4bb.png)
(Home / Thermostat - more pictures see below)
## Features:
- easy to use and simple configuration via Blueprint
- 40 buttons on 5 button pages with long press function for settings (more buttons are also possible)
- Weather + 5 days weather forcast
- Thermostat + Touch + Relay control for floor heating
- Light control (brightness-slider, colorwheel, TempColor-slider) - via Long Press
- Cover control (open, close, position-slider) - via long press
- Settings page (display brightness, display dim brightness, auto-dim, sleep mode, reboot NSPanel)
- Swipe between pages
- Top menu with 10 icons for specific states
- Heating control (hot water)
- Auto Upload TFT File to Nextion Display
- Swipe between pages
- modern design - design easy to change via Adobe Express (free + design template)
- 2 pysical switches
- and much more ;)
## NSPanel:
![My project-1-16](https://user-images.githubusercontent.com/41958506/192649717-6b04cd1a-1829-4fd5-8ba4-09eaf32f85d0.png)
![My project-1-17](https://user-images.githubusercontent.com/41958506/192650793-9b657fa2-8056-46d7-aca3-065cde291df8.png)
(Home / Weather Forcast)
![My project-1-18](https://user-images.githubusercontent.com/41958506/192650810-c7210d15-a07e-4f70-a593-af0a51c7f4bb.png)
![My project-1-20](https://user-images.githubusercontent.com/41958506/192652078-ec4f3268-c00b-42a8-b1f9-c4da3e53d7a5.png)
(Thermostat / Settings Page)
![My project-1-22](https://user-images.githubusercontent.com/41958506/192652105-23baac1d-9dee-40c1-8596-9cae8827cf1c.png)
![My project-1-23](https://user-images.githubusercontent.com/41958506/192652116-93b850d3-553b-4f14-bb0f-78dff959e2fd.png)
(Light Settings Colorwheel / Light Settings TempColor)
![My project-1-24](https://user-images.githubusercontent.com/41958506/192652126-91b0aae9-75ae-44a0-842d-0a78d93f2da5.png)
![My project-1-25](https://user-images.githubusercontent.com/41958506/192652131-604c0636-0f96-44b8-ae6a-793bde56d0e1.png)
(Cover Settings / Button Page)
![My project-1-26](https://user-images.githubusercontent.com/41958506/192652263-297cda87-3eff-452c-9ec3-3cd76da94de7.png)
## Blueprint:
![Bildschirmfoto 2022-09-27 um 23 13 33](https://user-images.githubusercontent.com/41958506/192652755-069f91c9-927e-4aea-9569-d596cdfa0e56.png)
# Pages
## Home
- current weather with button to Weather Forcast page
- Temperature outside
- Status icons at the top
- Room temperature with button to thermostat page
- Room humidity
- Hot water temperature
- Button to display settings page
## Weather Forcast
- 5 days Weather Forcast via swipe (Integration Accuweather - but should also go with another integration)
- Lowest and highest temperature outside
- Date
- Rain probability
- Sunshine hours
- Sun pressure
- Thunderstorm probability
- Wind speed
- Night thunderstorm probability and wind speed
## Thermostat
- Touch Temp control
- Outside temperature
- Hot water
- Floor heating on, off and idle
- Hot water button
- Status icons
## Display Settings
- Restart NSPanel
- Sleep mode - display off after time X
- Display brightness slider
- Display dim brightness slider
- Status Brightness in %
## Light Settings
- Light on and off (alignment with HA)
- Light color with Colorwheel
- Light color with TempColor slider
- Brightness Slider
- Brightness in %.
- Tempcolor value
- Jump back to the right button page
## Cover Settings
- Open and close cover
- Cover position via slider
- Cover battery value (I use Ikea roller blind)
- jump back to the right button page
## Button Page
- 40 Button
- 5 Button pages
- all buttons with long press function
- automatic detection by long press if it is a light or cover for submenu
- swipe between all pages
- swipe also down and up for fast access to certain pages
- number of buttons and button pages can be extended - functions like long press, light settings and cover settings stay the same
## Upcoming Features
- Shorten Esphome code and transfer to Blueprint
- Cover page with window open status as image
- small design adjustments
- Notifications on Home Page
- Energy and Gas consumption on home page
- Extra page for energy dashboard
- Garbage plan with icon on home page
- Let's see what ideas I still have ;)
## HowTo Deutsch
1. den Code aus der Datei esphome.yaml kopieren und in HA unter esphome einfügen. Vorher muss natürlich ein Device erstellt werden.
1.2 in der ESPhome Datei müssen Passwörter eingesetzt werden. Entweder in der ESPHome Secret oder einfach in der ESPhome Datei
1.3 Einige Entities sind aktuell noch in der Esphome Datei angegeben (direkt unter den Passwörtern. Diese Entities müssen noch angepasst werden. In zukunft will ich aber auch diese ins Bluebrint einbauen
3. den Code aus der Datei blueprint.yaml kopieren und eine neue yaml Datei unter config/blueprints erstellen und den Code einfügen
4. HA Automationen neu starten -> Enticklerwerkzege -> YAML -> Automatisierungen
5. den Code aus der Datei sensor.yaml und climate.yaml kopieren und eine eigenen yaml Datei erstellen. Der Code wird in zukunft direkt im Blueprint eingebaut.
6. den Code aus der Datei folder_wather kopieren und in der coniguration.yaml einfügen
7. TFT File auf Home Assistant hochladen (Der Pfad kann später im Blueprint angegeben werden
8. Blueprint unter Automationen auswählen und und Felder ausfüllen.
## Thanks to:
SmartHome Yourself: https://www.youtube.com/c/SmarthomeyourselfDe_DIY
Masto: https://github.com/masto/NSPanel-Demo-Files
Marcfager: https://github.com/marcfager/nspanel-mf
lovejoy77: https://github.com/lovejoy777/NSpanel
Hellis81: https://github.com/Hellis81/NS-panel

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,18 @@
climate:
- platform: generic_thermostat
unique_id: cf308990-0dbd-4e8a-be77-aec56d7a5aa4
name: NSPanel Büro
heater: switch.nspanel_buro_relay_2
target_sensor: sensor.nspanel_buro_temperature
min_temp: 13
max_temp: 27
ac_mode: false
target_temp: 22
cold_tolerance: 0.5
hot_tolerance: 0.5
min_cycle_duration:
seconds: 60
keep_alive:
minutes: 3
initial_hvac_mode: "heat"
precision: 0.5

View File

@@ -0,0 +1,7 @@
# Please insert into the default file "configuration.yaml
# Folder must be changed to the directory where the tft file (Nextion Editor) will be uploaded
###########
#
#Folder watcher for NS panel auto upload tft
folder_watcher:
- folder: /config/www/nspanel/

View File

@@ -0,0 +1,78 @@
##### Sensor ######
sensor:
- platform: template
sensors:
wochentag:
friendly_name: "Wochentag"
unique_id: 6ac64850-8563-456c-b562-92343dd96f0b
value_template: >
{% set days = ['Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,', 'Samstag,', 'Sonntag,'] %}
{{ now().timestamp() | timestamp_custom(days[now().weekday()] ~ ' %d.%m')}}
icon_template: mdi:calendar-range
- platform: template
sensors:
wochentag01:
friendly_name: "Wochentag+1"
unique_id: 6b2aad54-3eb0-48cc-ae32-ee3574197f1b
value_template: >
{% set days = ['Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,', 'Samstag,', 'Sonntag,', 'Montag,'] %}
{{(as_timestamp(now())+ (86400)) | timestamp_custom(days[now().weekday()+1] ~ ' %d.%m') }}
icon_template: mdi:calendar-range
- platform: template
sensors:
wochentag02:
friendly_name: "Wochentag+2"
unique_id: edbddaf0-2791-4774-b8d4-aa706f75cc7a
value_template: >
{% set days = ['Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,', 'Samstag,', 'Sonntag,', 'Montag,', 'Dienstag,'] %}
{{(as_timestamp(now())+ (172800)) | timestamp_custom(days[now().weekday()+2] ~ ' %d.%m') }}
icon_template: mdi:calendar-range
- platform: template
sensors:
wochentag03:
friendly_name: "Wochentag+3"
unique_id: ad592622-db86-40f7-9961-4c1ffd21c711
value_template: >
{% set days = ['Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,', 'Samstag,', 'Sonntag,', 'Montag,', 'Dienstag,', 'Mittwoch,'] %}
{{(as_timestamp(now())+ (259200)) | timestamp_custom(days[now().weekday()+3] ~ ' %d.%m') }}
icon_template: mdi:calendar-range
- platform: template
sensors:
wochentag04:
friendly_name: "Wochentag+4"
unique_id: dcb3ed45-2b89-4672-a04f-a55f025ac745
value_template: >
{% set days = ['Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,', 'Samstag,', 'Sonntag,', 'Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,'] %}
{{(as_timestamp(now())+ (345600)) | timestamp_custom(days[now().weekday()+4] ~ ' %d.%m') }}
icon_template: mdi:calendar-range
- platform: template
sensors:
wochentag05:
friendly_name: "Wochentag+5"
unique_id: 77e642a5-de54-452d-9f4a-febe3a7851c2
value_template: >
{% set days = ['Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,', 'Samstag,', 'Sonntag,', 'Montag,', 'Dienstag,', 'Mittwoch,', 'Donnerstag,', 'Freitag,'] %}
{{(as_timestamp(now())+ (432000)) | timestamp_custom(days[now().weekday()+ 5] ~ ' %d.%m') }}
icon_template: mdi:calendar-range
###### NSPanel Büro - climate target temperature #####
- platform: template
sensors:
nspanel_buro_target_temp:
unique_id: 2393ab74-21ce-42d3-b15e-ec162b9d6f31
friendly_name: NSPanel Buro Target Temp
value_template: "{{ state_attr('climate.nspanel_buro', 'temperature') }}"
###### NSPanel Büro - climate target temperature #####
- platform: template
sensors:
nspanel_lea_target_temp:
unique_id: e8e61ff7-3a41-47ad-bd6c-303f730de96f
friendly_name: NSPanel Lea Target Temp
value_template: "{{ state_attr('climate.nspanel_lea', 'temperature') }}"

File diff suppressed because it is too large Load Diff

View File

@@ -1,26 +1,33 @@
############################################################# #############################################################
##### START - SUBSTITUTIONS ##### ##### START - SUBSTITUTIONS #####
############################################################# #############################################################
substitutions:
##### GENEREL CONFIG #############################################################################################
node_name: nspanel-buero # $node_name
device_name: NSPanel Büro # $device_name
wifi_ssid: !secret wifi_ssid # add in your esphome secrets file.
wifi_password: !secret wifi_password # add in your esphome secrets file.
ota_password: !secret ota_password # add in your esphome secrets file.
nextion_update_url: !secret nextion_update_url_buero # add in your esphome secrets file.
###### EDIT THE BELOW ENTITIES FOR YOURS... ####################################################################### ##### advanced config activate only when you know what you do #####
# substitutions:
# ## usage of secrets-file ## -> comment in ###### Change ME ######
# device_name: "nspanel-name" # ändere Name zum Beispiel in den Raum wo das NSPanel verbaut wird. Wird im Blueprint benötigt
# friendly_name: "NSPanel Name" # ändere Name zum Beispiel in den Raum wo das NSPanel verbaut wird
# wifi_ssid: !secret nspanel_wifi_ssid # add in your esphome secrets file.
# wifi_password: !secret nspanel_wifi_password # add in your esphome secrets file.
# ota_password: !secret nspanel_ota_password # add in your esphome secrets file.
# nextion_update_url: !secret nspanel_update_url # add in your esphome secrets file. Example: "http://"HOME ASSISTANT IP":8123/local/nspanel/nspanel.tft"
#ha_weekday: sensor.wochentag ##### Sensor Wochentag generiert in HA (custom_configuration -> nspanel) ##### # ## static ip config ##
#ha_outdoor_temp: sensor.terrasse_garage_motion_sensor_temperature ##### Temperatur von Bewegungsmelder Outdoor (Zigbee2Mqtt) ##### # ip: "10.0.0.7"
#ha_hotwater_temp: sensor.hotwater_temp ##### Buderus Heizung Warmwasser Temperatur (Integration) ##### # gw: "10.0.0.138"
ha_hotwater_charge: switch.charge # subnet: "255.255.255.0"
ha_heating_system_flame: binary_sensor.flamestatus ##### Buderus Heizung Flamen-Status (Integration) ##### # dns: "10.0.0.138"
ha_climate_thermostat_target_temp: sensor.nspanel_buro_target_temp ##### Climate Thermostat generiert in HA (custom_configuration -> nspanel) ##### # domain: ".local"
ha_climate_thermostat: climate.nspanel_buro ##### Climate Thermostat generiert in HA (custom_configuration -> nspanel) #####
#ha_humidity: sensor.kinderzimmer_lea_temperatur_sensor_humidity ##### end of advanced config #####
###### EDIT THE BELOW ENTITIES FOR YOURS... depricated #######################################################################
##### - will be removed in future release - ignore it or set if exist ##################
# ha_hotwater_charge: switch.wwcharge
# ha_heating_system_flame: binary_sensor.flamestatus ##### Buderus Heizung Flamen-Status (Integration) #####
# ha_climate_thermostat_target_temp: sensor.nspanel_target_temp ##### Climate Thermostat generiert in HA (custom_configuration -> nspanel) #####
# ha_climate_thermostat: climate.nspanel_name ##### Climate Thermostat generiert in HA (custom_configuration -> nspanel) #####
######################################### #########################################
# #
# #
@@ -49,8 +56,8 @@ external_components:
##### ESP home CONFIG ##### ##### ESP home CONFIG #####
esphome: esphome:
name: $node_name name: ${device_name}
comment: $device_name comment: ${friendly_name}
##### TYPE OF ESP BOARD ##### ##### TYPE OF ESP BOARD #####
esp32: esp32:
@@ -58,15 +65,32 @@ esp32:
##### WIFI SETUP ##### ##### WIFI SETUP #####
wifi: wifi:
ssid: $wifi_ssid ssid: ${wifi_ssid}
password: $wifi_password password: ${wifi_password}
power_save_mode: none power_save_mode: none
##### advanced config - uncomment to use static IP-Config #####
# manual_ip:
# static_ip: ${ip}
# gateway: ${gw}
# subnet: ${subnet}
# dns1: ${dns}
# domain: ${domain}
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "${device_name}"
password: ${wifi_password}
captive_portal: captive_portal:
web_server:
port: 80
auth:
username: admin
password: ${ota_password}
##### OTA (Over the air updates) password ##### ##### OTA (Over the air updates) password #####
ota: ota:
password: $ota_password password: ${ota_password}
safe_mode: true safe_mode: true
reboot_timeout: 3min reboot_timeout: 3min
num_attempts: 3 num_attempts: 3
@@ -96,29 +120,15 @@ uart:
baud_rate: 115200 baud_rate: 115200
id: tf_uart id: tf_uart
##### INFO - Time component that fetches time from home Assistant and updates the display once a minute and when the display is ready at bootup (and time is available) #####
#time:
# - platform: homeassistant
# id: homeassistant_time
# on_time:
# - seconds: 0
# minutes: /1
# then:
# - wait_until:
# switch.is_on: nextion_init
# - lambda: id(disp1).set_component_text_printf("home.a01", "%02i:%02i", id(homeassistant_time).now().hour, id(homeassistant_time).now().minute);
# on_time_sync:
# then:
# - wait_until:
# switch.is_on: nextion_init
# - lambda: id(disp1).set_component_text_printf("home.a01", "%02i:%02i", id(homeassistant_time).now().hour, id(homeassistant_time).now().minute);
###### A reboot button is always useful ##### ###### A reboot button is always useful #####
button: button:
- platform: restart - platform: restart
name: $device_name Restart name: ${device_name} Restart
id: restart_nspanel id: restart_nspanel
######################################### #########################################
# #
# #
@@ -174,6 +184,34 @@ api:
switch.is_on: nextion_init switch.is_on: nextion_init
- lambda: 'id(disp1).set_component_value(component.c_str(), message);' - lambda: 'id(disp1).set_component_value(component.c_str(), message);'
##### Service to send a command "component_value (Dualstate Button)" directly to the display. Useful for testing #####
- service: send_command_hide
variables:
component: string
then:
- wait_until:
switch.is_on: nextion_init
- lambda: 'id(disp1).hide_component(component.c_str());'
##### Service to send a command "component_value (Dualstate Button)" directly to the display. Useful for testing #####
- service: send_command_font_color
variables:
component: string
message: int
then:
- wait_until:
switch.is_on: nextion_init
- lambda: 'id(disp1).set_component_font_color(component.c_str(), message);'
##### Service to send a command "component_value (Dualstate Button)" directly to the display. Useful for testing #####
- service: send_command_background_color
variables:
component: string
message: int
then:
- wait_until:
switch.is_on: nextion_init
- lambda: 'id(disp1).set_component_background_color(component.c_str(), message);'
######################################### #########################################
# #
# #
@@ -238,6 +276,30 @@ globals:
restore_value: true restore_value: true
initial_value: '0' initial_value: '0'
##### lastclick State #####
- id: lastclick_global
type: std::string
restore_value: no
initial_value: ''
##### lastclick State #####
- id: last_click_lightsettings
type: std::string
restore_value: no
initial_value: ''
##### lastclick State #####
- id: last_click_coversettings
type: std::string
restore_value: no
initial_value: ''
##### lastclick State #####
- id: last_click_weathersettings
type: std::string
restore_value: no
initial_value: ''
######################################### #########################################
# #
# #
@@ -262,138 +324,86 @@ binary_sensor:
###### LEFT BUTTON BELOW DISPLAY TO TOGGLE RELAY##### ###### LEFT BUTTON BELOW DISPLAY TO TOGGLE RELAY#####
- platform: gpio - platform: gpio
name: $device_name Left Button name: ${device_name} Left Button
pin: pin:
number: 14 number: 14
inverted: true inverted: true
on_click: # on_click:
- switch.toggle: relay_1 # - switch.toggle: relay_1
##### RIGHT BUTTON BELOW DISPLAY TO TOGGLE RELAY ##### ##### RIGHT BUTTON BELOW DISPLAY TO TOGGLE RELAY #####
- platform: gpio - platform: gpio
name: $device_name Right Button name: ${device_name} Right Button
pin: pin:
number: 27 number: 27
inverted: true inverted: true
on_click: # on_click:
- switch.toggle: relay_2 # - switch.toggle: relay_2
##### THERMOSTAT - BUTTON DECREASES CLIMATE TARGET TEMPERATURE IN HA ##### ##### THERMOSTAT - BUTTON DECREASES CLIMATE TARGET TEMPERATURE IN HA #####
- platform: nextion - platform: nextion
name: $device_name Climate Target DOWN name: ${device_name} Climate Target DOWN
page_id: 6 page_id: 6
component_id: 14 component_id: 13
internal: true internal: true
on_click: on_click:
- homeassistant.service: - homeassistant.service:
service: climate.set_temperature service: climate.set_temperature
data_template: data_template:
entity_id: $ha_climate_thermostat entity_id: ${ha_climate_thermostat}
temperature: !lambda return id(climate_target_temp_val_global) - 0.5; temperature: !lambda return id(climate_target_temp_val_global) - 0.5;
##### THERMOSTAT - BUTTON INCREASES CLIMATE TARGET TEMPERATURE IN HA ##### ##### THERMOSTAT - BUTTON INCREASES CLIMATE TARGET TEMPERATURE IN HA #####
- platform: nextion - platform: nextion
name: $device_name Climate Target UP name: ${device_name} Climate Target UP
page_id: 6 page_id: 6
component_id: 15 component_id: 14
internal: true internal: true
on_click: on_click:
- homeassistant.service: - homeassistant.service:
service: climate.set_temperature service: climate.set_temperature
data_template: data_template:
entity_id: $ha_climate_thermostat entity_id: ${ha_climate_thermostat}
temperature: !lambda return id(climate_target_temp_val_global) + 0.5; temperature: !lambda return id(climate_target_temp_val_global) + 0.5;
##### THERMOSTAT - BUTTON ON / OFF Heating ##### ##### THERMOSTAT - BUTTON ON / OFF Heating #####
- platform: nextion - platform: nextion
name: $device_name Heating Room State name: ${device_name} Heating Room State
id: heating_room_state id: heating_room_state
page_id: 6 page_id: 6
component_id: 17 component_id: 16
internal: true internal: true
on_click: on_click:
- switch.toggle: hvac_mode - switch.toggle: hvac_mode
##### Display Brightness - BUTTON DECREASES Brightness #####
- platform: nextion
name: $device_name Brightness DOWN
page_id: 7
component_id: 12
internal: true
on_click:
- number.set:
id: display_brightness
value: !lambda return id(display_brightness_global) - 1;
- lambda: id(disp1).set_component_text_printf("settings.a03", "%i", id(display_brightness_global));
- lambda: id(disp1).send_command_printf("settings.brightslider.val=%i", id(display_brightness_global));
##### Display Brightness - BUTTON INCREASES Brightness #####
- platform: nextion
name: $device_name Brightness UP
page_id: 7
component_id: 13
internal: true
on_click:
- number.set:
id: display_brightness
value: !lambda return id(display_brightness_global) + 1;
- lambda: id(disp1).set_component_text_printf("settings.a03", "%i", id(display_brightness_global));
- lambda: id(disp1).send_command_printf("settings.brightslider.val=%i", id(display_brightness_global));
##### Display DIM Brightness - BUTTON DECREASES Brightness #####
- platform: nextion
name: $device_name Brightness DIM DOWN
page_id: 7
component_id: 14
internal: true
on_click:
- number.set:
id: display_dim_brightness
value: !lambda return id(display_dim_brightness_global) - 1;
- lambda: id(disp1).set_component_text_printf("settings.a04", "%i", id(display_dim_brightness_global));
- lambda: id(disp1).send_command_printf("settings.dimslider.val=%i", id(display_dim_brightness_global));
##### Display DIM Brightness - BUTTON INCREASES Brightness #####
- platform: nextion
name: $device_name Brightness DIM UP
page_id: 7
component_id: 15
internal: true
on_click:
- number.set:
id: display_dim_brightness
value: !lambda return id(display_dim_brightness_global) + 1;
- lambda: id(disp1).set_component_text_printf("settings.a04", "%i", id(display_dim_brightness_global));
- lambda: id(disp1).send_command_printf("settings.dimslider.val=%i", id(display_dim_brightness_global));
##### Restart NSPanel Button ##### ##### Restart NSPanel Button #####
- platform: nextion - platform: nextion
name: $device_name Restart name: ${device_name} Restart
page_id: 7 page_id: 7
component_id: 11 component_id: 10
internal: true internal: true
on_click: on_click:
- button.press: restart_nspanel - button.press: restart_nspanel
##### Sleep Modus NSPanel Button ##### ##### Sleep Modus NSPanel Button #####
- platform: nextion - platform: nextion
name: $device_name Sleep Modus name: ${device_name} Sleep Modus
page_id: 7 page_id: 7
component_id: 6 component_id: 5
internal: true internal: true
on_click: on_click:
- switch.toggle: sleep_modus - switch.toggle: sleep_modus
##### Hotwater Charge ##### ##### Hotwater Charge #####
- platform: nextion - platform: nextion
name: $device_name Hotwater Charge name: ${device_name} Hotwater Charge
page_id: 6 page_id: 6
component_id: 22 component_id: 21
on_click: on_click:
- homeassistant.service: - homeassistant.service:
service: switch.toggle service: switch.toggle
data: data:
entity_id: $ha_hotwater_charge entity_id: ${ha_hotwater_charge}
######################################### #########################################
# #
@@ -417,6 +427,16 @@ binary_sensor:
sensor: sensor:
##### Uptime #####
- platform: uptime
name: ${device_name} uptime
disabled_by_default: true
##### WIFI Signal stregth
- platform: wifi_signal
name: ${device_name} RSSI
update_interval: 60s
##### INTERNAL TEMPERATUE SENSOR, ADC VALUE ##### ##### INTERNAL TEMPERATUE SENSOR, ADC VALUE #####
- platform: adc - platform: adc
id: ntc_source id: ntc_source
@@ -433,7 +453,7 @@ sensor:
##### INTERNAL TEMPERATUE SENSOR, resistance to temperature (calculation) ##### ##### INTERNAL TEMPERATUE SENSOR, resistance to temperature (calculation) #####
- platform: ntc - platform: ntc
name: $device_name Temperature name: ${device_name} Temperature
id: temp_nspanel id: temp_nspanel
sensor: resistance_sensor sensor: resistance_sensor
calibration: calibration:
@@ -447,43 +467,10 @@ sensor:
- lambda: id(disp1).set_component_text_printf("home.a03", "%.1f°", id(temp_nspanel).state); # onboard temp (thermostat temp) to home page. - lambda: id(disp1).set_component_text_printf("home.a03", "%.1f°", id(temp_nspanel).state); # onboard temp (thermostat temp) to home page.
- lambda: id(disp1).set_component_text_printf("thermostat.a04", "%.1f", id(temp_nspanel).state); - lambda: id(disp1).set_component_text_printf("thermostat.a04", "%.1f", id(temp_nspanel).state);
##### TEMPERATURE Outdoor FROM HA #####
# - platform: homeassistant
# id: temp_outdoor
# entity_id: $ha_outdoor_temp
# on_value:
# then:
# - wait_until:
# switch.is_on: nextion_init
# - lambda: id(disp1).set_component_text_printf("home.a06", "%.0f°", id(temp_outdoor).state);
# - lambda: id(disp1).set_component_text_printf("thermostat.a07", "%.0f°", id(temp_outdoor).state);
##### HUMIDITY Indoor FROM HA #####
# - platform: homeassistant
# id: humidity
# entity_id: $ha_humidity
# on_value:
# then:
# - wait_until:
# switch.is_on: nextion_init
# - lambda: id(disp1).set_component_text_printf("home.a04", "%.0f°", id(humidity).state);
##### THERMOSTAT HOT WATER TEMP FROM HA #####
# - platform: homeassistant
# id: temp_hotwater
# entity_id: $ha_hotwater_temp
# on_value:
# then:
# - wait_until:
# switch.is_on: nextion_init
# - lambda: id(disp1).set_component_text_printf("home.a07", "%.1f°", id(temp_hotwater).state);
# - lambda: id(disp1).set_component_text_printf("thermostat.a08", "%.1f°", id(temp_hotwater).state);
##### THERMOSTAT CLIMATE TARGET TEMPERATURE FROM HA ##### ##### THERMOSTAT CLIMATE TARGET TEMPERATURE FROM HA #####
- platform: homeassistant - platform: homeassistant
id: ha_climate_target_temp id: ha_climate_target_temp
entity_id: $ha_climate_thermostat_target_temp entity_id: ${ha_climate_thermostat_target_temp}
on_value: on_value:
then: then:
- wait_until: - wait_until:
@@ -622,7 +609,7 @@ sensor:
###### TARGET TEMPERATURE GET VALUE FROM NEXTION CIRCLE SLIDER AND SET GLOBAL VARIBLE ##### ###### TARGET TEMPERATURE GET VALUE FROM NEXTION CIRCLE SLIDER AND SET GLOBAL VARIBLE #####
- platform: nextion - platform: nextion
id: climate_circleslider id: climate_circleslider
name: $device_name Climate circleslider name: ${device_name} Climate circleslider
variable_name: climateslider variable_name: climateslider
internal: true internal: true
on_value: on_value:
@@ -695,13 +682,13 @@ sensor:
- homeassistant.service: - homeassistant.service:
service: climate.set_temperature service: climate.set_temperature
data_template: data_template:
entity_id: $ha_climate_thermostat entity_id: ${ha_climate_thermostat}
temperature: !lambda return id(climate_target_temp_val_global); temperature: !lambda return id(climate_target_temp_val_global);
###### Display Brightness GET VALUE FROM NSPanel SLIDER ##### ###### Display Brightness GET VALUE FROM NSPanel SLIDER #####
- platform: nextion - platform: nextion
id: brightslider id: brightslider
name: $device_name brightness Slider name: ${device_name} brightness Slider
variable_name: brightslider variable_name: brightslider
internal: true internal: true
on_value: on_value:
@@ -717,7 +704,7 @@ sensor:
###### Display DIM Brightness GET VALUE FROM NSPanel SLIDER ##### ###### Display DIM Brightness GET VALUE FROM NSPanel SLIDER #####
- platform: nextion - platform: nextion
id: dimslider id: dimslider
name: $device_name dim brightness slider name: ${device_name} dim brightness slider
variable_name: dimslider variable_name: dimslider
internal: true internal: true
on_value: on_value:
@@ -730,6 +717,17 @@ sensor:
# 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)); - lambda: id(disp1).set_component_text_printf("settings.a04", "%i", id(display_dim_brightness_global));
###### Send current page to HA
- platform: nextion
id: current_page
name: "${device_name} Current Page"
variable_name: dp
update_interval: 1s
accuracy_decimals: 0
filters:
- delta: 1.0
- lambda: return int(x);
######################################### #########################################
# #
@@ -755,7 +753,19 @@ text_sensor:
##### ESPhome version used to compile the app ##### ##### ESPhome version used to compile the app #####
- platform: version - platform: version
name: $device_name ESPhome Version name: ${device_name} ESPhome Version
disabled_by_default: true
- platform: wifi_info
ip_address:
name: ${device_name} IP
disabled_by_default: true
ssid:
name: ${device_name} SSID
disabled_by_default: true
bssid:
name: ${device_name} BSSID
disabled_by_default: true
##### SUN SENSOR FROM HA ##### ##### SUN SENSOR FROM HA #####
- platform: homeassistant - platform: homeassistant
@@ -765,40 +775,90 @@ text_sensor:
##### last click sensor, the main action variable - push to HA ##### ##### last click sensor, the main action variable - push to HA #####
- platform: nextion - platform: nextion
nextion_id: disp1 nextion_id: disp1
name: $device_name last click name: ${device_name} Last Click
id: disp1_last_click_va id: disp1_last_click_nextion
update_interval: 50ms update_interval: 50ms
component_name: lastclick component_name: lastclick
internal: false
filters:
- lambda: |-
if (strcmp(x.c_str(), id(lastclick_global).c_str()) != 0) {
return x;
} else {
return {};
}
on_value:
then:
- globals.set:
id: lastclick_global
value: !lambda return x;
##### last click lightsettings page, the main action variable - push to HA ##### ##### last click lightsettings page, the main action variable - push to HA #####
- platform: nextion - platform: nextion
nextion_id: disp1 nextion_id: disp1
name: $device_name last click lightsettings name: ${device_name} last click lightsettings
id: disp1_last_click_lightsettings id: disp1_last_click_lightsettings
update_interval: 50ms update_interval: 50ms
component_name: lightsetting component_name: lightsetting
internal: false
filters:
- lambda: |-
if (strcmp(x.c_str(), id(last_click_lightsettings).c_str()) != 0) {
return x;
} else {
return {};
}
on_value:
then:
- globals.set:
id: last_click_lightsettings
value: !lambda return x;
##### last click coversettings page, the main action variable - push to HA ##### ##### last click coversettings page, the main action variable - push to HA #####
- platform: nextion - platform: nextion
nextion_id: disp1 nextion_id: disp1
name: $device_name last click coversettings name: ${device_name} last click coversettings
id: disp1_last_click_coversettings id: disp1_last_click_coversettings
update_interval: 50ms update_interval: 50ms
component_name: coverposition component_name: coversetting
internal: false
filters:
- lambda: |-
if (strcmp(x.c_str(), id(last_click_coversettings).c_str()) != 0) {
return x;
} else {
return {};
}
on_value:
then:
- globals.set:
id: last_click_coversettings
value: !lambda return x;
##### Wochentag SENSOR FROM HA ##### ##### last click weather page, the main action variable - push to HA #####
# - platform: homeassistant - platform: nextion
# id: weekday nextion_id: disp1
# entity_id: $ha_weekday name: ${device_name} last click weathersettings
# on_value: id: disp1_last_click_weathersettings
# then: update_interval: 50ms
# - wait_until: component_name: weathersetting
# switch.is_on: nextion_init internal: false
# - lambda: id(disp1).set_component_text_printf("home.a02", "%s", id(weekday).state.c_str()); filters:
- lambda: |-
if (strcmp(x.c_str(), id(last_click_weathersettings).c_str()) != 0) {
return x;
} else {
return {};
}
on_value:
then:
- globals.set:
id: last_click_weathersettings
value: !lambda return x;
##### HEATING System ICON ##### ##### HEATING System ICON #####
- platform: homeassistant - platform: homeassistant
entity_id: $ha_heating_system_flame entity_id: ${ha_heating_system_flame}
name: "Heating System" name: "Heating System"
id: heating_system id: heating_system
on_value: on_value:
@@ -806,16 +866,16 @@ text_sensor:
- wait_until: - wait_until:
switch.is_on: nextion_init switch.is_on: nextion_init
- lambda: |- - lambda: |-
int symbol=60; // 60 is a blank image 30x30 int symbol=53; // 53 is a blank image 20x20
if (id(heating_system).state == "on") { if (id(heating_system).state == "on") {
symbol=61; symbol=64;
} }
id(disp1).send_command_printf("home.a50.pic=%i", symbol); id(disp1).send_command_printf("home.a50.pic=%i", symbol);
id(disp1).send_command_printf("thermostat.a50.pic=%i", symbol); id(disp1).send_command_printf("thermostat.a50.pic=%i", symbol);
##### Hotwater Charge ICON ##### ##### Hotwater Charge ICON #####
- platform: homeassistant - platform: homeassistant
entity_id: $ha_hotwater_charge entity_id: ${ha_hotwater_charge}
name: "Hotwater Charge" name: "Hotwater Charge"
id: hotwater_charge id: hotwater_charge
on_value: on_value:
@@ -828,58 +888,6 @@ text_sensor:
} else { } else {
id(disp1).set_component_value("thermostat.a12",0); id(disp1).set_component_value("thermostat.a12",0);
} }
# - lambda: |-
# id(disp1).set_component_value("thermostat.a12",0);
# if (id(hotwater_charge) == "on")
# {
# id(disp1).set_component_value("thermostat.a12",1);
# }
##### WEATHER SYMBOL FROM HA WEATHER ENTITY #####
- platform: homeassistant
id: weather_symbol
entity_id: weather.home_wetter
on_value:
then:
- wait_until:
switch.is_on: nextion_init
- lambda: |-
int symbol=1; // 1 is a empty box.
if (id(weather_symbol).state == "sunny") {
symbol=2;
} else if (id(weather_symbol).state == "cloudy") {
symbol=3;
if (id(sun_sun).state == "below_horizon") {
symbol=3;
}
} else if (id(weather_symbol).state == "rainy") {
symbol=4;
} else if (id(weather_symbol).state == "pouring") {
symbol=5;
} else if (id(weather_symbol).state == "snowy") {
symbol=6;
} else if (id(weather_symbol).state == "hail" || id(weather_symbol).state == "snowy-rainy") {
symbol=7;
} else if (id(weather_symbol).state == "fog") {
symbol=8;
} else if (id(weather_symbol).state == "windy" || id(weather_symbol).state == "windy-variant") {
symbol=9;
} else if (id(weather_symbol).state == "lightning") {
symbol=10;
} else if (id(weather_symbol).state == "partlycloudy") {
symbol=11;
if (id(sun_sun).state == "below_horizon") {
symbol=12;
}
} else if (id(weather_symbol).state == "lightning-rainy" || id(weather_symbol).state == "exceptional") {
symbol=13;
if (id(sun_sun).state == "below_horizon") {
symbol=14;
}
} else if (id(weather_symbol).state == "clear-night") {
symbol=15;
}
id(disp1).send_command_printf("home.a05.pic=%i", symbol);
######################################### #########################################
# #
@@ -903,9 +911,17 @@ text_sensor:
switch: switch:
# ##### Restart switch ######
# - platform: restart
# name: ${device_name} Restart
# ##### Restart in safe-mode #####
# - platform: safe_mode
# name: ${device_name} Restart (Safe Mode)
##### global variable to keep track on whether the Nextion display is ready or not. Delays initial info from HA to the display ##### ##### global variable to keep track on whether the Nextion display is ready or not. Delays initial info from HA to the display #####
- platform: template - platform: template
name: $device_name Nextion inited name: ${device_name} Nextion inited
id: nextion_init id: nextion_init
entity_category: config entity_category: config
restore_state: false restore_state: false
@@ -923,42 +939,22 @@ switch:
##### PHYSICAL SWITCH 1 ##### ##### PHYSICAL SWITCH 1 #####
- platform: gpio - platform: gpio
name: $device_name Relay 1 name: ${device_name} Relay 1
id: relay_1 id: relay_1
pin: pin:
number: 22 number: 22
##### PHYSICAL SWITCH 2 ###### ##### PHYSICAL SWITCH 2 ######
- platform: gpio - platform: gpio
name: $device_name Relay 2 name: ${device_name} Relay 2
id: relay_2 id: relay_2
pin: pin:
number: 19 number: 19
on_turn_off:
- globals.set:
id: heating_room_global
value: '0'
- lambda: |-
if (id(hvac_mode_global) == 0)
{
id(disp1).send_command_printf("thermostat.a06.pic=51");
} else if (id(hvac_mode_global) == 1) {
id(disp1).send_command_printf("thermostat.a06.pic=52");
}
- lambda: id(disp1).send_command_printf("home.a52.pic=60");
- lambda: id(disp1).send_command_printf("thermostat.a52.pic=60");
on_turn_on:
- globals.set:
id: heating_room_global
value: '1'
- lambda: id(disp1).send_command_printf("thermostat.a06.pic=53");
- lambda: id(disp1).send_command_printf("home.a52.pic=63");
- lambda: id(disp1).send_command_printf("thermostat.a52.pic=63");
##### Switch Climate HVAC Mode ##### ##### Switch Climate HVAC Mode #####
- platform: template - platform: template
device_class: switch device_class: switch
name: $device_name hvac Mode name: ${device_name} hvac Mode
id: hvac_mode id: hvac_mode
restore_state: true restore_state: true
assumed_state: false assumed_state: false
@@ -973,9 +969,9 @@ switch:
data_template: data_template:
entity_id: $ha_climate_thermostat entity_id: $ha_climate_thermostat
hvac_mode: 'off' hvac_mode: 'off'
- lambda: id(disp1).send_command_printf("thermostat.a06.pic=51"); - lambda: id(disp1).send_command_printf("thermostat.a06.pic=49");
- lambda: id(disp1).send_command_printf("home.a51.pic=60"); - lambda: id(disp1).send_command_printf("home.a51.pic=53");
- lambda: id(disp1).send_command_printf("thermostat.a51.pic=60"); - lambda: id(disp1).send_command_printf("thermostat.a51.pic=53");
on_turn_on: on_turn_on:
- lambda: id(disp1).set_component_value("thermostat.a10",1); - lambda: id(disp1).set_component_value("thermostat.a10",1);
- globals.set: - globals.set:
@@ -989,16 +985,16 @@ switch:
- lambda: |- - lambda: |-
if (id(heating_room_global) == 0) if (id(heating_room_global) == 0)
{ {
id(disp1).send_command_printf("thermostat.a06.pic=52"); id(disp1).send_command_printf("thermostat.a06.pic=50");
} else if (id(heating_room_global) == 1) { } else if (id(heating_room_global) == 1) {
id(disp1).send_command_printf("thermostat.a06.pic=53"); id(disp1).send_command_printf("thermostat.a06.pic=51");
} }
- lambda: id(disp1).send_command_printf("home.a51.pic=62"); - lambda: id(disp1).send_command_printf("home.a51.pic=65");
- lambda: id(disp1).send_command_printf("thermostat.a51.pic=62"); - lambda: id(disp1).send_command_printf("thermostat.a51.pic=65");
##### DISPLAY ALWAYS ON ##### ##### DISPLAY ALWAYS ON #####
- platform: gpio - platform: gpio
name: $device_name Screen Power name: ${device_name} Screen Power
id: screen_power id: screen_power
entity_category: config entity_category: config
pin: pin:
@@ -1010,7 +1006,7 @@ switch:
##### Switch Display Sleep Modus ##### ##### Switch Display Sleep Modus #####
- platform: template - platform: template
device_class: switch device_class: switch
name: $device_name Sleep Modus name: ${device_name} Sleep Modus
id: sleep_modus id: sleep_modus
restore_state: true restore_state: true
assumed_state: false assumed_state: false
@@ -1052,7 +1048,7 @@ number:
##### SCREEN BRIGHTNESS ##### ##### SCREEN BRIGHTNESS #####
- platform: template - platform: template
name: $device_name Display Brightness name: ${device_name} Display Brightness
id: display_brightness id: display_brightness
entity_category: config entity_category: config
unit_of_measurement: '%' unit_of_measurement: '%'
@@ -1071,7 +1067,7 @@ number:
##### SCREEN BRIGHTNESS DIMMED DOWN ##### ##### SCREEN BRIGHTNESS DIMMED DOWN #####
- platform: template - platform: template
name: $device_name Display Brightness Dimdown name: ${device_name} Display Brightness Dimdown
id: display_dim_brightness id: display_dim_brightness
entity_category: config entity_category: config
unit_of_measurement: '%' unit_of_measurement: '%'
@@ -1111,7 +1107,7 @@ display:
- platform: nextion - platform: nextion
id: disp1 id: disp1
uart_id: tf_uart uart_id: tf_uart
tft_url: $nextion_update_url tft_url: ${nextion_update_url}
on_setup: on_setup:
then: then:
- lambda: id(disp1).send_command_printf("page 9"); ##### CHANGE! - Loading page ##### - lambda: id(disp1).send_command_printf("page 9"); ##### CHANGE! - Loading page #####
@@ -1143,23 +1139,23 @@ display:
id(disp1).set_component_value("settings.a02",1); id(disp1).set_component_value("settings.a02",1);
} }
- lambda: |- - lambda: |-
id(disp1).send_command_printf("home.a50.pic=60"); id(disp1).send_command_printf("home.a50.pic=53");
id(disp1).send_command_printf("thermostat.a50.pic=60"); id(disp1).send_command_printf("thermostat.a50.pic=53");
id(disp1).send_command_printf("thermostat.a06.pic=52"); id(disp1).send_command_printf("thermostat.a06.pic=50");
if (id(heating_room_global) == 1) if (id(heating_room_global) == 1)
{ {
id(disp1).send_command_printf("home.a52.pic=63"); id(disp1).send_command_printf("home.a52.pic=66");
id(disp1).send_command_printf("thermostat.a52.pic=63"); id(disp1).send_command_printf("thermostat.a52.pic=66");
id(disp1).send_command_printf("thermostat.a06.pic=53"); id(disp1).send_command_printf("thermostat.a06.pic=51");
} }
- lambda: |- - lambda: |-
if (id(hvac_mode_global) == 0) { if (id(hvac_mode_global) == 0) {
id(disp1).send_command_printf("home.a51.pic=60"); id(disp1).send_command_printf("home.a51.pic=53");
id(disp1).send_command_printf("thermostat.a51.pic=60"); id(disp1).send_command_printf("thermostat.a51.pic=53");
id(disp1).send_command_printf("thermostat.a06.pic=51"); id(disp1).send_command_printf("thermostat.a06.pic=49");
} else if (id(hvac_mode_global) == 1) { } else if (id(hvac_mode_global) == 1) {
id(disp1).send_command_printf("home.a51.pic=62"); id(disp1).send_command_printf("home.a51.pic=65");
id(disp1).send_command_printf("thermostat.a51.pic=62"); id(disp1).send_command_printf("thermostat.a51.pic=65");
id(disp1).set_component_value("thermostat.a10",1); id(disp1).set_component_value("thermostat.a10",1);
} }

BIN
nspanel.HMI Normal file

Binary file not shown.

BIN
nspanel.tft Normal file

Binary file not shown.