Garden Irrigation

Hello dears,

could you pls explane, what power/current I need to power eZyvalve 4 Solenoid Valve Box 24V.

i found manual https://antelco.com/assets/products/datasheets/eZyvalve-4-Page-33.pdf which says its current 320,ma. is it true for all four solenoids or just for one of four?

Hi thanks for the suggest… I’d like to reuse it… Actually it was dismissed after dismount my Hunter eco-logic 4 irrigation system. Do you have some pics about your modify? Thank you

Yes it is a simple on off device. When too much rain drop, the cork circles inside it expands… And close (or open… I don’t remember) a phisical switch connected to the hunter irrigation system… The system stay off untill the sun heat the corks… That shrink and release the switch.

There is no way to know when it was rain in the old NON SMART way… but thanks to @thoky suggest it can be implemented only by reading the change state of the sensor

1 Like

@itajackass @klogg Thats right. Its a simple device and I found it useful because it reacts quickly.

In HA I have it like binary sensor with moisture class.

Here are some pictures of my ready made product.

Summary

This text will be hidden

1 Like

Thanks for the pics. I think i’ll use a xiaomi magnetic door sensor cause i’ve already the usb sniffer zigbee2mqtt compatible with xiaomi ecosystem. :wink:

Just a little update on my config because @Mikkaat was asking. There is some code commented out because I’m still not 100% happy that it’s complete, but it all works well. Here you go mate:-

ESPhome code on NodeMCU:

esphome:
  name: ha_retic_controller_1
  platform: ESP8266
  board: nodemcuv2

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.0.61
    gateway: 192.168.0.1
    subnet: 255.255.255.0

api:

logger:

web_server:
  port: 80

ota:
  password: !secret ota_password

switch:
  - platform: gpio
    name: "Retic Station 1 Valve"
    id: s1
    icon: mdi:water-pump
    pin: 
      number: D1
      inverted: true

  - platform: gpio
    name: "Retic Station 2 Valve"
    id: s2
    icon: mdi:water-pump
    pin: 
      number: D2
      inverted: true

#  - platform: gpio
#    name: "Retic Station 3 Valve"
#    id: s3
#    icon: mdi:water-pump
#    pin: 
#      number: D5
#      inverted: true

#  - platform: gpio
#    name: "Retic Station 4 Valve"
#    id: s4
#    icon: mdi:water-pump
#    pin: 
#      number: D6
#      inverted: true

  - platform: gpio
    name: "Retic Bore Control"
    id: p1
    icon: mdi:water-pump
    pin: 
      number: D7
      inverted: true
    restore_mode: RESTORE_DEFAULT_OFF

binary_sensor:
  - platform: gpio
    name: "Retic Bore Running"
    pin: 
      number: D8
      inverted: false
      mode: INPUT_PULLUP

  - platform: status
    name: "Retic Controller Status"

reticulation.yaml (package)

########################################
#
#   This is a full reticulation
#   control package using ESPHOMEYAML
#   as the soleniod control via a NodeMCU
#
########################################

homeassistant:
  customize:
    switch.retic_station_1_valve:
      icon: mdi:water-pump
    switch.retic_station_2_valve:
      icon: mdi:water-pump
    input_boolean.retic_program1_enable:
      icon: mdi:traffic-light
    input_boolean.retic_program2_enable:
      icon: mdi:traffic-light



      
sensor:
  - platform: template    # determine if today is selected as a watering day for program 1
    sensors:
      retic_program1_watering_day:
        entity_id: input_boolean.retic_program1_monday, input_boolean.retic_program1_tuesday, input_boolean.retic_program1_wednesday, input_boolean.retic_program1_thursday, input_boolean.retic_program1_friday, input_boolean.retic_program1_saturday, input_boolean.retic_program1_sunday, sensor.time
        value_template:  >
          {% set sensor_names = [ 'monday', 'tuesday', 'wednesday','thursday','friday','saturday','sunday'] %}
          {% set today_name = sensor_names[now().weekday()] %}
          {% set entity_id = 'input_boolean.retic_program1_'+today_name %}
          {{ is_state(entity_id, 'on') }}

      retic_program2_watering_day:
        entity_id: input_boolean.retic_program2_monday, input_boolean.retic_program2_tuesday, input_boolean.retic_program2_wednesday, input_boolean.retic_program2_thursday, input_boolean.retic_program2_friday, input_boolean.retic_program2_saturday, input_boolean.retic_program2_sunday, sensor.time
        value_template:  >
          {% set sensor_names = [ 'monday', 'tuesday', 'wednesday','thursday','friday','saturday','sunday'] %}
          {% set today_name = sensor_names[now().weekday()] %}
          {% set entity_id = 'input_boolean.retic_program2_'+today_name %}
          {{ is_state(entity_id, 'on') }}



# Rain sensors from BOM forecast of today

#      possible_rainfall_today:
#        entity_id: sensor.bom_forecast_perth_weather_forecast_0
#        friendly_name: "Possible Rainfall Today"
#        value_template:  >
#          {{ state_attr('sensor.bom_forecast_perth_weather_forecast_0', 'Possible Rainfall') | replace("mm", "") | float }}

#      chance_of_rain_today:
#        entity_id: sensor.bom_forecast_perth_weather_forecast_0
#        friendly_name: "Chance Of Rain Today"
#        value_template:  >
#          {{ state_attr('sensor.bom_forecast_perth_weather_forecast_0', 'Chance of Rain') | replace("%", "") | float }}



    
input_datetime:
  retic_program1_start_time_1:    # program start time control
    name: Program 1 Start Time 1
    has_date: false
    has_time: true

  retic_program1_start_time_2:
    name: Program 1 Start Time 2
    has_date: false
    has_time: true

  retic_program2_start_time_1:
    name: Program 2 Start Time 1
    has_date: false
    has_time: true

  retic_program2_start_time_2:
    name: Program 2 Start Time 2
    has_date: false
    has_time: true


input_number:
  retic_program1_station1_run_time:   # station run time control
    name: Station 1 Run Time
    min: 0
    max: 30
    step: 1
    icon: mdi:camera-timer

  retic_program1_station2_run_time:
    name: Station 2 Run Time
    min: 0
    max: 30
    step: 1
    icon: mdi:camera-timer

  retic_program2_station1_run_time:
    name: Station 1 Run Time
    min: 0
    max: 30
    step: 1
    icon: mdi:camera-timer

  retic_program2_station2_run_time:
    name: Station 2 Run Time
    min: 0
    max: 30
    step: 1
    icon: mdi:camera-timer  

  allowable_rain_quantity:
    name: 'Allowed Rain (mm)'
    min: 0
    max: 5
    step: 0.1
    icon: mdi:cup-water

  allowable_rain_percentage:
    name: 'Allowed Rain (%)'
    min: 0
    max: 100
    step: 1
    icon: mdi:water-percent

input_boolean:
  retic_program1_monday:   # watering day selections for program 1
    name: Monday

  retic_program1_tuesday:
    name: Tuesday

  retic_program1_wednesday:
    name: Wednesday

  retic_program1_thursday:
    name: Thursday
    
  retic_program1_friday:
    name: Friday

  retic_program1_saturday:
    name: Saturday
    
  retic_program1_sunday:
    name: Sunday

  retic_program2_monday:   # watering day selections for program 2
    name: Monday

  retic_program2_tuesday:
    name: Tuesday

  retic_program2_wednesday:
    name: Wednesday

  retic_program2_thursday:
    name: Thursday
    
  retic_program2_friday:
    name: Friday

  retic_program2_saturday:
    name: Saturday
    
  retic_program2_sunday:
    name: Sunday


  retic_program1_enable:   # enable program to run
    name: Enable
  
  retic_program1_start_time1_enable:
    name: Prog 1 Start 1 Enable
  
  retic_program1_start_time2_enable:
    name: Prog 1 Start 2 Enable
  
  retic_program2_enable:
    name: Enable

  retic_program2_start_time1_enable:
    name: Prog 2 Start 1 Enable
  
  retic_program2_start_time2_enable:
    name: Prog 2 Start 2 Enable

  retic_station_1_run:
    name: Station 1 Run
  
  retic_station_2_run:
    name: Station 2 Run


  retic_rain_parameters_met:   # set to ON if rain today values are below levels set in input_numbers
    name: Rain Parameters Met
    icon: mdi:water
  retic_rain_override:         # set to ON to run retic even if rain parameters are not met
    name: Rain Override
    icon: mdi:water

group:                  # frontend interface setup
  retic_manual:
    control: hidden
    name: 'Manual Control'
    entities:
      - switch.retic_station_1_valve
      - switch.retic_station_2_valve
  
  retic_program1:
    control: hidden
    name: 'Program 1'
    entities:
      - input_boolean.retic_program1_enable
      - script.retic_program1_run
      - input_datetime.retic_program1_start_time_1
      - group.retic_program1_watering_days
      - group.retic_program1_run_times
    
  retic_program2:
    control: hidden
    name: 'Program 2'
    entities:
      - input_boolean.retic_program2_enable
      - script.retic_program2_run
      - input_datetime.retic_program2_start_time_1
      - group.retic_program2_watering_days
      - group.retic_program2_run_times

  retic_program1_watering_days:
    control: hidden
    name: 'Watering days'
    icon: mdi:calendar-multiple-check
    entities:
      - input_boolean.retic_program1_monday
      - input_boolean.retic_program1_tuesday
      - input_boolean.retic_program1_wednesday
      - input_boolean.retic_program1_thursday
      - input_boolean.retic_program1_friday
      - input_boolean.retic_program1_saturday
      - input_boolean.retic_program1_sunday

  retic_program2_watering_days:
    control: hidden
    name: 'Watering days'
    icon: mdi:calendar-multiple-check
    entities:
      - input_boolean.retic_program2_monday
      - input_boolean.retic_program2_tuesday
      - input_boolean.retic_program2_wednesday
      - input_boolean.retic_program2_thursday
      - input_boolean.retic_program2_friday
      - input_boolean.retic_program2_saturday
      - input_boolean.retic_program2_sunday

  retic_program1_run_times:
    control: hidden
    name: 'Run times'
    icon: mdi:camera-timer
    entities:
      - input_number.retic_program1_station1_run_time
      - input_number.retic_program1_station2_run_time

  retic_program2_run_times:
    control: hidden
    name: 'Run times'
    icon: mdi:camera-timer
    entities:
      - input_number.retic_program2_station1_run_time
      - input_number.retic_program2_station2_run_time


automation:
  - alias: Check rain parameters     # check that todays rain doesnt need to disable the retic from running   ### LOOK AT CHANGING THIS TO A BINARY_SENSOR TEMPLATE
    initial_state: 'on'
    trigger:
      - platform: template
        value_template: "{{ states('sensor.time') == ((states.input_datetime.retic_program1_start_time_1.attributes.timestamp - 600) | int | timestamp_custom('%H:%M', False)) }}"
      - platform: template
        value_template: "{{ states('sensor.time') == ((states.input_datetime.retic_program1_start_time_2.attributes.timestamp - 600) | int | timestamp_custom('%H:%M', False)) }}"
      - platform: template
        value_template: "{{ states('sensor.time') == ((states.input_datetime.retic_program2_start_time_1.attributes.timestamp - 600) | int | timestamp_custom('%H:%M', False)) }}"
      - platform: template
        value_template: "{{ states('sensor.time') == ((states.input_datetime.retic_program2_start_time_2.attributes.timestamp - 600) | int | timestamp_custom('%H:%M', False)) }}"
      - platform: state
        entity_id: input_number.allowable_rain_quantity
      - platform: state
        entity_id: input_number.allowable_rain_percentage

    action:
#      - service_template: >
#          {% if states('sensor.bom_perth_rain_today') <= states('input_number.allowable_rain_quantity') and states('sensor.possible_rainfall_today') <= states('input_number.allowable_rain_percentage') %}
#            input_boolean.turn_on
#          {% else %}
#            input_boolean.turn_off
#          {% endif %}
#          entity_id: input_boolean.retic_rain_parameters_met
      - service_template: >
          input_boolean.turn_{{'on' if states('sensor.bom_perth_rain_today') <= states('input_number.allowable_rain_quantity') and 
                                       states('sensor.bom_perth_forecast_chance_of_rain_0') <= states('input_number.allowable_rain_percentage')  else 'off'}}
        entity_id: input_boolean.retic_rain_parameters_met

#      - service_template: >
#          input_boolean.turn_{{'on' if states('sensor.bom_perth_rain_today') <= states('input_number.allowable_rain_quantity') or 
#                                       states('sensor.possible_rainfall_today') <= states('input_number.allowable_rain_percentage')  else 'off'}}
#        entity_id: input_boolean.retic_rain_parameters_met

  - alias: Reticulation Run Program 1     # start program 1 at designated time if it is enabled and today is selected as a watering day
    initial_state: 'on'
    trigger:
      - platform: template
        value_template: "{{ states('sensor.time') == (states.input_datetime.retic_program1_start_time_1.attributes.timestamp | int | timestamp_custom('%H:%M', False)) }}"
      - platform: template
        value_template: "{{ states('sensor.time') == (states.input_datetime.retic_program1_start_time_2.attributes.timestamp | int | timestamp_custom('%H:%M', False)) }}"
    condition:
      condition: and
      conditions:
        - condition: state
          entity_id: input_boolean.retic_program1_enable
          state: 'on'
        - condition: state
          entity_id: sensor.retic_program1_watering_day
          state: 'True'
        - condition: or
          conditions:
            - condition: state
              entity_id: input_boolean.retic_rain_parameters_met
              state: 'on'
            - condition: state
              entity_id: input_boolean.retic_rain_override
              state: 'on'
    action:
      - service: script.turn_on
        entity_id: script.retic_program1_run

  - alias: Reticulation Run Program 2     # start program 2 at designated time if it is enabled and today is selected as a watering day
    initial_state: 'on'
    trigger:
      - platform: template
        value_template: "{{ states('sensor.time') == (states.input_datetime.retic_program2_start_time_1.attributes.timestamp | int | timestamp_custom('%H:%M', False)) }}"
      - platform: template
        value_template: "{{ states('sensor.time') == (states.input_datetime.retic_program2_start_time_2.attributes.timestamp | int | timestamp_custom('%H:%M', False)) }}"
    condition:
      condition: and
      conditions:
        - condition: state
          entity_id: input_boolean.retic_program2_enable
          state: 'on'
        - condition: state
          entity_id: sensor.retic_program2_watering_day
          state: 'True'
        - condition: or
          conditions:
            - condition: state
              entity_id: input_boolean.retic_rain_parameters_met
              state: 'on'
            - condition: state
              entity_id: input_boolean.retic_rain_override
              state: 'on'
    action:
      - service: script.turn_on
        entity_id: script.retic_program2_run

  - alias: Reticulation Station 1 Run
    initial_state: 'on'
    trigger:
      platform: state
      entity_id: input_boolean.retic_station_1_run
    action:
      - service_template: >
          {% if is_state('input_boolean.retic_station_1_run', 'on') %}
            script.retic_station_1_run
          {% else %}
            script.retic_station_1_stop
          {% endif %}
      
  - alias: Reticulation Station 2 Run
    initial_state: 'on'
    trigger:
      platform: state
      entity_id: input_boolean.retic_station_2_run
    action:
      - service_template: >
          {% if is_state('input_boolean.retic_station_2_run', 'on') %}
            script.retic_station_2_run
          {% else %}
            script.retic_station_2_stop
          {% endif %}

  - alias: Reticulation Controller Offline Alert
    initial_state: 'on'
    trigger:
      platform: state
      entity_id: binary_sensor.retic_controller_status
      to: 'off'
      for:
        minutes: 5
    action:
      - service: notify.pushbullet
        data:
          message: 'Retic Controller Offline!'


script:
  retic_program1_run:             #run retic program 1 through each station for selected time
    alias: Program 1 Run
    sequence:
      - service: switch.turn_on
        data:
          entity_id: switch.retic_station_1_valve
      - delay: "00:00:01"
      - service: switch.turn_on
        data:
          entity_id: switch.retic_bore_control
      - delay: "00:{{ states('input_number.retic_program1_station1_run_time')|int }}:00"
      - service: switch.turn_off
        data:
          entity_id: switch.retic_station_1_valve
      - service: switch.turn_on
        data:
          entity_id: switch.retic_station_2_valve
      - delay: "00:{{ states('input_number.retic_program1_station2_run_time')|int }}:00"
      - service: switch.turn_off
        data:
          entity_id: switch.retic_bore_control
      - delay: "00:00:01"
      - service: switch.turn_off
        data:
          entity_id: switch.retic_station_2_valve
      
  retic_program2_run:             #run retic program 2 through each station for selected time
    alias: Program 2 Run
    sequence:
      - service: switch.turn_on
        data:
          entity_id: switch.retic_station_1_valve
      - delay: "00:00:01"
      - service: switch.turn_on
        data:
          entity_id: switch.retic_bore_control
      - delay: "00:{{ states('input_number.retic_program2_station1_run_time')|int }}:00"
      - service: switch.turn_off
        data:
          entity_id: switch.retic_station_1_valve
      - service: switch.turn_on
        data:
          entity_id: switch.retic_station_2_valve
      - delay: "00:{{ states('input_number.retic_program2_station2_run_time')|int }}:00"
      - service: switch.turn_off
        data:
          entity_id: switch.retic_bore_control
      - delay: "00:00:01"
      - service: switch.turn_off
        data:
          entity_id: switch.retic_station_2_valve

  retic_station_1_run:
    alias: Station 1 Run
    sequence:
      - service: switch.turn_on
        data:
          entity_id: switch.retic_station_1_valve
      - delay: "00:00:01"
      - condition: state
        entity_id: switch.retic_station_1_valve
        state: 'on'
      - service: switch.turn_on
        data:
          entity_id: switch.retic_bore_control
  
  retic_station_1_stop:
    alias: Station 1 Stop
    sequence:
      - service: switch.turn_off
        data:
          entity_id: switch.retic_bore_control
      - delay: "00:00:01"
      - condition: state
        entity_id: switch.retic_bore_control
        state: 'off'
      - service: switch.turn_off
        data:
          entity_id: switch.retic_station_1_valve

  retic_station_2_run:
    alias: Station 2 Run
    sequence:
      - service: switch.turn_on
        data:
          entity_id: switch.retic_station_2_valve
      - delay: "00:00:01"
      - condition: state
        entity_id: switch.retic_station_2_valve
        state: 'on'
      - service: switch.turn_on
        data:
          entity_id: switch.retic_bore_control
  
  retic_station_2_stop:
    alias: Station 2 Stop
    sequence:
      - service: switch.turn_off
        data:
          entity_id: switch.retic_bore_control
      - delay: "00:00:01"
      - condition: state
        entity_id: switch.retic_bore_control
        state: 'off'
      - service: switch.turn_off
        data:
          entity_id: switch.retic_station_2_valve


##################

# use a timer instead of the delay for the station runtime

#   - service: timer.start
#      data_template:
#        entity_id: timer.cooking_timer
#        duration: '00:{{ states.input_number.timer_minutes.state | int }}:{{ states.input_number.timer_seconds.state | int }}'

lovelace:

  - title: Retic
    icon: 'mdi:fountain'
    background: center / cover no-repeat url("/local/images/back_garden_1.jpg") fixed
    cards:
      - type: entities
        show_header_toggle: false
        title: Program 1
        entities:
          - input_boolean.retic_program1_enable
          - script.retic_program1_run
          - input_datetime.retic_program1_start_time_1
          - input_datetime.retic_program1_start_time_2
          - group.retic_program1_watering_days
          - group.retic_program1_run_times
      - type: entities
        show_header_toggle: false
        title: Program 2
        entities:
          - input_boolean.retic_program2_enable
          - script.retic_program2_run
          - input_datetime.retic_program2_start_time_1
          - input_datetime.retic_program2_start_time_2
          - group.retic_program2_watering_days
          - group.retic_program2_run_times
      - type: entities
        show_header_toggle: false
        title: Manual Control
        entities:
          - input_boolean.retic_station_1_run
          - input_boolean.retic_station_2_run
      - type: entities
        title: Rain Settings
        entities:
          - input_number.allowable_rain_percentage
          - input_number.allowable_rain_quantity
          - input_boolean.retic_rain_parameters_met
          - input_boolean.retic_rain_override
        show_header_toggle: false
      - type: entities
        show_header_toggle: false
        title: Status
        entities:
          - entity: binary_sensor.retic_controller_status
            secondary_info: last-changed
          - entity: switch.retic_station_1_valve
            secondary_info: last-changed
          - entity: switch.retic_station_2_valve
            secondary_info: last-changed
          - entity: switch.retic_bore_control
            secondary_info: last-changed
          - binary_sensor.retic_bore_running

EDIT: I only have 2 stations because it’s running on a bore which has enough pressure and flow to do all the front of the house on one station and all the back on another.

3 Likes

Thanks to the inspiration of this thread, I started working on my own version back in November. It has been up and running since May. What I’ve done:

  • Turn valves on and off using a schedule in AppDaemon and MQTT over WiFi
  • Can also control locally with one button (off, pump on, start a manual cycle, or Auto)
  • Turn the pump on/off and monitor water flow with a flow meter
  • Small LCD display to show program mode, valve running and time running
  • Remote monitor/control with DuckDNS
  • Basic graphs on HA
  • 3D Printed custom boxes

Not bad for my first project! (had never used Arduino, HA, or 3D printing before :slight_smile: )

Thanks to all for the many ideas. I’m going to scroll through this (now very long) thread to see about upgrade suggestions.

cheers,
Sean

@sparkydave. First, thanks for the great work you have done with this card and code… I have managed to install it and understand almost all of how it works. I’d just like to ask a couple of things of you if you have the time to answer…
I guess the first Q is also for anyone who may have had the same issue and has worked out how to resolve it… I am getting an error in my notifications as soon as i add all the code… Error is:
1
with the error log stating ‘2019-07-15 19:47:25 ERROR (MainThread) [homeassistant.config] Invalid config for [automation]: required key not provided @ data[‘action’]. Got None
required key not provided @ data[‘trigger’]. Got None. (See ?, line ?). Please check the docs at https://home-assistant.io/components/automation/’. Within my configuration.yaml file i have specified an ‘!include automations.yaml’ setting. Is anyone else having this issue??

The second Q is with regard to one of the settings Should ‘Run times’ have a value? or is this always ‘unknown’?

Thanks in advance,

Michael

Q1- what I posted is a ‘package’, it doesn’t go in your automations.yaml file. Check out the docs for adding packages.

Q2- the run times show unknown because there are multiple entries (at least thats what I think is why it happens), when you click on it, the UI should open a popup where you can use sliders to alter the individual run times

@sparkydave thanks for the prompt reply, and apologies for the constant questions due to my limited coding knowledge.

I can confirm that i read all of the documentation on Packages previous to attempting the install/config. I added the following line to my configuration.yaml file and then created the packages folder under the config folder, and then created a reticulation.yaml (with your code) file within the packages folder, which resulted in all cards displaying correctly.

homeassistant:
  packages: !include_dir_named packages

As for the Automation entry in my configuration.yaml file, i mentioned this as i have the line as below, which is just a file where my other automations live, not the automation section from your code (i have not brocken out your code at all, it is still all in original state and im pretty sure, appropriate place.

automation: !include automations.yaml

On that, i am going to try to revert to an earlier verion of my HASSio instance to see if this still spits out the same error, and if it does, will go back to a base install and try that…

I will keep this topic up to date with what i find.

Apologies again for my lack of knowledge. The next time your in Sydney, i’ll buy you a drink.

Thanks

Michael

Are you sure there isn’t an indentation issue that’s been caused when editing the automations in my package? The error you are getting would suggest so. Copy / paste the automation section here, being sure to format it correctly. Hopefully I can see where the issue is for you

Hi @sparkydave, apologies for the delayed response, I have been working on a new Hassio build so i can test my theory… On that, i reverted to various backups and tried your code, and also built a brand new instance of HASSio with just your retic setup on there and i still get the same automation error… I then commented out the automation line (as below) in my configuration.yaml file, which removed the error…

#automation: !include automations.yaml

With regard to your earlier comment about pasting the automation section, it is exactly the same as what you have pasted above and tagged me into, i copy pasted a number of times to make sure i had not done anything wrong
Do you have an automation.yaml file or and automation: !include automations.yaml line in your configuration.yaml file?

Thanks

Oh, I just realised what the issue is… I think. I’ll post my config.yaml when I get to a PC

@Mikkaat I just had a look at my config.yaml and I don’t think that is the issue. You really need to post your version of the package so I see what is happening here

@sparkydave and all others who have the same issue… After posting the above, i finally got it working thanks to @Cripplin who provided the solution over at [SOLVED]Automation in package not working… basically just need to have something in the automations.yaml file, ie it cannot be empy…

@sparkydave Thanks for all your help and sorry to put you through that…
@Cripplin great find… thanks

Hi @sparkydave, quick question(s) for you about the package…

I have been working on it slowly over the last few weeks and (honestly only just go around to) setting some of the variables to test it out, just last night…

Can i just clarify, if i add times into the ‘Program 1 Start Time 1’ and ‘Program 1 Start Time 2’, select days in the Watering days (i have selected all days) and added 5 mins to Station 1 and Station 2 in Run times, should that be enough to run the system? As you can see from the screenshot, i have added values to the Available Rain % and mm as well, but the only way i can trigger the system to run, is to either use the Station 1 Run switch, or the Program 1 Run switch, ie the system will not trigger at the specified times i have added (as can be seen by the 19:39 current time and the Retic Station 1 valve run time 22 hours ago…)
I have updated your code to refeerence my location (in BOM and DarkSky) and also added Time component.

EDIT—
@sparkydave I think i have narrowed the issue down to one of two things… (i am not as gifted with code as yourself or others, so hoping this could be it)…

Is there a reason why the Check rain parameters value_template has a value

states.input_datetime.retic_program1_start_time_1.attributes.timestamp - 600

, where the Reticulation Run Program 1 (and 2) does include the -600

states.input_datetime.retic_program1_start_time_1.attributes.timestamp

Is this correct?

The other thing which could be the issue is the way input_datetime.retic_program1_start_time_1. attribute.timestamp is captured in devtools states… Is the below screenshot the way yours shows as well? Should i update the code to reference input_datetime.retic_program1_start_time_1. attribute.state instead
image

Thanks in advance for your advice and assitance…

@one-love I thank you in advance for all your efforts regarding the irrigation code. It’s brutal. But some time ago it stopped working. Would you have a look? Thank you so much for your attention.

Hello, I would like to know if it is possible to match the value of an input.date_time with the time of sunset. For example today the sun sets at 9:00 pm and at that time I want to do the last irrigation of the day, next week the sun sets at 9:10 p.m. and I need change the input.date_time value automatically to do the last irrigation at that time. someone could help me with that.
Greetings and thank you

Lots of great ideas in here. I’ve just finally started down the road of a DIY irrigation system for my back yard. I’ve just worked out how to wire up an ESP32, 4 channel relay, solenoids, and a 12v power supply. I’ve never done anything like this before.

Anyway, just starting to get it up and running on my desk, but I’ll need an outdoor enclosure. What are people using (especially interested in what Aussies are using)? 90% chance of where I end up putting it will be exposed to the weather.

I bought a cheap weather proof enclosure from AliExpress. It’s pretty good. I bought a thin galv sheet and cut out a back panel to mount everything o and then mounted that into the box. I have been meaning to knock up a post about the hardware install but haven’t had time. I may have a couple of photos on my phone I can upload later