M5ATOM을 무선 LAN에 연결했을 때 할당된 IP 주소를 LINE으로 알립니다.

M5ATOM을 무선 LAN의 액세스 포인트에 접속했을 때에 할당된 IP 주소를 시리얼 버스를 사용하지 않고 LINE Notify에 통지해 본다.

참고로 한 것은 다음 기사
ESP32에서 LINE Notify에 알림을 던지는 절차 비망록
htps : // 이 m/미네 820/있어 ms/53c2아 833937f1186539f

LINE 앱 설정



LINE에 알림을 위한 그룹 만들기







그룹에 LINE Notify 추가





그룹에 이름을 붙이기





완성된 그룹





LINE Notify 설정



LINE Notify에 로그인





내 페이지 보기





페이지 하단에서 액세스 토큰 발급





토큰 이름을 기입하고 통지할 그룹(토크룸)을 선택





발행된 토큰을 복사하여 텍스트 편집기 등에 붙여넣고 저장





LINE 앱에서 LINE Notify에 대한 토큰 발급 알림 확인





M5ATOM 프로그램



M5ATOM은 ArduinoIDE에서 프로그래밍합니다.
이번에는 동시에 IoT 콘센트인 「ATOM Socket」을 움직였으므로, 샘플 프로그램은 github에 업했습니다.
htps : // 기주 b. 이 m / 토모토 w56 / M5 나중에 m-o-c t- e ぁ mp ぇ s / t ree / main / M5 뒤 m_

아래에 샘플 프로그램의 주요 처리를 발췌합니다.



WiFiClientSecure 헤더 포함 및 클라이언트 인스턴스 생성



M5Atom_LINENotify.ino
#include <WiFiClientSecure.h>
(中略)
WebServer server(80);
WiFiClientSecure client;

LINE 액세스 설정 및 필요한 변수 선언



M5Atom_LINENotify.ino
const char* host = "notify-api.line.me";
// メモしたトークンを記載
const char* token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
IPAddress ipadr;

LINE Notify에 알림 함수 만들기



M5Atom_LINENotify.ino
void LINE_Notify(String message){
  if(!client.connect(host, 443)){
    Serial.println("Connection failed!");
    return;
  }else{
    Serial.println("Connected to " + String(host));
    String query = String("message=") + message;
    String request = String("") +
                 "POST /api/notify HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Authorization: Bearer " + token + "\r\n" +
                 "Content-Length: " + String(query.length()) +  "\r\n" + 
                 "Content-Type: application/x-www-form-urlencoded\r\n\r\n" +
                  query + "\r\n";
    client.print(request);
    client.println("Connection: close");
    client.println();

    while (client.connected()) {
      String line = client.readStringUntil('\n');
      if (line == "\r") {
        Serial.println("headers received");
        break;
      }
    }
    // if there are incoming bytes available
    // from the server, read them and print them:
    while (client.available()) {
      char c = client.read();
      Serial.write(c);
    }

    client.stop();
    Serial.println("closing connection");
    Serial.println("");
  }
}

setup() 함수에 IP 알림 처리 추가



2022년 1월 10일 갱신
Line Notify에 액세스하는 동안 오류가 발생하여 "client.setInsecure();"추가

M5Atom_LINENotify.ino
void setup(){
  client.setInsecure();  // Line Notifyのアクセスエラー対応

  //M5::begin(SerialEnable = true, I2CEnable = true, DisplayEnable = false);
  M5.begin(true, false, true);
(省略)
  // SSID,IPアドレスのシリアル出力
  Serial.print("AP SSID: ");
  Serial.println(WiFi.SSID());
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());  //IP address assigned to ATOM
  Serial.println("");

  // SSID,IPアドレスをLINE Notifyへ送信
  ipadr = WiFi.localIP();
  String message = "Connected!\r\nSSID: " +
                   (String)WiFi.SSID() + "\r\nIP adrs: " +
                   (String)ipadr[0] + "." +
                   (String)ipadr[1] + "."+
                   (String)ipadr[2] + "."+
                   (String)ipadr[3];
  LINE_Notify(message);
(省略)
}

실행 결과



직렬 모니터로 출력


connected(^^)
airport_01
192.168.100.35
connected to router(^^)
AP SSID: airport_01
IP address: 192.168.100.35

Connected to notify-api.line.me
headers received
1d
{"status":200,"message":"ok"}
0

closing connection

ATOM IP Notify 그룹에 알림





샘플 프로그램의 주의점



샘플 프로그램은 Wi-Fi에 연결하는 데 "Wi-Fi Manager"를 사용합니다.
WiFi Manager 사용에 대한 자세한 내용은 다음 기사를 참조하십시오.

ESP32 WiFi의 SSID, 패스워드를 외부에서 설정해 액세스 포인트에 접속



2022년 1월 10일 추가



도서관 업데이트? 에서 Line Notify에 액세스하는 동안 오류가 발생하기 때문에,
setup() 함수의 시작 부분에 다음을 추가client.setInsecure();

결론



LINE Notify에 대한 통지는 토큰을 취득하면 인증서 취득 없이 실시할 수 있습니다.
ESP32계로 디스플레이가 없는 보드에서도 대응 가능하므로 시험해 보세요.

좋은 웹페이지 즐겨찾기