homebridge-foobot

Foobot plugin for homebridge: https://github.com/nfarina/homebridge

Usage no npm install needed!

<script type="module">
  import homebridgeFoobot from 'https://cdn.skypack.dev/homebridge-foobot';
</script>

README

contributions welcome HitCount GitHub last commit npm

homebridge-foobot

This is a homebridge plugin which lets you integrate your Foobot air quality monitor into HomeKit.

First things first - Thanks to:

This plugin is heavily based on homebridge-blueair plugin. Without it, this plugin won't be here now. Thank you @mylesgray for the inspiration and work on the blueair and foobot api integration!

Also, thanks to @iRonin for contributing (https://github.com/iRonin)!

What is Foobot?

Foobot is an awesome little indoor quality monitor gadget by Airboxlab, that I use for years now. Not really sure if official HomeKit support will ever be announced, so time to integrate it with the rest of the HomeKit accessories I already have.

General info

This plugin exposes all Foobot API characteristics for Air Quality and assigns them to native HomeKit Characteristics. The plugin will also mimic the Elgato Eve Room device such that, if using Eve.app on an iOS device, you will have historical logging and graphs of these metrics.

Currently all history state is stored on the local filesystem of the device running homebridge.

Screenshots

Home

Overview Air quality sensor
Overview Air Quality
Eve App
Eve app

Configuration

Installation

npm install homebridge-foobot

config.json

The configuration is pretty straightforward, with the exception of the API key. You have to obtain it from Foobot API for Developers page. Username and Passwords are what you use for to login in Foobot's native mobile app.

foobotDeviceIndex - allows you to work with specific devices, in case you have several foobots.

Once you get it working, you can turn off individual sensors, or disable the historical stats via the getHistoricalStats flag.

logTempToFile and logTempToFilePath allows you to specify file, in which the temperature will be logged. This way, external services can read from this file and use it as input - for example your AC, which you might control with an IR blaster such as Broadlink RM Mini3.

updateInterval - By default is set to 600000ms (10 minutes)

 "accessories": [
  .
  .
  .
  {
      "accessory": "FooBot",
      "name": "Foobot",
      "foobotDeviceIndex": 0,
      "uuid": "Optional - device uuid string in case you have multiple devices. Otherwise, leave blank",
      "username": "email@domain.com",
      "password": "password",
      "apikey": "a_long_string_of_api_key_here",
      "nameAirQuality": "Air Quality",
      "nameTemperature": "Temperature",
      "nameHumidity": "Humidity",
      "nameCO2": "Carbon Dioxide",
      "showTemperature": true,
      "showHumidity": true,
      "showAirQuality": true,
      "showCO2": true,
      "getHistoricalStats": true,
      "logTempToFile": true,
      "logTempToFilePath": "/Users/georgichokov/foo/temp.txt",
      "updateInterval": 600000
  },
  .
  .
  .
]