Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't send "Press" to Bot #40

Open
tojannaon opened this issue Aug 9, 2022 · 10 comments
Open

Can't send "Press" to Bot #40

tojannaon opened this issue Aug 9, 2022 · 10 comments
Labels

Comments

@tojannaon
Copy link

tojannaon commented Aug 9, 2022

Current Situation

Although the same Bot can be controlled successfully via the app no response occurs when using sudo python switchbot.py. Note that the device is discovered and connects just fine. It's just that nothing happens on the Bot (no Press).

After many hours of trying various methods to send this command via BLE I have come to the conclusion that this recent firmware has changed the command structure as even this simple script will not work:

https://gist.github.com/mugifly/a29f34df7de8960d72245fcb124513c7

Logs

pi@raspberrypi:/python-host $ sudo python switchbot.py
Usage: "sudo python switchbot.py [mac dev_type cmd]" or "sudo python switchbot.py"
Scanning...
Scan timeout.
(' 0', [u'd9:31:3b:81:03:56', 'Bot', 'Press'])
Input the device number to control:0
[u'd9:31:3b:81:03:56', 'Bot', 'Press']
Preparing to connect.
Connection successful.
Complete

Configuration

Bot firmware version 6.3

Environment

  • OS: Raspbian
  • Software: Jessie
  • Node: v10.19.0
  • npm: 6.13.4

Additional Context

No response

@reestr
Copy link

reestr commented Jan 16, 2023

I seem to have this same issue. I've never been able to try an earlier firmware to confirm if that works, my switchbot turned up with 6.3 installed. Did you ever find a workaround for it @tojannaon ?

@dcarrion87
Copy link

dcarrion87 commented Jan 20, 2023

@tojannaon @reestr

Can you guys can any commands to send including on/off?

I'm on bot version 5.0 and I just get invalid handle errors from gatt.

# gatttool -t random -b XX:XX:XX:XX:XX:XX --char-write-req -a 0x0016 -n 570101
Characteristic Write Request failed: Invalid handle

# gatttool -t random -b XX:XX:XX:XX:XX:XX --char-write-req -a 0x0016 -n 570102
Characteristic Write Request failed: Invalid handle

@dcarrion87
Copy link

@reestr try this project instead: https://github.com/Danielhiversen/pySwitchbot

I was only able to get it working through that project.

E.g.:

from switchbot import Switchbot
from bleak import BleakScanner
import asyncio

async def main():
  ble_device = await BleakScanner.find_device_by_address("MAC ADDRESS", timeout=20)
  device = Switchbot(ble_device)
  await device.press()

if __name__ == "__main__":
  asyncio.run(main())

You can also set change mode with:

await device.set_switch_mode()
await device.set_long_press(7)

@TForest-UwU
Copy link

Hello,

i have the same issue as @tojannaon, however i the software @dcarrion87 provided gives me this error

Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'switchbot'

I have cloned the git through git clone however i cant seem to find a solution to both these problems.

I am using switchbot version 6.3 and a raspberry pi 3 on the raspbian OS

@dcarrion87
Copy link

dcarrion87 commented Feb 10, 2023

@TForest-UwU have you:

pip install PySwitchbot

Also you'll need these pip packages too. But they should come down with that one ^

async_timeout>=4.0.1
bleak>=0.17.0
bleak-retry-connector>=2.9.0
cryptography>=38.0.3
boto3>=1.20.24
requests>=2.28.1

@TForest-UwU
Copy link

TForest-UwU commented Feb 10, 2023

Yes i retried it and it seemed i also had a outdated pip installation, however the program fails to build cryptography with this error

note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for cryptography Failed to build cryptography ERROR: Could not build wheels for cryptography, which is required to install pyproject.toml-based projects

the rest of the packages seem to all have installed correctly

@dcarrion87
Copy link

dcarrion87 commented Feb 10, 2023

Create a virtual environment first and work in there so you don't mess with your system wide pip packages.

python -m venv venv
. venv/bin/activate

Then do your pip things.

You might need to do some googling of that error to make sure you have build-essentials, upgrade pip version, downgrade setuptools if necessary etc... (I've not be doing this from raspbian).

Maybe apt-get install build-essentials and a pip3 install --upgrade pip might get you going.

@tojannaon
Copy link
Author

@reestr Sorry for not chiming in earlier. I ended up having to bail as the Switchbot folks felt that the Bluetooth LE dongle that I was using (expensive and state-of-the-art) was somehow not compatible (even though it works for other applications). I didn't have another to try and wasn't about to purchase one in case there actually were other issues causing the problem.

@TForest-UwU
Copy link

If anyone is still having issues check out https://github.com/TForest-UwU/Switchy

I found out that atleast for me this api does not send the command properly, but it does connect nicely.
I then found another api that does the exact opposite, so i combined then into a working program

@reestr
Copy link

reestr commented Feb 28, 2023

@TForest-UwU - thank you for following up with this, despite reporting an error after each press of the switch, it works as expected! :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants