1
0

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.

他人との距離大丈夫?近かったら通知がくるよ!

Posted at

まずは動かしてみた

超音波距離センサーから2メートル以内であれば、obniz、LINEともに通知がいくようにしてみました。

obniz側

iOS の画像.jpg

LINE側

iOS の画像 (1).jpg

実現方法

使用したもの

・obniz Board 1Y
・超音波距離センサー HC-SR04

参考にしたサイト

下記のサイトを参考にしました。
https://blog.obniz.com/make/notify-line-mail-arrives/

###ソース

const fs = require('fs');
const request = require('request');
const Obniz = require('obniz');
const { createCanvas } = require('canvas');

const LINE_NOTIFY_URL = 'https://notify-api.line.me/api/notify';
const TOKEN = 'LINE NotifyトークンID(自分で取得)';

const POSTED_THOREHOLD = 2.0;
const MESSAGE = 'ソーシャルディスタンスを守りましょう。';

const HEADERS = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Authorization': 'Bearer ' + TOKEN
};

const OPTIONS = {
  url: LINE_NOTIFY_URL,
  method: 'POST',
  headers: HEADERS,
  json: true,
  form: {
    message: MESSAGE
  }
}

let passCount = 8;
let passFlag = false;
let obniz = new Obniz('obnizのID(自分のもの)');

obniz.onconnect = async function () {
  obniz.display.clear();
  const canvas = createCanvas(128, 64); 
  const ctx = canvas.getContext('2d');
  ctx.fillStyle = 'white';
  ctx.font = '20px Avenir';
  
  let disSensor = obniz.wired('HC-SR04', { gnd: 0, echo: 1, trigger: 2, vcc: 3 });
  let rawDistance = 0;
    
  obniz.repeat(async () => { 
    rawDistance = await disSensor.measureWait();		
    rawDistance = rawDistance/1000;
    await console.log(rawDistance);
    
    if(passFlag){
      await passCount--;
      if(passCount <= 0){
        passCount = 8;
        passFlag = false;
        obniz.display.clear();
      }
      return;
    }
    
    if(rawDistance > POSTED_THOREHOLD){
      return;
    }
    await request(OPTIONS, async(error, response, body) => {
      console.log(body);
      ctx.fillText('ソーシャルディスタンスを', 0, 26);
      ctx.fillText('守りましょう。',0,56);
      obniz.display.draw(ctx);
      
      passFlag = true;
      if(error){
        console.log(error);
      }
    });
    
  }, 300);
}

最後に

ハッカソンで作ったものを忘れないようにあげてみました。
1日で作ったものにしてはだいぶいいものできたなと自画自賛。
これで会議室とかで他人との距離が近かったら通知できるようにしたらいいかも。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?