There is a recent thread discussing this exact issue.
This was in reference to the Built-In Bond Integration app that HE team developed. I recommend giving that a try as it does technically support 6 speed fans. As outlined in my message, you can only access speeds 2 thru 6 via Set Speed attribute in the UI or RM. They added speed 1 as “very-low” which you can access with a custom command in RM or using the increase / decrease speed attribute. See the above post for details.
I think this is related - I noticed that any shades added through the Custom Bond app (kindly created by dcmeglio who I think is no longer active?) do not show up in Sharptools. I went with this app because it adds a stop command that works to trigger the preset midpoint of my shades. For many of the rooms I have setup a virtual shade that represents all of the shades in the room and that works fine through the Sharptools connector.
But recently I wanted to add control of individual shades in a particular room. So I was wondering if there was a similar change that needed to be made to the driver to get the shades to show up by default? FYI @josh
The devices would either need to support one of the core authorizable capabilities to be selected in the main auth flow or at least support one of the generic capabilities to be authorized manually.
Im submitting the following code modifcations that add some features and fix some bugs I found with the App.
BOND_Home_Integration.groovy
Line 184
if (deviceid.key == "_" || deviceid.key == "__")
Prevents NPE in getDeviceById. My issue was caused by double underscores, so test for that too.
Line 279
def component = dev.getChildDevice(hubId + ":bond:" + deviceId)
The arg was missing hubId + and the :. Prevents DNI name collision by creating child devices that already exist.
Line 688
if (deviceState.open == 1)
{
device.sendEvent(name: "switch", value: "on")
device.sendEvent(name: "windowShade", value: "open")
device.sendEvent(name: "position", value: 100)
}
else
{
device.sendEvent(name: "switch", value: "off")
device.sendEvent(name: "windowShade", value: "closed")
device.sendEvent(name: "position", value: 0)
}
Adding the position event for open and close fixes HomeKit window shade state in the Home App. Without it, the icon always showed closed and tapping the shade button would only open a closed shade, not close an open one, as it assumed it was already closed.
A further neat UX enhancement would be to have it say "opening" and "closing" for a settable amount of time, like the virtual window shade driver does.
Line 1219
4: ["high": 4, "medium-high": 3, "medium": 3, "medium-low": 2, "low": 1],
3: ["high": 3, "medium-high": 2, "medium": 2, "medium-low": 2, "low": 1],
2: ["high": 2, "medium-high": 2, "medium": 1, "medium-low": 1, "low": 1]
Map medium-high and medium-low also for 4, 3 and 2 speed fans as HomeKit (or the HE-HK integration mapping) sends these "speed" names at certain settings of the fan slider, I guess it isnt aware of max_speeds. Without this, I was getting executeAction(...SetSpeed, null) and the resultant bad argument 400 error.
Hope these edits help someone out and might be considered for inclusion in a future update. (is it even still being maintained?)
Or is a git pull request the preferred method of submitting issues like this?
Dominic (dman) is no longer an active member of the Community, so you will not likely see the changes applied to his custom app / driver, but, depending on the licensing setup, you may be able to fork the repository, or request these changes be included in the built-in version available on the HE hub.
FYI: the Hubitat Google Home integration update does not like the dman2306's BOND Home Integration Fan devices. If you are using this app for Bond fans and can no longer add devices to your Hubitat <-> Google Home integration, deselect all Bond fan devices in the Google Home app device list. This will allow the Google Home app to go back to working normal with all your other exported devices.
You will see this issue as warnings and errors in your Hubitat logs (see screenshot, Google Home app debug enabled) or as "Something went wrong. Try again" errors in the Google Home mobile app.
Text sample of pictured logs (Google Home app debug enabled):
app:196 2024-10-11 11:30:39.756 AM [error] syncResponse Error: {
"error": {
"code": 500,
"message": "Internal error encountered.",
"status": "INTERNAL"
}
}
, giving up for now
app:196 2024-10-11 11:30:39.373 AM [warn] unknownError: java.lang.IllegalArgumentException: Text must not be null or empty
app:196 2024-10-11 11:30:39.371 AM [debug] getDeviceAttributes trait:FanSpeed
app:196 2024-10-11 11:30:39.371 AM [debug] getDeviceAttributes trait:OnOff
app:196 2024-10-11 11:30:39.370 AM [debug] getDeviceAttributes device:Gazebo Fan, deviceType:[name:Fan, type:FAN, specificCaps:[Fan Control], traits:[OnOff, FanSpeed], heAttributes:[speed]]
app:196 2024-10-11 11:30:39.368 AM [debug] getDeviceType final:[name:Fan, type:FAN, specificCaps:[Fan Control], traits:[OnOff, FanSpeed], heAttributes:[speed]]
app:196 2024-10-11 11:30:39.367 AM [debug] getDeviceType intermediate:[speed]
app:196 2024-10-11 11:30:39.366 AM [debug] getDeviceType added:speed
app:196 2024-10-11 11:30:39.365 AM [debug] getDeviceType added:switch
app:196 2024-10-11 11:30:39.363 AM [debug] getDeviceType device:Gazebo Fan, attributes:[supportedFanSpeeds, switch, speed]
Without Google Home app debug enabled all you will see is:
app:196 2024-10-11 09:24:57.240 AM error syncResponse Error: {
"error": {
"code": 500,
"message": "Internal error encountered.",
"status": "INTERNAL"
}
}
, giving up for now
app:196 2024-10-11 09:24:57.023 AM warn unknownError: java.lang.IllegalArgumentException: Text must not be null or empty
Thanks @gatewoodgreen! That is really good information to have. Would you mind editing your post by adding the error messages from the screenshot as text in the post so that people that are searching the forum for those errors can find it? That would be awesome!
Done.
And for anyone reading use Google Home app debug option with caution. When you have 50 plus devices exposed it will do some serious harm, especially if you are forwarding hubitat logs to a remote syslog server.
Some really nice troubleshooting/"figuring it out" work there. Nicely done.
I reworked the Bond Fan driver for DMan's integration and fixed the Google Home issue and implemented cycleSpeed()
All you need is the single driver file Bond_Fan_v2.groovy
- Add the above content as a totally new driver
- Go to your Bond Fan device and Select "Bond Fan v2" for Type
- Click [Save Device]
- Notice a new Configure button in the upper left, press it
- Celebrate that your Bond fan device should no longer break Hubitat's Google Home app integration
After clicking Configure you will notice a new current state entry "supportedFanSpeeds" that is based on how many different speeds your specific Bond fan controller exposes.
Also the Cycle Speed button now works and Cycle Speed can now be used in Rules and with Buttons.
Cool stuff, really great to see new activity on this integration.
It really is. My biggest fear has been that there would be a breaking change in a version of HE firmware and I would be sunk since I could never get the built in bond integration to work right.
Minor update to Bond_Fan_v2.groovy so that it should self-configure for those who don't read and/or follow instructions.
Also updated author and importUrl references.
Original post here
Me.
All the time.
oh cool, I'll have to try this later. Thank you.
Latest update to Bond_Fan_v2.groovy
Implemented Breeze support and added "Query Device" for debug capability in case needed for helping anyone. See screenshot below.
You can enable Breeze mode by using the Toggle Breeze button or setting speed to "auto". Note that despite setting speed to auto, the speed reported under Current States will follow the real-time-ish Breeze adjusted speed as reported by the Bond device. You can identify breeze mode by looking at the "bondBreezeMode" under Current States.
Note: debug data, if generated, will appear in the Data section of the Device Details.
If you haven't already updated your Bond Fan to my version of the driver:
- Add the above content as a totally new driver
- Go to your Bond Fan device and Select "Bond Fan v2" for Type
- Click [Save Device]
If you have updated to and are currently using my driver version
- Replace all of the existing code in your current BOND_Fan_v2 with the code from above
- Go to your Bond Fan device and click [Save Device]
If you are new to Bond integration, this driver update requires the community BOND Home Integration app from DMan2306, available in the Hubitat Package Manager
be installed and setup BEFORE adding and using my v2 driver update.
Original Bond Fan v2 driver update post here
@gatewoodgreen : Any way to get these updates added to HPM?
Awesome work and update to the bond integration. I've previously was on a mission to make my own breeze mode via rule machine and ended up giving up on the project. Glad to see this implemented into a driver. Much appreciated! TY!
Unfortunately no. See this thread for details.
TL;DR, I’ll have to create a whole new project and HPM package.