Total Access: 8861330

北海道電力NW停電情報をLINEに通知する

北海道電力NW公式でも こちら のようなLINE配信サービスがありますが,1ユーザあたり最大4箇所までしか配信を受け取れないため管内全域の供給支障事故,短時間停電事故を知りたい人にとっては機能不足です.
代用機能を LINE Messaging API を利用して組みます.

このような機能実装を考えます.

ここでは,

のように,石狩地域の停電情報ページをcURLでウェブスクレイピング→情報が更新されたらLINEにプッシュさせます.コード的には,

<?php
// ------------------------------------------------------------
// 石狩の短時間停電を通知
// ------------------------------------------------------------
  $url = "teiden-info.hepco.co.jp/short_outage01.html";
  $conn = curl_init();
  curl_setopt($conn, CURLOPT_URL, $url);
  curl_setopt($conn, CURLOPT_RETURNTRANSFER, true);
  $res =  curl_exec($conn);
  curl_close($conn);

	$a = strpos($res, '<td class="text_left">');
	$newtime = substr($res, $a+22, 16);

	//------- 前回時間読み込み -------
	$filename = './rec-sp.log';
	$fp = fopen($filename, 'r');
	$lasttime = fgets($fp);
	echo $lasttime.'<br>';
	fclose($fp);
	//--------------------------------

    // ------------------------------------------------------------
    // LINE送信準備
    // ------------------------------------------------------------

	// チャンネルアクセストークン
	$accessToken = 'Your AccessToken';

	// 送信先のユーザーID(ユーザーIDはLINEのUserIDを指定)
	$to = 'Your LINE UserID';

	if($newtime != $lasttime){
			if(strpos($newtime,"ja") === false){

		$message ="\n石狩 過去の停電情報が更新(再閉路事故含む)\nhttp://teiden-info.hepco.co.jp/short_outage01.html";

    // ------------------------------------------------------------
    // LINE送信処理開始
    // ------------------------------------------------------------
	$postData = [
	    'to' => $to,
	    'messages' => [
	        [
	            'type' => 'text',
	            'text' => $message
	        ]
	    ]
	];
	// HTTPヘッダー
	$headers = [
	    'Content-Type: application/json',
	    'Authorization: Bearer ' . $accessToken,
	];
	// cURLセッションを初期化
	$ch = curl_init('https://api.line.me/v2/bot/message/push');
	// cURLオプションを設定
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_POST, true);
	curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
	curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
	// APIリクエストを実行
	$result = curl_exec($ch);
	// エラーチェック
	if (curl_errno($ch)) {
	    echo 'Error:' . curl_error($ch);
	} else {
	    echo 'Response: ' . $result;
	}
	// cURLセッションを終了
	curl_close($ch);

	//------------------------------------------------------------------------------

			}
	}

  // ------------------------------------------------------------
  // 最新の発生時間を保存
  // ------------------------------------------------------------
$file_handle = fopen( "./rec-sp.txt", "w");
	fwrite($file_handle, $newtime); // ファイルへデータを書き込み
	fclose($file_handle);

?>

これを,cron で1分毎に動かしてチェックしに行き,停電があればLINEに配信されます.

一方で,短時間停電のみならず供給支障事故も通知を受けたいなら,同様に今度は停電情報(石狩振興局)のページをスクレイピングしてやって同じようにLINEにPostしてやります.
石狩エリアであっても千歳や恵庭,南区には受け持ち事業場が無いので情報不要,といった場合には,それらを無視するようにIFをネストする等します.


以上,ハードウェア,ソフトウェア共に,無いものは自作できるスキルを身に付けていくのが良いかと思います.



北海道電力ネットワーク㈱
一般社団法人 北海道電気管理技術者協会 長谷川博