LoginSignup
1
0

More than 1 year has passed since last update.

Clovaで「抵抗値換算」のスキルを作ってみる(1)

Last updated at Posted at 2019-04-30

はじめに

ずっと前にやりかけだった(記事には投稿してない)LINE Clovaの「抵抗値換算」のスキルをちゃんと作ってみました。サーバは別記事と同様に「Firebase」を使いました。

「抵抗値換算」について

電子工作に使う抵抗素子には「カラーコード」と呼ばれるものが表示されています。このカラーコードの並びから抵抗値を読み取ることができますが、電子工作に慣れていない人には「カラーコード -> 抵抗値」への変換がすぐには難しいです。そこでこのスキルを使ってClovaの前でカラーコードの色の並びを読み上げて、それを抵抗値に変換したものをClovaに読んでもらうものを作りました。

このスキルでは精密抵抗器を無視した4つのカラーコードの並びで、このサイトの「よく使われる抵抗の一覧表」の抵抗素子に対応します(ArduinoでLEDやセンサを使う場合は1kか10kの数値のものしか基本は使わないかと)。

Firebaseの初期設定

手順についてはこの記事を参考にしてます。

まずはFirebase CLIをインストールします。

npm install -g firebase-tools

-gを使ってグローバルにインストールします。場合によってはpermissionではじかれる可能性もあるのでsudoが必要かも?

次にログインします。

firebase login

ここら辺はターミナルに言われるまま操作すれば問題ないかと。次にプロジェクトを作成します。

firebase init functions

既存のプロジェクトを選択・新しくプロジェクトを作成する、の2択が選べます。

次にFirebaseにデプロイします。

firebase deploy --only functions,hosting

その他の設定

環境変数は以下のコマンドで設定可能です。

firebase functions:config:set clova.extension.id="your extension id"

環境変数の確認は以下のコマンドを用います。

firebase functions:config:get

コード上で用いたい場合は、以下のようにして呼び出します。

const extensionId = encodeURIComponent(functions.config().clova.extension.id);

また、firebase.jsonは以下のように設定しました。

{
    "hosting": {
        "public": "./",
        "rewrites": [{
            "source": "/clova",
            "function": "clova"
        }],
        "ignore": [
            "firebase.json",
            "**/.*",
            "**/node_modules/**"
        ]
    }
}

Clovaの開発について

expressを用いたスキルの開発はこのサイトを参照して行いました。

functions/上で以下のコマンドを用いて必要なpackageをインストールします。

npm install --save https://github.com/TanakaMidnight/clova-cek-sdk-nodejs express body-parser

Clovaの公式SDKを用いない理由はこの記事を参照してください。

カラーコードから抵抗値への変換

まず連想配列を用意しました。色をkeyに対応する数値をvalueに設定してます。

const colorcodes = { :0, :1, :2, :3, :4, :5, :6, :7, :8, :9 };

抵抗値の計算は以下の式で求めます

RegistorValue = (FirstColor\times 10 + SecondColore) \times 10^{ThirdColor}

FirstColor ~ ThirdColorは「金」を最終端としたときの各色です。

進捗

このスキル開発の記事は何回かに分けて投稿します。とりあえず今回はスキル起動時のメッセージのレスポンスと、「カラーコード -> 抵抗値」まで実装しました。こんだけの内容に今日の一日のほとんどを費やしましたw(カラーコードからの変換をCloud Firebaseを使ってやろうとしたけど非同期処理をうまく操れなかったとか、Clovaの公式のSDKとexpressの相性の悪さで悩むとか)また、Clovaのテストは今日はClova Developer Centerのテスト機能を用いました。

起動時の挨拶

こんな感じです。
てすと1.jpg

カラーコードから抵抗値への変換

こんな感じです。
てすと2.jpg

今後やりたいこと

  • 「抵抗値 -> カラーコード」への変換
  • 1000以上の抵抗値をキロ読みにする
  • 「カラーコードの覚え方」のインテントを作る

さいごに

レポジトリ公開してます。GWまでには完成させたいです。そしてTシャツ欲しいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0