Irrigation Unlimited Integration

What is the best way to simply program a sequence to repeat ‘forever’? My setup is for sequentially misting several aeroponic buckets for 5 seconds every minute. Presently the script does not contain a Schedule, since I do not want to defer the start time. I have tried multiple attempts using a While statement without success (I am not really a programmer). I am ok with using the Irrigation Unlimited card to stop the sequence when necessary. This may not be the most elegant solution, but I am looking for something easy. Any assistance is appreciated.
Ron

Hey All,

Just updated to latest HA and received the following. Any thoughts on how to address?

Setup failed for custom integration ‘irrigation_unlimited’: Unable to import component: cannot import name ‘DATA_INSTANCE’ from ‘homeassistant.components.recorder.const’ (/usr/src/homeassistant/homeassistant/components/recorder/const.py)

Please update to Irrigation Unlimited 2024.8.0 before updating to HA 2024.8.0 to avoid the error 'Setup failed for custom integration ‘irrigation_unlimited:’.

Perhaps setup a schedule with a cron option might be the simplest.

        ...
        schedules:
          - time:
              cron: "* * * * *"
        ...

Run every minute of every day…

Update Irrigation Unlimited to 2024.8.0.

I tried cron (see below) but the schedule is still only initiated once. I think the actual sequencing/scheduling logic is not in the configuration.yaml file but in the underlying Irrigation Unlimited python code (which is way too complex for me). Any comments or suggestions?
Thanks, Ron

irrigation_unlimited:
  controllers:
    zones:
      - name: "Container 1"
        entity_id: "switch.zone6"
      - name: "Container 2"
        entity_id: "switch.zone4"
      - name: "Container 3"
        entity_id: "switch.zoneoff"
      - name: "Off Time"
        entity_id: "switch.zone5"
    sequences:
        schedules:
          - time: 
              cron: "0 * * ? * *"
#        repeat: 99
        zones:
          - zone_id: 1
            duration: "00:00:03"
          - zone_id: 2
            duration: "00:00:03"
          - zone_id: 3
            duration: "00:00:03"
          - zone_id: 4
            duration: "00:00:10"

The problem is starting a schedule every minute is flooding the run queue. It can work but we need to reduce the length. First off add a future_span: 1 to reduce the look ahead buffer. The parameter has a floor of 1 but in this case it might be beneficial to relax this. I will look into this.

Next, set the repeat to run the one schedule multiple times. Pad the sequence out to a minute by adding a dummy zone at the end.

irrigation_unlimited:
  controllers:
    all_zones_config:
      future_span: 1
    zones:
      - name: "Container 1"
        entity_id: "switch.zone6"
      - name: "Container 2"
        entity_id: "switch.zone4"
      - name: "Container 3"
        entity_id: "switch.zoneoff"
      - name: "Off Time"
        entity_id: "switch.zone5"
      - name: "Dummy"
    sequences:
        schedules:
          - time:
              cron: "*/10 * * * * *"
        repeat: 10
        zones:
          - zone_id: 1
            duration: "00:00:03"
          - zone_id: 2
            duration: "00:00:03"
          - zone_id: 3
            duration: "00:00:03"
          - zone_id: 4
            duration: "00:00:10"
          - zone_id: 5
            duration: "00:00:40"

The sequence is 59 seconds not 60 seconds. This is because cron will skip every other 10 minutes if it’s exactly 1 minute. The sequence being 10 minutes long means by the time cron processes the request it’s after the scheduled time even by a few milliseconds.
Good luck

I made your changes and the system seems more stable now. I added the future_span command, and padded out the sequence with a ‘off time’ zone. I have not included the Repeat command, as the cron line seems to be regenerating the schedule on it’s own (see below). Do I need the Repeat command in the script?
Ron

irrigation_unlimited:
  controllers:
    all_zones_config:
      future_span: 1
    zones:
      - name: "Container 1"
        entity_id: "switch.zone6"
      - name: "Container 2"
        entity_id: "switch.zone4"
      - name: "Container 3"
        entity_id: "switch.zone5"
      - name: "Off Time"
        entity_id: "switch.zoneoff"
    sequences:
      - name: "Cycle Misting"
        schedules:
          - time:
              cron: "*/3 * * * * *"
        zones:
          - zone_id: 1
            duration: "00:00:10"
          - zone_id: 2
            duration: "00:00:10"
          - zone_id: 3
            duration: "00:00:10"
          - zone_id: 4
            duration: "00:00:20"

You do not need the repeat, it was just to further reduce the initialisation time. Most of the time however was due to the future_span parameter. I have turned this parameter from an integer to a float and set the floor at 1 hour. Seems pretty responsive now.

A zone doesn’t need an entity_id:. If it doesn’t operate anything you can remove the line. Still works the same.

Hey guys, is there any way to adjust the “hardcoded” sequence start time (in config.yaml) from UI or by using any service in HA?
Or should I delete the exact parameter from config.yaml and replace it with my own HA function that starts the sequence?

I am have been using this integration all summer and it has been flawless. Now all of a sudden, my sprinklers are not turning on. I have a very simple schedule setup in my config file. My question is, how can I debug this? What steps do I take to get this working again? I also installed the irrigation unlimited card, and I can run each zone manually so I know my setup is functioning properly. It is just the schedule that is not working. Below is my config file code and my HA versions. If this thread is not the thread for this type of question, please let me know.
Core 2024.9.1
Supervisor 2024.08.0
Operating System 13.1
Frontend 20240906.0

irrigation_unlimited:
  controllers:
    zones:
      - name: "Zone 1"
        entity_id: "switch.irrigation_zone_1_valve"
      - name: "Zone 2"
        entity_id: "switch.irrigation_zone_2_valve"
      - name: "Zone 3"
        entity_id: "switch.irrigation_zone_3_valve"
      - name: "Zone 4"
        entity_id: "switch.irrigation_zone_4_valve"
      - name: "Zone 5"
        entity_id: "switch.irrigation_zone_5_valve"
      - name: "Zone 6"
        entity_id: "switch.irrigation_zone_6_valve"
      - name: "Zone 7"
        entity_id: "switch.irrigation_zone_7_valve"
      - name: "Zone 8"
        entity_id: "switch.irrigation_zone_8_valve"
      - name: "Zone 9"
        entity_id: "switch.irrigation_zone_9_valve"
    sequences:
      - delay: "00:00:05"
        schedules:
          - name: "Schedule A"
            day: "odd"
            time: "13:25:00"            
        zones:
          - zone_id: 1
            duration: "00:20:00"
          - zone_id: 2
            duration: "00:20:00"
          - zone_id: 3
            duration: "00:10:00"
          - zone_id: 4
            duration: "00:23:00"
          - zone_id: 5
            duration: "00:23:00"
          - zone_id: 6
            duration: "00:23:00"
          - zone_id: 7
            duration: "00:23:00"
          - zone_id: 8
            duration: "00:10:00"
          - zone_id: 9
            duration: "00:15:00"

The configuration is half the answer, the log is the other half.

These messages are very important in helping to determine the problem. Go into Settings → System → Logs. In the search box put in irrigation_unlimited (Note the underscore between the two words) and press the LOAD FULL LOGS button. Copy and paste the contents.

Thank you, this really helps! I ended up just removing config setup code and re-entering it. That seems to have solved the problem, it is working again. I have also added debug mode so I can look at the logs in the future.

The start time is defined by a schedule. Schedules can be updated with the load_schedule service. One proviso is that changes made through this service call are NOT saved and will revert to the configuration.yaml if the integration is reloaded, HA is restarted etc.

  1. Take a look at the sun event example here and combining this with a weekday filter you should get what you want.
  2. There is an automation example here to give you a leg up.

Hi, Thanks for all the info. Is it possible to assign an input_datetime entity with the load scheduling service so the start times or durations are managed in the front end? I have tried several ways but I did not manage. Thanks in advance

Seem like when I read the documentation I skipped the templating.
Now is working perfectly. Thanks so much for this integration!!!

The Zones show a prefix number, which I have (for better or worse) made to match up with my physical zone numbers. On my physical relay controller I have gaps, so there’s numbers that are unused. I like those prefix numbers as I’m used to calling the zones by number.

But, I’d like to not have the “Unused” ones show up in my Zones display.

I can remove those “Unused” zones, but then the numbers that show up to the left of the text don’t match up with my physical zone numbers.

Is there something I could add in the config to add a css class that I could then display:none on? Or use something like a visible: false attibute?

I use zone_id on my zones and reference those in my Sequences.

Thanks,

Hello,

I am just getting started and I have a couple basic questions. The yaml for the setup up seams straight forward. Im struggling a little with the HA Smart Irrigation set up. I understand the automation. I created a little simulation with 2 zones.

controllers:
  - name: "Main House"
    zones:
      - name: "Zone 1"
        entity_id: "input_boolean.test_zone_1_toggle"
        enabled: true
      - name: "Zone 2"
        entity_id: "input_boolean.test_zone_2_toggle"
        enabled: true

    sequences:
      - name: "Zone Sequence"
        enabled: true
        delay: "00:01"  # Optional delay between zones, here set to 1 minute
        schedules:
          - time: "04:23"  # Start time for the sequence (both zones)
        zones:
          - zone_id: 1
            duration: "00:10"  # 10-minute duration for Zone 1
          - zone_id: 2
            duration: "00:05"  # 5-minute duration for Zone 2

As you can see HA is calculating the zones in the tile cards. I use different times for different zones. I am not grasping the concept of sensor.smart_irrigation_daily_adjusted_run_time. I can not find the sensor? Do I need to create it? I made mine work with the following.

action: irrigation_unlimited.adjust_time
metadata: {}
data:
  actual: >-
    {{ timedelta(seconds=states('sensor.smart_irrigation_mh_zone_2') | int(0))
    }}
  entity_id: binary_sensor.irrigation_unlimited_c1_z2

Is this correct? If i adjust for each zone? Is the delta suppose to take the difference between the yaml of 5 mins and the adjusted value from HA Smart Irrigation? Im guessing im close but my lack of understanding is getting me. Can you reset to the yaml default of 5 mins? I tried irrigation_unlimited.adjust_time - reset. I tried reset = true and reset {} . Is this what I need to do it? and if so, what is the value of reset?

Thanks for this great integration. I have allot to achieve and this looks like it will make my life much eaiser.

Just a question on the suspend service call.

I’ve setup an automation to suspend if theres is a forecast of rain, should I just suspend ‘for’ just enough time after the scheduled start time or a full 24hours.

Might the 24hours disrupt the irrigation illuminated automation at 23:30.

Thanks