はじめに
ラズパイ(ラズベリーパイ)(←過去記事にリンク)でプログラムを作成するにあたり、Python(←過去記事にリンク)は 習得しておいた方が良い言語です。本ブログでは、その初歩的な関数について紹介しています。
ラズパイを使ったスマートホーム化
ラズパイを使ってなんちゃって”スマートホーム化”を目指すには、センサやwebスクレイピングを使って温度・湿度、日付、時刻を取得して、それらを計算して次のコマンドを実行することが多々あります。
たとえば、センサで部屋の温度・湿度を測定して、Bluetoothスピーカーで喋らせることもあります。さらに、webAPIで外の温湿度を取得して、スピーカーに喋らせることもあります。
さらにさらに、日の出、日の入時刻を取得して喋らせることもあると思います。ポイントとしては、
ということです。
ラズパイに喋らせるためには、文字列を認識させる必要がありますが、それにはstr関数を使います。str関数についてはすでに紹介していますので、↓を参考にしてください。
文字列を計算するためには、数値を認識させる必要があります
何かの文字列を計算に使う場合、計算する対象を数値として認識させることが必要です。たとえば、ある時刻から15分後に何かを実行するような場合には、時刻を数値化した後に計算させないと計算してくれません。
int関数の使い方
int関数は文字列を整数に変換します
文字列を整数に変換する場合には、int関数を使います。どんな場面で使えるでしょうか?具体例を示して使い方を説明します。
具体的な使い方 ~今日から5日後を定義する~
今日が何日かを取得します。その方法は何でも良いです。その入手した日数から5日後に何かプログラムを実行するとします。そのような場合には、入手した日を整数に変化して数値化します。たとえば、以下のようにします。所得した今日の日をtodayとします。これは文字列で取得したとします。それにint関数を使うことでdayというのは数値化できます。
さらにその5日後を定義するために、5日後の日をex_dayとして、”day + 5″により簡単な足し算で5日後を定義します。
day = int(today)
ex_day = day + 5
float関数の使い方
float関数は、文字列を小数点を含む数値に変換します
int関数は文字列を整数に変換する関数でしたが、文字列を少数点を含む数字に変換するのがfloat関数です。その使い方は以下のとおりです。
具体的な使い方 ~日の出時刻から30分後を定義する~
日の出時刻を取得して、その30分後にラズパイに喋らせたいにこのfloat関数が使えます。日の出時刻の取得方法については、↓の過去記事を参考にしてください。
ここでは、まず日の出時刻を次のようなコマンドで取得しています。
time_sunrise = get_time_sunrise(today.year, today.month, today.day, lat, lng)
そして、取得した”time_sunrise”を小数点を含む数値に変換しています。次のようなコマンドです。
nun_time_off10 = float(time_sunrise)
これにより、日の出時刻を小数点を含む数値に変換することができました。あとはこれを計算するだけです。30分後であれば、0.5を足すだけです。もし、15分後であれば、0.25を足せば良いです。
time = nun_time_off10 + 0.5
これで日の出時刻の30分後が定義できました。あとは定期的に実行するコマンドを使えば、毎日日の出時刻の30分後にプログラムを実行することができます。たとえば、
日の出から30分がたちました。シャッターをあけましょう。
などです。
まとめ
文字列を数値化する方法を紹介しました。文字列を整数に変換するにはint関数を使います。文字列を小数点を含む数値に変換するにはfloat関数を使います。ラズパイを使ってスマートホーム化するには、時刻の計算や温度・湿度の計算など、様々な計算をする必要があるので、この二つの関数は良く使う関数です。
pythonなどのプログラムを学ぶときには、横に本を置いて読みながら勉強すると進みが早いです。webで調べると行ったり来たりが多くなるのに比べて、横で見ながらできて比べながら進めることができます。特に↓の本は初心者でも分かりやすく書いてある本なので、初心者の人におすすめです。
コメント