AntiMould Shower Sentinel A new smart device called AntiMould Shower Sentinel uses machine learning on an Arduino Q to detect shower sounds and check if an extractor fan is running, sending real-time alerts via Home Assistant on a Raspberry Pi 5 to prevent mould growth in UK bathrooms. The system addresses high humidity and poor ventilation in well-insulated homes by prompting users to turn on the fan, and also notifies them if the fan is left on unnecessarily. AntiMould Shower Sentinel is a smart, ML‑powered device that listens for the sound of a running shower and instantly detects when the extractor fan hasn’t been switched on. By sending real‑time alerts to Home Assistant, it prompts the user to activate ventilation before humidity builds up. The result is simple but powerful: a low‑cost, automated way to prevent mould growth, protect bathroom surfaces, and keep your home healthier — all without installing new sensors or modifying existing wiring. In the UK, mould risk is significantly elevated because showers generate high moisture loads in small, enclosed bathrooms. When the extractor fan is off, relative humidity quickly exceeds 70–80% , pushing surfaces toward the dew‑point , where condensation forms. UK homes are typically well‑insulated with limited passive airflow , so this moisture cannot dissipate naturally. The combination of high humidity , cold external walls , and poor ventilation creates ideal conditions for rapid mould growth, especially on grout, plasterboard, and silicone seals. When a user begins showering, the Edge Impulse machine‑learning model running on the Arduino Q identifies the acoustic signature of the shower. Once shower activity is confirmed, the system checks whether the extractor fan is running and continues monitoring for the next 20 minutes to ensure proper post‑shower ventilation. If the fan is not detected during or after the shower, the Arduino Q sends a signal to Home Assistant , running locally on a Raspberry Pi 5 , which then triggers a mobile notification reminding the user to switch the fan on to prevent humidity build‑up and mould growth. The system also handles the reverse scenario: if the user forgets to turn the fan off , Home Assistant sends a notification prompting them to switch it off, helping reduce unnecessary electricity. To build this project from scratch, follow these steps: 1. Set up your Home Assistant server on the Raspberry Pi 5 Install Home Assistant OS or supervised setup so it can act as the central automation hub. 2.Connect your Home Assistant mobile app to your local server This enables secure local notifications and lets your phone receive alerts from the system. 3.Train Edge Impulse machine‑learning model Collect shower‑sound samples, label them, and train a classifier capable of detecting shower activity reliably. 4.Deploy the trained model to the Arduino Q Export the Edge Impulse model and flash it onto the Arduino Q so it can run inference locally at the edge. 5.Integrate the Edge Impulse model with Home Assistant Send shower‑detection and fan‑status events from the Arduino Q to Home Assistant, enabling automated alerts and energy‑saving reminders. Step 1: Set up your Home Assistant server on the Raspberry Pi 5Please keep in mind that in this setup, the Raspberry Pi 5 acts as the Home Assistant server , while the Arduino Q functions as the client running the ML model . The Arduino Q detects both shower and extractor‑fan sounds, and based on this detection, it sends events to Home Assistant. Home Assistant then triggers mobile notifications to alert the user when ventilation is needed or when the fan has been left running unnecessarily. 128 GB SD Card — Class 10 or better recommended Raspberry Pi 5 — Board and case optional but recommended Keyboard and Monitor — HDMI-compatible display Official Raspberry Pi 5 Power Supply — 27W USB‑C PD supply First, you’ll need to flash Home Assistant OS onto the SD card and boot up the Raspberry Pi. The full instructions for this initial setup are provided in the link below, so please follow them carefully: https://www.home-assistant.io/installation/raspberrypi/ https://www.home-assistant.io/installation/raspberrypi/ If you don’t have an Ethernet connection available on your Raspberry Pi 5, follow the steps below after installing Home Assistant OS to connect to Wi‑Fi. 1. Open the HA OS Terminal if you have a keyboard/monitor connected to the Pi, use the local console. 2. Scan for available Wi‑Fi networks Code nmcli device wifi list This shows SSIDs around you. 3. Connect to your Wi‑Fi network Replace YOUR SSID and YOUR PASSWORD with your actual Wi‑Fi details: Code nmcli device wifi connect "YOUR SSID" password "YOUR PASSWORD" If successful, you’ll see a confirmation message and the Pi will join your Wi‑Fi. Step2: Connect your Home Assistant mobile app to your local serverNow that Home Assistant is fully configured on your Raspberry Pi 5 and successfully connected to your Wi‑Fi network, the next step is to enable communication between Home Assistant and the Home Assistant mobile app so your system can deliver real‑time notifications to the user. You need the official app to enable secure local notifications and device tracking. 1.Download the Home Assistant app from the App Store iOS or Play Store Android 2.Ensure your phone is connected to the same Wi‑Fi network as your Raspberry Pi 5 3. Launch the app 4.Wait for it to detect http://homeassistant.local:8123 or your Pi’s IP address 5. Log In With Your Home Assistant Account This links your phone to your Home Assistant user profile. After login, the app will automatically register your device. You will see your phone listed under Settings → Devices & Services → Devices Enable Notifications Notifications must be allowed both in the app and on your phone. In the app: go to App Configuration → Notifications and enable them On your phone: allow notifications for the Home Assistant app in system settings Test a Notification Please follow the below steps to test a notification : - Verifies that your phone can receive alerts from Home Assistant. - In Home Assistant, go to Developer Tools → Services - Select notify.mobile app