質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

Raspberry pi ZEROで人感センサが反応したときGmailが送信されるシステムをパソコンに接続せずに自動実行できるようにしたい

jikkenyou
jikkenyou

総合スコア3

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

-2評価

0クリップ

424閲覧

投稿2022/02/12 15:06

編集2022/02/13 10:55

まずraspberry pi ZEROで人感センサが反応したときGmailが送信されるスクリプトが以下のものです。

code

import requests import RPi.GPIO as GPIO import time import smtplib from email.mime.text import MIMEText from email.utils import formatdate SLEEPTIME = 60 GPIO_PIN = 16 GPIO.setmode(GPIO.BCM) GPIO.setup(GPIO_PIN,GPIO.IN) def main(): sendAddress = '×××@gmail.com' password = '×××' subject = '見守りIoTデバイス 在室通知' bodyText = '在室が検知されました' fromAddress = '×××@gmail.com' toAddress = '×××@gmail.com' # SMTPサーバに接続 smtpobj = smtplib.SMTP('smtp.gmail.com', 587) smtpobj.starttls() smtpobj.login(sendAddress, password) # メール作成 msg = MIMEText(bodyText) msg['Subject'] = subject msg['From'] = fromAddress msg['To'] = toAddress msg['Date'] = formatdate() # 作成したメールを送信 smtpobj.send_message(msg) smtpobj.close() try: while True: if(GPIO.input(GPIO_PIN) == GPIO.HIGH): main() time.sleep(SLEEPTIME) finally: GPIO.cleanup()

この実行ファイルは「kk.py」という名前で保存しました。

その後、ラズパイが起動した時、自動でこのプログラムが実行可能にするため、ラズパイのターミナル内で「$ sudo nano /etc/rc.local」コマンドを入力すると以下の文面が表示されます。

#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi python3 /home/pi/Desktop/kk.py exit 0

この構文のうち、下から2行目の
「python3 /home/pi/Desktop/kk.py」は自分で付け足しました。

これで編集を完了し保存した後、ラズパイを再起動すると、センサが反応したとき自動でメールが送信されました。

それでここからが本題で、これらはパソコンにラズパイを接続して起動することで自動実行されていますが、これをパソコンでではなく、モバイルバッテリーにさして起動する際、自動実行できるようにしたいわけです。

そこで試したことが、「$ sudo nano /etc/rc.local」にて、実行ファイルの前に「while ! /sbin/ifconfig eth0 | grep -q 'inet [0-9]'; do sleep 3 done」を加えることで改善されるという情報をもとに内容を修正しました。
※無線 LAN の場合は、eth0 を wlan0に変更するみたいなので、自分の場合はwlan0を使用していますhttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12256934807

#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi while ! /sbin/ifconfig wlan0 | grep -q 'inet [0-9]'; do sleep 3 python3 /home/pi/Desktop/kk.py exit 0

これで、モバイルバッテリーにさして起動して試したところメールが来ませんでした。

なぜできないのか原因がわからないというのが現状です。
どなたかご教授よろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

AbeTakashi

2022/02/12 15:51 編集

ちょっと質問文の意味が分からないですね。「メールが送られてきません」だけ書かれても、そもそもどうやってメールを送信しているのかすら質問文にはありません(「実行ファイルはpyファイルです」のことですか? であれば、最低限そのpyファイルは質問文にあってもいいはずです。間違っていなくても何をしようとしているのかは多少は分かりますので)。「Gmailが送信されるシステム」「パソコン(Windows)につないだ状態での自動実行は可能です」というのもよく分からないですね。Raspberry Piの話をしてますよね? 第三者が見ても現在の状況が分かるよう、かつ、困っていることは具体的に記述して(エラーが出てるならエラー内容を表示するなど)、もうすこし丁寧に質問文を再構成された方が良いかと思います。 参考) https://teratail.com/help/question-tips 全部読んで頂きたいですが、とくに「3. 正しく伝わる質問の仕方」はしっかりと読まれた上で、今回の質問文をいまいちど見つめ直してみてください。現状ではエスパーでも現れない限りお望みの回答は出ない感じです。 追記) あと「while ! /sbin/ifconfig eth0 | grep -q 'inet [0-9]'; do sleep 3 done」は具体的に何をしようとしてるコマンドですか? このコマンドで何か挙動が変わるようなことはなさそうな気がしますけど。このコマンドの意味を具体的に教えてください。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。