3
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.

【作成途中】プログラミング初心者がIotに挑戦してみた

Posted at

プロトアウトスタジオという、プログラミングスクールではなく、プロトタイピングをアウトプットするというスクールに参加し始めた人の記事です。

第3回授業の宿題、「LINEbotとIoTを繋げる」については、obnizのボタン操作内容をLINEbotに出力させるまでで時間切れとなりました。。


'use strict';

// obniz呼び出し
const Obniz = require('obniz');
var obniz = new Obniz("自分のID");  // Obniz_ID に自分のIDを入れます

const express = require('express');
const line = require('@line/bot-sdk');
const axios = require('axios');
const PORT = process.env.PORT || 3000;

const config = {
    channelAccessToken: 'xxxxx',
    channelSecret: 'xxxxx'
};

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接続
obniz.onconnect = async function () {
  obniz.display.clear();
  obniz.display.print("obniz meets LINE Bot!");
    //↓obnizの操作をトリガーにLINEに出力する
  obniz.switch.onchange = async function(state) {
        if (state === "push") {
          // 押されたとき
          console.log("pushed");
          // ディスプレイ処理
          obniz.display.clear();  // 一旦クリアする
          obniz.display.print("pushed");  // pushed という文字を出す
          var replyText ='ボタンが押されたよ';
          console.log(replyText);
    
          await client.pushMessage('Ud0e928eaf56d8ac9f4091fd3da585c00', {
            type: 'text',
            text: replyText,
             });
        };
     //↑obnizの操作をトリガーにLINEに出力する
    };
}

function handleEvent(event) {
  if (event.type !== 'message' || event.message.type !== 'text') {
    return Promise.resolve(null);
  }

  let mes = '';
  
  //↑LINEに入力した文字をobnizに出力するまで
  mes = 'obnizに表示するよ';
  client.replyMessage(event.replyToken, {
    type: 'text',
    text: mes
  });
  console.log(event.message.text);

  obniz.display.clear();  // 一旦クリアする
  obniz.display.print(event.message.text);  // LINEで入力されたテキストをobnizに出力する
  //↑LINEに入力した文字をobnizに出力するまで
};


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

obnizの情報をLINEbotに渡して出力させるまでの導線はできているので、今後はボタン操作ではなくobniz側のセンサー検知結果等を渡せるようにします。

3
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
3
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?