Unable to learn dyson remote

So I’m going to walk you through what I did in the app first, and then how i relabeled things via cURL.

  1. Open BOND Home app, press “+” and select “Device Control”.
    (if you have multiple BOND Bridges in your home, choose the one which will have IR line of sight to your Dyson)
  2. Select “Ceiling Fan”.
  3. Assign “Location” and “Device Name” as appropriate, then press “Continue”.
  4. Choose “Winter”, hit “Advanced Settings”.
  5. Choose “Signal Type” of IR and toggle OFF “search remote database”, then hit “Save”.
  6. Click “Start” and press the blue dot on your remote once (BOND Bridge should blink green).
  7. Test it and click “Yes, it works!” if it successfully toggles back and forth between heat and cool modes (just like pressing the blue dot button on the OEM Dyson remote itself does).
  8. Repeat steps 6 and 7 for each of “Summer” (heat up / red dot button on remote), “Breeze” (heat down / red circle button on remote), “Reverse” (oscillate button on remote), “Toggle Bottom Light” (narrow angle focus breeze button on remote), “Toggle Power” (power button on remote), “Increase Speed” (fan speed up / larger white circle button on remote), “Decrease Speed” (fan speed down / smaller white circle button on remote), “Timer Off” (timer button on remote), and “Toggle Top Light” (wide angle breeze button on remote).

Now we need to rename things because we kind of flexed some commands from the ceiling fan class to do Dyson specific things. I suppose this is optional since it is tedious, but it should vastly improve your user experience I think.

  1. Open cURL, and find the new device ID for the AM04 you just created in step 3 above.
  2. For each command in v2/devices/newDeviceID/commands/, call it out first with a normal GET command to see what the description and action currently is (replacing the BOND-Token, BONDBridgeID, newDeviceID, and currentCommandID as appropriate):
    curl -H "BOND-Token: xxxxxxxxxxxxxxxx" http://BONDBridgeID.local/v2/devices/newDeviceID/commands/currentCommandID
  3. Once you have identified the action, come up with what you’d like to name it in the app, and then use -X PATCH -d as indicated below (" marks are designated as used on a Windows based system; adjust as necessary for Linux/Apple):
    curl -H "BOND-Token: xxxxxxxxxxxxxxxx" http://BONDBridgeID.local/v2/devices/newDeviceID/commands/currentCommandID -X PATCH -d "{\"name\":\"Blue Dot\",\"action\":\"SetDirection\"}"
    Make sure to keep the same action value, but feel free to change the name. This is my replacement for the “Winter” command, for instance.
  4. Repeat steps 2 and 3 for each command, updating the name as you see fit for any and all.
    Might help to have a notepad or equivalent window open to keep track of each of the commands as you enumerate and rename each one. If you forget which command does what you can reference my list above (if you followed it directly), or obviously pressing the button in the BOND Home app and watching your AM04’s reaction is an option. :slight_smile:

@jacob : I have trouble PATCHing commands such as Reverse, Toggle Top Light and Toggle Bottom Light. I seem to be running across this with only commands when argument is null, but I am not certain if that is the only difference. This issue persists across Windows and Linux, cURL or Postman.
curl: (56) Recv failure: Connection was reset
The way I get around that is by POSTing a duplicate of the command (and its signal node) I want with the proper naming convention, then DELing the command that won’t accept a PATCH.

You end up with this (after some amount of time and effort):

1 Like