遠隔操作
遠隔からの機器のリセットや設定変更を行う仕組みをHTMLのみで簡単に構築することができます。また、サーバーで稼働させることで自動化も可能です。センサーの値がしきい値を超えたらモーターを回すなど、エラーや障害の発生、異常を感知した際にリアルタイムな動作も可能です。
<script src="https://unpkg.com/obniz@3.x/obniz.js"></script>
<button id="on">オン</button>
<button id="off">オフ</button>
<script>
const obniz = new Obniz("OBNIZ_ID_HERE", {access_token: "YOUR_TOKEN"});
// IO0の出力をボタンに応じて操作
$("#on").click(() => {
obniz.io0.output(true);
})
$("#off").click(() => {
obniz.io0.output(false);
})
</script>
取得した値・データの可視化
センサーから取得した値・データをグラフやチャート、マップなどWebブラウザに表示して可視化します。リアルタイムな可視化システムを容易に開発できます。
<script src="https://unpkg.com/obniz@3.x/obniz.js"></script>
<script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
<script>
const obnizdata = [], options = { chart: { type: 'line' }, series: [{ data }] }
const obnizchart = new ApexCharts(document.querySelector("#chart"), options);
chart.render();
const obniz = new Obniz("OBNIZ_ID_HERE", {access_token: "YOUR_TOKEN"});
obniz.loop = async () => {
// IO0の電圧を取得
const voltage = await obniz.ad0.getWait()
// グラフの更新
data.push(voltage)
chart.updateSeries([{ data }])
};
</script>
画像認識・人工知能
Tensorflowを始めとするディープラーニングなどで人物検出・物体認識・性別判断と組み合わせることで、高度な警報システムも短いプログラムで実現できます。
const Obniz = require("obniz");
const cocoSsd = require('@tensorflow-models/coco-ssd');
const obniz = new Obniz("OBNIZ_ID_HERE", {access_token: "YOUR_TOKEN"});
obniz.onconnect = async () => {
// 学習済みモデルの取得
const model = await cocoSsd.load();
// 写真を撮影
const cam = obniz.wired("ArduCAMMini", { cs:0, mosi:1, miso:2, sclk:3, sda:6, scl:7 });
await cam.startupWait();
const img = await cam.takeWait('1024x768');
// 画像から推定
const predictions = await model.detect(img);
if (predictions[0].class === 'person') {
obniz.display.print("Found Person")
}
}
データ保存
センサーから所得した値・データを、社内サーバや外部データベースへ保存できます。SQLでMySQLなどに保存したりGoogleスプレッドシートに保存したり、AWSKinesisでリアルタイム分析を行うこともできます。
const Obniz = require("obniz");
const Logtta_TH = Obniz.getPartsClass('Logtta_TH');
const MYSQL = require('mysql');
const mysql = MYSQL.createConnection();
const obniz = new Obniz("OBNIZ_ID_HERE", {access_token: "YOUR_TOKEN"});
obniz.onconnect = async () => {
await obniz.ble.initWait();
obniz.ble.scan.onfind = async (peripheral) => {
// BLE温度センサーに接続
if (Logtta_TH.isDevice(peripheral)) {
const device = new Logtta_TH(peripheral);
await device.connectWait();
const temperature = await device.getTemperatureWait();
// データベースに保存
mysql.query('INSERT INTO temps SET ?', {temp: temperature}, function (error, results, fields) {});
}
};
await obniz.ble.scan.startWait();
}
アラート・通知
「センサーの値がしきい値を超えた場合に、SMSに通知」「毎日定時にメールで通知を送る」など、メールやSMSにアラートや通知を送ります。
const Obniz = require("obniz");
const { WebClient } = require('@slack/client');
const web = new WebClient("YOUR_SLACK_TOKEN");
const obniz = new Obniz("OBNIZ_ID_HERE", {access_token: "YOUR_TOKEN"});
await obniz.connectWait();
const sens = obniz.wired("HC-SR505", {vcc:0, signal:1, gnd:2});
// 人感センサー反応ででSlackに通知
sens.onchange = async (val) => {
await web.chat.postMessage({
channel: 'general',
text: `人を検知しました。時刻は${new Date()}`
});
}
API連携
AWS、Microsoft Azure、Google Cloud、REST APIを備えたあらゆるWEBサービスと連携することでパワフルなIoTシステムを最短で構築できます。
const Obniz = require("obniz");
const Logtta_TH = Obniz.getPartsClass('Logtta_TH');
const kinesis = new require("aws-sdk").Kinesis();
const obniz = new Obniz("OBNIZ_ID_HERE", {access_token: "YOUR_TOKEN"});
obniz.onconnect = async () => {
await obniz.ble.initWait();
obniz.ble.scan.onfind = async (peripheral) => {
// BLE温度センサーに接続して温度を取得
if (Logtta_TH.isDevice(peripheral)) {
const device = new Logtta_TH(peripheral);
await device.connectWait();
const temperature = await device.getTemperatureWait();
// AWS Kinesisへ保存
const record = {
Data: JSON.stringify({ temperature }),
PartitionKey: "1",
StreamName: 'your-stream',
};
await kinesis.putRecord(record).promise();
}
};
await obniz.ble.scan.startWait();
}