- MQTT와 Node-RED 개발 환경를 이용한 DHT11 온습도 센서
 - DHT11 센서의 온습도 값을 MQTT에 게시(Publish)하기
 - Node-RED Dashboard
 - MQTT와 Node-RED 개발 환경를 이용한 DHT11 온습도 센서 관련 페이지 보기
 
- 과제 개요
 - ESP32/ESP8266은 DHT11 센서에서 온도 및 습도 값을 읽어 MQTT Broker에 게시(Publish)를 요청한다.
 - 온도 측정 값은 MQTT Broker의 esp/dht/temperature 주제(Topic)에 게시된다.
 - 습도 측정 값은 MQTT Broker의 esp/dht/humidity 주제(Topic)에 게시된다.
 - Node-RED는 MQTT Broker의 esp/dht/temperature와 esp/dht/humidity 주제(Topic)를 구독( subscrib)하여,
 - Node-RED Dashboard의 온도와 습도 Gauge에 각각 출력(표시)한다.
 - 필요한 배경 지식
 - DHT11 온습도 센서
 - MQTT Broker
 - Node-RED Dashboard
 
Node-RED Tool과 MQTT Broker를 사용하여 DHT11 센서의 온도와 습도를 읽어 Web 브라우저(Dashboard)에 출력하는 시스템 예
참고자료: 온도/습도 센서(DHT11/DHT22) 모듈
참고자료: ESP8266/ESP32 MQTT - MicroPython
참고자료: Raspberry Pi와 Node-RED
- 과제에 필요한 준비
 - Hardware
 - DHT11 온습도 센서: 측정한 온도/습도 값을 디지털 데이터로 변환하여 Single-Wire 통신 프로토콜로 출력한다.
 - ESP8266/ESP32: DHT11 센서의 온습도 값을 읽어 MQTT Broker에 게시를 요청한다.
 - Raspberry Pi(MicroSD Card(16GB 이상)): Mosquitto Broker와 Node-RED Server를 실행한다.
 - Software
 - Python 3
 - Mosquitto Broker: Raspberry Pi에 설치
 - umqtttsimple library: 아래 "umqtttsimple Library 설치하기" 참고요.
 - Node-RED: Raspberry Pi에 설치
 
참고자료: Mosquitto Broker 설치하기
- umqtttsimple library 만들기
 - 아래에서 umqttsimple library를 다운로드 하여 저장(umqttsimple.py)한다.
 - umqtttsimple library를 ESP32/ESP8266에 설치하기
 - Thonny IDE를 실행하고 Thonny IDE의 사용 환경(Thonny 실행에 사용할 장치와 COM Port 선택)이 바르게 되어 있는지 확인한다.
 - Thonny IDE의 Python shell 창에 prompt( >>> )가 출력되었는 확인한다.
 - Thonny IDE의 "파일 -> 열기"를 실행하여 umqttsimple library(umqttsimple.py) 파일을 Open 한다.
 - Thonny IDE의 파일 메뉴 "...(으)로 저장"을 사용하여 umqttsimple.py 파일을 "MicroPython 장치"에 저장(Upload)한다.
 
ESP 개발보드에 umqtttsimple library를 설치한다.
umqttsimple library: umqttsimple.py
umqtttsimple library가 설치되어 경우에는 다시 설치할 필요가 없다.
- MQTT 사용을 위한 DHT11 센서 프로그램: MQTT_DHT11-Node-RED.py
 
- Node-RED 작업공간에 플로우 만들고 설정하기
 - Node-RED 작업공간에 Node 배치하기
 - 아래와 같은 명령으로 Node-RED 서버에 연결한다.
 - Web 브라우저의 팔레트(Palette) 창에서 mqtt node와 gauge node를 Drag하여 아래 예와 같이 작업공간(Workspace)에 배치한다.
 - MQTT node 속성 설정하기
 - 위에 있는 MQTT node를 Double click 하여 MQTT node 편집창을 연다.
 - Server를 "localhost:1883"으로 설정한다.
 - Topic를 "esp/dht/temperature"으로 설정하고 "완료" 버튼을 클릭한다.
 - 아래에 있는 MQTT node를 Double click 하여 MQTT node 편집창을 연다.
 - Server를 "localhost:1883"으로 설정한다.
 - Topic를 "esp/dht/humidity"으로 설정하고 "완료" 버튼을 클릭한다.
 - gauge node 속성 설정하기
 - Tab 추가하기: Tab은 서로 다른 Page에 출력된다.
 - dashbord 창에서 "+tab"을 클릭하면 Tab이 추가 된다.
 - 추가된 Tab이 있는 위치에 마우스를 가져가면 "edit" 버튼이 보이게 된다. "edit" 버튼을 클릭하면 Tab 속성 편집 창이 열린다.
 - Tab 속성 편집 창에서 Tab Name을 입력하고 "변경"을 클릭한다. Tab Name 예: Home
 - Group 추가하기: Group은 동일 Page에 구분되어 출력된다.
 - 추가된 Tab이 있는 위치에 마우스를 가져가면 "+group" 버튼이 보이게 된다. "+group" 버튼을 클릭하면 새로운 Group이 추가된다.
 - 추가된 Group이 있는 위치에 마우스를 가져가면 "edit" 버튼이 보이게 된다. "edit" 버튼을 클릭하면 "dashboard group의 노드 수정" 창이 열린다.
 - Group 속성 편집 창에서 Group Name을 입력한다. Group Name 예: DHT
 - "dashboard group의 노드 수정" 창의 Tab 선택 줄에서 Tab을 선택한다. 이 예에서는 위에서 생성한 Home Tab을 선택한다.
 - "변경"을 클릭하면 설정이 저장된다.
 - Temperature gauge의 노드 수정하기
 - 플로우 편집 창에서 첫번 째 gauge 노드를 Double click하면 "gauge의 노드 수정" 창이 열린다.
 - Group를 "[Home]DHT"으로 선택한다. Tab name이 Home 이고 Group name 이 DHT 인 경우이다.
 - Label를 "Temperature"으로 설정한다.
 - Range를 min: -10 , max: 40으로 설정한다.
 - Unit에 온도 표시 문자를 입력한다.
 - Colour gradient를 원하는 색상으로 설정하고 "완료" 버튼을 클릭한다.
 - Temperature gauge의 노드 수정하기
 - 두번째 gauge Node를 Double click 하여 gauge node 편집창을 연다.
 - Group를 "[Home]DHT"으로 설정한다. Tab name이 Home 이고 Group name 이 DHT 인 경우이다.
 - Label를 "Humidity"으로 설정한다.
 - Range를 min: 10 , max: 100으로 설정한다.
 - Unit에 습도 표시 문자(예: %)를 입력한다.
 - Colour gradient를 원하는 색상으로 설정하고 "완료" 버튼을 클릭한다.
 - Node를 연결하기
 - 아래와 같이 Node를 연결(Wire)한다.
 - "배포하기" 버튼을 클릭하여 배포(Deploy)하기를 실행한다.
 - MQTT 를 사용한 메세지 전달과 Node-RED Dashboard를 이용한 DHT11 온습도 센서 실험
 - 실험을 위한 준비
 - ESP8266/ESP32 개발보드와 센서 모듈 연결
 - ESP8266/ESP32 개발보드 Data input pin(GPIO14) <-> 센서의 data pin
 - Data input line Pull up 저항(1K - 10K): ESP8266/ESP32 개발보드 또는 센서 모듈에 Pull up 저항이 내장된 경우 생략하여도됨.
 - ESP8266/ESP32 개발보드 VDD(3.3V} <-> 센서 Vcc pin
 - ESP8266/ESP32 개발보드 GND <-> 센서 GND
 - 위 "umqtttsimple library 설치하기"를 참고하여 개발보드에 umqtttsimple library를 설치 한다. umqtttsimple library는 보드에 한번만 설치하면 됨.
 - MQTT_DHT11-Node-RED.py 프로그램을 다운로드하여 저장 한다.
 - 실험 방법
 - Thonny IDE를 실행하고 Thonny IDE의 사용 환경(Thonny 실행에 사용할 장치와 COM Port 선택)이 바르게 되어 있는지 확인한다.
 - Thonny IDE의 Python shell 창에 prompt( >>> )가 출력되었는 확인한다.
 - Thonny IDE의 "파일 -> 열기"를 실행하여 프로그램 파일(MQTT_DHT11-Node-RED.py)을 Open 한다.
 - Thonny IDE의 Scripts 편집 창 프로그램에서 본인의 무선 공유기 연결을 위한 네트워크 자격 증명(ssid와 password)과 브로커(mqtt_server) IP 주소(공유기에서 브로커(mqtt_server)가 설치된 Raspberry Pi IP 주소를 확인)를 설정하고 "이 컴퓨터"에 저장한다.
 - 실험
 - "실행 -> 현재 스크립트 실행"을 실행하거나 Toolbar의 "실행" Icon을 클릭하면 스크립트가 개발보드에 전송되고 프로그램이 실행된다.
 - Thonny IDE의 Python shell 창에서 MQTT 연결 메세지을 확인(경우에 따라 1 - 5Sec 정도 소요됨)한다.
 - 아래와 같은 명령으로 Node-RED 서버의 Dashboard에 연결한다.
 - Web 브라우저에 위 "Node-RED Dashboard에 온도와 습도 Gauge를 출력한 예"와 같이 온도와 습도가 표시되는지 확인한다.
 
Node-RED 서버는 MQTT에 게시된 DHT11 센서의 온도 및 습도 값를 읽어 Node-RED Dashboard에 표시(출력)한다.
참고자료: Raspberry Pi와 Node-RED
참고자료: Raspberry Pi와 Node-RED Dashboard
http://raspberry-pi-ip-address:1880
mqtt Node와 gauge Node 배치 예
mqqt in node 설정(편집) 예
Tab과 Group을 추가하는 Dashboard 창 예
Node-RED window의 우측에서 "dashbord"를 클릭하면 Tab과 Page를 편집하는 dashbord 창이 열린다. 만약 "dashbord" 버튼이 보이지 않으면 메뉴 확장 버튼(아래 쪽 화살표)를 클릭하고 "Dashbord"를 클릭한다.
gauge node 설정(편집) 예
Node 배치와 설정 후 node 사이 연결을 실행한 예
Node-RED Dashboard에 온도와 습도 Gauge를 출력한 예
http://raspberry-pi-ip-address:1880/ui
개발이 완료되면 while 내의 print 문을 Comment 처리한다.
- MicroPython의 이해와 개발 환경
 - ESP8266/ESP32 센서와 제어모듈
 - ESP8266/ESP32 MQTT - MicroPython
 - Raspberry Pi와 Node-RED
 - Raspberry Pi와 Node-RED Dashboard
 





