Commit Graph
205 Commits
Author SHA1 Message Date
Florian 26c0cca614 [LPM] - Fix reboot loop when low power is used (#1444)
By not deinitializing BLE at the start, if it has not been initialized. Setting the time between waking up from the macro rather than the config interval.
This one does not have a value at the start.
2023-02-09 15:19:09 -06:00
FlorianandDigiH f283327998 [BT] - Adaptive scan (#1440)
* [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>
2023-02-07 17:36:18 -06:00
DigiH 05f83c5f80 Active Scan Interval (#1433) 2023-02-07 12:25:40 -06:00
DigiH bd9dcf1ec8 Tag properties visibility (#1432)
Tag properties visibility to be included with "pubadvdata" setting
2023-02-01 19:41:01 -06:00
Florian 4e885a7cd0 [BT] Regular BT connect based on time (#1423)
instead of number of scans, as users changing the interval to continuous scanning may have connect attempts to frequently
2023-01-26 09:28:16 -06:00
Florian a64acab7c8 [BT] Regular BLE system parameter pub (#1422)
Publish BT config parameter at start so as to update the switch statuses in the controller
Also publish regularly in case of controller restart
Also move btqsum, btqsnd and btqavg to BTtoMQTT topic instead of SYStoMQTT as they are more relevant here
2023-01-26 08:18:44 -06:00
Northern Man 150603555c Update to ZdisplaySSD1306 to reduce overall resource usage, and enable message queuing (#1417) 2023-01-26 08:17:53 -06:00
Florian a3603c6a78 [BLE] Simplify the publication of advertisement data (#1408)
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.
2023-01-20 14:30:11 -06:00
DigiH 8a767cf4b8 Typo fixes (#1381) 2023-01-08 07:43:15 -06:00
FlorianandNorthernMan54 16815f51da Add RTL_433 discovery with Home Assistant convention inspired from rtl_433_mqtt_hass.py (#1379)
This also changes the topic structure when using the macro valueAsATopic=true, it adds as sub-topics the `type, subtype, and channel` when they exist.
The id is the last subtopic to facilitate filtering, as it may change when replacing the batteries.

Co-authored-by: NorthernMan54 <19808920+NorthernMan54@users.noreply.github.com>
2023-01-07 20:34:43 -06:00
Florian 25d921580d [HA discovery] Save the BLE settings and change switch to optimistic false (#1364)
The current way of saving settings is through the retain flag of the MQTT commands, unfortunately if several commands are issues they may overwrite each other. So as to prevent it, we now leverage the memory saving introduced earlier to store the BLE settings.
Also leverage the config status publication to show the state through the button position (optimistic false)
2022-12-19 08:44:14 -06:00
Florian 8dde777fb7 [BLE] Add dynamic active scan runtime setting (#1360)
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
2022-12-14 17:03:34 -06:00
Florianandh2zero 8ee1c4e524 RN8209 energy sensor support with watt, voltage and current. (#1337)
Co-authored-by: h2zero <powellperalta@gmail.com>
2022-11-29 18:41:47 -06:00
Florian 8714141630 Remove the devices that have Random Mac from the internal memory (#1335)
So as to avoid to have a growing memory consumption, indeed each time these devices change their MAC it will create a new entry into the list. This increase continuously the memory consumption of the list. And as these devices can't be discovered and doesn't have interest to be white or black listed we don't store them
2022-11-28 20:29:07 -06:00
h2zero 9d7086558b Update Arduino core and BLE/WiFiManager libs. (#1310)
* Update Arduino core and BLE/WiFiManager libs.

* Add esp32-s3 and esp32-c3 environments.

* Update build script to use matrix.

* Update release build.

* Fix WiFiManager crash

* Use espressif32 version 3.5.0 for standard ESP32.

* Resolves BLE scan_evt timeout issue with latest version (5.2.0).

* ESP32C3 and ESP32S3 Env's use espressif32 version 5.2.0.

* Update LED pins for C3/S3 environments.
2022-11-13 12:35:18 -06:00
Florian c612169ba8 Fix discovery duplicates for BT devices (#1297)
Fix isdisc = true identification, introduced by https://github.com/1technophile/OpenMQTTGateway/commit/25b8123ff6471352951d3def22c815017f5f11e1
2022-10-23 13:37:20 -05:00
Sami Salonen 941b1e109f Re-publish BTtoMQTT Theengs discovery topics on MQTT re-connect (#1290)
* 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>
2022-10-23 10:57:39 -05:00
Florian bf38bb52f6 Remove HM10 support (#1282)
Removing HM10 support as announced in the forum
2022-10-10 20:34:12 -05:00
Bad 312ef858c1 Modify new BT config using MQTT (#1259)
* Move BTConfig_default to ZgatewayBT.ino as BTConfig_init()

* Remove unused function declaration & typo

* Move bleconnect outside of ifdef ESP32

* Add new parameters to json payload on MQTTtoBT/config
And move them to function BTConfig_fromJson()

new parameters: [presenceEnable, presenceTopic, presenceUseBeaconUuid, extDecoderEnable,
extDecoderTopic, filterConnectable, pubKnownServiceData,
pubUnknownServiceData, pubKnownManufData, pubUnknownManufData,
pubServiceDataUUID, pubBeaconUuidForTopic]

* Add ignoreWBlist as new configuration parameter

* Keep hasspresence keyword (do not use presenceEnable)

* Documentation

* Typos & Optimizations arround RemoveJsonPropertyIf

* Template for BT config update

* Ensure BTConfig.minRssi sign does not matter

* Report configuration change on topic /commands/BTtoMQTT/config

# Conflicts:
#	main/ZgatewayBT.ino

* Add BT config bool commands (init, load, erase & save) to persist config parameters

* Documentation

* Fix pre-compilation issue

* Fix Code Format

* Use Preference only for ESP32

* Update Doc
2022-09-03 15:08:07 -05:00
BadandFlorian 9120d06932 Mutate relevant compilation variables into config (#1256)
* 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>
2022-08-20 14:28:25 -05:00
Amy Nagle b17247c049 Add missing macType param to NO_DEVICE_FOUND (#1253)
* Add missing macType param to NO_DEVICE_FOUND

* Simplify MAC address initialization
2022-08-09 05:19:19 -05:00
DigiH c4300a002f MQTT-MAC-IP-mDNS (#1245) 2022-07-19 12:10:51 -05:00
Bad 7f4e27a664 Fix presence topic (#1238) 2022-07-17 04:59:40 -05:00
Bad 77b022505c iBeacon: Flag to use UUID in topic or presence (and fixes) (#1226)
* 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
2022-06-19 08:22:15 -05:00
h2zero 25b8123ff6 Add option to offload decoding to an external gateway over MQTT. (#1216)
* Add option to offload decoding to an external gateway over MQTT.

* Change decode topic and add to config_bt
2022-06-12 17:44:51 -05:00
Florian f4700be523 Fix discovery entity id for DT24 and LYWSD03MMC (#1210) 2022-05-04 06:08:20 -05:00
Florian 1916f62895 Auto discovery: Recover MiFlora discovery and remove model if from entity id (#1209)
* Recovery MiFlora discovery

after https://github.com/theengs/decoder/pull/107

* BREAKING remove model_id from entity id
2022-05-03 19:45:28 -05:00
h2zero 8d6acbee12 Add Switchbot support and discovery. (#995)
* Use a task to process immediate BLE actions to prevent MQTT disconnection if the action takes too long to complete.

* Add state_on and state_off parameters to createDiscovery
2022-04-30 09:16:06 -05:00
Florian fb56162c52 Remove servicedatauuid only when model is present (#1186)
keep it if we haven't decoded the message
2022-03-15 17:44:39 -05:00
Florian 3d2b15bd6c Remove auto discovery for Ibeacon, GAEN and MS CDP (#1183)
to avoid creating hundred of entities and devices in the controller due to their changing MAC addresses
2022-03-13 09:38:38 -05:00
Amy Nagle 0e45f7cca0 Fix discovery of connectable devices (#1173) 2022-03-04 16:22:35 -06:00
Amy Nagle 257b39da81 Add support for XMWSDJ04MMC (#1162) 2022-02-09 16:16:41 -06:00
h2zeroandFlorian 0a8458f156 Update decoder version. (#1151)
* Update decoder version.

* Add new devices and sort list

Co-authored-by: Florian <1technophile@users.noreply.github.com>
2022-01-27 15:48:29 -06:00
Florian a9342f743f Change unique id structure for HASS discovery (#1147)
Now:
"uniq_id":"882D777014C-pres"
before it was:
"uniq_id":"882D7770014C-CLEARGRASSTRHKPA-pres"
This will impact BLE and gateways entities
2022-01-27 15:47:29 -06:00
h2zero f8b4b3ca21 Add "mac_type" parameter to BLE connection commands. (#1146)
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..
2022-01-25 06:19:50 -06:00
h2zero e838d3cee0 Remove std::string as the model id and use decoder enum. (#1143)
* 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
2022-01-24 20:09:15 -06:00
h2zero 91ab8dcdf1 Fix some incorrect timeouts when taking semaphores. (#1145) 2022-01-24 05:50:14 -06:00
h2zero 5dac1a7035 Add immediate parameter to BLE connection commands. (#1137)
* Add immediate parameter to BLE connection commands.

When sending a command to read/write a characteristic on a BLE server this adds a new parameter to cause the action to be
performed immediately. This will stop the scan in progress to perform the actions queued.

Example use:
```
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",
  "value_type":"STRING",
  "ttl":4,
  "immediate":true }'
```

Stop BLE processing when immeditate command sent.

* Use a shorter connection timeout.

* Update docs.

* Remove MQTT spam for connection retrys

* Prevent crashing when the normal connection process occurs at the same time as an immediate action.

* Use a semaphore to protect BLE device vector.
2022-01-23 19:47:17 -06:00
Florian 749c1592b4 Add M5Tough board (#1135) 2022-01-17 19:22:26 -06:00
Florian 00709675bc Correct log display for std::string (#1111) 2021-12-13 18:50:40 -06:00
h2zero 8e6ebe87c9 Use a queue and separate task to process BLE devices. (#1110)
This avoids excess processing in the BLE advertised device callback and prevents overflowing the BLE host stack.
2021-12-13 17:29:44 -06:00
h2zero d590c34c03 Fix memory leak introduced in #1092 (#1109) 2021-12-12 09:41:25 -06:00
Florian 7dc49165a0 Discovery with theengs decoder (#1106)
* Discovery with theengs decoder

* Add devices to doc

* Correct missing suffix for DT24
2021-12-11 11:54:08 -06:00
Alessandro Staniscia bdda5df839 rationalisation of logs and removal of duplicate codes (it should fix also #931) (#1093)
* Rationalisation of logs and removal of duplicate codes
2021-11-02 16:46:01 -05:00
Florian 10f0d4cff4 Theengs decoder integration (#1092)
* Use Theengs Decoder for BLE device decoding
2021-10-31 16:51:05 -05:00
Alessandro Staniscia e14a78e9c0 Support Home Assistant Long-term Statistics #1087 (#1088) 2021-10-14 18:46:13 -05:00
MountComb 36f4f89fbb fix BT not connected issue when using whitelist (#1080) 2021-09-19 09:40:41 -05:00
h2zero ed4949f769 Update to use ArduinoJson 6+ (#1071) 2021-09-01 19:18:19 -05:00
Florian 01301a1485 Change BLE TPMS count to match associated number (#1070)
Currently this count start at 0 whereas it should start at 1
2021-08-28 20:21:20 -05:00
Florian 7f296ff5fa update Ibeacon keys naming (#1045)
lower case as the other json keys
2021-07-31 14:45:31 -05:00