notes by alifeee profile picture tagged co2 (1) rss

return to notes / blog / website / weeknotes / linktree

here I may post some short, text-only notes, mostly about programming. source code.

tags: all (23) scripting (7) bash (4) linux (3) geojson (2) html (2) jq (2) markdown (2) obsidian (2) shortcuts (2) ............ see all (+30)

how easily can I get back into an old project? (CO2 monitoring) # prev single next top

tags: documentation, microcontrollers, co2 • 661 'words', 198 secs @ 200wpm

About 10 months ago I acquired a CO2 sensor (Sensirion SCD40), I attached it to a D1 Mini ESP8266 microcontroller, and for a week I looked into CO2 monitoring. At the end, I set up an InfluxDB database, and flashed the microcontroller to get and upload the CO2 data every 30 seconds. Eventually, I set Influx to delete data over 7 days old (as I didn't want to make a weird historical "is anyone in the room" sensor), and from then I could visit my Influx to see how much CO2 was in the room the sensor was in.

Since then, I have:

  1. forgotten a lot of how I did it
  2. stopped using VSCode (started using VSCodium), which I used to flash the microcontroller using the PlatformIO extension, which doesn't work in VSCodium
  3. stopped using Windows (started using Linux)

I wanted to re-use the sensor at an environmental talk today, so I grabbed it and started a small task. But, I didn't know whether it would be easy to reprogram the device, or to get data from it, or how possible it would be, as I no longer use either the OS (Windows) or the tool (VSCode) I used. I knew that PlatformIO had a CLI (Command Line Interface), so I didn't need the VSCode plugin to use it, and I knew programming/serial communication was probably easy enough on Linux. To be honest, I would rather know how to use the CLI than the plugin, as I prefer this most of the time. Then, when I write instructions, I can write commands instead of writing "press this button in the GUI".

I'd written a lot in the documentation on the project, so hopefully I didn't have to remember much. This is what I had to remember...

After all this figuring, I was able to reflash the microcontroller to just send environment information over Serial (i.e., not push to InfluxDB), so then I could use some commands to display a big "604 ppm" on my terminal screen.

# log from monitor
pio device monitor --quiet | awk '{printf "%s\t%s\n", strftime("%H:%M:%S", systime()), $0}' | tee env.log
# display nicely
tail -n1 env.log | awk -F'\t' '{printf "%s ppm.", $2}' | figlet -t -c
# plot
# install eplot and chmox +x
cat env.log | awk -F'\t' '{print $2}' | eplot -d -t CO2
back to top