Is anyone planning to write a binding for this “smart fan”? Others have written an unofficial API for it, https://github.com/sean9keenan/BigAssFansAPIThey say the communication with it is very basic and is easy to implement. My development skills are zero but I am very willing to test and report logs to help as much as I can. I have both the fan and the wall control and am running OH2
I was just looking into this, as I’m planning to install some of these fans. But I haven’t had the time to do anything yet.
That is great. It would be nice to control these with OH2. Let me know if I can help.
Back from vacation, so I can get started on this. I can’t fully test it, since I don’t have the fans yet (probably won’t have them for another month or two given the current state of construction on the house).
From what I’ve read so far, I should be able to implement automated discovery of the fan, as well as control of most/all aspects of the fan functions. I’ll probably start with auto discovery and basic control of light level and fan speed.
That is excellent. I can certainly test for you in the meantime if you would like. I really like my BAF but am disappointed in the integration between it and my Ecobee tstat. I would like more control. Adding it to OH just makes sense.
@Ben_Douglas I might have something for you to try out next week, maybe sooner. It’ll support auto-discovery and some very basic functionality. I may (will) need you to capture some debug logs, as I have no way to test with an actual device.
Is anyone else interested in a binding for the Haiku Big Ass Fans?
I have an early version of a binding that would benefit from another set of eyes. While I don’t have one of these fans (yet), @Ben_Douglas was kind enough to help me test out some early versions of the binding. Thank you, Ben!!!
The binding is working (mostly), but still needs a few functional improvements. It supports fans and the optional integrated lights, but it doesn’t yet support the standalone lights.
The following features are implemented:
- auto-discovers fans on the network
- control fan power and speed
- change fan direction (not well tested)
- control light power and brightness level
- enable/disable whoosh mode (not well tested)
- enable/disable fan auto mode (not well tested)
- enable/disable light auto mode (not well tested)
- update status in OH when controlled from app and wall controller
Just an FYI that the bigassfan binding was merged into OH2, so it should be available very shortly in current OH2 SNAPSHOT builds.
I have the snapshot build and have installed the bigassfan binding. I all controls my fan and light as before. Nice! Now if I could get the built in occupancy sensor to report to OH2, I could use it to send presence detection without automatically turning on the fan or light.
Excellent job Mark.
Glad it still works.
Yes, I need to sort out the motion sensor. I know there’s one in the fan, and there’s also one in the wall controller. Once I get my fans and wall controllers installed, I’ll be able to fully sort out the motion sensors.
If the wall controller can report motion, I’ll probably end up creating a separate thing for the wall controller.
Hi,
I have installed the binding to control my new Haiku Fan I Series.
Working : ON/OFF, SPEED, MOTION etc
Fan SmartMode and Fan Direction are not working.
The response from the fan is not read correctly, this is what i can see in the DEBUG LOG.
2017-12-13 11:04:11.949 [DEBUG] [handler.BigAssFanHandler$FanListener] - FanListener received message of length 33: (Loft Fan;SMARTMODE;STATE;HEATING
2017-12-13 11:04:11.950 [DEBUG] [handler.BigAssFanHandler$FanListener] - FanListener processing received message (Loft Fan;SMARTMODE;STATE;HEATING
2017-12-13 11:04:11.951 [DEBUG] [handler.BigAssFanHandler$FanListener] - Message is for me!!! Process the message: Loft Fan;SMARTMODE;STATE;HEATING
2017-12-13 11:04:11.952 [DEBUG] [handler.BigAssFanHandler$FanListener] - Received unsupported message from fan: Loft Fan;SMARTMODE;STATE;HEATING
2017-12-13 11:04:11.953 [DEBUG] [handler.BigAssFanHandler$FanListener] - Waiting for message from fan at 192.168.1.232
2017-12-13 11:04:41.339 [DEBUG] [r.BigAssFanHandler$ConnectionManager] - Connection check OK for fan 436fb0a3 at 192.168.1.232
I think you are looking for : SMARTMODE;ACTUAL: but the fan retuns SMARTMODE;STATE;HEATING ?
Maybe a firmware update changed this ?
Also I do not understand why in the logs the fan quickly change from speed (in %) 29 to 43 and immediately after 43 to 29 ? Is it possible to have the real speed 0 to 7 instead of the strange % in another channel ?
Finally for the fan time, why this info is only updated randomly?
Thanks for your work !
I’m glad to see another user of the binding. Up until this point I was only aware of 2 people using it (me and another person). Thanks for the feedback! Some answers below.
Smartmode - Yes, I need to sort out some issues with Smartmode. Since Haiku won’t provide me the API, I’ve had to reverse engineer the protocol, which has led to some problems determining how to support some of the fan modes (such as Smartmode). I’ll take a look at your findings below. That may help me work things out.
Fan Direction - This is a read-only parameter. It’s actually not possible to control the fan direction through the API (although there may be a way to do it using the wall controller).
It was the approach I used to be able to use a Dimmer control to control the speed (and light brightness). I’m not sure why it goes back to 29 after changing to 43, unless a status message from the fan indicates speed=2. There may be a better way to do this.
Yes, it’s certainly possible to add a separate Number channel for Fan Speed (0…7) and Light Brightness (0…16)
The fan only reports the time periodically. I’ve not been able to sort out the specific model they use for reporting time. An API spec would go a long way to shedding light on this.
I’m also disappointed with the motion sensor. I’ve not found a way to have the fan send an unsolicited motion event when detects motion.
Hi Mark,
Yes I am using your binding to automate my fan, thanks for the great work !
For me, SmartMode or the Fan Direction (read only) is never updated or read, I only have ( - ), empty value in the channel.
If you have time it will be perfect if you can add a new channel for the speed. I want to use the same numbers that I use in the native app (because I know how this speed numbers work and feels).
Maybe you can poll the status for the motion sensor each minute?
Are you polling for status change or this is automatic?
I can do some troubleshooting for you in the logs if you need it.
Have a great day !
More log info
Fan SmartMode (Channel always empty -)
2017-12-13 13:05:03.911 [DEBUG] [handler.BigAssFanHandler$FanListener] - FanListener received message of length 34: (Loft Fan;SMARTMODE;ACTUAL;HEATING
2017-12-13 13:05:03.912 [DEBUG] [handler.BigAssFanHandler$FanListener] - FanListener processing received message (Loft Fan;SMARTMODE;ACTUAL;HEATING
2017-12-13 13:05:03.913 [DEBUG] [handler.BigAssFanHandler$FanListener] - Message is for me!!! Process the message: Loft Fan;SMARTMODE;ACTUAL;HEATING
2017-12-13 13:05:03.914 [DEBUG] [handler.BigAssFanHandler$FanListener] - Process smartmode update (OFF/COOLING/HEATING)
2017-12-13 13:05:03.915 [DEBUG] [handler.BigAssFanHandler$FanListener] - Smartmode has unexpected number of parameters: [Loft Fan, SMARTMODE, ACTUAL, HEATING]
2017-12-13 13:05:03.917 [DEBUG] [handler.BigAssFanHandler$FanListener] - FanListener received message of length 33: (Loft Fan;SMARTMODE;STATE;HEATING
2017-12-13 13:05:03.917 [DEBUG] [handler.BigAssFanHandler$FanListener] - FanListener processing received message (Loft Fan;SMARTMODE;STATE;HEATING
2017-12-13 13:05:03.918 [DEBUG] [handler.BigAssFanHandler$FanListener] - Message is for me!!! Process the message: Loft Fan;SMARTMODE;STATE;HEATING
2017-12-13 13:05:03.919 [DEBUG] [handler.BigAssFanHandler$FanListener] - Received unsupported message from fan: Loft Fan;SMARTMODE;STATE;HEATING
Fan direction (Channel always empty -)
2017-12-13 13:05:03.669 [DEBUG] [handler.BigAssFanHandler$FanListener] - Waiting for message from fan at 192.168.1.232
2017-12-13 13:05:03.670 [DEBUG] [handler.BigAssFanHandler$FanListener] - FanListener received message of length 21: (Loft Fan;FAN;DIR;FWD
2017-12-13 13:05:03.672 [DEBUG] [handler.BigAssFanHandler$FanListener] - FanListener processing received message (Loft Fan;FAN;DIR;FWD
2017-12-13 13:05:03.673 [DEBUG] [handler.BigAssFanHandler$FanListener] - Message is for me!!! Process the message: Loft Fan;FAN;DIR;FWD
2017-12-13 13:05:03.673 [DEBUG] [handler.BigAssFanHandler$FanListener] - Process fan direction update (FWD/REV)
DO NOTHING… Channel always empty
Hmm. I understand why Smartmode isn’t updating.
But, Direction should be showing something. In debug mode, I write a log message when a FAN;DIR is received from the fan. I’ll take another look at this.
logger.debug("Process fan direction update for {}: {}", thing.getUID(), messageParts[3]);
I’m currently not polling the device for status, although there’s a command for that.
2017-12-13 13:05:03.672 [DEBUG] [handler.BigAssFanHandler$FanListener] - FanListener processing received message (Loft Fan;FAN;DIR;FWD
2017-12-13 13:05:03.673 [DEBUG] [handler.BigAssFanHandler$FanListener] - Message is for me!!! Process the message: Loft Fan;FAN;DIR;FWD
2017-12-13 13:05:03.673 [DEBUG] [handler.BigAssFanHandler$FanListener] - Process fan direction update (FWD/REV)
Yes, this is exactly what should happen.
I don’t know why the channel is not updating. It updates for me.
Just to make sure we’re running the same version, are you running the version that comes with 2.1 stable, or with the 2.2 snapshot?
Ok, I got the Fan Direction working, your channel is identified as Switch, I changed to String and I have : FWD as a value (working !)
We just need to fix the SmartMode.
For the pulling, when I refresh my items, the Fan reconnect and send all value (with the correct time and motion), why not polling the status each 5 minutes? Or let the user decide the polling time with a setting?
I am running the stable 2.1 version.
Ok. The direction channel type is a String. Does the documentation still show Switch?
<channel-type id="fan-direction">
<item-type>String</item-type>
<label>Fan Direction</label>
<description>Forward or reverse</description>
<state readOnly="true">
<options>
<option value="FWD">Forward</option>
<option value="REV">Reverse</option>
</options>
</state>
Yes, this is can be done. I’ll add it to the list for the next release of the binding (which at the moment is unplanned).
The Switch / String issue is resolved in the snapshot.
Ok Thanks for your help if you can fix the SmartMode at some point !
Yep, I was just going to say that. There are a LOT of changes in the version that came out after the 2.1 stable release. It would be best if you can run that version.
BTW, the snapshot version does get the status and motion sensor every time the connection is checked, which currently is every 2 minutes.