M5StackからLINEに投稿する
関東地方の梅雨があけたようです。
クソ暑い・・・
この間、Line notify
というのを導入したので、
M5Stackから投稿するテストをしてみました。
Micropythonだとrequestモジュールがそのまま使えなかったので、
Arduino言語を使いました。どうも開発環境を統一できていない・・・
#include <ssl_client.h> #include <WiFiClientSecure.h> #include <M5Stack.h> void setup() { M5.begin(); wifi_connect(); send_bot(); } void loop() { M5.update(); } void wifi_connect() { const char* ssid = "SSID"; //Wifi SSID const char* passwd = "password"; //Wifi passwd WiFi.begin(ssid, passwd); while (WiFi.status() != WL_CONNECTED) { //Wifi 接続待ち delay(500); } M5.Lcd.println(WiFi.localIP()); } void send_bot() { const char* host = "notify-api.line.me"; // line_notifyのURL const char* token = "token"; //トークンキー const char* message = "from M5stack"; //送るmessage WiFiClientSecure client; if (!client.connect(host, 443)) { M5.Lcd.print("WiFi connection error"); return; } String query = String("message=") + "\n" + 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); while (client.connected()) { //受信待機 String line = client.readStringUntil('\n'); if (line == "\r") { break; } } M5.Lcd.print(request); }
特に便利なライブラリもないので、Line notifyにhttps通信でダイレクトに叩いてます。
requestの内容はLine notifyの公式APIを参照。
目視でも確認できるように、送ったらLCDへ表示させるようにしています。
M5Stackが起動したらWifiに接続するまで待機し、LCDに接続したIPアドレスを表示。
そしてLineへとmessageを送ります。
よし。