Friday, May 22, 2026

Installing ESPtool with Linux

For an index to all my stories click this text.

As you might know by now I am a fan of MicroPython. The language is mature,loads of libraries are available, and it is easy to use. Installing MicroPython on a Raspberry Pi Pico is a piece of cake and well-documented. However installing MicroPython on an ESP32 while your computer runs Linux is in a different ballpark.

You will need to download the right version of MicroPython for your ESP32 and to install it you need to use a tool called ESPtool.

I am going to show you how it is done.

Get MicroPython

First step is of course to download the language.


With your web-browser visit the MicroPython website at: micropython.org


At the top of the page click the download button which brings you to a webpage where you can choose your microcontroller from a list of vendors or by type.
The ESP32 is made by Espressif so click on that name in the vendor list.


On this page you can choose your model. My most frequent used model is the ESP32 Doit Devkit. This version has the ESP32-Wroom processor on it.



This is the board I am talking about.


This is the actual microcontroller and on the top you can clearly see the type ESP-WROOM-32

So click on this model.

This brings you to the download page.
Unless you need a previous version for a special reason, always choose the latest release.
At the time of this writing that's version V1.25.0
Clicking on this line starts the download which you can (after a very short time) find in your download folder on your harddisk.

When the file is downloaded I transfer it to a new folder on my computer.
For demonstration purposes I made an ESP32 folder in my home directory. You may of course use any folder you like as long as you adjust the path names in this tutorial.

 
So now I have a folder that contains a file with the name ESP32_GENERIC-20250415-v1.25.0.bin. Well that is not really workable. So I altered the name of the file in ESP32-V125.bin.
The path to this file is therefore : ~/ESP32/ESP32-V125.bin

Wrong installation instructions.

To install MicroPython on an ESP32 you need something that is called ESPtool. And you need to install that first on your computer.

Installation instructions I found for Linux were:

sudo apt install esptool

Well that did not work. Oh it installed allright but when I tried to use it sputtered that the file stub_flasher_32.json was missing. I did a lot of searching but to no avail.

Next option is to use pip

pip3 install esptool

Again to no avail. Another error message appeared. This one told me that esptool was not a non-Debian-packaged Python package. And it would not install. Now what ??

The right way.

To install esptool start we need a virtual environment.
Please send me an email if you have no clue on what a virtual environment is and what it is about.

First build your virtual environment.


Open the console and point to your newly created directory. Mine is home/luc/ESP32.
As my new folder is in my home folder I only have to do : cd ESP32

Now in this folder we are going to create a virtual environment. And we are going to give it the name esptoolenv.


The command we use is: python3 -m venv esptoolenv

Make sure to type python3 because the older versions of Python (Python 2) is not installed on recent versions of Linux.


If you open your file explorer you can see that in your ESP32 folder a new folder is created with the name esptoolenv.


The virtual environment is there. Now we need to activate it with :
source esptoolenv/bin/activate


Now we can install esptool with: pip install esptool
This takes just a few seconds.


If you want to deactivate the virtual environment just use: deactivate.
But do not do that now as we need the virtual environment to run esptool.

Install MicroPython.

Now we can install MicroPython.

Before we can install MicroPython we need to know to which USB port the ESP32 is connected. Start with the ESP32 unplugged.


With the ESP32 not plugged in type :
ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null

As you can see nothing happens. That is because I have no devices attached to my USB ports. Now plug in the ESP32.


And there it is. The ESP32 is plugged in on ttyUSB0

Now we have everything in place.


Let's start with an empty flash.
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash
This command erases the ESP's flash memory totally.


And now we can flash MicroPython with the command:
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 ~/ESP32/ESP32-V125.bin

A quick look at the details:

esptool.py              calls the program
--chip esp32            tells which chip we are flashing
--port /dev/ttyUSB0     the usb port we are using
--baud 460800           The speed we are writing with
write_flash -z 0x1000   the starting memory location
~/ESP32/ESP32-V125.bin  the file we are flashing

Looks quite complicated, but don't worry you will soon get the hang of it.


And there we are.
MicroPython up and running in Thonny.

Till next time
have fun


Luc Volders

Friday, May 15, 2026

NTFY part 2: Send notifications with ESP32 and Pico

For an index to all my stories click this text.

This is the second story about NTFY. The first story showed what NTFY is and how it can send notifications and messages to your Android smartphone from a PC dashboard.

This story shows how you can send notifications from your EP8266 or ESP32 in Arduino language (C++) to your phone, and how you can do that with a Raspberry Pi Pico in MicroPython.

So before you go on I recommend reading the previous story which you can find here: https://lucstechblog.blogspot.com/2026/05/notifications-with-ntfy.html

I'll start with sending a message from the Raspberry Pi Pico as a notification to a smartphone.

For your convenience I hereby give you the link to the NTFY website: https://ntfy.sh/

Limits and solution

First I hope you remember that with the free service NTFY there is a limit of 250 messages per day.
 
The messages remain for 12 hour on the server.
This means that if your phone is off, or has no internet connection, for 13 hours you will miss messages.

There are two solutions for this.
First you can get a paid subscription and then you get a lot more messages each day.
The second solution is to install your own NTFY server. You can do that on a Raspberry Pi (even the humble Zero) and then you can decide how many messages you can send per day  and how long they stay on the server.

Mind you: 250 messages per day is about 10 messages per hour which would be more than sufficient for most projects.

Nevertheless I chose the second solution and installed my own server. Maybe something for another story ........................

Sending a message from MicroPython with a Pico 

(Scroll down for the ESP32 arduino version)

We are going to do this the easy way. We are going to attach a button to the Pico and simulate that it is a door contact. Everytime the button is pressed the Pico will send a notification to the phone.

We are going to send an alarm with the text:

The door opened X times

The X will alter each time we press the button.

Let's start with the breadboard setup which is really easy.



It is just the Raspberry pi pico with a button attached to GP14. The button has a pull up resistor so the value is high (1) until we press the button. Then it gets low (0).

Here is the complete program.

import machine
import network
import urequests as requests
import time

button1 = machine.Pin(14, machine.Pin.IN)
dooropen = 0

# Router credentials
ssid = "YOUR-ROUTERS-NAME"
pw = "YOUR-PASSWORD"
print("Connecting to wifi...")

# wifi connection
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(ssid, pw)

# wait for connection
while not wifi.isconnected():
    pass

print("Connected. IP: ",str(wifi.ifconfig()[0], "\n"))

while True:
    if button1.value() == 0:
        dooropen = dooropen + 1
        sendstring ="The door opened " + str(dooropen) + " times"
        requests.post("http://ntfy.sh/lucstechblog",
        data= sendstring              
        )
        print("Data is send. dooropen = "+str(dooropen))
        time.sleep(3)

Let's have a look at the program in some detail.

import machine
import network
import urequests as requests
import time 

These are the libraries that are needed to get the program running. They are all included in the standard MicroPython distributions. So no need to download libraries.

button1 = machine.Pin(14, machine.Pin.IN)
dooropen = 0

The button is attached to GP14 and defined as a variable with the name button1. An extra variable with the name dooropen is defined. This will be used to count the number of times you press the button.

# Router credentials
ssid = "YOUR-ROUTERS-NAME"
pw = "YOUR-PASSWORD"
print("Connecting to wifi...")

# wifi connection
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(ssid, pw)

# wait for connection
while not wifi.isconnected():
    pass

print("Connected. IP: ",str(wifi.ifconfig()[0], "\n"))

Nothing special here. These are the standard program lines to connect the Pico to your router. Don't forget to replace YOUR-ROUTERS-NAME and YOUR-PASSWORD with the required values for your router.
When the connection is established you will find the Pico's IP number in MicroPython's shell.

while True:
    if button1.value() == 0:
        dooropen = dooropen + 1

The while loop is where the actual action takes place.
First the program tests if the button is pressed. If so then the variable dooropen is increased by 1.

        sendstring ="The door opened " + str(dooropen) + " times"

In this line we prepare the text that is going to be send.
This is the important line. Here you can fill in any information you like to send. If you would add a digital thermometer and put it's value in the variable temp you could alter the text like like this:

        sendstring ="The temperature is now " + str(temp) + " degrees"

On to the next part.

        requests.post("http://ntfy.sh/lucstechblog",
        data= sendstring              
        )


NTFY needs a post request in stead of the get requests which we normally use. We post to the site http://ntfy.sh/ and the topic is lucstechblog.

        print("Data is send. dooropen = "+str(dooropen))
        time.sleep(3)


Next we print a confirmation in the shell and wait a few seconds to make sure the request is send.

That is all.

The result.

Run the program. Press the button.



And this is what you'll see in Thonny's shell.



And here is how I got a notification in the top left corner of my phone's screen. My phone also gave an audio signal to draw my attention to the notification.



This is how the notification appeared on my phone's screen



And this is how it looks in the NTFY app on my phone.

At the same time the message appeared in the PC web version of NTFY.







Sending a message with an ESP32 in Arduino language (C++)

Just like we did with the Pico and MicroPython, we are going to do this the easy way. We are going to attach a button to the ESP32 and everytime the button is pressed the ESP32 will send a notification to the phone.

We are going to send an alarm with the text:

The button attached to the ESP32 was pressed X times.

The X will alter each time we press the button.

Let's start with the breadboard setup which is really easy.



It is just the ESP32 with a button attached to D22. The button has a pull up resistor so the value is high (1) until we press the button. Then it gets low (0).

Here is the complete program.


#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid = "YOUR-ROUTERS-NAME";
const char* password = "PASSWORD";

//Where to send the notification
const char* ntfyurl = "http://ntfy.sh/lucstechblog";

const int buttonPin = 23;
int butpress = 0;

void setup() 
  {
  pinMode(buttonPin, INPUT);  
  
  Serial.begin(115200);

  WiFi.begin(ssid, password);
  Serial.println("Connecting");
  while(WiFi.status() != WL_CONNECTED) 
    {
      delay(500);
      Serial.print(".");
    }
  Serial.println("");
  Serial.print("Connected to WiFi network with IP Address: ");
  Serial.println(WiFi.localIP());
  }

void loop() 
{
    if (digitalRead(buttonPin) == LOW) 
      {
      butpress = butpress + 1;  
      if(WiFi.status()== WL_CONNECTED)
        { 
      WiFiClient client;
      HTTPClient http;
    
      // Your Domain name with URL path or IP address with path
      http.begin(client, ntfyurl);
      http.addHeader("Content-Type", "text/plain");
      
      // Build the text to send with HTTP POST:
      // The button attached to the ESP32 was pressed X times.
      String httpRequestData = "The button attached to the ESP32 was pressed "; 
      httpRequestData = httpRequestData + butpress;
      httpRequestData = httpRequestData + " times";  
      
      // Send HTTP POST request
      int httpResponseCode = http.POST(httpRequestData);
      
      Serial.print("The response we got : ");
      Serial.println(httpResponseCode);
        
      // Close connection
      http.end();

      // Wait before the next round
      delay (3);
        }
      }  
}


Lets look at some details in the program.

#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid = "YOUR-ROUTERS-NAME";
const char* password = "PASSWORD";

//Where to send the notification
const char* nyfyurl = "http://ntfy.sh/lucstechblog";

const int buttonPin = 23;
int butpress = 0;

Nothing special here. The necessary libraries are loaded and The variables are defined. The variable ntfyurl is defined as http://ntfy.sh/lucstechblog which is the address of the NTFY server and the topic.

The setup() has nothing unusual.

The loop() is where the fun begins.

    if (digitalRead(buttonPin) == LOW)
      {
      butpress = butpress + 1;  
      if(WiFi.status()== WL_CONNECTED)
        {
      WiFiClient client;
      HTTPClient http;

The program continually tests if the button is pressed. If so the butpress variable is increased by 1 and the wifi and http clients are activated.

      // Your Domain name with URL path or IP address with path
      http.begin(client, ntfyurl);
      http.addHeader("Content-Type", "text/plain");

The http communication with the NTFY server is started with the previous defined ntfyurl. A header is sent first that identifies the data we are going to send as plain text.

      // Build the text to send with HTTP POST:
      // The button attached to the ESP32 was pressed X times.
      String httpRequestData = "The button attached to the ESP32 was pressed ";
      httpRequestData = httpRequestData + butpress;
      httpRequestData = httpRequestData + " times";

The text "The button attached to the ESP32 was pressed X times." is build here by combining several parts. One of the parts that is added is butpress which is the variable that counts how many times the button was pressed.

      // Send HTTP POST request
      int httpResponseCode = http.POST(httpRequestData);
      
      Serial.print("The response we got : ");
      Serial.println(httpResponseCode);
        
      // Close connection
      http.end();

The request is send as a http POST request with the previous defined httpRequestData. The request receives a response with an indication if it has succeeded. The response is then printed in the serial monitor. After sending the request the connection is closed.

      // Wait before the next round
      delay (3);


The program then waits for 3 seconds. This time can be shortened but a short delay is preferred to prevent detecting a bouncing button as a button press.

It is obvious that this code can easily be adapted to send sensor readings etc. etc. etc.



This is what the Serial Monitor shows. As you can see there are 4 responses with the number 200 that means that the request was received ok.



And here are the notifications I received. As you can see I subscribed to 6 topics. The topics were made just for testing.

Expansion

In this example I use the same topic all the time: lucstechblog. It is of course possible to create multiple topics. So a single Pico or ESP can send notifications to several topics. However you can also have multiple microcontrollers sending data to several topics.

In the above examples we send notifications with just one line of text. You can send notifications with multiple lines of text. The documentation of NTFY shows how to do this. You can find the documentation here: https://docs.ntfy.sh/

Even better: you can attach files to a notification. These can be text files but also pictures !! I have successfully experimented with sending pictures from C++ and from MicroPython. I can see a chat program coming up...........

You can have the Pico's and ESP's send notifications to several NTFY servers.
On the NTFY documents pages there is a list of public NFTY servers. You can find the docs and that list here: https://docs.ntfy.sh/integrations/

You can start your own private server. A Raspberry Pi is sufficient. Even a humble Raspberry Pi Zero will do.
Using your own private server does not expose your topics (if someone finds them) and their data to a general audience. It restricts the information to those you have given the information about the server and it's topics.
On a private server you can expand the lifetime of the messages from 12 hour to any timelimit that suits you. And the number of messages you can send per day can be limitless !!!

Not only can you send notifications but using the right API call you can also get all notifications that have been send with a certain topic from the server. This way you can have two-way conversation between microcontrollers. A microcontroller can retrieve the messages on a certain topic from the server, and can act on that, and then send a notification with the same or a different topic. You do need a private server for this.

If you want a story on sending multiple line notifications, sending a textfile or a picture with the notification, starting your own server on a Raspberry Pi or retrieving notifications from your private server please send me an email.

I can see loads of possibilities with NTFY and therefore already installed my own private server.

Till next time.
Have fun
Luc Volders

Saturday, May 9, 2026

Delft Maker fair 2026

 For an index to all my stories click this text

Yesterday 8 may 2026 was the day of the Delft Maker fair.

At the university campus of the Technical University Delft there was a gathering of makers, students, creative minds and loads of visitors.
There were workshops, loads of demonstrations and some novelties.


A 2 meter high contraption with moving eyes, wings and all sorts of other moving parts with a working bubble blowing machine. It was moving around on wheels remote controlled by its maker.


Someone was making lamps from all kinds of vintage products like phones, photocams etc.


A life size build based on the "Theo Jansen "strandbeest". This version did not move on the wind like the original strandbeest but had large motors inside. You could sit on it and move it around with some controls.


3D printing everywhere. And the new hype is of course color printing.


And here is the first one I saw live: the Creality I7 Sparkx
Creality's answer to Bambu. A 4 color 3D printer priced (at this moment) for around 350 USD/Euro. I saw it working and I saw the quality: I want one !!!!!


And a lot of tinkering. Like this antique Singer sewing machine with a motor that drove the sewing part and X and Y Axis that moved the cloth. So you can use it as an embroidery machine. Arduino powered.

There were over 100 stands. There was a hydrogen racing car, a hyperloop, fablabs, cnc machines, laser engravers, workshops, demonstrations and loads more. And of course everywhere Arduino's, ESP32's, Raspberry Pi's and Pico's. Most part of it was outside and the weather was fantastic.

One thing I can not show you here but was really fun was an industrial coffee machine that was insulting everyone who tried to use it.

If you ever have the time to visit a MakerFair I urge you to do so. It gives your creative energy an enormous boost.

Till next time
have fun

Luc Volders

Friday, May 1, 2026

Notifications with NTFY

For an index to all my stories click this text.

When working with IOT projects several things can happen. A certain temperature is reached, movement is detected, a light is set on in a room, someone is at the door etc. etc.etc. When something like this happens you will want to get a notification. You can, of course, build a website on which values are shown. But that implies that you need to go to that website to look at the values.

It is more efficient when you get a notification (an alarm) on your smart phone.



A notification like this is put on the startscreen of your phone so it will always draw your attention.

There is a free service that you can use to get these notifications it is called NTFY
You can find the website here: https://ntfy.sh/

NTFY

NTFY is of course short for NoTiFY. It is a free service that you can use. 

There is a limit of 250 notifications per day for a free or anonymous account. That is 10 messages per hour !!!

If you need more than 250 messages per day then you need to get a paid subscription.

To use NTFY you need to download a (free) app on your phone or tablet. But there is also a desktop (PC) version that can receive messages but can also send messages.

To send notification messages to your phone, tablet or PC there is a simple to use API that can be used with Arduino (C++) and MicroPython.

For using the free version you do not have to log-in or make an account. You can just use it. That is a bit like dweet.

Another similarity to Dweet is that a message/notification consists of two parts: a topic and the message itself. To get the notifications on your Phone or PC you need to "subscribe" to that topic.
A topic might be for example "Alarm" and the message can be "The garage door is open". Another topic might be "Myhome" and a message could be "The temperature = 22 degrees"

You may create as many topics as you like as long as you do not exceed the limit of 250 messages. A topic is created automatic when you send a message with your microcontroller that includes a non existant topic.

And yet another similarity to Dweet is that (unless you have a paid account) the topics are public. This means that anybody can get your messages and notifications as long as they know the topic you are using.
So use a cryptic topicname like LV23kit where LV are my initials, 23 is the year (2023) and kit means that the messages concern my kitchen. Just be creative.

If you need private topics you will need to get a paid plan.

The big difference with Dweet is that NTFY can send notifications to your phone/tablet/pc. Dweet can not send them, you need to collect them yourself. So for sending alarms NTFY is the best option.

There is one extra option that might prove usefull. NTFY can also send emails. So you can get your messages in your mailbox. For alarms that is not really an option as you want an instant notification if something is wrong. However it might be usefull for some of you so I will show how to use this option. With the free version you can send 5 emails per day.

One more thing though. The messages/notifications are stored for 12 hours. After 12 hours the messages disappear.

NTFY on the PC

First thing we are going to do is to get NTFY on your PC. Well that is easy. Just point your browser to https://ntfy.sh/app and you're done.



This is how the webpage looks..



Click on + Subscribe to topic and a window opens that allows you to enter the name of a topic.
Like stated before, for an anonymous (and free account), topics are public so choose a topic name that others can not guess easily.



You can also click on GENERATE NAME and NTFY will generate a topic for you that closely resembles a password.
This will give you some better privacy and secrecy but is more difficult to use on multiple devices at the same time. If, for example, you are using NTFY at the same time on your PC and on your smart phone you will need to find a way to send this cryptic topic name to your phone.

I choose a topic name myself: lucstechblog

Then click SUBSCRIBE.



This is how your screen will look now. On the left there is a list of subscribed topics. At this moment there is just one: lucstechblog. In the center there is a message that no notifications have been send or received with this topic.

NTFY on the Android Phone

To get notifications we need to install the NFTY app from the playstore. You can find it here:
https://play.google.com/store/apps/details?id=io.heckel.ntfy
Or just search for NTFY in the app store.



Install the app and open it.





It looks almost the same as the PC version. 





Press the + at the bottom of the screen for subscribing to a topic. We will use the same topic: lucstechblog
A big difference from the PC version is that there is no option to have NTFY generate a topic for you. This is because the phone version is only used for receiving notifications.

We now have 1 subscription to a topic.

Sending a message from the PC

Click with your mouse on the subscribed topic (lucstechblog)



And at the bottom type a test message like I did. Then click on the small arrow next to the message.



The PC screen will inform you that the message is send.



And you will almost immediately get a notification on your phone.
This is the important part. This shows that we can get alarm messages and other important messages as a notification on our phone.



And the NFTY app will inform you that a notification has been received.
And shows message also in the app.

First steps done.

The first setup is done.

Make yourself comfortable with the concept and create some topics for yourself and play around a bit.

Next time we are going to send notifications from the ESP32 using Arduino language (C++) and from the Raspberry Pi Pico with MicroPython.

A few small tips

You can use the browser version next to the app on your Phone. Just point your browser to: https://ntfy.sh/app That way you can also send messages from the phone that will be received by the PC. You will not get notification alarms through the browser but you will still get them through the app.

You can use NTFY on multiple phones and tablets. As long as they all subscribe to the same topics, they will all get the same notifications/messages.

And please remember that you can make as many topics as you like but there is a limit of 250 messages per day for the free account. The messages are stored on the server for 12 hours after which they vanish.

Although you can create loads of topics it is better and easier to maintain if you just use a few topics and make the messages in the topics more verbal.

Next story covers how to send notifications from your ESP32 with Arduino language (C++) or Raspberry Pi Pico W with MicroPython


So Till next time
have fun


Luc Volders











Friday, April 24, 2026

My rant against some cloud services

 For an index to all my stories click this text

I present you some short stories about web/iot services that changed their free tiers to a subscription model, or quit alltogether. The list will expand when I run into new services that leave their users in the cold.

If you do not want to read all these stories just scroll down to the bottom of this story to read what my point is.

Blynk

Blynk consisted of a cloud based server, an app for your phone and real good solid software for microcontrollers.
First step was to create an account, then write some software for your microcontroller. The last step was to create a nice graphical setup in the app. All was super simple to use and free. And the app really looked fabulous. The access to the cloud server was limited to a few microcontrollers or actions (like setting a button, gauge etc) per user. But you could download the cloud server and install it on a Raspberry. Then you would have unlimited capacitity for free. Then they developed a new version called Blynk 2.0 And then the misery started. First they pulled the plug from the cloud servers. And later on they removed the app from the Play store. So anybody using this service could not expand or re-install it when you switch phones.
Blynk 2 had a really limited free tier although it is better now. But hey you had to reinstall all software on your devices and microcontrollers.


Whatabot

Whatabot is a service that let's you send messages from your Microcontroller (ESP8266, ESP32 Raspberry Pi PicoW etc) to Whatsapp. This is a great way to get notifications on your phone when for example a door opens or lights go on.
To make use of this service you need to add the telephone number of Whatabot to your contacts. And after sending a message to that contact you'll get an API key.
I used Whatabot about 2 year ago and then forgot about it. And a few weeks ago I wanted to use the service again. But I could not get it working. Then I realized that they had changed their telephone number. And by changing the number Whatsapp was not able to receive messages from the service.
Not a big deal, but just a bit annoying as I had to adjust the programs for my microcontrollers


Dweet.io

I have used Dweet.io for several of my projects and wrote stories about it. Dweet.io was a great free service that allowed a microcontroller, a Raspberry, a PC, tablet or phone sending small messages to it and any of the mentioned apparatus to retrieve the message. It worked like an intermediary. One ESP sends the temperature to Dweet.io and another one retrieves the value and depending on it set's a fan on etc.
And suddenly without warning they stopped in January 2025. No reason, no explanation whatsoever. They just pulled the plug, leaving loads of people whose projects depended on them in the dark.
Oh yes, alternatives emerged: Dweet.cc, Dweet.me and Dweetr.io This shows how popular Dweet.io was. However these are maintained by enthousiastic volunteers and who knows when the load gets to big (or to low for their liking) and they cease operation or start charging for their service. And you will have, of course, to re-program all your devices that use this service.


IFTTT

Hey IFTTT still exists !!
Yes but they had a great service called webhooks. And it was free. Using the webhooks you could, for example, give a command to Google Home and that would trigger an ESP to set a lamp on or set the temperature higher, or start a fan etc. etc. etc. I wrote several stories on this.
The service is still available but it will set you back $2.99 a month while it was free for may years. So people using this to trigger devices with Google Home suddenly have to pay for it. And for $2.99 you can only use 20 apps.


IoTtweet

IoTtweet offered a web based dashboard for IOT purposes. There were buttons, gauges, sliders etc. A Microcontroller could send values to the dashboard which then could be shown in a nice graphical environment. Other microcontrollers could retrieve those values and act on them. I wrote a few stories on IoItweet. It was really easy to use.
And suddenly without a warning they pulled the plug.
Anybody who build projects around this was left in the dark.


Servces that stopped but did not effect me


Insteon

In 2022 Insteon went belly-up. It was a complete home automation infrastructure, There were buttons, dimmers, wall outlets, sensors etc. They all communicated with a cloud based server. When Insteon went bankrupt the plug was pulled and all services ceased to work. Your home was left in the dark when you pressed the buttons.....
A few months later Insteon was saved by investors but the shock is still there.....


Logitech Pop buttons

Users of the Logitech Pop buttons got an email from Logitech that they would pull the plug on this service on October 15 2025. That is 8 year after their introduction. And from that on your USD40 to USD90 investment could be used as landfill.


What's my point.

Well obvious I am disappointed by some of these services and at some I am just really mad. So I urge you to be carefull to base your complete project or home automation on a cloud service.

So is there a solution ?

Yes there is for some cases.
The solution is to write your own software and build your own server that replicates these services. Host the server in your own home and the only worry will be a power outage. Cause even when the internet melts down things would still keep working in your own network.

And This is exactly what I am doing.
I am building my own Dweet server (programmed in PHP with an SQLite database) and running it on a Raspberry Pi4 with 2GB memory.
Next to that I am building my own IOT Dashboard with buttons, gauges, switches, sliders all fully customizable. 
This is a long term project and I still have to make integrations of 433Mhz switches and Philips Hue lamps.
But the basic functions work and it is really a fun project.
So stay tuned I might, yes might, publish the complete setup in the future.

Till next time
Have fun

Luc Volders

Friday, April 17, 2026

Using a VPN with Raspberry Pi

For an index to all my stories click this text.

In a previous story I explained what a VPN is and how to install that service when your computer runs Kubuntu (Linux)

This story explains what a VPN is and how to install it on Your Raspberry Pi.
The VPN I am going to discuss here is a different one from the previous story. However this one runs on Raspberry Pi as well on a PC with Kubuntu.

What is a VPN

For those that have no idea what a VPN is and why you could use one I'll give a brief explanation.

Normally when you visit a website with your browser you have a direct connection to that website.

A VPN is a bridge in between. So you send the request for the website to the server of the VPN provider. The connection between your browser and the VPN server is encrypted and their server is a secure server. The VPN then contacts the website, gets the information and sends it encrypted back to you.
That way you do not have direct contact with the website you want to visit. This keeps you safe in countries where free speech is at stake. But it also makes it impossible for the website you are visiting to track you down.

Another advantage is that you can access sites that are geo-restricted. This means that the website you are contacting believes that you are in a different country then where you really are.
For a long time this was popular by people in Europe that wanted to watch certain US restricted TV-shows. Without a VPN the US media server saw that you were in Europe and blocked viewing. If you contacted these media through a VPN you could trick them in thinking you were in the US.

A VPN is secure for both UDP and TCP communication. Therefore you can also mask your IOT communication this way.

Free or paid VPN's

There are free and paid VPN services.
The restriction of a free VPN service is that you have less VPN servers to chose from, the service might not always be available and it may be slower.

I have been using the free VPN service from RiseUp for a while, on my Raspberry, and they were always available and I did not notice any significant speed limitations. RiseUp has no paid services and runs on donations. So if you need to use their serices on a frequent base consider making a donation. That can be done at their webpage: 

https://riseup.net/en/vpn

RiseUp has a no-log policy. That means that they do not keep a log of your activities. That is an extra safety measure that makes sure that no one can see what sites or services you have been using.

Next to the VPN service they also supply a safe email service, and an email-list service.

Install RiseUp VPN

To use a VPN you'll need to install a small software package. This package intercepts all your network communication and sends it to the VPN server.

Installing the RiseUp VPN software on your Raspberry is easy.


Just open Discover from your Application Launcher and search for VPN.

This may look awkward to (maybe) most of you. But I am using the KDE desktop on my Raspberry Pi with Trixie as it is far more convenient then the Raspberry Desktop. And it is fully compatible. 

I really urge you to install the KDE desktop on your Raspberry PI as it is so much better as the Raspberry standard desktop. Installing is easy. You can read my story where I explain the installation here: 
https://lucstechblog.blogspot.com/2025/10/raspberry-trixie-with-kde-plasma.html


Click Install and you're done.
No need to make an account or fill in your email address. Just click and install.

Using the RiseUp VPN


After downloading and installing RiseUp VPN you will find the software in the internet section of the Application Launcher.


Starting the program opens a window that immediately shows that it already has made a secured connection.
The bottom of the window shows to what server you are connected. In this example you can see I was connected to a server in Amsterdam.


If you click on that connection name you'll get a list of available servers. You can chose another server from the list if that makes you more comfortable.

Next to the server there is a small graph that shows if the server is available. A green graph (like in this example) shows that the server is available.

Click on the server of your choice. Then click on the left arrow at the top of the screen. This brings you back to the start-screen.


Click on the Turn ON button ad a new connection is made.
Be aware that switching from VPN server to another server might take some time.


After a short while you will see that the new connection has been made.

That is all.

You can now open your browser and visit any website you want without anybody being able to trace your internet tracks.

Connection status.


At the bottom of your desktop on the right side there are some icons. Like said before: this is the Raspberry Pi running the KDE desktop.
This example shows a small green shield which means that your VPN connection is up and running.

This shield can have several colours.


Well this explains all.

Does it work.

Here is a quick and simple test to see if the VPN works.

Start with disconnecting the VPN server in the RiseUp VPN software by simply pressing the Turn Off button.
Then open your internet browser and visit the following site:

https://www.whatsmyip.org/


The website shows your normal IP address.

Now activate the RiseUp server and choose any server anywhere in the world to your liking. Then again visit https://www.whatsmyip.org/


And look at that: a totally different IP address.

And here is a different prove.


If you open your web browser and visit the Google search or Youtube or whatever Google service, you are greeted in a different language. Here I was greeted in French. Meaning that Google thinks my location is somewhere in France !!

Extra safety

Those of you who have worked with a TOR browser know that a TOR browser connects to a TOR server, that connects to another TOR server and that again connects to yet another TOR server. And that last server connects to the website you wanted to have a look at. For safety all these connections are encrypted.

This way you can not easily be traced.

For extra safety you can use your TOR browser with the VPN.

Just make sure to start the VPN connection first and then start your TOR browser. That way your TOR browser connects to a TOR server through your VPN connection which gives you an encrypted communication line upon an encrypted line. So a double encrypted and untraceable connection.

So if you, for example, want to see a tv show or series that is only available for US citizens within the US connect to a VPN server in the US. And if you connect through a TOR browser make sure the last server in the range is also a US TOR server.

Safe surfing
till next time
have fun


Luc Volders