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
* Add LYWSD03MMC and MHO-C401 device
and an associated BLE connect mechanism as these devices advertise only encrypted data
-free manufacturer data
-update library
* Implement scans number before connect
-Add the possibility to do a connect every X scan
-Rename variables for consistency
-Some refactoring for improved code reading
* Add JQJCY01YM Formaldcehyde detector
The device publish also the temperature, humidity and battery
* Reduce ServicedataMinLength
so as to read battery data of this device and others
* [breaking] Refactor the BLE devices identification
generalize the use of the mac address with : for the lists, white, black and internal identification
Move structures from config_BT.h to ZgatewayBT.ino
update doc
* Move minRssi to INO and optimizations
change Minrssi name to match other variable convention
Optimize the add of : to mac address
Reduce the use of abs()
Note: I cannot move BLEinterval to the ZgatewayBT.ino due to its use on main.ino
* Refactor BLE gateways:
-merge HM10 and ESP32 code
-publish sensor values with the other BLE device parameters to avoid MQTT multiple publication
-make uniform the case of mac adress id between HM10 and ESP32
-add the possibility to remove service data publishing either when sensors is recognised or not
-correct manufacturing data display
-merge process cleargrass methods
-check service data validity before processing