5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"*.yaml": "home-assistant"
|
||||||
|
}
|
||||||
|
}
|
||||||
6176
blueprint.yaml
6176
blueprint.yaml
File diff suppressed because it is too large
Load Diff
BIN
custom_configuration/.DS_Store
vendored
Normal file
BIN
custom_configuration/.DS_Store
vendored
Normal file
Binary file not shown.
5
custom_configuration/OLD NSPanel version/NSPanel_HA_Blueprint-beta/.vscode/settings.json
vendored
Normal file
5
custom_configuration/OLD NSPanel version/NSPanel_HA_Blueprint-beta/.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"*.yaml": "home-assistant"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 ;)
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
(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:
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
(Home / Weather Forcast)
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
(Thermostat / Settings Page)
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
(Light Settings Colorwheel / Light Settings TempColor)
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
(Cover Settings / Button Page)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Blueprint:
|
||||||
|

|
||||||
|
|
||||||
|
# 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
@@ -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
|
||||||
@@ -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/
|
||||||
@@ -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
Binary file not shown.
@@ -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 ;)
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
(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:
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
(Home / Weather Forcast)
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
(Thermostat / Settings Page)
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
(Light Settings Colorwheel / Light Settings TempColor)
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
(Cover Settings / Button Page)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Blueprint:
|
||||||
|

|
||||||
|
|
||||||
|
# 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
@@ -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
|
||||||
@@ -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/
|
||||||
@@ -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
536
esphome.yaml
536
esphome.yaml
@@ -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
BIN
nspanel.HMI
Normal file
Binary file not shown.
BIN
nspanel.tft
Normal file
BIN
nspanel.tft
Normal file
Binary file not shown.
Reference in New Issue
Block a user