Integration with Orbit B-Hyve Irrigation System

Oh, sorry to hear that! If you can inspect your logs and track anything down that might be useful I’d be happy to take a look. Please raise an issue on github :slight_smile:

Unfortunately there isn’t a way to force sensor name updates other than to reinstall - disable the integration, restart HA, remove the unavailable entities, enable the integration and then restart again. Sounds more complicated than it is :slight_smile:. I’d recommend you do this after upgrading to v2.0 as the entity unique_id values changed and cleanup would be required regardless.

Sweet. Thanks. Didn’t even know you could manually delete entities! Went through that process and updated to 2.0.1 and all seems to be working again with new names!

Took a little bit to figure out the naming of the switches for the b-hyve tap timers since each device is a single zone and the default name for that zone is ‘zone’ - no matter the name of the device.
So by default you might end u with a bunch of switch.zone_zone, and switch.zone_zone_2.

But if you rename the zone name to the device name, you’ll get more useful switch names switch.backyard_side_zone.

Thanks dude. Really appreciate the development.

I get sensor entities for all 3 of my orbit sprinkler controllers, but no switch entities.

my config.yaml entries:

bhyve:
  username: [email protected]
  password: whocares
switch:
   - platform: bhyve 

sensor: 
   - platform: bhyve

I get the exact opposite, switchs but no sensors.

bhyve:
username: [email protected]
password: xxxxx

sensor:

  • platform: bhyve

switch:

  • platform: bhyve

I think its because I have a seperate sensors.yaml file.

Yes, added to my sensors.yaml, and removed the sensor from previous post.

  • platform: bhyve
    sensor: bhyve

Make sure that your orbit sprinkler network is fully set up and working correctly before you install this integration.

I had incorrectly installed a wireless hub for a faucet controller without fully linking it to the faucet…so the orbit site showed two devices…the faucet and the controller. This caused the integration to fail…it didn’t know how to handle that wireless controller that couldn’t control anything.

I paired the controller and faucet correctly and the integration now works as it should…all sensors and switches are shown as entities.

HI, is this something I have to keep an eye on?
image
No further information
Later I got this
image
And in the meantime, I got these:
image
I’M not sure, if these messages are related to bHyve, it simply looks like.

In the end, I needed a restart because the integration was broken.

Seems like orbit did some maintenance as I received the same errors roughly the same time. I’m looking into some options to make the web socket connection more resilient to being dropped.

The auth message errors are not related to b-hyve :slight_smile:

Hi, thanks for the info.
My suggestion would be to provide an event which can be handled in anautomation to warn about the broken integration.
Importent when being in holidays and does’nt look daily in the logs :wink:

I have 7 zones set up. All have been added to a smart watering program. The attribute is_smart_watering is “true” for all switches but only two of the switches are showing the watering_program in the switch attributes. Why would this be? If I go into the Orbit app, I can see the schedules for all of the zones.

@VMCosco I moved the watering_program attribute from zone switches into the program itself in version 1.0.0. Please see the release notes: https://github.com/sebr/bhyve-home-assistant/releases/tag/1.0.0

If you are still having issues, please raise a github issue with logs :slight_smile:

I could use some help. I have everything installed and can see everything in Home Assistant but none of the sensors are working. The switches do appear to be working. I have my sensor.yaml set as follows

  • platform: bhyve
    sensor: bhyve

sensor: bhyve is not necessary.

sensor:
   - platform: bhyve
switch:
  - platform: bhyve
1 Like

Thank you. It appears sensor is working for Controller State. The Battery Level is showing unkown. Is it suppose to show the battery level of the Controller or just devices connected to it like a faucet? Also I was looking to see if there is way to detect Outside Rain Sensor?

It should show the battery level of the faucet controller. If the faucet switch works, then the battery should work as well.
Regarding the outside rain:
I have a Netatmo weather station and handle the rain sensor in an automation. It’s a little bit tricky, because I wanted to calculate the rain delay in dependency of total rain last 7 days, yesterday, today and the forecast of the next 8 hours. But it works now. Every morning at 04 o clock I calculate the situation and switch the rain delay on or off.
A Programm in bhyve is active which starts watering every second day at 05:30 or, when rain delay is active, not.

1 Like

Thanks. I don’t have any faucet valves, just using that as an example? My Sprinkler Controller Battery Level shows unkown. Since this is just a backup battery for the controller, I wasn’t sure if it should report the battery level.

are you accomplishing that with a script? Would you be willing to share that? I’m trying something simliar with a very clunky automation and it’s not very effective. I’d be interested in ideas to optimize…

Due to unreliable weather information provided bybHyve, I have to implement my own irrigation by using my netatmo rain sensor and YR.NO.
My irrigation automatization setup:

  1. create an input_boolean: rain_delay
  2. create two input_numbers time_since_last_irriation and irrigation_frequency
  3. two scripts.
    the rain delay on sets the boolean and sets time_sinc_last_irrigation to 0 or 1
    the rain delay off increments the last__irrigation by 1
set_rain_delay_on:
  sequence:
    - service: logbook.log
      data_template:
        name: "Rain_delay"
        message: >
          {% if states('input_boolean.rain_delay') == 'on' %}
              wird verlängert. Berechneter Regen:  {{(states('variable.last_rain_total') |float + states('variable.last_netatmo_rain_total') |float) |round(2)}} mm - Rain forecast: {{(states('sensor.yr_forecast_1_precipitation') |float + states('sensor.yr_forecast_3_precipitation') |float + states('sensor.yr_forecast_5_precipitation') |float + states('sensor.yr_forecast_8_precipitation') |float) |round(1)}} mm
          {% else %}
              aktiviert. Berechneter Regen:  {{(states('variable.last_rain_total') |float + states('variable.last_netatmo_rain_total') |float) |round(2)}} mm - Rain forecast: {{(states('sensor.yr_forecast_1_precipitation') |float + states('sensor.yr_forecast_3_precipitation') |float + states('sensor.yr_forecast_5_precipitation') |float + states('sensor.yr_forecast_8_precipitation') |float) |round(1)}} mm
          {% endif %}
    - service: input_boolean.turn_on
      entity_id: input_boolean.rain_delay
    - service: input_number.set_value
      data_template:
        entity_id: input_number.last_irrigation_weekday
        value_template: >
          {% if states('variable.last_netatmo_rain_total') |float + states('sensor.yr_forecast_1_precipitation') |float + states('sensor.yr_forecast_3_precipitation') |float + states('sensor.yr_forecast_5_precipitation') |float + states('sensor.yr_forecast_8_precipitation') |float > 2 %}
              0
          {% else %}
              1
          {% endif %}

set_rain_delay_off:
  sequence:
    - service: logbook.log
      data_template:
        name: "Rain_delay"
        message: >
          {% if states('input_boolean.rain_delay') == 'off' %}
            bleibt deaktiviert. Berechneter Regen:  {{(states('variable.last_rain_total') |float + states('variable.last_netatmo_rain_total') |float) |round(2)}} mm - Rain forecast: {{(states('sensor.yr_forecast_1_precipitation') |float + states('sensor.yr_forecast_3_precipitation') |float + states('sensor.yr_forecast_5_precipitation') |float + states('sensor.yr_forecast_8_precipitation') |float) |round(1)}} mm
          {% else %}
            deaktiviert. Berechneter Regen:  {{(states('variable.last_rain_total') |float + states('variable.last_netatmo_rain_total') |float) |round(2)}} mm - Rain forecast: {{(states('sensor.yr_forecast_1_precipitation') |float + states('sensor.yr_forecast_3_precipitation') |float + states('sensor.yr_forecast_5_precipitation') |float + states('sensor.yr_forecast_8_precipitation') |float) |round(1)}} mm
          {% endif %}
    - service: input_boolean.turn_off
      entity_id: input_boolean.rain_delay
    - service: input_number.set_value
      data_template:
        entity_id: input_number.time_since_last_irrigation
        value: "{{ states('input_number.time_since_last_irrigation')|int + 1 }}"

An then the automations, quite more simple:

- id: "150"
  alias: "Irrigation"
  initial_state: true
  trigger:
    - platform: time
      at: "04:55:00"
  action:
    # es hat mehr als 19 liter in 7 Tagen geregnet, (gestern + heute mehr als 3 Liter), es regnete in der letzten Stunde nicht wesentlich und der forecast 1 + 3 + 5 + 8 Std ist in summe < 2
    - service: script.turn_on
      data_template:
        entity_id: >
          {% if states('sensor.weekly_total_rain') |float > 19 or ((states('variable.last_rain_total') |float + states('variable.last_netatmo_rain_total') |float) > 3) or (states('sensor.outside_rain') |float > 0.1 and (states('sensor.yr_forecast_1_precipitation') |float + states('sensor.yr_forecast_3_precipitation') |float + states('sensor.yr_forecast_5_precipitation') |float + states('sensor.yr_forecast_8_precipitation') |float) > 2) %}
           script.set_rain_delay_on
          {% else %}
           script.set_rain_delay_off
          {% endif %}

- id: "150b"
  alias: "Start Irrigation"
  initial_state: true
  trigger:
    - platform: time
      at: "05:45:00"
  condition:
    - condition: and
      conditions:
        - condition: template
          value_template: "{{ now().isoweekday()|int - states('input_text.irrigation_done')|int > 1 }}"
        - condition: template
          value_template: "{{ states('input_boolean.rain_delay') == 'off' }}"
  action:
    - service: switch.turn_on
      entity_id: switch.zone_1_zone
    - service: input_text.set_value
      data_template:
        entity_id: input_number.time_since_last_irrigation
        value: "0"

When starting an irrigation I set an input_number.time_since_last_irrigation to 0. The rain_delais does this as well or 1 when rain was yesterday.
When rain_delay is off and last irrigation is equal to irrigation frequency start irrigation. Basically I do not have to check the rain_delay boolean again. The boolean is last but not least only to show, that the parameter has been set. It could be optimized but in the end it makes no difference.
Now, I have my own rain delay and programm every second day.

1 Like

Thanks for sharing. Much more elegant solution than the script I was using.

ok, to be correct last changes reported:
I changet input_text variables to input_number.
I added an input_number for the irrigation frequency.
And here is my gui:
image