Projektdokumentation

Hur vi byggde Mail Notifier

Ett skolprojekt som började med ett enkelt problem i vardagen och slutade med ett fungerande IoT-system byggt med Raspberry Pi, PIR-sensor, Flask och realtidssynkronisering.

Nasr Hejazi
Nasr Hejazi
Furkan Turkmen
Furkan Turkmen
Se Projektet i Aktion
Scrolla

Ett problem vi kände igen

De bästa projekten löser problem man faktiskt stöter på. Vårt var inget undantag.

💡

"Varför ska man behöva gå ut och kolla brevlådan varje dag utan att veta om det ens kom någon post?"

Vi märkte att det är ett litet men irriterande problem i vardagen — man promenerar ut i regnet, öppnar brevlådan och den är tom. Eller ännu värre: man glömmer bort det och posten ligger kvar i dagar. Vi ville ha ett system som vet när posten kommit och berättar det för oss direkt — på telefonen, datorn, eller vilken enhet som helst. Tanken var enkel. Utförandet visade sig vara en helt annan historia.

Hur vi tog oss dit

Från idé till fungerande system — de stegen som förändrade allt.

Steg 01

Idén och planeringen

Vi började med att identifiera problemet: behoven av en automatisk brevlådenotifikation. Vi ritade upp systemarkitekturen tillsammans och bestämde vilken hårdvara som behövdes. Valet föll på Raspberry Pi och en PIR-sensor — två komponenter vi aldrig jobbat med tidigare.

Planering

Steg 02

Hårdvara-monteringen

Vi samlade komponenterna och började med att koppla PIR-sensorn till Raspberry Pi. Det var mycket experimentering — det tog tid att förstå GPIO-pins, spänning och jordan. Vi använde jumper-kablar först, och efter många tester fick vi det att fungera. Sensorn triggade in hundratals event per sekund, vilket blev vår första stora utmaning.

Hårdvara
Vår slutgiltiga hårdvara-setup med Raspberry Pi och PIR-sensor

Steg 03

Sensitivitetsjustering

För att lösa det överflödiga event-problemet justerade vi sensitiviteten för sensorn, vilket filtrera bort falskalarm och onödiga event.

Optimering

Steg 04

Flask-backend och datainsamling

Vi byggde en Flask-server som tar emot sensor-data från Pi:n och lagrar allt i JSON-filer. Det var inte en traditionell databas, men det fungerade perfekt för vårt projekt. API:et blev grunden för både dashboarden och e-post-notifieringarna.

Backend

Steg 05

E-postnotifikationer

Varken av oss hade jobbat med Gmail SMTP innan. Vi fick lära oss om app-lösenord, SSL-anslutningar och felhantering. Det var frustrerande i början, men när systemet slutligen skickade det första mejlet var det en stor seger!

Integration

Steg 06

Webbdashboarden

Vi designade ett HTML/CSS/JS-gränssnitt som visar statistik, ohämtad post, och anslutna e-postadresser. Dashboarden pollar servern var 500ms för att hålla sig uppdaterad i realtid. Det blev vackrare och mer funktionellt än vi förväntat!

Frontend

Steg 07

Realtidssynkronisering

Det sista stora problemet var att om enhet A hämtade posten uppdaterades inte enhet B förrän nästa poll. Vi implementerade Server-Sent Events — en teknologi som låter servern broadcastas ändringar direkt till alla anslutna klienter. Resultatet: alla enheter uppdateras på millisekunder!

Realtid
Systemet i full drift med alla komponenter anslutna

Systemet i Full Drift

En autonom loop som visar Mail Notifier när det reagerar på rörelse och utlöser notifikationer i realtid.

Realtidsdemonstration — systemet reagerar på rörelse och uppdaterar alla enheter

Systemet i Bilder

Swipa eller klicka dig igenom dessa nyckelbilder från projektet.

1 / 3
Projektöversikt - Mail Notifier
Hårdvara-setup - PIR-sensor och Raspberry Pi
Systemet i drift - alla komponenter anslutna
🎯

Från koncept till verklighet — systemet i praktiken

Problem vi löste

Varje projekt stöter på väggar. Här är de som kostade oss mest tid.

01 🔌

PIR-sensorn triggade för ofta

Sensorn skapade hundratals events per sekund vid rörelse. Vi löste det med en motion_active-flagga — ett event per rörelsesession, inte ett per frame.

Löst
02 📧

E-postnotifikationer

Ingen av oss hade jobbat med SMTP tidigare. Vi fick lära oss Gmail App Passwords, SSL-anslutningar och hur man hanterar fel om mottagaren inte finns — allt från grunden.

Löst
03 📱

Synk mellan enheter

Polling visade sig inte räcka — om enhet A hämtade posten visste inte enhet B om det förrän nästa poll. Server-Sent Events löste det: alla enheter uppdateras på millisekunder.

Löst
04 📊

Felaktig statistik vid refresh

Räknaren för ohämtad post visade fel siffra vid sidomladdning — den räknade råa sensor-events istället för faktiska leveranser. Lösningen var att separera todayCount från mailCount i frontend-logiken.

Löst

Vad vi använde

Hela stacken, från hårdvara till webbläsare.

🥧
Raspberry Pi
Hårdvara & server
👁️
PIR-sensor
Rörelsedetektion
🐍
Python / Flask
Backend & API
📡
Server-Sent Events
Realtidssynk
🌐
HTML / CSS / JS
Dashboard
📬
Gmail SMTP
E-postnotiser

Resultatet talar för sig självt

Från noll erfarenhet av hårdvara och IoT till ett fungerande system som känner av post, skickar mejl och synkroniserar alla enheter i realtid.

6 Steg i processen
4 Lösta utmaningar
0→1 Erfarenhet av IoT