Commit Graph
42 Commits
Author SHA1 Message Date
h2zero e244decbed Set BLE_FILTER_CONNECTABLE default to 0. (#1017) 2021-07-11 20:20:48 -05:00
h2zero 45e9ba79d1 Add support for iBeacons. (#1016) 2021-07-11 19:50:06 -05:00
h2zero 76f880dc15 Add support for Mokosmart beacons. (#1003) 2021-06-30 22:16:29 -05:00
h2zero 7cfbd3d050 Ble read/write characteristics over MQTT. (#988)
* 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
2021-06-21 20:27:06 -05:00
h2zero 792807e6e5 Create BLE connect class and add derivatives (#979) 2021-06-17 16:52:03 -05:00
Florian 2737a4cbf7 Add Eddystone TLM BLE protocol (#972)
supporting battery, temperature, count and time from start in s
2021-06-08 17:53:58 -05:00
Northern ManandNorthern Man 6bb65ca12a DT24 bluetooth Voltmeter (#975)
* DT24 bluetooth Voltmeter

* Initial checkin of Home Assistant Discovery

Co-authored-by: Northern Man <sgracey@Heisenberg.local>
2021-06-08 16:50:39 -05:00
Florian 8ef3a61e75 Add INKBIRD IBBQ IBT-4XS (#955)
* Add INKBIRD IBBQ IBT-4XS

BBQ temperature sensor with 4 probes
2021-05-23 14:45:57 -05:00
Florian fb7ad1b2ca Add Inkbird IBS-TH2 (#954)
Temperature sensor for freezer, fridge
2021-05-23 10:14:02 -05:00
Florian 9fb3d90da9 Add BLE WS02 SensorBlue beacon (#932)
https://github.com/h2zero/NimBLE-Arduino/issues/215
2021-05-08 17:59:32 -05:00
Florian e1aef48296 [Breaking] Deactivate Home Assistant presence per default (#915)
And enable to activate it by MQTT
2021-04-04 19:34:36 -05:00
Florian 6c8ba53276 Add BLE setScanDuplicateCacheSize (#911)
#906
2021-04-03 07:44:28 -05:00
Florian cd55f0dfd5 Add CGPR1 Qingping PIR and luminance sensor (#905) 2021-03-25 19:40:35 -05:00
Florian b9151bb6ac BLE low power mode and settings optimization (#902)
* 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
2021-03-25 18:53:47 -05:00
Florian ad72211d71 Add CGH1 Qingping Cleargrass window and door sensor (#899) 2021-03-16 19:24:35 -05:00
Florian 625f7f358b Publish SYStoMQTT scan count (#896) 2021-03-14 15:05:09 -05:00
Florian 8afb1c5223 Enable deactivation of BLE connect (#895)
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
2021-03-14 12:53:26 -05:00
Csiki fd0518ae46 Support pvvx firmware custom type messages from LYWSD03MMC (#889) 2021-03-10 15:09:06 -06:00
Florian 244dc903b0 Add CGDK2 BLE temperature and humidity BLE sensor (#884)
* Add CGDK2 BLE temperature and humidity BLE sensor

and remove batt from CGD1 (this sensor does not advertise battery value)
2021-03-04 19:26:50 -06:00
Csiki ebd6bb8031 Bt discovery fix (#880)
* launchDiscovery fix for esp32 (sending the discovery mqtt messages on the main core)
2021-03-02 17:13:14 -06:00
Csiki 1b7f83c014 BT lockless queue (#867)
* Lockless json queue for ESP32 BT to avoid SYStoMQTT concurrency issue

* BT haRoomPresence handle with lockless queue
2021-02-26 14:30:55 -06:00
Florian 717bdb1f06 Disconnect after a timeout (#842)
So as to save the devices battery
2021-01-30 15:32:53 -06:00
Michał Rybicki caad5dde1a Add iNode Energy Meter support (#755) 2020-09-03 16:09:34 -05:00
Florian 0600b89190 Add LYWSD03MMC from ATC (#754)
https://github.com/atc1441/ATC_MiThermometer

long instead of double
and cast when used
2020-09-03 06:18:11 -05:00
Florian 6d1d1ac50d [BT] Remove voltage class (#750)
and correct wrong comment
2020-09-02 14:49:38 -05:00
Florian 5e2d86e963 Add publish only BLE sensors function (#741)
don't publish the non identified BLE devices when requested (at build or by MQTT setting)
2020-08-26 17:24:23 -05:00
Florian d6d42bfce5 BLE sensors data through a connect, LYWSD03MMC and MHO-C401 add (#736)
* 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
2020-08-18 12:28:45 -05:00
Florian e9910a9165 Arduino NimBLE support (#732)
* NimBLE-arduino support

* Decorrelate discovery from BLEScan

To avoid Stack canary watchpoint triggered and store sensor model into BLEdevice vector
2020-08-17 09:51:58 -05:00
Jon 418c1d0c81 Minimize decompose, remove calls to extract_char, check data length before parsing (#724) 2020-08-15 08:12:27 -05:00
Florian da63fd3606 JQJCY01YM BLE formaldehyde, temperature, humidity and battery sensor integration (#722)
* 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
2020-08-05 19:46:50 -05:00
Florian 8d79bebab8 [breaking] Refactor the BLE devices identification (#720)
* [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
2020-08-04 12:03:22 -05:00
Leon Kiefer 10a9d00aaf Added clang-format (#623)
* added .clang-format
* added names to travis jobs
removed deprecated travis option
* check github action
* added .gitignore
2020-06-09 16:09:23 -05:00
Florian 661ef9c55e Refactor BLE gateways (#617)
* 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
2020-06-05 08:09:49 -05:00
Florian f6fa1e52da Hm10 details (#614)
* Add infos and change HM10 speed to a macro
* remove unnecessaries macros
2020-05-12 20:27:05 -05:00
Florian a82bbe684a Optimizations when using low power mode (#608) 2020-05-07 17:28:27 -05:00
Jonathan 9fc5ba99f5 Allow pins/settings to be defined in INI file (#597)
* Allow pins/settings to be defined in INI file

* Open to make publishing ManufacturerData optional
2020-05-03 08:56:40 -05:00
Peter Becker 033a583f0a remove duplicate code in main\ZgatewayBT.ino (#557)
* merge duplicate code into function setWorBMac

* rename setWorBMac to updateWorB

* add helper getDeviceByMac

* change updateWorB to use helper getDeviceByMac

* change isWhite to use helper getDeviceByMac

* change isBlack to use helper getDeviceByMac

* change isDiscovered to use helper getDeviceByMac

* eliminate duplicate devices walk for isWhite, isBlack and isDiscovered check

* fix a data corruption race between MQTTtoBT and discovery-functions

the ***Discovery functions every time create a new device unless this device is set to white-list before. as a result of this, the devices list contains the same mac multiple times with different flags

* eliminate duplicate devices walk for oneWhite check

because now we have a utility function 'createOrUpdateDevice' we can globally cache this as a single flag

* secure createOrUpdateDevice agains data races on multicore esp32

* fix the concept of the createOrUpdateDevice

c / c++ does not allow NULL as function parameter like modern languages

* use nkolban Semaphore helper class (already included and used from eos1d3/ESP32_BLE librarie)

this makes the semaphore handling more cleaner and readable

* merge duplicate code during createDiscovery into new helper createDiscoveryFromList

* replace excessive use of ZmqttDiscovery precompiler directive in ble advertised callbacks with dummy functions

for a better readability we can remove this because isDiscovered does not do a devices walk anymore

* fix build errors found by travis-ci
2020-03-02 13:54:53 -06:00
Florian db8df1ddf6 Hass discovery improvments (#512)
Rename set commands to config
correct json buffer size and gateway name
replace state to cmd
replace set by config
add restart and erase command
add unicity to gateway command switches
BLE devices shouldn't be child of the gateway
make the BTtoMQTT topic consistent with other definitions
2019-12-20 23:01:56 +01:00
1technophile 3948a14db9 Add warning to inform about risk of changing BLE scan duration for ESP32
#508
2019-12-14 18:49:24 +01:00
Florian 4b1f09b06b Wifi managers improvements (#503)
* Add parameters to wifi manager: gateway name and base topic
Enable to restart the ESP and erase the parameters by MQTT
2019-12-07 10:18:42 +01:00
Florian 6f73160d14 implement minimum rssi filtering (#482) 2019-11-12 20:48:23 +01:00
Florian 8471585d3d Platformio integration (#424)
* adaptation of structure to platformio

* also remove zgatewayRF315 (not usefull)

* replace boolean by bool

#155
2019-07-18 22:45:45 +02:00