Guide: CW Power Smart Shutters on 433.4Mhz / Control via RM4 pro in Home Assistant

Guide: Integrating CW/PowerSmart Roller Shutters with Home Assistant & Broadlink (433.42 MHz)

Hi everyone, I wanted to share a guide on how I successfully integrated CW Products (PowerSmart / SolarSmart) roller shutters into Home Assistant using a Broadlink RM4 Pro.

:rotating_light: The Problem

These shutters operate on a specific frequency: 433.42 MHz (Rolling Code / Manchester encoding). - tech specs here - https://wpstaq-ap-southeast-2-media.s3.amazonaws.com/cwproducts/wp-content/uploads/media/2023/02/PowerSmart_M2M_Factsheet_2023.pdf
Standard Broadlink RM4 Pro units are tuned to 433.92 MHz.

While the Broadlink hardware can transmit at 433.42 MHz, the standard Home Assistant remote.learn_command service often fails. It scans for the standard frequency and times out before it can “lock on” to the specific offset of these shutters.

:white_check_mark: The Solution: “The App Handoff Trick”

To successfully learn the codes, you must use the official Broadlink App to “tune” the device first, and then immediately trigger Home Assistant to capture the data.

Prerequisites

  • Broadlink RM4 Pro device.
  • Home Assistant with the Broadlink integration installed.
  • Broadlink App installed on your phone.
  • Original CW Remote (You may need to buy or borrow one if yours is lost).

Step-by-Step Learning Procedure

1. Prepare the Broadlink App (Tuning)

  1. Open the Broadlink App on your phone.
  2. Select your RM4 Pro device.
  3. Choose “Add Remote” → “User Defined” (or similar).
  4. Select “Learn” (or add a button).
  5. Hold the Remote Button: Follow the app prompt to hold the remote button. Wait until the App says “Frequency found” or “Press button to learn”.
  6. STOP! :stop_sign: Do not proceed in the App. Leave the App waiting on that screen.
    • Why? The Broadlink is now “locked” onto 433.42 MHz.

2. Trigger Home Assistant

  1. Go to Developer Tools → Actions (Services).
  2. Select remote.learn_command.
  3. Target: remote.broadlink (your entity).
  4. Command: up (or down, stop).
  5. Device: cw_shutters.
  6. Click Perform Action.

3. Capture the Code

  1. Immediately short press the button on your physical remote.
  2. Home Assistant should capture the packet instantly (Green checkmark).

4. Verify
Check your .storage folder in HA (requires File Editor addon with dirs_filter unhidden). You should see a file broadlink_remote_XXXXXXXX_codes containing the Base64 code.

Thanks to Guide: How to learn broadlink RF codes - #205 by API-kernel for the info

:battery: Remote Pairing Sequence (The “Battery Logic”)

If you bought a NEW remote and need to pair it to your existing shutter motor, you can’t just press a button. You need to follow this specific “power cycle” sequence

  1. Power Cycle Sequence:

    • Pull battery OUT for 3 seconds.
    • Put battery IN for 3 seconds.
    • Pull battery OUT for 3 seconds.
    • Put battery IN for 3 seconds.
    • Wait 6 seconds.
  2. Enter Pairing Mode:

    • Hold STOP on the remote for 5 seconds.
    • The light on the remote will flash, then stop flashing and go solid.
  3. Confirm Pairing:

    • Push UP.
    • Wait 2 seconds.
    • Push UP again.
    • *The shutter should move on the fist up command, confirming pairing. but down forget you need a second UP command to finalise the pairing within 2 seconds

:keyboard: Working Codes (Broadlink Base64)

If you cannot perform the “App Trick”, you can try manually adding these codes to your .storage/broadlink_remote_..._codes file (or use remote.send_command with b64: prefix).

Click to Expand Broadlink Codes

UP Command

sMBQApScBgAFGQ4IBwYIBggGCAYHDw4GCA0IBggHDg4HBw0IBwcHDgcHBwYIBwcGBwgODQ8ODgcHDQgHDg4ODg4ODg4HBw4HBwcHDg0JBg4GCQYHDQkGBwcHBwcHBwcODg8NDggGDgAB4gUaDgYIBwcGBwgHBwcODgYIDgcGBwgODQgHDgYIBwcNCAcHBggHBwcHBg8NDw4OBwcOBggODg4ODg4ODgcHDgcHBwcODgcHDgcHCAYOBwgGBwcHBwcHBw8NDg8NBwgNAAHjBRoOBggHBwYHCAcGCA4OBggOBwYHCA4NCAcOBggHBw0IBwcGCAcHBwcGDw4ODg4HBw4HBw4ODg4ODg4OBwcOBwcHBw4OBwgNBwcHBw4HBwcHBwcIBgcHDw0ODg4HCA0AAeMFGg4GBwgHBgcHCAcHDQ8GCA4HBggGDw0HCA4GBwgHDQcIBwcHBggHBwYPDg8NDgcIDQcHDg4ODg8NDg4HBw8GBwcHDw0HCA0HBwgHDQcIBwYHBwgHBwYPDg0PDQcIDQAB5AUaDgYHCAcGBwcIBggNDwYHDwcGBwcPDQcIDgYHCAcNBwgHBgcHCAcHBg8NDg8OBggNCAYPDQ8ODQ8ODgcHDQgHBwcODgcGDwcHBggOBwYIBwcGCAcHBw4ODg4OBwcOAAHjBRoNBwcIBgcHBwgHBg4PBgcPBwYHBw8NBwgNBwcIBw0HCAcGBwcIBwYHDw0ODw0HCA4GBw8NDw4NDw0PBwcNCAcHBg8OBwYPBwcGCA4HBwcHBwYIBwcHDg4ODg4HBw4ABdw=

STOP Command

sMBQApScBgAGGQ8GBwcIBggGBwcIDQ8GCA0IBggGDw0HBw8GBwcIDQcHCAcHBgcIDQcHDw0PDQcHDwcHDg4NDw0PDg0IBw0HCAcHDg4HBg8HBwYHDwcHBwcHBwcHDgcHDg4ODgcHDgAB5AYYDwcGBwgHBwYHCAcNDwcHDQgHBwYPDgcGDwcHBggOBwYIBwcHBwcOBwcODg4OBwcOBwcPDQ4ODg8NDggHDQcIBwYODgcHDwcGBwcPBgcHCAcGBwcPBgcPDQ4PBgcPAAHrBRkPBwcGCAcHBgkGBw0PBwcOBwcHBw4OBwcOBwcHBw4HBwcHBwcIBg4HCA0ODg4HCA0HBw8NDw0ODg4PBwYOCAcGBw8NBwcPBgcHCA0HBwgHBwYHCA4GBw8NDw4GBw8AAcsEGg4HBwcHBwcHBwcHDg4HBw4HBwcHDg4IBg4HCAYHDggGBwcHCAYHDggGDg8NDggGDgcIDQ4PDQ8NDg8GBw8HBgcHDw0HCA4GCAcHDQgHBwcHBggHDgYIDg0PDgYIDgAByQQaDggHBgcHCAcJBAcODgcIDQcHCAcNDwcGDggHBwYPBwcGBwgHBwYPBwcNDw0PBwcNCAcODg4NDw4ODgcHDgcHBwcODQgHDgYIBwcOBwcHBwcHBwcOCAcNDw0OBwgNAAHlBBoOBwcHBwcIBgcHBw4OBwgNBwcIBw0PBgcOCAcGBw8HBgcHCAYHBw8HBg4PDQ8HBg4IBw0PDQ4PDQ8OBgcPBwYHCA4NCAcOBggHBw0IBwcGCAcHBw0IBw4ODg0IBw4ABdw=

DOWN Command

sMBQApScBgAFGg4GCQYHBggHCAYHDg4NCQYHBwcHDg0JBg4HCAYHDggGBwcHCAYHDggHDQ8NDggGDgcIDQ4ODg8ODQ8NBwgHBgcHDw0IBw4GCAcHDQgHBwcGCAcHDQgHDg4ODgcHDgAB4wUZDggHBgcHCAcHBggODg4HBggGCAcODgcGDwcHBwcOBwcHBggHBwcOBwcNDw0PBwcOBwcODg4ODg4ODg8GBwcHCAYODwYHDggGBwcPBwYHBwgHBgcPBwYODw0PBwYOAAHmBhgPBwcGCQYHBwcHBw4PDQcHCAYHBw8NBwYPBwcHCA0HBwgGBwcHBw4HBw4ODw0HBw4HBw8NDg4ODw0PDgYHCAcHBg8OBgcPBwYHBwgHBgcHBwcHBg8ODg4HBg8AAeIFGg4GCAcHBwcGCQYHDQ8OBwcIBgcGDw4HBw4HBwcIDQcHCAYHBwgGDgcIDQ8NDggHDQcIDQ4PDQ8NDg8NBwgHBgcHDw0HCA4GBwgHDQcIBwcGBwgHDQcIDg0PDgYIDgAB4gUaDgYIBwcGCAcHBggODg0IBwcGCQYODgcHDgcHBwcOBwcHBgkGBwcPBgcNDw4PBgcOCAYODw0ODg4PDQ4IBgcHBwgNDggGDgcIBgcOCAcGBwcIBwYOCAcNDw0PBwcNAAHkBRkPBwcGBwgHBggGCA4ODgcGCAcHBw4OBwYPBwcHBw4HBggHBwcHBg8HCQwODg4HBw4HBw4ODg4ODg4ODgcHBwgHBg4PBgcPBwYHBw8GBwcIBwYHBw8GBw8ODQ8GBw8ABdw=

PAIRING Signal (Hold Stop 5s)
Use this if you need to simulate holding the STOP button for 5 seconds to initiate pairing on the motor.

sMCwBJScBgAHGA8GBwcIBggGBwcIDQ8GCA0IBwcGDw0HBw8HBwYHDwcGCAcHBgcIDgcGDw4ODgcGDwcHDQ8NDw4NDw4GCA4HBggHDg4HBw0IBwcHDgcHBwYIBwcHDgcHDQ8ODgcHDQAB5AUZDggHBgcHCAYIBgcODgcIDgcGCAcODgcHDgcHBwcOBwcHBgkGBwYPBwcNDw4PBgcNCQYODg4NDw4PDQcHDgcHBwgNDggGDgcIBgcOCAYHBwcIBgcOCAYODw0OCAcNAAHkBRkOBgkGBwcHBwgGBw4OBwcOBwcHBw4OCAYOBwgGCA0IBgcHBwgHBg4IBw0PDQ4IBw0HCA4NDw0PDg0PBwcOBwcHBg8OBggOBwYIBw4GCAcHBwcHBw4GCA4ODg4HBw4AAckFGg4GCAcHBggHBwcHDg4GCA4HBwcHDg0JBg4GCQYHDQkGBwcHBwcHDgcHDg8NDgcHDgcHDg4PDRELDg8GBw8HBgcHDw0HCA0HBwgGDgcIBwYHBwgHDQcIDQ4PDQcIDQABzgUZDggHBggGCAYIBggODgYIDQgGCAcODgcGDwcHBwcOBwcHBggHBwYPBwcNDw4OBwcNCAcODg4NDw4ODgcHDgcHBwcODgcHDgcHBwcOCAYHBwcIBgcOCAYODw0OCAYOAAHrBhkOBwgGBwYJBgcHBw4OBwgNBwcIBg4PBwYOCAcGBw8HBgcHCAcHBg8HBw0PDQ8HBw0IBw0PDg0PDQ8OBwYPBwcGCA4NCAcOBggHBw0IBwcHBggHBw0IBw4ODg4HBw4AAeMFGQ4HCAYHBwcHCAYHDw4GBw4IBgcIDg0IBg8GCAcHDQgHBwYHCAcGDggHDQ8ODQgHDQcIDg0PDQ8ODQ8HBw4HBwcGDw4GCA4HBggHDgcHBwcHBwcHDgcHDg4ODgcIDQAB4wUZDgYIBwcHBwYJBgcNDwcHDgcHBwYQDQcHDgcHCAcNBwcIBgcHCAYOBwgNDg8NBwcOBwcPDQ4ODg8NDggHDQcIBwYODwYHDwcGBwcPBgcHCAcGBwcPBgcPDg0PBwYPAAHjBhgPBwcGCQYHBggHBw0QBgcNCQYHBhANBwYPBwcGCA4HBggHBwcHBg8HBw4ODQ8HBw4HBw4ODg8NDg4OBwgNBwcIBg4PBwYOCAcGBw8HBgcHCAcHBg8HBw0PDQ8HBw0AAeMFGg4HBwcHBgkGBwcHDg4GCQ0HBgkGDg4HBw4HCAYHDggGBwcIBgcHDwYHDg8NDwcHDQgHDQ8ODQ8NDw4GBw8HBgcIDg0IBw4GCAcHDQgHBwcGCAcHDQgHDg4ODQgHDgAB4wUaDgYIBwcGCAcHBwcODgYIDgcGCAcODQkGDgYIBwcNCQYHBwcHBwcOBwcODw0OBwcOBwcODg4ODw0ODgcHDwYHBwcPDQcIDQcHCAcNBwgHBwYHCAcNBwgODQ8NBwgOAAHjBRoOBgcIBwYIBggGCA0PBggOBwYIBg8NCAcOBgcIBw0HCAcHBwYIBw4GCA4ODg4GCA4HBg8ODg4NDw4OBwcNCAcHBw4OBwcOBwcHCA0HBwgGBwcHCA0HBw4ODw0HBw8AAeQFGQ8GBwcIBggGBwcIDQ8GBw4IBg==

How to Create Shutter Buttons in Home Assistant (Beginner’s Guide)

So you have your Broadlink RF codes (those long text strings ending in ==), but how do you turn them into clickable buttons on your dashboard?

This guide will walk you through creating Scripts for the commands and then adding Buttons to your dashboard.


Part 1: Create the Scripts

A “Script” is just a saved action. We need one script for UP, one for STOP, and one for DOWN.

  1. Copy the Code: Get your Base64 code ready (e.g., the long UP string).
  2. In Home Assistant, go to Settings → Automations & Scenes → Scripts tab.
  3. Click + Add Script → Create new script.
  4. Name: Enter “CW Shutter UP”.
  5. Icon: Choose an icon like mdi:arrow-up-box.
  6. Sequence (The Action):
    • Click Add Action.
    • Search for and select Remote: Send command.
    • Entity: Choose your Broadlink device (e.g., remote.broadlink_rm4_pro_remote).
    • Device: Type cw_shutters (this is just a label, can be anything).
    • Command: Paste your code here. IMPORTANT: You must add b64: before the code!
      • Example: b64:sMBQApScBgAFGQ4IBwYIBgg...
  7. Click Save Script.

Repeat this for STOP and DOWN.


Part 2: Add Buttons to Dashboard

Now we put those scripts on your main view.

  1. Go to your Overview (Dashboard).
  2. Click the Pencil Icon (Edit Dashboard) in the top right.
  3. Click + Add Card (bottom right).
  4. Search for Button.
  5. Entity: Delete what’s there and type script.cw_shutter_up.
    • It should auto-complete to the script you just made.
  6. Name: “Shutter UP”.
  7. Icon: It should auto-load the one you picked, or you can pick a new one.
  8. Tap Action: Leave as “Run script”.
  9. Click Save.

Repeat for STOP and DOWN.

  • For STOP, use script.cw_shutter_stop
  • For DOWN, use script.cw_shutter_down

Part 3: (Optional) Make it Look Nice

If you want them in a row (instead of a big column), use a Grid or Horizontal Stack card.

  1. Add Card → Horizontal Stack.
  2. It will ask you to add cards inside the stack.
  3. Add a Button for UP.
  4. Add a Button for STOP.
  5. Add a Button for DOWN.
  6. Save.

Now you have a neat row of controls! :tada:

I did try and convert the flipper Z commands from their github but i had no luck.

for reference here is the post - [New Protocol] CW Products PowerSmart / SolarSmart Roller Shutters RF433.43 Raw Captures - Sub-GHz - Flipper Forum

here is also photos of the devices courtey of that post and some of my own.?

the remote used was a single channel Optima 41-600-001 433.4mhz