郵便
 Computer >> コンピューター >  >> ソフトウェア >> 郵便

RaspberryPiGmail通知ライトを作成する

このすばやく簡単なRaspberryPiプロジェクトでは、Gmailのメール通知を軽くする方法を学びます。未読のメールがある場合は、PythonスクリプトがLEDをオンにします。このプロジェクトは非常に少ない部品で済み、1時間以内に完了できます。もちろん、MineCraftレッドストーンブロックや、透明なプラスチックで3D印刷された他のオブジェクトなど、LEDを好きなようにドレスアップできます。最終結果は次のとおりです。

必要なもの
  • 1xラズベリーパイ
  • 1xブレッドボード
  • 1x220オームの抵抗器
  • 1 x 5mm LED
  • 1xGmailアカウント
  • オスからメスへのフックアップワイヤー

このプロジェクトでは、Pi Zeroでさえ、どのRaspberryPiでも機能します。必要なGPIOピンは1つだけで、特にCPUを集中的に使用する必要はありません。 Piスターターキットをお持ちの場合は、これを完了するのに十分なパーツがあります。

ビルドプラン RaspberryPiGmail通知ライトを作成する

これは本当に単純なプロジェクトです。発光ダイオード(LED)は、PiのGPIO(汎用入出力)ピンに接続されています。非常に単純なPythonスクリプトが定期的に実行され、未読メールをチェックして、それに応じてLEDをオンまたはオフにします。

ハードウェア RaspberryPiGmail通知ライトを作成する

LEDの正アノード(ロングレッグ)を抵抗に接続し、次にGPIOピン14に接続します。任意のGPIOピンを使用できますが、モデルによってわずかに異なるため、最初にピン配置を確認してください。負の陰極(平らなエッジの短い脚)をアースに接続します。

Piセットアップ

RaspberryPiGmail通知ライトを作成する

Piにオペレーティングシステム(OS)がインストールされていれば、多くのセットアップは必要ありません(必要なものがわからない場合は、ここでインストール方法を確認してください)。新しいターミナルを開きます(左上>メニュー>アクセサリ>ターミナル )Piで(これらのショートカットをチェックアウトして、コーディング忍者にします)。 Pythonスクリプトを保存するための新しいフォルダを作成する必要があります。次のコマンドを入力します:

pwd

これは「PrintWorkingDirectory」の略で、現在のフォルダ(デフォルトでは「/ home / pi」)が表示されます。ドキュメントフォルダに移動し、「gmail_python」という名前の新しいディレクトリ(フォルダ)を作成します:

cd Documents/
sudo mkdir gmail_python

「mkdir」コマンドは「MakeDirectory」の略です。これに続くものはすべてディレクトリ名に使用されます。これで、ディレクトリが表示されるはずです:

ls

間違えた場合は、次のディレクトリを簡単に削除できます:

sudo rm -r gmail_python

次に、新しいディレクトリに移動します:

cd gmail_python/

新しいPythonスクリプトを作成します:

sudo nano check_messages.py

これにより、スクリプトが作成され、Nanoで編集できるように開きます。もちろん、Vimなどの別のプログラムを使用することもできますが、このツイートはそれについての私の気持ちを要約しています:

冗談はさておき、完全な内訳については、この2つの比較を確認してください。

CTRL + Xを押します Nanoを終了し、ターミナルに戻ります。

Pythonセットアップ

RaspberryPiGmail通知ライトを作成する

Piがセットアップされたので、コードを記述します。このプロジェクトには、CharlieGuoによる優れたGmailPythonライブラリが必要です。 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('[email protected]', '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プラグインの完全なソースコードを表示できます。これを行うことに不安がある場合(または2要素認証を使用している場合)は、OAuth2を使用してGmailに接続する必要があります。これはこのチュートリアルには少し関係がありますが、Googleには優れた入門ガイドがあります。

コードを分解してみましょう。最初にいくつかのモジュールがインポートされます。 Pythonのモジュールは、目的のために記述された小さなコードです(Arduino IDEのライブラリに似ています)。 RPi.GPIOはGPIOにアクセスするためのPi固有のモジュールであり、gmailは以前にダウンロードしたモジュールであり、timeはタイミング関数を提供するためにPythonに組み込まれたモジュールです。ここで、「GPIO.setmode」と「GPIO.setup」を使用して、ピン14が出力であり、「Broadcomピン番号」(BCMの詳細)を使用することをPiに通知します。

この回線はGmailアカウントに接続します。 「g」というオブジェクトを作成し、以前にインポートしたgmailモジュールのログインメソッドを呼び出します。 Gmailのメールアドレスとパスワードを忘れずに入力してください。

g = gmail.login('[email protected]', 'YOUR PASSWORD')

次に、すべての未読メッセージを取得して、「未読メッセージ」という変数に保存します。

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

「unread=True」がパラメータとしてどのように渡されるかに注意してください。これを変更して、送信者や件名などのさまざまなパラメータに基づいてメッセージを取得できます。詳細については、アプリケーションプログラミングインターフェイス(API)のドキュメントを確認してください。

次に、forループを使用して、すべてのメッセージをループします。

unread_messagesのメッセージの
for message in unread_messages:
total_messages += 1

forループは非常に便利です。それらはコードのブロックを数回繰り返しますが、多くの場合、毎回わずかに異なる値になります。このforループは、unread_messages内のすべてのメッセージを調べ、「total_messages」変数をインクリメントします。

最後に、いくつかの単純な「if」ステートメントが使用されます。未読メッセージがある場合はLEDをオンにし、オフの場合はオフにします。

Pythonでは大文字と小文字が区別され、空白が使用されることに注意してください。コードの実行に問題がある場合は、このWebサイトを試してください。 Pythonを貼り付けて、[Pythonコードの上で検証]ボタンを押します。これにより、Pythonに存在するエラー(存在する場合)がわかります。

ターミナルに切り替えて、スクリプトを実行します:

python check_messages.py

このコマンドはスクリプトを実行します。受信トレイ内の一部のメールを手動で未読ステータスに変更し、スクリプトを再度実行してみてください。受信トレイを反映するためにLEDがオンまたはオフになっているはずです。

cronセットアップ

スクリプトが機能するようになったので、次はそれを自動化します。これを行う最も簡単な方法は、cronジョブを使用することです。 cronジョブは、自動バックアップなどのタスクとスクリプトをスケジュールするために使用されます。 Crontab(スケジュールされたタスクのリスト)を開きます:

crontab -e

スケジュールされたタスクがまだ設定されていない場合、このファイルは空になります(「#」が前に付いたドキュメントまたはコメントが含まれている場合があります)。ここにすでにエントリがある場合は、新しい行に新しいコマンドを入力するだけです。

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

5つの「星」( "* * * * *")は、タスクを実行する頻度を指定します(たとえば、毎週水曜日の2.00に、ここで本当に凝ったものを得ることができます)。これらの5つの星は、タスクを1分ごとに実行する必要があることを示しています。これは許可される最小の間隔です(cronジョブのスケジュールについて詳しくはこちらをご覧ください)。次に、「python」は、スクリプトをpythonファイルとして実行するようにスケジューラーに指示します。最後に、「〜/ pi / Documents / gmail_python / check_messages.py」は、スクリプトへの絶対ファイルパスです。相対パスは機能しません。

これで、独自のGmail通知ライトができました。これを変更して、別の要件またはフィルターに基づいてメッセージを探す(ここでフィルターの使用方法を学ぶ)か、別のコードを実行するのは非常に簡単です-おそらく、電子メールに基づいてツイートするTwitterボットを作成できます( Pi Twitterボットの構築について詳しくはこちらをご覧ください)。

通知ボックスをコーディングすることになりますが、コメントでどのように表示されるか知りたいです!


  1. Gmailで連絡先のグループを作成する方法

    多くの場合、Gmailを使用してクライアントや従業員と連絡を取り合っています。同じ人に何度もメールを送信しなければならないとき、相手のメールIDを何度も入力するのに飽き飽きすることがあります。これがその解決策です。同じグループの人にメールを送信するたびに、メールIDを書き込む必要はありません。 Gmailを使用して、1つのグループではなく、同じユーザーのグループを作成できるようになりました。複数のグループを作成して、連絡先を一度に簡単にアクセスできるようにすることができます。 これにより、貴重な時間を大幅に節約できます。今、あなたがしなければならないのは、リストの全員のメールアドレスを書く代

  2. LED ライトをセットアップし、コードで点滅させる方法

    LED ライトのコーディングは、ソフトウェアとハ​​ードウェアがどのように相互作用するかを示す入門プロジェクトです。ハードウェアの基本的な側面を学ぶのに役立つ、週末に完了することができる簡単なプロジェクトです。 プロジェクトの終わりまでに、独自の LED ライトをコーディングし、選択した間隔で LED をオン/オフするように操作する知識を持ち、ハードウェアの基本原理を学びます。 Elegoo Uno スターター キットには、簡単な LED ライトを作成するために必要なすべてのハードウェアと説明書が含まれています。 LED ライトは、キットで提供される最初のプロジェクトです。 Eleg