株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。新規開発案件のご依頼をお待ちしております。

*

Raspberry PiでIoT(温度・湿度・気圧データ編 その4)アラートメール送信

   

Raspberry PiでIoT 温度・湿度・気圧データ編の4回目です。前回までで、Raspberry Piから温度、湿度、気圧データをWebサーバへ送信してそのデータを蓄積、表示出来るようになりました。今回はWebサーバ側にアラートメール送信機能を実装してみます。温度が決まった値以上になると決まったメールアドレスにアラートメールを送信します。

以下が、Raspberry PiでIoT(温度・湿度・気圧データ編)の記事一覧です。
Raspberry PiでIoT(温度・湿度・気圧データ編 その1)BME280でデータ取得
Raspberry PiでIoT(温度・湿度・気圧データ編 その2)Webサーバ側構築とデータ送信
Raspberry PiでIoT(温度・湿度・気圧データ編 その3)データ表示とグラフ表示”
Raspberry PiでIoT(温度・湿度・気圧データ編 その4)アラートメール送信

今回の作業手順は以下です。
1.Webサーバ側のPHPプログラム機能追加
2.Raspberry Piからテストデータ送信とメール受信チェック

1.Webサーバ側のPHPプログラム機能追加
センサーデータ登録のプログラムにアラートメールの機能を追加します。ここでは、40.0度以上になるとメールを送信します。PHPのファイルはUTF-8で保存して下さい。そうしないと文字化けします。

<?php

$pdo = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8','tblname','password');

switch ($_SERVER['REQUEST_METHOD']) {
	case 'GET':
		$st = $pdo->query("SELECT * FROM sensorvalues order by datetime desc");
  		echo json_encode($st->fetchAll(PDO::FETCH_ASSOC));
		break;
		
	case 'POST':
		$in = json_decode(file_get_contents('php://input'), true);
  		if (!isset($in['id']))
  		{
                    //40.0度をチェック
  			if($in['temp'] >= 40.0)
  			{
  				mb_language("Japanese");
				mb_internal_encoding("UTF-8");

				$to      = 'to@todomain.com';
				$subject = 'アラートメッセージ';
				$message = '高温状態です。';
				$headers = 'From: from@fromdomain.ccom' . "\r\n";

				mb_send_mail($to, $subject, $message, $headers);
  			}
  		
    		$st = $pdo->prepare("INSERT INTO sensorvalues(datetime,temp,hum,press) VALUES(:datetime,:temp,:hum,:press)");
  		}
  		$st->execute($in);
  		echo json_encode("normal end"); 		
  		break;
}
?>

2.Raspberry Piからテストデータ送信とメール受信チェック
実際に40度の状態にするのは難しいので、テストメインでセンサーデータを送信します。以下はセンサーデータ送信プログラムですが、ここのメインを使います。温度に41.0を指定しています。

import requests
import json

from datetime import datetime

def uploadSensorValues(temp, hum, press):

    url = 'http://domain.com/subsub/sensvalues.php'

    sensorsdata = {'datetime':datetime.now().strftime("%Y/%m/%d %H:%M:%S"),'temp':temp,'hum':hum,'press':press}

    print json.dumps(sensorsdata)

    headers = {'content-type': 'application/json'}

    res = requests.post(url, data=json.dumps(sensorsdata), headers=headers, verify=False)

    print res.json()
    pass

def main():

    uploadSensorValues(41.0, 39.1, 1020)

if __name__ == '__main__':
    main()

以下で実行します。
$ sudo python web.py

これでテストしたところ、メールの受信が確認出来ました。

今回で、Raspberry PiでIoT(温度・湿度・気圧データ編)は終了です。またIoT関連で実際に動作させてみる内容でいろいろと書いてみたいと思います。

 - IoT, Raspberry Pi

AdSense

AdSense

  関連記事

Raspberry Piでタッチスクリーン付3.5インチTFTを使ってみた

Raspberry Piでタッチスクリーン付モニタを使ってみました。PiScre …

Node.jsでRaspberryPiのGPIOを使う(その2)ブラウザからの操作

Node.jsでRaspberryPiのGPIOを使うの2回目です。前回はGPI …

Raspberry PiでIoT(MQTTで遠隔操作編 その1)MQTTでの通信

Raspberry PiでIoTのMQTTで遠隔操作編のシリーズを始めます。実際 …

Raspberry PiでIoT(温度・湿度・気圧データ編 その3)データ表示とグラフ表示

Raspberry PiでIoT 温度・湿度・気圧データ編の3回目です。前回まで …

Raspberry PiでのNode.jsの導入(その2)Webサーバ的なプログラム

Raspberry PiでのNode.jsの導入の2回目です。前回はインストール …

Raspberry PiでIoT(MQTTで遠隔操作編 その3)Raspberry PiのGPIOとHeroku連動Sub編

Raspberry PiでIoT MQTTで遠隔操作編の3回目です。2台のRas …

Raspberry Piをモニターとキーボードなしで導入する(その2)初期設定とリモートデスクトップ

(※2017/02/19 最新のRaspbian Jessie OSでは、初期状 …

無線マイコン ToCoStickのシリアル通信専用アプリを使ってみた

無線マイコンの ToCoStick(トコスティック)のシリアル通信専用アプリを使 …

Raspberry Pi 3でのコンソールケーブル利用と初期設定

Raspberry Pi 3 でコンソールケーブルを利用する方法と初期設定につい …

Raspberry PiのPL2303内蔵コンソールケーブルのWindows8.1の対応について

Raspberry PiのコンソールケーブルでProlific社のUSBシリアル …