質問編集履歴

2

質問の変更

2020/03/16 08:48

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- WEB Bluetooth API
1
+ Bluetoothのデバイス名がiphoneから見つからない
test CHANGED
@@ -2,29 +2,17 @@
2
2
 
3
3
 
4
4
 
5
- [こちらのサイト](https://github.com/masato-ka/bel-key-security-app/wiki/第2章-BLEデバイスの作成)見ながらWEB Bluetooth APIにチャレンジしています。
5
+ Bleを学習しています。
6
6
 
7
- 第3章まで終わり、ChromeからConnectするとペア設定画面のデバイス名が「不明またはサポートされていないデバイス」表示され、どのデバイスが自分の物か判別出来ません。スマホアプリのLightBlueから確認しても「Unnamed」になっています。
7
+ Arduino IDEで作成したソースコードでSerialBT.begin(“デバイス名”)記述しても
8
8
 
9
- シリアルモニターからデバイス情報を確認るとデバイス名は設定した通りになっていました。
9
+ WindowsやAndroidからデバイス名が見つかるのでが、iphoneではデバイス名が表示されせんでした。
10
10
 
11
- 念のため、サービレジスタの値を変えたらデバイス名表示されるようになりconnect出来ました。しかし、それ以上の動作はしません。
11
+ 適当なケッチ例かBLEDevice::init("デバイス名");と書かれたコード数行を追記してみたら表示されました。
12
12
 
13
+ 単純にSerialBT.begin(“デバイス名”)ではiosにはデバイス名を表示させる事は出来ないのですか?
13
14
 
14
-
15
- やりたい事:
16
-
17
- サイトのWEB Bluetooth APIを動作させたいです。
18
-
19
- 不明点:
20
-
21
- 問題点がモジュールの設定なのかjavascript側なのか、どこに問題があるのかわかりません。
22
-
23
-
24
-
25
- アドバイスお願います。
15
+ なにか決まり事などあるのでょうか?
26
-
27
- ソースコードはサイトで記載されているまんまなので問題はないと思っています。
28
16
 
29
17
 
30
18
 
@@ -34,7 +22,7 @@
34
22
 
35
23
  ```
36
24
 
37
- 「不明またはサポートされていないデバイス
25
+ iphoneからデバイス名が見つからない
38
26
 
39
27
  ```
40
28
 
@@ -44,267 +32,21 @@
44
32
 
45
33
 
46
34
 
47
- ```javascript
35
+ ```c
48
36
 
37
+ BluetoothSerial SerialBT;
49
38
 
39
+ void setup() {
50
40
 
51
- const LockServiceUUID = "12345678-9012-3456-7890-1234567890ff";
41
+ Serial.begin(115200);
52
42
 
53
- const LockCharacteristicUUID = "12345678-9012-3456-7890-123456789011";
43
+ SerialBT.begin(“デバイス名”);
54
44
 
55
- const BeepCharacteristicUUID = "12345678-9012-3456-7890-123456789022";
56
-
57
-
58
-
59
- let lockDevice;
60
-
61
- let lockStatusCharacteristic;
62
-
63
- let beepCharacteristic;
64
-
65
- let isSubscribe;
66
-
67
- let isBeep
68
-
69
-
70
-
71
- angular.module('myApp', [])
72
-
73
- .controller('ConnectController', ['$scope', function($scope){
74
-
75
-
76
-
77
- $scope.init = function () {
78
-
79
- initialize();
80
-
81
- }
45
+ }
82
-
83
-
84
-
85
- $scope.connect = function() {
86
-
87
- if(lockDevice == null){
88
-
89
- requestDevice();
90
-
91
- }
92
-
93
- }
94
-
95
-
96
-
97
- function requestDevice(){
98
-
99
- navigator.bluetooth.requestDevice(
100
-
101
- {acceptAllDevices:true,optionalServices:[LockServiceUUID]}
102
-
103
- )
104
-
105
- .then(device => {
106
-
107
- lockDevice = device;
108
-
109
- lockDevice.addEventListener('gattserverdisconnected', onDisconnected);
110
-
111
- return device.gatt.connect();
112
-
113
- })
114
-
115
- .then(server => server.getPrimaryService(LockServiceUUID))
116
-
117
- .then(service => {
118
-
119
- return Promise.all([
120
-
121
- service.getCharacterristic(LockCharacteristicUUID)
122
-
123
- .then(characteristic => lockStatusCharacteristic = characteristic),
124
-
125
- service.getCharacterristic(BeepCharacteristicUUID)
126
-
127
- .then(characteristic => beepCharacteristic = characteristic),
128
-
129
- ])
130
-
131
- })
132
-
133
- }
134
-
135
-
136
-
137
- $scope.disconnect = function(){
138
-
139
- if(lockStatusCharacteristic.gatt.connected === true){
140
-
141
- lockDevice.gatt.disconnect();
142
-
143
- lockDevice = null;
144
-
145
- }
146
-
147
- }
148
-
149
-
150
-
151
- $scope.read = function(){
152
-
153
- lockStatusCharacteristic.readValue().then(value => {
154
-
155
- var lockValue = value.getUint8(0);
156
-
157
- if(lockValue == 2){
158
-
159
- $scope.statusImgPath = "./img/lock/.png";
160
-
161
- $scope.message = "Lock";
162
-
163
- }else{
164
-
165
- $scope.statusImgPath = "./img/lock/.png";
166
-
167
- $scope.message = "Unlock";
168
-
169
- }
170
-
171
- })
172
-
173
- }
174
-
175
-
176
-
177
- // Notification
178
-
179
- $scope.subscribe = function(){
180
-
181
- if(isSubscribe == false){
182
-
183
- lockStatusCharacteristic.addEventListener("characteristicvaluechanged", onSubscribeLockInfo);
184
-
185
- $scope.subscribeUILabel = "Unsubscribe";
186
-
187
- isSubscribe = true;
188
-
189
- return lockStatusCharacteristic.startNotifications();
190
-
191
- }else{
192
-
193
- $scope.subscribeUILabel = "Subscribe";
194
-
195
- return lockStatusCharacteristic.stopNotifications();
196
-
197
- }
198
-
199
- }
200
-
201
-
202
-
203
- $scope.write = function(){
204
-
205
- if(isBeep === true){
206
-
207
- isBeep = false;
208
-
209
- $scope.beepUILabel = "Set Alert";
210
-
211
- }else{
212
-
213
- isBeep = true;
214
-
215
- $scope.beepUILabel = "Unset Alert";
216
-
217
- }
218
-
219
- }
220
-
221
-
222
-
223
- function doBeep(event){
224
-
225
- if(event === true){
226
-
227
- value = new Uint8Array([0x04]);
228
-
229
- beepCharacteristic.writevalue(value);
230
-
231
- }else{
232
-
233
- value = new Uint8Array([0x00]);
234
-
235
- beepCharacteristic.writevalue(value);
236
-
237
- }
238
-
239
- }
240
-
241
-
242
-
243
- function onSubscribeLockInfo(event){
244
-
245
- let lockValue = event.target.value.getUint8(0);
246
-
247
- if(lockValue == 2){
248
-
249
- $scope.statusImgPath = "./img/lock.png"
250
-
251
- $scope.message = "Lock"
252
-
253
- doBeep(false);
254
-
255
- }else{
256
-
257
- $scope.statusImgPath = "./img/unlock.png"
258
-
259
- $scope.message = "Unlock"
260
-
261
- doBeep(isBeep);
262
-
263
- }
264
-
265
- $scope.$apply();
266
-
267
- }
268
-
269
-
270
-
271
- function onDisconnected(){
272
-
273
- initialize();
274
-
275
- $scope.$apply();
276
-
277
- }
278
-
279
-
280
-
281
- function initialize(){
282
-
283
- $scope.statusImgPath=""
284
-
285
- $scope.message = "No connect";
286
-
287
- $scope.subscribeUILabel = "Subscribe"
288
-
289
- isSubscribe = false;
290
-
291
- $scope.beepUILabel = "Set alert"
292
-
293
- isBeep = false;
294
-
295
- }
296
-
297
- }]);
298
46
 
299
47
  ```
300
48
 
301
49
 
302
-
303
- ### 試したこと
304
-
305
-
306
-
307
- サービスレジスタの値を変えたらデバイス名が表示されるようになりました。
308
50
 
309
51
 
310
52
 
@@ -312,6 +54,6 @@
312
54
 
313
55
 
314
56
 
315
- Bleモジュール:RN4020
57
+ Bleモジュール:ESP32
316
58
 
317
- Google Chrome
59
+ iPhone app : BLE Scanner

1

質問を内容を編集

2020/03/16 08:48

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Web Bluetooth APIのペア設定時のデバイス名が「不明またはサポートされていないデバイス」
1
+ WEB Bluetooth API
test CHANGED
@@ -2,13 +2,29 @@
2
2
 
3
3
 
4
4
 
5
- [こちらのサイト](https://github.com/masato-ka/bel-key-security-app/wiki/第2章-BLEデバイスの作成)を見ながらBluetoothの学習をしています。
5
+ [こちらのサイト](https://github.com/masato-ka/bel-key-security-app/wiki/第2章-BLEデバイスの作成)を見ながらWEB Bluetooth APIにチャレンジしています。
6
-
6
+
7
- 第3章まで終わっていざConnectすると全てのデバイスが「不明またはサポートされていないデバイス」と表示されどのデバイスが自分のかわかりません。LightBlueで見ても全て「Unnamed」になっています。
7
+ 第3章まで終わ、ChromeからConnectするとペア設定画面のデバイスが「不明またはサポートされていないデバイス」と表示されどのデバイスが自分の判別出来ません。スマホアプリのLightBlueから確認しても「Unnamed」になっています。
8
-
8
+
9
- シリアルモニターデバイス情報を確認するとデバイス名は設定した通りになっていました。
9
+ シリアルモニターからデバイス情報を確認するとデバイス名は設定した通りになっていました。
10
+
10
-
11
+ 念のため、サービスレジスタの値を変えたらデバイス名が表示されるようになりconnect出来ました。しかし、それ以上の動作はしません。
12
+
13
+
14
+
15
+ やりたい事:
16
+
11
- デバス名が表示れるようにするにはどうすればしょうか?
17
+ トのWEB Bluetooth APIを動作せたいです。
18
+
19
+ 不明点:
20
+
21
+ 問題点がモジュールの設定なのかjavascript側なのか、どこに問題があるのかわかりません。
22
+
23
+
24
+
25
+ アドバイスお願いします。
26
+
27
+ ソースコードはサイトで記載されているまんまなので問題はないと思っています。
12
28
 
13
29
 
14
30
 
@@ -24,10 +40,278 @@
24
40
 
25
41
 
26
42
 
43
+ ### 該当のソースコード
44
+
45
+
46
+
47
+ ```javascript
48
+
49
+
50
+
51
+ const LockServiceUUID = "12345678-9012-3456-7890-1234567890ff";
52
+
53
+ const LockCharacteristicUUID = "12345678-9012-3456-7890-123456789011";
54
+
55
+ const BeepCharacteristicUUID = "12345678-9012-3456-7890-123456789022";
56
+
57
+
58
+
59
+ let lockDevice;
60
+
61
+ let lockStatusCharacteristic;
62
+
63
+ let beepCharacteristic;
64
+
65
+ let isSubscribe;
66
+
67
+ let isBeep
68
+
69
+
70
+
71
+ angular.module('myApp', [])
72
+
73
+ .controller('ConnectController', ['$scope', function($scope){
74
+
75
+
76
+
77
+ $scope.init = function () {
78
+
79
+ initialize();
80
+
81
+ }
82
+
83
+
84
+
85
+ $scope.connect = function() {
86
+
87
+ if(lockDevice == null){
88
+
89
+ requestDevice();
90
+
91
+ }
92
+
93
+ }
94
+
95
+
96
+
97
+ function requestDevice(){
98
+
99
+ navigator.bluetooth.requestDevice(
100
+
101
+ {acceptAllDevices:true,optionalServices:[LockServiceUUID]}
102
+
103
+ )
104
+
105
+ .then(device => {
106
+
107
+ lockDevice = device;
108
+
109
+ lockDevice.addEventListener('gattserverdisconnected', onDisconnected);
110
+
111
+ return device.gatt.connect();
112
+
113
+ })
114
+
115
+ .then(server => server.getPrimaryService(LockServiceUUID))
116
+
117
+ .then(service => {
118
+
119
+ return Promise.all([
120
+
121
+ service.getCharacterristic(LockCharacteristicUUID)
122
+
123
+ .then(characteristic => lockStatusCharacteristic = characteristic),
124
+
125
+ service.getCharacterristic(BeepCharacteristicUUID)
126
+
127
+ .then(characteristic => beepCharacteristic = characteristic),
128
+
129
+ ])
130
+
131
+ })
132
+
133
+ }
134
+
135
+
136
+
137
+ $scope.disconnect = function(){
138
+
139
+ if(lockStatusCharacteristic.gatt.connected === true){
140
+
141
+ lockDevice.gatt.disconnect();
142
+
143
+ lockDevice = null;
144
+
145
+ }
146
+
147
+ }
148
+
149
+
150
+
151
+ $scope.read = function(){
152
+
153
+ lockStatusCharacteristic.readValue().then(value => {
154
+
155
+ var lockValue = value.getUint8(0);
156
+
157
+ if(lockValue == 2){
158
+
159
+ $scope.statusImgPath = "./img/lock/.png";
160
+
161
+ $scope.message = "Lock";
162
+
163
+ }else{
164
+
165
+ $scope.statusImgPath = "./img/lock/.png";
166
+
167
+ $scope.message = "Unlock";
168
+
169
+ }
170
+
171
+ })
172
+
173
+ }
174
+
175
+
176
+
177
+ // Notification
178
+
179
+ $scope.subscribe = function(){
180
+
181
+ if(isSubscribe == false){
182
+
183
+ lockStatusCharacteristic.addEventListener("characteristicvaluechanged", onSubscribeLockInfo);
184
+
185
+ $scope.subscribeUILabel = "Unsubscribe";
186
+
187
+ isSubscribe = true;
188
+
189
+ return lockStatusCharacteristic.startNotifications();
190
+
191
+ }else{
192
+
193
+ $scope.subscribeUILabel = "Subscribe";
194
+
195
+ return lockStatusCharacteristic.stopNotifications();
196
+
197
+ }
198
+
199
+ }
200
+
201
+
202
+
203
+ $scope.write = function(){
204
+
205
+ if(isBeep === true){
206
+
207
+ isBeep = false;
208
+
209
+ $scope.beepUILabel = "Set Alert";
210
+
211
+ }else{
212
+
213
+ isBeep = true;
214
+
215
+ $scope.beepUILabel = "Unset Alert";
216
+
217
+ }
218
+
219
+ }
220
+
221
+
222
+
223
+ function doBeep(event){
224
+
225
+ if(event === true){
226
+
227
+ value = new Uint8Array([0x04]);
228
+
229
+ beepCharacteristic.writevalue(value);
230
+
231
+ }else{
232
+
233
+ value = new Uint8Array([0x00]);
234
+
235
+ beepCharacteristic.writevalue(value);
236
+
237
+ }
238
+
239
+ }
240
+
241
+
242
+
243
+ function onSubscribeLockInfo(event){
244
+
245
+ let lockValue = event.target.value.getUint8(0);
246
+
247
+ if(lockValue == 2){
248
+
249
+ $scope.statusImgPath = "./img/lock.png"
250
+
251
+ $scope.message = "Lock"
252
+
253
+ doBeep(false);
254
+
255
+ }else{
256
+
257
+ $scope.statusImgPath = "./img/unlock.png"
258
+
259
+ $scope.message = "Unlock"
260
+
261
+ doBeep(isBeep);
262
+
263
+ }
264
+
265
+ $scope.$apply();
266
+
267
+ }
268
+
269
+
270
+
271
+ function onDisconnected(){
272
+
273
+ initialize();
274
+
275
+ $scope.$apply();
276
+
277
+ }
278
+
279
+
280
+
281
+ function initialize(){
282
+
283
+ $scope.statusImgPath=""
284
+
285
+ $scope.message = "No connect";
286
+
287
+ $scope.subscribeUILabel = "Subscribe"
288
+
289
+ isSubscribe = false;
290
+
291
+ $scope.beepUILabel = "Set alert"
292
+
293
+ isBeep = false;
294
+
295
+ }
296
+
297
+ }]);
298
+
299
+ ```
300
+
301
+
302
+
303
+ ### 試したこと
304
+
305
+
306
+
307
+ サービスレジスタの値を変えたらデバイス名が表示されるようになりました。
308
+
309
+
310
+
27
311
  ### 補足情報(FW/ツールのバージョンなど)
28
312
 
29
313
 
30
314
 
31
- RN4020
315
+ Bleモジュール:RN4020
32
316
 
33
317
  Google Chrome