반응형

https://youtube.com/live/XzoqIGjojGY

[아두이노#594] C#윈폼으로 라인노티파이(line notify) API로 라인메신저에 푸시알람(push notification) 전송해보기!

녹칸다의 라인노티파이(line notify) 시리즈이다!

이번편은 ESP32가 아니라 C#윈폼에서 푸시알람을 전송해보도록 한다!
IoT보드가 직접 푸시알람을 전송하는게 아니라 C#윈폼에서 중앙제어를 하는 형태이다!

다양한 IoT보드가 C#윈폼으로 업로드한 데이터를 종합적으로 분석해서 위기 상황이 발생하면 녹칸다의 스마트폰으로 위험을 알리는 형태인것이다!

아래와 같은 2개의 큰 주제를 해결해보도록 하자!
1.컴퓨터에 USB로 연결된 아두이노 우노가 있고 우노가 업로드하는 센서값이 기준치를 초과하면 C#에서 푸시알람을 전송한다!
2.C#윈폼으로 구현한 어플리케이션으로 IoT보드가 데이터를 무선(WiFi)으로 업로드하고 센서값이 기준치를 초과하면 푸시알람 전송해보기!(ESP32보드 기준)

(라인노티파이 API)
https://notify-bot.line.me/doc/en/
(MQTT 브로커)
broker.emqx.io
(참고코드)
WebClient wc = new WebClient();
string api_server = "https://notify-api.line.me/api/notify";

wc.Headers["Authorization"] = "Bearer <토큰>";

NameValueCollection nvc = new NameValueCollection();
nvc["message"] = "안녕하세요~~";

byte[] response_stream = wc.UploadValues(api_server, nvc);
string response = Encoding.UTF8.GetString(response_stream);

(API문서를 보고 이해해야할 사항)
1.목적지 서버 주소가 "https://notify-api.line.me/api/notify"이구나!
2.전송방식이 GET방식과 POST방식이 있는데 POST방식이구나!
3.HTTPS프로토콜은 우리가 만든 웹클라이언트가 Request하면 웹서버가 Response하는 방식으로 동작한다!
4.웹클라이언트가 전송하는 Request에 양식에 맞는 데이터를 입력해줬을때 최종적으로 푸시알람이 발생하고 서버가 전송하는 Response는 잘전송되었다 정도의 정보이다!
5.POST방식으로 전송하는 헤더에는 Authorization값에 각자 보유하고 있는 토큰값을 입력해서 전송해야한다!
6.파라미터부분은 필수부분이 있고 옵션부분이 있다!

(주의사항)
1.아두이노가 Serial.println으로 전송하면 컴퓨터가 받게 되는데 기본적으로는 시리얼모니터를 활용한다!
2.시리얼모니터라는 것은 윈도우에서 USB로 연결된 아두이노가 전송한 데이터를 수신받는 뷰어이고 일종의 프로그램이다!
3.컴퓨터에서 USB로 연결된 기기와 통신할때는 한회선만 독점적으로 사용가능하므로 2개이상의 프로그램이 하나의 디바이스와 통신할 수 없다!
4.아두이노의 시리얼모니터가 아두이노 우노와 통신중이라면 C#윈폼은 통신할 수 없고, C#윈폼이 우노와 통신중이라면 시리얼모니터는 사용할 수 없다!
5.그러므로 C#윈폼에 아두이노 우노와 연결하기 위해서 시리얼모니터는 결과확인만 간단히 하고 바로 꺼야한다!
6.아두이노가 serial.println으로 전송하면 보내고자 하는 문자열뒤에 제어문자 CR('\r'), LF('\n')가 자동으로 붙는다!
7.ESP32보드에서 MQTT를 사용하려면 라이브러리(pubsubclient)를 설치해야하고 C#쪽에서도 마찬가지로 MQTT를 기본지원하는게 아니기 때문에 라이브러리(M2MQTT)를 설치해야한다!
8.기존 아두이노 MQTT용으로 사용하던 서버주소가 "broker.mqtt-dashboard.com"였는데 잘안되서 대안으로 찾은 주소가 "broker.emqx.io"이다!
9.C#에 사용하는 M2MQTT라이브러리의 데이터 수신부는 thread로 동작하기 때문에 접속한다음 close하는 부분을 구현하지 않으면 C#폼을 종료하더라도 백그라운드에서 thread가 동작하기 때문에 프로그램이 종료되지않는다!

 

(C#에서 MQTT를 사용하기 위한 참고자료)

C#에서 MQTT사용하는 기본코드.txt
0.00MB


(예제목차)
1.C#윈폼을 webclient로 설정해서 라인노티파이 서버에 메시지를 전송할 수 있는 예제를 구현하시오!

594-1.zip
0.04MB

 

2.아두이노 우노의 디지털 2번핀에 버튼을 연결하고 2000밀리초간격으로 버튼이 눌러졌나 안눌러졌나를 신호를 우노가 측정해서 C#윈폼으로 전송한다! 이때 버튼이 눌려졌다라는 신호가 C#에 전송되면 C#은 푸시알람을 발생시키도록 하시오!

594-2(아두이노우노코드).txt
0.00MB
594-2.zip
0.04MB

 

3.ESP32보드에 버튼을 한개 연결하고 버튼이 눌려졌나 안눌려졌냐를 MQTT로 C#으로 전송할때 C#이 수신한 데이터가 버튼이 눌려진것이라면 푸시알람을 발생시키겠다!

594-3(ESP32코드).txt
0.00MB
594-3.zip
0.10MB

 

4.ESP32보드 2대를 이용해서 MQTT로 C#윈폼으로 데이터를 전송하고 비상상황이 감지되면 푸시알람을 전송하도록 하시오!
   -ESP32 1호 : A구역에 설치됨(nockanda/esp32/sectionA)

594-4(sectionA).txt
0.00MB


   -ESP32 2호 : B구역에 설치됨(nockanda/esp32/sectionB)

594-4(sectionB).txt
0.00MB
594-4.zip
0.10MB

반응형
Posted by 덕력킹
,