I was looking for a budget wireless sensor to plug into my home automation and I only ended up some $50 BLE stuff from a few vendors. Then I found “skybeacon” on Alibaba that is $6 piece ibeacon/eddystone/temperature thingie which seem to doing fairly well for me. I currently have 3 of these and they have been working reliably for a week.
I submitted pull request:
Documentation and getting started can be found on github:
perhaps it is a bad idea indeed. also: bluetooth_le_tracker uses gattlib.
There is a large issue that you can’t seem to have two connection initiations at the same time on a given host. For example with gatttool I can’t connect two devices on the same time. However, once connection is established, another connection can be made.
I tried to establish two connection attempts with bluepy-helper from Bluepy and it also failed. In fact with bluepy I can’t seem to make 2 connections established at all.
I am not sure if this a bluez limitation OR my dongle (some CSR 4.0 usb leave-in) limitation. But looks like this is a very common dongle and it just break things. Right now I can’t use bluetooth_le_tracker for the very same reason.
So what do we do? Provide a service that wraps and serialises access to ble host controller?
It’s a limitation of the host controller. CSR based USB-dongles seems to be limited to 2 concurrent connections. The intel host controller in my notebook can mange 4 concurrent connections.
My 3 eq3btsmart thermostats work mostly fine with a CSR usb dongle (with 2 connections) and bluepy. They keep the connection only up while it’s needed.
But I think there bluetooth and bluetooth le devices need a tighter integration for things like connection management. At least on Linux it should probably use bluez dbus interface. The main problem I see with that is that it makes it hard to keep the device code platform independent and reusable outside of homeassistant.