Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> จดหมาย

สร้างไฟแจ้งเตือน Gmail ของ Raspberry Pi

ในโครงการ Raspberry Pi ที่ง่ายและรวดเร็วนี้ คุณจะได้เรียนรู้วิธีสร้างไฟแจ้งเตือนทางอีเมลของ Gmail หากคุณมีอีเมลที่ยังไม่ได้อ่าน สคริปต์ Python จะเปิดไฟ LED โปรเจ็กต์นี้ต้องการชิ้นส่วนน้อยมาก และสามารถทำได้ภายในเวลาไม่ถึงชั่วโมง! แน่นอน คุณสามารถตกแต่ง LED ของคุณในแบบที่คุณต้องการ เช่น บล็อก Redstone ของ MineCraft หรือวัตถุ 3D อื่นๆ ที่พิมพ์ด้วยพลาสติกใส นี่คือผลลัพธ์สุดท้าย:

สิ่งที่คุณต้องการ

  • 1 x Raspberry Pi
  • 1 x เขียงหั่นขนม
  • ตัวต้านทาน 1 x 220 โอห์ม
  • LED 1 x 5 มม.
  • 1 x บัญชี Gmail
  • ตัวผู้กับตัวเมียเกี่ยวสาย

Raspberry Pi ทุกรุ่นจะทำงานสำหรับโปรเจ็กต์นี้ แม้แต่ Pi Zero! ต้องใช้พิน GPIO เพียงพินเดียวและไม่ต้องใช้ CPU มากเป็นพิเศษ หากคุณมีชุดเริ่มต้น Pi แสดงว่าคุณมีชิ้นส่วนมากเกินพอที่จะทำให้เสร็จได้

แผนการสร้าง

สร้างไฟแจ้งเตือน Gmail ของ Raspberry Pi

นี่เป็นโครงการที่เรียบง่ายจริงๆ ไดโอดเปล่งแสง (LED) เชื่อมต่อกับพิน GPIO (เอาต์พุตอินพุตวัตถุประสงค์ทั่วไป) บน Pi สคริปต์ Python แบบง่ายๆ จะทำงานเป็นประจำเพื่อตรวจสอบอีเมลที่ยังไม่ได้อ่าน และเปิดหรือปิดไฟ LED ตามลำดับ

ฮาร์ดแวร์

สร้างไฟแจ้งเตือน Gmail ของ Raspberry Pi

เชื่อมต่อขั้วบวกบวก (ขายาว) ของ LED เข้ากับตัวต้านทานแล้วต่อกับพิน GPIO 14 คุณสามารถใช้พิน GPIO ใดก็ได้ แต่ดูที่พินก่อน เนื่องจากจะแตกต่างกันเล็กน้อยระหว่างรุ่นต่างๆ ต่อขั้วลบลบ (ขาสั้นที่มีขอบแบน) เข้ากับพื้น

การตั้งค่า Pi

สร้างไฟแจ้งเตือน Gmail ของ Raspberry Pi

การให้ Pi ของคุณมีระบบปฏิบัติการ (OS) ติดตั้งไว้โดยไม่จำเป็นต้องตั้งค่าอะไรมากมาย (ไม่แน่ใจว่าคุณต้องการอะไร เรียนรู้วิธีติดตั้งที่นี่) เปิดเทอร์มินัลใหม่ (บนซ้าย> เมนู> อุปกรณ์เสริม> เทอร์มินัล ) บน Pi (ชำระเงินทางลัดเหล่านี้เพื่อให้คุณเป็นนินจาเขียนโค้ด) คุณต้องสร้างโฟลเดอร์ใหม่เพื่อเก็บสคริปต์ Python ป้อนคำสั่งต่อไปนี้:

pwd

ย่อมาจาก "Print Working Directory" และจะแสดงโฟลเดอร์ที่คุณอยู่ใน (โดยค่าเริ่มต้นคือ "/home/pi") ไปที่โฟลเดอร์เอกสารและสร้างไดเร็กทอรีใหม่ (โฟลเดอร์) ชื่อ "gmail_python":

cd Documents/
sudo mkdir gmail_python

คำสั่ง "mkdir" ย่อมาจาก "Make Directory" สิ่งต่อไปนี้จะถูกใช้สำหรับชื่อไดเร็กทอรี ตอนนี้คุณควรจะเห็นไดเร็กทอรีของคุณ:

ls

หากคุณทำผิดพลาด คุณสามารถลบไดเร็กทอรีนี้ได้อย่างง่ายดาย:

sudo rm -r gmail_python

ไปที่ไดเร็กทอรีใหม่:

cd gmail_python/

สร้างสคริปต์ Python ใหม่:

sudo nano check_messages.py

นี้จะสร้างสคริปต์และเปิดพร้อมสำหรับการแก้ไขในนาโน คุณสามารถใช้โปรแกรมอื่น เช่น Vim ได้ แม้ว่าทวีตนี้จะสรุปความรู้สึกของฉันเกี่ยวกับสิ่งนั้น:

ลองเล่นดูการเปรียบเทียบระหว่างทั้งสองเพื่อดูรายละเอียดทั้งหมด

กด CTRL + X เพื่อออกจากนาโนและกลับไปที่เทอร์มินัล

การตั้งค่าไพทอน

สร้างไฟแจ้งเตือน Gmail ของ Raspberry Pi

เมื่อตั้งค่า Pi แล้ว ก็ถึงเวลาเขียนโค้ด โครงการนี้ต้องใช้ Gmail Python Library ที่ยอดเยี่ยมโดย Charlie Guo ดาวน์โหลดไลบรารีจาก Github และแยกเนื้อหา ข้างในควรมีโฟลเดอร์ชื่อ "gmail" คัดลอกทั้งโฟลเดอร์นี้ไปที่ "/home/pi/Documents/gmail_python"

สลับกลับไปที่บรรทัดคำสั่งและเปิดสคริปต์ของคุณอีกครั้ง (หากคุณกดปุ่มขึ้น คุณสามารถเลื่อนดูคำสั่งที่คุณป้อนก่อนหน้านี้ได้):

sudo nano check_messages.py

สังเกตว่าเป็นคำสั่งเดียวกับที่คุณใช้สร้างไฟล์ -- หากมีไฟล์อยู่แล้ว ไฟล์นั้นจะถูกเปิดขึ้น มิฉะนั้น ไฟล์จะถูกสร้างขึ้น นี่คือ Python:

import gmail, RPi.GPIO as GPIO, time # import modules
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) # tell the Pi what headers to use
GPIO.setup(14, GPIO.OUT) # tell the Pi this pin is an output
g = gmail.login('YOUREMAIL@gmail.com', 'YOUR PASSWORD')
unread_messages = g.inbox().mail(unread=True)
total_messages = 0
for message in unread_messages:
total_messages += 1
if total_messages > 0:
# there are unread emails, turn light on
GPIO.output(14, True)
else:
# there are no unread emails, turn light off
GPIO.output(14, False)

คุณจะต้องป้อนชื่อผู้ใช้และรหัสผ่านเพื่อให้ใช้งานได้ คุณสามารถดูซอร์สโค้ดแบบเต็มสำหรับปลั๊กอิน gmail ได้หากต้องการ หากคุณรู้สึกไม่สบายใจที่จะทำสิ่งนี้ (หรือคุณกำลังใช้การตรวจสอบสิทธิ์แบบสองปัจจัย) คุณจะต้องเชื่อมต่อกับ Gmail โดยใช้ OAuth2 บทแนะนำนี้ค่อนข้างจะเกี่ยวข้อง อย่างไรก็ตาม Google มีคู่มือการเริ่มต้นใช้งานที่ยอดเยี่ยม

มาแบ่งโค้ดกัน ขั้นแรกนำเข้าโมดูลบางโมดูล โมดูลใน Python เป็นโค้ดขนาดเล็กที่เขียนขึ้นเพื่อจุดประสงค์ (คล้ายกับไลบรารีใน Arduino IDE) RPi.GPIO เป็นโมดูลเฉพาะของ Pi สำหรับการเข้าถึง GPIO ส่วน gmail คือโมดูลที่คุณดาวน์โหลดมาก่อนหน้านี้ และเวลาคือโมดูลที่สร้างไว้ใน Python เพื่อให้มีฟังก์ชันการจับเวลา ตอนนี้ใช้ "GPIO.setmode" และ "GPIO.setup" เพื่อบอก Pi ว่าพิน 14 เป็นเอาต์พุต และคุณต้องการใช้ "Broadcom Pin Numbering" (ข้อมูลเพิ่มเติมเกี่ยวกับ BCM)

บรรทัดนี้เชื่อมต่อกับบัญชี gmail ของคุณ มันสร้างวัตถุที่เรียกว่า "g" และเรียกวิธีการเข้าสู่ระบบของโมดูล gmail ที่นำเข้าก่อนหน้านี้ อย่าลืมใส่อีเมลและรหัสผ่าน Gmail ของคุณ

g = gmail.login('YOUREMAIL@gmail.com', 'YOUR PASSWORD')

ตอนนี้ดึงข้อความที่ยังไม่ได้อ่านทั้งหมดและเก็บไว้ในตัวแปรที่เรียกว่า "ข้อความที่ยังไม่ได้อ่าน":

unread_messages = g.inbox().mail(unread=True)

โปรดสังเกตว่า "unread=True" ถูกส่งผ่านเป็นพารามิเตอร์อย่างไร คุณสามารถเปลี่ยนค่านี้เพื่อดึงข้อความตามพารามิเตอร์ต่างๆ เช่น ผู้ส่งหรือหัวเรื่อง ดูเอกสารประกอบ Application Programming Interface (API) เพื่อดูข้อมูลเพิ่มเติม

ถัดไป ใช้ for loop เพื่อวนซ้ำทุกข้อความ:

for message in unread_messages:
total_messages += 1

สำหรับลูปมีประโยชน์มาก พวกเขาทำซ้ำบล็อกของรหัสหลายครั้ง โดยมักจะมีค่าแตกต่างกันเล็กน้อยในแต่ละครั้ง การวนซ้ำนี้จะครอบคลุมทุกข้อความใน unread_messages และเพิ่มตัวแปร "total_messages"

สุดท้าย ใช้คำสั่ง "if" ง่ายๆ หากมีข้อความที่ยังไม่ได้อ่าน ให้เปิดไฟ LED ไม่เช่นนั้นให้ปิดหากปิด

โปรดจำไว้ว่า Python คำนึงถึงขนาดตัวพิมพ์ และใช้การเว้นวรรคสีขาว หากคุณประสบปัญหาในการเรียกใช้โค้ด ให้ลองใช้เว็บไซต์นี้ วาง Python ของคุณแล้วกดปุ่ม "ตรวจสอบความถูกต้องเหนือรหัสหลาม" สิ่งนี้ควรบอกคุณว่ามีข้อผิดพลาด (ถ้ามี) อะไรใน Python ของคุณ

สลับไปที่เทอร์มินัลแล้วเรียกใช้สคริปต์ของคุณ:

python check_messages.py

คำสั่งนี้จะเรียกใช้สคริปต์ของคุณ ลองเปลี่ยนอีเมลบางรายการในกล่องจดหมายด้วยตนเองเป็นสถานะยังไม่ได้อ่านและเรียกใช้สคริปต์อีกครั้ง คุณจะเห็นไฟ LED เปิดหรือปิดเพื่อแสดงกล่องจดหมาย

การตั้งค่า Cron

เมื่อสคริปต์ทำงาน ก็ถึงเวลาทำให้เป็นอัตโนมัติ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือผ่านงาน cron งาน Cron ใช้เพื่อกำหนดเวลางานและสคริปต์ เช่น การสำรองข้อมูลอัตโนมัติ เปิด Crontab (รายการงานตามกำหนดการ):

crontab -e

หากไม่มีการตั้งค่างานที่กำหนดเวลาไว้ ไฟล์นี้จะว่างเปล่า (อาจมีเอกสารหรือความคิดเห็น นำหน้าด้วย "#") หากคุณมีข้อมูลในนี้อยู่แล้ว เพียงป้อนคำสั่งใหม่ในบรรทัดใหม่:

* * * * * python ~/pi/Documents/gmail_python/check_messages.py

"ดาว" ห้าดวง ("* * * * *") ระบุความถี่ในการทำงาน (คุณสามารถจินตนาการได้ที่นี่ เช่น ทุก ๆ วินาทีวันพุธ เวลา 2.00 น.) ดาวห้าดวงเหล่านี้ระบุว่างานควรรันทุกนาที นี่เป็นช่วงเวลาที่เล็กที่สุดที่อนุญาต (เรียนรู้เพิ่มเติมเกี่ยวกับการตั้งเวลา cronjob) ถัดไป "python" บอกให้ตัวจัดกำหนดการรันสคริปต์เป็นไฟล์ python สุดท้าย "~/pi/Documents/gmail_python/check_messages.py" เป็นเส้นทางของไฟล์แบบสัมบูรณ์ไปยังสคริปต์ของคุณ -- เส้นทางสัมพัทธ์จะไม่ทำงาน

ตอนนี้คุณควรมีไฟแจ้งเตือน Gmail ของคุณเอง! การแก้ไขสิ่งนี้เพื่อค้นหาข้อความตามข้อกำหนดหรือตัวกรองอื่น ค่อนข้างง่าย (เรียนรู้วิธีใช้ตัวกรองที่นี่) หรือรันโค้ดส่วนอื่น บางทีคุณอาจสร้างบอท Twitter ที่ทวีตตามอีเมล ( เรียนรู้เพิ่มเติมเกี่ยวกับการสร้างบอท Pi Twitter)

อย่างไรก็ตาม คุณลงเอยด้วยการเข้ารหัสกล่องการแจ้งเตือนของคุณ ฉันชอบที่จะรู้ว่ามันจะเป็นอย่างไรในความคิดเห็น!