2022年8月13日土曜日

obniz::slack-temp-10min(browser app), serverless event vs deep-sleep browser app

((obniz-line-notify))

1.https://uepon.hatenadiary.com/entry/2021/04/13/234404

const lineNotify = require('line-notify-nodejs')(''); // 先ほど生成したトークン

lineNotify.notify({

  message: 'send test',

}).then(() => {

  console.log('send completed!');

});

2.https://qiita.com/mochan_tk/items/e1f390cc88046f92eec6 :: obnizからline

これもnode.jsでの実行となっている

-----------------ステッピングモータ----------------------

https://take6shin-tech-diary.com/obniz-steppingmotor/ 手持ちのarduino用の

ステッピングモータでできた 5本つかうので、のこり6線で何ができるだろうか?

ーーーーーーーー赤外線リモコンーーーーーーーーーーーーーーーーーーーー

消灯点灯まではリモコンできたが、エアコン学習操作はできなくなっていた なんで?

しょうがないからswitch bot hub miniを買った 結果、正解だった 超かんたん

-----------------ifttt obniz tweet  pir -----------------------------------------------------

https://blog.obniz.com/make/linking-motion-sensor-and-sns

このほかにtemperature のアプレットも作っているが。。。。複雑やな

esp32//line notifyとかslackダイレクトのほうが簡単みたい

---------------------------------------------------------------

以下のコードでライトは簡単につく 用意ができるまでdelayを入れるのがコツ

しかし、ダイキンはひろってくれない・・・・


line-notifyはnode.jsでないとうまくいかんようだ runkitの学習が今後の課題

twitterは、ツイートで喜ぶロボットとかがあるが。。。。めんどげ

google assistant で、サーボを動かす。。。。めんどげ

slackに温度情報を送るのは成功した

// https://blog.obniz.com/make/notify-slack-when-hightemperature が原本だが

サーバレスイベントだったのでブラウザアプリに書き換えた なお、一回起動したら、閉じておく!

そうでないと10分ごとの報知ができんみたい。。。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
/>
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script
src="https://unpkg.com/obniz@3.x/obniz.js"
crossorigin="anonymous"
></script>
</head>
<body>
<script>
const obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function() {
let tempsens = obniz.wired("LM61", { gnd: 0, output: 1, vcc: 2 });
let temp = await tempsens.getWait();
if (temp >= 20) {
temp = Math.floor(temp * 10) / 10;
sendToSlack(temp);
}

function sendToSlack(temp) {
let url = "https://hooks.slack.com/services/????"; // ??? is slack webhooks url
let data = {
text: "室温が高温になっています。" + temp + "℃"
};

let dataJson = JSON.stringify(data);

$.ajax({
type: "POST",
dataType: "json",
url: url,
processData: false,
data: "payload=" + dataJson
}).then(
function(data) {},
function(XMLHttpRequest, textStatus, errorThrown) {
console.log("post to bot");
}
);
}
};
</script>
</body>
</html>
// sereverless eventで10分ごとに実行とする以下の設定



---------------------------------------------------------------------------------------- 

https://qiita.com/y-hira/items/de7e8d5c2e8e4c1c4acd でサーバレスイベントを体験

obniz_ifttt.htmlは以下のとおりで、サーバレスイベントで10分ごとに実施にする

以下のところでvalue2,value3は取り除いた



<html>

<head>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>

    <script src="https://unpkg.com/obniz@latest/obniz.js"></script>

</head>

<body>

    <div id="obniz-debug"></div>

    <h1>obniz IFTTT sensor logger</h1>

    <script>

        var obniz = new Obniz("OBNIZ_ID_HERE");

     //obnizのIDを指定してください ここがブラウザアプリとの違い!

        var lm61;

        var event_name = "obnizLM61";

//IFTTTのWebhooks - Receive a web requestで指定したEvent Nameを指定してください。

        var key = "XX_XXXXXXXXXXXX";

//IFTTTのWebhooksのDocumentationにあるYour keyを指定してください。


var url = "https://maker.ifttt.com/trigger/" + event_name + "/with/key/" + key;

obniz.onconnect = async function () {

    lm61 = obniz.wired("LM61", { gnd: 0, output: 1, vcc: 2 });

    send_sensor_value();

} // obnizコネクト時の非同期実行


async function send_sensor_value() {

  const temp = await lm61.getWait();

  var data = { value1: temp }; // iftttでセットしたのはvalue1のみだから!

  $.get(url, data).done(function (ret) { console.dir(ret); });

}

</script>

</body>

</html>

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

https://maker.ifttt.com/trigger/obnizLM61つまりイベント名/with/key/ウエブフック暗号キー/?value1=30

で無事にできたので https://blog.obniz.com/make/saving-temperature-logger-1y にでていた

コードを暗号キー直書きに改変した以下のブラウザアプリをつくり、アプリ設定は

obniz Board 1Yのスリープ機能を使って、デバイスがオンラインになるたびにクラウドで

プログラムを実行したいので、「デバイスがオンライン時に実行」にチェックを入れます。

念の為、ブラウザ実行にもチェックして、一回実行しておく webhook,switchはスリープで

チェックしても無効になるっぽい 定期実行はなしにした コードはこれ

<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js"></script>
<script src="https://unpkg.com/obniz@3.x/obniz.js" crossorigin="anonymous" ></script>
</head>
<body>
<div id="obniz-debug"></div>
<script>
const IFTTT_SECRET_KEY = "dWU1hX3AUC9-ujae9y-7hc";
const IFTTT_EVENT = "obnizLM61";
let obniz = new Obniz("OBNIZ_ID_HERE");

//Timeout 25s
let tid = setTimeout(() => {
obniz.sleepMinute(10);
}, 25000);

obniz.onconnect = async() => { // main part
var tempsens = obniz.wired("LM61", { gnd:0 , output:1, vcc:2});
var temp = await tempsens.getWait();
//make a data to send
let dataToSend = {
'value1': temp
};

//IFTTT request
$.get(
`https://maker.ifttt.com/trigger/${IFTTT_EVENT}/with/key/${IFTTT_SECRET_KEY}`,
dataToSend
);

//set to wake up every 10 minutes
obniz.sleepMinute(10);

//program finish wait...
await obniz.wait(1000);

clearTimeout(tid);
if (Obniz.App.isCloudRunning()) {
Obniz.App.done({
status: 'success'
});
}

}; // end of main part
</script>
</body>
</html>

0 件のコメント:

コメントを投稿