Tartalomjegyzék:

Arcfelismerő biztonsági rendszer a Raspberry Pi hűtőszekrényhez: 7 lépés (képekkel)
Arcfelismerő biztonsági rendszer a Raspberry Pi hűtőszekrényhez: 7 lépés (képekkel)

Videó: Arcfelismerő biztonsági rendszer a Raspberry Pi hűtőszekrényhez: 7 lépés (képekkel)

Videó: Arcfelismerő biztonsági rendszer a Raspberry Pi hűtőszekrényhez: 7 lépés (képekkel)
Videó: Raspberry Pi with home security system 2024, Július
Anonim
Image
Image
Arcfelismerő biztonsági rendszer a Raspberry Pi hűtőszekrényhez
Arcfelismerő biztonsági rendszer a Raspberry Pi hűtőszekrényhez
Arcfelismerő biztonsági rendszer a Raspberry Pi hűtőszekrényhez
Arcfelismerő biztonsági rendszer a Raspberry Pi hűtőszekrényhez

Az interneten böngészve felfedeztem, hogy a biztonsági rendszerek árai 150 és 600 dollár között mozognak, de nem minden megoldás (még a nagyon drága is) integrálható más intelligens eszközökkel otthonában! Például nem állíthat be biztonsági kamerát a bejárati ajtóhoz, így automatikusan kinyitja az ajtót Önnek vagy barátainak!

Úgy döntöttem, hogy készítek egy egyszerű, olcsó és hatékony megoldást, amelyet bárhol használhat! Sok kézikönyv található az olcsó és házi biztonsági rendszerek létrehozásáról, de szeretném bemutatni ezek igazán nem triviális alkalmazását - biztonsági rendszer arcfelismerő hűtőszekrényhez!

Hogyan működik? A hűtőszekrény tetejére helyezett IP kamera, az érzékelők (két gomb) érzékelik, ha valaki kinyitja a hűtőszekrény ajtaját, ezt követően a Raspberry Pi lefényképezi az adott személyt (IP kamerával), majd elküldi a Microsoft Face API -nak hogy elemezze a képet és megkapja a személy nevét. Ezzel az információval a Raspberry Pi átvizsgálja a „hozzáférési listát”: ha a személynek nincs engedélye a hűtőszekrény elérésére, a Raspberry e -mailben, szöveges üzenetben és twitteren értesíti a tulajdonost! (Lásd a fenti képeket)

Miért? A rendszer lehetővé teszi a családtagok irányítását, különösen akkor, ha diétáznak, vagy küzdenek azzal, hogy éjfél után nem esznek! Vagy csak szórakozásból használd!

Ezenkívül beállíthatja a kamerát a bejárati ajtónál, és beállíthatja a rendszert, hogy nyissa ki az ajtót, amikor Ön, családtagjai vagy barátai közelednek. És ez még nem a vég! Az alkalmazás lehetőségei végtelenek!

Kezdjük!

1. lépés: Előkészítés

Készítmény
Készítmény

Szükséged lesz:

  • Raspberry Pi 3 (használhat régebbi verziókat, de a harmadik generáció rendelkezik Wi-Fi-vel, így nagyon kényelmes)
  • Gombok
  • Vezetékek
  • Régi okostelefon vagy Raspberry Pi kamera

Az első dolog, amit meg kell tennie, a Raspberry Pi konfigurálása. A részletes utasításokat itt és itt találja, de a legfontosabb lépéseket ebben a kézikönyvben tárgyaljuk.

  1. Töltse le a Win32 DiskImager programot innen (ha Windows rendszert használ)
  2. Az SD Formatter letöltése innen
  3. Helyezze be az SD -kártyát a számítógépbe, és formázza SD -formázóval
  4. Töltse le a Raspbian Image -t innen (válassza a "Raspbian Jessie pixellel" lehetőséget)
  5. Futtassa a Win32 DiskImager programot, válassza ki az SD -kártyát, adja meg a Raspbian -kép elérési útját, kattintson az "Írás" gombra
  6. Helyezze be az SD -kártyát a Raspberry Pi -be, és kapcsolja be a készüléket!

Ezenkívül konfigurálnia kell a Raspberry Pi -t, hogy SSH -n keresztül hozzáférjen a rendszerhez. Rengeteg utasítás található az interneten, ezt használhatja például, vagy csatlakoztathat monitort és billentyűzetet.

Most a Pi konfigurálva van, és készen áll a folytatásra!

2. lépés: Érzékelő készítése

Érzékelő készítése
Érzékelő készítése
Érzékelő készítése
Érzékelő készítése
Érzékelő készítése
Érzékelő készítése

Lépés Leírás: Ebben a lépésben egy érzékelőt készítünk, amely érzékeli, ha valaki kinyitja a hűtőszekrény ajtaját, és aktiválja a Raspberry Pi -t.

A beállításhoz szüksége lesz az eredetileg elkészített 2 gombra. Az első gomb érzékeli az ajtó kinyitását, a második gomb pedig azt, amikor kinyitják az ajtót addig a pontig, amikor egy személyt fényképezünk.

  1. Forrasztja a vezetékeket a gombokhoz.
  2. Csatlakoztassa az első gombot a hűtőszekrény ajtajához, hogy megnyomva legyen, amikor az ajtó zárva van (lásd a fenti képet)
  3. Csatlakoztassa a második gombot a hűtőszekrény ajtajához a fenti képen látható módon. Ezt a gombot mindig ki kell engedni, kivéve, ha az ajtó eléri azt a pontot, amikor a rendszer képet készít. A beállításhoz rögzítenie kell valamit a hűtőszekrényhez, hogy ezt a gombot megnyomja az ajtó kinyitásakor a kívánt mértékben (lásd a fenti képeket).
  4. Csatlakoztassa a vezetékeket a gombokról a Raspberry Pi -hez: az első gombot a GPIO 23 -hoz és a földhöz, a második gombot a GPIO 24 -hez és a földhöz (lásd a fritting diagramot).

Megjegyzés: BCM pinoutot használok (nem Board), bővebben a különbségről itt olvashat.

Miután csatlakozott a Raspberry Pi -hez SSH -n keresztül, a python shell futtatásához írja be a terminált:

python3

Ha a monitort és a billentyűzetet a Raspberry Pi -hez csatlakoztatja, futtassa a menü „Python 3 IDLE” parancsát.

A következő lépés a Raspberry Pi működtetése a gombokkal. A GPIO 23 és 24 érintkezőkhöz speciális hallgatókat csatolunk, amelyek figyelik a „felfutó él” és a „leeső él” eseményeket. Esemény esetén a hallgatók az általunk meghatározott függvényeket hívják meg. A „felemelkedő él” azt jelenti, hogy a gombot megnyomták és most elengedték (az első gomb - az ajtó nyitva van), a „leeső él” azt jelenti, hogy a gombot elengedték és most megnyomták (a második gomb - ajtó elérte a meghatározott pontot). További információ a gombok működéséről - itt.

Először importáljon olyan könyvtárat, amely hozzáférést biztosít a csapokhoz:

importálja az RPi. GPIO -t GPIO -ként

Most határozza meg azokat a speciális funkciókat, amelyeket az esemény aktiválásakor hívnak meg:

def érzékelő1 (csatorna): nyomtatás („1. érzékelő aktiválva”) def érzékelő 2 (csatorna): nyomtatás („2. érzékelő aktiválva)

Pinout típus beállítása:

GPIO.setmode (GPIO. BCM)

Konfigurálja a csapokat:

GPIO.setup (23, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup (24, GPIO. IN, pull_up_down = GPIO. PUD_UP)

Hallgatók csatolása:

GPIO.add_event_detect (23, GPIO. RISING, callback = sensor1, bouncetime = 300) GPIO.add_event_detect (24, GPIO. FALLING, callback = sensor2, bouncetime = 300)

Most tesztelheti! Ha megnyomja az 1 gombot, üzenet jelenik meg az „1. érzékelő aktiválva” terminálon, a 2. gomb „2. érzékelő aktiválva” üzenetet ad.

Megjegyzés: Ha befejezte a kísérletezést, ne felejtse el meghívni a következő függvényt: GPIO.cleanup ().

Állítsunk be még egy funkciót, amelyet akkor hívnak meg, amikor az ajtó eléri azt a pontot, ahol fényképet készítünk! Meg tudod csinálni magad, vagy használhatod az itt csatolt megvalósításomat (sensor.py)

Megjegyzés: a sensor.py csak tesztelési célokra használható, a teljes funkcionalitású fájlokat az utolsó lépéshez csatoltam.

3. lépés: Az IP kamera konfigurálása

Konfigurálja az IP kamerát
Konfigurálja az IP kamerát
Konfigurálja az IP kamerát
Konfigurálja az IP kamerát
Konfigurálja az IP kamerát
Konfigurálja az IP kamerát

Lépés leírása: Most a régi okostelefont IP -kameraként konfiguráljuk.

Az okostelefon IP -kameraként való alkalmazása applikáción keresztül történik. Különféle alkalmazások használhatók Android, iOS, Windows Phone rendszerekhez. Az "IP webkamera" nevet választottam Androidra. Ez egy ingyenes alkalmazás, és könnyen konfigurálható.

Futtassa az alkalmazást, lépjen a "Videóbeállítások" oldalra az alkalmazás által biztosított fényképek felbontásának beállításához. Ezután érintse meg a „Szerver indítása” elemet (az első kép fent). A képernyő alján látnia kell a kamera IP -címét (lásd a fenti második képet). A böngészőbe beírhatja a https://cam_ip_address/photo-j.webp

Végül rögzítse a kamerát a hűtőszekrényhez (Utolsó kép fent).

4. lépés: Face API

Face API
Face API

Lépés Leírás: Ebben a lépésben a Microsoft Face API -ról fogunk beszélni, amely arcfelismerést végez és azonosítja az embereket.

A Microsoft Face API egy arcfelismerő szolgáltatás, amelyen keresztül elemezhetjük a fényképeket és azonosíthatjuk a rajtuk lévő embereket.

Először is szüksége van Microsoft Azure -fiókra. Ha nincs, itt ingyenesen létrehozhatja.

Másodszor, lépjen a https://portal.azure.com oldalra, kattintson az "Új" gombra a bal oldalon, írja be a "Kognitív szolgáltatások API" űrlapot, válassza ki és kattintson a "Létrehozás" gombra. Vagy megnyithatja ezt a linket. Most be kell írnia a szolgáltatás nevét, ki kell választania az előfizetés típusát, a szükséges API -t (esetünkben Face API -t), a helyet, az árazási szintet, az erőforráscsoportot, és el kell fogadnia a jogi feltételeket (lásd a lépéshez hozzáadott képernyőképet).

Harmadszor, kattintson az "Összes erőforrás" elemre, válassza ki a Face API szolgáltatást, és tekintse meg a használati statisztikákat, hitelesítő adatokat stb.

A Face API részletei itt találhatók, példák találhatók különböző programozási nyelveken. Ehhez a projekthez python -t használunk. Elolvashatja a dokumentációt, és elkészítheti saját funkcióit, vagy használhatja az itt található szolgáltatásokat (ez nem a Microsoft által nyújtott teljes funkcionalitás, csak a projekthez szükséges pontok). A python fájljaim ehhez a lépéshez vannak csatolva.

Térjünk át a Face API -val végzett munka szerkezetére. Az "Azonosítás" funkció használatához létre kell hoznunk egy könyvtárat azokból az emberekből, akik a Face API szolgáltatás segítségével felismerik az alkalmazás által készített fényképeket. A beállításhoz kövesse az alábbi lépéseket:

  1. Csoport létrehozása
  2. Személyek hozzáadása ehhez a csoporthoz
  3. Adjon arcokat ezekhez a személyekhez
  4. Vonatcsoport
  5. Küldje be a fényképet az azonosítani kívánt személlyel (meg kell adnia a fényképet és a csoport azonosítóját, amelyben a szolgáltatás keres jelölteket)
  6. Eredmény: Válaszul kap egy listát azokról a jelöltekről, akik szerepelhetnek a beküldött fotón.

Három olyan fájlt hoztam létre, amelyek speciális funkciókkal rendelkeznek, amelyek lehetővé teszik csoportokkal, egyedülálló személyekkel és egyetlen fényképekkel való munkát:

  • PersonGroup.py - olyan funkciókat tartalmaz, amelyek lehetővé teszik: csoport létrehozását, információk megszerzését a csoportról, az összes csoport listájának lekérését, a csoport képzését és a képzés állapotának lekérdezését
  • Person.py - olyan funkciókat tartalmaz, amelyek lehetővé teszik: személy létrehozása, személyi adatok lekérése, a megadott csoport összes személyének felsorolása, arcok hozzáadása meghatározott személyhez
  • Face.py - olyan funkciókat tartalmaz, amelyek lehetővé teszik: arc felismerését a képen, személy azonosítását, azonosított személy nevének lekérését

Az "elismerés.py" nevű fájlban olyan funkciókat kínálok, amelyek lehetővé teszik annak ellenőrzését, hogy a kép tartalmaz -e arcot, és arcokat adhat hozzá egy adott személyhez (automatikusan hozzáadja az arcot a megadott mappából származó sok képből).

Töltse le az ehhez a lépéshez csatolt fájlt, csomagolja ki, és módosítsa a „KEY” globális változót a következő három fájlban: PersonGroup.py, Person.py és Face.py a saját kulcsához, amely megtalálható: portal.azure.com> minden erőforrás > face api szolgáltatás (vagy hogyan nevezted)> gombok lap. A két kulcs bármelyikét használhatja.

Megjegyzés: itt a Face API szolgáltatást fogjuk kiképezni az emberek felismerésére, így a következő műveleteket bármely számítógépről elvégezhetjük (ehhez a Raspberry Pi nem szükséges) - a változtatásokat a Microsoft szerverére menti.

A KULCS módosítása után futtassa az elismerést.py és írja be a következő parancsot a python shell -ben:

PersonGroup.create ("family", 'fff-fff')) // saját nevét és azonosítóját használhatja

csoportos nyomtatásResJson (PersonGroup.getPersonGroup ('fff-fff'))

Látnia kell az éppen létrehozott csoport adatait. Most írja be:

printResJson (Person.createPerson ('fff-fff', 'személy neve'))

Most megkapja a személyazonosítót. Hozzon létre mappát ennek a személynek a képeivel, hogy az összes kép tartalmazza ennek a személynek az arcát. Használhatja a detectFaceOnImages függvényt az elismerés.py -ben, amely megmutatja, hogy mely fényképeken észleli az arcot. Most futtassa a parancsot:

addFacesToPerson ("mappa képekkel", "személyazonosító, amelyet az előző parancs után kapott", "fff-fff")

Ezután ki kell képeznünk szolgáltatásunkat az alábbiak megadásával:

PersonGroup.trainPersonGroup ('fff-fff') printResJson (PersonGroup.getPersonGroupTrainingStatus ('fff-fff'))

Most csoportunk képzett, és készen áll egy személy azonosítására.

A személy ellenőrzéséhez a képen a következőket teheti:

Face.checkPerson (kép, 'fff-fff')

Válaszul megkapja a jelöltek listáját és a fényképen látható valószínűséget.

Megjegyzés: minden alkalommal, amikor arcokat ad hozzá egy személyhez vagy személyhez a csoportban, ki kell képeznie a csoportot!

5. lépés: Csomópont-vörös konfiguráció

Csomó-vörös konfiguráció
Csomó-vörös konfiguráció

Lépés leírása: Ebben a lépésben létrehozunk egy csomó-vörös folyamatot, amely értesíti Önt a hűtőszekrény hozzáférésének megsértéséről =)

Ha a Raspberry Pi a Raspbian Jessie 2015. novemberi vagy újabb verzióján fut, akkor nem kell telepítenie a Node-Red-t, mert az már előre telepítve van. Csak frissíteni kell. Kérjük, használja itt a kézikönyvet.

Most telepítenünk kell a Twilio csomópontot a Node-Red-re, hogy szöveges üzenetet indítsunk. Nyissa meg a terminált, és írja be:

cd ~/.node-rednpm install node-red-node-twilio

További információ a Twilio csomópontról itt. Ezt követően futtassa a Node-Red-t a terminálba történő beírással:

csomó-vörös

Ezután lépjen a következő helyre: https://127.0.0.1:1880/ - ha megnyitja a böngészőt a Raspberry Pihttps:// {raspberry_pi_ip}: 1880/ - ha meg szeretné nyitni a Node -Red szerkesztőt egy másik számítógépről

A raspberry pi ip -címének megismeréséhez használja ezt az utasítást.

Most meg kell találnia a Twilio csomópontot a Node-Red szerkesztő csomópontjainak listájában (általában a „social” csoport után jelenik meg).

Ideje megteremteni az áramlást!

Megjegyzés: használhatja a folyamathoz csatolt folyamatomat, de ne felejtse el beállítani a csomópontokat: e -mail, twitter és twilio. Olvasson erről később.

Folyamatunk az "értesítés" csomóponttal kezdődik, amely elfogadja a fő programunk POST kérését, néhány adatgal a hozzáférés megsértéséről (az adatok példája megtalálható az "objektumok fogadása" megjegyzés csomópontban). Ez a csomópont azonnal válaszol "Ok" üzenettel, így a főprogram tudja, hogy az adatok megérkeztek (Folyamat: /értesítés> válasz Ok> válasz). Zöld csomópont alul, msg.payload névvel, hibakeresési célokra szolgál: ha valami nem működik, használhatja.

Az első csomópont (/értesítés) adataitól az "Adattéma" és a "Képtéma" közé, ahol az "adatok" és a "kép" témák kerültek hozzáadásra.

A "fordítás" csomópontban adatokat kapunk (amelyeket az első lépés során kapunk) az "adatok" témával és egy képet az "kép" témával (a kép a /home/pi/image-j.webp

A következő lépés annak ellenőrzése, hogy a hozzáférési listán szereplő személy, vagy idegen -e (checkConditions csomópont). A kapott adatok között van egy "trustedPerson" mező: az "igaz" azt jelenti, hogy ismerjük ezt a személyt, de megsértette a hozzáférési engedélyt, a "hamis" azt jelenti, hogy a személy idegen.

Ha az eredmény „igaz”, értesítést küldünk twitterre, twilio -ra és e -mailre; ha az eredmény „hamis” - csak e -mail és twilio. Létrehozunk egy objektumot az e -mailhez egy üzenettel, a mellékelt képpel és az e -mail tárgyával, egy objektumot a twilio számára egy üzenettel. A Twitter esetében adatokat adunk hozzá egy objektumhoz, ha a "trustedPerson" igaz. Ezután küldje el ezt a három objektumot három különböző csomópontnak.

Megjegyzés: Ha a következő csomópont nem kap üzenetet, akkor csak "null" -t küldünk neki.

Itt az ideje, hogy konfigurálja a csomópontokat az értesítéshez!

Twitter Add hozzá a twitter csomópontot a folyamathoz. Nyissa meg dupla kattintással. Kattintson a "Twitter azonosító" melletti ceruzára. Ezután kattintson a "Kattintson ide a Twitter használatával történő hitelesítéshez" gombra. Lépjen be twitter fiókjába, és adja meg a Node-Red szükséges engedélyeit.

E -mailAdja hozzá az e -mail csomópontot a folyamathoz. Ha nem használja a Gmailt, akkor a következő mezőkben kell módosítania az adatokat: "Szerver" és "Port" (az e -mail ügynök súgóoldalán megtalálhatja, hogy melyik szervert és portot kell használni), különben ne módosítsa ezeket mezőket.

  • Címzett> e -mail cím, amelyre az üzeneteket el kell küldeni
  • Userid> jelentkezzen be az e -mail címéről (talán ugyanaz, mint a "Címzett" mező)
  • Jelszó> jelszó az e -mail fiókjából
  • Név> neve ennek a csomópontnak

Twilio Nyissa meg a https://www.twilio.com/try-twilio oldalt, és regisztráljon egy fiókot. Ellenőrizze. Lépjen a https://www.twilio.com/console oldalra. Kattintson a "Telefonszámok" (nagy # ikon) elemre, és hozzon létre ingyenes számot. Ha az USA-n kívül tartózkodik, hozzá kell adnia a GEO engedélyeket, keresse fel a https://www.twilio.com/console/sms/settings/geo-pe… webhelyet, és adja hozzá országát.

Most lépjen a Node-Red szerkesztőbe, adja hozzá a Twilio csomópontot, kattintson rá duplán az összes mező konfigurálásához és kitöltéséhez:

  • Hitelesítő adatok> Helyi hitelesítő adatok használata
  • Twilio> szerkesztés

    • Fiók SID> innen
    • Innen írja be a létrehozott virtuális számot
    • Token> innen
    • Név> Twilio
  • Kimenet> SMS
  • >> Telefonszámára
  • Név> neve ennek a csomópontnak.

Kattintson a Telepítés gombra

Most az áramlása készen áll! Tesztelheti, ha POST kérést küld egy megadott objektummal!

6. lépés: Az egész projekt összeállítása

Az egész projekt összeállítása
Az egész projekt összeállítása
Az egész projekt összeállítása
Az egész projekt összeállítása

Lépés Leírás: Ebben a lépésben az összes alkatrészt összerakjuk, és külön rendszerként működtetjük.

Ezzel a lépéssel a következőket kell tennie:

  1. Konfigurálja a régi okostelefont ip kamerának
  2. Legyen működő érzékelője
  3. Képzett Microsoft Face API
  4. Konfigurált csomó-vörös áramlás

Most javítanunk kell a 2. lépésben írt kódot. Pontosabban a függvényfolyamat (), amelyet akkor hívunk meg, amikor valaki kinyitja az ajtót. Ebben a funkcióban a következőket fogjuk tenni:

  1. Szerezzen be képet az ip kamerából, és mentse el a „/home/pi/” mappába „image.jpg” névvel („fromIpCam” funkció a „getImage” fájlban)
  2. Szerezze meg a képen látható személy nevét (a „checkPerson” függvény a „felismerés” fájlban)
  3. Ellenőrizze az adott személy hozzáférési engedélyét („check” funkció a „access” fájlban)
  4. Az „ellenőrzés” funkció eredménye alapján írjon üzenetet
  5. Összetett üzenet küldése a Node-Red csomópontnak („toNodeRed” funkció a „sendData” fájlban)

Megjegyzés: az említett funkciók teljes kódjának megtekintéséhez töltse le az ehhez a lépéshez csatolt zip fájlt.

Az „fromIpCam” funkcióról. Ez a funkció a GET kérést küldi az ip kamerának, válaszul fókuszált képet kap, és elmenti az Ön által megadott elérési útra. Ehhez a funkcióhoz meg kell adnia a kamera IP -címét.

A „checkPerson” funkcióról. A függvény paraméterként megkapja a képhez és a csoporthoz vezető útvonalat, amelyben személyt szeretne keresni a fényképből. Először is, arcot észlel a megadott képen (Face.py fájl, „érzékelés” funkció). Válaszként azonosítót kap, ha az arcot észlelték. Ezután meghívja az „azonosítás” funkciót (Face.py fájl), amely hasonló személyeket talál a megadott csoportban. Válaszul személyazonosítót kap, ha megtalálják. Ezután hívja meg a „person” függvényt (Person.py fájl), személyazonosítóval paraméterként, a „person” függvény a megadott azonosítóval rendelkező személyt adja vissza, a személy nevét kapjuk és visszaadjuk.

A „check” funkcióról. Ez a funkció az „access” fájlba kerül, ahol az „access list” -t is globális változóként helyezi el (tetszés szerint módosíthatja). Az előző funkcióból származó személy nevét lekérve a „check” funkcióval hasonlítsa össze ezt a személyt a hozzáférési listával, és adja vissza az eredményt.

Megjegyzés: a teljes projekt a következő lépéshez van csatolva.

7. lépés: Következtetés

Ebben a lépésben csatoltam a teljes projektet, amelyet ki kell csomagolnod, és a Raspberry Pi -re kell helyezned.

A projekt működéséhez futtassa a „main.py” fájlt.

Ha a Raspberry Pi-t SSH-n keresztül irányítja, akkor két programot kell futtatnia egy héjból: a python programot és a Node-Red programot. Írja be a terminálba a következőt:

csomó-vörös

Nyomja meg a „Ctrl + Z” billentyűt, és írja be:

munkahelyeket

Látta a Node-Red folyamatot. Nézze meg a folyamat azonosítóját és típusát:

bg

Most a Node-Red-nek el kell kezdenie a munkát a háttérben. Ezután lépjen a projekt könyvtárába, és futtassa a fő programot:

python3 main.py

Megjegyzés: ne felejtse el megváltoztatni a KULCST a python fájlokban (4. lépés) és a hitelesítő adatokat a Node-Red folyamatban (5. lépés)

Kész! A hűtőszekrény biztonságos!

Remélem tetszett ez a megoldhatatlan! Nyugodtan hagyja el gondolatait megjegyzésekben.

Örülnék, ha a projektemre szavaznál =)

Köszönöm!

Ajánlott: