Advertisement
joaopedros2

Untitled

May 18th, 2023
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 16.10 KB | Software | 0 0
  1. substitutions:
  2.   name: esp32-rega-plantacao
  3.   friendly_name: ESP32 Rega da Plantação
  4.   comment: Kiwis Sprinkler Controller
  5.  
  6. packages:
  7.   base: !include common/base.yaml
  8.   wifi: !include common/wifi.yaml
  9.   esp32: !include common/devices/esp32_az-delivery-devkit-v4.yaml
  10.  
  11. esphome:
  12.   on_boot:
  13.     priority: -100
  14.     then:
  15.      # Set default state for Valve Status
  16.       - text_sensor.template.publish:
  17.           id: valve_status
  18.           state: "Parado"
  19.  
  20. spi:
  21.   clk_pin: GPIO26
  22.   mosi_pin: GPIO27
  23.  
  24. display:
  25.   - platform: st7735
  26.     model: INITR_MINI160X80
  27.     id: my_display
  28.     reset_pin: GPIO25
  29.     cs_pin: GPIO33
  30.     dc_pin: GPIO32
  31.     rotation: 270
  32.     device_width: 82
  33.     device_height: 161
  34.     col_start: 0
  35.     row_start: 0
  36.     eight_bit_color: true
  37.     invert_colors: true
  38.     use_bgr: true
  39.     update_interval: 1s
  40.     lambda: |-
  41.       if (id(kiwis_sprinkler_ctrlr).active_valve().has_value() && id(kiwis_sprinkler_ctrlr).time_remaining_active_valve().has_value()) {
  42.         auto running_valve = id(kiwis_sprinkler_ctrlr).active_valve().value();
  43.         auto time_remaining = id(kiwis_sprinkler_ctrlr).time_remaining_active_valve().value();
  44.         it.print(80, 8, id(font1), TextAlign::TOP_CENTER, "REGA KIWIS");
  45.         it.printf(80, 35, id(font2), TextAlign::TOP_CENTER, "SECTOR %u", running_valve + 1);
  46.         int minutes = time_remaining / 60;
  47.         int seconds = time_remaining % 60;
  48.         it.printf(80, 55, id(font2), TextAlign::TOP_CENTER, "%dm %ds", minutes, seconds);
  49.       } else if (id(kiwis_sprinkler_ctrlr).paused_valve().has_value()) {
  50.         auto paused_valve = id(kiwis_sprinkler_ctrlr).paused_valve().value();
  51.         it.print(80, 8, id(font1), TextAlign::TOP_CENTER, "REGA KIWIS");
  52.         it.printf(80, 35, id(font2), TextAlign::TOP_CENTER, "SECTOR %u", paused_valve + 1);
  53.         it.print(80, 55, id(font2), TextAlign::TOP_CENTER, "PAUSA");
  54.       } else {
  55.         it.print(80, 8, id(font1), TextAlign::TOP_CENTER, "REGA KIWIS");
  56.         it.print(80, 35, id(font2), TextAlign::TOP_CENTER, "PARADO");
  57.       }
  58.  
  59. font:
  60.   - file:
  61.       type: gfonts
  62.       family: Roboto
  63.       weight: 700
  64.     id: font1
  65.     size: 20
  66.   - file:
  67.       type: gfonts
  68.       family: Roboto
  69.       weight: 500
  70.     id: font2
  71.     size: 16
  72.  
  73. # Enable Home Assistant API
  74. api:
  75.   services:
  76.     - service: start_full_cycle
  77.       then:
  78.         - sprinkler.start_full_cycle: kiwis_sprinkler_ctrlr
  79.     - service: start_single_valve
  80.       variables:
  81.         valve: int
  82.       then:
  83.         - sprinkler.start_single_valve:
  84.             id: kiwis_sprinkler_ctrlr
  85.             valve_number: !lambda 'return valve-1;'
  86.     - service: next_valve
  87.       then:
  88.         - sprinkler.next_valve: kiwis_sprinkler_ctrlr
  89.     - service: previous_valve
  90.       then:
  91.         - sprinkler.previous_valve: kiwis_sprinkler_ctrlr
  92.     - service: shutdown
  93.       then:
  94.         - sprinkler.shutdown: kiwis_sprinkler_ctrlr
  95.     - service: pause
  96.       then:
  97.         - sprinkler.pause: kiwis_sprinkler_ctrlr
  98.     - service: resume
  99.       then:
  100.         - sprinkler.resume: kiwis_sprinkler_ctrlr
  101.     - service: set_valve_run_duration
  102.       variables:
  103.         valve: int
  104.         duration: int
  105.       then:
  106.         - sprinkler.set_valve_run_duration:
  107.             id: kiwis_sprinkler_ctrlr
  108.             valve_number: !lambda 'return valve-1;'
  109.             run_duration: !lambda 'return duration*60;'
  110.  
  111. text_sensor:
  112.  # Expose Time Remaining as a sensor.
  113.   - platform: template
  114.     id: valve_active_time_remaining
  115.     name: "Tempo Restante"
  116.     update_interval: 20s
  117.     icon: "mdi:timer-sand"
  118.     lambda: |-
  119.       int seconds = round(id(kiwis_sprinkler_ctrlr).time_remaining_active_valve().value_or(0));
  120.       int days = seconds / (24 * 3600);
  121.       seconds = seconds % (24 * 3600);
  122.       int hours = seconds / 3600;
  123.       seconds = seconds % 3600;
  124.       int minutes = seconds /  60;
  125.       seconds = seconds % 60;
  126.         return {
  127.           ((days ? String(days) + "d " : "") +
  128.           (hours ? String(hours) + "h " : "") +
  129.           (minutes ? String(minutes) + "m " : "") +
  130.           (String(seconds) + "s")
  131.           ).c_str()};
  132.  
  133.   # Expose Progress Percent as a sensor.
  134.   - platform: template
  135.     id: valve_active_progress_percent
  136.     name: "Progresso %"
  137.     update_interval: 20s
  138.     icon: "mdi:progress-clock"
  139.     lambda: |-
  140.       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))));
  141.       std::string progress_percent_as_string = std::to_string(progress_percent);
  142.       return progress_percent_as_string;
  143.  
  144.   # Expose Valve Status as a sensor.
  145.   - platform: template
  146.     id: valve_status
  147.     name: "Estado"
  148.     update_interval: never
  149.     icon: "mdi:information-variant"
  150.  
  151. button:
  152.   - platform: template
  153.     id: sprinkler_pause
  154.     name: "Pausa"
  155.     icon: "mdi:pause"
  156.     on_press:
  157.       then:
  158.         - text_sensor.template.publish:
  159.             id: valve_status
  160.             state: "Pausa"
  161.         - sprinkler.pause: kiwis_sprinkler_ctrlr
  162.  
  163. sprinkler:
  164.   - id: kiwis_sprinkler_ctrlr
  165.     main_switch:
  166.       name: Rega
  167.       icon: mdi:pipe-valve
  168.       disabled_by_default: false
  169.       restore_mode: RESTORE_DEFAULT_OFF
  170.     auto_advance_switch:
  171.       name: Rega Automática
  172.       icon: mdi:alpha-a-circle
  173.       disabled_by_default: false
  174.       restore_mode: RESTORE_DEFAULT_OFF
  175.       entity_category: config
  176.     reverse_switch:
  177.       name: Rega Invertida
  178.       icon: mdi:arrow-expand-left
  179.       disabled_by_default: false
  180.       restore_mode: RESTORE_DEFAULT_OFF
  181.       entity_category: config
  182.     valve_open_delay: 5s
  183.     next_prev_ignore_disabled: true
  184.     valves:
  185.       - valve_switch:
  186.           name: Sector 1
  187.           icon: mdi:sprinkler-fire
  188.           disabled_by_default: false
  189.           restore_mode: RESTORE_DEFAULT_OFF
  190.         enable_switch:
  191.           name: Activação - Sector 1
  192.           icon: mdi:pipe
  193.           disabled_by_default: false
  194.           restore_mode: RESTORE_DEFAULT_ON
  195.           entity_category: config
  196.         run_duration_number:
  197.           name: Duração - Sector 1
  198.           icon: mdi:timer-outline
  199.           id: kiwis_sprinkler_ctrlr_sector_1_run_duration
  200.           unit_of_measurement: min
  201.           mode: BOX
  202.           initial_value: 1
  203.           min_value: 1
  204.           max_value: 60
  205.           step: 1
  206.           restore_value: true
  207.           disabled_by_default: false
  208.           entity_category: config
  209.         pump_switch_id: kiwis_sprinkler_pump_sw
  210.         valve_switch_id: kiwis_sprinkler_valve_sw1
  211.  
  212.       - valve_switch:
  213.           name: Sector 2
  214.           icon: mdi:sprinkler-fire
  215.           disabled_by_default: false
  216.           restore_mode: RESTORE_DEFAULT_OFF
  217.         enable_switch:
  218.           name: Activação - Sector 2
  219.           icon: mdi:pipe
  220.           disabled_by_default: false
  221.           restore_mode: RESTORE_DEFAULT_ON
  222.           entity_category: config
  223.         run_duration_number:
  224.           name: Duração - Sector 2
  225.           icon: mdi:timer-outline
  226.           id: kiwis_sprinkler_ctrlr_sector_2_run_duration
  227.           unit_of_measurement: min
  228.           mode: BOX
  229.           initial_value: 1
  230.           min_value: 1
  231.           max_value: 60
  232.           step: 1
  233.           restore_value: true
  234.           disabled_by_default: false
  235.           entity_category: config
  236.         pump_switch_id: kiwis_sprinkler_pump_sw
  237.         valve_switch_id: kiwis_sprinkler_valve_sw2
  238.  
  239.       - valve_switch:
  240.           name: Sector 3
  241.           icon: mdi:sprinkler-fire
  242.           disabled_by_default: false
  243.           restore_mode: RESTORE_DEFAULT_OFF
  244.         enable_switch:
  245.           name: Activação - Sector 3
  246.           icon: mdi:pipe
  247.           disabled_by_default: false
  248.           restore_mode: RESTORE_DEFAULT_ON
  249.           entity_category: config
  250.         run_duration_number:
  251.           name: Duração - Sector 3
  252.           icon: mdi:timer-outline
  253.           id: kiwis_sprinkler_ctrlr_sector_3_run_duration
  254.           unit_of_measurement: min
  255.           mode: BOX
  256.           initial_value: 1
  257.           min_value: 1
  258.           max_value: 60
  259.           step: 1
  260.           restore_value: true
  261.           disabled_by_default: false
  262.           entity_category: config
  263.         pump_switch_id: kiwis_sprinkler_pump_sw
  264.         valve_switch_id: kiwis_sprinkler_valve_sw3
  265.  
  266.       - valve_switch:
  267.           name: Sector 4
  268.           icon: mdi:sprinkler-fire
  269.           disabled_by_default: false
  270.           restore_mode: RESTORE_DEFAULT_OFF
  271.         enable_switch:
  272.           name: Activação - Sector 4
  273.           icon: mdi:pipe
  274.           disabled_by_default: false
  275.           restore_mode: RESTORE_DEFAULT_ON
  276.           entity_category: config
  277.         run_duration_number:
  278.           name: Duração - Sector 4
  279.           icon: mdi:timer-outline
  280.           id: kiwis_sprinkler_ctrlr_sector_4_run_duration
  281.           unit_of_measurement: min
  282.           mode: BOX
  283.           initial_value: 1
  284.           min_value: 1
  285.           max_value: 60
  286.           step: 1
  287.           restore_value: true
  288.           disabled_by_default: false
  289.           entity_category: config
  290.         pump_switch_id: kiwis_sprinkler_pump_sw
  291.         valve_switch_id: kiwis_sprinkler_valve_sw4
  292.  
  293.       - valve_switch:
  294.           name: Sector 5
  295.           icon: mdi:sprinkler-fire
  296.           disabled_by_default: false
  297.           restore_mode: RESTORE_DEFAULT_OFF
  298.         enable_switch:
  299.           name: Activação - Sector 5
  300.           icon: mdi:pipe
  301.           disabled_by_default: false
  302.           restore_mode: RESTORE_DEFAULT_ON
  303.           entity_category: config
  304.         run_duration_number:
  305.           name: Duração - Sector 5
  306.           icon: mdi:timer-outline
  307.           id: kiwis_sprinkler_ctrlr_sector_5_run_duration
  308.           unit_of_measurement: min
  309.           mode: BOX
  310.           initial_value: 1
  311.           min_value: 1
  312.           max_value: 60
  313.           step: 1
  314.           restore_value: true
  315.           disabled_by_default: false
  316.           entity_category: config
  317.         pump_switch_id: kiwis_sprinkler_pump_sw
  318.         valve_switch_id: kiwis_sprinkler_valve_sw5
  319.  
  320.       - valve_switch:
  321.           name: Sector 6
  322.           icon: mdi:sprinkler-fire
  323.           disabled_by_default: false
  324.           restore_mode: RESTORE_DEFAULT_OFF
  325.         enable_switch:
  326.           name: Activação - Sector 6
  327.           icon: mdi:pipe
  328.           disabled_by_default: false
  329.           restore_mode: RESTORE_DEFAULT_ON
  330.           entity_category: config
  331.         run_duration_number:
  332.           name: Duração - Sector 6
  333.           icon: mdi:timer-outline
  334.           id: kiwis_sprinkler_ctrlr_sector_6_run_duration
  335.           unit_of_measurement: min
  336.           mode: BOX
  337.           initial_value: 1
  338.           min_value: 1
  339.           max_value: 60
  340.           step: 1
  341.           restore_value: true
  342.           disabled_by_default: false
  343.           entity_category: config
  344.         pump_switch_id: kiwis_sprinkler_pump_sw
  345.         valve_switch_id: kiwis_sprinkler_valve_sw6
  346.  
  347.       - valve_switch:
  348.           name: Sector 7
  349.           icon: mdi:sprinkler-fire
  350.           disabled_by_default: false
  351.           restore_mode: RESTORE_DEFAULT_OFF
  352.         enable_switch:
  353.           name: Activação - Sector 7
  354.           icon: mdi:pipe
  355.           disabled_by_default: false
  356.           restore_mode: RESTORE_DEFAULT_ON
  357.           entity_category: config
  358.         run_duration_number:
  359.           name: Duração - Sector 7
  360.           icon: mdi:timer-outline
  361.           id: kiwis_sprinkler_ctrlr_sector_7_run_duration
  362.           unit_of_measurement: min
  363.           mode: BOX
  364.           initial_value: 1
  365.           min_value: 1
  366.           max_value: 60
  367.           step: 1
  368.           restore_value: true
  369.           disabled_by_default: false
  370.           entity_category: config
  371.         pump_switch_id: kiwis_sprinkler_pump_sw
  372.         valve_switch_id: kiwis_sprinkler_valve_sw7
  373.  
  374.       - valve_switch:
  375.           name: Sector 8
  376.           icon: mdi:sprinkler-fire
  377.           disabled_by_default: false
  378.           restore_mode: RESTORE_DEFAULT_OFF
  379.         enable_switch:
  380.           name: Activação - Sector 8
  381.           icon: mdi:pipe
  382.           disabled_by_default: false
  383.           restore_mode: RESTORE_DEFAULT_ON
  384.           entity_category: config
  385.         run_duration_number:
  386.           name: Duração - Sector 8
  387.           icon: mdi:timer-outline
  388.           id: kiwis_sprinkler_ctrlr_sector_8_run_duration
  389.           unit_of_measurement: min
  390.           mode: BOX
  391.           initial_value: 1
  392.           min_value: 1
  393.           max_value: 60
  394.           step: 1
  395.           restore_value: true
  396.           disabled_by_default: false
  397.           entity_category: config
  398.         pump_switch_id: kiwis_sprinkler_pump_sw
  399.         valve_switch_id: kiwis_sprinkler_valve_sw8
  400.  
  401. switch:
  402.   - platform: gpio
  403.     id: kiwis_sprinkler_pump_sw
  404.     pin: GPIO13
  405.     inverted: true
  406.     internal: true
  407.     restore_mode: RESTORE_DEFAULT_OFF
  408.  
  409.   - platform: gpio
  410.     id: kiwis_sprinkler_valve_sw1
  411.     pin: GPIO23
  412.     inverted: true
  413.     internal: true
  414.     restore_mode: RESTORE_DEFAULT_OFF
  415.     on_turn_on:
  416.       - text_sensor.template.publish:
  417.           id: valve_status
  418.           state: "Sector 1 Activo"
  419.     on_turn_off:
  420.       - text_sensor.template.publish:
  421.           id: valve_status
  422.           state: "Parado"
  423.  
  424.   - platform: gpio
  425.     id: kiwis_sprinkler_valve_sw2
  426.     pin: GPIO22
  427.     inverted: true
  428.     internal: true
  429.     restore_mode: RESTORE_DEFAULT_OFF
  430.     on_turn_on:
  431.       - text_sensor.template.publish:
  432.           id: valve_status
  433.           state: "Sector 2 Activo"
  434.     on_turn_off:
  435.       - text_sensor.template.publish:
  436.           id: valve_status
  437.           state: "Parado"
  438.  
  439.   - platform: gpio
  440.     id: kiwis_sprinkler_valve_sw3
  441.     pin: GPIO21
  442.     inverted: true
  443.     internal: true
  444.     restore_mode: RESTORE_DEFAULT_OFF
  445.     on_turn_on:
  446.       - text_sensor.template.publish:
  447.           id: valve_status
  448.           state: "Sector 3 Activo"
  449.     on_turn_off:
  450.       - text_sensor.template.publish:
  451.           id: valve_status
  452.           state: "Parado"
  453.  
  454.   - platform: gpio
  455.     id: kiwis_sprinkler_valve_sw4
  456.     pin: GPIO19
  457.     inverted: true
  458.     internal: true
  459.     restore_mode: RESTORE_DEFAULT_OFF
  460.     on_turn_on:
  461.       - text_sensor.template.publish:
  462.           id: valve_status
  463.           state: "Sector 4 Activo"
  464.     on_turn_off:
  465.       - text_sensor.template.publish:
  466.           id: valve_status
  467.           state: "Parado"
  468.  
  469.   - platform: gpio
  470.     id: kiwis_sprinkler_valve_sw5
  471.     pin: GPIO18
  472.     inverted: true
  473.     internal: true
  474.     restore_mode: RESTORE_DEFAULT_OFF
  475.     on_turn_on:
  476.       - text_sensor.template.publish:
  477.           id: valve_status
  478.           state: "Sector 5 Activo"
  479.     on_turn_off:
  480.       - text_sensor.template.publish:
  481.           id: valve_status
  482.           state: "Parado"
  483.  
  484.   - platform: gpio
  485.     id: kiwis_sprinkler_valve_sw6
  486.     pin: GPIO5
  487.     inverted: true
  488.     internal: true
  489.     restore_mode: RESTORE_DEFAULT_OFF
  490.     on_turn_on:
  491.       - text_sensor.template.publish:
  492.           id: valve_status
  493.           state: "Sector 6 Activo"
  494.     on_turn_off:
  495.       - text_sensor.template.publish:
  496.           id: valve_status
  497.           state: "Parado"
  498.  
  499.   - platform: gpio
  500.     id: kiwis_sprinkler_valve_sw7
  501.     pin: GPIO17
  502.     inverted: true
  503.     internal: true
  504.     restore_mode: RESTORE_DEFAULT_OFF
  505.     on_turn_on:
  506.       - text_sensor.template.publish:
  507.           id: valve_status
  508.           state: "Sector 7 Activo"
  509.     on_turn_off:
  510.       - text_sensor.template.publish:
  511.           id: valve_status
  512.           state: "Parado"
  513.  
  514.   - platform: gpio
  515.     id: kiwis_sprinkler_valve_sw8
  516.     pin: GPIO16
  517.     inverted: true
  518.     internal: true
  519.     restore_mode: RESTORE_DEFAULT_OFF
  520.     on_turn_on:
  521.       - text_sensor.template.publish:
  522.           id: valve_status
  523.           state: "Sector 8 Activo"
  524.     on_turn_off:
  525.       - text_sensor.template.publish:
  526.           id: valve_status
  527.           state: "Parado"
  528.  
  529.   - platform: gpio
  530.     pin: GPIO14
  531.     id: display_backlight
  532.     #restore_mode: ALWAYS_ON
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement