Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- substitutions:
- name: esp-chicken-coop-doors
- friendly_name: ESP Chicken Coop Doors
- comment: Controls coop doors using sun position
- door_cycle_time: 120s
- packages:
- base: !include common/base.yaml
- wifi: !include common/wifi.yaml
- esp32: !include common/devices/esp32_az-delivery-devkit-v4.yaml
- external_components:
- - source:
- type: git
- url: https://github.com/trombik/esphome-component-ds1302
- components:
- - ds1302
- ota:
- api:
- esphome:
- on_boot:
- - priority: 600
- then:
- - delay: 10s
- - if:
- condition:
- lambda: |-
- auto now = id(ds1302_time).now();
- auto timeopen = id(time_open_test).state_as_esptime();
- auto timeclose = id(time_close_test).state_as_esptime();
- return (now.hour > timeopen.hour || (now.hour == timeopen.hour && now.minute > timeopen.minute)) && (now.hour < timeclose.hour || (now.hour == timeclose.hour && now.minute < timeclose.minute));
- then:
- - switch.turn_on: door_test_debug
- else:
- - switch.turn_off: door_test_debug
- datetime:
- - platform: template
- id: time_open_test
- type: time
- name: "Time Open - TEST"
- icon: mdi:sort-clock-descending
- optimistic: yes
- initial_value: "08:30:00"
- restore_value: true
- on_time:
- then:
- - switch.turn_on: door_test_debug
- - platform: template
- id: time_close_test
- type: time
- name: "Time Close - TEST"
- icon: mdi:sort-clock-ascending
- optimistic: yes
- initial_value: "21:30:00"
- restore_value: true
- on_time:
- then:
- - switch.turn_off: door_test_debug
- sun:
- latitude: xx.xxx
- longitude: xx.xxx
- on_sunrise:
- - elevation: 20°
- then:
- - delay: 5min
- - lambda: |-
- if (id(sunrise_schedule).state) {
- // Get the current time as ESPTime
- auto now = id(ds1302_time).now();
- // Calculate the time 5 minutes earlier
- int hour = now.hour;
- int minute = now.minute;
- int second = now.second;
- // Subtract 5 minutes
- minute -= 5;
- if (minute < 0) {
- minute += 60;
- hour--;
- if (hour < 0) {
- hour += 24;
- }
- }
- // Update the time_open_test to the adjusted time
- auto call = id(time_open_test).make_call();
- call.set_time(hour, minute, second);
- call.perform();
- }
- on_sunset:
- - elevation: -10°
- then:
- - delay: 5min
- - lambda: |-
- if (id(sunset_schedule).state) {
- // Get the current time as ESPTime
- auto now = id(ds1302_time).now();
- // Calculate the time 5 minutes earlier
- int hour = now.hour;
- int minute = now.minute;
- int second = now.second;
- // Subtract 5 minutes
- minute -= 5;
- if (minute < 0) {
- minute += 60;
- hour--;
- if (hour < 0) {
- hour += 24;
- }
- }
- // Update the time_close_test to the adjusted time
- auto call = id(time_close_test).make_call();
- call.set_time(hour, minute, second);
- call.perform();
- }
- sensor:
- - platform: sun
- name: Sun Elevation
- type: elevation
- text_sensor:
- - platform: sun
- name: "Next Sunrise +20°"
- id: next_sunrise_plus_20
- type: sunrise
- elevation: +20.0°
- - platform: sun
- name: "Next Sunrise"
- id: next_sunrise_normal
- type: sunrise
- - platform: sun
- name: Next Sunset
- id: next_sunset_normal
- type: sunset
- - platform: sun
- name: "Next Sunset -10°"
- id: next_sunset_minus_10
- type: sunset
- elevation: -10.0°
- time:
- - platform: ds1302
- id: ds1302_time
- cs_pin: GPIO25
- dio_pin: GPIO26
- clk_pin: GPIO27
- update_interval: never
- - platform: sntp
- id: sntp_time
- on_time_sync:
- then:
- ds1302.write_time:
- switch:
- - platform: template
- name: "Door TEST (ON/OPEN OFF/CLOSE) Debug"
- id: door_test_debug
- icon: mdi:window-shutter-cog
- optimistic: true
- restore_mode: RESTORE_DEFAULT_OFF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement