라즈파이에서 방의 온습도를 측정하고 tweet

Raspberry Pi에 접속한 온습도 센서(DHT11)로 측정한 온도·습도를 Webhook 경유로 Google 스프레드시트에 보내, 한편 tweet 할 수 있도록 해본 비망록입니다. (아래 그림 참조)


온습도 센서(DHT11)와 Raspberry Pi 연결



시작하려면 DHT 온습도 센서(DHT11)와 Raspberry Pi를 다음과 같이 연결합니다.


DHT11
Raspberry Pi


VCC
3.3V

GND
GND

DATA
GPIO4


그런 다음 DHT11을 처리할 수 있도록 'DHT11_python' 라이브러리를 삭제합니다.
LX Terminal에서 다음 명령을 실행합니다.
git chone https://github.com/szazo/DHT11_python.git

/home/pi 폴더 안에 "DHT11_python"이라는 폴더가 있습니다.
그 안에있는 "dht11_example.py"라는 파일을 Thonny Python IDE에서 열고 Pin 번호를 4 번으로 수정합니다.

dht11_example.py
import RPi.GPIO as GPIO
import dht11
import time
import datetime

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

# read data using pin 4
instance = dht11.DHT11(pin=4) #pin番号を4(GPIO4)に修正

while True:
    result = instance.read()
    if result.is_valid():
        print("Last valid input: " + str(datetime.datetime.now()))
        print("Temperature: %d C" % result.temperature)
        print("Humidity: %d %%" % result.humidity)

    time.sleep(1)

dht11_example.py를 실행합니다.
제대로 작동하면 획득 시간, 온도 및 습도가 표시됩니다.
pi@raspberrypi:~ $ cd DHT11_python
pi@raspberrypi:~/DHT11_python $ dir
LICENSE.md  README.md  __init__.py  dht11.py  dht11_example.py
pi@raspberrypi:~/DHT11_python $ python dht11_example.py
Last valid input: 2019-06-19 00:54:21.994905
Temperature: 29 C
Humidity: 43 %
Last valid input: 2019-06-19 00:54:24.147734
Temperature: 30 C
Humidity: 42 %

IFTTT로 webhook에서 Google 스프레드시트에 쓸 레시피 만들기



IFTTT 에서 webhook에서 Google 스프레드 시트에 쓸 레시피를 만듭니다.
여기 페이지 을 전면적으로 참고로 설정했으므로 여기 페이지 를 참조해 주세요.

조리법은 이런 느낌입니다.

파이썬 파일을 만들 때,
Value1은 취득 시간
Value2는 온도
Value3는 습도
가 들어가도록 하겠습니다.



IFTTT로 webhook에서 tweet하는 레시피 만들기



다음은 획득 시간, 온도, 습도를 트위트하는 레시피를 만듭니다.
요령은 Google 스프레드시트와 거의 동일합니다.

'This'는 Google 스프레드시트와 동일합니다.
이벤트 이름도 동일합니다.

'That'은 트윗하고 싶은 Twitter 계정을 연동시켜 Twitter text를 기입합니다.
Value1~3은 Google 스프레드시트와 동일합니다.

조리법은 이런 느낌입니다.


Webhook에 흐르도록 Python 파일 수정



'dht11_example.py'를 수정하고 Raspberry Pi로 따뜻한 습도를 얻고 Webhook에 흘리도록하십시오.
아래의 코드를 복사하면 아마 동작한다고 생각합니다.
(파일은 "dht11.py"와 같은 디렉토리에 저장하십시오.)

dht_ifttt.py
import RPi.GPIO as GPIO
import dht11
import time
import datetime

# IFTTT_Webhook
def ifttt_webhook():
    payload = {"value1": time,
                "value2": temp,
                "value3": humi }
    url = "https://maker.ifttt.com/trigger/{Event Name}/with/key/{Your Key}"
    response = requests.post(url, data=payload)

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

# read data using pin 4
instance = dht11.DHT11(pin=4)

while True:
    result = instance.read()
    if result.is_valid():
        break

date = datetime.datetime.now()
time = date.strftime("%Y/%m/%d %H:%M")
temp = result.temperature
humi = result.humidity

ifttt_webhook()

Raspbian의 cron 기능으로 정기 실행



Raspberry Pi를 조작하지 않고도 주기적으로 프로그램을 실행하기 위해 Raspbian의 cron이라는 기능을 사용합니다.
여기서는 한 시간에 한 번 dht_ifttt.py를 실행합니다.

LX Terminal에서 다음 명령을 실행합니다.
crontab -e

"Select an editor"가 표시되면 "2"의/bin/nano를 선택하십시오.

"nano"가 열리면 커서가 메인 하단으로 이동하고 다음 명령을 입력합니다.
00 * * * * /usr/bin/python3 /home/pi/raspberrypi/dht11_ifttt.py
  • Ctrl + X로 끝납니다.
  • "변경된 버퍼를 저장하시겠습니까?"라는 메시지가 나타나면 "Y"키를 누릅니다.
  • 쓰기 파일 ~이 표시되면 Enter 키를 누릅니다.
  • 이하의 표시가 되면 기입 종료입니다.
  • crontab: installing new crontab
    

    그리고는 hh시 00분에 기온, 습도가 기록되어 있는지 확인합시다.

    이상.

    좋은 웹페이지 즐겨찾기