All notable changes to this project will be documented in this file. This project uses Semantic Versioning.
- Correct operation with node v20.x
- Update node revisions to: [18.x, 20.x, 22.x]
- Housekeeping
- Update eslint rules to include
'@typescript-eslint/no-unused-expressions': 'off'
for compatibility with eslint v9.15.0.
- Updates for compatibility with Homebridge v1.8.5.
- Add support for updated Developer Token preamble text.
- Update @typescript-eslint/eslint-plugin to "^8.0.0", and @typescript-eslint/parser: "^8.0.1".
- Update eslint to "^9.0.0".
- Housekeeping of error warning levels for consistency.
- Address Server-Side Request Forgery in axios by making minimum axios revision level 1.7.3 - https://github.com/advisories/GHSA-8hc4-vh64-cxmj
- Confirm plug-in operation with Homebridge 2.0.0. Updated package.json per homebridge instructions.
- Incorporates updated Awair Score methodology for Awair Element (Firmware v1.4.0) and Awair Omni (Firmware v1.8.0) introduced by Awair in Dec 2023. NOTE that updated methology does not apply to Awair R2. See Awair Reference and plugin README for additional details.
- Change default IAQ method to
awair-score
.
- Add plug-in Setting option to select temperature units (C or F) and time format (12hr or 24hr) when Display Modes are enabled.
- Update node-version: [18.x, 20.x], remove 16.x which is no longer supported by homebridge.
- [Housekeeping] Update devDependencies for "@typescript-eslint/eslint-plugin": "^6.1.0", and "@typescript-eslint/parser": "^6.1.0".
- [Housekeeping] Update supported node-versions to [16.x, 18.x, 20.x] dropping 14.x which is end-of-life.
- [Housekeeping] Additional logging improvements.
- [Housekeeping] Update README.md to include npm version and number of npm downloads.
- [Enhancement] Check if tvoc > 100,000 and if so set to 100,000.
- [Housekeeping] Update devDependencies to latest versions.
- [Housekeeping] Improved logging.
- [Housekeeping] Update
node.js
compatible build versions. Add18.x
, remove12.x
, as Homebridge supports versions14.x
,16.x
and18.x
. - [Housekeeping] Update
package.json
engines
anddependencies
to current supported versions.
- [Housekeeping] Add 'ambient.d.ts' src file as workaround when updating to Homebridge 1.6.0 for "node_modules/hap-nodejs/dist/lib/Advertiser.d.ts:5:29 - error TS7016: Could not find a declaration file for module '@homebridge/dbus-native'. '…/node_modules/@homebridge/dbus-native/index.js' implicitly has an 'any' type."
- [Housekeeping] Roll back axios from 1.1.3 to 0.27.2 to address plug-in startup errors.
- [Functionality] Remove support for Awair v1, Glow and Glow-C which are 'sunsetted' by Awair as of 30 Nov 2022. With this change, Awair removed iOS app and Awair Cloud support for these devices which is required by the plug-in.
- [Housekeeping] Update README.md and Wiki for iOS 16 and removal of 'sunsetted' devices.
- [Housekeeping] Add check to confirm that Developer Token is valid JSON Web Token (JWT) as condition to starting plugin.
- [Housekeeping] Bump axios from 0.27.2 to 1.1.3.
- [Security] Address potential vunerabilites by updating to
minimist ^1.2.7
andoptimist ^0.5.2
. - [Housekeeping] Update dependent node modules to latest versions.
- [Enhancement] Verify Awair server status prior to axios.get call to Awair servers (axios 'validateStatus' option). Add additional error logging.
- [Housekeeping] Update dependent node modules to latest versions.
- [Housekeeping] Check if device exists based on
deviceUUID
rather thanserial
for consistency with cache restore checks.deviceUUID
used as basis for HomebridgeUUID
. - [Logging] Add accType to logging messages added in v5.9.7 so that UUIDs can be more easily tracked.
- [Logging] Add additional logging for homebridge accessory UUID during addition of new Awair device and recovery from cache for existing Awair devices.
- [Housekeeping] Plug-in initialization code and logging improvements.
- [Housekeeping] Update dependent node modules to latest versions.
- [Enhancement] Add option to enable/disable VOC and PM2.5 binary limit switches.
- [Housekeeping] Update dependent node modules to latest versions.
- [Security] Update
minimist
dependecy to version>=0.2.1
to address CVE-2020-7598 security advisory. - [Housekeeping] Improve error logging for
updateAirQualityData
,getBatteryStatus
andgetOccupancyStatus
to includeaccessory.context.serial
in logging output.
- [Bug] Correctly report humidity. Was returning
0%
for all Awair devices.
- [Housekeeping] Added explicit return types for all functions. Added explicit
return
to close all functions as appropriate. - [Improvement] Refactored
updateAirQualityData
function for cleaner operation. Updatedaxios.get
syntax. - [Bug] Corrected syntax of
voc
andpm25
cases inupdateAirQualityData
function to correctly usegetCharacteristic
for currentvalue
.
- [Housekeeping] Update node_module dependencies to latest versions.
- [Security] Update
follow-redirects
to version 1.14.7 to address CVE-2022-0155 security advisory.
- [Enhancement] Add binary limit switches for VOC and PM2.5. The switches are implemented as dummy
occupancy sensors
and can be used to trigger HomeKit automations. - NOTE: Awair device(s) need to be deleted from Homebridge cache followed by Homebridge restart in order to add VOC and PM2.5 limit switch capability. This also will require that the Awair device(s) be reconfigured in HomeKit including room location and automations.
- [Housekeeping] Typescript syntax and readability improvements.
- Updates to
index.ts
,package.json
, andpackage-lock.json
for compatibility witheslint v8.50
and@typescript-eslint v5.7.0
.
- Update to
lockfileversion 2
. The lockfile version used by npm v7, which is backwards compatible to v1 lockfiles.
- Updated index.ts for compatibility with axios v0.24.0 which changed
never
type tounknown
. Added specification that response data should beany
.
- Update index.ts code comments to support future updates. No functional changes to code.
- Address dns-packet security vulnerability. Reference CVE-2021-23386.
- Correct
switch
statement for fall through condition ingetUserInfo()
function. - Confirm latest @dependabot updates.
- Removed node v10.x from support versions.
- Added node v16.x to supported versions.
- Housekeeping. No functional changes.
- [Bug] Correct Display and LED Mode initialization of compatible devices to ensure that 'Score' and 'Auto' are selected as defaults.
- [Bug] Initialize IAQ characteristics with numberic values to address Homebride v1.3.x warning.
- [Housekeeping] Remove duplicate entries from package-lock.json.
- [Housekeeping] In config.schema.json change 'default' to 'placeholder' for 'carbonDioxideThreshold' and 'carbonDioxideThresholdOff' entries.
- [Enhancement] Awair Device and LED modes cache values are used if available - applies to Omni, R2 and Element. For new device, Device mode is set to 'Score' and LED mode is set to 'Auto'.
- [Housekeeping] Update of function names for clarity.
- [Enhancement] Update 'changeLEDMode' Manual mode and brightness behavior.
- [Housekeeping] aligning with @dependabot merges.
- [Bug] Correct error in 'changeLEDMode' function.
- Updates for Homebridge 1.3.x compatibility. Set minimum level for Omni lux to 0.0001.
- [Bug] Corrected issue -
Multiple air data API calls during a single polling interval #66
. Determined that accessories were being duplicated resulting in additional API calls. For the HobbyistRequest failed with status code 429
, was returned on API calls as API call limits were exceeded. - Update if statement logic with
()
to ensure consistency and readability. - Update logging for consistency.
- [Bug] Fix correctly checking whether config entries exist PR #66.
- [Enhancement] If
awair-pm
selected, Glow and Glow-C will useawair-aqi
method with configuredendpoint
andlimit
.
- [New] Add
awair-pm
'air quality method'. When 'awair-pm' selected, the HomeKit Air Quality tile only reflects the particulates value, which is useful for automating air purifiers.
- [Enhancement] Update config schema titles to provide better description and consistency across titles.
- [Enhancement] Update README.md to be consistent with config schema changes. Clarify that when upgrading from 5.6.4 to 5.7.x that you should first uninstall plug-in, reboot, reinstall, configure and reboot. This is due to change in device accessory cache format.
- [New] Added functionality to control Awair display and brightness. Only applies to Omni, Awair-R2 and Element.
NOTE:
When migrating from
v5.6.3
tov5.7.0
please first uninstallhomebridge-awair2
(copy your Developer Token first), restart Homebridge to clear 'homebridge-awair' cached accessories, installhomebridge-awair2
, add your Developer Token, and finally restart Homebridge one more time.
- Change
carbonDioxideThreshold
default from 0 to 1000 andcarbonDioxideThresholdOff
default from 0 to 800.
- Updates for setting up Raspberry Pi for Homebridge and awair2.
- config.schema.json - changed
placeholder
todefault
onuserType
,airQualityMethod
,carbonDioxideThreshold
andcarbonDioxideThresholdOff
. - Add check that
carbonDioxideThresholdOff
is less thancarbonDioxideThreshold
. If not, set todefault
values.
- Housekeeping - remove unused functions (getLocalData, getLocalConfig, getApiUsage).
- Correctly define Awair devices as 'air quality monitor', not 'air purifier'.
- Add NowCast-AQI
airQualityMethod
for Omni, Mint, Awair, Awair-R2 and Element. NowCast-AQI fixesendpoint
to15-min-avg
anddata points returned
to48
(12 hours) for these devices. For Awair Glow and Awair Glow C,airQualityMethod
is set toawair-aqi
with same fixedendpoint
anddata points returned
. - Correct Awair, Glow and Glow-C reporting of PM25 which is not available on these devices. NOTE: Installed devices need to be removed from Homebridge followed by reboot to correct. Individual devices can be removed through Homebridge UI settings.
- Update config.schema.json to conditionally show options based on prior entries.
- Logging clean-up.
- Add instructions to README.md for migrating from
homebridge-awair
tohomebridge-awair2
. - Address "StatusCodeError: 400" and "404" due to errors in handling of config.json entries.
- Check that data sampling
limit
does not exceed maximum allowed perendpoint
. - Set
raw
data sampling fornon-Hobbyist
tier to have minimumpolling_interval
of 60 seconds. - Improve error handling for
axios
HTTP calls.
- Replace request-promise with axios as request-promise has been depricated.
- Change @dependabot scanning from 'daily' to 'weekly'.
- Removed extraneous packages from package-lock.json.
- Added dependabot.yml file.
- Approved and merged @dependabot pull requests.
- Confirmed plugin operation after merges.
- Add the
Verified by Homebridge
badge and update README.md header.
- Minimum Omni occupancy level changed to 48.0dBA per Omni specifications.
- Addition of Wiki screenshots.
- Omni occupancy detection improvments. Minimum sound level set to 47dBA based on dust sensor fan noise as guard for spurious low reading. Provide option to restart detection algorithm on Homebridge restart.
- Omni occupancy detection improvments. Now based on minimum detected sound level + user defined offset.
- Correct existing device recovery from cache on Homebridge restart.
- Update build.yml to only include even numbered releases of node.js [10.x, 12.x, 14.x]
- Update README.MD to provide additional details on adding 'test' devices to 'exclude' list.
- Add experimental support for Omni auto occupancy detection base on minimum sound level detected.
- Update to address build error TS6059: File 'package.json' is not under 'rootDir' '/homebridge-awair2/src'. 'rootDir' is expected to contain all source files.
- Add Omni occupancy detection based on sound pressure level.
- Check that Awair MAC contains Awair OUI "70886B" for 'end user' devices.
- Add "Development" mode to allow use of 'test' devices.
- Define MAC addresses for unregistered 'test' devices based on deviceId. Will begin with '000000'.
- Rename "updateStatus" to "updateAirData" to better reflect intent of function.
- Update comments to provide additional information.
- Update README.md, config-sample.json, config-schema.json for these changes.
- General code review for consistency.
- Removed Mint battery check as this function only applies to Omni.
- Revise Omni battery check to include Mint. Applies to v1.3.0 firmware and below.
- Re-implemented 'vocMw' as an optional configuration in the settings
- Fixed minor typos
- Fixed typo on Air Quality conversion for method
aqi
toawair-aqi
- Corrected Awair 1st Edition
dust
convertAwairAqi thresholds - Reverted
limit
behavior for5-min-avg
and15-min-avg
endpoints, but notlatest
- Changed default
limit
to1
and defaultendpoint
to15-min-avg
- Added more thorough description of
limit
behavior to README.md
- Add support for Omni to use LocalAPI capability for battery-charge, battery-plugged, lux and spl_a (spl_a not currently supported in HomeKit).
- Add option to define Awair account devices to be ignored and not be published in HomeKit.
- Updates to index.ts, configTypes.ts, config.schema.json, config-sample.json, package.json, and package-lock.json to support ignoredDevices funcionality.
- Republish of v5.2.5 due to v5.2.6 error.
- Version published in error and removed from npm.
- Added
getUserInfo
andgetApiUsage
functions. polling_interval
now based onuserType
andendpoint
.- Added
UserInfoConfig
toconfigTypes.ts
. - Corrected logic in
setInterval
to fetch Omni battery status on 4thupdateStatus
check. - Updated use of
limit
in config.json to only apply toraw
endpoint. Defaults to 1 for other endpoints. - Added
verbose
logging flag which will log results from API data calls. - Updates to config.schema.json for
limit
description and removal ofpolling_interval
. - Update to
config-sample.json
to removepolling_interval
. - Updates to README.md.
- Updates from testing multiple Awair units. Base functionality confirmed for Awair, Awair-r2, Awair Element, Awair Glow C and Awair Omni.
- Corrected data sampling when multiple units are configured.
- Updated Awair Omni battery sampling.
- Reverse order of CHANGELOG.md entries with most recent at top.
- Updates to README.md.
- Added low battery alert (<30%) for Omni. Battery status shows up on all 4 sensors (Air Quality, CO2, Humidity & Temperature).
- Updated README.md with battery status details and added screenshot example for iOS14.
- Awair Onmi has battery, not Awair Mint. Updates to README.md and indes.ts files.
- Cleanup of comments in index.js code (no functional changes). Files updated: README.md, src/index.ts, package.json, package-lock.json, CHANGLOG.md.
- Update of Class declarations to remove Readonly for changeable variables and provide default values. Added check for presence of optional parameteres in config.json to override defaults.
- Update to correctly handle default configuration values plus general cleanup of code.
- Files updated: README.md, src/index.ts, src/configType.ts, config.schema.json, package.json, package-lock.json, CHANGLOG.md.
- First version of awair2 plugin in TypeScript format implementing Homebridge dynamic platform.
- Started at version 5.0.0 as homebridge-awair was at version 4.6.3.