WiFiモジュール ESP-WROOM-02 を使用してTwitterに投稿する。


はじめに

今回は、WROOMを使用してTwitterに投稿することを目的としているので、センサー類の使用はしないです。
また、WROOMの接続方法などはこちらの記事を参考にしたので省かせてもらいます。

使用モジュール

  • 自分たちが使いたい各々のセンサー類。

ざっくりとした流れ

  1. 自分がWROOM経由でツイートしたいツイッターアカウントを作成する。
  2. トークンを作成する。
  3. プログラムの記述
  4. WROOMへの書き込み。
  5. ツイート。

ツイッターのトークンの取得

トークンとは自分の作成したTwitterアカウントと紐づけるためのパスワード的な解釈でいいと思う。

StewGate U
このサービスを使用すると簡単にトークンの取得ができるので今回はこれを使用してトークンの作成をした。

プログラム

#include <ESP8266WiFi.h>

/* 無線LANルータのIDおよびパスワード
*
*  "*****************************" の中にはそれぞれの環境にあった設定を入れてください。
*
*/
const char* ssid = "*****************************";
const char* password = "*****************************";

const char* host = "stewgate-u.appspot.com";
const char* token = "*****************************";   // 作成したtwitterのトークン

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while(WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
}

void loop() {
  String message = "ツイートしたい文字列";
  boolean can_tweet = tweetMsg(message);

  Serial.print("already tweet?");
  Serial.println(can_tweet);

  delay(60000*15);
}


bool tweetMsg(String msg) {
  WiFiClient client;
  const int httpPort = 80;
  if(!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return false;
  }

  client.println("POST /api/post/ HTTP/1.0");

  client.print("Host: ");
  client.println(host);

  // メッセージ以外の長さ(トークン含む)にメッセージ長を加算
  int msgLength = 40;
  msgLength += msg.length();
  client.print("Content-length:");
  client.println(msgLength);
  client.println("");

  client.print("_t=");
  client.print(token);
  client.print("&msg=");
  client.println(msg);

  delay(10);

  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }

  return true;
}

WROOMへの書き込み

WROOMのボードがまだ入っていない人は、こちらを参考にするといいかと思います。

ツイートしたい文字列を入れて書き込むので、まずツイートしたい内容を記述。

ボードにESP8266を指定して、Upload Speed115200に指定する。
マイコンボードに書き込むを押して書き込み!
多少時間かかるので、気長に待ちましょう。。。

ツイート完了!!!

こんな感じでちゃんとツイートされていればオッケーです!

気をつけておきたいことは

  • Twitterの仕様上で、同じ内容のツイートはできなくなっているので、再度ツイートするときにはツイート内容を変更しないといけません。
  • 連投しすぎると一時的にツイートできなくなります。

参考資料

http://qiita.com/ikesato/items/92f4cb143e7aeb5e0f9b
http://ameblo.jp/empsgs/entry-12112893584.html
http://4009.jp/post/2016-04-25-esp-wroom-02/