For the outdoor module, I started with the default Particle Boron Air Quality kit. The Boron contains built-in LTE cellular connectivity to the Particle Cloud. I chose the Boron so I could locate the module anywhere outside my house without worrying about connecting to my WiFi network.
The kIt also includes a Grove FeatherWing adapter, a temperature/humidity/atmospheric pressure sensor that's based on the Bosch BME280 chip, a Grove Air Quality Sensor, a 0.96" 128x64 monochrome OLED, a Grove Dust Sensor, and even a LiPo battery. I didn't need a display outside so I didn't use the included OLED. I also didn't use the Grove Dust Sensor because I planned to enclose the outdoor device in an Otterbox.
My code is pretty simple. I used the Adafruit_BME280 library to read from the temperature sensor, the Grove_Air_quality_Sensor library for that sensor, and the JsonParserGeneratorRK library to build a JSON string of sensor readings to publish to the Particle Cloud. I'm keeping track of the last reading from each sensor, so I only publish when something changes. I figured that will keep my usage down for the cellular chip.
Once I had everything working on the breadboard, I used double-sided tape to secure everything inside an Otterbox for easy transport and outdoor testing.
For the indoor module, I used a Particle Argon, which includes WiFi capability so it was perfect for my in-house display. The OLED included with the Air Quality Kit above was small and monochrome. I wanted a nice display for my indoor module, so I found a 1.5" RBG OLED on Amazon and used the Adafuit_SSD1351_Photon library to drive it. This library was created 5 years ago by nfriedly for the Particle Photon. I was pleasantly surprised it worked without a hitch!
In this module's code, I simply subscribed to the Particle Cloud events created by the outdoor module above and displayed them on the OLED. I also added a greeting (i.e. Good morning, afternoon, or evening depending on the time of day), plus the current date and time, and the status of the Boron's battery and cell signal. The display cycles through different readings every 5 seconds.
Check out the video.