「コアラのマーチずっとまもるくん」をLINEBotと連携したい（obniz×LINE Bot）

#「コアラのマーチ”ずっと”まもるくん」に進化
[前回の記事](https://qiita.com/Izumi0711/items/67beedef9df05dfa32c5)で紹介させていただいた
7秒の儚い命だった「コアラのマーチまもるくん」
<iframe width="560" height="315" src="https://www.youtube.com/embed/9vgjaC_BfYk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
[Q&Aで解決方法](https://qiita.com/Izumi0711/questions/dbf333411b955403bbfd)をいただき、
ずっと距離を測り続けて、ブザーが鳴らせる
**「コアラのマーチ”ずっと”まもるくん」**に無事に進化をしました！！

<details><summary>コアラのマーチずっとまもるくんのコードはこちらをクリック</summary><div>

```js:distance-speaker2.js
const Obniz = require('obniz');
const obniz = new Obniz('xxxx-xxxx'); // Obniz_IDに自分のIDを入れます

obniz.onconnect = async function () {
    var hcsr04 = obniz.wired("HC-SR04", {gnd:8, echo:9, trigger:10, vcc:11});
  const speaker = obniz.wired('Speaker', { signal: 0, gnd: 1 });
    setInterval(async function(){
    hcsr04.measure(function( distance ){
  console.log("distance " + distance + " mm")

  if (distance > 200) {
    speaker.play(1000);
  } else {
    speaker.stop();
  }
})
}, 1000);
}

```
</div></details>

#音が鳴るだけじゃ守れないよね・・・
最初はびっくりしていた旦那さんですが、
慣れてくると何もビビらなくなり、箱を置けば止まると学んだので（涙）、
私も開き直って、
コアラのマーチがなくなったら、
①音が鳴る（念のため）
②LINEBotでお知らせが来る
![LINEアイコン.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2052662/0f2b2258-1ebf-cf61-2b9d-997c4a0aeecd.png)
ができると、出先であれば買って帰れるので、イライラしないなとなりました。
食べたいときにないのが、一番イラっとしますよね（笑）
家庭円満の為にも、譲り合いは大切！

#コード
下記の記事を参考にしました。
[【obniz×LINE】音と光を使い侵入防止システムを製作する](https://qiita.com/Toshiki0324/items/6ac09efe6ac6ed0102e6)
[Obnizと超音波距離センサーを使って、LINE Botで距離を測定できる仕組みを考えた。](https://qiita.com/MikH/items/e116cda4d35b779aa867)

実際に書いたコードがこちらです。


```js:koala.js

'use strcit';

const Obniz = require('obniz');
const obniz = new Obniz('xxxx-xxxx'); // Obniz_IDに自分のIDを入れます
const line = require("@line/bot-sdk");
const express = require("express");
const PORT = process.env.PORT || 3000;

const config = {
  channelSecret: '{チャネルシークレット}',
  channelAccessToken: '{アクセストークン}'
};
const userId = '{ユーザーid}';
const app = express();

app.post('/webhook', line.middleware(config), (req, res) => {
  console.log(req.body.events);
  Promise
    .all(req.body.events.map(handleEvent))
    .then((result) => res.json(result));
});

const client = new line.Client(config);


obniz.onconnect = async function () {
  // 各センサーを呼び出す
  // 距離センサーを呼び出す
  const hcsr04 = obniz.wired("HC-SR04", {gnd:8, echo:9, trigger:10, vcc:11});
  // 指す場所を変えているので対応した数字に変更
   // スピーカーを呼び出す
  const speaker = obniz.wired('Speaker', {signal:0,gnd:1});
  obniz.display.clear(); // 一旦クリアする
  obniz.display.print('Hello obniz!'); // Hello obniz!という文字を出す

  // setIntervalで間隔を作る
  setInterval(async function () {
    const distance = await hcsr04.measureWait();
    // 距離(mm)をコンソールに表示
    console.log(distance + ' mm');
    // displayに反映
    obniz.display.clear(); // 一旦クリアする
    obniz.display.print(distance + ' mm'); // 英語が出力できる
    // 近づいてきたら判定する
    if (distance > 200) count++;
    else count = 0;
      switch(count) {
        case 5:
          obniz.display.clear(); // 一旦クリアする
          speaker.play(11000); // スピーカー On 11khz
          //LINEにメッセージ送信
          await client.pushMessage(userId, {
            type: 'text',
            text: 'コアラのマーチがないよ！',
            });
        break;
      default:
        speaker.stop();// スピーカー OFF
      }
  }, 1000); // 1000ミリ秒 = 1秒
};

app.listen(PORT);
console.log(`Server running at ${PORT}`);
```

#起こったエラー
進化したので、ずっと距離を測ってくれることはできるのですが、
スピーカーも鳴らないし、LINEとも連携できない・・・。
おそらく、If以降の文章に何かしらのエラーがあるので、
スピーカーも鳴らない、LINEも連携しないのかなと思いました。

※ターミナルにはエラーの表示なしでdistanceの結果が表示される。
※LINE Bot側にはエラー表示あり。（画像参照）
![error01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2052662/2ead6073-102d-3413-b98d-a747e943b5ff.png)
![erroe2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2052662/42d0056d-8dcb-d85a-4296-c90dbcd747ce.png)




#家庭円満のために
Q&Aに質問してみて、自分でもできることを探して、更に進化させていこうと思います！