Hello Every One and best wishes for 2022
I try to upadte my time on my NSPAnel But if the time and date is correct when the Nspanel boot
The values (Time and date) don’t update
The values of CO2 sensor and temperature from home assistant update
Can you check my Code and help me ?
Thanks
# Note: this may not be needed if the pull request has been merged.
# Check https://github.com/esphome/esphome/pull/2956 for current status.
external_components:
- source: github://pr#2956
components: [nextion]
refresh: 1h
substitutions:
node_name: nspanel-sdj
device_name: NSPanel SdJ
esphome:
name: $node_name
comment: $device_name
esp32:
board: esp32dev
# Enable logging
logger:
# Enable Home Assistant API
ota:
password: "xxxxxxxxxxxxxxxx"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Nspanel-Sdj Fallback Hotspot"
password: "xxxxxx"
captive_portal:
# Enable Home Assistant API
api:
services:
# Service to play a song
- service: play_rtttl
variables:
song_str: string
then:
- rtttl.play:
rtttl: !lambda 'return song_str;'
- service: upload_tft
then:
- lambda: 'id(disp1)->upload_tft();'
# A reboot button is always useful
button:
- platform: restart
name: Restart $device_name
# Define some inputs
binary_sensor:
- platform: gpio
name: $device_name Left Button
pin:
number: 14
inverted: true
on_click:
- switch.toggle: relay_1
- platform: gpio
name: $device_name Right Button
pin:
number: 27
inverted: true
on_click:
- switch.toggle: relay_2
- platform: nextion
name: $device_name work Button
page_id: 0
component_id: 3
- platform: nextion
name: $device_name B1 Button
page_id: 0
component_id: 4
- platform: nextion
name: $device_name B2 Button
page_id: 0
component_id: 5
sensor:
- platform: wifi_signal
name: $device_name WiFi Signal
update_interval: 60s
- platform: ntc
id: temperature
sensor: resistance_sensor
calibration:
b_constant: 3950
reference_temperature: 25°C
reference_resistance: 10kOhm
name: $device_name Temperature
- platform: resistance
id: resistance_sensor
sensor: ntc_source
configuration: DOWNSTREAM
resistor: 11.2kOhm
- platform: adc
id: ntc_source
pin: 38
update_interval: 10s
attenuation: 11db
# Grab current temperature from Home Assistant
- platform: homeassistant
id: current_temperature
entity_id: sensor.sation_sdj_temperature_ambiante
on_value:
# Push it to the display
then:
- lambda: 'id(disp1).set_component_text_printf("temp", "%.1f ""\xb0""c", x);'
- platform: homeassistant
id: current_co2
entity_id: sensor.station_sdj_co2_ambient
on_value:
# Push it to the display
then:
- lambda: 'id(disp1).set_component_text_printf("co2", "%2.0f ppm", x);'
# Define some outputs
switch:
# The two relays
- platform: gpio
name: $device_name Relay 1
id: relay_1
pin:
number: 22
- platform: gpio
name: $device_name Relay 2
id: relay_2
pin:
number: 19
# Pin 4 always needs to be on to power up the display
- platform: gpio
id: screen_power
entity_category: config
pin:
number: 4
inverted: true
restore_mode: ALWAYS_ON
number:
platform: template
name: $device_name Brightness
id: brightness
entity_category: config
unit_of_measurement: '%'
min_value: 0
max_value: 100
step: 1
initial_value: 30
set_action:
then:
- lambda: 'id(disp1).set_backlight_brightness(x/100);'
# Configure the internal bleeper
output:
- platform: ledc
id: buzzer_out
pin:
number: 21
# Enable ringtone music support
rtttl:
id: buzzer
output: buzzer_out
# Configure UART for communicating with the screen
uart:
id: tf_uart
tx_pin: 16
rx_pin: 17
baud_rate: 115200
time:
- platform: sntp
id: sntp_time
# Configure the screen itself
display:
- platform: nextion
id: disp1
uart_id: tf_uart
tft_url: http://10.0.0.40:8123/local/tft/nspanelsdj.tft
update_interval: 5s
# A little fun...
on_setup:
then:
- number.set:
id: brightness
value: 40
- lambda: |-
id(disp1).set_component_text_printf(
"temp", "%.1f ""\xb0""c", id(current_temperature).state
);
id(disp1).set_component_text_printf(
"co2", "%2.0f ppm", id(current_co2).state
);
auto time_text = id(sntp_time).now().strftime("%H:%M");
auto date_text = id(sntp_time).now().strftime("%d %b.");
id(disp1).set_component_text("time", time_text.c_str());
id(disp1).set_component_text("date", date_text.c_str());
auto time = id(sntp_time).now();
- rtttl.play: "twobits:d=4,o=5,b=220:c6,8g,8g,a,g,p,b,c6"