Help us understand the problem. What is going on with this article?

RaspberryPiを使って現在の天気を教えてくれるものを作る

More than 3 years have passed since last update.

はじめに

研究室生活をしていてよくあることが、今雨降っているのかわからない!!
研究室の窓から外を見ても、わからない。というかブラインドあるから窓から見るのもめんどくさい。
ということで、現在の天気を簡単に教えてくれるものがあればいいなって思って作り始めました。

喋らせる

RaspberryPiを使って喋らせる方法はここを参考にしました。
適当にsay.shを作成し、用意しておきました。

$ ./say.sh テスト

上記コマンドで喋るようにします。

天気を調べる

上の記事では天気を調べるのにopenweathermapを使用していますが、知りたいのは現在の天気なのでこれでは駄目です。
そこでtenki.jpのアメダス観測には10分毎の観測データがあるのでこれを取得して喋らせることにします。

ここはスクレイピングを用いて必要なデータを持ってきます。今回は直近の時間と降水量を取得することにしました。

<?php
    # DOMやXPathの準備
    $dom = new DOMDocument;
    @$dom->loadHTMLFile('http://www.tenki.jp/amedas/5/26/51106.html');
    $xpath = new DOMXPath($dom);

    $weatherData = [];

    // アメダス実況から直近のデータを取得する
    $node = $xpath->query('//table[@class="amedas_table_entries"]')->item(0);
    // 各種データを取り出す。
    $time = $xpath->query('.//td[position()=2]',$node)->item(0);
    $precipitation = $xpath->query('.//td[position()=4]',$node)->item(0);
    $weatherData[] = [
        'time'                      => substr_replace($time->nodeValue,"時",2,1),
        'precipitation'     => $precipitation->nodeValue,
    ];

    var_dump($weatherData);

    // say.shを用いて喋らせる
    $command = '/home/pi/Documents/say.sh '.$weatherData[0]['time'].'分時点の降水量は'.$weatherData[0]['precipitation'].'です';
    exec($command);
?>

loadHTMLFileのURLを別の県にすれば、その県の直近の降水量を入手できるはずです。

遠隔から天気を喋らせる

いい方法が思いつきません。誰か教えてください

現在は下の方法で喋らせていますが、研究室の各員の端末からパスワードなしで喋らせたいなぁ
もしくはボタンをつけるか....

$ ssh pi@raspberrypi.**** "php weather.php"

 参考にしたところ

Webスクレイピング

PHPネイティブのDOMによるスクレイピング入門

今回の発想元

引っ越し祝いに大きめのエジプト神像を送りつけられたのでラズパイを仕込んで喋れるようにした

RaspberryPiでスピーカーを使う際の注意点

Raspberry Pi | 合成音声をUSBスピーカーから出力したい!(ハマったポイント)

kataware
名工大にて情報系を学び、就職して社会人になった人間
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした