Irrigation Unlimited Integration

I will try that, so i could manually disable zones in a sequence were every zone is specified under zones? The use case would be like in the picture following. I have four buttons which i manually can set to control if everything or just certain amount of areas got watered

Is more of an control area where i can see what my irrigation flow will take on in the evening: a few more details the time is calculated by HAsmartirrigation and the starting time depends on the weather conditions. The last point i could fix with your februar 30 workaround, but it would be awesome to have the possibility to a) select zones which needs more water with the input slider and b) only select the needed areas, so sometimes the lawn needs more water the the bushes.

Im also willing to share my code with you so u can use it as example for lovelace integration or give anything back - im so ashame of me to ask so many questions but im burning to get your integration integrated in my current flow🙈

Thanks for the background information, it helps a lot to understand the situation. I do see where you are coming from. Here is some information on how it this integration works, apologies if I am covering ground you already know but it may also help other readers.

There are two basic ways to drive the zones; the first is where each zone has their own schedule and run independently possibly overlapping with each other. The second is sequences where it runs zones one at a time. Creating a sequence achieves several things; it establishes a collective or group, puts zones into an order and possibly more significantly builds a relationship with its peers. For example a sequence with 3 zones (1, 2 and 3) where the run times are 5 min, 10 min and 15 min respectively (total 30 min) it says zone 2 needs twice the time as zone 1 and zone 3 needs 3 times zone 1. Whichever way you look at it each zone occupies a percentage of the total watering time. When you manually run a sequence you specify the total time. In the above case if you specified 15 minutes for the manual run it would run 2.5 min, 5 min and 7.5 min for the zones. Likewise times above 30 min would simply scale each zone up. Note: Due in the next release is adjustments on sequences which will work in the same way as the manual run.

The start time for sequences is anchored to a time or event and the duration flexible which makes the finish time movable. I am curious why schedules do not work for you. There are a few advantages to using schedules such as knowing what’s up next. Seasonal watering schedules are another reason, every day in summer and once a week in winter.

HAsmartirrigation doesn’t care when you run the irrigation. It just calculates the run time required and leaves it up to you which could be once a day at sunrise, twice a week at night etc. The only thing you have to do is reset the bucket after watering. There is an example automation in the readme. You can suspend watering by disabling the controller if it is raining for example. There are some examples using a Personal Weather Station (PWS) or an ESPHome soil moisture probe.

The system is designed as set and forget so once established there should be minimal need for any intervention and just let the automations that calculate the run times do their job. This integration lacks some of the detailed control you require such as dynamically specifying the zones and duration. There is a skeleton zone mask in the service calls but it is not fully developed, tested or documented - a random thought at the time. This would probably go a long way for dynamic control of which zones operate.

rgc99 thanks for your elaborated reply, no apologies its really helpful and kind of you that you take the time to answer in that way.

The start time for sequences is anchored to a time or event and the duration flexible which makes the finish time movable. I am curious why schedules do not work for you. There are a few advantages to using schedules such as knowing what’s up next. Seasonal watering schedules are another reason, every day in summer and once a week in winter.

I really like the idea of set and forget, but as this summer here where I live showed its not always necessary to water the area in an absolut repeating manner. last year we had a hot summer where I needed to water every second day and this year there was so much rain I haven’t run the irrigation more that a handful of cycles. so in my use case schedules are awesome if everything is running normally but sometimes its not useful at all - like if it rains for a week there is no need for more water - that’s where HAsmartirrigation comes into play which the calculate the time it should irrigate, if this is under a threshold it will not start the manual run.
Setting a fixed time in a schedule also has some disadvantages in my use case for example if its hot like last year I only want to run the irrigation early in the morning so the plants have time to cool down, but if its like this year I don’t care and like to have it run by the evening - so here I have setup a routine which looks at the temperature of the days and decides if it waters early or late.
my wish to manually adjust the zones picked for watering stems from the idea that it would be awesome to mix everything up - I get the point that for the automatic run there’s nearly no need to leave zones excluded - but I want to use your integration as manual scheduler and automatic scheduler and therefore it would be mandatory to select the specific zones. My point of not watering single zones is the load on the main pump, which I would like not to turn on and off after every zone und setting up different schedules for every combination out of 4 zones would be over the top=)

but im looking forward to the mentioned update, I assume that if I could set the durations in the manual run I could possible set the not needed zones to 0 and then they would be skipped - that would be awesome and be a workaround for my request.

Thanks again for your reply und the time you spent for it!

My vision for this project is a totally hands off solution. The system should be able to handle extreme weather conditions which, unfortunately, is becoming more common. A manual run is only for the very rare situation. Driving the system by manual runs is in my opinion paddling upstream and somewhat counterproductive. So on that note let’s see what can be done to make it smarter. Let’s peel apart the onion and see what problems we have:

Too much rain or too wet. This one we have covered with at least three solutions; HAsmartirrigation, your very own PWS or a soil moisture probe. Each one of these will adjust the run time from zero upwards.

Temperature sensitive schedules. The ability to change the schedule based on weather conditions. Two ideas here; Enable/disable a schedule. This came up earlier this year but for a different reason to do with seasonal watering and was tackled with the month filter. Here an external “temperature” sensor makes a service call to turn on or off schedules. With a set of predefined schedules you could select which schedule(s) to activate based on any criteria imaginable, too wet, dry, cold, hot, cloudy… The second idea is to replace/update the entire schedule. A new service call with exactly the same schema as the schedule object as documented in the readme would allow on the fly changes based on, well anything. This ties up with the ultimate goal of configuration via the UI. Not sure if you or someone else are interested in creating a schedule card for the front-end.

Not watering single zones. The main reason for this is water pressure as it’s not often possible to drive more than one valve at a time. Sequences were created for this reason. The ability to run each zone one at a time in a string based on a common schedule. If you have specified a delay between zones and don’t want the pump turning on and off then look at the preamble/postamble settings on the controller.

Zone selection. Unsure how this plays out yet given the above and the upcoming release but maybe targeting a sequence with a zone list. Let’s see what pans out here.

The next release has a sequence_id added to the adjust_time service call and operates in much the same way as in the manual_run call. It will cause the sequence duration to expand or contract all the way down to zero if required. Perfect for HAsmartirrigation.

Cheers

2 Likes

Very strange behaviour of Irrigation Unlimited interface and “Disable” service for 1st Zone.
I can click Enabled/Disabled in Lovelace interface or use the function “Disable”/“Enable” for all zones, but 1st one. It can never be disabled unless the whole Controller is disabled… Bug or feature?

Very buggy integration… :frowning:
Is there any function to SKIP the next watering? ((but keep all others after the skipped one running)

The enable/disable for the controller and zones work independently of each other and each remember its own state. Disabling the controller then disabling the zone and then enabling the controller will still leave the zone disabled. This is the intended behaviour.

Could you please qualify your statement. If there is a bug then please report it. All the templates for reporting an issue are setup. I can’t fix it if I don’t know what it is.

There is no SKIP function. What are the circumstances behind wanting to suspend watering? An idea might be to suspend watering for a period of time.

I would not follow call it buggy, its well thought for a specific usecase

@rgc99 thank you very much for this great addon. Works perfectly. Got a simple question:

I have a preamble period of 1 minute and 1 minute delays between sequences. I have an automation which has a voice warning to shut down the doors of the places which might be affected from the water coming down from the sprinklers. But i can only use binary sensor of the zone as a trigger, which is a bit late because the sprinklers are already started working than.

Which trigger should i use for the warning that will work just at the start of preamble? Is it binary_sensor.controller or status attribute of controller or anything else?

It is the controller that will turn on before the zone turns on when preamble is used. The trigger should look at the state of the controller/master i.e. binary_sensor.irrigation_unlimited_c1_m. For example:

automation:
  - alias: Shut doors
    description: Shut the doors for watering
    trigger:
      - platform: state
        entity_id:
          - binary_sensor.irrigation_unlimited_c1_m
        from: "off"
        to: "on"
    action:
      # Add some actions here to close the doors

To reopen the doors when the watering finishes try this:

automation:
  - alias: Open doors
    description: Open the doors after watering
    trigger:
      - platform: state
        entity_id:
          - binary_sensor.irrigation_unlimited_c1_m
        from: "on"
        to: "off"
    action:
      # Add some actions here to open the doors

You could also use the postamble to delay the reopening. Hope this helps.

1 Like

Here is a nicer manual run card. It uses time picker card which has a lot of options and eliminates problems with the standard time control such as the am/pm selector.

image

type: entities
title: Manual Run
entities:
  - entity: input_select.irrigation_unlimited_entities
    name: Controller/Zone
  - entity: input_select.irrigation_unlimited_sequences
    name: Controller/Sequence
  - type: custom:time-picker-card
    entity: input_datetime.irrigation_unlimited_run_time
    hour_mode: 24
    hour_step: 1
    minute_step: 1
    second_step: 5
    name: ''
    layout:
      embedded: true
    link_values: false
    hide:
      seconds: true
  - type: divider
  - type: custom:paper-buttons-row
    buttons:
      - name: Go
        tap_action:
          action: call-service
          service: irrigation_unlimited.shim_manual_run
          service_data:
            time_entity: input_datetime.irrigation_unlimited_run_time
            controller_zone_entity: input_select.irrigation_unlimited_entities
            controller_sequence_entity: input_select.irrigation_unlimited_sequences
      - name: Cancel
        tap_action:
          action: call-service
          service: irrigation_unlimited.shim_cancel
          service_data:
            controller_zone_entity: input_select.irrigation_unlimited_entities

Thank you very much.
But I still need pyscript, do I?

Yes you do.

Hi, I’m having a few issues with the manual start card. The log error is:

2021-11-10 16:57:23 ERROR (MainThread) [homeassistant.components.automation.irrigation_unlimited_load_ui_controls] Irrigation Unlimited Load UI Controls: Error executing script. Service not found for call_service at pos 1: Unable to find service irrigation_unlimited.list_config

2021-11-10 16:57:23 ERROR (MainThread) [homeassistant.components.automation.irrigation_unlimited_load_ui_controls] Error while executing automation automation.irrigation_unlimited_load_ui_controls: Unable to find service irrigation_unlimited.list_config

I’ve placed the .py file in the correct position. I don’t see the drop downs being populated at all.

Regards,
Paul

Hi Paul,

It looks like pyscript is not setup correctly. Install the pyscript component. Now make sure you have a config/pyscript directory and put the irrigation_unlimited_service_shim.py file in it. Restart/reload pyscript.

Hey there,
Yep, that did the trick, many thanks. Suggestion for noobs such as myself, it would be an advantage to throw some instructions up about installing pyscript (unless I read over it).

If I can ask a couple more questions please . . .

I’m still seeing NaN on the “Last 7 Days” graph. Have cleared cache, etc but doesn’t seem to have made a difference.

I’ve previously created an irrigation system on the clipsal shac using LUA and have integrated a simple flag based on a call to the weather service about the rainfall in the last 24 hours. I just skip the watering in this case.

I’m trying to get my head around the way yours works. It appears that somehow I can extend the time until watering but still not sure how this works. Would be nice to just check a flag as to whether to start the zone or not.

Regs,
Paul

Hi Paul,

Glad you got it sorted. You are the second person to encounter a similar problem so I am thinking there is room for improvement in the documentation. Might even double down and put something in the trouble shooting section.

NaN is usually because there is no data in the history. Perhaps the zone has yet to turn on/off.

Adjusting the watering schedule works the other way around. The integration doesn’t go out and check anything, you tell it by way of service calls what to do. The service call you will probably want to focus on is ‘adjust_time’. There are a number of options here, but for example you can nominate a new time or alter the existing scheduled time, even to zero which will prevent any irrigation. This adjustment is usually handled by way of an automation which is triggered when your flag changes state or at a specified time - before the irrigation is due to commence. Take a look at the ESPHome example in the readme. It’s a simple soil moisture sensor that adjusts the watering time either by a sliding scale or simply on/off when a threshold is reached. Once you are on top of this and given the plethora of weather data available in HA via other integrations, I look forward to your irrigation adjustment automation solution. Always interested, please post - that goes for anyone else as well.

Hi there,

Whats your name btw :slight_smile:

I looked into it and can see the attributes show there has been a number of cycles, however still not seeing anything showing. The yaml I’m using I believe is straight from one of your examples. Starting to get my head around HA but a long way to go I suspect.

type: custom:mini-graph-card
name: Watering Last 7 Days
icon: mdi:sprinkler-variant
entities:
  - entity: binary_sensor.irrigation_unlimited_c1_z1
    attribute: today_total
  - entity: binary_sensor.irrigation_unlimited_c1_z2
    attribute: today_total
show:
  graph: bar
  labels: true
unit: min
aggregate_func: max
hours_to_show: 168
group_by: date
lower_bound: 0

zone_id: ‘1’
index: 0
enabled: true
status: ‘off’
schedule_count: 0
schedules: ‘’
adjustment: None
current_schedule: not running
percent_complete: 0
next_schedule: 1
next_name: Sunrise
next_start: ‘2021-11-14T18:11:00+11:00’
next_duration: ‘0:01:00’
next_adjustment: None
today_total: 3
friendly_name: Greenhouse Pump 1
icon: mdi:valve-closed

Hi Paul,

Make sure you have v0.11.0-dev.4 version of mini-graph card. I thought the author had rolled the changes into the main release but I don’t think so. Go to HACS → Frontend → mini-graph-card-> Options (the three dots button) → Reinstall → Show beta versions → v0.11.0-dev.4 → Install. Now clear your browser cache.

It was the ‘attribute’ option that was added to this release that we need.

Regards

Robert