4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Enebular でTwitterをトリガーにNefry(古いほう)をLチカ

Posted at

はじめまして。yukinolinです。
IoT初心者。2年ほど前にNefryをいじり始めたけど、訳あって1年ほど休眠。先日Enebularの勉強会に参加して、久々にやる気が出たので今回とりあえずやってみました。

作ったものは以下の通り。
「指定のハッシュタグがつけられたツイートがあれば、フォロワーの人数に合わせて、NefryのLEDの色が変わる」
大変だったのは、TwitterのDeveloper申請。申請目的を英語300字超で書く必要があります。適当に書きましたが、ここで心が折れる人も多いだろうな。

使ったもの

開発環境:Enebular
デバイス:Nefry(ESP8266)
クラウド:Nefryクラウド

EnebularのFlow

190127_enebular01.JPG
こんな感じでつなぎました。
ノードを配置して、つなぐだけなら30秒もかからないですね。すごく簡単。

手順1 twitterノードを設定する

Twitterノードをダブルクリックすると、以下のウィンドウが出てくるので、ここに設定を入力。
190127_enebular02.JPG
 Twitter ID:Twitter Developerを申請したID
 検索対象:全ての公開ツイート、フォローしているユーザ、特定のユーザ、ダイレクトメッセージから選択
 検索条件:@(ユーザ),#(ハッシュタグ)が設定可能 とりあえず、#JAPANとしました。
 名前:ノードの名前(好きにつけて良さそう)

ここで、Twitter IDを設定するには横の鉛筆マークをクリックして以下のウィンドウに入力する必要があります。

190127_enebular03.JPG

Twitter developerの申請ができていない方は、「1.次のURLから・・・」のリンクから申請をする必要があります。

冒頭でも言いましたが、ここが最難関でした。英語300字以上でこれから作るAppの説明を求められます。そんなもんねーよ!と言いたいところですが、ここは我慢して、大人の対応で乗り切りました。

関連記事もググればいくつか見つかったので、今からやる人は頑張ってみてください。

とりあえず、ここまでの設定で、Twitterノードに検索したTweetの情報が入ってきます。それをmsgオブジェクト?に入れて次のFunctionノードに渡しているようです。
(あまり理解していないので、間違っていたら誰か教えてください)

手順2 ほしい情報をJSON形式に整える

次にFunctionノードを設定します。
190127_enebular04.JPG
あらかじめ、Nefryクラウドの登録しておきます。
そこでつけたuser(ユーザー名)と、送られてくるkeyをそれぞれ入力します。

この辺りは、ちゃんとくさんのこちらの記事を勉強させていただきました。
(ありがとうございます)

最後の一行data: msg.tweet.user.friends_countは、ツイートから取り出したい情報です。

こちらにTweet Objectの詳細があります。ここを見ると、いろんなデータを取り出せることがわかります。またの機会にいろいろ試してみようと思います。

手順3 NefryクラウドへPOSTする

最後にHTTP requestノードを以下のように設定します。
190127_enebular05.JPG
 メソッド:POST
 URL:http://cloud.nefry.studio:1880/nefrysetting/setdata
 出力形式:JSON
 名前:ノードの名前(好きにつけて良さそう)

これでデプロイすると、デバッグ画面にこんな感じでデータが上がってきます。
190127_enebular06.JPG

手順4 Nefry側のコードを作成してアップロード

コードは以下のように書きました。
ツイート主のフォロワーが100人以下なら赤、1000人以下なら緑、それ以上は青色が光るようになっています。

# include <Nefry.h>
# include <NefryCloud.h>

NefryCloud nefryCloud;

char* USER = "Nefryクラウドのユーザ";
char* KEY = "Nefryクラウドのkey";

void onpush(int count);

void setup() {
  nefryCloud.begin(USER, KEY);
  nefryCloud.on(onpush);

}

void loop() {
  nefryCloud.loop();
}

void onpush(String str) {
  Nefry.println(str);

  long num = str.toInt();


  if (num < 100) {
      Nefry.setLed(255, 0, 0);
  } else if (num < 1000) {
      Nefry.setLed(0, 255, 0);
  } else {
      Nefry.setLed(0, 0, 255);
  }

}

コンパイル時に、NefryクラウドはESP32向けなので、ESP8266ではうまくいかないかも、と警告されますが、結果的にはうまくいきました。
Nefry開発者の皆さん、ありがとうございます。

結果

こんな感じでできました。
ezgif-4-90b663ed2c4f.gif
ツイートがあったときに、デバッグエリアのデータが更新され、ほぼ同時にNefryのLEDも色が変わっています。

ところでこれ、Enebularの編集画面を落としても、Nefryが電源ON・Wifi接続中なら動き続けますね。どういう仕組みなんだ・・・?

全然理解してなくても、とりあえずこれくらいはできる、ってことですね。
今後、いろいろ試してみようと思います。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?