This article explains how to connect a Raspberry Pi with a SCD30 sensor module and send push notification to your phone when the CO2 level rises above a certain threshold.
While the SCD30 sensor module is not the cheapest, it is quite accurate and easy to use.
In addition to the CO2 level, the SCD30 can measure temperature, humidity and works within a wide voltage range (between 3.3V and 5.5V).
When you open the app for the first time, you will immediately get a six-digit key that identifies your phone with the Simplepush API.
We will later need this key to send out an alert when the CO2 level rises above a certain threshold.
Sending a notification with Simplepush is as simple as making an HTTP request.
Enable the I2C interface
I2C is a commonly used standard which gives modules, like the SCD30, the ability to talk to other devices that support the I2C standard.
In order to enable I2C on your Raspberry Pi enter the following command on your Pi:
This will open the raspi-config utility where you need to select “Interface Options”.
Then select the I2C option and select “Yes” once you get asked if the I2C interface should be enabled.
Read out SCD30 data
First we will need to install Python 3.
Then clone the following repository and follow the steps in its README.md.
Since you already enabled I2C and wired everything together, you can ignore the first two steps and continue with installing required packages.
Once you finished all the steps and installed the SCD30 service on your Pi, you should be able to read out the sensor data from /run/sensors/scd30/last.
Calibrate the CO2 sensor
CO2 sensors have to be calibrated in order to give accurate measurements.
The CO2 sensor of the SCD30 can work in automatic self-calibration (ASC) or forced re-calibration (FRC) mode.
In ASC mode the lowest measurements within a seven day period get assigned to 400ppm.
Therefore for ASC mode to work well, the SCD30 should be exposed to fresh air regularly.
The sensor also has to run without being turned off for the whole period to finish the self-calibration successfully.
For proper function of ASC field-calibration algorithm SCD30 has to be exposed
to air with CO2 concentration 400 ppm regularly
— SCD30 Datasheet
If your sensor can’t be exposed to fresh air regularly, you need to manually calibrate the sensor in FRC mode.
Since ASC mode is the default for the SCD30 and therefore the easiest to use, we will ignore FRC mode for now.
Send an alert
Now all that is left is creating the script that sends out a push notification once the CO2 level is above a certain threshold.
Save the script to /usr/local/bin/co2-alert.py and make it executable.
Replace YourSimplepushKey with the key that you got when installing the Simplepush app on your phone.
Create a cronjob for the CO2 alert script
Add a cronjob that runs every five minutes:
Append the following to the end of your cronjob file:
*/5 * * * * /usr/local/bin/co2-alert.py
After saving the cronjob file, the script runs every five minutes and sends out a notification when the CO2 level is above the defined threshold.
Sometimes proper server monitoring is just not worth the effort.
However it can still be useful to know when a disk on your server starts to become full.
The following Bash script is perfect for this.
All you need is the Simplepush app installed on your Android or iOS device in order to receive the alerts.
Since full disk alerts shouldn’t happen too often, the free version of the Simplepush app should be good enough.
Replace YourKey with your Simplepush key that you receive immediately after installing the Simplepush app.
You can also change the threshold to adjust the percentage of space that needs to be used up before an alert is triggered.
This is partly because browser technology is constantly evolving which forces web scraping libraries to change with them.
Therefore many articles written about the topic reference deprecated libraries like PhantomJS and dryscrape which makes it difficult to find information that is up-to-date.
In this article we will show you how to scrape dynamic content with Python and Selenium in headless mode.
To make things more exciting we will do so by providing an example that has a real life use case.
Namely sending a notification to your Android or iOS device when certain TeamSpeak users enter or leave a given TeamSpeak server.
First make sure to install Selenium and the Simplepush library.
Then we need to make sure to have the ChromeDriver installed.
On Ubuntu or Raspbian:
Now we can start coding.
Did you notice how we use the multiprocessing library to start Selenium in its own process?
This is because otherwise our program could run out of memory since Python has difficulties collecting unused WebDriver instances.
By running them inside their own processes we make sure that all memory is released back to the OS once a process finishes.
Now if you run our little program, it will check tsviewer.com every five seconds to see if one of our friends joined or left the server (as defined by TSVIEWER_URL and TSVIEWER_ID).
If that was the case, it will send out a notification to the Simplepush key defined by SIMPLEPUSH_KEY.
The new version of our iPhone/iPad app adds support for Apple’s Critical Alerts.
Critical Alerts can bypass Do not Disturb mode and your mute switch.
If you want to use Critical Alerts on your iOS device you can edit or create an event and activate Critical Alerts there.
Also make sure to give Simplepush your permission for Critical Alerts if you want to use them.
The Raspberry Pi Zero W is an impressively small device with a single core 1GHz CPU and 512MB of RAM.
You can do all kind of great stuff with it.
For me the most interesting use cases happen in a headless setup where you do not connect your Raspberry to any peripherals.
See this great explanation on how to set up your Raspberry Pi Zero W without any monitor or keyboard.
When running your Raspberry Pi headlessly, you probably find yourself in the position where you want to get information from your Pi to yourself.
This is where Simplepush comes into play.
With Simplepush a few lines of bash will make it possible to send push notifications to your Android device.
The following example will send the amount of available memory on your Pi as a push notification to the user with the Simplepush key HuxgBB (replace this key with your own. You get your key by installing the Simplepush app - no registration required).
With Simplepush this also works with end-to-end encryption:
You can set your password in the encryption section of the app. This is also where you find your salt.
We also provide libraries for sending push notifications (normal and end-to-end encrypted) from within programming languages.