obniz에서 BLE를 사용하여 Eddystone을 내 보았습니다.
obniz Board 1Y가 내일에는 발매군요! 여러가지 만들었으므로 꼭 만져보세요.
이번에는 그런 일 관계없이 BLE에서 놀아가려고 생각합니다.
Eddystone이란?
Google이 2015년경에 발표한, BLE를 사용한 비콘이나 URL의 전달을 위한 규격.
자세한 설명은 다음과 같은 사이트에 맡기면서 무엇이 좋은가 하면 URL을 간편하게 배포할 수 있는 곳이 매우 좋습니다.
obniz가 JavaScript로 움직일 수 있으므로 Web 엔지니어라도 접할 수 있는 디바이스로, URL을 간편하게 배포할 수 있는 것은 Web 엔지니어적으로 도선을 하나 늘릴 수 있기 때문에 매우 좋다고 생각합니다.
프로그램
<!DOCTYPE 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/[email protected]/obniz.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/uikit.min.css" />
<style>
body {
margin: 2em ;
}
</style>
</head>
<body>
<div id="obniz-debug"></div>
<H1>Obniz Eddystone</H1>
<form name="form_url">
<p>
<label>URL
<input class="uk-textarea" name="url" type="text" value="https://obniz.io/" size="100" required/>
</label>
</p>
<input class="uk-button uk-button-default" type="button" value="send" id="sendurl">
</form>
<p id="obniz_url"></p>
<script>
var obniz = new Obniz("OBNIZ_ID");
obniz.onconnect = async function () {
$("#sendurl").on("click", function(){
let url = document.form_url.url.value;
console.log(url)
if(url.length == 0){
alart("url length error");
return;
}
let advData = [0x02, 0x01, 0x06, 0x03, 0x03, 0xAA, 0xFE,
0x00,//length
0x16, 0xAA, 0xFE, 0x10, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
if (url.indexOf("https://www.") == 0) {
advData[13] = 0x01;
url = url.substring(12);
} else if (url.indexOf("http://www.") == 0) {
advData[13] = 0x00;
url = url.substring(11);
} else if (url.indexOf("https://") == 0) {
advData[13] = 0x03;
url = url.substring(8);
} else if (url.indexOf("http://") == 0) {
advData[13] = 0x02;
url = url.substring(7);
} else {
throw new Error("URL Schema Error");
}
console.log(url);
if (url.length > 17) {
throw new Error("URL Length Error");
}
for (let i = 0; i < url.length; i++) {
advData[14 + i] = url.charCodeAt(i);
}
advData[7] = url.length + 6;
obniz.ble.advertisement.setAdvDataRaw(advData)
obniz.ble.advertisement.setScanRespData({
localName: "obniz Eddystone",
});
obniz.ble.advertisement.start();
document.getElementById("obniz_url").innerHTML = `sending url : ${document.form_url.url.value}`;
obniz.display.clear();
obniz.display.print("Eddystone Start");
obniz.display.print(document.form_url.url.value);
});
}
</script>
</body>
</html>
이런 느낌의 화면이 표시됩니다.
URL 입력란에 전송할 URL을 입력하고 'SEND'를 누르면 BLE로 전송이 시작됩니다.
URL의 문자 길이는 17자까지입니다.
BLE의 출력을 Android에서 확인해 봅시다.
이런 식으로 앱에서 확인할 수 있습니다!
옛날이라면 Eddystone에 가까워지면 알림이 나왔을 것입니다 ... 음?
검색해보기
htps : // 안 d로이 d로 ゔぇぺぺrs. 오 g b b g. 코 m/2018/10/ぢs こんにちぬんg すっぽ rt ふぉr-안 d로이 d. HTML
뭐야?
Eddystone은 끝난 표준이었습니다.
요약
<!DOCTYPE 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/[email protected]/obniz.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/uikit.min.css" />
<style>
body {
margin: 2em ;
}
</style>
</head>
<body>
<div id="obniz-debug"></div>
<H1>Obniz Eddystone</H1>
<form name="form_url">
<p>
<label>URL
<input class="uk-textarea" name="url" type="text" value="https://obniz.io/" size="100" required/>
</label>
</p>
<input class="uk-button uk-button-default" type="button" value="send" id="sendurl">
</form>
<p id="obniz_url"></p>
<script>
var obniz = new Obniz("OBNIZ_ID");
obniz.onconnect = async function () {
$("#sendurl").on("click", function(){
let url = document.form_url.url.value;
console.log(url)
if(url.length == 0){
alart("url length error");
return;
}
let advData = [0x02, 0x01, 0x06, 0x03, 0x03, 0xAA, 0xFE,
0x00,//length
0x16, 0xAA, 0xFE, 0x10, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
if (url.indexOf("https://www.") == 0) {
advData[13] = 0x01;
url = url.substring(12);
} else if (url.indexOf("http://www.") == 0) {
advData[13] = 0x00;
url = url.substring(11);
} else if (url.indexOf("https://") == 0) {
advData[13] = 0x03;
url = url.substring(8);
} else if (url.indexOf("http://") == 0) {
advData[13] = 0x02;
url = url.substring(7);
} else {
throw new Error("URL Schema Error");
}
console.log(url);
if (url.length > 17) {
throw new Error("URL Length Error");
}
for (let i = 0; i < url.length; i++) {
advData[14 + i] = url.charCodeAt(i);
}
advData[7] = url.length + 6;
obniz.ble.advertisement.setAdvDataRaw(advData)
obniz.ble.advertisement.setScanRespData({
localName: "obniz Eddystone",
});
obniz.ble.advertisement.start();
document.getElementById("obniz_url").innerHTML = `sending url : ${document.form_url.url.value}`;
obniz.display.clear();
obniz.display.print("Eddystone Start");
obniz.display.print(document.form_url.url.value);
});
}
</script>
</body>
</html>
이런 느낌의 화면이 표시됩니다.
URL 입력란에 전송할 URL을 입력하고 'SEND'를 누르면 BLE로 전송이 시작됩니다.
URL의 문자 길이는 17자까지입니다.
BLE의 출력을 Android에서 확인해 봅시다.
이런 식으로 앱에서 확인할 수 있습니다!
옛날이라면 Eddystone에 가까워지면 알림이 나왔을 것입니다 ... 음?
검색해보기
htps : // 안 d로이 d로 ゔぇぺぺrs. 오 g b b g. 코 m/2018/10/ぢs こんにちぬんg すっぽ rt ふぉr-안 d로이 d. HTML
뭐야?
Eddystone은 끝난 표준이었습니다.
요약
귀엽다...
Reference
이 문제에 관하여(obniz에서 BLE를 사용하여 Eddystone을 내 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wamisnet/items/5fe2fe8aca1bc76ee90e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)