室温を調べる機能はあるけど、結果はメールで遅れてくる。
コントロールも、送信すると、オンにしましたってメールでくる。
流行りのホームオートメーション系は全く未サポート
API未公開
ってことで、せめて今の環境をすぐ知りたいので、
AlexaにリンクしてるTVリモコン用のraspberryPi Zero の空きピンに
環境センサをつけました。
すでに、pigpioで赤外線リモコンを作って、Alexaからnode-red経由でTVコントロールしてます。
エアコンの赤外コントロールはやってません。長くて難解なので諦めました。
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からとって来てくださいね。
センサ情報を取得するのは、サンプルコードをほぼそのまま使いました。
#!/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