毎年、この時期になると書いてるネタですが、Twitterのハッシュタグ付きツイート数を集計して、点灯していくクリスマスイルミネーションを作ってます。イベントで使ってもらったり、自分のネタの反響を可視化するアイテムとして使ってたりしてます。
12月21日(土)に私が主催しているmbed祭り@ウフルがあるので、使おうと動かしてみたところ動かなかったので、原因を調べました。
ちなみに集計する仕組みは簡単で、Twitterノードとmilkcocoaノードを使ってるだけです。
Twitterノードはハッシュタグ付きのツイートがあるとトリガがかかり、milkcocoaにそのツイートをしたusernameをpushしてるだけです。
イルミネーション側のハードは、よくあるNeoPixelとJKsoft Blue mbed Boardを使っています。
動かない原因
twitterノードの仕様変更?
twitterAPIの仕様が変わったせいかDeveloper登録が必要になってました。Developer登録してもよかったのですが、そこまでではないのと数日かかるということだったので、別な方法を考えました。
milkcocoaのサービス終了
そういえばサービスが終了していました。
とりあえず動く形に
twitterノードの代わり
IFTTTを使いました。IFTTTとは、Webサービスを簡単に繋げることができるサービスです。こちらではtwitterアカウントでの認証のみで済みました。
IFTTTの設定
IFTTTでアカウント登録をしたら、CreateからAppletを作ります。
If This Then ThatのThis
IFTTTでtwitterのハッシュタグツイートをトリガになるように設定します。初めて設定するときは、twitterアカウントで認証する必要があります。
serviceとしてtwitterを選び、以下のトリガを選びます。
If This Then ThatのThat
方法はいろいろあると思いますが、heroku上で動作しているフローに通知するため、http requestでつなげます。
そのため、webhoocksを使います。
アクションはMake a web requestを選びます。(これしかないけど)
設定はこんな感じです。herokuのURLを指定し、json型でtwitterから取得したUserNameをpostします。
enebularのフロー
enebularのフロー側で、ifttt(twitter)からの通知を受け取って集計し、その結果をhttp requestでgetできるようにしました。
フローは単純です。
ifttt(twitter)からpostがあったら、globalコンテキストのsns_echo_countをインクリメントします。
イルミネーション装置からgetが来た場合は、sns_echo_countを返します。
とりあえず
これで動きました。イベントのハッシュタグ付きのツイート数に応じて、LEDが点灯していきます。
宣伝
2019年12月21日(土)のイベントには、まだ空きがあるのでご興味ある方はぜひ!
mbedとは?という方には体験コーナーもあります。