Haiku Fan (Big Ass Fans) support

Anyone any ideas on whether the smart Haiku (Big Ass) fans are supported?

2 Likes

There doesn't seem to be any support, so I'm writing a driver. I have the proof of concept down and am actively working on it. I expect to have something highly usable in the next few weeks! (for now you can turn a light on if you want to try it out)

I've uploaded my work here:

and will be routinely pushing any updates I make.

3 Likes

I have 3 L-Series fans, a couple of lights and three wall controls. I'm interested in seeing more capabilities here so I'll work on helping to flesh this out. Are you just packet sniffing your local network to see what the wall control or mobile app sends for sorting out the command format(s)?

I've been PMing @chief.parrott about it - he's done a lot of the network sniffing (just like you described) and has found a lot of the commands. I was on vacation so I haven't had time to work on it, but getting back into it now. Just pushed an update that should use your correct subnet now!

I'm considering a Haiku fan and would like to potentially include in HE. There seem to be lots of links to people who have figured out how to control the fans.

The SmartThings driver author can't get 2 way communication working (not sure if that's an issue in Hubitat).

Here's one for Indigo (Mac) that seems to be pretty complete
http://bruce.pennypacker.org/category/haiku/

From what I've seen Haiku fans and lights only send state/status changes to cloud-based controls like Alexa and Google Assistant, which makes sense as I think they both require active state reporting. That's likely hard to "sniff" due to authentication. Haiku stuff do not seem to broadcast changes locally except to an active/persistent TCP connection (like sending commands from Packet Sender w/Persistent TCP enabled). The solution for local "two-way" comms on any hub platform is probably persistent TCP or periodic queries.

Just checked out the latest build. Subnet is automatically detected now. Nice!

Two observations on Haiku device selection:

  • A field to select detect Timeout might be useful. Three seconds works for a few devices; A user with more might want two or three times that so they're all found on the first attempt.
  • Select Device field displays all Haiku devices including Wall Controls. I haven't found any useful commands for those except button configuration and changes can get reset by the Haiku Home app. I'd recommend filtering out devices of type [SWITCH,SENSEME].

The Fan Set Speed control works now, which IIRC wasn't working for me before. The default speed options don't align with the Levels 0-7 of the fan, but it's a start.

It would be great if there were both Level (0-7) and Percent (0-100%) speed controls. Messing with Alexa/Assistant control, speed can be set below "Level 1" using percent commands, great for moving air but not so much that it makes a breeze. The info I PM'd before about scaling should allow for this if a control input can be made for it. Same should work for lights, too, though they have Levels 0-16 and the effect below default Level 1 is less noticeable.

Debug logging also seems more reliable now. I'm seeing a lot more info in the logs than before... Though that may also be related to the HE update that was just installed.

Looking forward to seeing where this goes!

The Indigo developer explains the communications both ways, via iPhone, not cloud.
http://bruce.pennypacker.org/2015/07/17/hacking-bigass-fans-with-senseme/

There is also a Control4 3rd party extension that does 2 way communication.

So it is possible, just not sure about with within Hubitat. And not I'm not a programmer :slight_smile:

I suppose I could have been more clear.

For a given command, Haiku does appear to send one (sometimes more, for some reason) response confirming the action. So confirming a command made from HE or another hub is pretty simple.

It's getting "active" Haiku device state changes to HE (or other hubs) when it is changed from some other source (Scheduling, Smart/Smarter modes, IR remote, Alexa/Assistant, Haiku Home app) so HE (or another hub) can reflect or if desired respond to that change, that would be challenging. That's where either an active TCP connection or periodic queries would make for a more interactive and responsive experience.

FWIW, I'm not a programmer, either. Just a passable data detective, when I can dig up the right tools and system communications aren't overly obscure.

Just gave this a try and get an error loading the driver code (HE v2.0.8):

Indirect import checks prevents usage of expression Importing [java.net.DatagramSocket] is not allowed

Any thoughts?

Looks like the 2.0.8 update disabled the usage of DatagramSocket (using it for UDP) :frowning: I'll take a look at it this week and find another solution.

Recently I've added some Hue lights to the kitchen, where I have four Haiku Home ceiling lights replacing pot floods. I have to say, the flexibility and voice control of the Hue lights puts Haiku to shame. It would be cool in combine the two into scenes Hubitat could control.

Any updates?

Following...

Sorry, it's been a busy few months for me! Planning on taking another shot at this soon.

1 Like

This is great news as it's the last piece of my puzzle to move to Hubitat. Really appreciate your effort with this project.

Sweet! Looking forward to that and appreciate the support.

Spent some time on this tonight - I can probably get it working, but you'll have to manually enter the IP address of the fan instead of the selector I had written before. Haiku fans send their response back on port 31415, so I need a way to listen for UDP packets. It's frustrating to say the least that all the work I put into that is gone because Hubitat decided to release a non-passive change stripping standard library usage in what seemed like a routine update.

The driver has been updated to accept a device IP and name. To get the name:

(these instructions are using netcat, if you are using Windows and don't have it, just install Windows Subsystem for Linux)

  1. netcat -kluv x.x.x.x 31415 where x.x.x.x is your computer's IP. Keep this running and open another terminal.
  2. echo -n "<ALL;DEVICE;ID;GET>" | netcat -4u 192.168.1.255 31415. You should see responses from all of your Haiku devices.

I don't know how/if netcat can show what IP the responses came from, but you can at least use the MAC address that comes back to look it up in your router settings.

The driver should work now for the functionality it previously had with light/fan controls. I'll continue to update it in the coming months.

I realized my instructions were a little convoluted for finding the name. It's just the name of your device in the Haiku app, e.g. "Office Fan". You can always look through your router's connected devices and just guess at the IP too :slight_smile: