In many projects, we need to send notifications from a device to a phone or computer when a specific event occurs — for example, when an alarm is triggered or a monitored variable, like room temperature, goes out of range.
There are several ways to achieve this. One option is to send the event data to an MQTT broker and receive it on the phone using a compatible app. Another common method is using a Telegram bot to generate alerts.
A very practical alternative is Pushbullet, which offers several advantages:
✅ Easy integration – You can send messages from your device with simple HTTP requests using their API. It works well with platforms like Arduino and Micropython.
✅ Cross-platform support – Pushbullet is available for Android, iOS, desktop browsers (via Chrome or Firefox extensions), and allows seamless messaging between devices.
✅ Device synchronization – Notifications appear simultaneously on all devices linked to your account (e.g., phone and PC).
✅ SMS sending – If you have Pushbullet installed on an Android phone, the API can instruct the phone to send SMS messages on your behalf.
✅ Send files and links – You can also send files, notes, and URLs directly from your device.
Unfortunately, Pushbullet isn’t fully free. While it does offer a free tier, it comes with some limitations. For instance, using the API allows up to 500 pushes per month, which is still quite reasonable for most personal or educational projects.Getting Started
To use Pushbullet, you’ll need to install the app on your phone first. It’s available for both Android and iOS, and the installation process is straightforward. During setup, it will request several permissions it needs to work properly — such as access to notifications, messages (on Android), and other system features.
You can also install Pushbullet on your computer. It works as a web app or as a browser extension (for Chrome and Firefox), allowing you to receive and respond to notifications from multiple platforms.
While it’s possible to send notifications from the desktop app to your phone, that’s not our goal here. What we want is to trigger notifications from a microcontroller, like an Arduino or an ESP32. To do that, we’ll need to use the Pushbullet API by sending HTTP requests with the message data.
To access the API, you’ll need a personal access token — this works like a private key that lets your device communicate with Pushbullet’s servers. You can get this token either from the official website or directly from the Windows app by going to: Settings > Account
The token is generated by clicking on “Create Access Token”.Copy the generated value and make sure not to share it with anyone — it grants full access to your account.
Once you have your token, you can run a quick test using the curl
command on Windows, Linux, or macOS.Open a terminal or command prompt and type the following (replacing YourToken
with your actual token):
curl -k -u YourToken: https://api.pushbullet.com/v2/pushes -d type=note -d title="Test from Windows" -d body="Hello world!" -X POST
If everything is set up properly, the notification should appear instantly on your phone — and on any other device connected to your Pushbullet account.
What the curl
command does is send an HTTP request to the Pushbullet API with the following details:
URL: https://api.pushbullet.com/v2/pushes
Method: POST
Headers:
Content-Type: application/json
Access-Token: YourToken
Payload: a JSON file containing:
«type»: «note»
«title»: «Test from Windows»
«body»: «Hello world!»
Of course, the title
and body
fields can be customized to suit your needs.
This can be implemented easily in both Arduino and MicroPython.To get it up and running quickly — and to show it in a more visual way — here’s a simple application using an M5StickC Plus2 device.
Example: Emergency ButtonTo put our knowledge of Pushbullet into practice, we’ll build a real-world project: an emergency button, similar to the kind of device an elderly person might use at home.
In case of an emergency — such as a fall or medical issue — the user can press the large front button on the M5Stick. This will instantly send a notification to someone else’s phone, alerting them to the situation.
The program in UIFlow 1 is as follows (click to enlarge):
To save battery, the screen remains off unless you press the B button on the side. When pressed, it briefly displays the battery level — just for monitoring purposes. That’s why, at startup, the program simply sets the screen brightness to zero and fills the background with black.
When an emergency occurs and the user presses the A button (the large front button), the program calls the PUSH
function. This function connects to Wi-Fi, sends the HTTP request, plays a short beep, and then disconnects.
Remember to replace the Wi-Fi network name, password, and your personal access token in the program — don’t use the placeholder values shown in the image.
Among the various options available for sending notifications from a device, Pushbullet offers some compelling features that are definitely worth exploring. In this article, I showed you how to install and use it, using an M5Stick as an example to demonstrate how Pushbullet can be used to send notifications. However, the same approach can easily be applied to other boards — whether you're working with Arduino or MicroPython.
It’s important to note that the M5Stick example was created with educational intent, and in its current form, the battery runs out in less than 12 hours — so it's not suitable for real-world deployment without further optimization.
I hope this article has been useful and helps you start creating your own projects with M5Stick and Pushbullet. If you have questions, suggestions, or would like to share your experiences, feel free to do so in the comments section below.
For more information and projects, you can check out my blog and social media.
See you next time! 🚀
Comments