본문 바로가기

Development Project/ESP 32 & IFTTT

ESP 32 와 IFTTT 연동하기 #3


#3 ESP32 와 IFTTT 연동 하기

ESP32 아두이노 프로그램과 안드로이드 어플리케이션 다운로드

저번 포스팅에선 IFTTT 회원가입과 Applet 설정까지 진행을 했습니다.



결과물로 이걸 얻었죠. 

이번 포스팅에선 아두이노 프로그램과 안드로이드 IFTTT 어플 알림 확인까지 진행 하려고 합니다.

우선 IFTTT 에서 Webhook 연동에 필요한 API key를 받아와야 합니다. 수많은 IFTTT의 webhook 사용자 중 당신의 webhook을 찾기 위해서 말이죠 ㅎ

IFTTT Webhook 키값 확인하러 가기 !!


이 주소에 접속 해 주세요 IFTTT 에서 지원하는 Webhook 에 대한 설명 입니다. 동시에 사용자에게 제공되는 API Key 도 확인 할 수있죠. 
접속하게 되면 다음과 같이 나타납니다. 만약 표시가 안된다면, 로그인을 해주세요 ! 


위의 화면에서 "Documentation" 을 클릭해 주세요 사용자 Key 값과 테스트를 할 수 있습니다.


이제 Your Key is : ~~~ 숫자와 영어의 조합으로 적힌 키값이 표시 됩니다. 이 키값은 노출되지 않도록 주의하세요.


만약 노출이 되어 다른 사용자가 테스트를 하면 IFTTT App 에 수많은 알림이 갈수도....


이제 키값도 알아 냈으니 아두이노 코드를 작성해 볼까요 ??


첫 포스팅 #1 에서 설치한 아두이노를 실행 시켜주세요 !

간단하게 wifi 를 이용해서 IFTTT의 webhook에 접근을 해보겠습니다. 


아두이노 소스코드는 다음과 같습니다.

#include <wifi.h>

#define AP_NAME "Your use Access Point" #define AP_PASSWD "Your use Access Point Passwd" #define IFTTT_Host "maker.ifttt.com" #define IFTTT_KEY "Your IFTTT webhook Key" void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(AP_NAME, AP_PASSWD); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Wifi Connection ...."); } Serial.println("Connected to AP "); Serial.println(WiFi.localIP()); send_event("Very_Hot"); delay(30000); } void loop() { } void send_event(const char *event){ Serial.print("Connecting to "); Serial.println(IFTTT_Host); WiFiClient client; const int httpPort = 80; if (!client.connect(IFTTT_Host, httpPort)) { Serial.println("Connection failed"); return; } String url = "/trigger/"; url += event; url += "/with/key/"; url += IFTTT_KEY; String mJson = String("{\"value1\":\"") +"Tes Gom EE~\"}"; Serial.print("Requesting URL: "); Serial.println(url); client.println(String("POST ") + url + " HTTP/1.1"); client.println(String("Host: ") + IFTTT_Host); client.println("Content-Type: application/json"); client.print("Content-Length: "); client.println(mJson.length()); client.println(); client.println(mJson); while(client.connected()){ if(client.available()){ String line = client.readStringUntil('\r'); Serial.print(line); } else { delay(50); }; } Serial.println(); Serial.println("closing connection"); client.stop(); }

프로그램에 관련이 있으신 분들에게는 쉬운 wifi 사용 예제 코드입니다. 약간 수정했어요.


위의 코드를 그대로 사용 하신다면, 몇가지 수정을 해주셔야 합니다. 


바로 AP 관련 설정과 앞서 받아온 Webhook의 Key값을 말이죠 !

#define   AP_NAME     "Your use Access Point"
#define   AP_PASSWD   "Your use Access Point Passwd"
#define   IFTTT_KEY       "Your IFTTT webhook Key" 

AP_Name : 사용 할 수 있는 공유기 이름 (반드시 네트워크가 되야 합니다.)

AP_Passwd : 사용 하려는 AP 의 패스워드 없다면, 비워두셔도 됩니다.

IFTTT_KEY :  IFTTT webhook 에서 받아온 Your Key value 입니다.


모든 아두이노 코드가 작성되고 업로드를 진행 해주시면 됩니다 ! 

이때 아두이노 업로드 에러가 발생한다면 ???

아두이노 탭의 Board 를 확인해 주세요 Board 와 Port 가 모두 ESP32 를 가르켜야 합니다. 

하나라도 안맞으면 업로드가 아니되옵니다 ~~

이렇게 말이죠 !!


아두이노 업로드가 완료되면 시리얼 모니터를 통해 어떤 메시지가 나가는지 확인해 보시죠 ! 


시리얼 모니터는 아두이노 화면 오른쪽 상단에 위치한 돋보기 모양이에요 !! 



시리얼 모니터에 아무 것도 안나타난다면 ?? -> ESP 32 를 리셋 해주세요 !! 


그래도 아무런 메시지가 안나타나거나 스페이스바가 막 눌린 것처럼 나타난다면,

시리얼 모니터 하단에 위치한 No line ending / 115200 baud / Clear output 설정과 동일하신지 확인해주세요 Baud Rate 가 115200 으로 되어야 합니다.

"Congratulations ! You're fired the Very_Hot Event" 라는 메시지가 나탄다면 성공입니다.!!

아참 !! Event 명을 말씀을 안드렸네요.

소스코드 Setup 함수 부분에 위치한 

send_event("Very_Hot");

해당 코드의 Very_Hot 을 IFTTT에 지정한 Event Name 으로 설정해 주세요.

이벤트 명이 다를 경우 그냥 다른 애플릿으로 생각해서 아무런 동작이 없을 거에요 !! 

이제 안드로이드로 확인을 해볼까요 ?? 스마트폰을 켜시고 ~ Play Sotre 접속 !! 

IFTTT 를 검색하고 설치해 주세요. 

   


처음 IFTTT 어플을 열게 되면 로그인을 하라고 표시가 됩니다. 이전 포스팅에서 회원가입한 계정을 통해 로그인을 해주세요 !!


IFTTT 어플 설치에 로그인까지 완료되면 이제 진짜 다 끝났어요 !!


짝짝짝 ㅋㅋㅋ


이제 ESP32를 리셋해서 다시 아두이노 시리얼 모니터에 "Congratulations ! You're fired the Very_Hot Event" 문구가 나타나게 해주세요 !

그럼 잠시 후 알림이 카톡 오듯이 Notification 창에 IFTTT 알림 메시지와 우리가 설정한 메세지 문구를 확인 하실 수 있습니다. 


이로써 ESP32 와 IFTTT 연동이 완료 되었습니다. !! 고생하셨습니다 !

-> Tes Gom EE~ 라고 나타나는 이유는 소스코드에 있습니다. 수정 해보시지요 케케



다음 포스팅에서는 ESP32 와 BME680 센서를 연결하고, 온도 센서가 일정값 이상으로 높아지거나 낮아지면 서로 다른 메시지가 나타나게 하는 것을 확인 해보겠습니다.


감사합니다. 








'Development Project > ESP 32 & IFTTT ' 카테고리의 다른 글

ESP 32 와 IFTTT 연동하기 #2  (0) 2018.08.13
ESP 32 와 IFTTT 연동하기 #1  (0) 2018.08.10