فهرست مطالب:

R-PiAlerts: ایجاد سیستم امنیتی مبتنی بر WiFi با Raspberry Pis: 8 مرحله (همراه با تصاویر)
R-PiAlerts: ایجاد سیستم امنیتی مبتنی بر WiFi با Raspberry Pis: 8 مرحله (همراه با تصاویر)

تصویری: R-PiAlerts: ایجاد سیستم امنیتی مبتنی بر WiFi با Raspberry Pis: 8 مرحله (همراه با تصاویر)

تصویری: R-PiAlerts: ایجاد سیستم امنیتی مبتنی بر WiFi با Raspberry Pis: 8 مرحله (همراه با تصاویر)
تصویری: استراتژی شخصی اسکالپ 5 دقیقه من | با نتیجه 100 بار تست و تنظیم هشدار ورود 2024, نوامبر
Anonim
Image
Image
R-PiAlerts: یک سیستم امنیتی مبتنی بر WiFi با Raspberry Pis بسازید
R-PiAlerts: یک سیستم امنیتی مبتنی بر WiFi با Raspberry Pis بسازید
R-PiAlerts: یک سیستم امنیتی مبتنی بر WiFi با Raspberry Pis بسازید
R-PiAlerts: یک سیستم امنیتی مبتنی بر WiFi با Raspberry Pis بسازید

در حین کار روی میز ، ناگهان صدای دور را می شنوید. آیا کسی به خانه آمده است؟ ماشین من روبروی خانه من پارک شده است ، آیا شخصی به ماشین من نفوذ کرده است؟ آیا آرزو نمی کنید که از طریق تلفن یا میز تحریریه خود به شما اطلاع داده شود تا بتوانید تصمیم بگیرید که آیا تحقیق کنید یا نه؟ خوب دیگه سوال نکن! R-PiAlerts اینجاست!

R-PiAlerts یک سیستم امنیتی مبتنی بر Raspberry Pi3 است که در اطراف Firebase's Cloud ساخته شده است. در صورت تشخیص حرکت ، سیستم با یک پیام متنی و یک صفحه LED چشمک زن (هشدار بصری بی صدا از نوع) ، کاربر را از نفوذ احتمالی مطلع می کند. هنگامی که کاربر اعلانی دریافت کرد ، می تواند تحقیق کند. تمام حرکتهای شناسایی شده به پایگاه داده Firebase وارد می شوند. علاوه بر مشاهده گزارش حرکت در یک مرورگر وب ، کاربر همچنین می تواند از طریق یک برنامه iOS به گزارش حرکت حرکت کند. من تصمیم گرفتم این را بسازم به دلیل افزایش اخیر خرابی ها در وسایل نقلیه و خانه های اطراف منطقه من.

چرا Pi3؟ من به چیز کوچکی نیاز داشتم که بتواند حرکت را تشخیص دهد و در صورت نیاز باتری را خالی کند. سپس ، می توانم واحد را در پشت در یا ماشین مخفی کنم. همچنین واحد باید بتواند اعلان ها یا هشدارهایی را برای من ارسال کند. Pi3 می تواند همه این کارها را با وای فای داخلی و قابلیت کارکردن باتری USB انجام دهد. دلایل دیگر اینکه چرا Pi3 را انتخاب کردم:

  • Pi نسبتاً ارزان است
  • استقرار و افزایش مقیاس آن آسان است
  • از نظر نرم افزاری قابل تنظیم است
  • قابلیت استفاده از نمایشگرها و حسگرها. این پروژه از SenseHat استفاده می کند
  • عملکرد بدون سر (بدون مانیتور ، صفحه کلید یا ماوس)

چگونه کار می کند

  • در حالت ایده آل ، کاربر به 2 Raspberry Pis نیاز دارد که به پایگاه داده Firebase متصل باشد ، اما یک Pi نیز کار می کند.
  • با استفاده از SenseHat ، اولین Pi (Pi1) حرکت با شتاب سنج را تشخیص می دهد در حالی که Pi دوم (Pi2) اعلانات حرکت را نمایش می دهد.
  • وقتی Pi1 حرکت را تشخیص می دهد ، 3 کار را انجام می دهد

    • ورود به پایگاه داده
    • یک ورودی اعلان در پایگاه داده ایجاد کنید تا Pi2 برای نمایش داده شود
    • برای کاربر پیامی ارسال کنید که کاربر را از حرکت مطلع کند.
  • وقتی Pi2 اعلانی را برای نمایش از پایگاه داده تشخیص می دهد ، دو اتفاق رخ می دهد

    • نمایشگر LED Pi2 اعلان را به طور مداوم نشان می دهد
    • کاربر می تواند با فشار دادن دکمه Pi2 SenseHat اعلان را پاک کند. با این کار ورودی اعلانات در پایگاه داده نیز پاک می شود.
  • با استفاده از برنامه iOS ، کاربر می تواند

    • دسترسی به پایگاه داده ؛ گزارش حرکت را بخوانید و حذف کنید
    • کاربر می تواند Pi1 را برای نمایش پیام روی صفحه نمایش LED Pi1 ارسال کند.

برنامه های کاربردی

  1. اگر خیابان خود را در محدوده wifi پارک می کنید. یک بسته باتری را به Pi1 وصل کنید (تصویر را ببینید). Pi1 را در ماشین خود مخفی کنید. Pi2 را در جایی که به راحتی قابل مشاهده است ، در کنار میز کار خود قرار دهید (عکس را ببینید).
  2. برنامه دیگر این است که Pi1 را در خانه خود در کنار درب قرار دهید. Pi آنقدر کوچک است که اکثر مردم متوجه آن نمی شوند ، مخصوصاً اگر پشت لولا باشد (عکس را ببینید). سپس Pi2 خود را در میز کار خود قرار دهید.
  3. آیا سگ در نقطه ای از خانه قرار می گیرد که تصور نمی شود؟ Pi1 را در آن منطقه قرار دهید. مطمئن شوید که Pi را در یک جعبه محکم قرار داده اید تا سگ شما آن را نجوید.

تا زمانی که Pis شما در محدوده wifi باشد ، می تواند حرکت را به شما هشدار داده یا به شما اطلاع دهد. اگر Pi دوم ندارید ، فقط می توانید از Pi1 برای تشخیص حرکت و دریافت اعلان های SMS از طریق تلفن همراه خود استفاده کنید.

صورتجلسه مواد

  • دو (2) Raspberry Pi 3s که Raspbian را اجرا می کنند (Raspberry Pi 2 با دانگل وای فای نیز کار می کند)
  • دو (2) SenseHats
  • دستگاه Mac و iOS

نرم افزار مورد نیاز

  • کتابخانه Pyrebase (اتصال به Firebase)
  • کتابخانه SenseHat (برای دسترسی به شتاب سنج و صفحه نمایش LED)
  • کتابخانه Twilio (برای ارسال پیامک)
  • پایتون 3 ، ساخته شده با آخرین Raspbian
  • Raspbian با IDLE
  • Xcode8 و Cocoapods در مک شما
  • تمایل به یادگیری و کشف

این تنها راه حل امنیتی مبتنی بر Pi نیست. اگر ایده ، پیشنهادی دارید یا فقط می خواهید کد من را تغییر دهید ، لطفاً در زیر نظر دهید! =)

مرحله 1: حساب های Firebase و Twilio را راه اندازی کنید

حساب های Firebase و Twilio را راه اندازی کنید
حساب های Firebase و Twilio را راه اندازی کنید
حساب های Firebase و Twilio را راه اندازی کنید
حساب های Firebase و Twilio را راه اندازی کنید

در ابتدا ، قبل از شروع کار با Pis ، باید Firebase و Twilio را راه اندازی کنیم. Firebase پشتیبان گوگل به عنوان یک سرویس است. Firebase شامل ویژگی هایی مانند پایگاه داده ، پیام های ابری ، احراز هویت ، ذخیره سازی و غیره است. برای این پروژه ، ما فقط نیاز به استفاده از پایگاه داده و احراز هویت بلادرنگ Firebase داریم. برای خواندن و نوشتن در پایگاه داده Firebase خود احراز هویت مورد نیاز است. برای راه اندازی Firebase:

  1. برای یک حساب Firebase رایگان ثبت نام کنید
  2. به کنسول بروید. یک پروژه جدید ایجاد کرده و نامی برای آن بگذارید.
  3. در منوی سمت چپ ، روی "نمای کلی" کلیک کنید
  4. روی "افزودن Firebase به برنامه وب خود" کلیک کنید ، APIKey و projectid خود را کپی کنید (نه url). شناسه پروژه در URL های مختلف مانند پایگاه داده قرار دارد:
  5. در منوی سمت چپ ، روی "احراز هویت" کلیک کنید. به "روش ورود به سیستم" بروید و "ایمیل/رمز عبور" را فعال کنید
  6. در بخش "کاربر" یک حساب کاربری جدید با ایمیل/رمز عبور دلخواه ایجاد کنید. از این اعتبار برای ورود به پایگاه داده استفاده خواهید کرد.
  7. در منوی سمت چپ ، به "پایگاه داده" بروید
  8. این پایگاه داده شما است. در حال حاضر خالی است. پس از پر شدن ، در قالب JSON خواهد بود. URL باید همان URL قبلی باشد که قبلاً دیدید.

Twilio به توسعه دهندگان اجازه می دهد تا برای مشتریان خود پیام ارسال کنند. هنگامی که Pi حرکت را تشخیص داد ، از آن برای ارسال پیامک به تلفن شما استفاده می کنیم. Twilio یک شماره تلفن برای ارسال پیامک به شما ارائه می دهد. برای راه اندازی Twilio:

  1. برای یک حساب رایگان در سایت Twilio ثبت نام کنید
  2. حساب SID و authToken خود را کپی کنید
  3. روی "محدودیت های آزمایش" کلیک کنید و "دریافت اولین شماره تلفن Twilio خود" را انتخاب کنید
  4. شماره تلفن جدید خود را کپی کنید

مرحله 2: Pis خود را تنظیم کنید

Pis خود را تنظیم کنید
Pis خود را تنظیم کنید
Pis خود را تنظیم کنید
Pis خود را تنظیم کنید

قبل از شروع برنامه نویسی Pis ، باید مقداری تنظیمات انجام دهیم. مطمئن شوید که برای Pis خود رمز ورود دارید. ابتدا تخته های SenseHat را به صورت فیزیکی به Pis متصل می کنیم. در مرحله بعد ، کتابخانه های لازم SenseHat ، Twilio و Pyrebase را نصب می کنیم. پایگاه داده زمان واقعی Firebase برای دستگاه های تلفن همراه یا وب سایت ها طراحی شده است. با این حال ، ما می توانیم پایگاه داده ابر را از طریق Rest API با یک کتابخانه کمکی مانند Pyrebase بخوانیم و بنویسیم.

SenseHat را وصل کنید مطمئن شوید که SenseHats به Pis شما متصل است. اگر یک مورد غیرمعمول دارید ، ممکن است قبل از اتصال SenseHat نیاز به حذف Pi داشته باشید.

همه کتابخانه ها در ترمینال انجام می شود

  • اگر قبلاً این کار را نکرده اید Pis خود را بوت کنید
  • پس از راه اندازی ، این رنگین کمان LED رنگارنگ را در SenseHat خود دریافت می کنید! (به عکس مراجعه کنید)
  • به ترمینال رفته و به روز رسانی/dist-upgrade را تایپ کنید:

    • sudo apt-get update
    • sudo apt-get dist-upgrade
  • پس از اتمام ارتقاء ، موارد زیر را برای نصب کتابخانه های SenseHat تایپ کنید:

    sudo apt-get install sense-hat

  • برای نصب Pyrebase ، عبارت زیر را تایپ کنید:

    sudo pip install pyrebase

  • در نهایت ، Twilio را نصب کنید

    sudo pip نصب twilio

مرحله 3: Python Script برای Pi1

همانطور که قبلاً اشاره کردیم ، Pi1 همان Pi است که برای تشخیص حرکت استفاده می شود. از مقادیر شتاب سنج SenseHat برای تعیین حرکت استفاده می شود. بنابراین ، کد Pi1 در مورد دسترسی به مقادیر نیروی شتاب سنج g و ثبت حرکات تشخیص داده شده در پایگاه داده Firebase خواهد بود. در اینجا مروری بر جریان فرآیند است:

  • اگر Pi1 حرکت را تشخیص دهد ، یک ورودی به کودک "alerts" در Firebase DB اضافه می کند.
  • Pi1 همچنین کودک "notifypi2" را با یک پیام اطلاع رسانی در مورد حرکت به روز می کند.
  • Pi2 ، سپس "notifypi2" را می خواند و اعلان را روی صفحه ماتریس LED خود نمایش می دهد.

من اسکریپت Pi1 Python را برای شما قرار داده ام تا آن را دنبال کنید. نظرات موجود در اسکریپت توضیح می دهد که کد چه کار می کند.

یادداشت ها و بینش های اضافی برای اسکریپت Pi1

  • برای راه اندازی Firebase و Twilio. کلیدهای API مناسب ، شناسه ها ، گذرواژه ها و غیره را که از مراحل قبلی کپی کرده اید ، پر کنید.
  • در مورد احراز هویت Firebase ، برای امنیت بیشتر ، می توانید به جای کدگذاری سخت این اطلاعات ، از ورودی کاربر درخواست کنید. هر بار که ما از پایگاه داده می نویسیم یا می خوانیم ، باید آن را اضافه کنیم

    کاربر ['idtoken'] با th

    دریافت () ، فشار () ، تنظیم () مواد و روش ها.

  • دمای CPU مورد نیاز است تا بتوانیم در صورت داغ شدن Pi در ماشین یا محیط بسته مداخله کنیم.
  • ما همچنین ارزش مطلق نیروهای G را در نظر می گیریم زیرا نیازی به دانستن مقادیر منفی نداریم. ما فقط باید بدانیم که آیا نیروهای G وجود دارد یا خیر.
  • if مقدارهای شتاب سنج را بررسی می کند. اگر نیروهای G در هر جهت بیشتر از 1 باشند ، Pi1 زمان حرکت را وارد می کند و یک علامت تعجب بر روی صفحه نمایش LED خود نشان می دهد. همچنین کودک "notifypi2" را به روز می کند. وقتی "notifypi2" به روز شد ، Pi2 آن را می خواند و "!!!" را نمایش می دهد. بر روی صفحه نمایش LED جهت اطلاع کاربر از حرکت/نفوذ احتمالی. Pi1 همچنین یک پیام کوتاه از حرکت را به کاربر ارسال می کند.
  • هنگام استفاده از روش push () ، Firebase یک کودک را با یک ورودی جدید تولید خودکار می کند. این مورد نیاز است بنابراین داده های حرکت ثبت شده منحصر به فرد خواهد بود. متد set () از طرف دیگر داده های قبلی را رونویسی می کند.
  • حلقه 10 ثانیه ای برای بررسی پایگاه داده ضروری است بنابراین Pi شما بارها و بارها از Firebase درخواست داده نمی کند. اگر به طور مداوم در Firebase هرزنامه ارسال می کنید ، Google در حدود 10 دقیقه از سیستم شما خارج می شود.
  • در صورت عدم به روزرسانی توکن ، Firebase کاربر را هر 60 دقیقه یکبار بیرون می کند. بازخوانی را روی 1800 ثانیه (30 دقیقه) تنظیم کرده ام.

مرحله 4: Python Script برای Pi2

اسکریپت پایتون برای Pi2
اسکریپت پایتون برای Pi2

اگر به عکس نگاه کنید ، تصویر Pi2 اعلان حرکت احتمالی را نشان می دهد.

اسکریپت Pi2 تقریباً مشابه Pi1 است با این تفاوت که اسکریپت حرکت را تشخیص نمی دهد. Pi2 فقط پیامهای اعلان کودک "notifypi2" را نمایش داده یا تنظیم مجدد می کند. از آنجا که این تنها تفاوت است ، در زیر توضیح خواهم داد.

  • هر 10 ثانیه ، Pi2 "notifypi2" را برای نمایش بررسی می کند. در صورت وجود پیام اعلان برای نمایش ، Pi2 آن را به طور مداوم نمایش می دهد تا کاربر آن را ببیند.
  • فقط دخالت کاربر با فشار دادن دکمه جوی استیک ، پیام را در سمت پایگاه داده پاک و بازنشانی می کند.

مرحله 5: Pis را آزمایش کنید

Image
Image
Pis را آزمایش کنید
Pis را آزمایش کنید

زمان آزمایش Pis است.

  • اسکریپت ها را به ترتیب برای Pis اجرا کنید.
  • وارد Firebase شوید و به بخش پایگاه داده پروژه های خود بروید.
  • Pi1 خود را تکان دهید ، باید یک علامت تعجب قرمز روی صفحه نمایش Pi1 LED مشاهده کنید. همچنین باید پیامک دریافت کنید.
  • پایگاه داده را بررسی کنید ، مدخل های هشدار باید ظاهر شوند. "notifypi2" نیز باید به روز شود.
  • به Pi2 نگاهی بیندازید. همچنین باید "!!!" را پیمایش کنید. برای پاک کردن این پیام اعلان ، کافی است جوی استیک را فشار دهید. "notifypi2" باید بازنشانی شود. برای تأیید Firebase خود را بررسی کنید.
  • اگر Pi1 را نسبت به حرکت بسیار حساس می دانید ، آستانه را در اسکریپت Pi1 به بیش از 1G افزایش دهید.

اگر همه چیز خوب پیش برود ، اسکریپت های شما خراب نمی شوند. اکنون ، شما یک سیستم اعلان کار دارید. هنگامی که Pi1 حرکات یا ارتعاشات را تشخیص می دهد ، یک اعلان پیام SMS و اعلان LED بصری در Pi2 دریافت خواهید کرد.

مرحله 6: ایجاد برنامه IOS R-PiAlerts

ساختن برنامه R-PiAlerts IOS
ساختن برنامه R-PiAlerts IOS

زمان ساخت برنامه iOS! برنامه نسبتاً ساده خواهد بود دارای LoginViewController و ItemsTableViewController خواهد بود. ItemsTableViewController اعلان های هشدار را از کودک "هشدارها" نمایش می دهد. همچنین می توانید ورودی های پایگاه داده را از برنامه حذف کنید. اگر قصد دارید از سر درد جلوگیری کنید ، اگر قصد دارید آموزش های آنلاین Firebase را مشاهده کنید ، مطمئن شوید که به دنبال آموزش های مورخ بعد از مارس 2016 هستید زیرا تغییرات عمده ای در سال گذشته در آن زمان ایجاد شده است. هر چیزی قبل از مارس 2016 میراث خواهد بود. من به پرونده های سریع علاقه مند هستم ، لطفاً نظرات موجود در کد را مرور کنید. اگر می خواهید یک آموزش دقیق در مورد نحوه ایجاد یک برنامه Firebase که پایگاه داده را می خواند ، آموزش Ray Wunderlich را بررسی کنید.

نمای کلی پروژه iOS خود را تنظیم کنید

  • یک پروژه iOS تک نمایه در Xcode ایجاد کنید.
  • شناسه بسته را کپی کنید
  • به پروژه Firebase خود در وب سایت بروید و یک فایل info.plist با شناسه بسته ایجاد کنید.
  • فایل GoogleService-info.plist را به پروژه خود اضافه کنید. این info.plist فقط با پروژه Firebase خاصی که ایجاد کرده اید کار می کند.
  • خارج از Xcode بسته شده و Firebase را از طریق Cocoapods نصب کنید. مطمئن شوید که Auth and Database را نصب کرده اید.
  • Xcode را راه اندازی مجدد کنید ، سپس AppDelegate.swift خود را برای Firebase پیکربندی کنید. فقط 2 خط کد لازم است.

    وارد کردن Firebase یک

    FIRApp.configure () به به صورت اختیاری ، Firebase دارای ویژگی ماندگاری است که فقط 1 خط کد می گیرد

    FIRDatabase.database (). persistenceEnabled = true

  • مراحل نصب دقیق را می توانید در وب سایت Firebase مشاهده کنید

نحوه تعامل برنامه با پایگاه داده Firebase:

  • برنامه نیاز به احراز هویت کاربر دارد.
  • پس از احراز هویت ، برنامه یک تصویر فوری از پایگاه داده Firebase گرفته و آن را به عنوان یک شیء "Item" ذخیره می کند.
  • شیء گفته شده یک آرایه را پر می کند. از آرایه گفته شده برای پر کردن نمای جدول استفاده می شود.
  • یک ناظر به دنبال تغییرات در پایگاه داده Firebase بوده و یک عکس فوری ایجاد می کند.
  • پس از شناسایی تغییرات ، آرایه از عکس فوری جدید اضافه می شود.
  • سپس Tableview بارگذاری می شود تا تغییرات نشان داده شود.

توضیحات کلی در مورد نحوه ساخت برنامه

  • نگاهی به تصویر نحوه چیدمان برنامه در سازنده رابط Xcode بیندازید.
  • یک ViewController در رابط ساز ایجاد کنید و کلاس سفارشی را به LoginViewController.swift نشان دهید.
  • زمینه های متنی را برای ایمیل و رمز عبور اضافه کنید. فراموش نکنید که "ورود امن متن" را برای قسمت گذرواژه روشن کنید. یک دکمه ورود به سیستم اضافه کنید.
  • زمینه های متنی و دکمه را به LoginViewController.swift پیوند دهید. LoginViewController.swift احراز هویت را انجام می دهد.
  • یک Navigation Controller در رابط ساز اضافه کنید. یک سگ از LoginViewController به Navigation Controller ایجاد کنید. مطمئن شوید که به segue شناسه می دهید.
  • کلاس سفارشی نمای میز جدید را که به همراه کنترلر ناوبری ارائه شده است روی PointsTableViewController.swift تنظیم کنید. من همچنین 2 دکمه در ItemsTableViewController دارم: خروج از سیستم و یک دکمه افزودن. دکمه ها را به ItemsTableViewController.swift وصل کنید.
  • در مورد کد LoginViewController.swift. کاربر اطلاعات ورود به سیستم را وارد می کند و Firebase یک کاربر را برمی گرداند. در صورت حضور کاربر ، یک شناسه را با شناسه انجام می دهد. (کد پیوست را ببینید)
  • کلاس Item.swift را اضافه کنید (کد پیوست را ببینید)
  • در مورد کد ItemsTableViewController ، این کد مشاهده استاندارد جدول است. ناظری وجود دارد که تغییرات پایگاه داده شما را به عنوان عکس فوری به عنوان شیء مورد ذخیره می کند. سپس شیء Item آرایه ای را اضافه می کند تا نمای جدول را پر کند. دکمه Add یک ورودی در پایگاه داده Firebase برای خواندن و نمایش Pi1 تعیین می کند. برای خندیدن ، من کد نیز اضافه کردم (کد پیوست را ببینید)

مرحله 7: برنامه را آزمایش کنید

برنامه را تست کنید
برنامه را تست کنید
برنامه را تست کنید
برنامه را تست کنید
برنامه را تست کنید
برنامه را تست کنید

برنامه خود را اجرا کنید

  • وارد شوید و Pi1 خود را تکان دهید. باید شروع به مشاهده اعلان های هشدار جدید کنید.
  • روی دکمه افزودن ضربه بزنید و ببینید Pi1 شما پیام شما را نمایش می دهد.
  • تند به چپ بکشید ، ببینید ورودی های "هشدارها" حذف می شوند.
  • دریافت پیاپی اعلان های زیاد؟ آستانه شتاب سنج را تنظیم کنید یا زمان خواب را در اسکریپت Pi1 افزایش دهید.

مرحله 8: نتیجه گیری

نتیجه
نتیجه
نتیجه
نتیجه

عالی! اکنون Pis داریم که می تواند حرکت را تشخیص داده و اعلانات حرکات را برای شما ارسال کند. علاوه بر این ، می توانید گزارش پیام هشدار خود را با دستگاه iOS خود مدیریت کنید! زمان استقرار Pis فرا رسیده است. Pi1 را در کنار درب خود و Pi2 را در اطراف محل کار خود قرار دهید. دفعه بعد که کسی وارد خانه می شود ، می توانید وضعیت را بررسی کنید! یا بهتر از آن ، سعی کنید با یک باتری در ماشین خود در Pi مخفی شوید. چند بار درها را بکوبید ، ببینید چه می شود!

این تنها یک شروع برای امکاناتی است که می توانید با Raspberry Pi و Firebase انجام دهید. SenseHat همچنین شامل سنسورهای محیطی ، ژیروسکوپ و قطب نما می شود. می توانید Pis خود را برای ثبت تغییرات خاص در محیط تنظیم کنید. آیا می خواهید بازی خود را تقویت کنید؟ هنگامی که Pi شما حرکات را تشخیص می دهد ، از یک دوربین برای ضبط تصاویر استفاده کنید و از Pi برای شما عکس بگیرید. همچنین سعی کنید از الگوریتم بینایی رایانه برای تشخیص چهره ها استفاده کنید. اگر چهره شخصی است که می شناسید ، می توانید مطلع شوید! خوش بگذره!

توصیه شده: