編み物とClovaでクリスマスをわいわい迎える ~ スマートスピーカーAdvent Calendar 2018 19日目

こんにちは、スマートスピーカー Advent Calendar 2018 - Qiita の19日目の記事です。
わいわいクリスマスをしていこうと思います。
f:id:ozyozyo:20181218215303p:plain

とりあえず成果物見てください!


編み物とClovaでクリスマスをわいわい迎える ~ スマートスピーカーAdvent Calendar 2018 19日目

Clovaに話しかけると、クリスマスツリーがチカチカして、クリスマスまでの日数を教えてくれます。
スキルを使わずに、呼びかけた時からチカチカするのが頑張りポイントです。

全体の構成

「ねぇClova」って言う

Clova Friendsの下のライトが光る

センサーで検知して、ツリーをチカチカ

「クリスマスカウントダウンを開いて」って言う

スキルで、シャンシャン音を流して残り日数を発話しつつ、ロゴがくるくる

制作の流れ

クリスマスツリーの土台をつくる

まずは、全体の基盤となるクリスマスツリーを実装します。
毛糸は8号、かぎ針編みです。

  • 1段目: 輪を作り5目の細編み
  • 2段目: 立ち上がりの鎖編みのあとに、そのまま5目の細編み
  • 3段目: 立ち上がりの鎖編み2回のあとに、目を増やして8目の長編み
  • 4段目: 立ち上がりの鎖編み2回のあとに、目を減らして4目の長編み
  • 5段目: 立ち上がりの鎖編みのあとに、4目の細編みで蓋をします

// バランスを見てLEDを飾り付けて、綿を詰めます

  • 6段目: 立ち上がりの鎖編み2回のあとに、8目の長編み
  • 7段目: 立ち上がりの鎖編み2回のあとに、16目の長編み
  • 8段目: 立ち上がりの鎖編み2回のあとに、24目の長編み
  • 9段目: 立ち上がりの鎖編み2回のあとに、12目の長編み
  • 10段目: 立ち上がりの鎖編み2回のあとに、6目の長編み
  • 11段目: 立ち上がりの鎖編みのあとに、6目の細編みで蓋をします

// バランスを見てLEDを飾り付けて、綿を詰めます

  • 12段目: 立ち上がりの鎖編み2回のあとに、12目の長編み
  • 13段目: 立ち上がりの鎖編み2回のあとに、24目の長編み
  • 14段目: 立ち上がりの鎖編み2回のあとに、36目の長編み
  • 15段目: 立ち上がりの鎖編み2回のあとに、54目の長編み
  • 16段目: 立ち上がりの鎖編み2回のあとに、18目の長編み
  • 17段目: 立ち上がりの鎖編み2回のあとに、9目の長編み

// バランスを見てLEDを飾り付けて、綿を詰めます

蓋閉め前に、LEDをつけて綿を詰めておかないと、後々厄介なのでLEDごと編み込んでいきましょう。
これで、ツリーの土台が出来上がりです٩(๑❛ᴗ❛๑)۶!

( ( 新しい生命体かな・・・? ) )

Clova Friendsが光ったことをカラーセンターで検知して、ツリーをチカチカさせる

Clovaが起動したことの検知のベストプラクティスがまだ無いのですが、今回はカラーセンサーで検知することにしました。

from CsCntlr import *
from time import sleep
import RPi.GPIO as GPIO

def pika():
  GPIO.setmode(GPIO.BCM)
  #ツリーは25に刺さってます
  GPIO.setup(25, GPIO.OUT)
  GPIO.output(25, GPIO.HIGH)

def pikapika(n):
  for i in range(n):
    pika()
    sleep(0.3)
    GPIO.cleanup()
    sleep(0.3)

if __name__ == "__main__":
    cs = CsCntlr()
    cs.useFixedPeriodMode()
    invocated = False
    while True:
      cs.cntlr.auto(gain='low', tint=2)
      print (cs.cntlr.getData())
      # みどり色が50以上になったらピカピカ
      if cs.cntlr.getData()['green'] > 50:
        if invocated:
          continue
        invocated = True
        pikapika(10)
      else:
        invocated = False
        GPIO.cleanup()
      sleep(1)

こちらの記事を拝見してライブラリをお借りしました。ありがとうございます。
S11059-02DT モジュールをラズベリーパイで使用する - Qiita

クリスマスカウントダウンスキルを実装

Clovaのスキルを作ります!Clovaのスキルはとっても簡単に作れちゃいます。
スキルの作り方のドキュメントは幸せなことにたくさんあるので今回は割愛します!
ここに私史上最高に丁寧に書いたClovaのスキルの作り方ドキュメントはございますので、ご参考ください。
初めてのClovaスキル開発 | ClovaスキルからMessaging APIでのLINE送信、LIFFまで

今回はAWS Lambdaを利用しました。Layerが便利すぎて最高!
クリスマスカウントダウンスキルのコードはこちらです。

const clova = require('@line/clova-cek-sdk-nodejs');

exports.handler = clova.Client
  .configureSkill()
  .onLaunchRequest(async responseHelper => {
    let speechList = [];
    speechList.push(clova.SpeechBuilder.createSpeechUrl('シャンシャンサウンドのURL'));
    speechList.push(clova.SpeechBuilder.createSpeechText('サンタさんが来るまで、あと' + calculateRemainingDate()  + '日。素敵なクリスマスを。'));
    responseHelper.setSpeechList(speechList);
    responseHelper.endSession();  
  })
  .onIntentRequest()
  .onSessionEndedRequest()
  .lambda()

function calculateRemainingDate() {
   var nowDate = new Date();
   var nowTime = nowDate.getTime();
 
   var xmasDate = new Date(nowDate.getUTCFullYear(), 12 - 1, 25);
   var xmasTime = xmasDate.getTime();
 
   var diff = Math.ceil((xmasDate - nowTime) / (1000 * 60 * 60 * 24));
   return diff > 0 ? diff : 0;
}

Extension IDの検証をSkipしてしまっているので、実際に使うときはこちらのImajoさんの記事を参考にして検証してください!
Clovaの公式SDKがLambdaで使えるようになっていたので試してみた。 - Qiita

Clovaロゴをくるくるさせる

せっかくなので、Clovaロゴをくるくる回しておきます。
ロゴはシンプルなお花モチーフの花びらを減らして4つで編めばできます!
お花モチーフ例: https://atelier.woman.excite.co.jp/creation/5222.html

サーボモーターを残った毛糸で固定して糸の処理をします。

obnizを遠隔で叩いてみたかったばっかりに、くるくるは唐突にobnizで実装しました。
ちなみにクリスマスカウントダウンはスキルストア公開済みのスキルなので、誰かが使ってくれると私の部屋でClovaロゴがくるくるしています。使ってみてね😍
f:id:ozyozyo:20181218025403g:plain

完成ー!


Clovaにクリスマスツリーを実装してわいわいする ~ スマートスピーカーAdvent Calendar 2018 19日目

( ( どうしよう、なんか新しい生命体たちがうごめいてる、かわいくない・・・ ) )

可愛くする

ブラウンの頭にクリスマスツリーを載せていきます。
サリーには耳がないのですが、ブラウンには耳があるので、帽子をかぶせることができます!
帽子をかぶせるには耳に輪ゴムを巻き付けておいて、ペットボトルを小さく切り取ったものの中心に穴を開けて、耳を差し込みます。

線を絶縁テープでまとめて見栄え良くしたり、ブレッドボードからどんどん抜けていくので、むしゃくしゃしてはんだで固めてしまったり。

小さいブレッドボードに置き換えたり、固定したりして...

できあがりです٩(๑❛ᴗ❛๑)۶

f:id:ozyozyo:20181218215303p:plain

最後に

モノづくりが好きな人、編み物するとハード実装の幅が広がると思います。釣れるし。

今年もお世話になりました。みなさま、わいわいなクリスマスとお正月をお過ごしください٩(๑❛ᴗ❛๑)۶
年末年始のお休みにClovaスキルを作ってくださったら、私はとってもうれしいです!











( ( 可愛いより、これはシュールだったのではという反省・・・ ) )