npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

homebridge-awair-local

v2.2.1

Published

Awair Local dynamic platform plugin for Homebridge v2

Readme

homebridge-awair-local

Homebridge v2 dynamic platform for Awair devices using their local API. It exposes temperature, humidity, CO2, TVOC, PM2.5, PM10 and (for Mint/Omni) light services. No Awair cloud credentials are needed.

Privacy

The plugin communicates only with Awair devices on the local network. It contains no analytics, telemetry, or cloud API calls. Device addresses and readings remain on the Homebridge host and local network.

Requirements

  • Homebridge 2.0 or newer
  • Node.js 22 or 24
  • Awair Local API enabled. The device must answer /air-data/latest and /settings/config/data on the local network.

Configuration

Install the plugin from the Homebridge UI and add Awair Local from the Plugin Settings screen. The settings GUI supports automatic discovery and manual device entries. You can also use the following JSON configuration.

Use a single platform entry rather than the former accessories entries:

{
  "platform": "AwairLocal",
  "name": "Awair Local",
  "discovery": true,
  "devices": [
    {
      "name": "Living Room Awair",
      "ip": "192.168.1.70",
      "carbonDioxideThreshold": 1000,
      "carbonDioxideThresholdOff": 800,
      "air_quality_method": "awair-pm25",
      "polling_interval": 10
    }
  ]
}

All prior device settings are available inside devices: ip, url, model/devType, manufacturer, serial, version, carbonDioxideThreshold, carbonDioxideThresholdOff, voc_mixture_mw, air_quality_method, polling_interval, limit, logging, and logging_level. configUrl/config_url and requestTimeout are also supported. Defaults are CO₂ alert/clear thresholds of 1000/800 ppm, a 10-second polling interval, awair-pm25, 1 data point, and a VOC molecular weight of 72.6657827301974.

Discovery

Discovery is disabled by default; set discovery to true to enable it. It browses _http._tcp.local, follows advertised HTTP service records, and only adds a service when its /settings/config/data response identifies an awair-* device. Some Awair models do not advertise a browsable DNS-SD service even though they support mDNS hostnames. For those models, the plugin also probes the Homebridge host's private IPv4 subnet (up to 254 usable addresses by default) and verifies each candidate with the same endpoint. Set subnetDiscovery to false to disable this fallback, or lower subnetDiscoveryMaxHosts to avoid scanning larger networks. Discovered accessories are cached by device UUID (or MAC address), so they survive restarts and receive address updates.

Awair documents mDNS hostnames (for example, awair-elem-56cd78.local) but does not document one DNS-SD service type for all models. Devices that advertise only a hostname cannot be enumerated by mDNS; add those names to discoveryHostnames or configure their ip/hostname in devices. You can customize mdnsServiceTypes for installations that know their service type.

Migration

Replace each old accessories entry with an object in the platform's devices array, and replace "accessory": "AwairLocal" with "platform": "AwairLocal". Existing setting names retain their meaning. The old limit option is retained for compatibility but has no effect on /air-data/latest, which returns one reading.

Development and releases

Run npm run lint and npm test before opening a pull request. CI verifies installation, linting, tests, and the package contents on Node.js 22 and 24. Publishing from master creates the npm release, an annotated Git tag, and a GitHub release with generated notes.