[아두이노#397] (Socket.io#3) 소켓IO서버로 ESP8266의 센서데이터 수집해보기!(녹칸다/포로리야공대가자)
프로그래밍/ESP8266 & Websocket 2021. 12. 15. 22:58
(Socket.io#3) 소켓IO서버로 ESP8266의 센서데이터 수집해보기!
녹칸다의 소켓IO(Socket io) 시리즈이다!
(녹칸다의 Socket.IO는 노드레드(node-red)를 베이스로 하므로 노드레드가 설치되어야한다!)
녹칸다가 사용하는 사물인터넷보드(wemos d1r1/esp8266)를 서버에서 실시간 양방향 통신을 하기 위한 전략으로 소켓IO를 활용해보도록 한다!
가장 효율적으로 사용할 수 있는 MQTT와 활용방안이 유사하지만 동적으로 사물인터넷보드를 그룹핑해서 제어하는데는 Socket io가 더 강점이 많은듯하다!
Socket.Io로 할 수 있는것은 MQTT도 대부분 유사하게 구현할 수 있다!
소켓IO는 사물인터넷보드의 관리를 마치 카카오톡 톡방을 운영하듯이 할 수 있다!
공통으로 소통하는 톡방에서 모든 IoT보드들을 제어할 수 있고 일부 IoT보드가 참여하는 톡방을 별도로 만들어서 무리를 지어서 제어할 수 있도록 만들어져있다!
Socket.io에서는 이런 그룹관리를 룸(ROOM)을 이용해서 제어한다!
이번편에서는 Socket.Io를 이용한 사물인터넷(IoT)의 개념을 활용해보기로 한다!
전반적으로 클라이언트쪽에서 서버쪽으로 센서데이터가 실시간으로 수집되는것으로 한다!
1.ESP8266보드 3대에 광센서(CDS)를 1개씩 연결하고 서버쪽으로 데이터를 수집한다음 노드레드(node-red)의 ui로 표현해보기!(자동으로)
2.(1)예제에서 서버에서 클라이언트에게 측정요청을 했을때 센서값을 회신하도록 해보자!(개별/일괄)
3.(2)예제에서 광센서의 측정값을 3초측정값의 평균이라고 할때 서버쪽에 측정중에 대한 이벤트 처리와 측정완료에 대한 이벤트를 처리하도록 해보시오!
4.ESP8266보드 3대에 온습도센서(DHT-11), 이산화탄소센서(MH-Z19B), 미세먼지센서(PMS7003)을 각각 연결하고 서버에서 데이터 요청시 5회 측정값의 평균값을 회신할 수 있도록 하시오!
관련라이브러리(socket.io)
https://github.com/Links2004/arduinoWebSockets
관련라이브러리(arduinoJSON/6.15.2)
https://arduinojson.org/?utm_source=meta&utm_medium=library.properties
관련라이브러리(DHT11/1.3.8)
https://github.com/adafruit/DHT-sensor-library
관련라이브러리(MHZ19B/1.1.1)
https://github.com/strange-v/MHZ19
관련라이브러리(PMS7003/1.1.0)
https://github.com/fu-hsi/pms
(실제로한거)
1.소켓io서버와 간단한 데이터를 주고받는 예제
2.광센서(CDS)값을 일정하게 업로드하는 예제
3.서버에서 광센서값을 request할때만 response하는 예제
4.광센서,온습도센서,이산화탄소센서,미세먼지센서값을 서버로 업로드하는 예제