Ok i see. It works in 2023.9.2 because before i dont see status controller and now i see correct status controller.
Better will be implement this integration to GUI to configure from GUI no by yaml.
Love the new GUI integration! Good job guys!
Any idea how to set the manual watering time now? Is it still in the config file? If so, what all needs to be there now that it’s a GUI integration?
New integration by GUI no share sensor with status controller.
the integration documentation has been updated but it refers to the manual time to run as being set by
watering_minutes
I have no idea where that is… not in the Hydrawise app as I have a completely different value there… so it must be somewhere still in HA… mystery… and of course I still get the API limit and sensors becoming unavailable. BUT good to see GUI and thank you for update!
Hi all,
thanks a lot for this integration, works well (at least partly).
My problem: I have to sites with two controllers, but the integration outputs only information of the first controller. The online management tool of Hydrawise (and the app aswell) provide access to both controllers. There is only one API key.
Any ideas? Many thanks!
Anyone know where to find watering_minutes in the standard integration? I am new to HA so go easy…
From integration page:
SWITCH OPERATION
When manual_watering
is on
the zone will run for the amount of time set by watering_minutes
.
Any assistance would be appreciated!
Cheers
Hi all… it looks as good news… yesterday i see that now integration hudrawise show in home assistant status of rain sensor… and it works.
@dknowles2 not sure if you check this thread but any way to have this functionality native to the integration? For example, a sensor that shows the currently running zone and the remaining water time left?
You can theoretically have more than one zone running at once, so I’m not sure having a sensor showing the current running zone makes sense.
Each zone already has a sensor showing the remaining watering time.
Interesting, I didn’t realize you could run multiple at once…fair enough.
After the recent updates with the integration I updated the node-red flows and card I posted above.
I noticed the node the above flow relied upon has been replaced with more granular nodes. This updated version now has node create 1 HA entity which contains all the details needed to populate the card (sensor.active_sprinkler).
Node:
[{"id":"05b97b830822e82b","type":"group","z":"af12b1b7fe411454","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["77752996eca24b1e","27e71cf822f789af","b9543dcb5d1aad44","7bfbb22ef5881001"],"x":94,"y":119,"w":692,"h":122},{"id":"77752996eca24b1e","type":"function","z":"af12b1b7fe411454","g":"05b97b830822e82b","name":"Parse Zone","func":"const ha = global.get('homeassistant').homeAssistant.states;\n\n/**\n* @param {string} str\n*/\nfunction trim(str) {\n return str.substring(12,13)\n}\n\nvar newmsg = {}\n\nif (msg.state > 0)\n{\n var zone = trim(msg.payload)\n if (zone == \"s\") {\n newmsg.payload = \"Blake's Veggies: \" + msg.state + \" Min\" \n newmsg.state = \"Blakes_Veggies\"\n newmsg.name = \"Blakes Veggies\"\n } else {\n newmsg.payload = \"Zone \" + zone + \": \" + msg.state + \" Min\" \n newmsg.state = zone\n newmsg.name = \"Zone \" + zone\n }\n} else {\n newmsg.payload = \"None\"\n newmsg.state = 0\n newmsg.name = null\n}\n\nreturn newmsg\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":470,"y":200,"wires":[["7bfbb22ef5881001"]]},{"id":"27e71cf822f789af","type":"comment","z":"af12b1b7fe411454","g":"05b97b830822e82b","name":"Publish Zone being Watered to HA","info":"","x":260,"y":160,"wires":[]},{"id":"b9543dcb5d1aad44","type":"server-state-changed","z":"af12b1b7fe411454","g":"05b97b830822e82b","name":"Watering Minutes Changed","server":"e056fc93.5eff4","version":5,"outputs":2,"exposeAsEntityConfig":"","entityId":"(sensor.zone_[1-7]_watering_time|sensor.blakes_veggies_watering_time)","entityIdType":"regex","outputInitially":false,"stateType":"str","ifState":"0","ifStateType":"num","ifStateOperator":"gt","outputOnlyOnStateChange":true,"for":"","forType":"num","forUnits":"seconds","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"triggerId"},{"property":"state","propertyType":"msg","value":"","valueType":"entityState"}],"x":230,"y":200,"wires":[["77752996eca24b1e"],["77752996eca24b1e"]]},{"id":"7bfbb22ef5881001","type":"ha-sensor","z":"af12b1b7fe411454","g":"05b97b830822e82b","name":"Active Sprinkler","entityConfig":"385ff42753799595","version":0,"state":"payload","stateType":"msg","attributes":[{"property":"friendly","value":"name","valueType":"msg"},{"property":"zone","value":"state","valueType":"msg"}],"inputOverride":"allow","outputProperties":[],"x":680,"y":200,"wires":[[]]},{"id":"e056fc93.5eff4","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true},{"id":"385ff42753799595","type":"ha-entity-config","server":"e056fc93.5eff4","deviceConfig":"","name":"Active Sprinkler","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"Active Sprinkler"},{"property":"icon","value":"mdi:water"},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""}],"resend":false,"debugEnabled":false}]
[{"id":"0a4ccef788c6e983","type":"group","z":"af12b1b7fe411454","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["9ef630844a709d38","f382a6f4b1d65a7f","9945227d9eaaad18","6861aa7f77544f5c"],"x":134,"y":299,"w":552,"h":122},{"id":"9ef630844a709d38","type":"function","z":"af12b1b7fe411454","g":"0a4ccef788c6e983","name":"Parse Zone","func":"const ha = global.get('homeassistant').homeAssistant.states;\n\nvar selectedZone = ha[\"input_select.sprinkler_zones\"].state;\n\n\n/**\n* @param {string} str\n*/\nfunction trim(str) {\n var findZone = str.search(\"[0-9]{1}|Blake's Garden\")\n return str.substring(findZone,findZone + 1)\n}\n\nvar newmsg = {}\nvar zone = trim(selectedZone)\nif (zone == \"B\") {\n zone = \"switch.blakes_veggies_manual_watering\"\n} else {\n zone = \"switch.zone_\"+zone+\"_manual_watering\"\n}\n\nnewmsg.payload = zone\nreturn newmsg\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":410,"y":380,"wires":[["9945227d9eaaad18"]]},{"id":"f382a6f4b1d65a7f","type":"ha-button","z":"af12b1b7fe411454","g":"0a4ccef788c6e983","name":"Start Sprinkler","version":0,"debugenabled":false,"outputs":1,"entityConfig":"dd3a8a3b671d15c4","outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"x":230,"y":380,"wires":[["9ef630844a709d38"]]},{"id":"9945227d9eaaad18","type":"api-call-service","z":"af12b1b7fe411454","g":"0a4ccef788c6e983","name":"Turn on Zone","server":"e056fc93.5eff4","version":5,"debugenabled":false,"domain":"switch","service":"turn_on","areaId":[],"deviceId":[],"entityId":[],"data":"{\t \"entity_id\": msg.payload\t}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"data"}],"queue":"none","x":590,"y":380,"wires":[[]]},{"id":"6861aa7f77544f5c","type":"comment","z":"af12b1b7fe411454","g":"0a4ccef788c6e983","name":"Start Sprinkler - 10 Min","info":"","x":260,"y":340,"wires":[]},{"id":"dd3a8a3b671d15c4","type":"ha-entity-config","server":"e056fc93.5eff4","deviceConfig":"","name":"Start Sprinkler Zone","version":"6","entityType":"button","haConfig":[{"property":"name","value":"Start Sprinkler Zone"},{"property":"icon","value":"mdi:sprinkler"},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":""}],"resend":false,"debugEnabled":false},{"id":"e056fc93.5eff4","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]
YAML - Be mindful of the custom cards being used
type: custom:expander-card
title: Irrigation
clear: false
expanded: false
cards:
- type: custom:mushroom-select-card
entity: input_select.sprinkler_zones
name: Run Zone
icon: mdi:sprinkler
icon_color: deep-orange
layout: horizontal
tap_action:
action: call-service
service: button.press
data:
entity_id: button.start_sprinkler
- type: custom:mushroom-template-card
primary: |
{% if states('sensor.active_sprinkler') == 'None' %}
{% else %}
{{ state_attr('sensor.active_sprinkler', 'friendly') }}
{% endif %}
secondary: |
{% if states('sensor.active_sprinkler') != 'None' %}
active
{% else %}
All Zones Off
{% endif %}
icon: |
{% set zone = state_attr('sensor.active_sprinkler', 'zone') %}
{% if zone == 'Blakes_Veggies' %}
mdi:carrot
{% elif zone | int > 0 %}
mdi:numeric-{{ zone | int }}-circle
{% else %}
{% endif %}
icon_color: |
{% if states('sensor.active_sprinkler') != 'None' %}
{% if state_attr('sensor.active_sprinkler', 'zone') == 'Blakes_Veggies' %}
green
{% else %}
pink
{% endif %}
{% else %}
gray
{% endif %}
tap_action:
action: none
fill_container: true
layout: horizontal
- type: custom:mushroom-entity-card
entity: sensor.24_high_acre_daily_active_watering_time
name: Watering Time
primary_info: state
secondary_info: name
icon: mdi:clock-time-three
icon_color: blue
layout: horizontal
fill_container: true
card_mod:
style: |
ha-card {
padding-right: 150px !important;
padding-left: 150px !important;
padding-bottom: 0 !important;
padding-top: 0 !important;
}
- type: logbook
entities:
- binary_sensor.zone_1_watering
- binary_sensor.zone_2_watering
- binary_sensor.zone_3_watering
- binary_sensor.zone_4_watering
- binary_sensor.zone_5_watering
- binary_sensor.zone_6_watering
- binary_sensor.zone_7_watering
- binary_sensor.blakes_veggies_watering
hours_to_show: 12
gap: '0'
padding: '0'
content:
type: custom:vertical-stack-in-card
cards:
- type: custom:mushroom-title-card
title: House Water
subtitle: Status and Usage
alignment: center
card_mod:
style: |
ha-card {
border-radius: 10px;
box-shadow: 0px 2px 4px rgba(0,0,0,0.1);
background: linear-gradient(to right, #74ebd5, #ACB6E5);
}
mushroom-title-card {
padding: 12px;
}
- type: custom:layout-card
layout_type: custom:horizontal-layout
layout:
width: 100%
cards:
- type: custom:mushroom-template-card
primary: |
[[[
var usage = states['sensor.high_acre_shutoff_today_s_water_usage'].state;
return `${usage} <span class="unit">gal</span>`;
]]]
secondary: Usage Today
icon: mdi:water
icon_color: '#0b5394'
card_mod:
style: |
mushroom-template-card {
box-shadow: inset 0px 0px 6px rgba(0,0,0,0.2);
background: rgba(255,255,255,0.3);
border-radius: 10px;
padding: 12px;
margin: 6px;
}
.unit {
font-size: 0.8em;
color: #666;
margin-left: 2px;
}
- type: custom:mushroom-template-card
primary: |
[[[
var state = states['switch.high_acre_shutoff_shutoff_valve'].state;
return `<span class="state-${state}">${state}</span>`;
]]]
secondary: Water Main
icon: |
[[[
var state = states['switch.high_acre_shutoff_shutoff_valve'].state;
return (state === 'on') ? 'mdi:valve-open' : 'mdi:valve';
]]]
icon_color: |
[[[
var state = states['switch.high_acre_shutoff_shutoff_valve'].state;
return (state === 'on') ? '#43A047' : '#E53935';
]]]
tap_action:
action: more-info
hold_action:
action: toggle
card_mod:
style: |
mushroom-template-card {
box-shadow: inset 0px 0px 6px rgba(0,0,0,0.2);
background: rgba(255,255,255,0.3);
border-radius: 10px;
padding: 12px;
margin: 6px;
}
.state-on {
color: #43A047;
font-weight: bold;
}
.state-off {
color: #E53935;
font-weight: bold;
}
- type: custom:layout-card
layout_type: custom:horizontal-layout
layout:
width: 100%
cards:
- type: custom:mushroom-template-card
primary: |
[[[
var pressure = states['sensor.high_acre_shutoff_water_pressure'].state;
return `${pressure} <span class="unit">psi</span>`;
]]]
secondary: Pressure
icon: mdi:gauge
icon_color: '#FB8C00'
card_mod:
style: |
mushroom-template-card {
box-shadow: inset 0px 0px 6px rgba(0,0,0,0.2);
background: rgba(255,255,255,0.3);
border-radius: 10px;
padding: 12px;
margin: 6px;
}
.unit {
font-size: 0.8em;
color: #666;
margin-left: 2px;
}
- type: custom:mushroom-template-card
primary: |
[[[
var flow = states['sensor.high_acre_shutoff_water_flow_rate'].state;
return `${flow} <span class="unit">gpm</span>`;
]]]
secondary: Flow Rate
icon: mdi:water-pump
icon_color: '#039BE5'
card_mod:
style: |
mushroom-template-card {
box-shadow: inset 0px 0px 6px rgba(0,0,0,0.2);
background: rgba(255,255,255,0.3);
border-radius: 10px;
padding: 12px;
margin: 6px;
}
.unit {
font-size: 0.8em;
color: #666;
margin-left: 2px;
}
child-padding: '0'
Hello All,
I’m new very new in HA and saw that the Hydrawise integration was updated with the function of setting the watering time by Manuel.
Can someone help me to understand how I can that this? Maybe someone give me an example so that I can understand it.
Thanks in advance!
Ha all
Is more people’s Hydrawise intergration broken? I’m having problems that I can’t fix or do you guys have any advice ?
logger:%20homeassistant.components.hydrawise%0ABron%3A%20helpers/update_coordinator.py:382%0Aintegratie:%20Hunter%20Hydrawise%20(documentatie,%20problemen)%0AEerst%20voorgekomen:%2006:52:15%20(112%20gebeurtenissen)%0ALaatst%20gelogd:%2009:22:25%0A%0AUnexpected%20error%20fetching%20hydrawise%20data%0ATraceback%20(most%20recent%20call%20last):%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/gql/transport/aiohttp.py%22,%20line%20319,%20in%20raise_response_error%0A%20%20%20%20resp.raise_for_status()%0A%20%20File%20%22/usr/local/lib/python3.12/site-packages/aiohttp/client_reqrep.py%22,%20line%201158,%20in%20raise_for_status%0A%20%20%20%20raise%20ClientResponseError(%0Aaiohttp.client_exceptions.ClientResponseError:%20429,%20message=‘Too%20Many%20Requests’,%20url=‘https://app.hydrawise.com/api/v2/graph’ The%20above%20exception%20was%20the%20direct%20cause%20of%20the%20following%20exception: Traceback%20(most%20recent%20call%20last): %20%20File%20"/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py",%20line%20382,%20in%20_async_refresh %20%20%20%20self.data%20=%20await%20self._async_update_data() %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %20%20File%20"/usr/src/homeassistant/homeassistant/components/hydrawise/coordinator.py",%20line%2062,%20in%20_async_update_data %20%20%20%20data%20=%20HydrawiseData(user=await%20self.api.get_user(fetch_zones=False)) %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %20%20File%20"/usr/local/lib/python3.12/site-packages/pydrawise/client.py",%20line%20109,%20in%20get_user %20%20%20%20result%20=%20await%20self._query( %20%20%20%20%20%20%20%20%20%20%20%20%20^^^^^^^^^^^^^^^^^^ %20%20File%20"/usr/local/lib/python3.12/site-packages/pydrawise/client.py",%20line%2088,%20in%20_query %20%20%20%20return%20await%20session.execute(dsl_gql(DSLQuery(selector))) %20%20%20%20%20%20%20%20%20%20%20^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %20%20File%20"/usr/local/lib/python3.12/site-packages/gql/client.py",%20line%201628,%20in%20execute %20%20%20%20result%20=%20await%20self._execute( %20%20%20%20%20%20%20%20%20%20%20%20%20^^^^^^^^^^^^^^^^^^^^ %20%20File%20"/usr/local/lib/python3.12/site-packages/gql/client.py",%20line%201537,%20in%20_execute %20%20%20%20result%20=%20await%20self.transport.execute( %20%20%20%20%20%20%20%20%20%20%20%20%20^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %20%20File%20"/usr/local/lib/python3.12/site-packages/gql/transport/aiohttp.py",%20line%20341,%20in%20execute %20%20%20%20await%20raise_response_error(resp,%20"Not%20a%20JSON%20answer") %20%20File%20"/usr/local/lib/python3.12/site-packages/gql/transport/aiohttp.py",%20line%20321,%20in%20raise_response_error %20%20%20%20raise%20TransportServerError(str(e),%20e.status)%20from%20e gql.transport.exceptions.TransportServerError:%20429,%20message=‘Too%20Many%20Requests’,%20url='https://app.hydrawise.com/api/v2/graph’%0A
Yes - there is an issue with polling causing 429 HTTP errors; basically Hunter is ratelimiting Home Assistant. There is an active issue in GitHub about it. For now, the best fix is to go to Devices and Services, access Hydrawise, then click the 3 dots beside your main integration, open System options and disable polling for updates.
Wait about a day or so if you’ve received errors, and then from the same 3 dots menu, manually reload the integration to force an update - it should work without error. You can then do this once in a while as needed, or set up an automation to manually reload the integration about once an hour or so (or more if you’re not actively watering at this time of year).
Upcoming updates are going to increase the regular polling interval, but they are also engaging with Hunter to see if the integration can get some official support (and not end up in a MyQ situation).
Follow the GitHub issue for the latest on the issue (no need to comment “me too”): Hydrawise still polls too often and causes HTTP 429 errors · Issue #130131 · home-assistant/core
thank you for reaction