반응형
녹칸다의 C#윈폼 예제에서 MQTT를 활용하는 내용에 문제점이 있어서 작성해두는 내용입니다~~!
publish하는 함수의 매개변수가 무엇인지 모르고 대충 써놨었는데 이게 불편함을 야기할 수 있습니다~~!
일단 제가 매뉴얼로 안내해드린 코드는 아래와 같습니다!
//지정Topic으로 Publish
client.Publish(Topic, Encoding.UTF8.GetBytes("0"), 0, true);
제일 마지막에 true라고 되어있는 매개변수가 문제가 되었는데요~!
저것을 true로 해두게되면 subscribe하고 있는 단말기가 부팅되었을때 가장 마지막으로 publish했던 메시지가 전송되게 됩니다~!
무슨말이냐면 C#윈폼쪽에서 메시지를 전송해야할 시점에 publish한 메시지가 다른쪽 디바이스로 전송이 되어야하는데(물론 이것은 잘 작동합니다) 다른쪽 디바이스가 재부팅되었을때도 전송되는 문제가 생깁니다!
예를들어 C#윈폼에서 원격지에 릴레이를 ON하라는 명령을 publish해놓았다고 하면 원격지에 디바이스쪽 릴레이가 작동됩니다만, 디바이스가 초기 부팅되었을때 OFF상태를 가진다고 할때, 부팅되자마자 C#에서 마지막으로 publish한 메시지인 ON명령이 자동으로 전송이되면서 명령을 내린적이 없는데 켜지게 되는 현상이 생길 수 있습니다~!
이것은 MQTT에서 서버와 클라이언트의 설정에 관련된 부분인것 같네요~!
아무튼 코드를 아래와 같이 마지막 매개변수를 false로 고쳐서 활용해야 우리가 원하는 목적에 맞게 동작하게 됩니다!
//지정Topic으로 Publish
client.Publish(Topic, Encoding.UTF8.GetBytes("0"), 0, false);
끝입니다~!
반응형
'녹칸다 > 녹칸다의잡학사전' 카테고리의 다른 글
릴레이 작동할때 아두이노에 문제(재부팅)가 생긴다면 RC snubber를 연결하십시요! (0) | 2022.07.13 |
---|---|
홈어시스턴트(home assistant)를 윈도우10(windows10)에 설치하는 방법!(for 녹칸다의 홈어시스턴트 시리즈) (0) | 2022.03.19 |
[아두이노] wifimulti를 이용해서 코드 수정없이 여러개 무선공유기에 연결하는 방법! (0) | 2022.01.13 |
[아두이노] 릴레이가 high level trigger, low level trigger 일때의 차이 (0) | 2022.01.11 |
[아두이노] 아두이노 우노와 ESP8266보드의 아날로그 입력과 전압계산하는 방법의 차이! (0) | 2022.01.11 |