Best practices with DC motor "smart" fans

I’m doing research for our new house, which we’re gut renovating to the studs and replacing all of the systems. In my current house, I’ve been testing one of our ceiling fans with an Inovelli Blue fan controller, and I like it a lot.

Now that we’re starting to think about finishes in the new place, I’m discovering that most of the ceiling fans we’re interested in have DC motors and remotes, and thus won’t be compatible with the Inovelli fan controller. Which is a shame, because I hate remotes and would love to have an in-wall control that won’t get lost or have dead batteries.

But a few of the more expensive fans we’re looking at (e.g. this one) have Smart by Bond wifi controllers, and that gave me an idea.

I could have one of those fans wired to an Inovelli switch and have Home Assistant coordinate between the Zigbee commands and the HA Bond integration, which apparently is pretty good.

I assume for a setup like this I’d want to use a regular 2-1 switch and not a fan control. Probably in smart bulb mode so the wifi fan controller never loses power.

Has anyone set something like this up? Is there any reason it wouldn’t work or I might regret doing it?

Regular 2-1 switches are not rated for inductive loads (which fans are). You’ll want to use a Fan Switch and put it into Smart Fan Mode (which is the equivalent to Smart Bulb Mode but for fans).

The only caveat with this setup is that you won’t have any fan control if Home Assistant is down.

2 Likes

Thanks for the answer. I wasn’t sure if having a DC motor changed the requirements, so I’m glad I checked.

Understood about the fragility with Home assistant going down – that’s why I’ve been doing direct Zigbee bindings between my switches and lights as much as possible. But I think there’s no way to avoid it in this scenario. Luckily if it does briefly go down, I’d still be able to turn it on/off at the wall via airgap, and the original remote would still work to change speed.

Id consider the upcoming scene controller without the fan connected to it so you can do buttons for the different functions/speeds.

You can use a 2-1 as a controller by wiring power directly to the fan and not putting a load on the switch. Run the fan wiring through the switch box so it can be changed to different wiring later.

Interesting idea, but I think in my case I’ll stick with the fan switch so I’ll have an easy way to cut power to the fan without shutting it off at the breaker.

@jncasey - I’m actually looking to do the exact same thing (Bond sync with smart switch; DC fan). Did you wind up setting this up? If so, how’d it go, and which Inovelli switch did you wind up using?

We’re still weeks out from fan/switch installation in our renovation (drywall just finished last week), so I haven’t tested it in practice yet. But our plan is still to use a Smart by Bond DC fan and an Inovelli fan switch in smart fan mode, with Home Assistant doing the translation.

I won’t be able to rig up any of the HA automations until we move (in August, fingers crossed). But I don’t think it’ll be too hard to set up.

I’m receiving a Minka Aire outdoor fan tomorrow and the Bond controller sometime next week. I’ll give it a shot and report back!

I’m really trying to figure out whether just routing the line through a standard Blue switch, and not connecting load, would be problematic. Personally, I’m fine with it just always being “on” and treating the switch as a smart control only. I don’t know the internals of these switches and I’m not an electrician, though, so I’m not sure whether routing through the switch’s line would be bad or not.

As long as the fan is connected to the line terminal and not the load on a standard blue switch, this is fine. It’s the equivalent of tying it in via a wire nut.

That was my assumption, but I wasn’t sure. Thank you for letting me know!

Is there a reason you want to handle “always on” via wiring and not by putting the switch in smart fan mode?

Doesn’t the latter do what you’re after while also giving you the ability to change it back without rewiring or even shutting off the breaker?

I think I’m going to use a non-fan Blue switch for this for a few reasons. The main reason is that I have some extra non-fan Blue switches laying around that I’d like to use for it.

The fan switch is also more expensive than standard and has a different “UX”. Since neither is DC compatible, I won’t be connecting load regardless so they’re otherwise more-or-less identical. The fan switch/user experience is designed around 3 speeds (min/medium/max) on up/down which basically just sets the dimmer to 33/66/100 levels, and my fan has 6 so I may as well just write my own automations that can set arbitrary values between 0 - 100 on the normal switch (and dim between 0 - 100 from switch presses, unlike fan switch’s defaults which use 33/66/100, though that’s configurable via zigbee params).

As for switching it out without rewiring, if I switched this out with something that required a re-wire, I’d likely be putting an AC fan onto it with a fan switch at that point anyway and I’d want to be connecting load at that point. Accessing my switches gang boxes isn’t really that big of a hassle anyway, so it’s not a real concern. Sure, if I went that route I’d need a fan switch so it’d be a bit more of a hassle, but I don’t mind crossing that bridge if/when I get there.

tl;dr: I think either would be fine and would perform identically in “smart” mode (without load) after configuration anyway, but I have extra blues sitting around and rewiring (if necessary) isn’t a big deal to me.

1 Like

Ah! I missed that you wanted to use a regular 2-1. Makes total sense now.

I wound up doing this last night. It works great! Using the Bond controller with a Minka Aire “Xtreme H2O” fan and a Blue VZM31-SN.

I wired the switch as described above (just passing through the Line). I used the following automation to synchronize states between the fan entity and the light:

alias: Courtyard Fan Switch Sync
description: ""
trigger:
  - platform: state
    id: Fan Entity Speed Change
    entity_id: fan.courtyard_fan
    attribute: percentage
  - platform: state
    id: Switch Entity Change
    entity_id: light.courtyard_fan_switch_light
    attribute: brightness
condition: []
action:
  - if:
      - condition: trigger
        id:
          - Fan Entity Speed Change
    then:
      - service: light.turn_on
        data:
          entity_id: light.courtyard_fan_switch_light
          brightness_pct: "{{ state_attr('fan.courtyard_fan', 'percentage') }}"
      - delay:
          milliseconds: 200
  - if:
      - condition: trigger
        id:
          - Switch Entity Change
    then:
      - variables:
          set_fan_speed: "{{ trigger.to_state.attributes.brightness | int(0)*100//255 }}"
      - service: fan.turn_on
        data:
          entity_id: fan.courtyard_fan
          percentage: "{{ set_fan_speed }}"
      - delay:
          milliseconds: 300
      - service: light.turn_on
        data:
          entity_id: light.courtyard_fan_switch_light
          brightness_pct: "{{ state_attr('fan.courtyard_fan', 'percentage') }}"
      - delay:
          milliseconds: 200
mode: single

The switch is in dimmer mode (and, obviously, “smart bulb” mode). When the level is changed on the switch, it’ll round up to the next highest speed (e.g. 57% on switch will cause the fan entity to set to 66%, and then the switch state will update to match; this fan is a 6 speed fan, so the increments are nice).

For bonus points, I found a blueprint that ties into Accuweather for a temp sensor and will set the fan speed to match what I want for the outside temps (since I’m using this fan in an outdoor courtyard).

In the end, I’m really happy with this configuration and it works great!

The only downside is that the Bond controller doesn’t seem to listen to RF commands, so the stock fan remote won’t mirror states. If I set the fan speed using it, HA will be out of sync. But, really, it’s ugly and I don’t think I plan to use it much (if at all) anyway. Smart phone/switch/automations do everything I need there.

1 Like

Thanks, I’ll file this automation away for later.

I’m hoping to avoid the remote sync issues since we’re using fans with Smart by Bond Wifi-based controllers instead of the Bond RF blaster. But like you said, if I can control the fan from the wall and HA, I don’t think I’ll need the dumb remote.

The renovation took 6 months longer than expected, but we’re finally in the new house and last night I got the Bond fans online and talking to the Inovelli fan switches. Based on your script reference, I made myself a blueprint to sync a bond fan to a mqtt fan controller (see below).

It’s working pretty great! (Though below freezing outside, so not much call for fans today). My only minor quibble is that the Inovelli fan controller is limited to 3 speeds, but my fans support 6. Still, not sure how much granularity I actually need in my fans. I guess using a normal 2-1 dimmer as a controller would give access to all the speeds, though wouldn’t show as a fan in HA.

blueprint:
  name: Inovelli Blue Series VZM35-SN Fan Switch & Bond Fan Sync
  description: Syncs the state of an Inovelli Blue Series VZM35-SN Fan Switch and a Bond Fan entity.
  domain: automation
  input:
    fan_switch_id:
      name: Inovelli Switch
      description: Inovelli VZM35-SN switch
      selector:
        entity:
          filter:
            domain: fan
            integration: mqtt
          multiple: false
    fan_entity_id:
      name: Bond Fan
      description: Bond Fan entity
      selector:
        entity:
          filter:
            domain: fan
            integration: bond
          multiple: false
mode: single
max_exceeded: silent
triggers:
  - trigger: state
    entity_id: !input fan_entity_id
    attribute: percentage
    id: Fan Speed Change
  - trigger: state
    entity_id: !input fan_entity_id
    to: "on"
    from: "off"
    id: Fan Speed Change
  - trigger: state
    entity_id: !input fan_switch_id
    attribute: percentage
    id: Switch Speed Change
  - trigger: state
    entity_id: !input fan_switch_id
    to: "on"
    from: "off"
    id: Switch Speed Change
  - trigger: state
    entity_id: !input fan_entity_id
    to: "off"
    from: "on"
    id: Fan turns off
  - trigger: state
    entity_id: !input fan_switch_id
    to: "off"
    from: "on"
    id: Switch turns off
conditions:
  - "{{ trigger.from_state.state not in ['unknown', 'unavailable'] }}"
  - "{{ trigger.to_state.state not in ['unknown', 'unavailable'] }}"
actions:
  - variables:
      fan_switch_id: !input fan_switch_id
      fan_entity_id: !input fan_entity_id
  - sequence:
      - choose:
          - conditions:
              - condition: trigger
                id:
                  - Fan Speed Change
            sequence:
              - action: fan.turn_on
                metadata: {}
                data:
                  percentage: "{{ state_attr(fan_entity_id, 'percentage') }}"
                target:
                  entity_id: !input fan_switch_id
          - conditions:
              - condition: trigger
                id:
                  - Switch Speed Change
            sequence:
              - action: fan.turn_on
                metadata: {}
                data:
                  percentage: "{{ state_attr(fan_switch_id, 'percentage') }}"
                target:
                  entity_id: !input fan_entity_id
          - conditions:
              - condition: trigger
                id:
                  - Fan turns off
            sequence:
              - action: fan.turn_off
                metadata: {}
                data: {}
                target:
                  entity_id: !input fan_switch_id
          - conditions:
              - condition: trigger
                id:
                  - Switch turns off
            sequence:
              - action: fan.turn_off
                metadata: {}
                data: {}
                target:
                  entity_id: !input fan_entity_id

If you use a dimmer switch instead, you can use a Template Fan to map from light to fan with the number of speeds you want.

Example (for a 3 speed fan): homeassistant-config/packages/living_room/living_room_lights.yaml at d437609ea9166518ea3b62c8c61237b1ca888daa · rohankapoorcom/homeassistant-config · GitHub

1 Like

Is there any solution to control a DC fan that will work in the case where HA is unavailable?

I’m not aware of any fans that support Zigbee or Z-wave so you can set up direct binding to a dimmer (I looked last year when I was shopping around).

If the fan doesn’t speak the switch protocol, you’re going to need a third party like HA to translate.

In practice for me, HA is only ever down for a few minutes at a time during system updates, but otherwise has been rock-solid for a couple years.

Thank you for the reply… now time for me to ask a super stupid question that I think I know the answer to: Are there any DC ceiling fans that can be controlled via hardware, not software by driving it with a PWM input? I can then have a simple circuit in the switch that handles the pulse width and worry about adding z-wave/zigbee on top of that later… My first priority is to have a switch that works in all types of network situations… read: the family can never know its a smart switch thats dependent on anything but simple power to the house.

I know smaller DC motors use pulse width modulation, but thats when driven with a DC signal, and I am aware that I’d have to run additional wire to account for that if it exists in a ceiling fan…

Thanks,
Chris