Rollease Automate Pulse 2
Controls Rollease Acmeda Automate motorized shades through the Pulse Hub 2 over its on-LAN WebSocket RPC API. Rollease Automate is the motor platform behind a large number of rebadged shade brands, so this driver covers a wide swath of residential and commercial roller/roman/cellular shade installs.
Each shade motor (a "roller") the hub reports becomes a GEM zone with discrete position control and two-way feedback (position, battery token, signal, online state). Once the hub is paired in the app, no cloud connection is used.
Prerequisites
- Pair the hub in the Automate Pulse 2 mobile app first, over Wi-Fi with internet access. The LAN API does not answer until the hub is commissioned.
- Add and name each shade in the app.
- Give the hub a reserved / static IP so its address is stable.
Do not connect the hub to Ethernet before pairing. Rollease's own guidance is that pairing must happen over Wi-Fi; cabling first makes commissioning fail. After pairing, wired or Wi-Fi both work.
Setup steps
- In Admin → Devices, create a device with driver
rollease_automate_pulse2. - Set the required attribute:
- Hub IP Address — the LAN IP of the Pulse 2 hub. Leave Port at
443.
- Hub IP Address — the LAN IP of the Pulse 2 hub. Leave Port at
- Save. The driver opens a secure WebSocket to the hub and requests the current shade shadow.
- Run the
get_devicescommand to list the roller ids the hub reports. - Create one GEM zone per shade with Address = the roller id from
get_devices, and give the zone a friendly name.
Attribute reference
Device attributes
| Attribute | Required | Default | Description |
|---|---|---|---|
ip | yes | — | LAN IP of the Pulse 2 hub. |
port | no | 443 | Secure WebSocket port. |
status_interval | no | 30000 | Milliseconds between shadow refreshes; also keeps the socket alive. |
Zone address
The zone Address is the roller id the hub assigns each motor, exactly as get_devices reports it. Friendly names configured in the app are served over a separate, undocumented port and are not read by this driver — name the GEM zones yourself.
Commands
| Command | Args | Effect |
|---|---|---|
open | address | Fully open the shade. |
close | address | Fully close the shade. |
stop | address | Stop a moving shade. |
set_level | address, level | Move to a position, GEM 0–100 where 100 is fully open. |
get_devices | — | List the roller ids the hub currently reports. |
get_status | — | Return the last reported state for every known shade. |
Position model
The Pulse 2 hub speaks a close percent: movePercent / mp where 0 = fully open and 100 = fully closed. GEM shades use an open level (100 = fully open), so the driver inverts between the two:
- Sending
set_level = LtransmitsmovePercent = 100 − L. - A reported
mpbecomes zonelevel = 100 − mp. opensendsmovePercent: 0,closesendsmovePercent: 100,stopsendsstopShade: true.
This keeps open / close / set_level behaving exactly like every other GEM shade driver.
Telemetry
On each shadow the driver reflects, per shade:
| Zone attribute | Source field | Notes |
|---|---|---|
level | mp | Inverted to an open percentage (0–100). |
state | mp | open when level > 0, else closed. |
battery_status | vo | The hub's raw voltage/type token, surfaced verbatim. |
signal | rs | Radio signal strength as reported. |
| zone connection | ol | Online flag drives the zone's connected state. |
Protocol notes
The connection self-heals: if the socket drops, the driver reconnects with capped backoff (5 s → 60 s) and re-requests the shadow so position state is reconciled.
Known limitations
- No friendly names. Shade names entered in the app are read over a separate undocumented port that this driver does not implement. Zones are identified by roller id.
- Battery token is raw. The
vofield combines voltage and motor-type information in a hub-specific encoding; it is surfaced verbatim asbattery_statusrather than decoded into a percentage. - Pulse 2 only. The original Pulse (v1) hub uses a different protocol and is not supported by this driver.
- Hub-mediated. All control goes through the hub; motors are not addressed directly.
Troubleshooting
| Symptom | Check |
|---|---|
| Never connects / immediate close | Hub not paired yet (commission it in the app over Wi-Fi first), wrong IP, or a firewall between GEM and the hub. |
Connects but get_devices is empty | The hub has no shades commissioned, or the first shadow hasn't arrived — wait a few seconds and retry. |
| Shade opens when you meant close | Confirm you are sending GEM levels (100 = open). The driver already inverts the hub's close-percent; do not pre-invert. |
not connected returned from a command | The WebSocket is down and reconnecting. Check the log for rollease pulse2 socket closed / reconnecting. |
| Position lags reality | Lower status_interval for more frequent shadow refreshes. |