share facebook facebook twitter menu hatena pocket slack

2018.09.25 TUE

obnizをAWS Fargateから動かしてみた

河村 敏貴

WRITTEN BY 河村 敏貴

obnizというIoTのコントロールボードが面白そうだったので早速購入してみました。
obnizの特徴としては、wifiと小型のディスプレイが内蔵されており、プログラムもWeb上からjavascriptで可能というかなりお手軽なガジェットです。
サンプルプログラムを動かすだけなら、箱から出してwifiに接続し、QRコードをスマホから読み込み開いたweb上からプログラムを実行することが可能です。
Lチカを試そうとしたのですが、今回は技術の無駄遣いをしてみようと思い、あえてAWSのFargateからobnizを操作してみました。
ちなみにnodejsで実行可能なのでLambdaでも実行できます。

準備

obniz x1
Mac(docker環境インストール済み)

手順概要

  • Dockerイメージ作成
  • obnizアプリ作成
  • Fargate設定
  • 実行確認

Dockerイメージの作成

今回はコンテナ上でobnizのアプリを作成してそれをベースイメージとします。
まずはnode環境の準備ととcanvasモジュールが使いたかったのでubuntuベースのコンテナを利用しました。

FROM ubuntu
RUN  apt-get -y update
RUN  apt-get install -y nodejs npm vim git
RUN  apt-get install -y libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev build-essential g++

イメージのビルド

docker build -t obniz_container .

obnizアプリの作成

コンテナにログイン

作成したコンテナにログインする

docker run -it obniz_container /bin/bash

アプリの作成

以下のコマンドを実行してnodeモジュールのインストールとプロジェクトを作成します

mkdir /opt/obniz_test
cd /opt/obniz_test
npm init
npm install system-sleep
git clone https://github.com/Automattic/node-canvas.git
npm install node-canvas

/opt/obniz_testにindex.jsを作成し以下を入力します。OBNIZ-IDは8桁のハード固有の番号を入力してください。
ディスプレイに「Hello Obniz!」という文字列を左から右に延々流し続けるだけのプログラムです。

const sleep = require('system-sleep');
const { createCanvas } = require('canvas');
var Obniz = require("obniz");

var obniz = new Obniz("OBNIZ-ID");
obniz.onconnect = async function () {
    for(var i=0;;i=i+8){
       var canvas = createCanvas(obniz.display.width, obniz.display.height);
       var ctx = canvas.getContext('2d');
       ctx.fillStyle = "white";
       ctx.font = "12px Serif";
       ctx.fillText('Hello Obniz!', i, 40);
       obniz.display.draw(ctx);
       if(i >= obniz.display.width){
            i = 0;
       }
       sleep(500);
    }
}

実行確認

以下コマンドを実行し画面に文字が表示されることを確認します。

node index.js

コンテナイメージの再作成

docker commit {docker ps で表示されるNAMES} obniz_test

ECRにプッシュ

作成したイメージをECRにプッシュしてください。
ECRの作成方法及びプッシュ方法については、【AWS】初めてのECRを参照

Fargate設定

次にFargateの設定を行います。
以下のリンクをクリックして、チュートリアルに沿って作成します。
https://ap-northeast-1.console.aws.amazon.com/ecs/home?region=ap-northeast-1#/firstRun

customを選択し設定をクリックします

コンテナ名を入力し、ecrにプッシュしたイメージのurlを入力します。

コマンドに「/usr/bin/node,/opt/obniz_test/index.js」を入力します。

「次へ」をクリックします。

「次へ」をクリックします。

クラスター名を入力し、「次へ」をクリックします。

設定内容を見直して作成します。

5-10分程度でタスクが実行されます。

タスクが正常に実行されると以下のように、ディスプレイに「Hello Obniz!」と表示され、左から右へ文字が流れていきます。

まとめ

今回は無理やりFargateから動かすということをやってみましたが、正直なところ利用シーンが全然思い浮かばないので全く役にたたない内容だと思いますが、Fargateも試すことができて面白かったです。
obnizは手軽に色々試せるのでかなり面白いコントロールボードだと思いますの。このサイズでディスプレイが付いているのもすごくいいですね。みなさんも是非楽しんでみてください。

元記事はこちら

obnizをAWS Fargateから動かしてみた

河村 敏貴

河村 敏貴

クラウド業界に興味を持ち、業務系のアプリエンジニアからインフラエンジニア見習いに転身しました。日々新しい技術に触れることができる環境でもがきつつも楽しい毎日を過ごしています。 河村 敏貴

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。