Androidのメモとか

ポキオの日記です。今日も遅延してない。

ESPr Developerでハマった事のメモ

久しぶりのESPr。

ESPr Developer ESP8266

ESP-WROOM-02開発ボード

ESP-WROOM-02開発ボード

  • スイッチサイエンス(Switch Science)
Amazon

ハマったこと①:Macからバイナリを流し込めなかった話

以前、MacからESPr Developerにコードを書き込もうとした事がありましたが、何故か書き込むことができず、それ以来ESPr Developerは放置して他の野良なESP8266ボードで開発していました。

relativelayout.hatenablog.com

ATコマンドは打てるので、MacからESPr Developerを認識できていると思うのですが、いざコードを流し込もうとすると、

warning: espcomm_send_command: cant receive slip payload data

みたいなエラーが発生して、書き込めません。そんな時はESPTOOLを使うと上手く書き込めるそうです。

結局、そのときはESPTOOLも有効な解決策になりませんでした。で、スイッチサイエンスさんのサイトを眺めていたら・・・

ESPr® Developer(ESP-WROOM-02開発ボード)www.switch-science.com

モード切替ボタンはIO0番ピンにつながっています。ボタンを押すとIO0がLOW、放すとIO0がHIGHになります。IO0がHIGHの状態でリセットされるとファームウェアの実行モードで起動しますが、IO0がLOWの状態でリセットされるとファームウェアの書き込みモードで起動します。

ファームウェア書き込みモードは電気信号的になされるものだと思ってましたが、ボタン操作によって書き込みモードにできるんですね・・・。ということは、Arduino IDEから書き込む前に、ボタン操作で書き込みモードにしてあげれば良いんじゃね?と思い試してみました。結果はOK、モード切替ボタンを押してからリセットボタンを押して、コードを流し込むと、問題なく書き込むことができました。今までの苦労は何だったんでしょうか。まぁ、いいや。これからはESPr Developerを可愛がっていこうと思います。

ハマったこと②:ESP8266でマイコン内蔵LEDが光らせることができなかった話

akizukidenshi.com

このあたりのLEDを扱う時に便利なのがAdafruitのNeoPixels ライブラリになるわけですが、どうもESP8266からは上手く動作せず、Arduinoからは動作できていました。もしかして、3.3V駆動が原因で動かなかったのかなと思い、レベル変換モジュールを秋月で買って色々やってみたものの、上手く行かず途方にくれていました。

ESP8266 NEOPIXELS

これもしょーもない理由が原因だったんですが、ローカルにあったライブラリのバージョンが古く、Arduino IDEのライブラリマネージャーで最新のライブラリを取得してコンパイルしてESP8266に流し込んだところ、フツーにピカピカできました。しかも3.3Vのままでも動作しちゃってます。本当はアレだと思うんですが、動いてるのでこのまま開発しようと思います・・・(笑)

というわけで

くだらないトラブルに相当な工数を割いてしまいましたが、これでようやくESPr Developerで開発できそうです。

iotlt.connpass.com

3月末のIoTLTさんで登壇させていただけそうなので、当面はそれに向けてガジェットを作成しようと思います。乞うご期待。

www.instagram.com

チカチカー。

いまさら聞けないIoTの基礎とビーコン規格 に行ってきました

メモ書き。

japan-android-group.connpass.com

いまさら聞けないIoTの基礎とビーコン規格

いまさら聞けないIoTの基礎とビーコン規格

会場:川崎市産業振興会館(9階第3研修室)

  • 京急川崎駅から歩いて5分くらい
  • いわゆる地区の建物と言った感じ、すこしお硬いイメージ
  • プロジェクターで投影している画面が小さくて辛い
  • 年齢層高め、スーツ率高い
  • 某弊社社員も数名
  • 19時スタートだったが、結構ガラガラ

講師の鈴木さん

http://www.houwa-js.co.jp/index.php/ja/www.houwa-js.co.jp

  • 株式会社芳和システムデザイン
  • バイスからクラウドまでやっている会社
  • セミナーを多数やっているらしい

IoTとBLE

  • 2013年にAppleがiBeaconをリリース

    • オライリーが従来提唱してきたIoTと言うのは、パソコンがインターネット経由でマイコンを制御することだった
  • 2014年ころは実証実験が多かった、2015年後半から一般利用されるように

    • JRや江ノ電などで、O2O目的で使われている
    • その場合は、各々公式アプリで楽しめる
    • M2M(工場などでの活用)用途でも使われ始めている
    • 在庫管理、安全管理
  • 農業でも使われ始めている

    • バイスが畑に落ちても大丈夫なようにするのが難しい
    • 温度・照度・湿度は普段からわかっている
    • すべてをオートメーション化したり、室内生産するユースケースでは有用と見られている
    • むしろ、いつ収穫すればいいのか、いつなら高く売れるかのほうが農家は欲しがっている
  • なぜBluetoothなのか

    • スマホにもBluetoothが普及、キーボードやマウスでも多く使われている
    • Wi-Fiはインターネット回線として使うため、BluetoothがIoT向けに使われることが多い
    • BLEビーコンは安価である(1800円〜、Wi-Fiに比べても安い)
    • ビーコンとゲートウェイから構成される

Bluetoothのバージョン

  • バージョン

    • 3.0からHigh Speedが登場したが、ほとんど使われていない
    • 4.0からBLEが登場、低消費電力(いまはこれがメジャー)
  • BLE(Bluetooth Low Energy)

    • Nokia発祥の規格、後にBluetooth SIGが採用
    • BLEとLegacyは互換性がない
    • LegacyはMPUとICが別だった、BLEはワンチップで実装されている
  • 用語

    • BLEではCentralとPeripheralという2つの役回りがある
    • Peripheralがビーコン、スマホは基本的にCentral
    • 定期的にPeripheralが発信する信号をアドバタイジングと呼ぶ
    • Centralにはロガーやゲートウェイも含まれる
    • ペアリングは1対1
    • ペアリング後にアドバタイズを吹き続けることも実装次第ではできる
  • Bluetooth SIG(Special Interest Group)の方針はころころ変わる

    • エンドプロダクト登録料の有料化
    • もともとBLEはBluetooth Smart、両対応のものはBluetooth Smart Readyと謳っていたが、現在ではSmartという表記は廃止されている
  • 実環境での話

    • BLEとWi-Fiは干渉する(BLEがWi-Fiの周波数帯を避けている)
    • BLEは電子レンジとも干渉する(業務用だと干渉することもあるが、そこまで大したことない)
    • 900人が同時に同じアドバタイズを受信できた実績があある
    • 30〜60mくらい届く

iBeacon

  • 2013年に登場
  • Apple独自のフォーマットでデータを送信するデバイス
  • OSがiBeaconの電波を受信する
  • 送信間隔が100msのため消費電力が大きい
  • 72時間後も同じデータを送信していることが規定されている
  • たまに送信間隔をのばしているものがあるが、いつBANされるかわからない

Linking

  • NTT docomoが主体で進めている規格
  • Linking対応デバイスと対応アプリをつなぐLinkingアプリが存在する
  • バイスに連動してアプリにデータを送ったりできる
  • アプリはAPI、デバイスメーカーは規格にそって作成すればいい
  • BLEでは種々のセンサー類との通信向けにプロファイルのようなものが予め規定されている
  • アドバタイズの送信間隔を決められるので低消費電力
  • アドバタイズもペアリングもできる

Eddystone

  • 2015年に登場
  • もとは2014年に登場したPhysical Web
  • 基本的にアドバタイズのみ

  • フレームタイプ

    • TLM:バッテリー情報の送信(IDがないので、UIDなどと組み合わせて使う)
    • UID:ユニークなIDの送信(iBeaconと同様)
    • URL:URLを送信(Chromeが対応、専用アプリ不要)
    • EID:暗号化されたデータを送信

HomeKit

  • 2014年にAppleが発表
  • 電気・鍵・暖房などをコントロール
  • 最初は暗号化がなかったので、他人のデバイスをコントロールできてしまった
  • その後、暗号化対応などが行われた(未だにゆるいそう…)

  • MFiに参加できた会社のみが仕様が見られる、参加しないとデバイスが作れない

  • PhilipsのHueはSDKを公開していたりしているので、Androidでもつかえる

  • アドバタイズはできるが、存在していることを伝えるだけ

Ucode

  • 国土地理院が主体で進めている
  • Beaconで緯度・経度・高度を伝える
  • 国土地理院に場所を申請すると、IDが振られてその場所の位置情報が送信できる
  • 申請できる企業は限られている
  • 送信間隔は柔軟に設定できる

ポイント

  • アドバタイズ送信間隔が短いと消費電力が多くなる、規格で決められていると変更できない
  • アドバタイズは誰でも受け取ることができる、セキュリティを気にするのであれば暗号化に対応している方式を選ぶこと
  • データの送受信を行うのであればペアリングができる方式に絞られる

その他の規格

  • LINE Beacon(2016年〜)
  • CSRmesh (2014年〜)

  • Bluetooth IPS Bluetooth 4.2/5.0

    • IPv6をサポートして、通信できるようにした
    • GW・Router・Nodeかななる
    • GWやRouterではRAMが大量に必要になる、消費電力も高くなる

実動作時の問題、ビジネスの話など

  • 電池駆動は低温に弱い(乾電池で0度以上、リチウムで-15度以上)

  • 赤字になることが多い

    • 駅に納品しても赤字(ビーコンひとつひとつは安価で、個数も出ないため)
    • 工場への納品の場合、ユースケースによっては社員一人一人にビーコンをもたせたりする上に、工場も何箇所かあると、ビーコンの納品数も上がり儲かりやすい
    • 従業員の移動のムダを発見すると、即生産性に直結するケースが多い
    • ただし、工場に納品しても、その企業のプレスリリースに乗るわけではないので宣伝にならない
    • 農業はあまり儲からない、露地栽培ではセンサーの必要性があまりないらしいのと、富◯通がやりつくしているらしい

実際のデバイス

様々なビーコン。

いまさら聞けないIoTの基礎とビーコン規格

送信間隔が短い規格や、そういったビーコンは消費電力が大きくなるため、バッテリーを増やしたり大きくしないと、数年オーダーで動作することが難しくなる。

いまさら聞けないIoTの基礎とビーコン規格

ソーラーパネルでビーコンを動かすデバイス

いまさら聞けないIoTの基礎とビーコン規格

基本給電無しで動くが、照度が足りない際はボタン電池で駆動する。

Google Apps Scriptを使ってビットコインの価格を定期的にLINEに通知する

今更Google Apps Scriptに感動。

無料でスクリプトを定期的に走らせる

developers.google.com

スクリプトを定期的に実行したいと考えた時に、あるマシン上でCronとかスケジューラを使ってスクリプトを走らせるのも良いが、そのマシンの電源は切れなくなるし、かと言って有料のサーバーを借りるほどでもない。そんなときはGoogle Apps Scriptが便利っぽい。とりあえず、今回は最近マイブームのビットコインを絡めたスクリプトを書いてみる。

bitflyer.jp

ビットコインに関しては、bitFlyerが公開APIを無料で提供しているので、これを使ってみることにする。

1時間おきにビットコインの取引価格をLINEに通知する

ビットコインの価格は最近乱高下しているので、そのトレンドをいち早く知るために、スクリプトを書いてみる。ブロック図はこんな感じ。 IFTTTのMaker Channelのおかげで、簡単にLINEに通知を送ることができます。

Google Apps Script IFTTT Bitcoin bitFlyer

Google Apps Scriptはブラウザ上でコーディング・デバッグ・実行できます。言語はJavaScriptベースのようです。

Google Apps Script IFTTT Bitcoin bitFlyer

こんな感じで実装。

var iftttUrl = "https://maker.ifttt.com/trigger/xxx/with/key/yyy";

function myFunction() {
  if(!isNotifyAvailable()){
    Logger.log("notify not available...");
    return;
  }
  
  var message = "Bitcoin価格 : " + getCurrentPrice() + "JPY";
  sendLineNotify(message);
}

function getCurrentPrice(){
  var url = "https://api.bitflyer.jp/v1/ticker";
  var response = UrlFetchApp.fetch(url);
  var responseJson = JSON.parse(response.getContentText());  
  return responseJson.ltp;
}

function sendLineNotify(message){
   var payload =
   {
     "value1" : message
   };

   var options =
   {
     "method" : "post",
     "payload" : payload
   };

   UrlFetchApp.fetch(iftttUrl, options);
}

function isNotifyAvailable(){
  var date = new Date();
  var utcHours = date.getUTCHours();
  var ret = 21.0 <= utcHours || utcHours <= 14.0;
  return ret;
}

HTTPのGETやPOSTはXMLHttpRequestではなく、UrlFetchAppを使います。また、夜中に通知されるのは嫌なので、UTCで21時台〜14時台(JSTで6時台〜23時台)に限定しています。で、このスクリプトを定期実行するために、トリガーを設定します。

Google Apps Script IFTTT Bitcoin bitFlyer

とりあえず1時間おきに実行してみます。

いざ実行

いい感じ。

Google Apps Script IFTTT Bitcoin bitFlyer

こんな感じでLINEに通知が届きます。 Google Apps ScriptはGoogleのサービス(Gmail、Calendarなど)との親和性もかなり高いので、その観点でもかなりポテンシャルが高いです。

IoT縛りの勉強会! IoTLT vol.24 @ ドリコムに行ってきました

今回もお邪魔してきました。

iotlt.connpass.com

場所は目黒雅叙園の隣!

デブサミでお世話になった目黒雅叙園。その隣のビルのドリコムさんが今回の会場です。

relativelayout.hatenablog.com

目黒は便もいいし、オシャレなオフィスも多いし、川沿いに小道もまったりしてて本当にいいところです。

ドリコムさんもおしゃれ!

こんな大人数の勉強会が開けるだなんて素晴らしいし、兎に角オフィスがオシャレでした。

気になったLTのメモ

さて、色々LTがありました。かなり雑ですが、個人的に気になったものをメモしておきます。

Waffle

speakerdeck.com

@shanonimさんの発表で気になったのが「Waffle」。僕の認識では、Android端末でUSB OTGで(直接)接続できるArduino。Groveシステムに準拠しているので、はんだ付け不要で色んなセンサーをくっつける事ができるスグレモノ。

relativelayout.hatenablog.com

僕も以前、力づくで同じようなことをしたことがあります。ただ、物理的にArduinoを直挿しできるのと、Groveシステム準拠はちょっと胸熱。みんなきっと使わなくなったAndroid端末なんて数十個オーダーで持ってると思うし、Androidエンジニアにとって見れば、ネットワーク関係の実装はJavaで出来てしまったほうが楽ちんである。ただ、OTGでWaffleを繋いでしまうと、スマホの給電をどうするんだ話が発生する。そのためのqiか。

ドローイング

山田さんのLT。お腹をへこませるためのガジェット。へこませるのをやめると、ガジェットからフィードバックがあり、持続的に凹ませることができるとのこと。

matome.naver.jp

ソースがNaverで申し訳ないんですが、このお腹をへこませる行為はドローイングというらしく、実際にダイエットができるという。もはやIoTではないところが気になってしまったが、ちょっと僕もやってみたい・・・

LINE Beacon

古田さんのLT。Raspberry PiでもLINE BEACONのエミュレーションができるようになったみたいです。

https://engineering.linecorp.com/ja/blog/detail/117engineering.linecorp.com

とはいえ、ちょっと制約があるようです。

LINE Beaconには他にも、ビーコンデバイスに近づいたらバナーを出すといった機能もあるのですが、LINE Simple Beaconはセキュアでないため提供ができません、申し訳ないです!逆に、専用デバイスを使ったLINE Beaconでは実現できない、LINE Simple Beaconならではの機能を今後盛り込んでいく予定なので、乞うご期待ください!

ほう、でもちょっとLINE BEACONのハードルが下がったような。

relativelayout.hatenablog.com

そういえば、LINE BEACONってLINE DEV DAYで貰ったっきりなにもやってないなぁ・・・(震え声)

Web Bluetooth API

これはちょっとテンション上がった。

log.niccol.li

ウェッブ上で実装できれば、もうそれすなわちクロスプラットフォーム!うわぁ、ちょっと惹かれます。きっとデバイス依存のアレとかアレとかいっぱいあるんでしょうけど・・・。とりあえず勉強してみたいなぁ。

コンドームIoT

芝浦製作所(後の東芝の重電部門)の創業者である田中久重も「人々に役立ってこそ技術」と言ったように、我々も時に人の役に立つIoTガジェットを作ってみたいものです。これも役に立つガジェット。きっと。

speakerdeck.com

ユースケースはかなり絞られていますが、身近なチップ・パーツで社会的な(?)問題を解決できるのは素晴らしいです。

その他

IoTLT

CHIBI BITを持ってきてる人も居たり。

IoTLT

樹脂でパーツを量産してる人も居たり。

IoTLT

自立する戦車で下から上を撮影するアレなアレがあったり。

というわけで

来月も予定があえばお邪魔します!

デブサミ2017に参加・展示して気づいたあれこれ

前回は、展示して頂いたコメントをメインで記事にしました。

relativelayout.hatenablog.com

今回は、気づいたことをちょっとメモっておきます。

使ってみたいmBaaS(っていうんですかね)

devsumi2017

隣で展示してたAnbient。ちょっとまえから気になっていました。

mackerel.io

ArduinoとかESP8266が流行ってて、簡単にセンサーで色んな情報を取ることができるようになりました。ただ、その情報を簡単に可視化するのは結構難しいです。特に、僕みたいにウェッブなエンジニアリングが苦手な人間にとってみれば、苦行でしかありません。そこで、上記のサーヴィスを使えば、簡単に無料で情報を可視化することができます。

プラレールで2進数カウンタ

devsumi2017

人生、無駄を省くことは大切かもしれません。でも、全く無駄のない人生は楽しいのでしょうか?

この展示ではプラレールのポイントレールの曲がる方向を0と1を表していて、プラレールが走ると0b000から0b111という感じで増えていきます。(もしかすると、4bitカウンタの間違いでした。ゴメンナサイ。)

誰の得になるのか。何かの役に立つのか。そういうのはいいんです。作ることが素晴らしいし、発想も素晴らしい。バジェット出してくれる会社も素晴らしい。

ExcelCreater

www.adv.co.jp

www.adv.co.jp

JavaC#からExcelファイルが作成できるプラグインのようなもの。Excelと雁字搦めになったプロジェクトや会社ではかなり重宝しそうな予感。Excelはわりと最強なアプリであり開発環境であったりしますが、Excelから離れてGoogle Spreadsheetとかで代用できれば、こういうツールは不要だったりするんですよね。(まぁ、それができないからExcel使ってるんですよね)

つい買っちゃうオライリー

devsumi2017

会場では、翔泳社さんとオライリーさんの本を安く買うことができます。

www.instagram.com

僕もついつい、「Make: Electronics ―作ってわかる電気と電子回路の基礎 」を買ってしまいました。定価から10%オフ、そして消費税分も割引。かなり安く買えました。

デモにはトラブルはつきもの

一応、会場のAPが有ったので、それ経由で通信するコードに、その場でライブコーディング。モバイルバッテリーでも動くように、ESP8266のDEEPSLEEPも封印し、delay()でLoopするように変更。

#include <ESP8266WiFi.h>
#include <WiFiClient.h>

char ssid[] = "会場のSSID";
char password[] = "会場のPASSWORD";

char unkopage[] = "unkou.keikyu.co.jp";
int led = 14;
int intervalSec = 10 * 60;

void setup() {
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);

  Serial.begin(115200);
  Serial.println("");
}

void loop() {
  connectWifi();
  String result = getPageSource();
  Serial.println(result);
  disconnectWifi();

  if (result.indexOf("unko-panel") < 0) {
    Serial.println("取得エラー");
    delay(5000);
  } else if (result.indexOf("平常") < 0) {
    Serial.println("遅延してるかもしれません");
    blinkLed(intervalSec * 1000, false);
  } else {
    Serial.println("平常通り運転してます");
    //    ESP.deepSleep(intervalSec * 1000 * 1000, WAKE_RF_DEFAULT);
    delay(intervalSec * 1000);
  }
}

void connectWifi() {
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    blinkLed(1000, true);
  }

  Serial.println("connected!");
}

void disconnectWifi() {
  WiFi.disconnect();
  Serial.println("disconnected!");
}

String getPageSource() {
  WiFiClient client;

  if ( !client.connect(unkopage, 80) ) {
    return String("");
  }

  client.print(String("GET ") + "/" + " HTTP/1.1\r\n" +
               "Host: " + unkopage + "\r\n" +
               "Range: bytes=8000-9000\r\n" +
               "Connection: close\r\n\r\n");
  client.println();

  delay(1000);

  String body = "";

  while (client.available()) {
    body += client.readStringUntil('\r');
  }

  return body;
}

void blinkLed(int msec, boolean fast) {
  int totalTime = 0;

  while (totalTime < msec) {
    int onTime;
    int offTime;

    if (fast) {
      onTime = 5;
      offTime = 95;
    } else {
      onTime = 5;
      offTime = 995;
    }

    digitalWrite(led, HIGH);
    delay(onTime);
    digitalWrite(led, LOW);
    delay(offTime);
    totalTime += onTime + offTime;
  }
}

なかなか会場のWi-Fiが詰まり気味だったりして、情報が取りづらい状態になることもありました。そして・・・

京急が全然遅延しないという事態。いや、遅延しないのはいいことなんですが、肝心のLEDが全然光りません。デモ的にはちょっとアレでした。

やっぱり光り物は強い

マシコムさんのウクレレとか、ギャル電さんとか、本当にキラキラしてました。

devsumi2017

www.instagram.com

やっぱり、光るとインパクト強いですしね、オーディエンスも必然的に多くなります。ちょっとうらやましいですね。京急も光り方が弱いんですかね・・・。

どうでもいいこと

devsumi2017

  • 目黒の天狗(居酒屋)はいい
  • 名刺を忘れてはいけない
  • デブサミの参加登録を忘れてはいけない
  • 雅叙園Amazonオフィス(アルコタワーアネックス)のエスカレーター経由で行くと、坂道を登ったり下ったりしなくて済む
  • 品川⇔目黒は都営バスが走ってる
  • 品川⇔雅叙園は無料シャトルバスが走ってる

www.megurogajoen.co.jp

デブサミ2017に初参戦&コミュニティ展示してきました

デブサミ」に行ってきますって職場で言ったら、「デブばっかり来るのか、暑苦しいな」と言われました。半分あってますが、半分間違ってます。

event.shoeisha.jp

Developer Summit 2017

デブはもちろんデベロッパーのことで、色んなセッションや展示がある、デベロッパーのためのお祭りのようなものです。会場は目黒雅叙園叙々苑かなにかと思ってましたが、実は結婚式場らしいです。

先輩に雅叙園に行ったらトイレに行け」などと謎なことを言われ、全く理解できませんでしたが、実際に行ってみると・・・

雅叙園

トイレに小川が流れてる・・・

雅叙園

個室はまるで竜宮城・・・

雅叙園

天井を見ると金色の屏風のようなものが・・・

なんかすごいところに来てしまったようです。

コミュニティ展示として参加

event.shoeisha.jp

毎度お世話になっているIoTLTさんのメンバーとして参加させていただきました。展示するネタは・・・例の京急ネタです(笑)

speakerdeck.com

relativelayout.hatenablog.com

ありがたい機会を頂き、ちょっと浮かれていたせいで、デブサミ自体の参加登録を忘れてしまうというハプニングもありました(笑)

Developer Summit 2017

とりあえずコミュニティ展示用のパスを頂き、取り敢えず入場・・・。

Developer Summit 2017

当日登録もさせて頂き、なんとかパスをいただきました。

展示開始

こんな感じで展示。 会場でWi-Fiが準備されていたので、その場でコーディングして、会場のAP経由で通信するように修正しました。

Developer Summit 2017

頑張って、看板やらフライヤーも作ってみました。結果的に大成功で、色んな人が展示を見ていってくれました。

Developer Summit 2017

展示スペースは休憩室の一角をお借りする形になっていまして、定常的に人が見に来ているような感じです。特にセッションとセッションの間は、写真の数倍以上の人が押し寄せてくる感じでした。セッションを途中で聞きに行こうかと思ってましたが、ちょっとそんな余裕がなかった印象です。ただ、お名刺をいただく機会が多々あったものの、名刺入れを忘れてしまって・・・痛恨のミスです。

とはいえ、たまに暇になったりするので、色んなブースを眺めたり、デブサミ缶バッチを買ったり、ぶらぶらしてました。

Developer Summit 2017

どんな缶バッチかというと・・・

Developer Summit 2017

デベロッパーにはたまらない缶バッチですね。

www.instagram.com

和気あいあいと展示(笑)

展示で頂いたコメント

JRもほしい、田園都市線もほしい

ごもっとも。JRの振替輸送受託のせいで京急が遅延することがしばしばあるので、JRの遅延も監視できると嬉しいかも。あとは、遅延が定常的に発生する路線とかだと、「うわーまたかー」みたいな感じでわかって嬉しい(?)のかな。

JRによる遅延なのか分かると良い

そうですね、JRの振替輸送(ry

遅延の理由によって光らせ方を変えたり、本線・空港線大師線逗子線久里浜線の何処で遅延しているのか、判断できれば夢が広かるかもしれません。

どういう使い方をするのか?

最近はオフィスのディスプレイの上に置いています。仕事が一段落して帰ろうかなと思ったときに、チカチカ光ってたりすると、「もうちょっと残業していくか・・・」となるわけです。

基盤剥き出しも味がある

ありがとうございます。個人的なモットーは「最小の工数・クソコードで、クオリティをなるべく最大化する」ことなので、あまり外観には凝ってません・・・。3Dプリンターに精通した方で、外装を作ってくれるような優しい方がいらっしゃいましたら、ご連絡下さい!完全に他力本願でございます。

クソコードですね!

はい。だれかAPI切って下さい・・・。

いくらくらいでできるの?

だいたい1000円以下でできます。

  • ESP8266開発ボード(大体400円@eBay)
  • カプセルプラレール(大体200円)
  • Arduino Holder(余所行き用、5枚で1000円位。1枚200円)
  • ジャンパワイヤ・LED(タダ同然)

音(ドレミファインバータ)がほしい

ですよねー。ちょっと検討します。

というわけで

立ちっぱ疲れました。ビール飲みたいです。

気になった展示等、色々あったので、おいおいブログに書こうと思います。

日本Androidの会 2017年2月定例会「Android Things」に行ってきました

Android Thingsは、なんとなく興味があるものの、そこまで本格的に手を付けられていないので、いい機会だと思い聞いてきました。

japan-android-group.connpass.com

場所は六本木ヒルズ

六本木ヒルズ

職場も同じ港区の品川ですが、六本木は行き交う人のクオリティが全く違う、お洒落な大人の街です。自分には不釣り合い過ぎてアウェーな感じを味わいました。会場のGoogleさんは六本木ヒルズの中。トップオブアウェー。

グーグル

グーグル!

聞いてきた内容のメモ

Android Thingsとは

  • 2016年に発表されたAndroidをベースとしたOS
  • Raspberry Piなどで動作可能なくらい軽量である(電話など、IoTに不必要なものは削ってある)
  • 現在、Preview版としてリリースされている

Android Thingsの特徴

  • 単一のアプリしか動かない
  • Things Support Libraryを使うことでGPIOやSPI/I2Cなどの入出力が扱える
  • コンテントプロバイダや、インテントなどは存在しない
  • 基本的にディスプレイは不要(一応GUI操作はサポートされている)
  • HomeActivity :唯一のアクティビティ
  • Google Servicesの一部はつかえる(UI系は一切使えない)
  • UIがないのでRuntime Permissionはなく、Manifestに書けばオッケー
  • Notificationはない

要は、Androidと同じようにJavaで開発できて、UIも作ろうと思えば簡単に作れて、さらにGPIOも扱える、と。そんな感じでしょうか。定例会中で行われていたデモは、かなり初歩的な内容だったので割愛。

[asin:B01CCOXV34:detail]

Android Thingsってどうなの?

プロトタイピングだったり、電子工作だったり、そういうものを作りたいと思えば、今は簡単にできてしまう時代である。それ故に、わざわざAndroid Thingsを使う必要があるのか、何が嬉しいのか、ちゃんと理解した上で使いたい。

(スマホだと表が正しく見られません。ごめんなさい。)

- Android Things
on ラズパイ
Android
スマホ(アプリ)
Raspbian
on ラズパイ
ESP8266 Arduino
値段
主な言語 Java*1 Java*2 Pythonなど Cっぽい言語 Cっぽい言語
GUI
XMLで簡単につくれる

XMLで簡単につくれる

Qtとかちょっとだるい

基本UIなどない*3

基本UIなどない*4
GPIO
バッテリー
消費電力多

バッテリー内蔵だけど・・・

消費電力多

低消費電力

低消費電力
Wi-Fi
内蔵

内蔵

内蔵

内蔵

内蔵してない*5

個人的な主観が入り交じった表を書いてみた。やっぱりAndroid Thingsの肝はGUIが簡単に作れるというところなのだろうか。とはいえ、Android ThingsでのGUI無くても良いというスタンス。GUIが要らないならAndroid Thingsをわざわざ使う必要って・・・Javaが好きとか?(笑)Google Services系が使えるのはアツいのかな。

ESP8266は基本的にディスプレイを使わない用途が多いが、データを上げて、それがWeb上で見られれば良いようなユースケースだったらペインにはならないだろう。結局、何がしたいかによって、何を使うべきなのか変わるし、まぁ好きなの使えよっていうことなのかしら。

(いやいや、こういうユースケースだったらAndroid Things最強でしょ、みたいなのがあれば教えてください)

というわけで

とはいえ、Android Things使ってみたいですね、とりあえず。諸事情でRPiが手元からいなくなってしまったので、だれかRPiくださいたのむ。

developer.android.com

*1:クロスプラットフォームな開発ツールをつかえば、どんな言語でもイケる

*2:クロスプラットフォームな開発ツールをつかえば、どんな言語でもイケる

*3:ディスプレイとか売ってるけど、難しい描画とかは無理

*4:ディスプレイとか売ってるけど、難しい描画とかは無理

*5:内蔵してるやつもあるけど

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。