注目!

↓最新のラズパイやセール特価情報はコチラ↓

Raspberry Pi 4B (4GB)

GPIO python プログラミング

GPIOとメール送信を利用した参考になるPythonプログラム

radioworld.comというサイトに参考になるPythonプログラムがありましたのでご紹介します。 radioworld.comは古くからあるラジオのニュースサイトのようですね。ラジオを通じたエンジニアさん達の記事がありました。その中で、Stephen Pooleさんの記事はラズパイについての記事で、そのまま使えるなと思います。

計測データの変化時にメール送信

ターミナルから実行し、割り当てられたGPIOピンを1分間隔で継続的にチェックし、取得するデータステータスが変化した場合に電子メールを送信するプログラムです。 計測するデータが一定で変化があった時にメールを送信しますから、逐次に変化している計測にはそのまま利用できません。しかし、少しプログラムを変更すれば対応させることが可能です。 コードのファイルを例では「genwatch.py」として保存し、実行権を与えます。
sudo chmod + x genwatch.py
終了するには、このコードではCTRL+Cを押して強制的にプログラムを停止します。 終了させる処理を追加しても良いでしょう。
./genwatch.py GPIOの番号に注意です。 gpiozeroライブラリを利用しGPIO 22番を使用しています。
ラズパイって、単に小さなパソコンの代わりだけではなく、GPIOで入出力が扱えるのも世界で人気の理由になっています。 パソコンと組み込み系のどちらかではなく、どちらも両立できる事が頼もしいですよね! それも比較的に簡単と言われるPython言語で制御できる点も、非エンジニアでない人なら尚更に敷居を低くしていると思います。
メールサーバーの設定は利用するサービスにより制限があります。自身で契約している有料レンタルサーバーならば比較的に問題ありません。 Gmailなどは認証が必要でちょっと面倒に感じるでしょう。 ネットに接続するプロバイダの送信サーバー(SMTP)などは、自社のアクセスポイント以外からの接続は認めないようになっています。
  以下がStephen Pooleさんのコードです。
#!/usr/bin/python

# These are libraries used by the program.
import smtplib
from gpiozero import Button
from time import sleep

# The “gpiozero” library calls an input a “Button.” If it goes LOW,
# we assume that the input has been turned on. Note that we assign
# the “genrun” Button to GPIO 22, which is actually pin 15 on the
# 40-pin connector.

genrun = Button(22)

# Other values to try might include pin 7 for GPIO 4 (“Button(4)”),
# or pin 13 for GPIO 27 (“Button(27)”).

# These are simple “flag” variables that I use to keep from sending
# the same email over and over.
running = 1
sent1 = 0
sent2 = 0

# IMPORTANT: Change these to your needed values. You’ll need a
# valid email account for the Pi, and a valid recipient. Replace
# “pi” and “recip” below with the correct values.
msg1 = “””From:pi@yourserver.com
Subject: Generator Is RUNNING! \n
To: recip@yourserver.com\n”””
msg2 = “””From:pi@yourserver.com
Subject: Generator Is NOT Running! \n
To: recip@yourserver.com\n”””

# This subroutine takes care of actually sending the email. You
# must edit this with a valid server name; you may need to change
# the port number. Note that this will also need “pi’s” password
# to log in, and that I’m using a secure SSL/TLS connection.
def sendmsg(mstr=””):
server = smtplib.SMTP_SSL(‘mail.yourmailserver.com’,port=465)
server.ehlo()
server.login(‘pi@yourserver.com’,’password’)
server.sendmail(‘pi@yourserver.com’,’recip@yourserver.com\n’,mstr)
server.quit() # exit the connection
# The main program loop, which runs forever, or until you
# press CTRL-C in the terminal that’s running this program.
while(1):

# Check the genrun “Button” object. The “running” flag
# prevents sending the same email if it has already
# been sent.
if genrun.is_pressed:
if( running == 0 ):
running = 1
print(“Gen running.”)
if not sent1:
sent1 = 1
sent2 = 0
sendmsg( msg1 )

# Same, but check for Button “genrun” NOT being pressed —
# i.e., the generator isn’t running.
if not genrun.is_pressed:
if( running == 1 ):
running = 0
print(“Gen idle.”)
if not sent2:
sent2 = 1
sent1 = 0
sendmsg( msg2 )

# Go to sleep for 60 seconds, then run again.
sleep(60.0)
こういうプログラムの見本は覚えなくてもストックしておくと、何かの仕組みで応用できるから、いつもブックマークしています。 ラズパイにプログラムを導入したら、もっとできることが増えます。お試しあれ。

注目!

↓最新のラズパイやセール特価情報はコチラ↓

Raspberry Pi 4B (4GB)

関連コンテンツ



-GPIO, python, プログラミング

© 2020