Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- substitutions:
- name: esp32-rega-plantacao
- friendly_name: ESP32 Rega da Plantação
- comment: Kiwis Sprinkler Controller
- packages:
- base: !include common/base.yaml
- wifi: !include common/wifi.yaml
- esp32: !include common/devices/esp32_az-delivery-devkit-v4.yaml
- esphome:
- on_boot:
- priority: -100
- then:
- # Set default state for Valve Status
- - text_sensor.template.publish:
- id: valve_status
- state: "Parado"
- spi:
- clk_pin: GPIO26
- mosi_pin: GPIO27
- display:
- - platform: st7735
- model: INITR_MINI160X80
- id: my_display
- reset_pin: GPIO25
- cs_pin: GPIO33
- dc_pin: GPIO32
- rotation: 270
- device_width: 82
- device_height: 161
- col_start: 0
- row_start: 0
- eight_bit_color: true
- invert_colors: true
- use_bgr: true
- update_interval: 1s
- lambda: |-
- if (id(kiwis_sprinkler_ctrlr).active_valve().has_value() && id(kiwis_sprinkler_ctrlr).time_remaining_active_valve().has_value()) {
- auto running_valve = id(kiwis_sprinkler_ctrlr).active_valve().value();
- auto time_remaining = id(kiwis_sprinkler_ctrlr).time_remaining_active_valve().value();
- it.print(80, 8, id(font1), TextAlign::TOP_CENTER, "REGA KIWIS");
- it.printf(80, 35, id(font2), TextAlign::TOP_CENTER, "SECTOR %u", running_valve + 1);
- int minutes = time_remaining / 60;
- int seconds = time_remaining % 60;
- it.printf(80, 55, id(font2), TextAlign::TOP_CENTER, "%dm %ds", minutes, seconds);
- } else if (id(kiwis_sprinkler_ctrlr).paused_valve().has_value()) {
- auto paused_valve = id(kiwis_sprinkler_ctrlr).paused_valve().value();
- it.print(80, 8, id(font1), TextAlign::TOP_CENTER, "REGA KIWIS");
- it.printf(80, 35, id(font2), TextAlign::TOP_CENTER, "SECTOR %u", paused_valve + 1);
- it.print(80, 55, id(font2), TextAlign::TOP_CENTER, "PAUSA");
- } else {
- it.print(80, 8, id(font1), TextAlign::TOP_CENTER, "REGA KIWIS");
- it.print(80, 35, id(font2), TextAlign::TOP_CENTER, "PARADO");
- }
- font:
- - file:
- type: gfonts
- family: Roboto
- weight: 700
- id: font1
- size: 20
- - file:
- type: gfonts
- family: Roboto
- weight: 500
- id: font2
- size: 16
- # Enable Home Assistant API
- api:
- services:
- - service: start_full_cycle
- then:
- - sprinkler.start_full_cycle: kiwis_sprinkler_ctrlr
- - service: start_single_valve
- variables:
- valve: int
- then:
- - sprinkler.start_single_valve:
- id: kiwis_sprinkler_ctrlr
- valve_number: !lambda 'return valve-1;'
- - service: next_valve
- then:
- - sprinkler.next_valve: kiwis_sprinkler_ctrlr
- - service: previous_valve
- then:
- - sprinkler.previous_valve: kiwis_sprinkler_ctrlr
- - service: shutdown
- then:
- - sprinkler.shutdown: kiwis_sprinkler_ctrlr
- - service: pause
- then:
- - sprinkler.pause: kiwis_sprinkler_ctrlr
- - service: resume
- then:
- - sprinkler.resume: kiwis_sprinkler_ctrlr
- - service: set_valve_run_duration
- variables:
- valve: int
- duration: int
- then:
- - sprinkler.set_valve_run_duration:
- id: kiwis_sprinkler_ctrlr
- valve_number: !lambda 'return valve-1;'
- run_duration: !lambda 'return duration*60;'
- text_sensor:
- # Expose Time Remaining as a sensor.
- - platform: template
- id: valve_active_time_remaining
- name: "Tempo Restante"
- update_interval: 20s
- icon: "mdi:timer-sand"
- lambda: |-
- int seconds = round(id(kiwis_sprinkler_ctrlr).time_remaining_active_valve().value_or(0));
- int days = seconds / (24 * 3600);
- seconds = seconds % (24 * 3600);
- int hours = seconds / 3600;
- seconds = seconds % 3600;
- int minutes = seconds / 60;
- seconds = seconds % 60;
- return {
- ((days ? String(days) + "d " : "") +
- (hours ? String(hours) + "h " : "") +
- (minutes ? String(minutes) + "m " : "") +
- (String(seconds) + "s")
- ).c_str()};
- # Expose Progress Percent as a sensor.
- - platform: template
- id: valve_active_progress_percent
- name: "Progresso %"
- update_interval: 20s
- icon: "mdi:progress-clock"
- lambda: |-
- int progress_percent = round(((id(kiwis_sprinkler_ctrlr).valve_run_duration_adjusted(id(kiwis_sprinkler_ctrlr).active_valve().value_or(0)) - id(kiwis_sprinkler_ctrlr).time_remaining_active_valve().value_or(0)) * 100 / id(kiwis_sprinkler_ctrlr).valve_run_duration_adjusted(id(kiwis_sprinkler_ctrlr).active_valve().value_or(0))));
- std::string progress_percent_as_string = std::to_string(progress_percent);
- return progress_percent_as_string;
- # Expose Valve Status as a sensor.
- - platform: template
- id: valve_status
- name: "Estado"
- update_interval: never
- icon: "mdi:information-variant"
- button:
- - platform: template
- id: sprinkler_pause
- name: "Pausa"
- icon: "mdi:pause"
- on_press:
- then:
- - text_sensor.template.publish:
- id: valve_status
- state: "Pausa"
- - sprinkler.pause: kiwis_sprinkler_ctrlr
- sprinkler:
- - id: kiwis_sprinkler_ctrlr
- main_switch:
- name: Rega
- icon: mdi:pipe-valve
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_OFF
- auto_advance_switch:
- name: Rega Automática
- icon: mdi:alpha-a-circle
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_OFF
- entity_category: config
- reverse_switch:
- name: Rega Invertida
- icon: mdi:arrow-expand-left
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_OFF
- entity_category: config
- valve_open_delay: 5s
- next_prev_ignore_disabled: true
- valves:
- - valve_switch:
- name: Sector 1
- icon: mdi:sprinkler-fire
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_OFF
- enable_switch:
- name: Activação - Sector 1
- icon: mdi:pipe
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_ON
- entity_category: config
- run_duration_number:
- name: Duração - Sector 1
- icon: mdi:timer-outline
- id: kiwis_sprinkler_ctrlr_sector_1_run_duration
- unit_of_measurement: min
- mode: BOX
- initial_value: 1
- min_value: 1
- max_value: 60
- step: 1
- restore_value: true
- disabled_by_default: false
- entity_category: config
- pump_switch_id: kiwis_sprinkler_pump_sw
- valve_switch_id: kiwis_sprinkler_valve_sw1
- - valve_switch:
- name: Sector 2
- icon: mdi:sprinkler-fire
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_OFF
- enable_switch:
- name: Activação - Sector 2
- icon: mdi:pipe
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_ON
- entity_category: config
- run_duration_number:
- name: Duração - Sector 2
- icon: mdi:timer-outline
- id: kiwis_sprinkler_ctrlr_sector_2_run_duration
- unit_of_measurement: min
- mode: BOX
- initial_value: 1
- min_value: 1
- max_value: 60
- step: 1
- restore_value: true
- disabled_by_default: false
- entity_category: config
- pump_switch_id: kiwis_sprinkler_pump_sw
- valve_switch_id: kiwis_sprinkler_valve_sw2
- - valve_switch:
- name: Sector 3
- icon: mdi:sprinkler-fire
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_OFF
- enable_switch:
- name: Activação - Sector 3
- icon: mdi:pipe
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_ON
- entity_category: config
- run_duration_number:
- name: Duração - Sector 3
- icon: mdi:timer-outline
- id: kiwis_sprinkler_ctrlr_sector_3_run_duration
- unit_of_measurement: min
- mode: BOX
- initial_value: 1
- min_value: 1
- max_value: 60
- step: 1
- restore_value: true
- disabled_by_default: false
- entity_category: config
- pump_switch_id: kiwis_sprinkler_pump_sw
- valve_switch_id: kiwis_sprinkler_valve_sw3
- - valve_switch:
- name: Sector 4
- icon: mdi:sprinkler-fire
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_OFF
- enable_switch:
- name: Activação - Sector 4
- icon: mdi:pipe
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_ON
- entity_category: config
- run_duration_number:
- name: Duração - Sector 4
- icon: mdi:timer-outline
- id: kiwis_sprinkler_ctrlr_sector_4_run_duration
- unit_of_measurement: min
- mode: BOX
- initial_value: 1
- min_value: 1
- max_value: 60
- step: 1
- restore_value: true
- disabled_by_default: false
- entity_category: config
- pump_switch_id: kiwis_sprinkler_pump_sw
- valve_switch_id: kiwis_sprinkler_valve_sw4
- - valve_switch:
- name: Sector 5
- icon: mdi:sprinkler-fire
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_OFF
- enable_switch:
- name: Activação - Sector 5
- icon: mdi:pipe
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_ON
- entity_category: config
- run_duration_number:
- name: Duração - Sector 5
- icon: mdi:timer-outline
- id: kiwis_sprinkler_ctrlr_sector_5_run_duration
- unit_of_measurement: min
- mode: BOX
- initial_value: 1
- min_value: 1
- max_value: 60
- step: 1
- restore_value: true
- disabled_by_default: false
- entity_category: config
- pump_switch_id: kiwis_sprinkler_pump_sw
- valve_switch_id: kiwis_sprinkler_valve_sw5
- - valve_switch:
- name: Sector 6
- icon: mdi:sprinkler-fire
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_OFF
- enable_switch:
- name: Activação - Sector 6
- icon: mdi:pipe
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_ON
- entity_category: config
- run_duration_number:
- name: Duração - Sector 6
- icon: mdi:timer-outline
- id: kiwis_sprinkler_ctrlr_sector_6_run_duration
- unit_of_measurement: min
- mode: BOX
- initial_value: 1
- min_value: 1
- max_value: 60
- step: 1
- restore_value: true
- disabled_by_default: false
- entity_category: config
- pump_switch_id: kiwis_sprinkler_pump_sw
- valve_switch_id: kiwis_sprinkler_valve_sw6
- - valve_switch:
- name: Sector 7
- icon: mdi:sprinkler-fire
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_OFF
- enable_switch:
- name: Activação - Sector 7
- icon: mdi:pipe
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_ON
- entity_category: config
- run_duration_number:
- name: Duração - Sector 7
- icon: mdi:timer-outline
- id: kiwis_sprinkler_ctrlr_sector_7_run_duration
- unit_of_measurement: min
- mode: BOX
- initial_value: 1
- min_value: 1
- max_value: 60
- step: 1
- restore_value: true
- disabled_by_default: false
- entity_category: config
- pump_switch_id: kiwis_sprinkler_pump_sw
- valve_switch_id: kiwis_sprinkler_valve_sw7
- - valve_switch:
- name: Sector 8
- icon: mdi:sprinkler-fire
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_OFF
- enable_switch:
- name: Activação - Sector 8
- icon: mdi:pipe
- disabled_by_default: false
- restore_mode: RESTORE_DEFAULT_ON
- entity_category: config
- run_duration_number:
- name: Duração - Sector 8
- icon: mdi:timer-outline
- id: kiwis_sprinkler_ctrlr_sector_8_run_duration
- unit_of_measurement: min
- mode: BOX
- initial_value: 1
- min_value: 1
- max_value: 60
- step: 1
- restore_value: true
- disabled_by_default: false
- entity_category: config
- pump_switch_id: kiwis_sprinkler_pump_sw
- valve_switch_id: kiwis_sprinkler_valve_sw8
- switch:
- - platform: gpio
- id: kiwis_sprinkler_pump_sw
- pin: GPIO13
- inverted: true
- internal: true
- restore_mode: RESTORE_DEFAULT_OFF
- - platform: gpio
- id: kiwis_sprinkler_valve_sw1
- pin: GPIO23
- inverted: true
- internal: true
- restore_mode: RESTORE_DEFAULT_OFF
- on_turn_on:
- - text_sensor.template.publish:
- id: valve_status
- state: "Sector 1 Activo"
- on_turn_off:
- - text_sensor.template.publish:
- id: valve_status
- state: "Parado"
- - platform: gpio
- id: kiwis_sprinkler_valve_sw2
- pin: GPIO22
- inverted: true
- internal: true
- restore_mode: RESTORE_DEFAULT_OFF
- on_turn_on:
- - text_sensor.template.publish:
- id: valve_status
- state: "Sector 2 Activo"
- on_turn_off:
- - text_sensor.template.publish:
- id: valve_status
- state: "Parado"
- - platform: gpio
- id: kiwis_sprinkler_valve_sw3
- pin: GPIO21
- inverted: true
- internal: true
- restore_mode: RESTORE_DEFAULT_OFF
- on_turn_on:
- - text_sensor.template.publish:
- id: valve_status
- state: "Sector 3 Activo"
- on_turn_off:
- - text_sensor.template.publish:
- id: valve_status
- state: "Parado"
- - platform: gpio
- id: kiwis_sprinkler_valve_sw4
- pin: GPIO19
- inverted: true
- internal: true
- restore_mode: RESTORE_DEFAULT_OFF
- on_turn_on:
- - text_sensor.template.publish:
- id: valve_status
- state: "Sector 4 Activo"
- on_turn_off:
- - text_sensor.template.publish:
- id: valve_status
- state: "Parado"
- - platform: gpio
- id: kiwis_sprinkler_valve_sw5
- pin: GPIO18
- inverted: true
- internal: true
- restore_mode: RESTORE_DEFAULT_OFF
- on_turn_on:
- - text_sensor.template.publish:
- id: valve_status
- state: "Sector 5 Activo"
- on_turn_off:
- - text_sensor.template.publish:
- id: valve_status
- state: "Parado"
- - platform: gpio
- id: kiwis_sprinkler_valve_sw6
- pin: GPIO5
- inverted: true
- internal: true
- restore_mode: RESTORE_DEFAULT_OFF
- on_turn_on:
- - text_sensor.template.publish:
- id: valve_status
- state: "Sector 6 Activo"
- on_turn_off:
- - text_sensor.template.publish:
- id: valve_status
- state: "Parado"
- - platform: gpio
- id: kiwis_sprinkler_valve_sw7
- pin: GPIO17
- inverted: true
- internal: true
- restore_mode: RESTORE_DEFAULT_OFF
- on_turn_on:
- - text_sensor.template.publish:
- id: valve_status
- state: "Sector 7 Activo"
- on_turn_off:
- - text_sensor.template.publish:
- id: valve_status
- state: "Parado"
- - platform: gpio
- id: kiwis_sprinkler_valve_sw8
- pin: GPIO16
- inverted: true
- internal: true
- restore_mode: RESTORE_DEFAULT_OFF
- on_turn_on:
- - text_sensor.template.publish:
- id: valve_status
- state: "Sector 8 Activo"
- on_turn_off:
- - text_sensor.template.publish:
- id: valve_status
- state: "Parado"
- - platform: gpio
- pin: GPIO14
- id: display_backlight
- #restore_mode: ALWAYS_ON
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement