Add device tracker detection and automatic creation following HA discovery convention
So as to trigger the away state, add an offline status to the identified BLE trackers
* [BT] Add BM2 voltage
Voltage retrieval through a BLE connection, frequency of the BLE connection is defined by `intervalcnct`
* Add doc
Credits to https://github.com/KrystianD/bm2-battery-monitor
* [BT] Adaptive scan
Add adaptive scan to avoid users setting parameters and deduct automatically the scan requirements from the list of devices
---------
Co-authored-by: DigiH <github@digih.net>
With only one control that enables the publication of all the advertisement data, default: false
Note that if the sensor is not recognized, we will no longer publish its advertisement data unless the control is true. This is for the sake of traffic reduction.
This commit add the capability to set passive scanning during runtime, versus buildtime before, so as to improve energy consumption of sensors when they don't require active scanning
* Re-publish BTtoMQTT Theengs discovery topics on MQTT re-connect
- Improved version of #1274, this should re-publish more
- Handle return value of (MQTT) client.loop() to detect connection loss
faster
Signed-off-by: Sami Salonen <ssalonen@gmail.com>
* Move minRssi in config_BT.h
Move var definitions next to compilation var definitions
* Introduce UseExtDecoder when is def MQTTDecodeTopic
Replace #ifdef MQTTDecodeTopic by #if UseExtDecoder
* Rename AttemptBLECOnnect to AttemptBLEConnect
* Create a struct (BTConfig_s) for BT configuration data
Create a default config for BTConfig_s (BTConfig_default) based on defines
Create a global variable (BTConfig) to hold live BT configuration data and initialize it
Move bleConnect to BTConfig
* Move BLEscanBeforeConnect in BTConfig
* Move BLEinterval in BTConfig
* Move PublishOnlySensors in BTConfig
* Move hassPresence in BTConfig
* Move minRssi into BTConfig
* Introduce presenceTopic into BTConfig
* Move MQTTDecodeTopic as extDecoderTopic into BTConfig
* Mutate UseExtDecoder as runtime var BTConfig.extDecoderTopic
* Remove ServicedataMinLength (unused)
Always declare AttemptBLEConnect & BLE_FILTER_CONNECTABLE
* Mutate BLE_FILTER_CONNECTABLE as runtime parameter BTConfig.filterConnectable
* Mutate pubKnownBLEServiceData as runtime var in BTConfig
Mutate pubUnknownBLEServiceData as runtime var in BTConfig
Mutate pubBLEManufacturerData as runtime var in BTConfig
Mutate pubUnknownBLEManufacturerData as runtime var in BTConfig
Mutate pubBLEServiceUUID as runtime var in BTConfig
* Mutate useBeaconUuidForTopic as runtime var in BTConfig
Mutate useBeaconUuidForPresence as runtime var in BTConfig
* Small optimization
* Formatting of config_BT
Co-authored-by: Florian <1technophile@users.noreply.github.com>
* Add useBeaconUuidForPresence flag (disabled by default)
* Change MQTTDecodeTopic to include only the sufixe
* Rename mac_address to topic and remove unnecessary variable mactopic
* Add useBeaconUuidForTopic flag (disabled by default)
* Fix jsonPublishing #ifdef -> #if
* Revert commit 02e2d03
This allows for connecting to devices that do not use the MAC address type 0.
This also adds the logging of the "mac_type" so it is visible to users trying to connect to broadcasting devices.
Additionally this will allow for future connectable devices using a MAC address type other than 0 to be automatically connected to
when support is added for them, similar to LYWSD03MMC etc..
* Remove std::string as the model id and use decoder enum.
* Update decoder version
* Check model id is in decoder range when launching discovery.
* Add BLEconnect enum MIN/MAX
* EXPERIMENTAL: Ble read/write characteristics over MQTT.
Uses #979
This allows reading and writing BLE characteristics from an MQTT message.
Example format:
mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoBT/config -m '{"ble_write_address":"AA:BB:CC:DD:EE:FF", "ble_write_service":"cba20d00-224d-11e6-9fb8-0002a5d5c51b", "ble_write_char":"cba20002-224d-11e6-9fb8-0002a5d5c51b", "ble_write_value":"TEST", "ttl":4 }'
mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoBT/config -m '{"ble_read_address":"30:AE:A4:7C:3C:A6", "ble_read_service":"cba20d00-224d-11e6-9fb8-0002a5d5c51b", "ble_read_char":"cba20002-224d-11e6-9fb8-0002a5d5c51b", "ttl": 2 }'
The ttl parameter is the number of calls to connect (defaults to 1), which occur after the BLE scan completes.
A response is provided over MQTT in the format:
write : {"id":"30:AE:A4:7C:3C:A6","service":"cba20d00-224d-11e6-9fb8-0002a5d5c51b","characteristic":"cba20002-224d-11e6-9fb8-0002a5d5c51b","write":"TEST","success":true}
read : {"id":"30:AE:A4:7C:3C:A6","service":"cba20d00-224d-11e6-9fb8-0002a5d5c51b","characteristic":"cba20002-224d-11e6-9fb8-0002a5d5c51b","read":"TEST","success":true}
* Add generic BLE connect class and read data as hex.
* Add value_type parameter and document usage
* Add note to docs
* BLE low power mode and settings optimization
-low power mode settings example
-take into account parameters following #891
-add esp32dev-ble-cont for door/window sensor listening
* Disable WDT during scan
* update esp32 arduino framework
Useful if you want to scan continuously for BLE device, in this case you should deactivate the BLE connect to avoid concurrency between scan and connect