11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

#「コアラのマーチ”ずっと”まもるくん」に進化
前回の記事で紹介させていただいた
7秒の儚い命だった「コアラのマーチまもるくん」

[Q&Aで解決方法](https://qiita.com/Izumi0711/questions/dbf333411b955403bbfd)をいただき、 ずっと距離を測り続けて、ブザーが鳴らせる **「コアラのマーチ”ずっと”まもるくん」**に無事に進化をしました!!
コアラのマーチずっとまもるくんのコードはこちらをクリック
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);
}

#音が鳴るだけじゃ守れないよね・・・
最初はびっくりしていた旦那さんですが、
慣れてくると何もビビらなくなり、箱を置けば止まると学んだので(涙)、
私も開き直って、
コアラのマーチがなくなったら、
①音が鳴る(念のため)
②LINEBotでお知らせが来る
LINEアイコン.PNG
ができると、出先であれば買って帰れるので、イライラしないなとなりました。
食べたいときにないのが、一番イラっとしますよね(笑)
家庭円満の為にも、譲り合いは大切!

#コード
下記の記事を参考にしました。
【obniz×LINE】音と光を使い侵入防止システムを製作する
Obnizと超音波距離センサーを使って、LINE Botで距離を測定できる仕組みを考えた。

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

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
erroe2.PNG

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

11
2
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
11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?