制約諸々

Facebookへの自動投稿は曲がりなりにも動いているので、久しぶりにロガーのmicroSDを抜いて解析してみようと思いました。

ところが。テキストで54MBあまりのログをExcelに読み込ませようとしたら1048576行まで、日数で14日分しか読み込めない。

今まで1秒間隔で問題なくテキストファイルに記録出来ているのに、それ以降の解析ができないとは。盲点でしたね。やはりやってみないとわからないことは必ずある。

記録を10秒間隔にしたところで140日分しかExcelには読み込めないわけで、いくらmicroSDがGBの容量があっても宝の持ち腐れということ。

テキスト>(何らかの処理)>Excel、のようなことを考えないといけないだろう、ということがわかりました。またやることが増えた。

今日はここまで。

 

Facebookに投稿してみる(3)

昨日から始めたFacebookへの温度の投稿ですが、デフォルトのスケッチが10回投稿して終了になっており変更するのを忘れて帰宅したので、夜中に止まってしまいました。

さて、今朝から湿度、気圧を追加しようと悪戦苦闘し、結果として温度+湿度を1時間毎、1日は継続して動くようにしました。実際の稼働状況は下をアクセスしてみてください。

https://www.facebook.com/toshi.hat

「悪戦苦闘」と表現しましたが、数々のトラブルや不明点など、備忘録として残しておきます。

・Arduinoのスケッチで文字列を結合するときは”+”でなくconcat関数を使う

・Tembooで生成されたスケッチを改変する際、文字数が大きくなると(FacebookかTembooで)無視されるようだ(未確認)。Message Bodyの他にURLを入れようとするとこれも無視される。

・DNSに問題があるような気がする(常用のPCからのアクセスが不安定。スマホはOKなのに。これは当社の問題)

しばらくはこのままで様子を見ます。

 

 

Facebookに投稿してみる(2)

昨日は駆け足でFacebookへの投稿をテストしてみました。

今日からArduino Yun + BME280(Boschのセンサー)を使って事務所の温度を1時間毎にFacebookに投稿を始めています。

https://www.facebook.com/toshi.hat

一日放置して、安定して動くか確認してみます。

今日はここまで。

 

 

Facebookに投稿してみる(1)

センサー情報をメールで飛ばすのは実用になりますが、「そういうことができるんだよ、面白いよ、有効だよ」、と広く知らしめるには不都合です。メールアドレスを聞き出して(登録してもらって)、そこに定期的に発信すればいいんでしょうが。

そこで次にSNSの代表格であるFacebookに、Arduinoを自分の代理として投稿してもらうことにします。

大まかな流れを書きますと

(1) Facebookの開発者アカウントを取る

(2) Facebookの開発者サイトで「アプリケーションID他」を取得する。つまりFacebookに、Arduinoが外部アプリケーションであると認識させるわけです。

(3) TembooのサイトでInitializeOAuth –> FinalizeOAuth –> Postに登録してArduinoのプログラムコード(スケッチ)を取得する

(4) Arduinoにコードをcompile & goするとFacebookに投稿される

となります。長いですが一気に(4)までやってしまいましょう。

(1) Facebookの左のカラムから「アプリを管理」を見つけてクリック
1_admin_appli

 

(2) Developers siteに入るので、ここでMy Appsタブをクリック2_developers_site

 

(3) 下の画面が出たら”Create a New App”をクリック3_create_a_new_app

 

(4) 下の画面でDisplay Nameに適当な名前を入力する。Namespaceはoptionalなのでなくて構いません。カテゴリも適当で問題ないです。Create App IDを押すと…
4_create_a_new_app_dialog

 

(5) 作られたアプリのDashboardの画面が出ます。ここでSettings(設定)をクリック
5_dashboard

 

 

(6) ここで”+Add Platform”をクリックします
6_settings

(7) 下の画面が出るので”Website”をクリックすると・・・
7_selectplatform

 

(8) この画面になり、Websiteの欄が追加されているのがわかります。
9_settings-2

 

(9) ここでTembooのサイト、Library-tab>Facebook>OAuthをクリックするとこれからすることの説明が出ています。
10_facebook_oauth

 

やることは簡単で、

https://{ACCOUNT_NAME}.temboolive.com/callback/

の{ACCOUNT_NAME}の部分を自分のアカウントに置き換えて、先ほどのFacebookの”Site URL”に入れ、Save Changesをクリックしてください。
11_settings-3

(10) 再びTembooに戻ってFacebook>OAuth>InitializeOAuthをクリック
12_facebook_oauth_initializeoauth

 

INPUTを要するのが2つ。AppIDはFacebookのdashboardからコピーして入力してください。Scopeはとりあえず

publish_actions,read_mailbox

だけ入れればしばらく用は足ります。

ここでRunをクリックすると、AuthorizationURLとCallbackIDが出てきます。AuthorizationURLをweb-browserに入れてクリックすると、どこかで見たことのあるFacebookの「投稿を許可しますか?」という画面が出ます。これをOK。CallbackIDは次のステップで使うのでメモ帳にコピーしておく

(11) もう少しです。TembooでFacebook>OAuth>FinalizeOAuthをクリック
13_facebook_oauth_finalizeoauth

 

今度は入力するのが3つ。AppIDは先ほどと同じ。AppSecretもFacebookのdashboardからコピー、CallbackIDはInitializeOAuthで取得したものを入れます。終わったらRunをクリック。

(12) ようやくArduinoのコードが出てきました。これをArduinoでcompile & goすればFacebookの自分のタイムラインに投稿されます。

長くなったので今日はここまで。

 

 

TEMBOOを使ってみる(3)

「TEMBOOを使ってみる(2)」でgmailから「アプリ パスワード」が取得できたので、今回はTembooでArduinoに書き込むべきコードを生成させて、実際にArduinoから定期的にメールを飛ばすところまでやってみます。

(1) Tembooのアカウントを取ります

https://temboo.comを開きます。
1_signup

 

※account nameはアプリIDを生成する際に使われるようです。

(2) account name/email address/passwordを入れてsign upすると次の画面になります

 

(3)ArduinoからYahoo!サイトをアクセスするデモを見て、Tembooとはどんなものか、どんなことができるか、イメージを掴みます。

(ここで右上のLibraryをクリックすればこのデモはスキップできます)

右のArduinoのロゴをクリックすると次の画面になります。ここではArduinoからYahoo! Weatherをアクセスしようとしています。
3_welcome2

 

自分の住んでいる住所を入れてGenerate Codeを押してみましょう。すると次のようにArduinoのコードが生成されているのがわかります。
4_welcome3

 

 

Run the Codeを押してみましょう。Arduinoにコードを書き込んで実行しているシミュレーションです(本当にArduinoのエミュレーションをしているかは不明です)。
5_welcome4

OUTPUTを見ると華氏66度となっています。摂氏だと19度くらいです。ArduinoからYahoo! Weatherをアクセスして気温を取り込んだところをイメージしてください。

さて次にGet Started Nowを押すといよいよ本番です。

(4) Libraryの画面、左のCHOREOSからGoogleを探してください。
6_library

その下の階層のGmail、更にその下のSendEmailをクリックします。
7_google_gmail_sendemail

 

上から必要な情報を選択もしくは埋めていきます。
8_google_gmail_sendemail2

 

 

私の場合、上部の選択肢は、Arduino Yun,、Onboard Ethernet & WiFi、Want to stream sensor data?はそのまま、にしました。

INPUTの枠の中は、

Passwordは先ほどGmailから取得した「アプリ パスワード」

UsernameはGmailのアドレス

FromAddressは受け取ったメールにFromで表示されるアドレス

MessageBodyはメール本文

Subjectはメールのタイトル

ToAddressはメールを送信するアドレス

ここまで入力が終わったらRunを押してしばらくするとOUTPUTにArduinoに書くべきコードが現れます。
9_output

これをcopyボタンでコピーし、IDEを使ってArduinoに書き込み、Runさせれば

Arduino –> Temboo –> Gmail –> 送りたいアドレス

の経路でメールが送られます。

ここまで。

TEMBOOを使ってみる(2)

ここではgmailの「アプリ パスワード」を取得するまで、をやってみます。

「アプリ パスワード」とは、他のアプリケーションからgmailにログインする際に使うパスワードのことです。元来はgmail以外のアプリケーションがgmailを操作するために開放されているAPIですが、我々はこのI/Fを使ってArduinoからメールを飛ばそうとしているわけです。

(1) googleのサイトの右端のボタンから「アカウント情報」のページを表示させてください。
1_google_account

 

(2) 「アカウント情報」のページの「ログインとセキュリティ」をクリックします。
2_account_info

(3) 「ログインとセキュリティ」のページを下にスクロールしてもらうと、「Googleへのログイン」の項が現れます。ここで「2段階認証プロセス」をクリックします。2段階認証プロセスとは、通常のパスワードによる認証の他に、携帯やスマホを使った認証を加えてセキュリティを強化したもので、目標とする「アプリ パスワード」を得るにはまずこの2段階認証プロセスを選択する必要があります。
3_login

 

(4)携帯やスマホへ、SMS/MMSか音声による数字のパスワードを送信します。この数字をサイトに入れれば「2段階認証プロセス」が有効になります。今後はgmailから認証が必要になったとき「2段階認証プロセス」になります。

(5)  「ログインとセキュリティ」のページの「Googleへのログイン」に戻ると、「2段階認証プロセス」が有効になっており、「アプリ パスワード」の項目が現れるのでこれをクリックします。
4_app_password

 

(6) 「アプリ パスワード」が生成されるのでこれを控えます。

※こういうとき私はスクリーンショットを使います。私のlenovoではPrtScキーを押してコピー、「ペイント」アプリを立ち上げてペーストします。
5_generated_password

 

この項はここまで。次回いよいよTembooを動かします。

TEMBOOを使ってみる(1)

「センサーやスイッチの情報をPCやスマホで見たい」

という方は多いと思います。センサー情報を可視化できるXivelyというサービスがあるのですが、ここでは敢えてTembooを使ってみます。

理由はTembooが、Arduinoのサイトで薦めていることもあるのですが、メールを飛ばすとかTwitter/Facebookとの連携から始めて、それができるようになったらGoogle BigQueryのようなセンサー情報を蓄えて後で解析するような用途にも発展できそうだからです。私が目指しているスタートスモールの精神に合っています。

では一番簡単な「Arduinoから一定の時間間隔で任意のアカウントにメールを飛ばす」ことをやってみます。

ゴールまでを大まかに説明すると

(「gmailのアカウントがある」、「Arduino YunをWi-Fiで、またはArduino + Ethernet Shieldで、インターネットにつなぐ環境にある」、ことを前提とします)

(1) gmailの「アプリ パスワード」を取得する

(2) tembooに「Arduinoの情報」、上記「アプリ パスワード」、「飛ばしたいメールアカウント」を入れて、Arduinoのコードを取得する

(3) Arduinoでcompile & goすると指定のアカウントにメールを飛ばし始める

です。次の投稿から実際にやってみます。

ここまで

 

 

TEMBOOのススメ

今まで、4つのセンサー値をmicroSDカードに蓄積する、オフラインのデータロガーを作ってきましたが、そろそろネットワークを使って外部にデータをリアルタイムで飛ばしたくなってきました。

インターネットに出る方法には、コントローラのハードウェア構成から大きく分けて3種類、(1)有線LAN、(2)無線LAN(Wi-Fi)、(3)3G/LTEの携帯網に直接、があります。これらのハードウェアは既に一通り試しており、お客様のご要望に応じてケースバイケースで使い分けができるようになりました。

次に問題になるのは、得られた情報を、(1)どこかに通知しておしまいにするのか、(2)どこかに溜めておいて後から使うのか、です。また、(1)既存サービスを使うのか、(2)自分で構築するのか、も問題でしょう。

ここでは一つの例として、”TEMBOO”というサービスを紹介します。理由は、

(1)gmail/Twitter/Facebookへのインターフェースが簡単に構築できる、つまり通知しておしまい、ができる。

(2)Microsoft Power BI/Google BigQueryへのインターフェースもある。つまりビッグデータを貯めておいて後で処理、ということもできる。

(1)は何かの状態変化を通知する、つまり押しボタン、人感センサー、ドア窓開閉センサーで人が平常に生活している、もしくは異常を発見、という通知をするイメージ

(2)は温度・湿度等のセンサー情報を溜めておいて後で解析するイメージです。

明日以降、実際に使っている様子を説明していくことにしましょう。

今日はここまで。

 

NHKクローズアップ現代

NHKクローズアップ現代にてLIXILの研究所が紹介されています。

ここに伺ったことがあります。EnOceanを使ったセンサー満載です。

 

 

展示会後のフォロー

展示会中にお会いできた方々への訪問を始めています。

そこでいろいろお話したことなど。

まず何といっても情報の発信不足を痛感します。

「EnOceanの製品寿命は?」

「EnOcean無線の特徴は?」

こんな単純な質問に明快に答えられていません。

直にお会いしたときには実物や、事例や、情報源を示したりしながら総合的に理解していただけるよう工夫するのですが、いかんせんネットだけでこれらを理解しようとすると隔靴掻痒の感が否めません。

ネットでも動画やスライドショーなどが使えるので手を変え品を変え理解を深めていただけるよう努力しようと決意した次第。

今日はここまでです。