小さなエンドウ豆

まだまだいろいろ勉強中

ラズパイをアラームに 2回目

季節外れの

こんばんは、最近季節外れの風邪にかかり体調が優れません。周りにも風邪ひきが結構いて季節外れでもないのかもしれないがこんな大事な時期にと気を落としております。
私にはまだ就職活動や研究などやらねばならぬことがいろいろとあるというのに…幸いキーボードはタイプできるのでやりかけていたラズパイアラーム化の計画を進めまとめていきたい

ラズパイを喋らせる

ラズパイに喋ってもらわないとアラームにもならないし独り身の僕が寂しいので喋らせることにした。参考したのはコチラである。
Raspberry Pi | ラズパイに喋ってもらう作戦(Open JTalk1.08のインストールと音声出力設定)

記事のタイトルがすごく気に入ってこれを参考にラズパイを喋らせる作戦に僕も成功しました!
ここで私は初めてbin直下のファイルを作るということを経験しましたがシェルの知識が皆無なので勉強しないとファイルの内容は理解できないと新たな課題を見つけることができました。
そして実行です!

jsay お大事に!

ちなみに第一声は「お大事に!」です。デフォルトで女性の声になっていたので安心しました。しかし作業感が拭えなかった アレンジなどできるならやってみたい。

ちっさい蛇

次に前回書いたスクリプトで天気を取得してきたのでその結果をラズパイに喋らせたい、あの事務的な声で天気を明日明後日の天気を喋らせたいと思いすこしスクリプトに編集を加えいざ実行…
しかし動かなかった。原因はPythonのバージョンにあった。Python2でどうやら実行していたみたいでスクリプトはPython3系の文法で書かれているため動かなかったみたい。

ではPython3で実行すれば良いではないかと思わるかもしれないがそもそも僕のラズベリパイ上でろくにPythonを各環境が整っていなかったことがわかったのでまずそれからしようと決意した。

いままでPythonを書くとき頼ってきたのがAnacondaである。今回はMinicondaというものを使いたいと思う。理由はanacondaがRaspbian上で動くか怪しかったためである。

まずはMinicondaのインストールを行うシェルスクリプトのファイルをダウンロードしてきて実行する

$ wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-armv7l.sh
$ bash Miniconda3-latest-Linux-armv7l.sh

あとはAnacondaと同じ要領でインストールを行う。

これで環境は整った!以下が実行したスクリプトである

import urllib.request
import json
import os

city = '330010'

res = urllib.request.urlopen('http://weather.livedoor.com/forecast/webservice/json/v1?city=%s'%city).read()

res = res.decode('utf-8')

res = json.loads(res)

text = res['title']
text = "".join(text.split(" ")[1:])

for forecast in res['forecasts']:
        text = text + forecast['dateLabel'] + forecast['date'] + forecast['telop']

print(text)

cmd = "jsay " + text

os.system(cmd)

読み上げる文字列がコチラである

岡山の天気今日2016-04-24晴れ明日2016-04-25晴れ明後日2016-04-26晴のち曇

ここで必要なのが文字列中にスペースがあると続けて読まれないので注意! そのために14行目あたりにスペース除去のための処理を書いているのだがもっとよい書き方はないかと模索中
あと日付だが数字をそのまま読むためフォーマットを変える必要がある。

  • 14行目の書き方の改善
  • 年月日の形式の変更
  • 天気以外にも何か読ませる(一応予定ではgoogleカレンダーの予定を読ませるつもり)

これらを次までの目標としたい