HACKER Q&A
📣 TeMPOraL

Indoor air quality sensors and other IoT that's local-first and not DIY?


I've recently been looking into assembling an indoor air quality monitoring system, and so far have failed to found any solution that would meet the following criteria simultaneously:

1. Connected for data logging, but local-first. That is, no mandatory Internet connection to vendor cloud. Ability to point to my own server (in my local network), or at least download a data dump off device every now and then (even if over a wire, as a last resort).

2. Not strictly industrial-use. I.e. one that doesn't require me to become a large corporation to buy some, and that doesn't require some proprietary, expensive, and/or old-school industrial protocols to talk to.

3. Not DIY at the hardware level. I'm not that good with a soldering iron, and with small children, I have neither time nor workshop space to solder and assemble anything less trivial than "plug a sensor into an ESP32 and screw both into a box".

(EDIT: shmaybe I can solder a few through-hole components into a PCB, but can't do SMD nor make a custom PCB.)

4. Quality components. With sensors, I mean measuring what it says on a tin (vs. measuring something else and using a factory-provided lookup table to synthesize approximations), and doing it with reasonable accuracy and precision. If there's a calibration step to be done, it should be one that doesn't require me to incorporate myself to perform it.

I've spent some time looking at available options and past HN threads, and so far I discovered that:

- Most products that fit #2 and #3 fail at #1 - they're predominantly cloud-connected bullcrap, and going by review, they often fail at #4. Occasionally, I find something that fits #2, #3, and #4, but then it fails at #1 by... providing no data export option altogether - apparently, it's enough for the consumer to see traffic lights instead of numbers, or browse the readings from the device control panel.

- The DIY stuff I saw (failing #3 to smaller or greater degree) is weak in #4 - in some cases, I recognize the sensors as rather poor and tricky to use right (infamous DHT11 comes to mind), and in all cases, I don't know how one would go about calibrating anything.

My questions thus are:

- Does anyone here have a setup that solves for these four points, and if yes, could you share some details?

- How one would go about looking for vendors meeting those criteria, if they exist at all?

- In a broader sense, how do you go looking for any IoT-adjacent vendor that meets those criteria? It really seems to me that everyone wants me to install their godawful stupid app to connect to their broken cloud, and there's such a flood of those products that reviewers can't keep up with quality testing, and hackers can't keep up with reversing the proprietary protocols and firmwares.


  👤 akoutmos Accepted Answer ✓
Hey there! My co-authors and I actually wrote a book on this topic earlier this year. It walks you though setting up a weather station with Elixir and Nerves using a Raspberry Pi and the following sensors:

- VEML6030 light sensor - BME680 environmental sensor - SGP30 air quality sensor

After you set up the hardware side of things, you put together a very simple Elixir Phoenix REST API and persist the sensor data into Postgres (with the TimescaleDB extension).

And to wrap up the book, you learn how to create Grafana dashboards to visualize all your time-series data.

Everything is meant to be set up on your LAN and everything can be run either natively or in Docker (there is a Docker compose file in the repo).

Hope that helps!

GitHub Repo: https://github.com/akoutmos/nerves_weather_station Book: https://pragprog.com/titles/passweather/build-a-weather-stat...


👤 Terretta
We use these at office in conference rooms or 1:1 rooms, and encourage people to keep CO2 levels below 700-800 (an empty room 450-550). Very high quality, a half dozen all agree perfectly on all sensors. They support API.

# SAF Aranet4 Home

Wireless Indoor Air Quality Monitor for Home, Office or School (CO2, Temperature, Humidity and More) Portable, Battery Powered, E-Ink Screen, App for Configuration & Data History

- The perfect companion for indoor environments, allowing you to monitor CO2 levels, temperature, relative humidity, and atmospheric pressure in real-time

- Easy for anyone to use – the color coding and the optional buzzer warns you when the CO2 concentration gets too high

- Power-efficient e-ink display ensures super long battery life for this wireless device (up to 4 years)

- Smartphone app for viewing and analyzing historical data up to 14 days history (supports iPhone and iPad with iOS 12 or later, Android devices with Oreo 8.0 or later, compatible with Bluetooth 4.1 or later)

- Uses nondispersive infrared sensor (NDIR) technology for most precise and reliable CO2 measurements

https://smile.amazon.com/gp/product/B07YY7BH2W/

https://github.com/Anrijs/Aranet4-Python *

* Note: Smart Home Integrations must be enabled in Aranet4 mobile app for full support


👤 mvarrieur
I have an Airthings Wave Plus [1] which measures CO₂, Radon, VOCs, and some others but until recently I could only get the data out via the cloud integration.

Home Assistant recently added a BLE integration [2] with the device and it works great, way better than the Airthings app actually. So now I'm automatically logging and tracking all the data on a regular basis instead of hoping the app is still running in the background on my phone and updating the cloud.

I am not sure about initial setup since I had to go with the cloud integration to get it working in the first place a year or so ago, but maybe now you could skip that and just start reading the data off the BLE? It's possible but I cannot say for sure.

1. https://www.airthings.com/wave-plus

2. https://www.home-assistant.io/integrations/airthings_ble/


👤 christiangenco
I think it's difficult to make an electronic sensing device that logs data locally but isn't a little DIY. There's not a great standard for passing around data on a local network. Perhaps the best way to do this from a consumer device would be to log to a USB stick.

You asked for something that's not DIY at the hardware level, though, so I think something like the AirGradient Pre-Soldered kit would be perfect for you[1].

You'll get an Arduino connected to top-of-the-line sensors that can be flashed with your SSID to connect to your local WiFi network. Once connected, the device exposes an HTTP endpoint you can GET for the status of each sensor[2].

I've been thinking a lot about indoor air quality[3] so if this setup works for you I'd love to know!

1. https://www.airgradient.com/open-airgradient/shop/#!/DIY-Pro...

2. https://youtu.be/Cmr5VNALRAg?t=444

3. https://gen.co/air


👤 oger
I have several IKEA Vindriktning air quality sensors (measuring PM2.5 but not CO, CO2 or VOC) equipped with an ESP32 with Tasmota on it. The level of soldering is trivial and the hardware looks really nice. It feeds a Grafana dashboard via MQTT, Node RED and InfluxDB. All is well documented and easy to do - you will find lots of resources online. And the Tasmota toolchain can be used for many other sensors as well.

https://www.hackster.io/news/ikea-vindriktning-air-quality-s...


👤 nathan_f77
I recommend looking at Zigbee devices. They are local-first and don't require an internet connection (or any network at all.) If you don't have any existing home automation software or hardware, then the easiest way to get started is probably with a Home Assistant Yellow: https://www.home-assistant.io/blog/2021/09/13/home-assistant...

I've been very happy with my $20 Zigbee air quality sensors that I bought from AliExpress [1]. No DIY required, just plug them in and pair them with Home Assistant. These cheap sensors don't really have quality components or accurate readings, but they're accurate enough to get a good sense of my air quality and set thresholds to automate extractor fans and air purifiers.

If you really need a commercial-grade and highly accurate sensor, you could look at this iQi Zigbee sensor for $300 [2]. But I would recommend the $20 ones from AliExpress for home use.

[1] https://www.aliexpress.com/item/1005003815133870.html

[2] https://www.trutechtools.com/iqi-air-quality-monitor-v1-with...


👤 HTresearch
It sounds like you are looking for something like the air monitor I have been developing over the last two years. It is about the size of a deck of cards and fits in a shirt pocket. The Lithium Polymer battery powers it for 12-16 hours and is recharged with USB-C.

It uses a high-accuracy CO2 sensor (±(40 ppm + 5 %) and you can manually calibrate it to 420 PPM outdoor air. A key innovation is reporting via a dynanmic QR code on its 128x64 OLED display. Just point your phone camera at the QR code and it takes you to a site showing a report with graphs and data tables of recent measurements. There is no app to install or web site to log into. The web page is context-free and all of the measurement data is in the query string. It is nearly ready for production and likely to sell in the $150 price range.


👤 ahaucnx
We are maintaining a popular open source / open hardware air quality kit that is also available as a pre-soldered version [1].

It incorporates many of the features of our commercial monitor, e.g. high quality and accurate sensor components, professional looking plastic enclosure, air flow optimized PCB for accurate measurements etc.

Since it is open source it is very easy to point it to your own server. We do also have an active forum where you can get help and discuss specific things around the monitor [2].

On the pre-soldered kit that we sell, we test all components before shipping and preflash the MCU. It only consists of a few components that need to be plugged onto sockets already on the PCB. I am able to assemble it in less than five minutes (no soldering iron required).

We spend a lot of time and resources to get this open hardware kit right and you are correct that many -if not most- DIY air quality monitor project that you find on the internet have significant weaknesses (e.g. poor sensor selection, internal overheating of the temperature sensor) that leads to very inaccurate measurements.

Why do we do this? AirGradient started as a volunteer project to help a school in Thailand better manage air quality during wild fire season and from the start we worked with students building sensors. So this is part of our DNA and also an offical part of our company [3].

[1] https://www.airgradient.com/open-airgradient/kits/

[2] https://forum.airgradient.com/

[3] https://www.airgradient.com/open-airgradient/


👤 sigio
The https://operame.nl/Operame project made some designs/kits for CO² monitoring (in dutch classrooms). While this is mostly a DIY thing, assembly was really easy, and there were some volunteers even pre-assembling kits for third parties.

I have 2 of these sensors myself, and they report over mqtt (local), and I've connected them to homeassistant for live insight and possibly triggeging other events based on CO² levels.

The Operame project is currently on hold, but all designs/code are open and free to use.


👤 thinkmcfly
For any readers who need hand soldering for a project like this, you're welcome to dm me. Ship it to my house and I'll put it together. I'll do it for free (USA only)

Can do through hole + smd, but no bga


👤 d12bb
Anything HomeKit is local-first. That's one thing Apple actually got right, and thankfully has pushed into the new Matter industry standard too. Won't work without some Apple device though of course.

👤 diblasio
I also had this same problem to solve about a year ago. What I ended up doing was to build an iaq_board, and then plot the data in grafana.

https://esphome.io/cookbook/iaq_board.html https://github.com/nkitanov/iaq_board


👤 Confiks
I bought the Aranet4 a while ago, and that seems to meet all your requirements. Keeps measurement history local, but can be paired via Bluetooth (with a pairing code) through their (somewhat flaky) app or open source options. Has a hardware switch to disable Bluetooth. Good quality sensor. Very good battery live due to e-ink screen. Looks pretty neat as well. Quite expensive though, but almost every quality sensor is.

👤 themacks
I'm just starting a similar project to monitor my home. I decided on using esphome.io based devices connected to my Home Assistant setup. Spark Fun has a great ecosystem [1] of sensors and carriers [2] that are just plug and play as far as the hardware goes (no soldering). You would just need to DIY a case.

You could probably also find off the shelf Bluetooth sensors that would interface with Home Assistant for data logging and visualization.

[1]: https://www.sparkfun.com/categories/tags/qwiic [2]: https://www.sparkfun.com/products/17724


👤 Toutouxc
Probably not at the level that OP is asking about, but the IKEA Starkvind air purifier, aside from being a good-looking, cheap and effective home purifier, is a Zigbee device that exposes the raw PM2.5 sensor reading.

One Starkvind (or more if space and budget allow) and few temperature/humidity sensors (I have a few $10 ones from Sonoff), combined with a Raspberry or an HTPC running Home Assistant and any Zigbee gateway, can give you a better idea about what the air is like in your apartment than most people have.

I'm still looking for a non-DIY CO2 sensor solution I could add to my Zigbee based network, most of the stuff I've found is either totally DIY or industrial.


👤 janalsncm
Are there any high quality local-first IoT brands out there at all? I would be interested in a home assistant with some basic offline-only (or limited online) skills. For example, set a timer by voice, check the weather by voice, add something to a locally-synced calendar.

👤 birdman3131
Its not no soldering but it is low effort soldering. Pulling from a couple guides here.

Tasmota is local first.

Get a wemos D1 and a https://www.ikea.com/us/en/p/vindriktning-air-quality-sensor...

https://tasmota.github.io/install/ flash the unofficial all sensors build.

https://github.com/Hypfer/esp8266-vindriktning-particle-sens... Solder as follows GND to GND on ESP, 5V to 5V on ESP and finally the last one to D2 on the ESP.

Guides I am stealing from. https://github.com/Hypfer/esp8266-vindriktning-particle-sens... Has most of the hardware side. But its using a different software.

https://blakadder.com/vindriktning-tasmota/ is where I got most of the rest of the info but he uses a separate voltage regulator. If you use the Wemos D1 Mini you should not need that.

After that the internet has plenty of info for hooking tasmota and say home assistant together.


👤 iamacyborg
This should fit all yours needs.

https://www.evehome.com/en/eve-room


👤 awwww7229
Hello,

I would recommend taking a look and talking with this Finland-based company, they utilise a global 0G IoT network, and their devices are fully plug-and-play free from any electrical supply - thus just stick their device on your walls or place them where you want, and they'll support any data configuration needs.

no internet connection required, and they have their own working data software platform for all essential monitoring data, or your own platform via API.

From all your points, they seem to actually fit your needs from #1 to #4.

Here are their contact links: https://connectedinventions.com/about-us/ And here are their devices: https://connectedinventions.com/all-devices/


👤 wintermutestwin
I am generally not into "connect it all to the cloud" either, but I want to point out that cloud connected outdoor air quality sensors like Purpleair are tremendously valuable to society. Living in a wildfire prone CA, I am constantly monitoring PA sensors in my area to determine if it is safe to exercise outdoors.

👤 omh
I have the Awair Element and I'm reasonably happy with it.

The primary interface is through their app and I think you might need to use this to get it up and running initially. But they have a supported local API feature[1] that has so far worked as I'd expect. In the end I've been happy with their app so have primarily used that so far. The data seems good.

They're quite expensive new. But they were involved in some sort of cryptocurrency (!) that failed. So there are a lot of them available as nearly-new on eBay. In the UK I picked one up for about £60, I think.

[1] https://support.getawair.com/hc/en-us/articles/360049221014-...


👤 tlavoie
I did minimal hardware DIY for temp/humity/pressure, with some Adafruit ESP32 boards and BME280 sensors. The inside unit has one of their e-paper displays to show inside/outside info, and sits in a box from the dollar store. I'd think that adding the other sensors would be minimal other soldering for added bits, but I haven't gone there (yet). [Edit: this could be non-soldering with a breadboard, which my outside unit is still in, with a battery and in a soap dish with holes added.]

The more DIY side of mine is all the software, with MQTT as the glue. Both ESP32s publish to that, one subscribes (to show both), and a little daemon on the Pi with Mosquitto writes it all to an Sqlite database.


👤 moepstar
I think your best bet is ditching #3, go with ESPHome and use one of their sensors here: https://esphome.io/#air-quality

I've a few with PMS5003 sensors and have been satisfied so far...


👤 jvanderbot
I'm happy to set something up and sell you a few, but my experience making these is that the cost gets pretty steep for small batch, high quality runs.

It's been a side project of mine to set up a local-first IoT shop. But haven't gotten a lot of traction yet.


👤 anigbrowl
m5stack.com

Highly modular components aimed at tinkerers (connect electronically with grove connectors rather than soldering (unless you want to), Lego-compatible, programmable in C, micropython, or via blockly. It's very, very easy to get up and running. Also they're still doing 10-20% off today.

Cons: documentation is a bit mediocre, you're kinda expected to read datasheets/figure it out yourself past the basics. If you are OK with looking up chip/component numbers to see exactly what they do you'll be fine.


👤 gozdal
I have https://blebox.eu/product/airsensor/?lang=en and https://aranet.com/products/aranet4/

Unfortunately don't have the skills to measure the accuracy and precision but both are well reviewed in the Internets.


👤 flyinghamster
Whoops, this is a bit DIY-ish, but an SDR stick and rtl_433[1] can pick up many remote weather instruments, from simple temperature/humidity sensors to weather stations (and a wide variety of other devices as well).

[1] https://www.triq.org/rtl_433/


👤 colechristensen
Hey I’m working on exactly this!

Still brewing at the moment but send me an email at cole.christensen@gmail.com if you’re interested in updates, perhaps a free prototype in a few months.

The general idea is open hardware sensors you can do whatever you want with along with an optional paid cloud service.


👤 chaostheory
I haven’t kept up with commercial solutions. Full home automation even with the easy solutions eat up a lot of time especially with light switches. I remember only one brand that might meet the local first requirement. UI was clunky. https://hubitat.com/

Imo I’d go open source for the hub. Installing it on an older laptop shouldn’t take as much DIY

https://www.home-assistant.io/

https://www.openhab.org/

Sadly, you’re probably going to need to do some DIY if local first and air monitoring are your highest priorities

Edit: I forgot that Apple HomeKit is local first


👤 ctoth
The Ecowitt series of sensors work well for this, and then you can get the GW1100 gateway to get their readings in Home Assistant.

[0]: https://smile.amazon.com/ECOWITT-Temperature-Humidity-Partic...

[1]: https://smile.amazon.com/Ecowitt-Temperature-Humidity-Atmosp...

[2]: https://www.home-assistant.io/integrations/ecowitt/


👤 yobbo
You could try searching for "air quality sensor" on aliexpress. I have experience with this one [0] which purports to measure particles in various units, and I suspect it to be 20-30% inaccurate. The figure it gives for humidity is about 10-20% off from other cheap devices, but the sensor might be more accurate given that the device runs on USB and emits a non-zero amount of heat, which affects the local measurement. It supports data exports in real time over USB serial.

[0] https://www.aliexpress.com/item/4001127955294.html


👤 bithaze
I have a couple Eve Room air quality monitors[0] and like them. You do need the iOS app to view and export (XLSX format) historical data, but there's no cloud service or anything to sign up for. I charge them about once a month and usually look at the graphs every couple of days so I'll see then when a battery is getting low. The only other "smart" devices I have in my home are some lightbulbs, though, so I don't have any automation set up using the temperature or air quality.

[0] https://www.evehome.com/en-us/eve-room


👤 troysk
I have found sensors of air purifiers to be better than DIY or standalone ones. Dyson and Xiaomi have local endpoints which can be used to access data without access to internet. Home Assistant makes the process of collecting and storing data easy with HACS and some plugins.

You may also try Tuya based solutions which maybe flashed with ESPHome but they mostly use DHT11/14 based sensors and need some soldering.

Another approach is using a BLE based sensor and then using a BLE to WiFi bridge to get the data into HomeAssistant or similar product which can log the values.


👤 stevenhubertron
Home Assistant and Air things devices. My raspberry Pi uses BTLE to read data off sensor and it's logged there. I have 3 years of air quality measurements there.

👤 Corrspt
Not really what you want, but the Awair Quality sensors have a local API that you can use to fetch the data (not local-first, as you asked, but it works locally and you can disable internet connection)

https://support.getawair.com/hc/en-us/articles/360049221014-...


👤 digitalsushi
I'd kill for a Dylos-to-ESP32 cheat kit. That would be extremely valuable for my woodshop to monitor when I can resume a post-disaster activity.

👤 INTPenis
Well, what is it that you're measuring? co2? Particle density?

You say that you want the sensor to measure what it says on the tin, but maybe you should start by defining what "air quality" means.

And then maybe you can find some simple one-off components that do all the individual measurements. I for example found a cheap and simple USB connected co2 sensor, that just changes colors based on co2 levels.


👤 MisterTea
> , and that doesn't require some proprietary, expensive, and/or old-school industrial protocols to talk to.

why is old-school a problem?


👤 dburch1980
Please visit buildinglens.com. If you would like to talk further, reach out to me via LinkedIn.

https://www.linkedin.com/in/david-burchfield-pe-cem-83920233...


👤 igor47
I wrote a thing about this: https://igor.moomers.org/minimal-viable-air-quality

I still have a few of those pms7003s, if you're in the bay let me know and you can come grab some


👤 latchkey
Since you don't want DIY... I bought a Mila air filter. Has the sensors and the additional benefit of not just monitoring, but also cleaning the air.

https://milacares.com/


👤 hedora
I think Ambient Weather weather stations hit all your requirements. They can log to SD card, come with a display, and expose local only network endpoints. They can also upload to various web services.

👤 siyang_z
https://github.com/NiceLabs/mops-vida-pm-watchdog

You can connect it via Bluetooth protocol.


👤 siyang_z
https://github.com/NiceLabs/mops-vida-pm-watchdog

You can connect it via Bluetooth.


👤 ianai
Sensors offline first, but datacenter pricing: infrasensing.com


👤 bobleeswagger
YoLink isn't "local first" yet but they are aware it is an issue to be solved. They use LoRa.

👤 francis-io
Where would you start if you knew nothing about electronics but wanted to create this as a way to learn?

👤 brainzap
all HomeKit devices can be controlled locally

👤 vonnieda
TL;DR: Zwave and Zigbee are (almost) always local first. Home Assistant is great. Almost all CO2 sensors are bad.

I have the same goals with my setup, and I've been tinkering with home automation for a couple decades now, so I'll share what I've learned so far.

First, specifically for indoor air quality, and especially for real CO2, the options are terrible. eCO2 sensors are a dime a dozen, but they are awful. For real CO2 everything seems to be super industrial or cloud junk.

I'm using a variation on https://hackaday.io/project/186682-co2-buddy for CO2. It uses a high quality sensor and is really just three parts, or two if you don't want LEDs. You flash the ESP32 with esphome and then Home Assistant does the rest. Someone, maybe me, should build and sell these.

For PM2.5 I use a bunch of modified Vindriktning from IKEA. I added a tiny ESP32 board, soldered four wires, and installed esphome. I modified four in about an hour one evening. Someone, maybe me, should build and sell these.

For temperature and humidity I love the "Aqara Temperature and Humidity Sensor". I sprinkle these liberally around the house. They are Zigbee, so local by default. In fact, when shopping for home automation stuff, if you see something that "requires Hub" it usually means its either Zwave or ZigBee and will work just fine directly.

Home Assistant for control, data storage, graphing, dashboards, etc. It's free, open source, gets high quality monthly updates, good looking and responsive iOS and Android apps, great web interface, and most important to your question: has extremely good documentation when it comes to what is supported.

Take a look at the Integration page for Phillips Hue, for instance: https://www.home-assistant.io/integrations/hue/. It's marked as "Local Push" which is the keyword you want for stuff that doesn't need someone else's cloud.

https://www.home-assistant.io/blog/2016/02/12/classifying-th...

So, when I am shopping for a new class of device, I always first check the Home Assistant integration page for it and see what the support is like. There will often be helpful comments and FAQs on the page.

In general, if something is Zwave or Zigbee it will be trivial to get it working local first. If it's WiFi there's probably going to at least be an app and a cloud that you have to use to setup and it's a toss up whether you can then use it without a constant cloud connection.

If you've made it this far, here's some other recommendations for solid local first Home Assistant compatible goodies:

- Hue lights. I've tried Feit, Sengled, LiFX, Hue, and various big box store white label junk. Hue just works. They are expensive, but they work great and I never, ever have a single problem with them. Phillips doesn't make it obvious but Hue's hub is just Zigbee and you can talk Zigbee directly from Home Assistant to Hue lights. You can do the initial setup over Bluetooth using their app and then never use it again. LiFX are WiFi and are a solid runner up, but basically the same price.

- Zooz wall switches and dimmers.

- Zooz 4-in-1 Sensor is a great temperature, humidity, illuminance, and motion sensor. I use these in places where I want motion sensing in place of the Aqara temperature and humidity.

- Zooz Water Leak Sensors.

- Zooz window and door open sensors.

- Bond Bridge for 400MHz RF remotes - ceiling fans in my case. Like Hue, set it up using the app, then just run it with Home Assistant.

- Minoston Z-Wave Plug with Energy Monitor for plug in switches with energy monitoring.