{{tag>ESP32 ESP8266 Hardware Deep_Sleep}}
====== ESP32/ESP8266 Deep Sleep ======
===== Besonderheiten ESP8266 =====
Um das Timer-Wake-up mit ESP8266 zu verwenden, muss der RST-Pin mit GPIO 16 (D0) verbunden werden. Siehe: [[https://randomnerdtutorials.com/esp8266-deep-sleep-with-arduino-ide/|ESP8266 Deep Sleep with Arduino IDE (NodeMCU)]]
[[..:..:sdr:hardware:enable_deep_sleep_esp8266.png?media=digitales:hardware:enable_deep_sleep_esp8266.png|{{..:..:sdr:hardware:enable_deep_sleep_esp8266.png?direct&400}}]]
===== Auf dem Client =====
esphome:
name: deep-sleep-d1-mini
friendly_name: Deep Sleep D1-Mini
on_boot:
priority: 250.0
then:
on_loop:
then:
- if:
condition:
- not:
- script.is_running: demo_script
then:
- script.execute: demo_script
esp8266:
board: esp01_1m
logger:
api:
encryption:
key: "zDQR1Ju6tofuK+hhVtttACIJWRrwNd9Swo2eVMmf4cE="
ota:
password: "e70cec7b819f8420caf809f11f4da29b"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Deep-Sleep-D1-Mini"
password: !secret fallback_password
captive_portal:
deep_sleep:
id: deep_sleep_1
run_duration: 20s
sleep_duration: 5s
mqtt:
broker: homeassistant.local
username: MQTT-user
password: !secret mqtt_password
discovery: true
on_message:
- topic: deep-sleep-d1-mini/ota_mode
payload: 'ON'
then:
- logger.log: OTA Mode set to ON from MQTT
- deep_sleep.prevent: deep_sleep_1
- topic: deep-sleep-d1-mini/ota_mode
payload: 'OFF'
then:
- logger.log: OTA Mode set to OFF from MQTT
- deep_sleep.allow: deep_sleep_1
# - deep_sleep.enter: deep_sleep_1
switch:
- platform: template
id: sleep_demo_switch
name: sleep_demo_switch
optimistic: true
script:
id: demo_script
mode: single
then:
- switch.toggle: sleep_demo_switch
- delay: 1s
===== In home assistant =====
==== Automation ====
alias: deep-sleep-d1-mini/ota_mode
description: ""
trigger:
- platform: state
entity_id:
- input_select.deep_sleep_d1_mini_ota_mode
condition: []
action:
- choose:
- conditions:
- condition: state
entity_id: input_select.deep_sleep_d1_mini_ota_mode
state: "ON"
sequence:
- service: script.deep_sleep_d1_mini_ota_mode
data: {}
- choose:
- conditions:
- condition: state
entity_id: input_select.deep_sleep_d1_mini_ota_mode
state: "OFF"
sequence:
- service: script.deep_sleep_d1_mini_ota_mode_off
data: {}
mode: single
==== Script ====
alias: deep-sleep-d1-mini/ota_mode_ON
sequence:
- service: mqtt.publish
data:
qos: "0"
retain: true
topic: deep-sleep-d1-mini/ota_mode
payload: "ON"
mode: single
icon: mdi:facebook-messenger
alias: deep-sleep-d1-mini/ota_mode_ON
sequence:
- service: mqtt.publish
data:
qos: "0"
retain: true
topic: deep-sleep-d1-mini/ota_mode
payload: "ON"
mode: single
icon: mdi:facebook-messenger
substitutions:
devicename: deep-sleep-d1-mini
upper_devicename: Deep Sleep D1-Mini
esphome:
name: $devicename
friendly_name: $upper_devicename
on_boot:
priority: 250.0
then:
on_loop:
then:
- if:
condition:
- not:
- script.is_running: demo_script
then:
- script.execute: demo_script
esp8266:
board: esp01_1m
logger:
packages:
wifi: !include packages/wifi.yaml
mqtt: !include packages/mqtt.yaml
ota: !include packages/ota.yaml
#wifi:
# use_address: 192.168.178.36
# Notice that ‘api’ is commented out, as it clashes with deep sleep as it can take a minute or two to connect to the HA api.
#api:
captive_portal:
deep_sleep:
id: deep_sleep_1
run_duration: 20s
sleep_duration: 10s
mqtt:
on_message:
- topic: deep-sleep-d1-mini/ota_mode
payload: 'ON'
then:
- logger.log: OTA Mode set to ON from MQTT
- deep_sleep.prevent: deep_sleep_1
- topic: deep-sleep-d1-mini/ota_mode
payload: 'OFF'
then:
- logger.log: OTA Mode set to OFF from MQTT
- deep_sleep.allow: deep_sleep_1
# - deep_sleep.enter: deep_sleep_1
switch:
- platform: template
id: sleep_demo_switch
optimistic: true
script:
id: demo_script
mode: single
then:
- logger.log:
format: "Ich bin ESP8266 ESP-01 1M"
- switch.toggle: sleep_demo_switch
- delay: 1s