Integration with Orbit B-Hyve Irrigation System

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

Hi @sebr. I still facing the situation, that over night the integration stops and I have to restart HA.
That leads me to check every morning, if irrigation started (makes the automation useless :slight_smile: )
Did you think about an event, which can be used as trigger for push notification or a restart?

hey @Pirol62 - I’ve just released v2.0.3 which adds improved logging. Next time you see these errors can you please add the logs to https://github.com/sebr/bhyve-home-assistant/issues/28

Thank you :slight_smile:

1 Like