diff --git a/theengsgateway/CHANGELOG.md b/theengsgateway/CHANGELOG.md index 7c6c177..98bac46 100644 --- a/theengsgateway/CHANGELOG.md +++ b/theengsgateway/CHANGELOG.md @@ -1,3 +1,69 @@ +## [1.9.0] +### What's Changed +On top of numerous new devices supported, this version brings exciting features like the support of encrypted advertisements, the capability to resolve private BLE addresses, HA MQTT discovery tuning, and TLS/Websockets support. Let's dive in! + +### New devices +|Devices|Model|Measurements| +|-|:-:|:-:| +| April Brother|N07|temperature/humidity/battery/packet ID| +| BM6 Battery Monitor|BM6|battery| +| GOVEE|H5100|temperature/humidity/battery| +| GOVEE|H5104|temperature/humidity/battery| +| GOVEE|H5179|temperature/humidity/battery| +| INKBIRD|IBS-TH12S|temperature/humidity/battery| +| NUT | NUTALE | tracker | +| Oral B| Toothbrush| state, mode, sector, pressure, time| +| Lippert|BottleCheck|temperature/level/sync status/voltage/battery/reading quality/acceleration x/y-axis| +| ShellyBlu|Button1|button press type/battery/packet ID| +| ShellyBlu|Door/Window|contact/rotation/battery/packet ID| +| ShellyBlu|Motion|motion, illuminance, battery, packet ID| +| ThermoPro|TP357s|temperature/humidity| + +### New features +* Add support for ShellyBLU Button1 encrypted advertisements by @koenvervloesem in https://github.com/theengs/gateway/pull/145 +* Add -c option to choose path for configuration file by @koenvervloesem in https://github.com/theengs/gateway/pull/143 +* Add support for encrypted PVVX advertisements by @koenvervloesem in https://github.com/theengs/gateway/pull/146 +* Publish encrypted properties when PUBLISH_ADVDATA is 1 by @koenvervloesem in https://github.com/theengs/gateway/pull/150 +* Add support for decrypting ShellyBLU Door/Window advertisements by @koenvervloesem in https://github.com/theengs/gateway/pull/153 +* Decode advertisement with service data for each UUID separately by @koenvervloesem in https://github.com/theengs/gateway/pull/154 +* Simplify decoding of advertisements by @koenvervloesem in https://github.com/theengs/gateway/pull/157 +* Simplify configuration and arguments merging by @koenvervloesem in https://github.com/theengs/gateway/pull/158 +* feat/websockets-ssl by @radim-kliment in https://github.com/theengs/gateway/pull/160 +* Document TLS and WebSocket options by @koenvervloesem in https://github.com/theengs/gateway/pull/161 +* Support encrypted ShellyBLU Motion advertisements by @koenvervloesem in https://github.com/theengs/gateway/pull/172 +* Resolve private addresses for known IRKs by @koenvervloesem in https://github.com/theengs/gateway/pull/173 +* Update encryption code to Decoder 1.6.2 by @koenvervloesem in https://github.com/theengs/gateway/pull/176 +* [DISC] HA discovery device classes and units additions by @DigiH in https://github.com/theengs/gateway/pull/177 + +### Miscelleanous +* Stop scan loop and show error message on BleakError by @koenvervloesem in https://github.com/theengs/gateway/pull/179 +* [DISC] Align discovery by @1technophile in https://github.com/theengs/gateway/pull/183 +* Clean up configuration code by @koenvervloesem in https://github.com/theengs/gateway/pull/162 +* Fix typo preventing startup by @kw217 in https://github.com/theengs/gateway/pull/169 +* Clean up code with newly activated Ruff rules by @koenvervloesem in https://github.com/theengs/gateway/pull/156 +* Bump Theengs Decoder to v1.6.4 by @1technophile in https://github.com/theengs/gateway/pull/184 + +### Documentation +- [DOCS] Add H1 title by @1technophile in https://github.com/theengs/gateway/pull/164 +- [DOCS] Add compatible list by @1technophile in https://github.com/theengs/gateway/pull/140 +- [DOCS] Clarify support of non-Linux platforms by @koenvervloesem in https://github.com/theengs/gateway/pull/155 +- [DOCS] Remove new icon by @1technophile in https://github.com/theengs/gateway/pull/141 +- [DOCS] Fix typo in docs by @jcherniak in https://github.com/theengs/gateway/pull/147 + +### CI +* [CI] Enable all Ruff rules by @koenvervloesem in https://github.com/theengs/gateway/pull/163 +* [CI] Update GitHub actions by @koenvervloesem in https://github.com/theengs/gateway/pull/151 +* Update pre-commit configuration and fix newly found issues by @koenvervloesem in https://github.com/theengs/gateway/pull/165 +* [CI] Run pre-commit checks on all supported Python versions by @koenvervloesem in https://github.com/theengs/gateway/pull/170 +* Automatic versioning from Git metadata by @koenvervloesem in https://github.com/theengs/gateway/pull/149 + +### New Contributors +* @jcherniak made their first contribution in https://github.com/theengs/gateway/pull/147 +* @radim-kliment made their first contribution in https://github.com/theengs/gateway/pull/160 +* @kw217 made their first contribution in https://github.com/theengs/gateway/pull/169 + +**Full Changelog**: https://github.com/theengs/gateway/compare/v1.1.0...v1.2.0 + ## [1.8.0] ## What's Changed * Docstring fixes by @koenvervloesem in https://github.com/theengs/gateway/pull/133 diff --git a/theengsgateway/DOCS.md b/theengsgateway/DOCS.md index 296d212..463c222 100644 --- a/theengsgateway/DOCS.md +++ b/theengsgateway/DOCS.md @@ -25,12 +25,16 @@ | TIME_BETWEEN | int | No | Seconds to wait between scans, defaults to `60` | | LOG_LEVEL | string | No | TheengsGateway log level, defaults to `WARNING` | | DISCOVERY | boolean | No | Activate discovery or not `true` | -| DISCOVERY_TOPIC | string | No | Home Assistant discovery topic`homeassistant/sensor` | +| DISCOVERY_TOPIC | string | No | Home Assistant discovery topic`homeassistant` | | DISCOVERY_DEVICE_NAME | string | No | Device name `TheengsGateway` | | DISCOVERY_FILTER | string | No | Excluded BLE devices models `[IBEACON,GAEN,MS-CDP,APPLE_CONT]` | | ADAPTER | string | No | Bluetooth adapter (e.g. hci1 on Linux) | | SCANNING_MODE | string | No | Change scanning mode between `active` and `passive`, defaults to `active` | | TIME_SYNC | string | No | Addresses of BLE devices to synchronize time (defaults to the empty list `[]`) | | TIME_FORMAT | boolean | No | Use 12-hour (`yes`) or 24-hour (`no`) time format for clocks (defaults to `no`) | +| IDENTITIES | json | No | IRK to resolve private addresses, example { "00:11:22:33:44:55:66":"0dc540f3025b474b9ef1085e051b1add","AA:BB:CC:DD:EE:FF":"6385424e1b0341109942ad2a6bb42e58"} | +| BINDKEYS | json | No | Addresses and key to decrypt data, example { "00:11:22:33:44:55:66":"0dc540f3025b474b9ef1085e051b1add","AA:BB:CC:DD:EE:FF":"6385424e1b0341109942ad2a6bb42e58"} | +| ENABLE_TLS | boolean | No | Activate TLS | +| ENABLE_WEBSOCKET | boolean | No | Activate WebSocket | For more details please refer to [TheengsGateway](https://theengs.github.io/gateway/). diff --git a/theengsgateway/Dockerfile b/theengsgateway/Dockerfile index b431772..f29b326 100644 --- a/theengsgateway/Dockerfile +++ b/theengsgateway/Dockerfile @@ -1,9 +1,9 @@ ARG BUILD_FROM FROM $BUILD_FROM -LABEL io.hass.version="1.8.0" io.hass.type="addon" io.hass.arch="armv7|armhf|aarch64|i386|amd64" +LABEL io.hass.version="1.9.0" io.hass.type="addon" io.hass.arch="armv7|armhf|aarch64|i386|amd64" RUN apt-get update && apt-get upgrade -y && \ apt-get install --no-install-recommends -y build-essential bluez python3-pip python3-dev && \ - pip3 install --extra-index-url=https://www.piwheels.org/simple TheengsGateway==1.1.0 + pip3 install --extra-index-url=https://www.piwheels.org/simple TheengsGateway==1.2.0 ENV current /root ENV HOME $current WORKDIR $current diff --git a/theengsgateway/config.json b/theengsgateway/config.json index 5ccb6b3..9702778 100644 --- a/theengsgateway/config.json +++ b/theengsgateway/config.json @@ -1,6 +1,6 @@ { "name": "TheengsGateway", - "version": "1.8.0", + "version": "1.9.0", "slug": "theengsgw", "description": "TheengsGateway HA Add-on", "url": "https://github.com/mihsu81/addon-theengsgw", @@ -28,13 +28,17 @@ "TIME_BETWEEN": 60, "LOG_LEVEL": "WARNING", "DISCOVERY": true, - "DISCOVERY_TOPIC": "homeassistant/sensor", + "DISCOVERY_TOPIC": "homeassistant", "DISCOVERY_DEVICE_NAME": "TheengsGateway", "DISCOVERY_FILTER": "[IBEACON]", "ADAPTER": "", "SCANNING_MODE": "active", "TIME_SYNC": "[]", - "TIME_FORMAT": false + "TIME_FORMAT": false, + "ENABLE_TLS": false, + "ENABLE_WEBSOCKET": false, + "IDENTITIES": "", + "BINDKEYS": "" }, "schema": { "MQTT_HOST": "str", @@ -57,6 +61,10 @@ "ADAPTER": "str?", "SCANNING_MODE": "str?", "TIME_SYNC": "str?", - "TIME_FORMAT": "bool?" + "TIME_FORMAT": "bool?", + "ENABLE_TLS": "bool?", + "ENABLE_WEBSOCKET": "bool?", + "IDENTITIES": "str?", + "BINDKEYS": "str?" } } diff --git a/theengsgateway/run.sh b/theengsgateway/run.sh index 148bd08..e9058a5 100644 --- a/theengsgateway/run.sh +++ b/theengsgateway/run.sh @@ -26,6 +26,10 @@ DISCOVERY_FILTER=$(bashio::config 'DISCOVERY_FILTER') ADAPTER=$(bashio::config 'ADAPTER') TIME_SYNC=$(bashio::config 'TIME_SYNC') TIME_FORMAT=$(bashio::config 'TIME_FORMAT') +IDENTITIES=$(bashio::config 'IDENTITIES') +BINDKEYS=$(bashio::config 'BINDKEYS') +ENABLE_TLS=$(bashio::config 'ENABLE_TLS') +ENABLE_WEBSOCKET=$(bashio::config 'ENABLE_WEBSOCKET') # Convert the booleans to integers (1 for true, 0 for false) in single lines PRESENCE=$( [ "$PRESENCE" = "true" ] && echo 1 || echo 0 ) @@ -33,6 +37,11 @@ PUBLISH_ALL=$( [ "$PUBLISH_ALL" = "true" ] && echo 1 || echo 0 ) PUBLISH_ADVDATA=$( [ "$PUBLISH_ADVDATA" = "true" ] && echo 1 || echo 0 ) DISCOVERY=$( [ "$DISCOVERY" = "true" ] && echo 1 || echo 0 ) TIME_FORMAT=$( [ "$TIME_FORMAT" = "true" ] && echo 1 || echo 0 ) +ENABLE_TLS=$( [ "$ENABLE_TLS" = "true" ] && echo 1 || echo 0 ) +ENABLE_WEBSOCKET=$( [ "$ENABLE_WEBSOCKET" = "true" ] && echo 1 || echo 0 ) + +bashio::log.info "IDENTITIES: ${IDENTITIES}" +bashio::log.info "BINDKEYS: ${BINDKEYS}" { echo "{" @@ -54,8 +63,18 @@ TIME_FORMAT=$( [ "$TIME_FORMAT" = "true" ] && echo 1 || echo 0 ) echo " \"discovery_device_name\": \"${DISCOVERY_DEVICE_NAME}\"," echo " \"discovery_filter\": \"${DISCOVERY_FILTER}\"," echo " \"adapter\": \"${ADAPTER}\"", - echo " \"time_sync\": \"${TIME_SYNC}\"", - echo " \"time_format\": \"${TIME_FORMAT}\"" + echo " \"time_sync\": ${TIME_SYNC}", + echo " \"time_format\": \"${TIME_FORMAT}\"", + echo " \"enable_tls\": ${ENABLE_TLS}", + echo " \"enable_websocket\": ${ENABLE_WEBSOCKET}" + # Check if IDENTITIES is not empty, then include it + if [ -n "${IDENTITIES}" ]; then + echo ", \"identities\": ${IDENTITIES}" + fi + # Check if BINDKEYS is not empty, then include it + if [ -n "${BINDKEYS}" ]; then + echo ", \"bindkeys\": ${BINDKEYS}" + fi echo "}" } > "${CONFIG}"