obniz×LINEbotでファミリー向けIoT制作
①obnizとLINEbotの技術を組み合わせる
②obnizはセンサまたはアクチュエータのいずれかを1つ以上使用
③マトリックスLEDに文字描画させてみる
④子育てママに刺さる企画・見せ方を狙う(Qiita記事 LGTM 30以上)
Zennの記事書き方ガイド
企画アイデア
センサーを使って子どもの身長を計る
結果はLINEとマトリックスLEDで帰ってくる
身長プラス子供の興味を引く何か 〇〇と一緒の身長だよ などで一工夫
最後に「お母さんに〇〇と言おう」の一言をつける
➡ひとことは固定しない 子供自身の気持ちを言わせる 母は本当に嬉しい
企画としては「身長計る」ではなく「お母さんに感謝」方向でいく
時事ネタも織り交ぜる
LINEbotから何を返すか
アイデア面の参考
obniz実装面 マトリックスLED
obniz実装面 距離センサー
obniz×LINEbot
タグ候補
おうちハック IoT ハロウィン🎃 クリスマス🎄
#子育てあるある 季節性の高いもの ママのテンション爆上げ
https://twitter.com/ABEMATIMES/status/1451111016 234946561
メモ
奥さんかが「ヒカキンの動画が面白い」というので見てみた
~スーパーカップで蒸しパン作ってみた~
なるほど~非線形だな~と思いつつよく考えるとヒカキンって
こんなとがったアイデアずっと出し続けてるんだなぁすごいと感嘆
ヒカキンの頭の中のアート思考 紐解いてみたい
多分「毎日更新」をやり続けて
どうやったらリスナーに刺さるのか をとんでもない回数試行錯誤してるのだろうな
それができるのも「好きだから」なんだろうな ヒカキンはすごい
トラブル Node.jsでマトリクスLED動かせない
”npm install node-canvas”も実行したが動かせず 保留
解決したけど文字を流せない。。。➡流れた!
文字が流れるようになった!
const Obniz = require('obniz');
const obniz = new Obniz('****-****');
obniz.onconnect = async function () {
const matrix = obniz.wired("MatrixLED_MAX7219", {
vcc: 4,
gnd: 3,
din: 2,
cs: 1,
clk: 0
});
matrix.init(8 * 4, 8);
matrix.brightness(7);
const ctx = obniz.util.createCanvasContext(matrix.width, matrix.height);
x = matrix.width;
obniz.repeat(async function() {
ctx.fillStyle = "black";
ctx.fillRect(0, 0, matrix.width, matrix.height);
ctx.fillStyle = "white";
ctx.font = "9px sans-serif";
ctx.fillText("おきなかうたちゃん きょうはラーメンたべようね たのしみだね", x, 7);
x--;
matrix.draw(ctx);
}, 1000 / 80);
};
トラブル 距離センサーの結果をマトリクスに表示させられない
console.logではでるのになぜ。。
もしかしたら電力不足かも
いやきっと違う console.log は出ているし LEDもついているので 原因は別
先にラインボットとの連携を試す
var と const の違い
距離センサー
const Obniz = require('obniz');
const obniz = new Obniz('****-****');
obniz.onconnect = async function () {
var hcsr04 = obniz.wired("HC-SR04", {gnd:8, echo:9, trigger:10, vcc:11});
hcsr04.measure(function( distance ){
console.log("distance " + distance + " mm")
})
}
身長を計測
var sinto=2220-distance
}
console.log("距離は" + sinto + " mm")
ターミナルには結果が返るがLINEで結果返らず
// 距離センサーを呼び出す
var hcsr04 = obniz.wired("HC-SR04", {gnd:8, echo:9, trigger:10, vcc:11});
hcsr04.measure(function( distance ){{
var height=2220-distance
}
console.log("距離は" + height + " mm")
})
await client.pushMessage(userId, {
type: 'text',
text: "距離は" + height + " mm",
})
}
ターミナルで返ってくるエラー
text: "距離は" + height + " mm",
^
ReferenceError: height is not defined
LINEで結果が返ってきた!!
// 距離センサーを呼び出す
var hcsr04 = obniz.wired("HC-SR04", {gnd:8, echo:9, trigger:10, vcc:11});
const distance = await hcsr04.measureWait();{{
var height=2220-distance
}
console.log("距離は" + height + " mm")
}
await client.pushMessage(userId, {
type: 'text',
text: "距離は" + height + " mm",
【自分なりの解釈】
リッチメニューを追加
こどもは自分でLINEを打ちたがる
でも誤って打つと反応しない
そこで思いついた案
LINEでobniz起動 結果を返信 完成
'use strict';
const Obniz = require('obniz');
const obniz = new Obniz('****-****');
obniz.onconnect = async function () {
obniz.display.clear();
obniz.display.print("obniz meets LINE Bot!");
}
const express = require('express');
const line = require('@line/bot-sdk');
const axios = require('axios');
const PORT = process.env.PORT || 3000;
const config = {
channelSecret: '********',
channelAccessToken: '********'
};
const sampleFunction = async (event) => {
if (event.type !== 'message' || event.message.type !== 'text') {
return Promise.resolve(null);
}
let mes = ''
if(event.message.text === 'わたしおおきくなったかな・・・'){
mes = 'はかってみるね!☻'; //処理するまでこちらを表示
getkyori(event.source.userId);
}else{
mes = event.message.text;
}
return client.replyMessage(event.replyToken, {
type: 'text',
text: mes
});
}
const getkyori = async (userId) => {
// 距離センサーを呼び出す
var hcsr04 = obniz.wired("HC-SR04", {gnd:8, echo:9, trigger:10, vcc:11});
const distance = await hcsr04.measureWait();{{
var height=((2242-distance)/10)
//天井の高さから距離を引いて身長を割り出す
}
console.log("身長は" + height + " cm")
}
await client.pushMessage(userId, {
type: 'text',
text: "身長は" + height + " cm",
})
}
いまここ LINEで返信後 マトリクスで表示させたいができない
LINEで結果がかえってきたその②
// 距離センサーを呼び出す
var hcsr04 = obniz.wired("HC-SR04", { gnd: 8, echo: 9, trigger: 10, vcc: 11 });
hcsr04.measure(
function(distance){
var height = 2220 - distance;
console.log("距離は" + height + " mm");
client.pushMessage(
userId,
{
type: 'text',
text: "距離は" + height + " mm",
}
);
}
)}
この方法でも返ってきました!!助けてもらって感謝( ;∀;)