OpenWonderLabs / SwitchBotAPI

SwitchBot Open API Documents
893 stars 73 forks source link

Open single curtain (of 2 curtains grouped together) via API #287

Open rweijnen opened 7 months ago

rweijnen commented 7 months ago

Current Situation

In switchbot app it's possible to open just left or right side of my curtains but how to do this using switchbot api? I tried to do this by changing the index in the setPosition call to the group and changing the index to 1 or 2 but this just opens or closes both curtains.

I also tried obtaining the deviceId of the individual curtains and set turnOff, turnOn and setPosition but this returns 174 Device's cloud service not enable.

How to select just one curtain with api?

Logs

Using api to get devicelist:
deviceId     deviceName     deviceType hubDeviceId
--------     ----------     ---------- -----------
C1489A61xxxx Hub Mini 1A    Hub Mini   000000000000
CEA134E3xxxx Curtains Front Curtain    C1489A61xxxx 
E2F7FCB2xxxx Curtain 67     Curtain    000000000000
F5D13A7Fxxxx Curtains Back  Curtain    C1489A61xxxx
FDBB59Bxxxxx Curtain 88     Curtain    000000000000

Then view Curtains Back as example:
deviceId           : F5D13A7Fxxxx
deviceName         : Curtains Back
deviceType         : Curtain
enableCloudService : True
hubDeviceId        : C1489A61xxxx
curtainDevicesIds  : {F5D13A7Fxxxx, FDBB59B3xxxx}
calibrate          : True
group              : True
master             : True
openDirection      : left

so individual curtains are:
curtainDevicesIds  : {F5D13A7Fxxxx, FDBB59B3xxxx}

If I ask /devices/ FDBB59Bxxxx/status it works fine:
deviceId      : FDBB59B3xxxx
deviceType    : Curtain
calibrate     : True
group         : True
moving        : False
slidePosition : 0

I try to send turnOff, turnOn, setPosition command to device id FDBB59B3xxxx it fails:
statusCode body message                          
---------- ---- -------                          
       174      Device's cloud service not enabled

Configuration

I'm using Home Assistant but just sending rest commands and tests above using curl/powershell

Environment

Additional Context

Opening and closing the group (both curtains) works fine.

donavanbecker commented 7 months ago

I don't believe this option is in the API: image

rweijnen commented 7 months ago

Yes I'm indeed looking for how to do exactly what the app is able to do but from the api. If that's not available, how does the app handle it (bluetooth?). Could you confirm if possible with the api? If not, could this be added in the future?

AlexanderLeporiday commented 7 months ago

I've just run into this same issue. Writing my own home automation script and I can open and close the curtains but I can't control just the left or right curtain only. This appears in the app so the API should support it?