@jjlmoya/utils-hardware 1.24.0 → 1.25.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.
Files changed (55) hide show
  1. package/package.json +2 -1
  2. package/src/category/index.ts +3 -1
  3. package/src/entries.ts +7 -1
  4. package/src/index.ts +2 -0
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/keyboardChatterTest/bibliography.astro +15 -0
  8. package/src/tool/keyboardChatterTest/bibliography.ts +20 -0
  9. package/src/tool/keyboardChatterTest/component.astro +353 -0
  10. package/src/tool/keyboardChatterTest/entry.ts +30 -0
  11. package/src/tool/keyboardChatterTest/i18n/de.ts +232 -0
  12. package/src/tool/keyboardChatterTest/i18n/en.ts +232 -0
  13. package/src/tool/keyboardChatterTest/i18n/es.ts +232 -0
  14. package/src/tool/keyboardChatterTest/i18n/fr.ts +232 -0
  15. package/src/tool/keyboardChatterTest/i18n/id.ts +232 -0
  16. package/src/tool/keyboardChatterTest/i18n/it.ts +232 -0
  17. package/src/tool/keyboardChatterTest/i18n/ja.ts +232 -0
  18. package/src/tool/keyboardChatterTest/i18n/ko.ts +232 -0
  19. package/src/tool/keyboardChatterTest/i18n/nl.ts +232 -0
  20. package/src/tool/keyboardChatterTest/i18n/pl.ts +232 -0
  21. package/src/tool/keyboardChatterTest/i18n/pt.ts +232 -0
  22. package/src/tool/keyboardChatterTest/i18n/ru.ts +232 -0
  23. package/src/tool/keyboardChatterTest/i18n/sv.ts +232 -0
  24. package/src/tool/keyboardChatterTest/i18n/tr.ts +232 -0
  25. package/src/tool/keyboardChatterTest/i18n/zh.ts +232 -0
  26. package/src/tool/keyboardChatterTest/index.ts +12 -0
  27. package/src/tool/keyboardChatterTest/keyboard-chatter-test.css +512 -0
  28. package/src/tool/keyboardChatterTest/logic.ts +23 -0
  29. package/src/tool/keyboardChatterTest/seo.astro +16 -0
  30. package/src/tool/keyboardChatterTest/ui.ts +34 -0
  31. package/src/tool/webBluetoothBleScanner/bibliography.astro +14 -0
  32. package/src/tool/webBluetoothBleScanner/bibliography.ts +16 -0
  33. package/src/tool/webBluetoothBleScanner/component.astro +339 -0
  34. package/src/tool/webBluetoothBleScanner/entry.ts +29 -0
  35. package/src/tool/webBluetoothBleScanner/i18n/de.ts +233 -0
  36. package/src/tool/webBluetoothBleScanner/i18n/en.ts +233 -0
  37. package/src/tool/webBluetoothBleScanner/i18n/es.ts +233 -0
  38. package/src/tool/webBluetoothBleScanner/i18n/fr.ts +233 -0
  39. package/src/tool/webBluetoothBleScanner/i18n/id.ts +233 -0
  40. package/src/tool/webBluetoothBleScanner/i18n/it.ts +233 -0
  41. package/src/tool/webBluetoothBleScanner/i18n/ja.ts +233 -0
  42. package/src/tool/webBluetoothBleScanner/i18n/ko.ts +233 -0
  43. package/src/tool/webBluetoothBleScanner/i18n/nl.ts +233 -0
  44. package/src/tool/webBluetoothBleScanner/i18n/pl.ts +233 -0
  45. package/src/tool/webBluetoothBleScanner/i18n/pt.ts +233 -0
  46. package/src/tool/webBluetoothBleScanner/i18n/ru.ts +233 -0
  47. package/src/tool/webBluetoothBleScanner/i18n/sv.ts +233 -0
  48. package/src/tool/webBluetoothBleScanner/i18n/tr.ts +233 -0
  49. package/src/tool/webBluetoothBleScanner/i18n/zh.ts +233 -0
  50. package/src/tool/webBluetoothBleScanner/index.ts +11 -0
  51. package/src/tool/webBluetoothBleScanner/logic.ts +79 -0
  52. package/src/tool/webBluetoothBleScanner/seo.astro +15 -0
  53. package/src/tool/webBluetoothBleScanner/ui.ts +41 -0
  54. package/src/tool/webBluetoothBleScanner/web-bluetooth-ble-scanner.css +406 -0
  55. package/src/tools.ts +3 -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 = 'skaner-ble-web-bluetooth';
7
+ const title = 'Skaner Web Bluetooth BLE';
8
+ const description = 'Skanuj pobliskie urządzenia Bluetooth Low Energy z przeglądarki, sprawdzaj wyeksponowane UUID usług GATT i testuj, czy Twój sprzęt IoT lub wearable jest wykrywalny.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Czy strona internetowa może skanować urządzenia Bluetooth bez pozwolenia?',
13
+ answer: 'Nie. Web Bluetooth zawsze wymaga gestu użytkownika i wyboru uprawnień przeglądarki. To narzędzie widzi tylko urządzenie, które wyraźnie wybierzesz i nie przechowuje adresów MAC, identyfikatorów urządzeń ani wyników skanowania.',
14
+ },
15
+ {
16
+ question: 'Dlaczego skaner nie pokazuje każdego pobliskiego urządzenia BLE?',
17
+ answer: 'Przeglądarki celowo udostępniają Bluetooth poprzez wybór uprawnień, a nie jako cichy skaner w tle. Niektóre urządzenia również przestają nadawać, ukrywają swoją nazwę, wymagają parowania lub udostępniają usługi dopiero po nawiązaniu połączenia.',
18
+ },
19
+ {
20
+ question: 'Które przeglądarki obsługują Web Bluetooth?',
21
+ answer: 'Web Bluetooth jest najlepiej obsługiwany w przeglądarkach stacjonarnych opartych na Chromium, takich jak Chrome i Edge. Zazwyczaj wymaga HTTPS lub localhost i nie jest dostępny w wielu konfiguracjach Firefox, Safari i przeglądarek iOS.',
22
+ },
23
+ {
24
+ question: 'Czy może odczytywać prywatne dane z czujników z wearables?',
25
+ answer: 'Tylko jeśli urządzenie udostępnia kompatybilne usługi GATT, a przeglądarka przyznaje dostęp. Wiele komercyjnych wearables wymaga aplikacji dostawcy, szyfrowania, parowania lub właściwości zastrzeżonych, których ogólny skaner przeglądarki nie może zdekodować.',
26
+ },
27
+ {
28
+ question: 'Czym są UUID usług GATT?',
29
+ answer: 'UUID usługi GATT identyfikuje grupę funkcji Bluetooth Low Energy, takich jak Usługa Baterii, Tętno, Informacje o Urządzeniu lub niestandardowa usługa dostawcy używana przez sprzęt maker i IoT.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Użyj zgodnej przeglądarki',
36
+ text: 'Otwórz narzędzie w Chrome lub Edge przez HTTPS lub localhost, a następnie upewnij się, że Bluetooth jest włączony na komputerze lub telefonie.',
37
+ },
38
+ {
39
+ name: 'Przełącz sprzęt w tryb nadawania',
40
+ text: 'Obudź urządzenie BLE, wyłącz je i włącz ponownie, naciśnij przycisk parowania lub otwórz tryb nadawania, aby pojawiło się w selektorze uprawnień przeglądarki.',
41
+ },
42
+ {
43
+ name: 'Skanuj środowisko',
44
+ text: 'Naciśnij Skanuj Środowisko i wybierz urządzenie BLE, które chcesz sprawdzić. Okno dialogowe uprawnień przeglądarki dokładnie kontroluje, które urządzenie staje się widoczne dla strony.',
45
+ },
46
+ {
47
+ name: 'Odczytaj usługi GATT',
48
+ text: 'Po nawiązaniu połączenia przejrzyj karty UUID usług, aby zidentyfikować standardowe profile Bluetooth, niestandardowe usługi firmware i czy urządzenie udostępnia oczekiwaną ścieżkę danych.',
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: 'pl',
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: 'Tester BLE online dla IoT, Wearables i Sprzętu Maker',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'Ten skaner Web Bluetooth pozwala testować, czy pobliskie urządzenie Bluetooth Low Energy jest wykrywalne z przeglądarki i jakie usługi GATT udostępnia po przyznaniu uprawnień. Jest przydatny podczas debugowania firmware ESP32, szkiców Arduino BLE, inteligentnych czujników, wearables fitness, klawiatur, niestandardowych beaconów, monitorów środowiskowych i prototypowego sprzętu przed zbudowaniem natywnej aplikacji mobilnej.',
103
+ },
104
+ {
105
+ type: 'message',
106
+ title: 'Model prywatności',
107
+ html: 'GameBob nie przechowuje adresów MAC, identyfikatorów urządzeń, nazw, UUID, danych sygnału ani historii skanowania. Selektor uprawnień przeglądarki decyduje, do którego pojedynczego urządzenia strona może uzyskać dostęp, a wyniki pozostają w bieżącej sesji przeglądarki.',
108
+ },
109
+ {
110
+ type: 'table',
111
+ headers: ['Co widzisz', 'Co to oznacza', 'Co sprawdzić dalej'],
112
+ rows: [
113
+ ['Nazwa urządzenia', 'Nadawana nazwa Bluetooth, jeśli sprzęt ją transmituje.', 'Jeśli jest pusta, sprawdź dane nadawania firmware lub użyj znanego prefiksu nazwy podczas testowania.'],
114
+ ['ID urządzenia', 'Identyfikator ograniczony do przeglądarki, a nie surowy publiczny adres MAC.', 'Używaj go tylko dla tej sesji przeglądarki; nie traktuj go jako uniwersalnego numeru seryjnego sprzętu.'],
115
+ ['UUID usług GATT', 'Grupy usług wyeksponowane po zaakceptowaniu połączenia.', 'Porównaj standardowe UUID z listą Bluetooth SIG lub tabelą usług firmware.'],
116
+ ['Usługa niestandardowa', 'UUID specyficzny dla dostawcy lub projektu.', 'Otwórz firmware, profil aplikacji mobilnej lub dokumentację BLE, aby zmapować charakterystyki i uprawnienia.'],
117
+ ],
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'Dlaczego skanowanie Bluetooth w przeglądarce jest inne',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: 'Natywne aplikacje skanera BLE często wyświetlają ciągłe nadawanie z wielu pobliskich urządzeń. Web Bluetooth jest celowo bardziej restrykcyjny: strona musi być otwarta w bezpiecznym kontekście, skanowanie musi rozpocząć się od kliknięcia użytkownika, a przeglądarka wyświetla selektor uprawnień. Chroni to użytkowników przed cichym śledzeniem, jednocześnie dając deweloperom praktyczny sposób połączenia się z wybranym sprzętem BLE z poziomu JavaScript.',
127
+ },
128
+ {
129
+ type: 'comparative',
130
+ items: [
131
+ {
132
+ title: 'Skaner Web Bluetooth',
133
+ description: 'Najlepszy do szybkiej walidacji firmware, demonstracji, przepływów wsparcia, laboratoriów szkolnych i diagnostyki opartej na przeglądarce, gdzie tarcie instalacyjne ma znaczenie.',
134
+ },
135
+ {
136
+ title: 'Natywna aplikacja BLE',
137
+ description: 'Lepsza do skanowania w tle, rejestrowania RSSI, przepływów parowania, szyfrowanych protokołów dostawcy, dużych drzew charakterystyk i długoterminowej diagnostyki terenowej.',
138
+ },
139
+ ],
140
+ },
141
+ {
142
+ type: 'title',
143
+ text: 'Częste powody, dla których urządzenie BLE się nie pojawia',
144
+ level: 3,
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ 'Bluetooth jest wyłączony na poziomie systemu operacyjnego lub przeglądarka nie ma uprawnień Bluetooth.',
150
+ 'Urządzenie jest połączone z innym telefonem, laptopem, aplikacją dostawcy lub bramą i przestało nadawać.',
151
+ 'Sprzęt nadaje tylko przez krótki czas po uruchomieniu lub po naciśnięciu przycisku parowania.',
152
+ 'Przeglądarka nie jest oparta na Chromium, strona nie jest obsługiwana przez HTTPS lub platforma blokuje Web Bluetooth.',
153
+ 'Firmware nadaje dane producenta, ale ukrywa nazwę lokalną, więc selektor może pokazać nienazwane urządzenie.',
154
+ 'Urządzenie wymaga parowania, szyfrowania lub zastrzeżonego uwierzytelniania, zanim usługi staną się czytelne.',
155
+ ],
156
+ },
157
+ {
158
+ type: 'title',
159
+ text: 'Jak używać UUID GATT podczas debugowania',
160
+ level: 3,
161
+ },
162
+ {
163
+ type: 'paragraph',
164
+ html: 'Udane połączenie z UUID usług informuje, że przeglądarka może osiągnąć urządzenie peryferyjne i że urządzenie peryferyjne udostępnia przynajmniej część swojej tabeli GATT. Standardowe usługi, takie jak Usługa Baterii, Informacje o Urządzeniu, Tętno, Urządzenie Interfejsu Człowieka i Wykrywanie Środowiskowe, są łatwe do rozpoznania. Niestandardowe UUID zazwyczaj wskazują na funkcje specyficzne dla firmware i wymagają mapy charakterystyk z kodu źródłowego lub dokumentacji dostawcy.',
165
+ },
166
+ {
167
+ type: 'table',
168
+ headers: ['Objaw', 'Prawdopodobna przyczyna', 'Praktyczne rozwiązanie'],
169
+ rows: [
170
+ ['Selektor uprawnień jest pusty', 'Urządzenie nie nadaje lub brak obsługi przeglądarki.', 'Uruchom ponownie urządzenie, włącz tryb parowania, podejdź bliżej lub spróbuj ponownie w Chrome/Edge.'],
171
+ ['Połączenie natychmiast się nie udaje', 'Urządzenie jest zajęte, poza zasięgiem lub odrzuca połączenie przeglądarki.', 'Odłącz aplikacje dostawcy i trzymaj urządzenie peryferyjne blisko komputera.'],
172
+ ['Brak usług na liście', 'GATT jest niedostępny, usługi są ukryte lub nie przyznano dostępu dla tych UUID.', 'Dodaj znane opcjonalne usługi w testach firmware lub sprawdź za pomocą natywnego narzędzia BLE.'],
173
+ ['Pojawiają się tylko niestandardowe UUID', 'Sprzęt używa usług firmware specyficznych dla dostawcy.', 'Zmapuj UUID na stałe kodu źródłowego i udokumentuj uprawnienia odczytu/zapisu charakterystyk.'],
174
+ ],
175
+ },
176
+ {
177
+ type: 'title',
178
+ text: 'Ograniczenia bezpieczeństwa i prywatności',
179
+ level: 3,
180
+ },
181
+ {
182
+ type: 'list',
183
+ items: [
184
+ 'Strona nie może po cichu zbierać pobliskich urządzeń Bluetooth w tle.',
185
+ 'Przeglądarka może ukrywać rzeczywiste adresy MAC i zamiast tego udostępniać identyfikator urządzenia ograniczony do sesji.',
186
+ 'Dostęp rozpoczyna się dopiero po kliknięciu przez użytkownika przycisku skanowania i wybraniu urządzenia.',
187
+ 'Wyniki nie są przesyłane ani przechowywane przez GameBob.',
188
+ 'Wrażliwe urządzenia komercyjne mogą wymagać szyfrowania lub przepływu parowania dostawcy, którego ten ogólny skaner nie może ominąć.',
189
+ ],
190
+ },
191
+ ],
192
+ ui: {
193
+ unsupportedTitle: 'Web Bluetooth nie jest dostępny',
194
+ unsupportedBody: 'Spróbuj Chrome lub Edge na komputerze lub Androidzie, włącz Bluetooth i otwórz stronę przez HTTPS lub localhost.',
195
+ secureContext: 'Web Bluetooth wymaga bezpiecznej strony HTTPS lub localhost. Załaduj ponownie narzędzie z bezpiecznego źródła i spróbuj ponownie.',
196
+ scanButton: 'Skanuj Środowisko',
197
+ scanning: 'Skanowanie',
198
+ reconnect: 'Skanuj ponownie',
199
+ disconnect: 'Rozłącz',
200
+ privacyTitle: 'Prywatność projektowa',
201
+ privacyBody: 'GameBob nie przechowuje adresów MAC, identyfikatorów urządzeń, nazw, UUID ani historii skanowania. Przeglądarka udostępnia tylko wybrane przez Ciebie urządzenie.',
202
+ deviceLabel: 'Wybrane urządzenie',
203
+ nameFallback: 'Nienazwane urządzenie BLE',
204
+ idLabel: 'ID urządzenia przeglądarki',
205
+ servicesLabel: 'Usługi GATT',
206
+ noServices: 'Nie zwrócono żadnych czytelnych usług podstawowych dla tego połączenia.',
207
+ statusIdle: 'Gotowy do skanowania pobliskiego sprzętu BLE',
208
+ statusPermission: 'Oczekiwanie na selektor uprawnień przeglądarki',
209
+ statusConnecting: 'Łączenie z wybranym urządzeniem BLE',
210
+ statusConnected: 'Połączono i usługi załadowane',
211
+ statusDisconnected: 'Urządzenie rozłączone',
212
+ statusCancelled: 'Nie wybrano urządzenia BLE lub Bluetooth jest wyłączony/niedostępny na tym urządzeniu.',
213
+ statusUnavailable: 'Bluetooth wydaje się być wyłączony, zablokowany lub nieobecny na tym urządzeniu. Włącz Bluetooth lub spróbuj ze sprzętu wyposażonego w adapter BLE.',
214
+ statusError: 'Skanowanie Bluetooth nie powiodło się',
215
+ signalUnknown: 'Siła sygnału jest kontrolowana przez selektor przeglądarki',
216
+ gattUnavailable: 'To urządzenie nie udostępniło serwera GATT przeglądarce',
217
+ customServiceName: 'Usługa niestandardowa lub specyficzna dla dostawcy',
218
+ serviceGenericAccess: 'Dostęp Ogólny',
219
+ serviceGenericAttribute: 'Atrybut Ogólny',
220
+ serviceDeviceInformation: 'Informacje o Urządzeniu',
221
+ serviceHeartRate: 'Tętno',
222
+ serviceBattery: 'Usługa Baterii',
223
+ serviceHumanInterfaceDevice: 'Urządzenie Interfejsu Człowieka',
224
+ serviceCyclingSpeedCadence: 'Prędkość i Kadencja Jazdy na Rowerze',
225
+ serviceEnvironmentalSensing: 'Wykrywanie Środowiskowe',
226
+ serviceUserData: 'Dane Użytkownika',
227
+ serviceFitnessMachine: 'Maszyna Fitness',
228
+ uuidHelp: 'UUID identyfikują usługi Bluetooth. Standardowe usługi są nazywane automatycznie; UUID specyficzne dla dostawcy wymagają dokumentacji firmware lub urządzenia.',
229
+ compatibilityHint: 'Działa najlepiej w przeglądarkach opartych na Chromium z włączonym Bluetooth. Web Bluetooth jest celowo ograniczony uprawnieniami i może nie pokazywać każdego pobliskiego nadajnika.',
230
+ serviceCountSingular: 'usługa',
231
+ serviceCountPlural: 'usług',
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 = 'escaneador-ble-web-bluetooth';
7
+ const title = 'Scanner Web Bluetooth BLE';
8
+ const description = 'Escaneie dispositivos Bluetooth Low Energy próximos a partir do navegador, inspecione UUIDs de serviços GATT expostos e teste se o seu hardware IoT ou wearable é detetável.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Um site pode escanear dispositivos Bluetooth sem permissão?',
13
+ answer: 'Não. O Web Bluetooth requer sempre um gesto do utilizador e um seletor de permissões do navegador. Esta ferramenta apenas vê o dispositivo que seleciona explicitamente e não armazena endereços MAC, IDs de dispositivo ou resultados de verificação.',
14
+ },
15
+ {
16
+ question: 'Porque é que o scanner não mostra todos os dispositivos BLE próximos?',
17
+ answer: 'Os navegadores expõem intencionalmente o Bluetooth através de um seletor de permissões, não como um scanner silencioso em segundo plano. Alguns dispositivos também param de anunciar, escondem o nome, exigem emparelhamento ou expõem serviços apenas após uma conexão.',
18
+ },
19
+ {
20
+ question: 'Que navegadores suportam Web Bluetooth?',
21
+ answer: 'O Web Bluetooth é melhor suportado em navegadores de desktop baseados em Chromium, como Chrome e Edge. Normalmente requer HTTPS ou localhost e não está disponível em muitas configurações do Firefox, Safari e navegadores iOS.',
22
+ },
23
+ {
24
+ question: 'Pode ler dados privados de sensores de um wearable?',
25
+ answer: 'Apenas se o dispositivo expuser serviços GATT compatíveis e o navegador conceder acesso. Muitos wearables comerciais exigem aplicações do fornecedor, encriptação, vinculação ou características proprietárias que um scanner de navegador genérico não consegue descodificar.',
26
+ },
27
+ {
28
+ question: 'O que são UUIDs de serviço GATT?',
29
+ answer: 'Um UUID de serviço GATT identifica um grupo de funcionalidades Bluetooth Low Energy, como Serviço de Bateria, Frequência Cardíaca, Informação do Dispositivo ou um serviço personalizado do fornecedor usado por hardware maker e IoT.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Use um navegador compatível',
36
+ text: 'Abra a ferramenta no Chrome ou Edge através de HTTPS ou localhost e certifique-se de que o Bluetooth está ativado no computador ou telefone.',
37
+ },
38
+ {
39
+ name: 'Coloque o hardware em modo de anúncio',
40
+ text: 'Ative o dispositivo BLE, desligue e ligue novamente, pressione o botão de emparelhamento ou abra o modo de anúncio para que apareça no seletor de permissões do navegador.',
41
+ },
42
+ {
43
+ name: 'Escaneie o ambiente',
44
+ text: 'Pressione Escanear Ambiente e selecione o dispositivo BLE que deseja inspecionar. A caixa de diálogo de permissões do navegador controla exatamente qual dispositivo se torna visível para a página.',
45
+ },
46
+ {
47
+ name: 'Leia os serviços GATT',
48
+ text: 'Após a conexão, reveja os cartões UUID de serviço para identificar perfis Bluetooth padrão, serviços de firmware personalizados e se o dispositivo expõe o caminho de dados esperado.',
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: 'pt',
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: 'Testador BLE online para IoT, Wearables e Hardware Maker',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'Este scanner Web Bluetooth permite testar se um dispositivo Bluetooth Low Energy próximo é detetável a partir de um navegador e que serviços GATT expõe após a concessão de permissão. É útil ao depurar firmware ESP32, sketches Arduino BLE, sensores inteligentes, wearables de fitness, teclados, beacons personalizados, monitores ambientais e hardware protótipo antes de criar uma aplicação móvel nativa.',
103
+ },
104
+ {
105
+ type: 'message',
106
+ title: 'Modelo de privacidade',
107
+ html: 'A GameBob não armazena endereços MAC, IDs de dispositivo, nomes, UUIDs, dados de sinal ou histórico de verificações. O seletor de permissões do navegador decide qual dispositivo único a página pode aceder e os resultados permanecem na sua sessão atual do navegador.',
108
+ },
109
+ {
110
+ type: 'table',
111
+ headers: ['O que vê', 'O que significa', 'O que verificar a seguir'],
112
+ rows: [
113
+ ['Nome do dispositivo', 'O nome Bluetooth anunciado, se o hardware o transmitir.', 'Se estiver em branco, verifique os dados de anúncio do firmware ou use um prefixo de nome conhecido durante os testes.'],
114
+ ['ID do dispositivo', 'Um identificador com âmbito de navegador, não o endereço MAC público real.', 'Use-o apenas para esta sessão do navegador; não o trate como um número de série universal do hardware.'],
115
+ ['UUIDs de serviço GATT', 'Os grupos de serviços expostos após a aceitação da conexão.', 'Compare UUIDs padrão com a lista Bluetooth SIG ou a sua tabela de serviços do firmware.'],
116
+ ['Serviço personalizado', 'Um UUID específico do fornecedor ou do projeto.', 'Abra o seu firmware, perfil da aplicação móvel ou documentação BLE para mapear características e permissões.'],
117
+ ],
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'Porque a Verificação Bluetooth do Navegador é Diferente',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: 'As aplicações nativas de scanner BLE mostram frequentemente anúncios contínuos de muitos dispositivos próximos. O Web Bluetooth é deliberadamente mais rigoroso: a página deve ser aberta num contexto seguro, a verificação deve começar com um clique do utilizador e o navegador mostra um seletor de permissões. Isto protege os utilizadores contra o rastreamento silencioso, dando aos programadores uma forma prática de se ligarem ao hardware BLE selecionado a partir de JavaScript.',
127
+ },
128
+ {
129
+ type: 'comparative',
130
+ items: [
131
+ {
132
+ title: 'Scanner Web Bluetooth',
133
+ description: 'Ideal para validação rápida de firmware, demonstrações, fluxos de suporte, laboratórios educativos e diagnósticos baseados em navegador onde o atrito de instalação é importante.',
134
+ },
135
+ {
136
+ title: 'Aplicação BLE nativa',
137
+ description: 'Melhor para verificação em segundo plano, registo RSSI, fluxos de emparelhamento, protocolos encriptados do fornecedor, grandes árvores de características e diagnósticos de campo a longo prazo.',
138
+ },
139
+ ],
140
+ },
141
+ {
142
+ type: 'title',
143
+ text: 'Razões Comuns para um Dispositivo BLE Não Aparecer',
144
+ level: 3,
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ 'O Bluetooth está desativado ao nível do sistema operativo ou o navegador não tem permissão de Bluetooth.',
150
+ 'O dispositivo está ligado a outro telefone, portátil, aplicação do fornecedor ou gateway e parou de anunciar.',
151
+ 'O hardware anuncia apenas por uma curta janela após o arranque ou após pressionar um botão de emparelhamento.',
152
+ 'O navegador não é baseado em Chromium, a página não é servida por HTTPS ou a plataforma bloqueia o Web Bluetooth.',
153
+ 'O firmware anuncia dados do fabricante mas esconde o nome local, pelo que o seletor pode mostrar um dispositivo sem nome.',
154
+ 'O dispositivo requer vinculação, encriptação ou autenticação proprietária antes que os serviços se tornem legíveis.',
155
+ ],
156
+ },
157
+ {
158
+ type: 'title',
159
+ text: 'Como Usar UUIDs GATT Durante a Depuração',
160
+ level: 3,
161
+ },
162
+ {
163
+ type: 'paragraph',
164
+ html: 'Uma conexão bem-sucedida com UUIDs de serviço indica que o navegador pode alcançar o periférico e que o periférico expõe pelo menos parte da sua tabela GATT. Serviços padrão como Serviço de Bateria, Informação do Dispositivo, Frequência Cardíaca, Dispositivo de Interface Humana e Deteção Ambiental são fáceis de reconhecer. UUIDs personalizados geralmente apontam para funcionalidades específicas do firmware e precisam do mapa de características do seu código fonte ou documentação do fornecedor.',
165
+ },
166
+ {
167
+ type: 'table',
168
+ headers: ['Sintoma', 'Causa provável', 'Solução prática'],
169
+ rows: [
170
+ ['O seletor de permissões está vazio', 'O dispositivo não está a anunciar ou falta suporte do navegador.', 'Reinicie o dispositivo, ative o modo de emparelhamento, aproxime-se ou tente novamente no Chrome/Edge.'],
171
+ ['A conexão falha imediatamente', 'O dispositivo está ocupado, fora de alcance ou rejeita a conexão do navegador.', 'Desligue as aplicações do fornecedor e mantenha o periférico perto do computador.'],
172
+ ['Nenhum serviço é listado', 'GATT não está disponível, serviços estão ocultos ou o acesso não foi concedido para esses UUIDs.', 'Adicione serviços opcionais conhecidos em testes de firmware ou inspecione com uma ferramenta BLE nativa.'],
173
+ ['Apenas UUIDs personalizados aparecem', 'O hardware usa serviços de firmware específicos do fornecedor.', 'Mapeie UUIDs para constantes do código fonte e documente permissões de leitura/escrita das características.'],
174
+ ],
175
+ },
176
+ {
177
+ type: 'title',
178
+ text: 'Limites de Segurança e Privacidade',
179
+ level: 3,
180
+ },
181
+ {
182
+ type: 'list',
183
+ items: [
184
+ 'A página não pode recolher silenciosamente dispositivos Bluetooth próximos em segundo plano.',
185
+ 'O navegador pode ocultar endereços MAC reais e fornecer um ID de dispositivo com âmbito limitado.',
186
+ 'O acesso só começa depois de o utilizador clicar no botão de verificação e escolher um dispositivo.',
187
+ 'Os resultados não são carregados nem armazenados pela GameBob.',
188
+ 'Dispositivos comerciais sensíveis podem exigir encriptação ou um fluxo de emparelhamento do fornecedor que este scanner genérico não consegue contornar.',
189
+ ],
190
+ },
191
+ ],
192
+ ui: {
193
+ unsupportedTitle: 'Web Bluetooth não está disponível',
194
+ unsupportedBody: 'Experimente o Chrome ou Edge no desktop ou Android, ative o Bluetooth e abra a página através de HTTPS ou localhost.',
195
+ secureContext: 'O Web Bluetooth requer uma página HTTPS segura ou localhost. Recarregue a ferramenta a partir de uma origem segura e tente novamente.',
196
+ scanButton: 'Escanear Ambiente',
197
+ scanning: 'Escaneando',
198
+ reconnect: 'Escanear novamente',
199
+ disconnect: 'Desconectar',
200
+ privacyTitle: 'Privacidade desde a conceção',
201
+ privacyBody: 'A GameBob não armazena endereços MAC, IDs de dispositivo, nomes, UUIDs ou histórico de verificações. O navegador apenas expõe o dispositivo que escolher.',
202
+ deviceLabel: 'Dispositivo selecionado',
203
+ nameFallback: 'Dispositivo BLE sem nome',
204
+ idLabel: 'ID do dispositivo do navegador',
205
+ servicesLabel: 'Serviços GATT',
206
+ noServices: 'Não foram devolvidos serviços primários legíveis para esta conexão.',
207
+ statusIdle: 'Pronto para escanear hardware BLE próximo',
208
+ statusPermission: 'A aguardar o seletor de permissões do navegador',
209
+ statusConnecting: 'A ligar ao dispositivo BLE selecionado',
210
+ statusConnected: 'Ligado e serviços carregados',
211
+ statusDisconnected: 'Dispositivo desligado',
212
+ statusCancelled: 'Nenhum dispositivo BLE foi selecionado ou o Bluetooth está desligado/indisponível neste dispositivo.',
213
+ statusUnavailable: 'O Bluetooth parece estar desligado, bloqueado ou ausente neste dispositivo. Ative o Bluetooth ou tente a partir de hardware que tenha um adaptador BLE.',
214
+ statusError: 'Verificação Bluetooth falhou',
215
+ signalUnknown: 'A força do sinal é controlada pelo seletor do navegador',
216
+ gattUnavailable: 'Este dispositivo não expôs um servidor GATT ao navegador',
217
+ customServiceName: 'Serviço personalizado ou específico do fornecedor',
218
+ serviceGenericAccess: 'Acesso Genérico',
219
+ serviceGenericAttribute: 'Atributo Genérico',
220
+ serviceDeviceInformation: 'Informação do Dispositivo',
221
+ serviceHeartRate: 'Frequência Cardíaca',
222
+ serviceBattery: 'Serviço de Bateria',
223
+ serviceHumanInterfaceDevice: 'Dispositivo de Interface Humana',
224
+ serviceCyclingSpeedCadence: 'Velocidade e Cadência de Ciclismo',
225
+ serviceEnvironmentalSensing: 'Deteção Ambiental',
226
+ serviceUserData: 'Dados do Utilizador',
227
+ serviceFitnessMachine: 'Máquina de Fitness',
228
+ uuidHelp: 'Os UUIDs identificam serviços Bluetooth. Os serviços padrão são nomeados automaticamente; UUIDs específicos do fornecedor precisam da documentação do seu firmware ou dispositivo.',
229
+ compatibilityHint: 'Funciona melhor em navegadores baseados em Chromium com Bluetooth ativado. O Web Bluetooth é intencionalmente limitado por permissões e pode não mostrar todos os anunciantes próximos.',
230
+ serviceCountSingular: 'serviço',
231
+ serviceCountPlural: 'serviços',
232
+ },
233
+ };