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 🙏

© 2024 – Pkg Stats / Ryan Hefner

openhab-blueair

v1.1.0

Published

BlueAir plugin for OpenHAB: https://www.openhab.org

Downloads

7

Readme

openhab-blueair

An OpenHab collection of Items, Rules & Scripts that that allow you to control a BlueAir Air Purifier from OpenHAB rules and sitemaps.

As provided, the scripts allow you to adjust the fan speed, from OFF (0) to HIGH (3) and retrieve device information and settings, assigning them to OpenHAB Items as you see fit (requires Rule modifications)

Important

v1.1.0 of this library introduced a change to the command line arguments which will be a breaking change for current users. See below for the additional argument which provides support for multiple devices.

Requirements

  • OpenHAB 2.x (tested on 2.3.0/2.4.0/2.5.0M1)
  • The OpenHAB Exec Binding
  • NodeJS 8+
  • Yarn or NPM

Installation

  1. Ensure you have the requirements installed on the same server as OpenHAB
  2. Go to your OpenHAB scripts directory (on Linux this is /etc/openhab2/scripts)
  3. Install this package using yarn/npm: yarn add openhab-blueair
  4. You should now have a folder in your scripts dir for openhab-blueair
  5. Depending on your setup, you probably need to change the file ownership of the new folder chown -R openhab: node_modules/

Setup

config.json

Copy the existing config-example.json to config.json in the same folder and update the username & password to match the details you use in the BlueAir app. If you have more than one BlueAir, you can adjust the device index here (in case you have more than one BlueAir - though this script is currently limited to interacting with one device). For testing, you can also turn on debug (will break OpenHAB - see Troubleshooting below).

Things

You need to setup two Things in OpenHAB to connect the node script to OpenHAB.

| Thing | Command | Transform | Interval | Timeout | Autorun | | ----------------|----------------------------------------------------------------------------------|-------------|----------|---------|---------| | blueairInfo | /usr/bin/node /etc/openhab2/scripts/node_modules/openhab-blueair/index.js <index or mac> info | REGEX((.)) | 120 | 30 | OFF | | blueairFanSpeed | /usr/bin/node /etc/openhab2/scripts/node_modules/openhab-blueair/index.js <index or mac> fan-speed %2$s | REGEX((.)) | 0 | 30 | OFF |

You can do this via the web interface OR in the file system - however you normally do this should be fine. Replace <index or mac> with either the device number you want to return (starts at 0 - enter this if you have only one device!) OR the mac address of your device (available in the BlueAir app, or in debug mode of this script). If you have multiple devices, these are now addressable in OpenHAB - just create more Things.

Items

Add the following Items to an existing or new file in /etc/openhab2/items folder

// BlueAir Air Purifier
String BlueairInfo {channel="exec:command:blueairInfo:output"} // Exec binding stores the JSON response from the API into this Item
Number BlueairSettings_FanSpeed "Fan Speed" // Fan Speed item
Number BlueairSettings_LEDBrightness "LED Brightness [%s]" // LED Brightness. Not currently implemented
String BlueairInfo_UUID "UUID [%s]" // Device UUID. Example of getting element from info response

Switch BlueAirFanSpeedExec {channel="exec:command:f0ad9cd4:run"} // Switch to trigger API call to change Fan Speed
String BlueAirFanSpeedArgs {channel="exec:command:f0ad9cd4:input"} // argument to supply to Fan Speed (should be 0-3)
String BlueAirFanSpeedOut {channel="exec:command:f0ad9cd4:output"} // the response from the fan speed API call

Sitemap

Example Sitemap entries to allow Fan Speed to be managed and example of LED switch (not implemented currently). Add this to your existing Sitemap as you see fit.

    Frame label="Air Purifier" {
        Switch item=BlueairSettings_FanSpeed label="Fan Speed" icon="fan" mappings=[0="OFF", 1="Low", 2="Med", 3="High"]
        Setpoint item=BlueairSettings_LEDBrightness label="LED" icon="slider" minValue=0 maxValue=4
        Text item=BlueairInfo_UUID label="Device ID" 
    }

Rules

Copy the blueair.rules file from /etc/openhab2/scripts/node_modules/openhab-blueair into your rules folder (/etc/openhab2/rules/). Edit as you see fit.

Troubleshooting

To confirm the script is installed with all the pre-requisites and authentication is working, update the config.json file to debug=1 and then from the command line of your OpenHAB server, run the following:

/usr/bin/node /etc/openhab2/scripts/node_modules/openhab-blueair/index.js info

You should get some output from your router similar to the below. If not, check your steps again and make sure your login details are correct

Polled API:https://api.foobot.io/v2/user/[email protected]/homehost/
Got home region:api-us-east-1.foobot.io
Polled API:https://api-us-east-1.foobot.io/v2/user/[email protected]/login/
Logged in to API
Got token: <your login token for this session>
Polled API:https://api-us-east-1.foobot.io/v2/owner/[email protected]/device/
[ { uuid: '<your UUID>',
    userId: 12345,
    mac: '<your mac>',
    name: 'some value' } ]
1
Got device ID
Polled API:https://api-us-east-1.foobot.io/v2/device/<your UUID>/info/
Already have device ID
Polled API:https://api-us-east-1.foobot.io/v2/device/<your UUID>/attributes/
Got device settings
{ info:
   { uuid: '<your UUID>',
     name: 'some value',
     timezone: 'Australia/Sydney',
     compatibility: 'classic_205',
     model: '1.0.9',
     mac: '<your mac>',
     firmware: '1.1.37',
     mcuFirmware: '1.0.35',
     wlanDriver: 'V10',
     lastSyncDate: 1549536167,
     installationDate: 1546495433,
     lastCalibrationDate: 1546495433,
     initUsagePeriod: 0,
     rebootPeriod: 10800,
     roomLocation: 'kitchen',
     filterusageindays: 0,
     filterlifeleft: 180,
     filterlevel: 100 },
  settings:
   { auto_mode_dependency: '...',
     brightness: '0',
     child_lock: '0',
     dealerCountry: 'Australia',
     dealerName: '',
     fan_speed: '1',
     fan_usage: '186;8117;15;1631;9769;42071',
     filterType: 'cn',
     filter_status: 'OK',
     mode: 'manual',
     purchaseDate: '',
     serial: '',
     wifi_status: '1' } }

Credits & thanks

This would not have been possible without the work by @mylesagray and his blueair - homebridge code. I've borrowed plenty of his code and ideas to get this working. Thanks Myles!

There's plenty of additional methods and APIs supported in his version, particularly around air quality monitoring. My Blue Air doesn't have these features, so I haven't implemented them, but if you need them, I'll consider any reasonable PR to add them.