I det här projektet har vi utvecklat en lösning som kombinerar sensorer, en OLED-skärm, och en betalningsfunktion för att erbjuda en enkel och effektiv parkeringstjänst. Systemet använder ESP32-mikrokontroller och integreras med PayPal för betalningar. Processen inleds med att användaren trycker på en knapp för att öppna en barriär, och fortsätter med att systemet verifierar betalningen och låser upp barriären för att släppa in eller ut fordonet.

För att säkerställa att systemet fungerar korrekt, är det viktigt att förstå hur de olika funktionerna samverkar. En central funktion i koden är den som hanterar tidsstämplar. Funktionen parseTimestamp() parsar en tidsstämpel och fyller i strukturen createdTime. Om parsing är framgångsrik returnerar den ett true värde, annars false. När koden laddats upp till ESP32, simuleras en IPN-notifikation för att verifiera att hela processen fungerar korrekt, och användaren kan följa resultatet på serialmonitorn.

När systemet är fullt implementerat, kommer användaren att kunna följa en tydlig flödesstruktur: om betalningen inte är gjord, eller om bilen inte är parkerad, kommer systemet att vänta på att användaren trycker på knappen för att lyfta barriären. När betalningen genomförts kommer systemet att låsa upp barriären för att låta bilen lämna parkeringen.

Vid parkering visas ett betalningsgränssnitt på OLED-skärmen där användaren får en QR-kod att scanna för att genomföra betalningen via PayPal. När betalningen är bekräftad, kommer systemet att generera en IPN-notifikation via Webhook, vilket leder till att barriären öppnas och användaren kan köra ut. Om bilen inte tas bort inom en viss tid, stängs barriären och systemet återgår till sitt ursprungliga tillstånd.

Kodsnutten som styr hela flödet gör det möjligt att simulera detta beteende på en fysisk enhet. Till exempel, när en bil inte är parkerad, kontrollerar systemet kontinuerligt om barriären är uppe genom en knapptryckning. När knappen trycks ned, uppdateras skärmen och barriären öppnas, vilket signalerar att parkeringen kan börja. Därefter visar skärmen QR-koden för betalning, och barriären stängs igen.

När barriären är öppen och användaren har parkerat sin bil, blir systemet aktivt i väntan på att en betalning ska genomföras. Detta görs genom att skanna QR-koden på OLED-skärmen som leder till PayPal och låter användaren genomföra betalningen. När betalningen är genomförd får ESP32 en notifikation via Webhook och barriären öppnas automatiskt. Efter att användaren har lämnat parkeringen, kontrollerar systemet avståndet med hjälp av en ultraljudssensor. När bilen har lämnat området, återställs systemet till sitt ursprungliga tillstånd och barriären stängs.

Detta projekt fungerar bra som en prototyp, men vid en verklig implementation behöver systemet utökas med ett mer robust barrier-systems, exempelvis genom att använda reläer för att kontrollera barriären, vilket skulle ge en mer pålitlig funktionalitet i en verklig miljö.

För att ta detta projekt till nästa nivå i en verklig applikation, är det viktigt att förstå de praktiska begränsningarna och behovet av att anpassa tekniken till olika scenarier. För att säkerställa att betalningen är korrekt och att alla IPN-notifikationer tas emot, måste användaren ställa in PayPals IPN-tjänst genom att gå till sina inställningar och ange rätt Webhook-URL. Detta kräver att man har full kontroll över sin PayPal-konto och att Webhook-URL:en är korrekt implementerad för att kunna ta emot meddelanden om framgångsrika betalningar.

Det är också viktigt att vara medveten om den säkerhet som krävs för att hantera betalningar. Här är det rekommenderat att implementera autentisering och kryptering på alla nivåer av systemet för att skydda användarens personliga information och betalningsuppgifter.

Hur säkerställs betalning och säkerhet i IoT-projekt? En genomgång av aktuella begränsningar och säkerhetskoncept.

När en betalning görs till ditt konto kommer du att ta emot ett IPN (Instant Payment Notification) och kan på så sätt styra barriären i enlighet med betalningen. Detta skapar en praktisk och grundläggande lösning för att hantera betalningar och tillgång i ett parkeringssystem. Men det är viktigt att förstå de begränsningar som finns i den aktuella prototypen och vad som krävs för att bygga ett säkert och effektivt system.

Den färdiga prototypen för parkeringssystemet uppvisar flera viktiga begränsningar. Först och främst saknas en säker betalningshanteringsmekanism, vilket gör att betalningsdata är exponerad genom en offentlig webhook-tjänst. Detta innebär en betydande säkerhetsrisk då känslig information potentiellt kan fångas upp av obehöriga aktörer. Dessutom har prototypen ingen autentisering eller auktorisering för användare, vilket öppnar upp systemet för obehörig åtkomst. Detta gör att systemet inte kan garantera att endast behöriga användare har tillgång till det. Slutligen adresseras inte heller dataskydd eller regulatoriska krav som måste följas vid hantering av känsliga användardata och betalningsinformation.

Trots dessa begränsningar ger projektet en god förståelse för hur betalningssystem kan integreras i IoT-lösningar på en grundläggande nivå. Det är dock avgörande att vara medveten om de allvarliga konsekvenserna av bristande säkerhet och de åtgärder som måste vidtas för att skydda både användare och system.

I nästa del av texten introduceras några grundläggande säkerhetskoncept som är avgörande för att bygga säkra IoT-lösningar. Säkerhet är en central aspekt inom Internet of Things (IoT) och handlar om att skydda både anslutna enheter och den data som dessa genererar. För att förstå säkerhetsutmaningarna måste man känna till ett antal viktiga begrepp:

Autentisering är en av de viktigaste säkerhetskomponenterna inom IoT. Det handlar om att verifiera identiteten på både enheter och användare som söker åtkomst till ett nätverk. För att åstadkomma detta används olika mekanismer som lösenord, biometriska data eller digitala certifikat. Genom att implementera starka autentiseringsprotokoll kan IoT-system stoppa obehörig åtkomst och minska risken för att en komprometterad enhet ska kunna påverka hela nätverket.

Kryptering är en annan grundläggande säkerhetsåtgärd. Den säkerställer att all data som överförs mellan enheter och nätverk är konfidentiell och inte kan manipuleras. Krypteringsalgoritmer skyddar informationen mot obehörig åtkomst och avlyssning. I IoT används både symmetrisk och asymmetrisk kryptering beroende på behovet av säker kommunikation.

Public eller Private Key Infrastructure (PKI) är ett annat viktigt begrepp. PKI använder sig av en offentlig och en privat nyckel för att skapa säker kommunikation. Den offentliga nyckeln kan delas öppet medan den privata nyckeln hålls konfidentiell. Detta säkerställer att kommunikationen är både krypterad och autentiserad.

Genom att implementera dessa säkerhetskoncept kan IoT-system stärka sitt skydd mot obehörig åtkomst, dataintrång och andra potentiella hot. På så sätt kan man skapa ett mer tillförlitligt och säkert ekosystem som skyddar både användardata och systemets integritet.

För att implementera dessa säkerhetsåtgärder i ett IoT-system krävs teknisk förståelse och noggrann planering. Det handlar inte bara om att använda rätt teknologier utan också om att förstå de risker som finns och vidta lämpliga åtgärder för att skydda både användare och system.

Förutom de tekniska aspekterna är det också viktigt att beakta de juridiska och regulatoriska krav som gäller för IoT-system, särskilt när det gäller dataskydd. Det handlar om att följa relevanta lagar som GDPR i EU och säkerställa att användardata hanteras korrekt och säkert. Detta är en aspekt som många utvecklare ofta förbiser i det praktiska arbetet med IoT-lösningar men som är avgörande för att bygga ett hållbart och lagligt system.

Det är också värt att notera att säkerhet inom IoT inte är en engångsåtgärd. Det handlar om en kontinuerlig process där man ständigt utvärderar och förbättrar systemets skydd. Det innebär att system måste vara anpassningsbara och kunna uppdateras för att hantera nya säkerhetshot och tekniska framsteg.