

IoT Water level monitoring with Watmonitor webapp
For households and industry
Watmonitor - IoT level monitoringdashboard
Watmonitor is a centralized web application for visualizing the level of liquids and bulk materials. It allows connecting sensor nodes via API and storing data in a database. Thanks to the intuitive interface, you can monitor the current level and volume in real time, including trends (rise, fall) and connection status.
Key features
- Real-time tank level and volume values with measurement trends
- Advanced visualizations – graphs with measurement history
- Data export from graphs in .svg, .png, .csv formats
- Maximum and minimum level values for periods
- Support for differential and total level measurements
- Responsive design – usable on both PC and smartphone
- Possibility of integration via JSON endpoints into other systems
The solution is designed to monitor liquids - water, oil, fuel, bulk materials such as biomass, pellets, seeds, feed, granules and other materials.
Usage Scenarios
An ideal solution for real-time water level monitoring in dug and drilled wells, retention tanks, shafts, lakes, rivers and cesspools. Also suitable for applications in waste and water management, or for measuring the height of bulk materials in industrial applications - tanks, halls, warehouses, silos with the possibility of integration into existing systems.
Supported Sensor Types
The web interface is universal – it does not distinguish from which sensor it obtains data. Any sensor for which you customize the firmware is supported. For a ready-made industrial sensor solution, just set up a callback to the Watmonitor API for data logging.
Fast prototyping
For rapid prototyping with Watmonitor, source codes for DIY open-source hardware under Arduino Core are available. ESP32, ESP8266, Arduino platforms with WiFi or Ethernet connection to Watmonitor are supported. Source codes include ultrasonic and ToF laser distance sensors. Basic and more advanced implementations are available with features such as Ultra Low Power mode, or OTA (Over-The-Air) updates. For ESP32, implementations in ESP-IDF are also available, with support for FreeRTOS and inter-task communication.
QR / AR Features
Watmonitor allows instant access to the latest sensor data by scanning a QR code with your smartphone. Users can view either a static visualization or an interactive AR (Augmented Reality) scene with fixed camera distance, providing a more engaging way to monitor water levels and other sensor data in real time.
Affordable
Self-hosted
Downloadable graphs
Open-source HW friendly
Responsive
Multilanguage support
White labeling
Support & feedback
Details

The root (Overview) page
The main overview of actual state of Watmonitor's sensor node data, connectivity
Watmonitor's main page displays real-time water level data, volume, and trends (increase/decrease). It also shows the time of recording and sensor node connectivity status, providing users with up-to-date information for effective water monitoring.

History & Records pages
Whole data history, min / max recordings for set period of time
The History page in Watmonitor displays all water level measurements in a table format, with the option to delete any record. The Records page shows the minimum and maximum water levels for the last 24 hours, 7 days, and 30 days, presented in a gauge visualization for easy monitoring.

Line Area Graphs
Overview of water level data in different time series, up to 1 year ago.
Watmonitor's Graph page allows users to easily view and analyze time-series water level data. Users can download the entire graph or specific sections and export the data in multiple formats, including .csv, .png, and .svg, for further analysis and reporting (MATLAB, OriginLab, Excel, PowerPoint).

ESP32 program
Automatically-generated source code for ESP32 (Arduino IDE)
The Program page provides pre-generated source code for IoT sensor nodes based on the ESP32 platform, supporting both WiFi and PHY Ethernet connectivity with FreeRTOS, depending on the selected protocol (HTTP or HTTPS). The system automatically configures routes to upload data to Watmonitor on your domain. This source code is compatible with Arduino Core 3.0.X (2024), making it easy to integrate with your IoT water monitoring setup.

Wiring diagram
Wiring diagrams for all supported open-source hardware
The wiring diagrams available on this page are designed for open-source hardware platforms such as ESP32, ESP8266, and Arduino, with program implementations available on GitHub. Simplified pin-mapping tables are also provided to help non-technical users easily set up the hardware for their water monitoring system.

Options
Options to set waterwell dimensions, language
This page allows users to input water well dimensions (depth and diameter) to calculate the total water level and volume of the well. The page supports multiple language options, including English, Slovak, German, Russian, French, and Spanish, making it accessible to a wide range of users.
Gallery
Frequently Asked Questions
The most asked question from the community answered below
Do I need web hosting to run Watmonitor on my own server?
Yes, to run Watmonitor, you will need either local or internet web hosting. In order to execute the PHP scripts for Watmonitor, your server must have Apache (HTTPD) or NGINX service installed. Watmonitor has been tested and works on PHP versions 7 to 8.4.
Is it difficult to configure the web application for Watmonitor?
Configuring the web application for Watmonitor is made easy with a detailed, step-by-step guide in PDF format. This guide simplifies the setup process for all users, including instructions for importing the .sql file into MySQL, configuring connect.php with your database credentials, setting up HTTP Auth data, and entering the device token.
Will Watmonitor automatically generate source code for my hardware?
Yes, Watmonitor will automatically generate source code sketches for your hardware, including ESP32 with WiFi or PHY Ethernet connection and supported ultrasonic sensors. The generated sketches will include the necessary MCU token, calculate the trace to the target PHP file, and automatically add your domain (note: localhost will not work—ensure you use an accessible IP or domain name). The Root CA certificate (for HTTPS connections) is not modified, so you will need to manually add it into the sketch for the ESP32.
Are there additional source codes available beyond those in the Watmonitor app?
Yes, there are several additional source codes available on GitHub that are compatible with the Watmonitor interface. These include examples for Arduino with Ethernet (ENC or Wiznet series), ESP8266, ESP32, and other transmission technologies such as LoRaWAN and Sigfox LPWAN. You can access these source codes by clicking the "Sensor node examples" button at the top of this page.
In what languages is Watmonitor available?
The Watmonitor web app offers full language translations for the following languages: English, German, Russian, Spanish, French, and Slovak, making it accessible to a global audience.
How to integrate Watmonitor into other systems?
Watmonitor has two JSON API endpoints - accessible via HTTP GET:
• json_output.php – provides the latest known data (natively used by QR scanner / AR visualization).
• json_output2.php – provides all recorded data with the option to enter GET parameters to limit the results (from–to), or all from, or all to.
Endpoints allow integration into other automation-enabled systems:
Node-RED, Ignition SCADA, NetSuite, AWS IoT Core, ThingsBoard, Grafana, ELK Stack, Power BI, Tableau, Home Assistant ...
Extendable with webhooks for automation (Zapier, IFTTT, n8n, Microsoft Power Automate).
How is Communication Established Between the Server and the Arduino/ESP32 Sensor Node?
Arduino/ESP32 sensor node communicates with the webserver using HTTP or HTTPS protocols. Every 5 minutes, the sensor node measures the water level and sends the data via a POST request. This request includes detailed water level information. Upon receiving the data, the webserver stores it in a MySQL database, enabling instant visualization of water levels through the Watmonitor web application. This ensures real-time monitoring and efficient data management.
How Does the IoT Sensor Node Perform Measurement?
The IoT sensor node, powered by Arduino or ESP32, measures distance using an ultrasonic sensor with the Time-of-Flight (ToF) method. It sends a HIGH voltage pulse to the Trigger pin of the ultrasonic sensor for 10 μs and then measures the time it takes to detect a HIGH voltage signal on the Echo pin. Using the speed of sound, the sensor calculates the distance in centimeters with high precision. This efficient process ensures accurate distance measurement for IoT applications.
What does the callback look like on Watmonitor?
To write data to Watmonitor, you must use the HTTP request (port 80, or another if it is local hosting) / HTTPS (port 443) POST method to the target host and the data.php file (for example https://hladinomer.eu/data.php). The message parameters are "hodnota" - the water level in centimeters (data type INT) and "token", which represents the authorization token. If the write is successful, you will receive an HTTP 200 header in the server response and also an OK text output. Note: Enter the parameters without quotes.
