[RELEASE] Orbit Bhyve+

that's got to be fun to enter on your phone :slight_smile:

lol, password manager :grin:

Issue identified, Although the app and their website work well with special characters, the integration does not.

@jpage4500 thanks for picking this up. I’m still on the old version of the app and haven’t switched yet. I know it’s a long shot, but does your version have the ability to set the soil moisture level for a zone? I really want the manual controls to be on my Hubitat app, but have the smart schedule control appropriate automated watering for the lawn. The problem is the orbit app keeps “assuming” my soil moisture incorrectly so I end up having to set that manually via the orbit app. Would be spectacular if I could have the data from my moisture sensors sent over to the orbit zones so I don’t have to manually manage that.

1 Like

I just noticed this in the logs -- it repeats over and over all day long. I checked because I couldn't turn my hose on with Google Assistant.

Let's hope it's just a temporary issue and not some change that was made on Orbit's end

Lost connection to Web Socket: failure: Expected HTTP 101 response but was '503 Service Unavailable', will reconnect

I'm getting:


It happens every so often too but now every refresh attempt (set at 5 minute refresh).

Running the latest HPM version.

I see where this could occur and will fix it.

Is the device working for you? I'm thinking this might just be a side-effect of the Orbit web service being down

the refresh() method is no longer failing with the NPE consistently. It worked, then failed, then worked, then failed, my guess is while Orbit was fixing whatever. But now its working.

I am getting this all day long...

Anyone else experiencing this or know how to remove this from spamming the logs?

Yes, I am getting it as well. Every 30 minutes.

Yes, twice every hour...

It's logic built into the driver.. I was asking if anyone knew why it was there. I assume there was a reason

I have commented out the line that causes the error message and have seen no issues with the device and its functions.

You mean the if statement?

if (now()-(30*60*1000) >= state.webSocketOpenTime

If so, that's good to know. I can try that too and see how it goes after a while. But, I do expect there some reason it was done. The driver was well written

It could be to keep the websocket open in case of changes to ensure they are synchronized across the Orbit app and this integration, just a thought....

No, I commented out the error message line.

else if (message == "status: closing") {
    synchronized (socketStatusLock) {
       //log.error "Lost connection to Web Socket: ${message}, will reconnect."
       setWebSocketStatus(false)
    }

Lol.. so you don't see the error message but didn't change anything :sweat_smile:

Just being safe. What is interesting to me is that I have 2 Orbit Devices and only 1 reports the error.

Is there any way to show last_watering_volume as LITERS instead of GAL as well as water_flow_rate as LPM?

Not ideal but you could edit the driver code and return liters. Look for the below section:

        case "flow_sensor_state_changed":
            def dev = parent.getDeviceById(payload.device_id)
            if (dev)
                dev*.sendEvent(name: "water_flow_rate", value: payload.flow_rate_gpm)

I'm not an expert in groovy but something like this might work:

        case "flow_sensor_state_changed":
            def dev = parent.getDeviceById(payload.device_id)
            if (dev) {
                def liters = payload.flow_rate_gpm * 3.78541
                dev*.sendEvent(name: "water_flow_rate", value: liters)
            }

The other variable is in the app code:

        if (latestIrrigation != null) {
            def wateringEventStationDev = getDeviceByIdAndStation(device_id, latestIrrigation.station)
            wateringEventStationDev.sendEvent(name: "last_watering_volume", value: latestIrrigation.water_volume_gal?:0, unit: "gal")
        }