الكود البرمجي
ستشاهد في قائمة Programming وجود برنامج جديد وهو Python 3 (IDLE) انقر عليه.
من قائمة File اختر New File.
انسخ الكود لنظام منبه لرسائل البريد الإلكتروني والصقه بالملف الفارغ لكن هناك أمور مهمة عليك العمل بها قبل رفع الكود البرنامجي إلى الراسبيري باي.
import time import board
from imapclient import IMAPClient
from digitalio import DigitalInOut, Direction HOSTNAME = 'imap.gmail.com' MAILBOX = 'Inbox' MAIL_CHECK_FREQ = 10 # check mail every 10 seconds # The following three variables must be customized for this # script to work USERNAME = 'Your Email' PASSWORD = 'Your Passsword' NEWMAIL_OFFSET = 0 # setup Pi pins as output for LEDs green_led = DigitalInOut(board.D18) red_led = DigitalInOut(board.D23) green_led.direction = Direction.OUTPUT red_led.direction = Direction.OUTPUT def mail_check(): # login to mailserver server = IMAPClient(HOSTNAME, use_uid=True, ssl=True) server.login(USERNAME, PASSWORD) # select our MAILBOX and looked for unread messages unseen = server.folder_status(MAILBOX, ['UNSEEN']) # number of unread messages # print to console to determine NEWMAIL_OFFSET newmail_count = (unseen[b'UNSEEN']) print('%d unseen messages' % newmail_count) if newmail_count > NEWMAIL_OFFSET: green_led.value = True red_led.value = False else: green_led.value = False red_led.value = True time.sleep(MAIL_CHECK_FREQ) while True: mail_check()
شرح الكود البرمجي
هنا نستعدي المكتبات الضرورية لنظام منبه لرسائل البريد الإلكتروني مثل time و board و imapclient و DigitalInOut, Direction.
import time import board from imapclient import IMAPClient from digitalio import DigitalInOut, Direction
في HOSTNAME يتم تعريف اسم المستضيف جميل Gmail.
وفي MAILBOX يتم توضيح أي المجلدات التي سيتم فحصها هنا سنستخدم المجلد Inbox.
HOSTNAME = 'imap.gmail.com' MAILBOX = 'Inbox'
المتغير NEWMAIL_OFFSET يحمل القيمة 0 وستستخدم هذه القيمة فيما بعد لمقارنة عدد رسائل البريد الالكتروني.
NEWMAIL_OFFSET = 0
في المتغير MAIL_CHECK_FREQ يتم تعيين المدة الزمنية التي سيتم بها فحص مجلد Inbox هنا سيتم فحصه كل ثانية للتأكد من وجود رسائل جديدة أم لا.
MAIL_CHECK_FREQ = 1 # check mail every 1 second
في المتغير USERNAME ضع الايميل الخاص بك.
وفي المتغير PASSWORD ضع كلمة السر.
USERNAME = 'Your Email' PASSWORD = 'Your Passsword'
في المتغير green_led يتم تعريف المدخل المستخدم لربط الثنائي المشع للضوء الأخضر وهو GPIO 18.
وفي المتغير red_led يتم تعريف المدخل المستخدم لربط الثنائي المشع للضوء الأحمر وهو GPIO 23.
green_led = DigitalInOut(board.D18) red_led = DigitalInOut(board.D23)
في الدالة def mail_check سيتم أخذ الصلاحية لتسجيل الدخول للبريد الالكتروني بناء على البيانات الموجودة في المتغيرين USERNAME و PASSWORD.
def mail_check(): # login to mailserver server = IMAPClient(HOSTNAME, use_uid=True, ssl=True) server.login(USERNAME, PASSWORD)
في المتغير unseen يتم فحص مجلد Inbox.
unseen = server.folder_status(MAILBOX, ['UNSEEN'])
في المتغير newmail_count يتم حساب عدد الرسائل التي لم تقرأ بعد.
سينطبع على الشاشة unseen messages وبجانبها عدد الرسائل التي لم تقرأ وسيتم تحديث المتغير كل ثانية.
newmail_count = (unseen[b'UNSEEN']) print('%d unseen messages' % newmail_count)
إذا كان عدد الرسائل المرسلة المخزنة في NEWMAIL_OFFSET أكبر من القيمة المعينة في المتغير NEWMAIL_OFFSET سيضيء الثنائي المشع للضوء الأخضر ليفيد الأفراد بوجود رسائل جديدة.
وإذا كان أقل سيضيء الثنائي المشع للضوء الأحمر وهكذا يستمر النظام.
if newmail_count > NEWMAIL_OFFSET: green_led.value = True red_led.value = False else: green_led.value = False red_led.value = True time.sleep(MAIL_CHECK_FREQ)
يمكنك رفع الكود البرمجي واختبار صحة الخطوات.
لا تنس فصل وحدة مزود الطاقة بعد الانتهاء من استخدام نظام منبه لرسائل البريد الإلكتروني.