Espruino on ESP32 で Twitter にも日本語を
LINEでは日本語の送信をできるようにしたので、Twitterでも日本語の送信ができるようにということで、Espruino on ESP32 で Twitter(その2) - いっぺーちゃんの いろいろやってみよ~ で紹介したtiny_twitterモジュールのtweet処理のメッセージを日本語対応にしてみました。
チョイ変だけで済むと思ったら、そうでもなかった。。。
ついでにパーセントエンコード処理がダブっていた部分を整理したり、ちょこちょこと変更しました。
以下が日本語対応版 tiny_twitter モジュールです。
zipファイルを解凍してオンボードストレージの /node_modules ディレクトリに格納してください。
日本語対応しているのは送信のみで、受信は対応していません。
受信を日本語対応するには、Espruino本体のString関連処理を大幅に修正する必要がありそうなので、あきらめました。
日本語をtweetするには、LINEのときと同様に送信文字列をあらかじめパーセントエンコードしたものを指定し、第3パラメータにエンコード済みを示すtrueを指定します。
var message = "%E3%81%8A%E3%81%AF%E3%82%88%E3%81%86"; // おはよう var param = {"trim_user":true,"include_entities":false}; tw.tweet(message, param, true); // パーセントエンコード済み文字列のときは第3パラメータをtrueに
これを使って、Espruino on ESP32 で Twitter(その3) - いっぺーちゃんの いろいろやってみよ~ のTweetボタンを日本語化したものが以下です。
consumer_key = '取得した Consumer key'; consumer_secret = '取得した Consumer secret'; access_token = '取得した Access Token'; access_secret = '取得した Access Token Secret'; var messages = [ "%E3%81%8A%E3%81%AF%E3%82%88%E3%81%86", // おはよう "%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF", // こんにちは "%E3%81%93%E3%82%93%E3%81%B0%E3%82%93%E3%81%AF", // こんばんは "%E3%81%8A%E3%82%84%E3%81%99%E3%81%BF", // おやすみ ]; if (typeof(ESP32) ==='function') { // platform is espruino on ESP32 // Wi-Fi アクセスポイントへの接続 var wifi = require('MyWifi'); // set time zone fixed to 'JST' E.setTimeZone(9); // Initialize for switch var sw1 = Pin(21); sw1.mode("input" ); } else { throw "not ESP32"; } // モジュール読み込み var tiny_twitter = require("tiny_twitter"); // 初期化 var tw = new tiny_twitter(consumer_key, consumer_secret, access_token, access_secret, true); tw.on("connect", function() { console.log("%%%% CONNECTED %%%%"); }); tw.on("response_header", function(data, code, msg) { if (code != 200) { console.log("%%%% RESPONSE ERROR!!! " + code.toString() + " : " + msg); } console.log("%%%% RESPONSE_HEADER %%%%\n" + data + "\n%%%%%%%%%%%%%%%%%%%%%%%%%"); }); tw.on("data", function(data) { console.log("%%%% DATA %%%%"); console.log(JSON.stringify(data, null, '\t')); // エラー時はdata.errors.code data.errors.message に情報が入る console.log("%%%%%%%%%%%%%%%%%%%%%%%%%"); }); tw.on("end", function() { console.log("%%%% END %%%%"); }); function button_down(e) { var msg; var date = new Date(); h = date.getHours(); if (h >=4 && h < 12) { msg = messages[0]; // おはよう } else if (h >=12 && h < 17){ msg = messages[1]; // こんにちは } else if (h >=17 && h < 21){ msg = messages[2]; // こんばんは } else { msg = messages[3]; // おやすみ } tw.tweet(msg, {"trim_user":true,"include_entities":false}, true); } setWatch(button_down, sw1, {repeat:true, edge:"falling", debounce:100});
これで日本語をtweetすることができるようになりました(ひと手間余分に必要ですが)。
ちょっと使い道が広がったかな??