ESP8266, espeasy, HA, MQTT, 센서를 이용하여 실내공기질을 측정하자(2)-온습도, 이산화탄소
센서가 온 순서대로 진행중.
1. espeasy mqtt 설정
espeasy에 접속해서 이렇게 설정해준다. constoller ip는 mqtt broker가 설치된 라즈베리파이가 있는 ip이다.
user, passwd는 모스키토 설치하면서 만든 것을 사용해야한다.
포트, subscribe, publish는 건드리지 말자.
1-2. HA에서 mqtt설정
HA에서 mqtt설정을 하지 않았다면 아래 설정을 configuration.yaml에 추가해준다.
secret.yaml에 mqtt_user와 mqtt_passwd를 설정해준다. 모스키토 설정하면서 만든 사용자이름과 암호를 사용하면된다.
2. dht11
사용결과 dht11은 너무 오차가 커서 온습도 측정의 의미가 없는 것으로 보인다. bme280으로 교체예정 dht11의 가장 큰 장점은 가격(천원 전후, 알리에서 대량구매하면 몇백원 수준)이지만, 정확도가 매우 떨어진다.
2. dht11 연결
가. 하드웨어연결

이 그림을 참고해서 이놈을 esp8266에 연결한다. nodemcu라면 암-암 점퍼선을 사용하면 편하다(나중에 완성되면 글루건이나 납땜으로 안빠지게 고정해야된다)
그림을 참조해서 vcc는 nodemcu의 3.3v 또는 esp12의 vcc에, gnd는 gnd에, data는 빈 GPIO에 연결한다(글쓴이는 GPIO14(d5) 사용)
그리고 dht11의 data와 vcc 사이를 4.9k 저항으로 연결해줘야 한다.
빵판없으면 좀 귀찮은데 납땜해야할수도 있다.
나. espeasy 설정

espeasy의 device창에서
위 그림처럼설정한다. enable, send to controller에 체크 빼먹지 말자
다. HA설정
configuration.yaml 또는 sensors.yaml에 아래와 같이 추가한다.
/ESP_IAQ/는 해당되는 espeasy의 이름이다(espeasy 접속하면 제일위에 보이는 것중에서 왼쪽에 펌웨어 버전 뺀것
라. 결과
이렇게 나오면(아래 공조장치 제외) 성공.
nodemcu의 경우 5v는 vin이라는 이름으로 있다. tx, rx는 빈 gpio에 하면된다. 글쓴이는 gpio12(d6)에 tx를, gpio13(d7)에 rx를 연결했다.
나. espeasy 설정
사진참조. 1st gpio가 mh-z19의 tx와 연결된 것이다.
다. HA설정
configuration.yaml 또는 sensors.yaml에 아래와 같이 추가한다.
1. espeasy mqtt 설정
espeasy에 접속해서 이렇게 설정해준다. constoller ip는 mqtt broker가 설치된 라즈베리파이가 있는 ip이다.
user, passwd는 모스키토 설치하면서 만든 것을 사용해야한다.
포트, subscribe, publish는 건드리지 말자.
1-2. HA에서 mqtt설정
HA에서 mqtt설정을 하지 않았다면 아래 설정을 configuration.yaml에 추가해준다.
mqtt:
broker: 192.168.29.180
port: 1883
client_id: homeassistant-1
username: !secret mqtt_user
password : !secret mqtt_passwd
브로커는 라즈베리파이가 있는 ip로 바꿔준다.secret.yaml에 mqtt_user와 mqtt_passwd를 설정해준다. 모스키토 설정하면서 만든 사용자이름과 암호를 사용하면된다.
2. dht11
사용결과 dht11은 너무 오차가 커서 온습도 측정의 의미가 없는 것으로 보인다. bme280으로 교체예정 dht11의 가장 큰 장점은 가격(천원 전후, 알리에서 대량구매하면 몇백원 수준)이지만, 정확도가 매우 떨어진다.

- platform: mqtt
name: IA_temperature
unit_of_measurement: "°C"
device_class: temperature
qos: 1
state_topic: "/ESP_IAQ/dht11/Temperature"
- platform: mqtt
name: IA_humidity
unit_of_measurement: "%"
device_class: humidity
qos: 1
state_topic: "/ESP_IAQ/dht11/Humidity"
3. mh-z19 연결
알리에서 구매 약 25,000원
가. 하드웨어연결
Function: Pin MH-Z19 ESP8266 VCC 6 5V GND 7 GND TX 2 1st GPIO specified in Device-settings RX 3 2nd GPIO specified in Device-settingsmh-z19에는 각인이 되어 있어서 연결하기 쉽다. 다만 핀혜더 꽂을 자리가 있고 핀헤더도 같이 주기는 하는데 납땜이 안된상태로 와서 납땜하느라 귀찮았다.
nodemcu의 경우 5v는 vin이라는 이름으로 있다. tx, rx는 빈 gpio에 하면된다. 글쓴이는 gpio12(d6)에 tx를, gpio13(d7)에 rx를 연결했다.
나. espeasy 설정
사진참조. 1st gpio가 mh-z19의 tx와 연결된 것이다.
다. HA설정
configuration.yaml 또는 sensors.yaml에 아래와 같이 추가한다.
- platform: mqtt
name: IA_CO2
unit_of_measurement: "ppm"
qos: 1
state_topic: "/ESP_IAQ/co2/PPM"
- platform: mqtt
name: IA_CO2_temperature
unit_of_measurement: "°C"
device_class: temperature
qos: 1
state_topic: "/ESP_IAQ/co2/Temperature"
라. 결과
이렇게 나오면 성공
CO2가 매우 높게 잡혔는데 보정안된상태라 그런것으로 보인다. ESP에서 Automatic Baseline Calibiration을 Normal로 해두면, 낮에 사람이 없는 집이나 밤에 사람이 없는 사무실의 경우 400ppm까지 떨어진다고 보아 보정해준다. 만약 낮에도 사람이 항상 있는 집이라면 옥상이나 바람이 잘통하는 실외에서 측정을 해서 보정해줄 필요가 있다.
댓글
댓글 쓰기