
Explore Node-RED driven IoT projects with ESP32, MQTT, and Docker; install tools, build a weather station, surveillance camera, plant watering, and internet radio, and visualize data with InfluxDB and Grafana.
Meet Markus Ehrenhauser, an instructor blending electrotechnical industry experience, business informatics degrees, systemic coaching, and microcontrollers to illuminate microelectronics theory.
Prerequisites emphasize prior ESP32 programming, library and GPIO basics, and familiarity with Arduino IDE and PlatformIO. The course then explores ESP32 variants, Node-RED coding in JavaScript, MQTT, and Docker workflows.
Explore how to wire an ESP32 with the Arduino IDE using PlatformIO, implement Node-RED flows in JavaScript on a Linux Ubuntu system, and manage Docker containers with ready-to-import data.
Delve into the basic sketch, an almost empty ESP32 sketch with Wi-Fi and MQTT connections and blink without delay. Adapt your own sketch step by step from the download section.
Adopt a hands-on, project-based approach to Node-RED, building real IoT examples with ESP32, MQTT and Docker. See practical node usage through complete workflows, with optional background theory for later study.
Explore ESP32, MQTT and Docker projects with a clear disclaimer. Adapt wiring and coding, and follow safety guidelines to avoid hazards, recognizing there is no guaranteed outcome across environments.
Discover what docker is, why to use containers, and how to install and maintain docker on raspberry pi and virtual machines, enabling node-red, mosquito broker, influxdb, and grafana in containers.
Learn why Docker dominates modern devops by isolating containers and images, enabling one-command deployment, portability, and efficient, flexible IoT hosting for Node-RED on ESP32 with MQTT.
Spin up a vserver with Hetzner cloud in Germany, Finland, or the US using Ubuntu, hourly pricing, and a test environment; secure with strong passwords, firewall, and fail2ban.
Install docker on ubuntu via official docs, update system, add the GPG key and repository, install docker ce with docker compose plugins, then verify with a hello world container.
Deploy vocal board kanban with a single docker run command, exposing port 8000, using an official image from the Docker Hub, and manage the container with docker ps or Portainer.
Install and configure Portainer community edition to manage Docker containers, create a persistent data volume, map host folders to the container, and monitor containers and images via the Portainer dashboard.
Install and run the mosquito broker with Docker, linking config, data, and logs folders to the container, opening port 1883, adjusting permissions, and verifying with Portainer logs.
Test the mosquito container by entering it with Docker exec, verify mosquito commands, and publish a test message to the test topic from inside the container.
Install ohmyz for a cleaner, more structured terminal, switch your default shell, and use tab-completion and autofill to jump between commands and directories efficiently.
Enable password protected mosquitto broker in docker by creating a password file with mosquitto_passwd, disabling anonymous access, mounting the config, and testing with authenticated connections.
Install and run Node-RED in a Docker container. Create and mount a persistent Docker volume for Node-RED data, then deploy and back up flows.
Secure your node-red instance with password authentication by updating settings.js and mounting data. Use docker exec and node-red admin hash to set the password and preserve flows.
Install and configure InfluxDB, a time series database, to record metrics from sensors and analytics, such as temperature and power voltage, using Docker and Node-RED with MQTT.
Install Grafana with a docker run, create a Grafana volume, and run on port 3000 to visualize InfluxDB data with drag-and-drop dashboards and MySQL/MariaDB sources.
Explore MariaDB as a MySQL fork and install it with Docker to create databases via CLI. Use Docker exec to create database like Node-red course and access it with Adminer.
Discover how Adminer simplifies MariaDB management with a single PHP file and a ready-to-use Docker container. Create databases, run SQL, and use import and export.
Update a Node-RED docker container by pulling the latest image from Docker Hub, stopping the old container, pruning, and re-running to preserve data, and automate with Portainer or Bash scripts.
Learn how to set up Traefik as a reverse proxy with SSL using Docker Compose, Let's Encrypt, a subdomain, and routing to Node-RED and Portainer.
Secure Node-RED on Docker by configuring Traefik labels in a docker-compose setup, enabling TLS with Letsencrypt, a custom hostname, and automatic certificate renewal for SSL-enabled access.
Explore crontab and cron jobs in Linux and Ubuntu to schedule tasks at fixed times, using minute, hour, day, month, and weekday fields with examples like daily at 2:30.
Explore Node-RED as the ideal environment for building this elephant maker and learn installation, configuration, menus, and how to find and implement all nodes for practical examples.
Apply the separate tasks rule to IoT projects: keep data sensing and device control on the ESP32, while Node-RED handles logic, web servers, MQTT, and remote control.
Learn to build and manage Node-RED flows for IoT projects: create, edit, deploy, and debug flows; use inject and debug nodes, import/export JSON, and install nodes like Telegram bot.
Build and test Node-RED flows for IoT with ESP32 by overriding payloads in function nodes, using debug nodes, and deploying multi-output logic for conditional routing of temperature and humidity.
Process json from an api in Node-RED by creating a json function, parsing message.payload, and implementing access control that yields access granted or access denied via MQTT.
Master Node-RED scopes using function, inject, and debug nodes to manage local, flow, and global context. Create and access a global office light, and understand why persisting data matters.
Explore the join node in node-red, combining temperature, humidity, and air quality into one message for debugging and storing data in a database.
Master MQTT basics, including quality of service, retained messages, and publish and subscribe, then run your first MQTT messages in a docker container to prepare for Node-RED.
Explore mqtt terminology and how mqtt enables lightweight machine-to-machine communication for IoT using brokers, topics, and retained messages across ESP32 devices.
Explore how MQTT works with a mosquitto broker, publish topic temperature from a DHT-20 sensor on an ESP32, and subscribe with Node-RED, CLI, and dashboards.
Master MQTT topic levels and wildcards to organize smart home data with slash hierarchies, using single level + and multi-level # wildcards for subscription, debugging, and dashboards.
Explore MQTT quality of service levels—at most once, at least once, and exactly once—showing how publishers send messages to the broker, how acknowledgements work, and when duplicates may occur.
Understand retained messages in MQTT, where the broker stores the last value for fast access by subscribers, with cautions on unchanged data and topic choice.
Discover how birth, death, and last will messages function in MQTT, signaling a successful connection and notifying subscribers when a client disconnects unexpectedly.
Maintain clean MQTT topic naming by avoiding leading slashes, spaces, or underscores; use slash-delimited, precise names like kitchen1 or office23 to keep the topic hierarchy simple.
Demonstrate mqtt explorer to connect to your broker, view topics, clients, and messages, and debug mqtt traffic across kitchen and office for IoT projects.
Explore connecting microservices with node-red as the main station, configuring mqtt with the mosquito broker, connecting to Influxdb, and visualizing data in Grafana.
Configure mqtt broker for a node-red flow by creating broker, entering ip (localhost) and port 1883, using protocol 3.1.1, and enabling security with username and password, then deploy.
Learn to save data from Node-RED into InfluxDB by installing the Influxdb node and configuring host, token, and bucket. Simulate temperature values and send them via MQTT to InfluxDB.
Visualize node-red temperature data in Grafana using an InfluxDB flux data source and API token; configure the data source, create a dashboard, and enable updates every five seconds in Celsius.
Learn to store and retrieve temperature data from node-red into MySQL or MariaDB database by building insert and select SQL statements, and define a table with id, timestamp, and temperature.
Introduce the ESP32 chip variants, including dev kit and D1 boards, and outline their advantages and disadvantages. Set up Visual Studio Code and PlatformIO to run the first WiFi sketch.
Highlight the benefits of using Visual Studio Code with PlatformIO for ESP32 projects over the Arduino IDE, focusing on faster compilation, better IntelliSense, and cross platform setup.
Program an ESP32 to blink an LED without delay using millis and a previous millis timer, toggling pin 26 with a 1-second interval inside a loop.
Create a wifi and mqtt setup using a wifi.h header and the pub sub client. Connect to wifi with credentials.h, configure mqtt server, and implement a reconnect loop.
Toggle a led via mqtt on esp32 using node-red by subscribing and publishing to topics, testing bidirectional communication, and handling led state with on/off messages.
Transfer code from Visual Studio Code and PlatformIO into the Arduino IDE, paste credentials and main.cpp, rename to Arduino IDE.ino, and compile, upload, and view serial data on the ESP32.
Build a mini online weather station with temperature and light sensors on an ESP32, sending data via MQTT to Node-RED for processing and storage in InfluxDB, with real-time Grafana visualization.
Describe wiring two I2C sensor modules to an ESP32, wiring data and clock to GPIO 21 and 22, powering from USB, and preparing for relay-driven fan control.
Establish wifi and mqtt connections on the ESP32, include credentials.h and topic callbacks, and implement a reconnect loop with blink without delay to enable node-red messaging.
Learn to read temperature, barometric pressure, and altitude with the BMP180 on ESP32 using the Adafruit BMP library, including setup, loop, and serial output.
Explore wiring and programming a BH1750 light sensor with an ESP32, reading lux and printing via serial. Prepare to transfer the data to node-red for IoT integration.
Connects node-red to an mqtt broker by sending a dynamic json payload from a weather station, including temperature, pressure, altitude, and lux, with data shown in the debug console.
Save data from Node-RED to InfluxDB by installing the InfluxDB node, generating an API token, configuring a bucket and measurement, deploying the flow, and viewing results.
Set up grafana on port 3000, add influxdb as a flux data source with a token, and build a temperature dashboard in Celsius that updates every five seconds.
Learn to control an ESP32-driven fan via MQTT with Node-RED using inject nodes to send true/false to a fan topic, update pin 18, and handle JSON messages in code.
Explore hysteresis in Node-RED with a two-point temperature controller to steady fan operation using upper threshold 29 and lower threshold 27 degrees, preventing constant on/off switching.
Demonstrates real-life temperature hysteresis in a mini weather station using Node-RED function nodes to extract temperature and drive a fan; data stored in InfluxDB with a two-point controller.
Visualize API data on an e-ink display and refresh hourly with an ESP32 and a Li-Po battery in deep sleep, while using Node-RED to perform HTTP requests.
Wire the waveshare 2.13-inch e-paper display to an ESP32 board with jumper cables, using 3.3V power and onboard battery management. Compatible with Raspberry Pi, Arduino, and ESP32, with ISP connections.
Set up the ESP32 C3 from Seed Studio, implement a blink sketch with PlatformIO and the Arduino framework, and verify WiFi and Arduino IDE integration.
Install the gpd2 library in the Arduino IDE, open the minimum example, configure a 2.13-inch e-ink display, and print hello world.
Change the font and rotate text on the display by adding Adafruit graphics library, selecting the free mono bolt font, and configuring rotation, font, and cursor for full screen output.
Convert a jpeg to a byte array and embed it by creating an image header file, then display the inverted bitmap on the full screen.
Display text alongside bitmap graphics on an ESP32-driven display by setting fonts, colors, and cursor positions, and printing dynamic data such as temperature and forecast.
Fetch current weather data from openweathermap.org using a free API key, latitude/longitude, and metric units. Build the HTTP request in the browser and prepare to implement it in node-red.
Build and test a rest api call in node-red by triggering a get request with inject and debug nodes, handling json callbacks, and using static json for safe testing.
Edit and transform JSON in Node-RED with a function node, access message.payload, and build a new message containing temperature, humidity, weather, day, and date for ESP32 processing.
Format Unix timestamps in JavaScript to produce readable dates, compute sunrise and sunset, and manage the e-ink display updates with a time-based show logic on the ESP32.
Subscribe to the inc topic in Visual Studio Code, deserialize json with node-red, and update a structured ink data object to display temperature and sun events on the ESP32.
Power the ESP32 with LiPo batteries and enable deep sleep to conserve energy, since the e-ink display requires no power and wakes hourly to show fresh data.
Calculate power consumption using an upcycled e-cigarette battery to run an e-ink display, with Node-RED showing fresh data and deep sleep of 44 microamps.
Explore a 3d printed housing for IoT projects with ESP32, featuring space for a display, USB port, a 2200 mAh battery, and lid, enabling wireless use for over a month.
Use the ESP32 camera to capture photos on motion with a PIR sensor and deep sleep. Send images via MQTT to Node-RED for real-time push notifications or emails.
Wire the ESP32 cam with a FTDI USB-to-UART, flash via ground-to-gpio, and power it safely; add a PIR detector on the second side to wake it from deep sleep.
Use the ESP32 cam camera web server example to verify wiring, upload the sketch, and test streaming via the IP address.
Control an ESP32cam with node-red to take and send a picture via MQTT, using inject nodes, MQTT in/out, and a sketch that handles flash and publishes the image.
Install the image output node in Node-RED, connect it to the MQTT input, and render incoming binary image data with a live preview. Resize the image to suit your needs.
Trigger a PIR sensor to wake the ESP32 cam from deep sleep using GPIO 13, set VGA frame size, capture a motion photo, and send it via MQTT to Node-RED.
Configure telegram messaging in Node-RED by installing the telegram bot nodes, creating a telegram bot and API key, and wiring the sender and debug nodes to relay messages.
Save the latest ESP32 cam photo to the server with a write file node in Node-RED, storing it in the Docker data folder for later Telegram or email processing.
Integrate Telegram messaging in a Node-RED flow to notify via text and photo when the ESP32 motion detector triggers, including chat ID handling, file name, and a safe delay.
Demonstrates using an rfid tag and an esp32 to trigger a time-tracking rest api, starting and stopping recordings and persisting entries to a database.
Wire the esp32 d1 mini with an rfid module on 3.3v only, using the spi pins (mosi, miso, sck), irq, gnd, and reset, with two leds to show login status.
Read the RFID id from a chip with the MFRC522 library on ESP32, wiring SDA to 26 and RST to 5, extract the UID, and print it.
Configure and transmit RFID tag data from the ESP32 to Node-RED using MQTT publish topics, set up debug nodes, and troubleshoot connection delays to ensure a single message per tag.
Control an esp32’s leds with the toggle_led function to indicate login status: green for in, red for out. The caption notes digitalWrite usage and blinking to show wifi mode.
Discover how to containerize a time tracking tool with docker-compose, set up credentials and containers, and expose an API for Node-RED to drive an RFID terminal.
Fetch data from node-red via http requests to the time taker web api using an oauth api token, then retrieve time range records with a node-red flow.
Learn how to create and upload records via a put web API using Node-RED, generating a random key and Unix timestamps, and verify results with time taker.
Store an RFID read entry in a flat file on the server using a Node-RED flow with ESP32 data, MQTT, and Docker, saving to time records.txt.
Create, read, and delete time records using the file system in Node-RED, storing data in Time Records.txt, building payloads with JSON, and optionally updating via the Web API.
For Makers and DIY enthusiasts who want to take their Internet of Things (IoT) projects into their own hands.
Welcome to my online course on Node-RED, MQTT and ESP32! Designed specifically for Makers and DIY enthusiasts, this course gives you the opportunity to take your projects to the next level by combining Node-RED, MQTT and ESP32.
Node-RED is a visual programming environment that allows projects to be created easily and intuitively without the need for in-depth programming knowledge. MQTT is a lightweight protocol for data transmission in IoT networks, with which end devices can be connected quickly and easily. The great advantage of MQTT is that transmission is possible in near real time. The ESP32 is a powerful microcontroller that is ideal for IoT projects thanks to its integrated WiFi and Bluetooth support.
In this course you will learn how to use Node-RED to control and regulate your ESP32-based projects and exchange data via MQTT. You will learn how to build your own IoT network, collect data from sensors and visualise it in real time with actual programs like InfluxDB or Grafana. You will also learn how to monitor and control your projects via the internet and retrieve data from anywhere in the world.
This course is ideal for Makers and DIY enthusiasts who want to take control of their projects and deepen their knowledge of the Internet of Things with MQTT and Node-RED. The combination of Node-RED, MQTT and ESP32 gives you the flexibility and power you need to turn your projects into reality.
What you learn:
Node-RED Installation and Setup
Mosquitto MQTT Broker, Grafana and InfluxDB as well as MariaDB with Adminer
All microservices are also shown with the Docker variant.
Implementation of ESP32 projects with PlatformIO
Combination of ESP32, MQTT and Node-RED
Creating and programming your own function nodes with JavaScript
State of the Art ESP32 Programming with C++
After this course you will be able to implement your own IoT projects
So let's get started and learn how you can create your own IoT projects!
Markus Edenhauser, MA MSc