「電力不足」「需給ひっ迫」が叫ばれる昨今、人々に求められているのが「節電」。エネルギーの必要性、重要性を再認識している今日この頃です。
この状況において、自分でも何かできることはないかと考え、今回、ラズパイを使った、自動で、無意識に、節電できる仕組みを構築してみました。今回これを、「ラズパイ節電システム」と称して、その内容を紹介したいと思います。
こんな小さな考えが、塵も積もれば山となり、世の中の変化に繋がれば良いな、と思います。
目的
現在流れているニュースでは「電力不足」、「需給ひっ迫」という言葉が飛び交っており、SNSでも、その解消に向けて、いろいろな議論がなされているのをよく目にします。
そんな中で、国民一人一人が直接できることであり、かつ求められているものが「節電」。自分自身も、微力ながら何かできないか考えました。
でも、かと言って、節電を常に意識して、さらには需給のひっ迫状況に応じて、意識的に何かする、というと、それは実際は難しい。。
そこで、今回は、「世の中で節電が必要となったタイミングで、タイムリーに、でもかつ、意識をせず、自動で、節電する」ことを目的として、今自分が扱っているラズパイを使ってその仕組みを構築してみることにしました。
ラズパイ節電システムによる節電の流れ
『ラズパイ節電システム』の仕様、節電の流れは以下の通り。
- 自分の地域の電力会社のでんき予報の情報を取得
- 現在の電力使用率をチェック
- 電力使用率が高い場合、自動でラズパイからの音声出力する
- ラズパイからの音声により、スマートスピーカーが家電を操作
- 自分の家の電力使用率を下げる
ラズパイから直接家電を操作できれば良かったですが、うまい方法がわからなかったため、今回は、スマートスピーカーを使って家電を操作することとしました。
ラズパイ節電システムに必要なもの
本システムを動作させるために必要なものは、以下の3つです。
- ラズパイから音声を出力するためのスピーカー
※今回はダイソーで購入した300円のスピーカーを使用 - スマートスピーカー
※今回は自宅にあったAlexaを使用 - スマートスピーカーで操作できる家電
※今回はエアコンとテレビを操作します。
事前準備
事前準備としてやるべきことは以下の3つ。
・プログラムの作成
・クーロンの設定(プログラムを任意の時間に起動する設定)
以降で、上記3点の詳細についてまとめます。
ちなみに、スマートスピーカーと家電を連携させる、という作業も必要ですが、これは、スマートスピーカーの種類によるため、説明は割愛します。
ラズパイからの音声出力設定
ラズパイから任意の音声を出力させるために、「Open JTalk」というソフトを使用します。
このソフトを使用するにあたり、パッケージをインストールします。インストールは、ターミナルを開いて、以下のコマンドを実行するのみです。
$ sudo apt install -y open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
プログラムの作成
今回作成するプログラムは、1時間に1回実行されることを前提として、以下のような概要です。
- 自分が住んでいる地域のでんき予報を取得
- 現在電力使用率をチェック
- 現在電力使用率が上限X[%]を超えている場合、Alexaに家電を動作させるための音声を出力
上記概要をPythonプログラムに落とし込んだものが以下となります。
プログラム名は「SaveEnergy.py」として、ディスクトップに保存しておきます。
#coding: utf-8
import subprocess
import sys
import requests
import datetime
import time
import csv
from io import StringIO
# 電力使用率取得関数
def get_demandinfo():
・・・
(当該プログラムは省略)
・・・
return pu # 電力使用率(PowerUsage)を戻り値とする
# 音声出力関数(Alexaへの呼び掛け)
def jtalk(phrase):
open_jtalk=['open_jtalk']
mech=['-x','/var/lib/mecab/dic/open-jtalk/naist-jdic']
htsvoice=['-m','/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice']
speed=['-r','1.0']
outwav=['-ow','open_jtalk.wav']
cmd=open_jtalk+mech+htsvoice+speed+outwav
c = subprocess.Popen(cmd,stdin=subprocess.PIPE)
c.stdin.write(phrase.encode())
c.stdin.close()
c.wait()
aplay = ['aplay','open_jtalk.wav']
wr = subprocess.Popen(aplay)
return
if __name__ == '__main__':
maxrate = 95 # 使用率上限[%]をプログラム内で定義
currentusage = get_demandinfo()
if (currentusage >= maxrate):
# 節電開始時メインフレーズ
d = datetime.datetime.now()
mainphr1 = '%s月%s日、%s時、電力使用率は%sパーセント。' % (d.month, d.day, d.hour, currentusage)
mainphr2 = 'ラズパイ節電システムが、電力使用率上限超過を検出。'
mainphr3 = '需給ひっ迫状態のため、節電を開始。'
jtalk(mainphr1)
time.sleep(7)
jtalk(mainphr2)
time.sleep(5)
jtalk(mainphr3)
time.sleep(5)
# 節電フレーズ
phr1 = 'アレクサ。ダイキンを使ってエアコンの設定温度を28度にして。'
jtalk(phr1)
time.sleep(7)
# 以下は参考:テレビを操作する場合
# phr2 = 'アレクサ。テレビの電源をOFFにしてください。'
# jtalk(phr2)
なお、地域によって電力使用率や、その取得方法は異なると思います(電力会社のホームページなのか、Twitterなのかなど)。上記プログラムでは現在電力使用率は「get_demandinfo」という関数で”pu”という変数に設定することとし、詳細は省略しています。
ちなみに私は、関東在住のため、東京電力パワーグリッドのホームページのでんき予報に載っている電力使用状況データから取得するようにしました。
クーロンの設定
クーロン(cron)とは、任意の処理を、任意の時間に自動で起動できるようにするためのLinuxの設定です。
今回は、前述で示した「SaveEnergy.py」を1時間ごと(毎時10分)に実行できるようにするための設定をします。設定は、以下の3ステップです。
①ターミナルを開く
②以下のコマンドを実行してcronを設定するエディタを開く。
$ crontab -e
③エディタの最終行に以下を入力して保存する。
10 * * * * python3 /home/pi/Desktop/SaveEnergy.py
以上でクーロンの設定は終わりです。
システム構成
システムの構成は下図の通り。
ただ、ラズパイにスピーカーを繋げて、Alexaの近くに置くだけです。笑
ラズパイ節電システムを動かしてみた
それでは、実際に動かしてみました。
テストのため、使用率上限値を現在の使用率より低くして実行してみたところ、ちゃんと、電力使用率が上限を超過したことでラズパイが音声を出力し、さらには出力した音声をAlexaが聞き取ってエアコンを操作してくれました!
課題や今後やってみたいこと
今回構築した「ラズパイ節電システム」により、「世の中で節電が必要となったタイミングで、タイムリーに、でもかつ、意識をせず、自動で、節電する」という目的は果たせそうです。一方で、構築する過程で、もっといろんなことができそうな可能性も感じました。備忘録として、やりたいことを挙げておきます。
まとめ
今回は、最近毎日のようにニュースで目にする日本の電力事情を起点として、ラズパイを使った節電対策のシステムを構築してみました。”勝手にデマンドレスポンス”という感じです。
ラズパイを始めて、自分の生活や作業を楽にすることができたらな、と思ってやっていましたが、今後は、今回のように、微力ながらも社会の役に立てるような、そんなものも作成できればと思います。
本ブログでラズパイでやってみたこと、今後やりたいことは、以下の記事にもまとめていますので、興味のある方は是非ご覧ください。
コメント