DEV Community

Emily Johnson
Emily Johnson

Posted on

How to Build a Real-Time IoT System to Monitor Cleaning Performance

Maintaining cleanliness in commercial and residential spaces has become more vital than ever, especially in high-traffic environments. Whether it's office spaces, retail stores, or hospitality venues, ensuring that every area is consistently cleaned can directly impact customer satisfaction and health standards. That’s where smart cleaning comes in.

In this post, we will walk you through building a real-time IoT system to monitor cleaning tasks. You’ll learn how to:

  • Design a system architecture using microcontrollers and sensors
  • Communicate cleaning events using MQTT
  • Visualize and analyze the data using Node.js and a simple frontend

This system is ideal for cleaning companies looking to add value to their services or for property managers aiming to maintain high hygiene standards.


Why Real-Time Cleaning Monitoring?

Traditionally, cleaning logs are maintained manually — which leaves room for error or intentional manipulation. An IoT-based solution introduces automation and accountability:

  • Timestamped records of cleaning events
  • Sensor-based monitoring of specific actions (e.g., soap dispensers, mop buckets)
  • Alerts for missed schedules

This system is perfect for commercial applications.

A Great Opportunity for Cleaning Providers

Smart cleaning solutions provide a technological advantage that can set businesses apart. For example, companies like Cleaning Services Edgewater Il can demonstrate the use of real-time monitoring to improve client satisfaction.

System Architecture

Here’s a breakdown of our IoT-based solution:

[Sensor Node (Raspberry Pi)] ---> [MQTT Broker] ---> [Node.js Backend] ---> [Frontend Dashboard]
Enter fullscreen mode Exit fullscreen mode

Hardware Components:

  • Raspberry Pi (or ESP32 for cost-efficiency)
  • Ultrasonic or PIR motion sensors (detect cleaning movement)
  • Wi-Fi connectivity

Software Components:

  • MQTT Protocol (via Mosquitto or HiveMQ)
  • Node.js Backend (Express.js + MQTT.js)
  • MongoDB (optional for data persistence)
  • React or plain HTML dashboard

Getting Started with Sensor Node

We’ll use a Raspberry Pi connected to a PIR motion sensor to detect cleaning activity.

Python Script for Sensor Monitoring

import paho.mqtt.client as mqtt
import RPi.GPIO as GPIO
import time

# GPIO Setup
PIR_PIN = 4
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIR_PIN, GPIO.IN)

# MQTT Setup
broker = "mqtt.example.com"
topic = "cleaning/activity"
client = mqtt.Client()
client.connect(broker)

try:
    while True:
        if GPIO.input(PIR_PIN):
            print("Movement Detected!")
            client.publish(topic, "cleaning_event")
        time.sleep(1)
except KeyboardInterrupt:
    GPIO.cleanup()
Enter fullscreen mode Exit fullscreen mode

Building the MQTT Broker & Backend

You can run Mosquitto locally or use a hosted broker. Once your broker is running, let’s connect it to a backend server to log and process events.

Node.js Code to Subscribe to Cleaning Events

const mqtt = require('mqtt');
const express = require('express');
const app = express();

const brokerUrl = 'mqtt://mqtt.example.com';
const client = mqtt.connect(brokerUrl);

let eventLog = [];

client.on('connect', () => {
  client.subscribe('cleaning/activity', () => {
    console.log('Subscribed to cleaning/activity');
  });
});

client.on('message', (topic, message) => {
  const timestamp = new Date();
  eventLog.push({ message: message.toString(), timestamp });
  console.log(`Event received at ${timestamp}: ${message}`);
});

app.get('/events', (req, res) => {
  res.json(eventLog);
});

app.listen(3000, () => console.log('Server listening on port 3000'));
Enter fullscreen mode Exit fullscreen mode

Creating the Dashboard

A simple web interface can help display logs for cleaning supervisors or customers.

HTML/JavaScript Frontend

<!DOCTYPE html>
<html>
<head>
  <title>Cleaning Activity Log</title>
</head>
<body>
  <h1>Real-Time Cleaning Activity</h1>
  <ul id="eventLog"></ul>

  <script>
    async function fetchEvents() {
      const res = await fetch('/events');
      const data = await res.json();
      const logList = document.getElementById('eventLog');
      logList.innerHTML = '';
      data.forEach(event => {
        const item = document.createElement('li');
        item.textContent = `${event.timestamp}: ${event.message}`;
        logList.appendChild(item);
      });
    }

    setInterval(fetchEvents, 5000);
    fetchEvents();
  </script>
</body>
</html>
Enter fullscreen mode Exit fullscreen mode

Commercial Implications

For service providers, offering real-time monitoring can become a competitive advantage. Clients are more likely to trust companies that can back up their cleaning commitments with data.

A Transparent Approach

Using IoT-backed reporting and dashboards, companies such as Maid Service Englewood Il can offer transparent service reports to clients — helping ensure accountability and professionalism.


Security Considerations

When dealing with real-time IoT systems, ensure:

  • Data is encrypted (TLS for MQTT)
  • Devices are authenticated
  • API endpoints are secured with tokens or basic auth

Optional: Add Data Visualization

To make insights easier to understand, consider integrating chart libraries like Chart.js or dashboards like Grafana.

You can also store events in a database like MongoDB for historical trend analysis:

// MongoDB insertion example
const { MongoClient } = require('mongodb');
const uri = 'mongodb://localhost:27017';
const clientDb = new MongoClient(uri);

async function saveEvent(event) {
  await clientDb.connect();
  const db = clientDb.db('cleaningDB');
  const collection = db.collection('events');
  await collection.insertOne(event);
}
Enter fullscreen mode Exit fullscreen mode

Summary

We’ve explored how you can build an end-to-end system to monitor cleaning in real time using affordable and accessible tools. By combining IoT hardware with lightweight backend and frontend technologies, you can provide value to cleaning operations across industries.

With a bit more effort, this system can be scaled up, integrated with CRMs, or even deployed across multiple properties.

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.