ESP32에서 Arduino Sketch 기반 카카오(kakao) 오픈(Open) API를 활용하여 나에게 카카오톡 메시지(Katalk message) 전송
(그림1. 카카오톡 메시지 사용권한 관련 )
그래서 다른 사람은 어떻게 하느냐고 생각하면 보통 안드로이드 폰(android phone)이 제공하는 듀얼 메신저(dual messenger)혹은 듀얼 앱(dual app)기능을 활용하기 위해서 전화 번호 생성 앱(app)에서 전화 번호를 생성하고 이를 가지고 카카오에서 인증을 얻어 추가 계정을 만들어 1대의 스마트 폰에 2개의 카카오 계정을 갖고 시험하고 있네요 이런 내용에 대해서 알아보면 다음과 같이”쇠를 벗고 외삼촌”씨의 블로그 내용이 너무 자세히 설명되어 있어 다행이라고 생각했다.
(그림 2. 철없는 삼촌:카카오 톡 계정을 2개 작성)
물론 이런 방식으로 전화번호 생성 앱에서 획득한 전화번호가 일정 기간 지나면 무료 서비스가 없어지고 전화번호는 사용할 수 없지만 어차피 카카오 개발자 계정은 얻었을 것이기 때문에 당장은 문제가 없기 때문에 이러는 것 같습니다.그런데 저희는 이런 서비스를 가지고 뭔가 제품에 녹이려고 하기 때문에 방향을 좀 바꿔서 먼저 기기에서 시험해서 다음에 안정적으로 운영할 수 있는 상황 조성을 검토하려고 합니다.
구글 링을 했더니몇몇 분들이 먼저 하고 본 것 같아요 제가 참조한 사이트는 “도도우가이(mapes_khkim)”씨와 “김·쟈은소프”씨가 운영하는 블로그입니다.기본적으로 아까 PC기반의 파이썬(Python)에서 작업한 내용을 Arduino Sketch문법에 따르고 ESP32환경에서 돌게 관련 코드를 포팅 하면 됩니다.줄거리가 되는 코드 구조(code structure)을 보고핵심 함수는 이미 먼저 하고 본 사람이 포팅 한 것을 갖다 쓰려구요.그림 3처럼 ESP32에서 동작하는 Arduinocode을 보면 우선 시리얼 포트를 활성화시켰고 WiFi에 접속합니다.
그림 3. 아두이노 Setup 코드그리고 ESP32에서 카카오(kakao) 오픈(open) API를 이용하여 자신에게 메시지(message)를 보내기 위해서는 그림 4와 같이 이전 PC에서 작업 시 발급된 앱 키(App Key), 이른바 API 키와 리프레시 토큰(Refresh Token)이 필요합니다.(그림4. 앱키 및 발급받은 리프레시톡)ESP32이 기동(booting) 한 뒤 처음에는 위 그림 4의 앱 키(Appkey)과 회복적 표식(Refresh Token)을 가지고 액세스 토큰(access token)를 발급 받아 그 후 메시지(message)를 송신할 필요가 있습니다.한번 접근 토큰을 발급 받으면, 이것이 6시간이나 유효하다는 것으로 6시간 이내에 마치 워치독 킥(watchdogkick)처럼 앱 키(appkey), 즉 API키와 재충전 토큰(refreshtoken)을 이용하고 다시 액세스 토큰(accesstoken)을 경신(update) 하면 됩니다.실제로 작동하는 내용은 아래 그림 5와 같습니다.Loop() 같은 슈퍼 그룹에서 시리얼 포트의 수신부를 체크하고 약속된 문자(character)가 왔는지를 점검할 계획입니다.그리고 이것이 i, u, s인지에 의해서 규정된 동작을 합니다.(그림5 슈퍼루프 동작)실제로 그림 5에서 핵심 함수(function)인 update_access_token()과 send_message()는 제가 참조한 사이트 “도두가이(mapes_khkim)”님이 공개한 코드를 그대로 사용하였습니다.필요하다면 아래 그림 6의 ‘도두가이’에 가서 사용하세요.그림 6. 두두가이말씀드렸듯이 이러한 함수는 기존 PC에서 파이썬으로 작업했던 내용을 ESP32로 작동하도록 아두이노 스케치(arduinosketch) 기반으로 포팅 작업이 된 것입니다.ESP 32페이지에서 디버깅 포트(debug port)를 통해 본 결과는 아래 그림 7과 같습니다.참고로 아래 그림 7에서 처음 마스킹된 cliend_id 이것이 앱 키(appkey), 이른바 API 키입니다.(그림7. ESP32 에서 나에게 메세지를 보내는 결과)그림 7에서의 결과와 함께 최종적으로 내가 가지고 있는 스마트폰 카카오톡 앱에서 결과를 확인했습니다.그림 8. ESP32로부터의 메시지이제 기본은 대충 된 것 같아요.이쯤에서 일단 마무리를 해서 이런 것들을 가지고 우리 제품의 여러 부분에 안정적으로 녹일 수 있도록 고민을 해봐야 합니다.^^