更新:
最近不死心再次尝试了一次,换了一家店买了蓝牙继电器
这次买的实际上是带串口通讯的继电器+蓝牙模块,也是一样需要安装手机APP,输入pin然后控制。
但是!!!!这家提供了详细的说明,
继电器使用TTL通讯,提供了详细的AT指令集!蓝牙模块也提供了说明!
然后发现蓝牙使用是透传模式,也就是我给蓝牙发送什么指令,它直接转发给继电器!
这就简单了,先通过串口直接给继电器发送指令,确定我对AT指令集的理解没错。
然后连上蓝牙模块,直接对蓝牙发送指令,一次成功!不需要Pin(在bluetooth-agent PIN上折腾了好久,后来发现压根不需要这么手动配对)。
然后发现上次买的蓝牙继电器也是一样的工作模式,只是那家店铺老板想保密,不肯透露资料。
懒得写了,直接上图吧:
------------------------------------------------------------------------------------------------------------
一开始打算用树莓派GPIO接口控制一个水泵,定时浇花。
后来觉得树莓派一直放在阳台不好,就打算做一个蓝牙连接的水泵。
从淘宝买了个蓝牙继电器,18650电池,一个升压模块,水泵。
连接好硬件之后,成功连接了继电器,读取了character之类的信息,但是看不懂UUID之类的参数,写了几条指令,发现没反应。只好从基础开始看蓝牙编程。
我参考这个链接学习蓝牙编程:蓝牙编程
安装python的蓝牙库,就可以import bluetooth了
sudo pip3 install pybluez
测试了这个库,只能连接普通蓝牙。
扫描BLE 必须安装pybluez[ble].但是这个库很坑爹,一堆依赖装完都安装不成功,在debian里加了官方给的source list,但是这个地址连不上。最后放弃,去试试bluepy这个库。
在此之前,先用hcitool 和 gatttool测试一下连接,没有问题。
hcitool scan 这个只能扫描到小米盒子
sudo hcitool lescan 能扫描到所有东西
找到需要的MAC之后
gatttool -I 开启交互界面
然后connect就行了
查手册得知ffe1到fec8都是私有UUID,其它的是共有的,但是没什么用
然后使用继电器商家给的APP测试,发现需要输入一个激活码,推测是给前面的某个handle发送,但是要反向查出控制继电器的地址太麻烦了,基本放弃。有一个思路是蓝牙抓包,但是貌似需要买一个dongle的东西,作罢。
商家提供了测试用的java文件,从里面应该可以推测出相应的指令,待续...