############################################################# ##### START - SUBSTITUTIONS ##### ############################################################# ##### advanced config activate only when you know what you do ##### # substitutions: # ## usage of secrets-file ## -> comment in ###### Change ME ###### # device_name: "nspanel-name" # Wird im Blueprint benötigt! # wifi_ssid: !secret nspanel_wifi_ssid # add in your esphome secrets file. # 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" # ## static ip config ## # ip: "10.0.0.7" # gw: "10.0.0.138" # subnet: "255.255.255.0" # dns: "10.0.0.138" # domain: ".local" ##### 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) ##### ######################################### # # ############################################################# ##### CLOSE - SUBSTITUTIONS ##### ############################################################# # ## ### ############################################################################################################################################################################################# ### ## # ############################################################# ##### START - Settings ##### ############################################################# # # ######################################### ##### Functionality for the Nextion display ##### external_components: - source: github://pr#2956 components: [nextion] refresh: 1h ##### ESP home CONFIG ##### esphome: name: ${device_name} ##### TYPE OF ESP BOARD ##### esp32: board: esp32dev ##### WIFI SETUP ##### wifi: ssid: ${wifi_ssid} password: ${wifi_password} 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: web_server: port: 80 auth: username: admin password: ${ota_password} ##### OTA (Over the air updates) password ##### ota: password: ${ota_password} safe_mode: true reboot_timeout: 3min num_attempts: 3 ##### LOGGER ##### logger: # baud_rate: 0 # level: WARN ##### CONFIGURE INTERNAL BUZZER ##### output: ##### BUZZER FOR PLAYING RINGTONES ##### - platform: ledc id: buzzer_out pin: number: 21 ##### ENABLE RINGTONE MUSIC SUPPORT ##### rtttl: id: buzzer output: buzzer_out ##### UART FOR NEXTION DISPLAY ##### uart: tx_pin: 16 rx_pin: 17 baud_rate: 115200 id: tf_uart ###### A reboot button is always useful ##### button: - platform: restart name: ${device_name} Restart id: restart_nspanel ######################################### # # ############################################################# ##### CLOSE - Settings ##### ############################################################# # ## ### ############################################################################################################################################################################################# ### ## # ############################################################# ##### START - API ##### ############################################################# # # ######################################### api: services: ##### SERVICE TO UPDATE THE HMI FILE ##### - service: upload_tft then: - lambda: 'id(disp1)->upload_tft();' ##### Service to send a command "printf" directly to the display. Useful for testing ##### - service: send_command_printf variables: cmd: string then: - lambda: 'id(disp1).send_command_printf("%s", cmd.c_str());' ##### Service to send a command "text_printf" directly to the display. Useful for testing ##### - service: send_command_text_printf variables: component: string message: string then: - wait_until: switch.is_on: nextion_init - lambda: 'id(disp1).set_component_text_printf(component.c_str(), "%s", message.c_str());' ##### Service to send a command "component_value (Dualstate Button)" directly to the display. Useful for testing ##### - service: send_command_value variables: component: string message: int then: - wait_until: switch.is_on: nextion_init - 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);' ######################################### # # ############################################################# ##### CLOSE - API ##### ############################################################# # ## ### ############################################################################################################################################################################################# ### ## # ############################################################# ##### START - GLOBALS ##### ############################################################# # # ######################################### globals: # ##### Save Target Temp ##### # - id: climate_target_temp_val_global # type: float # restore_value: true # initial_value: '12' # ##### Save Thermostat PIC Position ##### # - id: climate_slider_val_global # type: int # restore_value: true # initial_value: '0' ##### Save Display Brightness for NSPanel reboot ##### - id: display_brightness_global type: int restore_value: true initial_value: '100' ##### Save Display DIM Brightness for NSPanel reboot - id: display_dim_brightness_global type: int restore_value: true initial_value: '10' ##### Save Display DIM Brightness for NSPanel reboot - id: sleep_modus_global type: int restore_value: true initial_value: '0' # ##### Save State Heating Room ##### # - id: heating_room_global # type: int # restore_value: true # initial_value: '0' ##### Save State HVAC ##### # - id: hvac_mode_global # type: int # restore_value: true # initial_value: '0' ##### lastclick_general State ##### - id: lastclick_general_global type: std::string restore_value: no initial_value: '' ##### lastclick_lightsettings State ##### - id: lastclick_lightsettings_global type: std::string restore_value: no initial_value: '' ##### lastclick_coversettings State ##### - id: lastclick_coversettings_global type: std::string restore_value: no initial_value: '' ##### lastclick_climatesettings State ##### - id: lastclick_climatesettings_global type: std::string restore_value: no initial_value: '' ######################################### # # ############################################################# ##### CLOSE - GLOBALS ##### ############################################################# # ## ### ############################################################################################################################################################################################# ### ## # ############################################################# ##### START - BINARY SENSOR ##### ############################################################# # # ######################################### binary_sensor: ###### LEFT BUTTON BELOW DISPLAY TO TOGGLE RELAY##### - platform: gpio name: ${device_name} Left Button pin: number: 14 inverted: true ##### RIGHT BUTTON BELOW DISPLAY TO TOGGLE RELAY ##### - platform: gpio name: ${device_name} Right Button pin: number: 27 inverted: true ##### THERMOSTAT - BUTTON DECREASES CLIMATE TARGET TEMPERATURE IN HA ##### # - platform: nextion # name: ${device_name} Climate Target DOWN # page_id: 6 # component_id: 13 # internal: true # on_click: # - homeassistant.service: # service: climate.set_temperature # data_template: # entity_id: ${ha_climate_thermostat} # temperature: !lambda return id(climate_target_temp_val_global) - 0.5; ##### THERMOSTAT - BUTTON INCREASES CLIMATE TARGET TEMPERATURE IN HA ##### # - platform: nextion # name: ${device_name} Climate Target UP # page_id: 6 # component_id: 14 # internal: true # on_click: # - homeassistant.service: # service: climate.set_temperature # data_template: # entity_id: ${ha_climate_thermostat} # temperature: !lambda return id(climate_target_temp_val_global) + 0.5; ##### THERMOSTAT - BUTTON ON / OFF Heating ##### # - platform: nextion # name: ${device_name} Heating Room State # id: heating_room_state # page_id: 6 # component_id: 16 # internal: true # on_click: # - switch.toggle: hvac_mode ##### Restart NSPanel Button ##### - platform: nextion name: ${device_name} Restart page_id: 7 component_id: 10 internal: true on_click: - button.press: restart_nspanel ##### Sleep Modus NSPanel Button ##### - platform: nextion name: ${device_name} Sleep Modus page_id: 7 component_id: 5 internal: true on_click: - switch.toggle: sleep_modus ##### Hotwater Charge ##### - platform: nextion name: ${device_name} Hotwater Charge page_id: 6 component_id: 21 on_click: - homeassistant.service: service: switch.toggle data: entity_id: ${ha_hotwater_charge} ######################################### # # ############################################################# ##### CLOSE - BINARY SENSOR ##### ############################################################# # ## ### ############################################################################################################################################################################################# ### ## # ############################################################# ##### START - 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 ##### - platform: adc id: ntc_source pin: 38 update_interval: 10s attenuation: 11db ##### INTERNAL TEMPERATUE SENSOR, adc reading converted to resistance (calculation)##### - platform: resistance id: resistance_sensor sensor: ntc_source configuration: DOWNSTREAM resistor: 11.2kOhm ##### INTERNAL TEMPERATUE SENSOR, resistance to temperature (calculation) ##### - platform: ntc name: ${device_name} Temperature id: temp_nspanel sensor: resistance_sensor calibration: b_constant: 3950 reference_temperature: 25°C reference_resistance: 10kOhm on_value: then: - wait_until: switch.is_on: nextion_init - 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); ##### THERMOSTAT CLIMATE TARGET TEMPERATURE FROM HA ##### # - platform: homeassistant # id: ha_climate_target_temp # entity_id: ${ha_climate_thermostat_target_temp} # on_value: # then: # - wait_until: # switch.is_on: nextion_init # - globals.set: # id: climate_target_temp_val_global # value: !lambda 'return float(x);' # - lambda: id(disp1).set_component_text_printf("thermostat.a05", "%.1f", id(climate_target_temp_val_global)); # # THERMO PROGRESS CIRCLE, broken into 3 images to create space for the temperatures in the center. # - lambda: |- # int left=16; // 16 is empty left. # int mid=17; // 17 is empty mid. # int right=18; // 18 is empty right. # if (id(climate_target_temp_val_global) == 13) { # left=16; # mid=17; # right=18; # } else if (id(climate_target_temp_val_global) == 13.5) { # left=19; # mid=17; # right=18; # } else if (id(climate_target_temp_val_global) == 14) { # left=20; # mid=17; # right=18; # } else if (id(climate_target_temp_val_global) == 14.5) { # left=21; # mid=17; # right=18; # } else if (id(climate_target_temp_val_global) == 15) { # left=22; # mid=17; # right=18; # } else if (id(climate_target_temp_val_global) == 15.5) { # left=23; # mid=17; # right=18; # } else if (id(climate_target_temp_val_global) == 16) { # left=24; # mid=17; # right=18; # } else if (id(climate_target_temp_val_global) == 16.5) { # left=25; # mid=17; # right=18; # } else if (id(climate_target_temp_val_global) == 17) { # left=26; # mid=17; # right=18; # } else if (id(climate_target_temp_val_global) == 17.5) { # left=27; # mid=17; # right=18; # } else if (id(climate_target_temp_val_global) == 18) { # left=28; # mid=17; # right=18; # } else if (id(climate_target_temp_val_global) == 18.5) { # left=29; # mid=30; # right=18; # } else if (id(climate_target_temp_val_global) == 19) { # left=29; # mid=31; # right=18; # } else if (id(climate_target_temp_val_global) == 19.5) { # left=29; # mid=32; # right=18; # } else if (id(climate_target_temp_val_global) == 20) { # left=29; # mid=33; # right=18; # } else if (id(climate_target_temp_val_global) == 20.5) { # left=29; # mid=34; # right=18; # } else if (id(climate_target_temp_val_global) == 21) { # left=29; # mid=35; # right=18; # } else if (id(climate_target_temp_val_global) == 21.5) { # left=29; # mid=36; # right=18; # } else if (id(climate_target_temp_val_global) == 22) { # left=29; # mid=37; # right=38; # } else if (id(climate_target_temp_val_global) == 22.5) { # left=29; # mid=37; # right=39; # } else if (id(climate_target_temp_val_global) == 23) { # left=29; # mid=37; # right=40; # } else if (id(climate_target_temp_val_global) == 23.5) { # left=29; # mid=37; # right=41; # } else if (id(climate_target_temp_val_global) == 24) { # left=29; # mid=37; # right=42; # } else if (id(climate_target_temp_val_global) == 24.5) { # left=29; # mid=37; # right=43; # } else if (id(climate_target_temp_val_global) == 25) { # left=29; # mid=37; # right=44; # } else if (id(climate_target_temp_val_global) == 25.5) { # left=29; # mid=37; # right=45; # } else if (id(climate_target_temp_val_global) == 26) { # left=29; # mid=37; # right=46; # } else if (id(climate_target_temp_val_global) == 26.5) { # left=29; # mid=37; # right=47; # } else if (id(climate_target_temp_val_global) == 27) { # left=29; # mid=37; # right=48; # } # // sends the 3 images to the display # id(disp1).send_command_printf("thermostat.a01.pic=%i", left); # id(disp1).send_command_printf("thermostat.a02.pic=%i", mid); # id(disp1).send_command_printf("thermostat.a03.pic=%i", right); ###### TARGET TEMPERATURE GET VALUE FROM NEXTION CIRCLE SLIDER AND SET GLOBAL VARIBLE ##### # - platform: nextion # id: climate_circleslider # name: ${device_name} Climate circleslider # variable_name: climateslider # internal: true # on_value: # then: # - wait_until: # switch.is_on: nextion_init # - globals.set: # id: climate_slider_val_global # value: !lambda 'return int(x);' # - lambda: |- # if (id(climate_slider_val_global) == 0) { # id(climate_target_temp_val_global) = 13; # } else if (id(climate_slider_val_global) == 1) { # id(climate_target_temp_val_global) = 13.5; # } else if (id(climate_slider_val_global) == 2) { # id(climate_target_temp_val_global) = 14; # } else if (id(climate_slider_val_global) == 3) { # id(climate_target_temp_val_global) = 14.5; # } else if (id(climate_slider_val_global) == 4) { # id(climate_target_temp_val_global) = 15; # } else if (id(climate_slider_val_global) == 5) { # id(climate_target_temp_val_global) = 15.5; # } else if (id(climate_slider_val_global) == 6) { # id(climate_target_temp_val_global) = 16; # } else if (id(climate_slider_val_global) == 7) { # id(climate_target_temp_val_global) = 16.5; # } else if (id(climate_slider_val_global) == 8) { # id(climate_target_temp_val_global) = 17; # } else if (id(climate_slider_val_global) == 9) { # id(climate_target_temp_val_global) = 17.5; # } else if (id(climate_slider_val_global) == 10) { # id(climate_target_temp_val_global) = 18; # } else if (id(climate_slider_val_global) == 11) { # id(climate_target_temp_val_global) = 18.5; # } else if (id(climate_slider_val_global) == 12) { # id(climate_target_temp_val_global) = 19; # } else if (id(climate_slider_val_global) == 13) { # id(climate_target_temp_val_global) = 19.5; # } else if (id(climate_slider_val_global) == 14) { # id(climate_target_temp_val_global) = 20; # } else if (id(climate_slider_val_global) == 15) { # id(climate_target_temp_val_global) = 20.5; # } else if (id(climate_slider_val_global) == 16) { # id(climate_target_temp_val_global) = 21; # } else if (id(climate_slider_val_global) == 17) { # id(climate_target_temp_val_global) = 21.5; # } else if (id(climate_slider_val_global) == 18) { # id(climate_target_temp_val_global) = 22; # } else if (id(climate_slider_val_global) == 19) { # id(climate_target_temp_val_global) = 22.5; # } else if (id(climate_slider_val_global) == 20) { # id(climate_target_temp_val_global) = 23; # } else if (id(climate_slider_val_global) == 21) { # id(climate_target_temp_val_global) = 23.5; # } else if (id(climate_slider_val_global) == 22) { # id(climate_target_temp_val_global) = 24; # } else if (id(climate_slider_val_global) == 23) { # id(climate_target_temp_val_global) = 24.5; # } else if (id(climate_slider_val_global) == 24) { # id(climate_target_temp_val_global) = 25; # } else if (id(climate_slider_val_global) == 25) { # id(climate_target_temp_val_global) = 25.5; # } else if (id(climate_slider_val_global) == 26) { # id(climate_target_temp_val_global) = 26; # } else if (id(climate_slider_val_global) == 27) { # id(climate_target_temp_val_global) = 26.5; # } else if (id(climate_slider_val_global) == 28) { # id(climate_target_temp_val_global) = 27; # } # - homeassistant.service: # service: climate.set_temperature # data_template: # entity_id: ${ha_climate_thermostat} # temperature: !lambda return id(climate_target_temp_val_global); ###### Display Brightness GET VALUE FROM NSPanel SLIDER ##### - platform: nextion id: brightslider name: ${device_name} brightness Slider variable_name: brightslider internal: true on_value: then: - wait_until: switch.is_on: nextion_init - number.set: id: display_brightness value: !lambda 'return int(x);' # send text field percentage of current_lightslider_val - lambda: id(disp1).set_component_text_printf("settings.a03", "%i", id(display_brightness_global)); ###### Display DIM Brightness GET VALUE FROM NSPanel SLIDER ##### - platform: nextion id: dimslider name: ${device_name} dim brightness slider variable_name: dimslider internal: true on_value: then: - wait_until: switch.is_on: nextion_init - number.set: id: display_dim_brightness value: !lambda 'return int(x);' # send text field percentage of current_lightslider_val - lambda: id(disp1).set_component_text_printf("settings.a04", "%i", id(display_dim_brightness_global)); ###### Send current page to HA - 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); ######################################### # # ############################################################# ##### CLOSE - SENSOR ##### ############################################################# # ## ### ############################################################################################################################################################################################# ### ## # ############################################################# ##### START - TEXT SENSOR##### ############################################################# # # ######################################### text_sensor: ##### ESPhome version used to compile the app ##### - platform: 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 ##### # - platform: homeassistant # id: sun_sun # entity_id: sun.sun ##### last click sensor, the main action variable - push to HA ##### - platform: nextion nextion_id: disp1 name: ${device_name} Last Click id: disp1_lastclick_general update_interval: 50ms component_name: lastclick internal: false filters: - lambda: |- if (strcmp(x.c_str(), id(lastclick_general_global).c_str()) != 0) { return x; } else { return {}; } on_value: then: - globals.set: id: lastclick_general_global value: !lambda return x; ##### last click lightsettings page, the main action variable - push to HA ##### - platform: nextion nextion_id: disp1 name: ${device_name} last click lightsettings id: disp1_lastclick_lightsettings update_interval: 50ms component_name: lightsetting internal: false filters: - lambda: |- if (strcmp(x.c_str(), id(lastclick_lightsettings_global).c_str()) != 0) { return x; } else { return {}; } on_value: then: - globals.set: id: lastclick_lightsettings_global value: !lambda return x; ##### last click coversettings page, the main action variable - push to HA ##### - platform: nextion nextion_id: disp1 name: ${device_name} last click coversettings id: disp1_lastclick_coversettings update_interval: 50ms component_name: coversetting internal: false filters: - lambda: |- if (strcmp(x.c_str(), id(lastclick_coversettings_global).c_str()) != 0) { return x; } else { return {}; } on_value: then: - globals.set: id: lastclick_coversettings_global value: !lambda return x; ##### last click climate page, the main action variable - push to HA ##### - platform: nextion nextion_id: disp1 name: ${device_name} last click weathersettings id: disp1_lastclick_climatesettings update_interval: 50ms component_name: weathersetting internal: false filters: - lambda: |- if (strcmp(x.c_str(), id(lastclick_climatesettings_global).c_str()) != 0) { return x; } else { return {}; } on_value: then: - globals.set: id: lastclick_climatesettings_global value: !lambda return x; ##### HEATING System ICON ##### # - platform: homeassistant # entity_id: ${ha_heating_system_flame} # name: "Heating System" # id: heating_system # on_value: # then: # - wait_until: # switch.is_on: nextion_init # - lambda: |- # int symbol=53; // 53 is a blank image 20x20 # if (id(heating_system).state == "on") { # symbol=64; # } # id(disp1).send_command_printf("home.a50.pic=%i", symbol); # id(disp1).send_command_printf("thermostat.a50.pic=%i", symbol); ##### Hotwater Charge ICON ##### # - platform: homeassistant # entity_id: ${ha_hotwater_charge} # name: "Hotwater Charge" # id: hotwater_charge # on_value: # then: # - wait_until: # switch.is_on: nextion_init # - lambda: |- # if (id(hotwater_charge).state == "on") { # id(disp1).set_component_value("thermostat.a12",1); # } else { # id(disp1).set_component_value("thermostat.a12",0); # } ######################################### # # ############################################################# ##### CLOSE - TEXT SENSOR ##### ############################################################# # ## ### ############################################################################################################################################################################################# ### ## # ############################################################# ##### START - 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 ##### - platform: template name: ${device_name} Nextion inited id: nextion_init entity_category: config restore_state: false assumed_state: off optimistic: true ##### UPDATE TFT DISPLAY ##### - platform: template name: Update TFT display id: tft_update turn_on_action: - delay: 16ms - lambda: id(disp1).upload_tft(); - switch.turn_off: tft_update ##### PHYSICAL SWITCH 1 ##### - platform: gpio name: ${device_name} Relay 1 id: relay_1 pin: number: 22 ##### PHYSICAL SWITCH 2 ###### - platform: gpio name: ${device_name} Relay 2 id: relay_2 pin: number: 19 ##### Switch Climate HVAC Mode ##### # - platform: template # device_class: switch # name: ${device_name} hvac Mode # id: hvac_mode # restore_state: true # assumed_state: false # optimistic: true # on_turn_off: # - lambda: id(disp1).set_component_value("thermostat.a10",0); # - globals.set: # id: hvac_mode_global # value: '0' # - homeassistant.service: # service: climate.set_hvac_mode # data_template: # entity_id: $ha_climate_thermostat # hvac_mode: 'off' # - lambda: id(disp1).send_command_printf("thermostat.a06.pic=49"); # - lambda: id(disp1).send_command_printf("home.a51.pic=53"); # - lambda: id(disp1).send_command_printf("thermostat.a51.pic=53"); # on_turn_on: # - lambda: id(disp1).set_component_value("thermostat.a10",1); # - globals.set: # id: hvac_mode_global # value: '1' # - homeassistant.service: # service: climate.set_hvac_mode # data_template: # entity_id: $ha_climate_thermostat # hvac_mode: 'heat' # - lambda: |- # if (id(heating_room_global) == 0) # { # id(disp1).send_command_printf("thermostat.a06.pic=50"); # } else if (id(heating_room_global) == 1) { # id(disp1).send_command_printf("thermostat.a06.pic=51"); # } # - lambda: id(disp1).send_command_printf("home.a51.pic=65"); # - lambda: id(disp1).send_command_printf("thermostat.a51.pic=65"); ##### DISPLAY ALWAYS ON ##### - platform: gpio name: ${device_name} Screen Power id: screen_power entity_category: config pin: number: 4 inverted: true restore_mode: ALWAYS_ON internal: true ##### Switch Display Sleep Modus ##### - platform: template device_class: switch name: ${device_name} Sleep Modus id: sleep_modus restore_state: true assumed_state: false optimistic: true on_turn_off: - lambda: id(disp1).send_command_printf("home.sleepmodus.val=0"); - globals.set: id: sleep_modus_global value: '0' - lambda: id(disp1).set_component_value("settings.a02",0); on_turn_on: - lambda: id(disp1).send_command_printf("home.sleepmodus.val=1"); - globals.set: id: sleep_modus_global value: '1' - lambda: id(disp1).set_component_value("settings.a02",1); ######################################### # # ############################################################# ##### CLOSE - SWITCH ##### ############################################################# # ## ### ############################################################################################################################################################################################# ### ## # ############################################################# ##### START - NUMBER ##### ############################################################# # # ######################################### number: ##### SCREEN BRIGHTNESS ##### - platform: template name: ${device_name} Display Brightness id: display_brightness entity_category: config unit_of_measurement: '%' min_value: 1 max_value: 100 step: 1 restore_value: true optimistic: true set_action: then: - lambda: 'id(disp1).set_backlight_brightness(x/100);' - lambda: 'id(disp1).send_command_printf("home.brightness.val=%i", int(x));' - globals.set: id: display_brightness_global value: !lambda 'return int(x);' ##### SCREEN BRIGHTNESS DIMMED DOWN ##### - platform: template name: ${device_name} Display Brightness Dimdown id: display_dim_brightness entity_category: config unit_of_measurement: '%' min_value: 1 max_value: 100 step: 1 restore_value: true optimistic: true set_action: then: - lambda: 'id(disp1).send_command_printf("home.brightdd.val=%i", int(x));' - globals.set: id: display_dim_brightness_global value: !lambda 'return int(x);' ######################################### # # ############################################################# ##### CLOSE - NUMBER ##### ############################################################# # ## ### ############################################################################################################################################################################################# ### ## # ############################################################# ##### START - DISPLAY START##### ############################################################# # # ######################################### display: - platform: nextion id: disp1 uart_id: tf_uart tft_url: ${nextion_update_url} on_setup: then: - lambda: id(disp1).send_command_printf("page 9"); ##### CHANGE! - Loading page ##### - wait_until: api.connected - delay: 0.5s - rtttl.play: "two short:d=4,o=5,b=100:16e6,16e6" - delay: 0.5s - switch.template.publish: id: nextion_init state: on - lambda: id(disp1).send_command_printf("page 0"); #### home page ##### - delay: 2s ##### gives the display time to update other components & set the home page ##### - number.set: id: display_brightness value: !lambda 'return id(display_brightness_global);' - number.set: id: display_dim_brightness value: !lambda 'return id(display_dim_brightness_global);' - lambda: id(disp1).set_component_text_printf("settings.a03", "%i", id(display_brightness_global)); - lambda: id(disp1).set_component_text_printf("settings.a04", "%i", id(display_dim_brightness_global)); - lambda: id(disp1).send_command_printf("settings.brightslider.val=%i", id(display_brightness_global)); - lambda: id(disp1).send_command_printf("settings.dimslider.val=%i", id(display_dim_brightness_global)); - lambda: id(disp1).send_command_printf("home.sleepmodus.val=%i", id(sleep_modus_global)); - lambda: |- id(disp1).set_component_value("settings.a02",0); if (id(sleep_modus_global) == 1) { id(disp1).set_component_value("settings.a02",1); } # - lambda: |- # id(disp1).send_command_printf("home.a50.pic=53"); # id(disp1).send_command_printf("thermostat.a50.pic=53"); # id(disp1).send_command_printf("thermostat.a06.pic=50"); # if (id(heating_room_global) == 1) # { # id(disp1).send_command_printf("home.a52.pic=66"); # id(disp1).send_command_printf("thermostat.a52.pic=66"); # id(disp1).send_command_printf("thermostat.a06.pic=51"); # } # - lambda: |- # if (id(hvac_mode_global) == 0) { # id(disp1).send_command_printf("home.a51.pic=53"); # id(disp1).send_command_printf("thermostat.a51.pic=53"); # id(disp1).send_command_printf("thermostat.a06.pic=49"); # } else if (id(hvac_mode_global) == 1) { # id(disp1).send_command_printf("home.a51.pic=65"); # id(disp1).send_command_printf("thermostat.a51.pic=65"); # id(disp1).set_component_value("thermostat.a10",1); # } ############################################################# ##### CLOSE - DISPLAY START ##### #############################################################