3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RaspberryPi Zeroで部屋の快適化

Last updated at Posted at 2020-01-13
スクリーンショット 2020-01-13 12.04.13.png #1.概要 寒くなると、帰宅時に暖房効いてて欲しいと思いますよね。 私の部屋は、日立のリモートコントロール対応のエアコンを使ってるんですが、 スマホアプリ経由のコントロールしかできなくて、スマホアプリも微妙にアホ仕様。

室温を調べる機能はあるけど、結果はメールで遅れてくる。
コントロールも、送信すると、オンにしましたってメールでくる。

流行りのホームオートメーション系は全く未サポート
API未公開

ってことで、せめて今の環境をすぐ知りたいので、
AlexaにリンクしてるTVリモコン用のraspberryPi Zero の空きピンに
環境センサをつけました。

すでに、pigpioで赤外線リモコンを作って、Alexaからnode-red経由でTVコントロールしてます。
エアコンの赤外コントロールはやってません。長くて難解なので諦めました。

#2.完成品の写真
8F9CCB63-547C-4DB7-B82A-E85E3A403E8D_1_105_c.jpeg

#3.解説
回路図は、以下の通り。
home_remote_回路図.jpg

Fritzingの都合でセンサ名が違いますが、ほぼ同じだと思ってください。
HiLetgoのDHT11基板付き使ってます。プルアップ抵抗とか実装済みで使いやすいです。

IR1は、リモコンデータ作成用の受信素子で、滅多に使ってないです。
S1は、シャットダウン、起動用スイッチです。
プルアップして、BCM3と27に接続。27は長押しでシャットダウンするようにしてます。
3は、その後の起動用。この辺はネット情報調べて作りました。
以下のリンク先がわかりやすかったです。
RaspberryPiにshutdownボタンを付けよう
http://jellyware.jp/kurage/raspi/shutdown_button.html

赤外線リモコンは、いろいろ苦労しましたが、ネット上には、今となっては役に立たない情報が多く、ほんと困ります。
猫屋敷工房さんの情報が一番よかったです、他の情報に浮気してはいけない。
ラズパイでエアコン対応の赤外線学習リモコンを pigpioライブラリを使って作る方法、Goodbye LIRC
http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_gpio_pigpio_ir_remote_control/

LED4,5は赤外送信用
LED1,2,3は、送信時に点灯するようにしてます。パターンで動作状態がわかるように。

抵抗値は、手元にあったものなので、そんなに気にしないで。

#4本題 環境センサの使い方

DHT11のライブラリは、Adafruitのライブラリを使いました。
今回は、IOTっぽいことをしたかったので、Ambient接続も挑戦しました。

AdafruitDHTとambientをgitからとって来てくださいね。

センサ情報を取得するのは、サンプルコードをほぼそのまま使いました。

AdafruitDHT_amb.py

#!/usr/bin/python

import sys

import Adafruit_DHT
import ambient  #ambientをインポート

# Parse command line parameters.
sensor_args = { '11': Adafruit_DHT.DHT11,
                '22': Adafruit_DHT.DHT22,
                '2302': Adafruit_DHT.AM2302 }
if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
    sensor = sensor_args[sys.argv[1]]
    pin = sys.argv[2]
else:
    print('Usage: sudo ./Adafruit_DHT.py [11|22|2302] <GPIO pin number>')
    print('Example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO pin #4')
    sys.exit(1)

# Try to grab a sensor reading.  Use the read_retry method which will retry up
# to 15 times to get a sensor reading (waiting 2 seconds between each retry).
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

# Un-comment the line below to convert the temperature to Fahrenheit.
# temperature = temperature * 9/5.0 + 32

am = ambient.Ambient(チャンネル名,'書き込みキー') #ambient登録して各自入れてください


# Note that sometimes you won't get a reading and
# the results will be null (because Linux can't
# guarantee the timing of calls to read the sensor).
# If this happens try again!
if humidity is not None and temperature is not None:
    print('Temp={0:0.1f}*  Humidity={1:0.1f}%'.format(temperature, humidity))
    Di=0.81*temperature+0.01*humidity*(0.99*temperature-14.3)+46.3 #不快指数計算式
    print('Discomfort index={0:0.1f}'.format(Di))
    r = am.send({'d1':temperature,'d2':humidity,'d3':Di}) #ambientに送信
else:
    print('Failed to get reading. Try again!')
    sys.exit(1)

sudo ./AdafruitDHT_amb.py 11 4
で1回データ取得して、ambientに送信します。
5分おきに、記録したかったので、cronで自動実行したかったのですが
piユーザーでは、sudoコマンドが自動実行できないので
sudo suしてから
crontab -e
で登録するのがミソ。

#5.終わりに
とりあえず、備忘録的に記事登録しましたんで
気が向いたらもう少し詳しく書きます。

不快指数計算式は、CASIOさんのhpを参考にしました。
https://keisan.casio.jp/exec/system/1202883065

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?