ESP32からChatworkへメッセージを送ろうと思ったけど、ぴったりの情報が見つけられず試行錯誤したので記録に残します。
動機
M5stackでネットワーク機器にpingして死活確認を行い、落ちてたらChatworkで通知を送ってくるようにしたい。
成功したコード
以下のコードで送れました。
chatwork_send.ino
// Chatwork api活用
#include <WiFi.h>
#include <HTTPClient.h>
#include <ESPping.h>
const char* SSID = "mySSID";
const char* PASSWORD = "myPASSWORD";
String BASE_URL = "https://api.chatwork.com/v2/rooms/";
String ROOM_NAME = "xxxxxxxx"; //グループID
String MYTOKEN = "xxxxxxxxxxxxxxxxxxx"; //Token
String URL = BASE_URL + ROOM_NAME + "/messages";
void chatwork_send(String message) {
String httpRequestData ="";
httpRequestData += "body=" + message;
//HTTPClientでPOST
HTTPClient httpclient;
httpclient.begin(URL.c_str());
httpclient.addHeader("Content-Type", "application/x-www-form-urlencoded");
httpclient.addHeader("x-chatworktoken", MYTOKEN.c_str());
int httpCode = httpclient.POST(httpRequestData);
if (httpCode == HTTP_CODE_OK) { //送信OK
Serial.println(httpRequestData);
Serial.println("chat send!");
} else { //送信失敗
Serial.printf("[HTTP] POST... failed, error: %s\n", httpclient.errorToString(httpCode).c_str());
Serial.println("chat error!");
}
Serial.println();
httpclient.end(); //HTTPClient終了
delay(1000);
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500); Serial.print(".");
}
Serial.print("\nWiFi connect: OK");
chatwork_send("テストだよ");
}
void loop(){}
以上です。