Has anyone managed to get a Dyson AM07 integrated into hass? If so, how? I was thinking of an ir blaster somehow but seems Dyson codes are notoriously hard to find and seem to change; I’d also have no idea how to set this up! Any ideas?
I imagine you could use a Broadlink switch device.
They’re pretty cheap on Amazon if you’re in the US: https://smile.amazon.com/BroadLink-Control-Universal-Remote-RMMINI3-EN/dp/B01FK2SDOC/ref=sr_1_2?ie=UTF8&qid=1501537533&sr=8-2&keywords=broadlink+rm
If you’ve got an existing dyson remote you could just copy its codes using this Broadlink device.
Thanks! So to clarify, home assistant would see the broadlink and it’s then the broadlink that sends the ir signal to the fan? Would the dyson remotes codes go on homeassistant or the broadlink or both? Unfortunately it ships from China as I’m in the UK so might look for an alternative. I know dyson cycles in sets of 3 codes or something so it might not be straight forward.
Yes, home assistant can use the broadlink as a “switch”, telling the broadlink to send IR commands when “switched on”. I don’t actually own one of these devices but I do plan on buying one in the near future. It looks like that sort of detail is documented on the component page I linked to above but I’m not sure exactly how it all works.
Maybe someone who already owns this device can chime in.
I know plenty of people already use this device on this forum for very similar purposes.
I use a harmony remote and just set up the device commands as scripts for power toggle, speed +/-, and oscillate. It works well except the Dyson has no discrete codes for power on and off so it’s just a power toggle.
Hi, does somebody have an example fan template for a Dyson AM02 IR-controlled via Broadlink?
Sorry to resurrect an old thread but I’ve finally got around to doing this after 5 years haha! Here’s what I ended up with.
fans.yaml:
- platform: template
fans:
office_fan:
friendly_name: "Office Fan"
unique_id: office_fan
value_template: "{{ states('input_boolean.office_fan_power') }}"
percentage_template: "{{ states('input_number.office_fan_speed') }}"
oscillating_template: "{{ true if is_state('input_boolean.office_fan_oscillate', 'on') else false }}"
turn_on:
service: script.office_fan_on
turn_off:
service: script.office_fan_off
set_oscillating:
service: script.office_fan_oscillate
data:
oscillating: "{{ oscillating }}"
set_percentage:
service: script.office_fan_speed
data:
percentage: "{{ percentage }}"
speed_count: 10
scripts.yaml
office_fan_oscillate:
alias: Office Fan Oscillate
sequence:
- service: remote.send_command
data:
device: office_fan
command: oscillate
target:
entity_id: remote.broadlink_rm3_remote
- choose:
- conditions:
- condition: template
value_template: '{{ oscillating }}'
sequence:
- service: input_boolean.turn_on
data: {}
target:
entity_id:
- input_boolean.office_fan_oscillate
- input_boolean.office_fan_power
default:
- service: input_boolean.turn_off
data: {}
target:
entity_id: input_boolean.office_fan_oscillate
mode: single
office_fan_on:
sequence:
- service: remote.send_command
data:
device: office_fan
command: power
target:
entity_id: remote.broadlink_rm3_remote
- service: input_boolean.turn_on
data: {}
target:
entity_id: input_boolean.office_fan_power
- service: fan.set_percentage
data:
percentage: '{{ states(''input_number.office_fan_speed'') }}'
target:
entity_id: fan.office_fan
mode: single
alias: Office Fan On
office_fan_speed:
alias: Office Fan Speed
sequence:
- choose:
- conditions:
- condition: template
value_template: '{{ percentage == 0 }}'
sequence:
- service: fan.turn_off
data: {}
target:
entity_id: fan.office_fan
default:
- choose:
- conditions:
- condition: template
value_template: '{{ ((state_attr(''fan.office_fan'', ''percentage'') - percentage)
| abs) > (states(''input_number.office_fan_speed'') | int(0)) }}'
sequence:
- service: remote.send_command
data:
device: office_fan
command: speed_up
num_repeats: '{{ ((state_attr(''fan.office_fan'', ''percentage'') - percentage)
| abs) / 10 }}'
target:
entity_id: remote.broadlink_rm3_remote
default:
- service: remote.send_command
data:
device: office_fan
command: speed_down
num_repeats: '{{ ((state_attr(''fan.office_fan'', ''percentage'') - percentage)
| abs) / 10 }}'
target:
entity_id: remote.broadlink_rm3_remote
- service: input_number.set_value
data:
value: '{{ percentage }}'
target:
entity_id: input_number.office_fan_speed
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
mode: single
office_fan_off:
alias: Office Fan Off
sequence:
- service: remote.send_command
data:
device: office_fan
command: power
target:
entity_id: remote.broadlink_rm3_remote
- service: input_boolean.turn_off
data: {}
target:
entity_id:
- input_boolean.office_fan_power
- input_boolean.office_fan_oscillate
mode: single
Everything works using a broadlink rm3 after recording the remotes buttons! There is a caveat that I haven’t bothered fixing in that you can turn this fan on by pressing the speed increase/decrease buttons - whilst this does work through home assistant too, I didn’t get the UI to update the “on” status reliably and would often end up with HA saying the fan is “off” when it was “on”! I don’t change the speed of the fan all that often and I usually press “on” first anyway so this isn’t a problem for me. It does work if you “press” oscillate from HA though!
Thought I would share my experience with this in case it helps anyone. Non-smart Dyson fans are… fun to figure out . I’m using a Broadlink RM4 mini as my IR device.
I mainly followed the process in this video for teaching the RM4 the IR commands from the Dyson remote.
I couldn’t get my Dyson AM07 to turn on and off reliably any other way than the following, which is a weird combination of commands and specific time delays:
ON:
- service: remote.send_command
data:
device: guest_fan
command: speed_up
target:
entity_id: remote.guest_broadlink_remote
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
- service: remote.send_command
data:
device: guest_fan
command: speed_down
num_repeats: 10
delay_secs: 0.5
target:
entity_id: remote.guest_broadlink_remote
OFF:
- service: remote.send_command
data:
device: guest_fan
command: speed_up
target:
entity_id: remote.guest_broadlink_remote
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
- service: remote.send_command
data:
device: guest_fan
command: speed_down
target:
entity_id: remote.guest_broadlink_remote
- delay:
hours: 0
minutes: 0
seconds: 0
milliseconds: 500
- service: remote.send_command
data:
device: guest_fan
command: power_off
target:
entity_id: remote.guest_broadlink_remote
Credit to Dyson fan (AM09) - different IR codes each time power button is pressed? · Issue #184 · lprhodes/homebridge-broadlink-rm · GitHub as inspiration for this method.
It also took a couple tries to capture an IR code off the remote that worked for the power_off
command.