@jjlmoya/utils-hardware 1.24.0 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/category/index.ts +4 -1
- package/src/entries.ts +10 -1
- package/src/index.ts +3 -0
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/keyboardChatterTest/bibliography.astro +15 -0
- package/src/tool/keyboardChatterTest/bibliography.ts +20 -0
- package/src/tool/keyboardChatterTest/component.astro +353 -0
- package/src/tool/keyboardChatterTest/entry.ts +30 -0
- package/src/tool/keyboardChatterTest/i18n/de.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/en.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/es.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/fr.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/id.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/it.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/ja.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/ko.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/nl.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/pl.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/pt.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/ru.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/sv.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/tr.ts +232 -0
- package/src/tool/keyboardChatterTest/i18n/zh.ts +232 -0
- package/src/tool/keyboardChatterTest/index.ts +12 -0
- package/src/tool/keyboardChatterTest/keyboard-chatter-test.css +512 -0
- package/src/tool/keyboardChatterTest/logic.ts +23 -0
- package/src/tool/keyboardChatterTest/seo.astro +16 -0
- package/src/tool/keyboardChatterTest/ui.ts +34 -0
- package/src/tool/webBluetoothBleScanner/bibliography.astro +14 -0
- package/src/tool/webBluetoothBleScanner/bibliography.ts +16 -0
- package/src/tool/webBluetoothBleScanner/component.astro +339 -0
- package/src/tool/webBluetoothBleScanner/entry.ts +29 -0
- package/src/tool/webBluetoothBleScanner/i18n/de.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/en.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/es.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/fr.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/id.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/it.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/ja.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/ko.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/nl.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/pl.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/pt.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/ru.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/sv.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/tr.ts +233 -0
- package/src/tool/webBluetoothBleScanner/i18n/zh.ts +233 -0
- package/src/tool/webBluetoothBleScanner/index.ts +11 -0
- package/src/tool/webBluetoothBleScanner/logic.ts +79 -0
- package/src/tool/webBluetoothBleScanner/seo.astro +15 -0
- package/src/tool/webBluetoothBleScanner/ui.ts +41 -0
- package/src/tool/webBluetoothBleScanner/web-bluetooth-ble-scanner.css +406 -0
- package/src/tool/webUsbSerialMonitor/bibliography.astro +15 -0
- package/src/tool/webUsbSerialMonitor/bibliography.ts +18 -0
- package/src/tool/webUsbSerialMonitor/component.astro +356 -0
- package/src/tool/webUsbSerialMonitor/entry.ts +30 -0
- package/src/tool/webUsbSerialMonitor/i18n/de.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/en.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/es.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/fr.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/id.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/it.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/ja.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/ko.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/nl.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/pl.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/pt.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/ru.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/sv.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/tr.ts +241 -0
- package/src/tool/webUsbSerialMonitor/i18n/zh.ts +241 -0
- package/src/tool/webUsbSerialMonitor/index.ts +12 -0
- package/src/tool/webUsbSerialMonitor/logic.ts +44 -0
- package/src/tool/webUsbSerialMonitor/seo.astro +16 -0
- package/src/tool/webUsbSerialMonitor/ui.ts +51 -0
- package/src/tool/webUsbSerialMonitor/web-usb-serial-monitor.css +415 -0
- package/src/tools.ts +4 -1
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { WebBluetoothBleScannerUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'web-bluetooth-ble-scanner';
|
|
7
|
+
const title = 'Web Bluetooth BLE 스캐너';
|
|
8
|
+
const description = '브라우저에서 근처의 Bluetooth Low Energy 장치를 스캔하고, 노출된 GATT 서비스 UUID를 검사하며, IoT 또는 웨어러블 하드웨어가 검색 가능한지 테스트합니다.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: '웹사이트가 허가 없이 Bluetooth 장치를 스캔할 수 있나요?',
|
|
13
|
+
answer: '아니요. Web Bluetooth는 항상 사용자 제스처와 브라우저 권한 선택기가 필요합니다. 이 도구는 명시적으로 선택한 장치만 볼 수 있으며 MAC 주소, 장치 ID 또는 스캔 결과를 저장하지 않습니다.',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
question: '스캐너가 근처의 모든 BLE 장치를 표시하지 않는 이유는 무엇인가요?',
|
|
17
|
+
answer: '브라우저는 의도적으로 Bluetooth를 권한 선택기를 통해 노출하며, 조용한 백그라운드 스캐너로 작동하지 않습니다. 일부 장치는 광고를 중지하거나, 이름을 숨기거나, 페어링을 요구하거나, 연결 후에만 서비스를 노출합니다.',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
question: '어떤 브라우저가 Web Bluetooth를 지원하나요?',
|
|
21
|
+
answer: 'Web Bluetooth는 Chrome 및 Edge와 같은 Chromium 기반 데스크톱 브라우저에서 가장 잘 지원됩니다. 일반적으로 HTTPS 또는 localhost가 필요하며 많은 Firefox, Safari 및 iOS 브라우저 구성에서는 사용할 수 없습니다.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
question: '웨어러블에서 개인 센서 데이터를 읽을 수 있나요?',
|
|
25
|
+
answer: '장치가 호환 가능한 GATT 서비스를 노출하고 브라우저가 액세스를 허용하는 경우에만 가능합니다. 많은 상용 웨어러블은 일반 브라우저 스캐너가 디코딩할 수 없는 공급업체 앱, 암호화, 본딩 또는 독점 특성이 필요합니다.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'GATT 서비스 UUID란 무엇인가요?',
|
|
29
|
+
answer: 'GATT 서비스 UUID는 배터리 서비스, 심박수, 장치 정보 또는 메이커 및 IoT 하드웨어에서 사용하는 사용자 정의 공급업체 서비스와 같은 Bluetooth Low Energy 기능 그룹을 식별합니다.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: '호환 브라우저 사용',
|
|
36
|
+
text: 'Chrome 또는 Edge에서 HTTPS 또는 localhost를 통해 도구를 열고 컴퓨터나 휴대폰에서 Bluetooth가 활성화되어 있는지 확인하세요.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: '하드웨어를 광고 모드로 설정',
|
|
40
|
+
text: 'BLE 장치를 깨우고, 전원을 껐다 켜거나, 페어링 버튼을 누르거나, 광고 모드를 열어 브라우저 권한 선택기에 나타나도록 하세요.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: '환경 스캔',
|
|
44
|
+
text: '환경 스캔을 누르고 검사할 BLE 장치를 선택하세요. 브라우저 권한 대화 상자가 페이지에 표시될 장치를 정확히 제어합니다.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'GATT 서비스 읽기',
|
|
48
|
+
text: '연결 후 서비스 UUID 카드를 검토하여 표준 Bluetooth 프로필, 사용자 정의 펌웨어 서비스 및 장치가 예상한 데이터 경로를 노출하는지 식별하세요.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowTo> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'DeveloperApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
|
|
83
|
+
inLanguage: 'ko',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<WebBluetoothBleScannerUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
89
|
+
description,
|
|
90
|
+
faq: faqData,
|
|
91
|
+
bibliography,
|
|
92
|
+
howTo: howToData,
|
|
93
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
seo: [
|
|
95
|
+
{
|
|
96
|
+
type: 'title',
|
|
97
|
+
text: 'IoT, 웨어러블 및 메이커 하드웨어용 온라인 BLE 테스터',
|
|
98
|
+
level: 2,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'paragraph',
|
|
102
|
+
html: '이 Web Bluetooth 스캐너는 근처의 Bluetooth Low Energy 장치가 브라우저에서 검색 가능한지, 그리고 권한이 부여된 후 어떤 GATT 서비스를 노출하는지 테스트할 수 있습니다. ESP32 펌웨어, Arduino BLE 스케치, 스마트 센서, 피트니스 웨어러블, 키보드, 사용자 정의 비콘, 환경 모니터 및 네이티브 모바일 앱을 구축하기 전의 프로토타입 하드웨어를 디버깅할 때 유용합니다.',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'message',
|
|
106
|
+
title: '개인정보 보호 모델',
|
|
107
|
+
html: 'GameBob은 MAC 주소, 장치 ID, 이름, UUID, 신호 데이터 또는 스캔 기록을 저장하지 않습니다. 브라우저 권한 선택기가 페이지가 액세스할 수 있는 단일 장치를 결정하며, 결과는 현재 브라우저 세션에만 유지됩니다.',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'table',
|
|
111
|
+
headers: ['표시 내용', '의미', '다음에 확인할 사항'],
|
|
112
|
+
rows: [
|
|
113
|
+
['장치 이름', '하드웨어가 브로드캐스트하는 경우 광고된 Bluetooth 이름.', '비어 있으면 펌웨어 광고 데이터를 확인하거나 테스트 중에 알려진 이름 접두사를 사용하세요.'],
|
|
114
|
+
['장치 ID', '브라우저 범위 식별자로, 실제 공개 MAC 주소가 아닙니다.', '이 브라우저 세션에서만 사용하고 범용 하드웨어 일련 번호로 취급하지 마세요.'],
|
|
115
|
+
['GATT 서비스 UUID', '연결이 수락된 후 노출된 서비스 그룹.', '표준 UUID를 Bluetooth SIG 목록 또는 펌웨어 서비스 테이블과 비교하세요.'],
|
|
116
|
+
['사용자 정의 서비스', '공급업체별 또는 프로젝트별 UUID.', '펌웨어, 모바일 앱 프로필 또는 BLE 문서를 열어 특성 및 권한을 매핑하세요.'],
|
|
117
|
+
],
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'title',
|
|
121
|
+
text: '브라우저 Bluetooth 스캔이 다른 이유',
|
|
122
|
+
level: 3,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'paragraph',
|
|
126
|
+
html: '네이티브 BLE 스캐너 앱은 종종 근처의 많은 장치에서 지속적인 광고를 표시합니다. Web Bluetooth는 의도적으로 더 엄격합니다. 페이지는 보안 컨텍스트에서 열려야 하고, 스캔은 사용자 클릭에서 시작되어야 하며, 브라우저는 권한 선택기를 표시합니다. 이는 무음 추적으로부터 사용자를 보호하면서도 개발자에게 JavaScript에서 선택한 BLE 하드웨어에 연결할 수 있는 실용적인 방법을 제공합니다.',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'comparative',
|
|
130
|
+
items: [
|
|
131
|
+
{
|
|
132
|
+
title: 'Web Bluetooth 스캐너',
|
|
133
|
+
description: '빠른 펌웨어 검증, 데모, 지원 흐름, 교실 실습 및 설치 마찰이 중요한 브라우저 기반 진단에 가장 적합합니다.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
title: '네이티브 BLE 앱',
|
|
137
|
+
description: '백그라운드 스캐닝, RSSI 로깅, 페어링 워크플로우, 암호화된 공급업체 프로토콜, 대규모 특성 트리 및 장기 현장 진단에 더 적합합니다.',
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: 'title',
|
|
143
|
+
text: 'BLE 장치가 나타나지 않는 일반적인 이유',
|
|
144
|
+
level: 3,
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'list',
|
|
148
|
+
items: [
|
|
149
|
+
'Bluetooth가 운영 체제 수준에서 비활성화되었거나 브라우저에 Bluetooth 권한이 없습니다.',
|
|
150
|
+
'장치가 다른 휴대폰, 노트북, 공급업체 앱 또는 게이트웨이에 연결되어 광고를 중지했습니다.',
|
|
151
|
+
'하드웨어가 부팅 후 또는 페어링 버튼을 누른 후 짧은 기간 동안만 광고합니다.',
|
|
152
|
+
'브라우저가 Chromium 기반이 아니거나, 페이지가 HTTPS를 통해 제공되지 않거나, 플랫폼이 Web Bluetooth를 차단합니다.',
|
|
153
|
+
'펌웨어가 제조업체 데이터를 광고하지만 로컬 이름을 숨겨 선택기에 이름 없는 장치가 표시될 수 있습니다.',
|
|
154
|
+
'장치가 서비스를 읽을 수 있게 되기 전에 본딩, 암호화 또는 독점 인증이 필요합니다.',
|
|
155
|
+
],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
type: 'title',
|
|
159
|
+
text: '디버깅 중 GATT UUID 사용 방법',
|
|
160
|
+
level: 3,
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'paragraph',
|
|
164
|
+
html: '서비스 UUID와의 성공적인 연결은 브라우저가 주변 장치에 도달할 수 있고 주변 장치가 GATT 테이블의 적어도 일부를 노출함을 알려줍니다. 배터리 서비스, 장치 정보, 심박수, 휴먼 인터페이스 장치 및 환경 감지와 같은 표준 서비스는 쉽게 인식할 수 있습니다. 사용자 정의 UUID는 일반적으로 펌웨어별 기능을 가리키며 소스 코드 또는 공급업체 문서의 특성 맵이 필요합니다.',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'table',
|
|
168
|
+
headers: ['증상', '가능한 원인', '실용적인 해결책'],
|
|
169
|
+
rows: [
|
|
170
|
+
['권한 선택기가 비어 있음', '장치가 광고하지 않거나 브라우저 지원이 누락됨.', '장치를 재부팅하고, 페어링 모드를 활성화하고, 더 가까이 이동하거나 Chrome/Edge에서 다시 시도하세요.'],
|
|
171
|
+
['연결이 즉시 실패함', '장치가 사용 중이거나, 범위를 벗어났거나, 브라우저 연결을 거부함.', '공급업체 앱을 분리하고 주변 장치를 컴퓨터 가까이에 두세요.'],
|
|
172
|
+
['서비스가 나열되지 않음', 'GATT를 사용할 수 없거나, 서비스가 숨겨졌거나, 해당 UUID에 대한 액세스가 부여되지 않음.', '펌웨어 테스트에서 알려진 선택적 서비스를 추가하거나 네이티브 BLE 도구로 검사하세요.'],
|
|
173
|
+
['사용자 정의 UUID만 나타남', '하드웨어가 공급업체별 펌웨어 서비스를 사용함.', 'UUID를 소스 코드 상수에 매핑하고 특성 읽기/쓰기 권한을 문서화하세요.'],
|
|
174
|
+
],
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'title',
|
|
178
|
+
text: '보안 및 개인정보 보호 제한',
|
|
179
|
+
level: 3,
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
type: 'list',
|
|
183
|
+
items: [
|
|
184
|
+
'페이지는 백그라운드에서 근처의 Bluetooth 장치를 조용히 수집할 수 없습니다.',
|
|
185
|
+
'브라우저는 실제 MAC 주소를 숨기고 대신 범위가 지정된 장치 ID를 제공할 수 있습니다.',
|
|
186
|
+
'사용자가 스캔 버튼을 클릭하고 장치를 선택한 후에만 액세스가 시작됩니다.',
|
|
187
|
+
'결과는 GameBob에 의해 업로드되거나 저장되지 않습니다.',
|
|
188
|
+
'민감한 상용 장치는 이 일반 스캐너가 우회할 수 없는 암호화 또는 공급업체 페어링 흐름이 필요할 수 있습니다.',
|
|
189
|
+
],
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
ui: {
|
|
193
|
+
unsupportedTitle: 'Web Bluetooth를 사용할 수 없습니다',
|
|
194
|
+
unsupportedBody: '데스크톱 또는 Android에서 Chrome 또는 Edge를 사용해 보고, Bluetooth를 활성화한 후 HTTPS 또는 localhost를 통해 페이지를 여세요.',
|
|
195
|
+
secureContext: 'Web Bluetooth에는 보안 HTTPS 페이지 또는 localhost가 필요합니다. 보안 출처에서 도구를 다시 로드하고 다시 시도하세요.',
|
|
196
|
+
scanButton: '환경 스캔',
|
|
197
|
+
scanning: '스캔 중',
|
|
198
|
+
reconnect: '다시 스캔',
|
|
199
|
+
disconnect: '연결 해제',
|
|
200
|
+
privacyTitle: '설계에 의한 개인정보 보호',
|
|
201
|
+
privacyBody: 'GameBob은 MAC 주소, 장치 ID, 이름, UUID 또는 스캔 기록을 저장하지 않습니다. 브라우저는 선택한 장치만 노출합니다.',
|
|
202
|
+
deviceLabel: '선택된 장치',
|
|
203
|
+
nameFallback: '이름 없는 BLE 장치',
|
|
204
|
+
idLabel: '브라우저 장치 ID',
|
|
205
|
+
servicesLabel: 'GATT 서비스',
|
|
206
|
+
noServices: '이 연결에 대해 읽을 수 있는 기본 서비스가 반환되지 않았습니다.',
|
|
207
|
+
statusIdle: '근처 BLE 하드웨어를 스캔할 준비가 되었습니다',
|
|
208
|
+
statusPermission: '브라우저 권한 선택기 대기 중',
|
|
209
|
+
statusConnecting: '선택한 BLE 장치에 연결 중',
|
|
210
|
+
statusConnected: '연결됨 및 서비스 로드됨',
|
|
211
|
+
statusDisconnected: '장치 연결 해제됨',
|
|
212
|
+
statusCancelled: 'BLE 장치가 선택되지 않았거나 이 장치에서 Bluetooth가 꺼져 있거나 사용할 수 없습니다.',
|
|
213
|
+
statusUnavailable: '이 장치에서 Bluetooth가 꺼져 있거나, 차단되었거나, 없는 것 같습니다. Bluetooth를 활성화하거나 BLE 어댑터가 있는 하드웨어에서 시도하세요.',
|
|
214
|
+
statusError: 'Bluetooth 스캔 실패',
|
|
215
|
+
signalUnknown: '신호 강도는 브라우저 선택기에 의해 제어됩니다',
|
|
216
|
+
gattUnavailable: '이 장치는 브라우저에 GATT 서버를 노출하지 않았습니다',
|
|
217
|
+
customServiceName: '사용자 정의 또는 공급업체별 서비스',
|
|
218
|
+
serviceGenericAccess: '일반 액세스',
|
|
219
|
+
serviceGenericAttribute: '일반 속성',
|
|
220
|
+
serviceDeviceInformation: '장치 정보',
|
|
221
|
+
serviceHeartRate: '심박수',
|
|
222
|
+
serviceBattery: '배터리 서비스',
|
|
223
|
+
serviceHumanInterfaceDevice: '휴먼 인터페이스 장치',
|
|
224
|
+
serviceCyclingSpeedCadence: '사이클링 속도 및 케이던스',
|
|
225
|
+
serviceEnvironmentalSensing: '환경 감지',
|
|
226
|
+
serviceUserData: '사용자 데이터',
|
|
227
|
+
serviceFitnessMachine: '피트니스 머신',
|
|
228
|
+
uuidHelp: 'UUID는 Bluetooth 서비스를 식별합니다. 표준 서비스는 자동으로 이름이 지정되며, 공급업체별 UUID는 펌웨어 또는 장치 문서가 필요합니다.',
|
|
229
|
+
compatibilityHint: 'Bluetooth가 활성화된 Chromium 기반 브라우저에서 가장 잘 작동합니다. Web Bluetooth는 의도적으로 권한이 제한되어 있으며 근처의 모든 광고자를 표시하지 않을 수 있습니다.',
|
|
230
|
+
serviceCountSingular: '서비스',
|
|
231
|
+
serviceCountPlural: '서비스',
|
|
232
|
+
},
|
|
233
|
+
};
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { WebBluetoothBleScannerUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'verkenner-ble-web-bluetooth';
|
|
7
|
+
const title = 'Web Bluetooth BLE Verkenner';
|
|
8
|
+
const description = 'Scan Bluetooth Low Energy apparaten in de buurt vanuit de browser, inspecteer blootgestelde GATT service UUIDs en test of uw IoT- of wearable-hardware detecteerbaar is.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Kan een website zonder toestemming Bluetooth-apparaten scannen?',
|
|
13
|
+
answer: 'Nee. Web Bluetooth vereist altijd een gebruikersgebaar en een browsertoestemmingskiezer. Deze tool ziet alleen het apparaat dat u expliciet selecteert en slaat geen MAC-adressen, apparaat-IDs of scanresultaten op.',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
question: 'Waarom toont de scanner niet elk BLE-apparaat in de buurt?',
|
|
17
|
+
answer: 'Browsers stellen Bluetooth opzettelijk bloot via een toestemmingskiezer, niet als een stille achtergrondscanner. Sommige apparaten stoppen ook met adverteren, verbergen hun naam, vereisen koppeling of stellen diensten alleen beschikbaar na een verbinding.',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
question: 'Welke browsers ondersteunen Web Bluetooth?',
|
|
21
|
+
answer: 'Web Bluetooth wordt het best ondersteund in Chromium-gebaseerde desktopbrowsers zoals Chrome en Edge. Het vereist meestal HTTPS of localhost en is niet beschikbaar in veel Firefox-, Safari- en iOS-browserconfiguraties.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
question: 'Kan dit privésensorgegevens van een wearable lezen?',
|
|
25
|
+
answer: 'Alleen als het apparaat compatibele GATT-services blootstelt en de browser toegang verleent. Veel commerciële wearables vereisen leveranciersapps, versleuteling, bonding of propriëtaire kenmerken die een generieke browserscanner niet kan decoderen.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Wat zijn GATT-service-UUIDs?',
|
|
29
|
+
answer: 'Een GATT-service-UUID identificeert een groep Bluetooth Low Energy functies, zoals Batterijservice, Hartslag, Apparaatinformatie of een aangepaste leveranciersservice die wordt gebruikt door maker- en IoT-hardware.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Gebruik een compatibele browser',
|
|
36
|
+
text: 'Open de tool in Chrome of Edge via HTTPS of localhost en zorg ervoor dat Bluetooth is ingeschakeld op de computer of telefoon.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Zet de hardware in advertentiemodus',
|
|
40
|
+
text: 'Activeer het BLE-apparaat, schakel het uit en weer in, druk op de koppelingsknop of open de advertentiemodus zodat het in de browsertoestemmingskiezer verschijnt.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Scan de omgeving',
|
|
44
|
+
text: 'Druk op Omgeving scannen en selecteer het BLE-apparaat dat u wilt inspecteren. De browsertoestemmingsdialoog bepaalt precies welk apparaat zichtbaar wordt voor de pagina.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Lees de GATT-services',
|
|
48
|
+
text: 'Controleer na verbinding de service-UUID-kaarten om standaard Bluetooth-profielen, aangepaste firmwareservices en of het apparaat het verwachte gegevenspad blootstelt te identificeren.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowTo> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'DeveloperApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
|
|
83
|
+
inLanguage: 'nl',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<WebBluetoothBleScannerUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
89
|
+
description,
|
|
90
|
+
faq: faqData,
|
|
91
|
+
bibliography,
|
|
92
|
+
howTo: howToData,
|
|
93
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
seo: [
|
|
95
|
+
{
|
|
96
|
+
type: 'title',
|
|
97
|
+
text: 'BLE Tester online voor IoT, Wearables en Maker Hardware',
|
|
98
|
+
level: 2,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'paragraph',
|
|
102
|
+
html: 'Deze Web Bluetooth scanner stelt u in staat te testen of een nabijgelegen Bluetooth Low Energy apparaat detecteerbaar is vanuit een browser en welke GATT-services het blootstelt na het verlenen van toestemming. Het is nuttig bij het debuggen van ESP32 firmware, Arduino BLE schetsen, slimme sensoren, fitnesswearables, toetsenborden, aangepaste bakens, omgevingsmonitors en prototypehardware voordat u een native mobiele app bouwt.',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'message',
|
|
106
|
+
title: 'Privacy model',
|
|
107
|
+
html: 'GameBob slaat geen MAC-adressen, apparaat-IDs, namen, UUIDs, signaalgegevens of scangeschiedenis op. De browsertoestemmingskiezer bepaalt welk apparaat de pagina kan raadplegen en resultaten blijven in uw huidige browsersessie.',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'table',
|
|
111
|
+
headers: ['Wat u ziet', 'Wat het betekent', 'Wat u vervolgens moet controleren'],
|
|
112
|
+
rows: [
|
|
113
|
+
['Apparaatnaam', 'De geadverteerde Bluetooth-naam, als de hardware er een uitzendt.', 'Als het leeg is, controleer dan de firmware-advertentiegegevens of gebruik een bekende naamvoorvoegsel tijdens het testen.'],
|
|
114
|
+
['Apparaat-ID', 'Een browser-gebonden identificatie, niet het ruwe openbare MAC-adres.', 'Gebruik het alleen voor deze browsersessie; behandel het niet als een universeel hardware serienummer.'],
|
|
115
|
+
['GATT-service-UUIDs', 'De servicegroepen die worden blootgesteld na het accepteren van de verbinding.', 'Vergelijk standaard-UUIDs met de Bluetooth SIG-lijst of uw firmware-servicetabel.'],
|
|
116
|
+
['Aangepaste service', 'Een leverancierspecifieke of projectspecifieke UUID.', 'Open uw firmware, mobiele app-profiel of BLE-documentatie om kenmerken en rechten te mappen.'],
|
|
117
|
+
],
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'title',
|
|
121
|
+
text: 'Waarom Browser Bluetooth Scannen Anders Is',
|
|
122
|
+
level: 3,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'paragraph',
|
|
126
|
+
html: 'Native BLE scanner apps tonen vaak continue advertenties van veel nabijgelegen apparaten. Web Bluetooth is opzettelijk strenger: de pagina moet worden geopend in een veilige context, de scan moet starten vanuit een gebruikersklik en de browser toont een toestemmingskiezer. Dit beschermt gebruikers tegen stille tracking terwijl ontwikkelaars nog steeds een praktische manier hebben om verbinding te maken met geselecteerde BLE-hardware vanuit JavaScript.',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'comparative',
|
|
130
|
+
items: [
|
|
131
|
+
{
|
|
132
|
+
title: 'Web Bluetooth scanner',
|
|
133
|
+
description: 'Het beste voor snelle firmwarevalidatie, demo\'s, ondersteuningsstromen, klassikale labs en browsergebaseerde diagnostiek waar installatiefrictie belangrijk is.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
title: 'Native BLE app',
|
|
137
|
+
description: 'Beter voor achtergrondscannen, RSSI-logging, koppelingsworkflows, versleutelde leveranciersprotocollen, grote kenmerkenbomen en langdurige velddiagnostiek.',
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: 'title',
|
|
143
|
+
text: 'Veelvoorkomende Redenen Waarom een BLE Apparaat Niet Verschijnt',
|
|
144
|
+
level: 3,
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
type: 'list',
|
|
148
|
+
items: [
|
|
149
|
+
'Bluetooth is uitgeschakeld op besturingssysteemniveau of de browser heeft geen Bluetooth-toestemming.',
|
|
150
|
+
'Het apparaat is verbonden met een andere telefoon, laptop, leveranciersapp of gateway en is gestopt met adverteren.',
|
|
151
|
+
'De hardware adverteert alleen gedurende een kort venster na het opstarten of na het indrukken van een koppelingsknop.',
|
|
152
|
+
'De browser is niet Chromium-gebaseerd, de pagina wordt niet via HTTPS aangeboden of het platform blokkeert Web Bluetooth.',
|
|
153
|
+
'De firmware adverteert fabrikantgegevens maar verbergt de lokale naam, dus de kiezer kan een naamloos apparaat tonen.',
|
|
154
|
+
'Het apparaat vereist bonding, versleuteling of propriëtaire authenticatie voordat services leesbaar worden.',
|
|
155
|
+
],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
type: 'title',
|
|
159
|
+
text: 'Hoe GATT-UUIDs te Gebruiken Tijdens Debuggen',
|
|
160
|
+
level: 3,
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'paragraph',
|
|
164
|
+
html: 'Een succesvolle verbinding met service-UUIDs vertelt u dat de browser het randapparaat kan bereiken en dat het randapparaat ten minste een deel van zijn GATT-tabel blootstelt. Standaardservices zoals Batterijservice, Apparaatinformatie, Hartslag, Human Interface Device en Omgevingsdetectie zijn gemakkelijk te herkennen. Aangepaste UUIDs wijzen meestal naar firmwarespecifieke functies en hebben de kenmerkenkaart uit uw broncode of leveranciersdocumentatie nodig.',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'table',
|
|
168
|
+
headers: ['Symptoom', 'Waarschijnlijke oorzaak', 'Praktische oplossing'],
|
|
169
|
+
rows: [
|
|
170
|
+
['Toestemmingskiezer is leeg', 'Apparaat adverteert niet of browserondersteuning ontbreekt.', 'Herstart het apparaat, schakel de koppelingsmodus in, kom dichterbij of probeer opnieuw in Chrome/Edge.'],
|
|
171
|
+
['Verbinding mislukt onmiddellijk', 'Apparaat is bezet, buiten bereik of weigert de browserverbinding.', 'Verbreek leveranciersapps en houd het randapparaat dicht bij de computer.'],
|
|
172
|
+
['Geen services vermeld', 'GATT is niet beschikbaar, services zijn verborgen of toegang is niet verleend voor die UUIDs.', 'Voeg bekende optionele services toe in firmwaretests of inspecteer met een native BLE-tool.'],
|
|
173
|
+
['Alleen aangepaste UUIDs verschijnen', 'De hardware gebruikt leverancierspecifieke firmwareservices.', 'Wijs UUIDs toe aan broncodeconstanten en documenteer lees-/schrijfrechten van kenmerken.'],
|
|
174
|
+
],
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'title',
|
|
178
|
+
text: 'Beveiligings- en Privacygrenzen',
|
|
179
|
+
level: 3,
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
type: 'list',
|
|
183
|
+
items: [
|
|
184
|
+
'De pagina kan niet stilzwijgend nabijgelegen Bluetooth-apparaten op de achtergrond verzamelen.',
|
|
185
|
+
'De browser kan echte MAC-adressen verbergen en in plaats daarvan een gebonden apparaat-ID verstrekken.',
|
|
186
|
+
'Toegang begint pas nadat de gebruiker op de scanknop klikt en een apparaat kiest.',
|
|
187
|
+
'Resultaten worden niet geüpload of opgeslagen door GameBob.',
|
|
188
|
+
'Gevoelige commerciële apparaten kunnen versleuteling of een leverancierskoppelingsstroom vereisen die deze generieke scanner niet kan omzeilen.',
|
|
189
|
+
],
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
ui: {
|
|
193
|
+
unsupportedTitle: 'Web Bluetooth is niet beschikbaar',
|
|
194
|
+
unsupportedBody: 'Probeer Chrome of Edge op desktop of Android, schakel Bluetooth in en open de pagina via HTTPS of localhost.',
|
|
195
|
+
secureContext: 'Web Bluetooth vereist een beveiligde HTTPS-pagina of localhost. Herlaad de tool vanaf een veilige oorsprong en probeer opnieuw.',
|
|
196
|
+
scanButton: 'Omgeving scannen',
|
|
197
|
+
scanning: 'Scannen',
|
|
198
|
+
reconnect: 'Opnieuw scannen',
|
|
199
|
+
disconnect: 'Verbreken',
|
|
200
|
+
privacyTitle: 'Privacy door ontwerp',
|
|
201
|
+
privacyBody: 'GameBob slaat geen MAC-adressen, apparaat-IDs, namen, UUIDs of scangeschiedenis op. De browser stelt alleen het apparaat bloot dat u kiest.',
|
|
202
|
+
deviceLabel: 'Geselecteerd apparaat',
|
|
203
|
+
nameFallback: 'Naamloos BLE apparaat',
|
|
204
|
+
idLabel: 'Browser apparaat-ID',
|
|
205
|
+
servicesLabel: 'GATT services',
|
|
206
|
+
noServices: 'Er zijn geen leesbare primaire services geretourneerd voor deze verbinding.',
|
|
207
|
+
statusIdle: 'Klaar om nabijgelegen BLE hardware te scannen',
|
|
208
|
+
statusPermission: 'Wachten op de browsertoestemmingskiezer',
|
|
209
|
+
statusConnecting: 'Verbinden met het geselecteerde BLE apparaat',
|
|
210
|
+
statusConnected: 'Verbonden en services geladen',
|
|
211
|
+
statusDisconnected: 'Apparaat verbroken',
|
|
212
|
+
statusCancelled: 'Er is geen BLE apparaat geselecteerd, of Bluetooth is uitgeschakeld/niet beschikbaar op dit apparaat.',
|
|
213
|
+
statusUnavailable: 'Bluetooth lijkt uitgeschakeld, geblokkeerd of ontbreekt op dit apparaat. Schakel Bluetooth in of probeer vanaf hardware met een BLE adapter.',
|
|
214
|
+
statusError: 'Bluetooth scan mislukt',
|
|
215
|
+
signalUnknown: 'Signaalsterkte wordt bepaald door de browserkiezer',
|
|
216
|
+
gattUnavailable: 'Dit apparaat heeft geen GATT server aan de browser blootgesteld',
|
|
217
|
+
customServiceName: 'Aangepaste of leverancierspecifieke service',
|
|
218
|
+
serviceGenericAccess: 'Generieke Toegang',
|
|
219
|
+
serviceGenericAttribute: 'Generiek Attribuut',
|
|
220
|
+
serviceDeviceInformation: 'Apparaatinformatie',
|
|
221
|
+
serviceHeartRate: 'Hartslag',
|
|
222
|
+
serviceBattery: 'Batterijservice',
|
|
223
|
+
serviceHumanInterfaceDevice: 'Human Interface Device',
|
|
224
|
+
serviceCyclingSpeedCadence: 'Fietssnelheid en Cadans',
|
|
225
|
+
serviceEnvironmentalSensing: 'Omgevingsdetectie',
|
|
226
|
+
serviceUserData: 'Gebruikersgegevens',
|
|
227
|
+
serviceFitnessMachine: 'Fitnessapparaat',
|
|
228
|
+
uuidHelp: 'UUIDs identificeren Bluetooth-services. Standaardservices worden automatisch benoemd; leverancierspecifieke UUIDs hebben uw firmware- of apparaatdocumentatie nodig.',
|
|
229
|
+
compatibilityHint: 'Werkt het beste in Chromium-gebaseerde browsers met Bluetooth ingeschakeld. Web Bluetooth is opzettelijk toestemmingsbeperkt en toont mogelijk niet elke nabijgelegen adverteerder.',
|
|
230
|
+
serviceCountSingular: 'service',
|
|
231
|
+
serviceCountPlural: 'services',
|
|
232
|
+
},
|
|
233
|
+
};
|