Just got a Controller 69 and am looking to try and wade into this. @hivemind do you have any details as to how you were able to discover and pair with this in gattool or bluetoothctl? [edit: turns out my bluetooth stack was blown up, sudo systemctl restart bluetooth.service got me back up and running]
I’ve gone and run the current Android APK through a couple of analysis/decompilation tools and have dropped the results here.
I think we could have some success there with reading sensor values, but if we want to also send payloads like new temp/hum set points then I’m guessing it will quickly become out of scope.
I believe there is enough info in this thread and the definitions that @luma has provided to get this working. The strings we are getting back from the vendor specific attributes address should be the sensor and variable values and writing to 0x001d seems to be triggering something on the controller side. At first glance it appears that perhaps entire config is sent as an array each time a change is made.
Is anyone aware of any BLE integration contributors or resources we could pull in for a quick review? Sorry to tag you again @bjeanes, in your opinion, has any of the additional info in this thread the past couple of months bought us any closer to a solution?
Happy to contribute funds to send a controller to someone who can help
I’m sure there is gold in that APK, though it is definitely pretty thick. I’d try to find the code paths that set/read a value and follow it down to the actual BLE characteristics it is using. I can’t help more than that, sorry.
Welcome to the thread @ssams - that link you posted is from @luma a few posts up.
No progress on my side, I am unlikely to have the chance to dig much further so I think it is just a matter of waiting for a person with the right skills to pick up one of these units and take over where this thread has left off.
I think basic communication and functionality is probably only a day or two work for a suitable dev, a full-blown integration would require a few weeks part-time for a beta I am guessing.
Haven’t yet seen any evidence yet that it is encrypted or otherwise impossible, so I’m hopeful we will get there.
oops - sorry about that post. missed that. hopefully one of these bright minds will take it on. until then i will patiently wait ;). i have seen a few who just override controller and use a nodemcu but I don’t feel like tearing mine apart. i will work on my peristaltic pumps first. tired of mixing nutrients every other day.
thanks!
Does the 2022.9 release which includes a lot more Bluetooth (Bluetooth Proxy) functionality make this integration more achievable? Sorry if this sounds like a dumb question - new to HA, and playing catchup.
@poldim What did you test? Were you able to report temp or control the fan? Why do you need a PCB if it’s just Bluetooth? Apologies for the questions, I’m just trying to figure out if I should upgrade my controller.
@hivemind unable to gatt into the controller to send commands but could you do me a favor and dump the primary readout of uuid’s here please? i want to try match up some codes on this end
yea i dug into the bt snooplog a bit and pulled some information from them, just before killing bluetooth on my raspi machine…somewhere in the sap… and havent been able to use hci or gatt to hack away at the signal coming from the controller atm…
wireshark dump
handshake controller to system
Frame 1716: 12 bytes on wire (96 bits), 12 bytes captured (96 bits)
Encapsulation type: Bluetooth H4 with linux header (99)
Arrival Time: Nov 19, 2022 13:49:46.147242000 EST
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1668883786.147242000 seconds
[Time delta from previous captured frame: 0.000449000 seconds]
[Time delta from previous displayed frame: 0.000449000 seconds]
[Time since reference or first frame: 17306.238112000 seconds]
Frame Number: 1716
Frame Length: 12 bytes (96 bits)
Capture Length: 12 bytes (96 bits)
[Frame is marked: False]
[Frame is ignored: False]
Point-to-Point Direction: Received (1)
[Protocols in frame: bluetooth:hci_h4:bthci_acl:btl2cap:btatt]
Bluetooth
[Source: f0:74:59:49:c0:45 (f0:74:59:49:c0:45)]
[Destination: f8:28:fb:e7:1f:24 (f8:28:fb:e7:1f:24)]
Bluetooth HCI H4
[Direction: Rcvd (0x01)]
HCI Packet Type: ACL Data (0x02)
Bluetooth HCI ACL Packet
.... 0000 0001 0000 = Connection Handle: 0x010
..10 .... .... .... = PB Flag: First Automatically Flushable Packet (2)
00.. .... .... .... = BC Flag: Point-To-Point (0)
Data Total Length: 7
Data
[Connect in frame: 1708]
[Source BD_ADDR: f0:74:59:49:c0:45 (f0:74:59:49:c0:45)]
[Source Device Name: ]
[Source Role: Unknown (0)]
[Destination BD_ADDR: f8:28:fb:e7:1f:24 (f8:28:fb:e7:1f:24)]
[Destination Device Name: CP10]
[Destination Role: Unknown (0)]
[Current Mode: Unknown (-1)]
Bluetooth L2CAP Protocol
Length: 3
CID: Attribute Protocol (0x0004)
Bluetooth Attribute Protocol
Opcode: Exchange MTU Request (0x02)
0... .... = Authentication Signature: False
.0.. .... = Command: False
..00 0010 = Method: Exchange MTU Request (0x02)
Client Rx MTU: 247
hopefully ill be able to get it up and going again after work… should be able to compile the uuids and the commands into vs code and start sending to controller to see what it responds with