[아두이노#354] (tcp/udp #7) IoT보드와 1:N통신을 위한 TCP서버를 노드레드(node-red)로 구현하기!(녹칸다/포로리야공대가자)
프로그래밍/TCP&UDP 2021. 9. 29. 23:59
(tcp/udp #7) IoT보드와 1:N통신을 위한 TCP서버를 노드레드(node-red)로 구현하기!
녹칸다의 TCP, UDP통신을 위한 시리즈이다!
직전 강의까지 C#을 이용한 다중 소켓이 가능한 TCP서버를 구현해서 활용했는데 생각보다 만만치 않다!
구현원리에는 충실했지만 실질적으로 다중스레드가 돌아갈때 매니지먼트에 한계가 있었다!
(C# TCP LISTENER HIGH CPU USAGE 키워드로 검색하면 뭔가? 나온다)
결론적으로 비동기 TCP서버를 구현해야하는데 녹칸다가 잘할 수 있는 영역이 아닐 뿐더러 그렇게 어려운 코드를 만들어봤자 무슨 의미가 있겠냐 싶어서 (일단) 잘 작동할 수 있는 TCP서버로 대체하고자 한다!
이번편은 노드레드(node-red)라는 툴을 이용해서 다중 접속이 가능한 TCP 서버의 형태를 구현하고 사물인터넷보드(wemos d1r1)와 양방향 통신이 가능한지 확인하는 것을 목표로 한다!
노드레드에서 TCP리스너를 제공하고는 있지만 실질적으로 목적에 맞게 사용하기에는 한계가 있다!
녹칸다가 나름대로의 방법을 연구해왔으니 일단 해보도록 하자!
아래와 같은 순서로 진행해보도록 한다!
1.어떻게 하면 사물인터넷보드(wemos d1r1)가 노드레드 TCP서버에 접속 하겠는가?(이미 구현되어있음)
2.노드레드(node-red)를 이용해서 사물인터넷보드와 심플하게 메시지 송수신하기!
3.TCP서버쪽에서 클라이언트를 콕 찍어서 메시지를 보내야할때 어떻게 해야하겠는가?
4.사물인터넷보드(wemos d1r1) 3대를 준비해서 각각 LED 4개를 연결했을때 TCP서버에서 어떻게 하면 LED를 개별적으로 제어할 수 있겠는가?
5.사물인터넷보드(wemos d1r1) 3대에 각각 광센서가 연결되어 있을때 어떻게 하면 TCP서버에 데이터를 효과적으로 수집할 수 있을까? 6.사물인터넷보드(wemos d1r1) 3대에 각각 온습도센서(DHT11), 이산화탄소센서(MHZ19B), 미세먼지센서(PMS7003)이 연결되어 있을때 어떻게 하면 TCP 서버에게 데이터를 전송할 수있을까?
(시간을 봐가면서 내용을 적당히 가감한다)
(서버에서 클라이언트를 직접 제어하는 방식은 이번에만 테스트삼아 해보도록 한다)
(예제순서)
1.사물인터넷보드가 보낸 메시지를 그대로 반송해주는 노드레드 서버 만들기!(에코서버)
2.사물인터넷보드 여러대가 보낸 메시지를 분리할 수 있는 노드레드 서버 만들기!
3.서버가 클라이언트를 지목해서 메시지를 보낼 수 있는지 테스트 하는 예제
4.사물인터넷보드에 각각 LED가 4개씩 연결되어있을때 서버에서 개별적으로 제어해보는 예제!
5.(4)예제에 각각 광센서(CDS)를 추가해서 서버에 게이지 UI로 값을 출력해보는 예제!