iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 23
0
IoT

育兒也要智慧系列 第 23

Day 23 : Line Bot 物聯網

Line Bot 物聯網

看到這裡已經開始有網友想放棄了嗎?

趕緊來整合正流行的 Line Bot 吧,

很簡單就可以串接起來跟隔壁妹子炫耀一下,

也許妹子也覺得育兒好簡單然後就在一起了呢(啾咪

由於我們已經建立過應聲蟲這樣的簡單應用,

只要再加上訊息文字的過濾就可以區分各種應用,

例如可以規定 開燈關燈 等關鍵字會啟動物聯網程式,

那麼就趕緊來試試看吧!

建立命令程式

直接修改先前的應聲蟲範例,

IoT 的程式搬過來並加上 關鍵字 判斷如下範例

/*jshint node: true, esversion: 9 */
const express = require('express');
const router = express.Router();
const line = require('@line/bot-sdk');
const SerialPort = require("serialport");
const serial = new SerialPort("COM4", { baudRate: 115200 });
const config = require('../config.json');
const client = new line.Client(config);

router.get('/', function (req, res, next) {
    res.render('index', { title: 'Express' });
});

router.post('/webhook', (req, res) => {
    Promise
        .all(req.body.events.map(handleEvent))
        .then((result) => res.json(result))
        .catch((err) => {
            res.status(500).end();
        });
});

const handleEvent = (event) => {
    if (event.type !== 'message' || event.message.type !== 'text') {
        return Promise.resolve(null);
    }
    if (event.message.text === "開燈") {
        serial.write('1');
        return client.replyMessage(event.replyToken, {
            type: 'text', text: "開燈了"
        }).catch((err) => {
            if (err) {
                console.error(err);
            }
        });
    } else {
        return Promise.resolve(null);
    }
};

module.exports = router;

注意需要先將上次的 IoT 範例關掉避免 COM Port 被占用,

以及 COM Port 有可能因為換孔位變動記得要修改一下,

改完後直接連結上回的 Arduino 程式來試試看:

燈號看起來也正常的亮起來了呢!

使用 Line Bot 來建立物聯網的應用就是這麼容易。

土炮紅外線冷氣控制

筆者前陣子還土炮了紅外線控制冷氣:

https://ithelp.ithome.com.tw/upload/images/20201007/20107175xuK9zznL1K.jpg

有興趣的可以看看 Arduino-IRremote 固定碼編解碼函數:

https://github.com/z3t0/Arduino-IRremote

就能自製家庭用紅外線控制器囉。

題外話,最近中秋節家裡很熱鬧,

小孩不曉得是不是被哪個親戚傳染而感冒了,

邊顧小孩還要寫鐵人賽真是人生最大的挑戰...

補充

有些人可能會問筆者,

既然都用了 Node.js 為什麼不用 Johnny Five 來做就好?

其實筆者也用過 Johnny Five 來做應用,

但是發現它滿足不了我即時通訊的應用需求,

像是本篇的紅外線函數 Arduino-IRremote 就不支援,

所以再怎麼好用的函數也不是萬靈丹,

選擇適合的方法才真正能解決問題。

每日一曬

https://ithelp.ithome.com.tw/upload/images/20201007/20107175h3OS8cU9Wc.jpg


上一篇
Day 22 : 第一支物聯網程式
下一篇
Day 24 : Home Assistant
系列文
育兒也要智慧30

尚未有邦友留言

立即登入留言