質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

10154閲覧

RaspberryPiでiPhoneを自動ペアリングし、ペアリングされているかどうか判断したい。

dainbe

総合スコア27

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

3クリップ

投稿2018/10/30 12:25

編集2018/10/30 15:37

RaspberryPiでiPhoneを自動ペアリングし、ペアリングされているかどうか判断したい。

Raspberrypi zero wを用いて、bluetoothでスマートフォンを検知しユーザーが部屋にいるのか判断するプログラムを作成しています。

pyBluezを用いてのデバイスのスキャンや、bluetoothctlでiPhoneのペアリング、trustなどを設定などはできています。

しかし、pyBluezを用いてのデバイスのスキャンでは、iPhoneがスリープモードになると検出されず、
bluetoothctlでのペアリングでは、iPhoneのbluetooth ON/OFFなどで自動接続がされません。

何かよい案はないでしょうか?

該当のソースコード

python

1#coding:utf-8 2import bluetooth 3import time 4import datetime 5 6old_devices = set() 7while True: 8 try: 9 nearby_devices = bluetooth.discover_devices(lookup_names = True) 10 except (IOError,err): 11 print(err) 12 time.sleep(1) 13 else: 14 dt = datetime.datetime.now() 15 dt_str = dt.strftime("%Y/%m/%d %H:%M:%S") 16 new_devices = set(nearby_devices) 17 for addr,name in new_devices-old_devices: 18 print("+ %s %s %s" % (dt_str, addr, name)) 19 for addr,name in old_devices-new_devices: 20 print("- %s %s %s" % (dt_str, addr, name)) 21 old_devices = new_devices.copy() 22 time.sleep(1)

試したこと

ペアリングした状態での検出
bluetoothレシーバーの検出

補足情報(FW/ツールのバージョンなど)

Python = 3.5
Raspbian = 2018-06-27-raspbian-stretch-lite

RaspberryPi zero WH
iPhone6s

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

回答欄で質問してしまい申し訳ございません。

プログラム初心者です。以下の質問を本サイトでさせてもらってる者です。
https://teratail.com/questions/236899

dainbeさんのsearch.py scan.pyを使わせていただきBluetoothの自動接続を試みようと思ってます。
私はraspberry pi zero whとiPhone6s os13.3です。
iPhoneからのMACアドレスがランダムなのでなかなか自動接続できず困ってました。

search.pyのunknownを自分のiPhone名に変更しました。search.pyのプログラムの下にscan.pyの中身をコピペして合体したプログラム(searchscan.py)としてシェルでsudo python3 “searchsca.py”と打ったのですが
No such file or directory: ‘dev_list.jdon’というエラーが出ます。
初心者質問で恐縮ですが対処法を何かご教授頂けないでしょうか?
よろしくお願いします。

投稿2020/01/25 04:32

DMC

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

取得したbdアドレスをもとにデバイスの名前を参照することによって期待している動きができるようになりました。

投稿2018/10/31 13:35

dainbe

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oto711

2018/11/17 15:23

こんにちは。 私も全く同じ悩みがあり、まだ解決できていません。 デバイスの名前を参照したとありますが、具体的にどのように参照したのでようか。 お手数ではありますが、ご回答頂けないでしょうか。 よろしくお願い致します。
dainbe

2018/11/18 06:51 編集

ペアリング状態になっているデバイスを検知してBDアドレスとデバイス名を取得して保存。 保存したアドレスを利用して存在を検知しています。 実際に作成したコードはGitHubに載せてあるのでリンクをはっておきます。 https://github.com/dainbe/blue_search
oto711

2018/11/18 12:16

ありがとうございます! 助かります!
dainbe

2018/11/18 12:59

わからないことがあったら出来る限り答えるので、また言ってください。
DMC

2020/01/25 04:34

回答欄で質問してしまい申し訳ございません。 プログラム初心者です。以下の質問を本サイトでさせてもらってる者です。 https://teratail.com/questions/236899 dainbeさんのsearch.py scan.pyを使わせていただきBluetoothの自動接続を試みようと思ってます。 私はraspberry pi zero whとiPhone6s os13.3です。 iPhoneからのMACアドレスがランダムなのでなかなか自動接続できず困ってました。 search.pyのunknownを自分のiPhone名に変更しました。search.pyのプログラムの下にscan.pyの中身をコピペして合体したプログラム(searchscan.py)としてシェルでsudo python3 “searchsca.py”と打ったのですが No such file or directory: ‘dev_list.jdon’というエラーが出ます。 初心者質問で恐縮ですが対処法を何かご教授頂けないでしょうか? よろしくお願いします。
dainbe

2020/01/27 05:58

そもそもですが'search.py'はペアリング状態のBluetooth端末のBluetoothのMACアドレスの取得し ‘dev_list.json’を作成するために作られた関数です。どのように'searchscan.py'を作成しているのかわからないのですが、'search.py'で‘dev_list.json’を作成してから'scan.py'を実行してください。 しかし、'scan.py'はDMCさんがしたいような自動接続を可能にするものではありません。 iPhoneの設定->一般->情報からBluetoothのMACアドレスを確認してRaspberry Piの起動時に接続できるようにスクリプトを別途作成するとできると思います。
DMC

2020/01/27 07:26

ご回答ありがとうございます。 初心者ゆえよくからない事をしておりました。勉強になりした。 しかしながらiPhoneからアドバタイズしているアドレスはランダムなのでRaspberryPi 起動時に接続できるスクリプトを作成する事は可能なのでしょうか? ご教授よろしくお願いします。
DMC

2020/01/28 08:30

本ページとは別の質問をしてしまいすいませんでした。 元々の質問に戻らせていただきます。 ラズパイとiPhoneをBluetoothをでペアリング後、search.pyを起動しましたがdev_list.jsonが作成されませんでした。よってscan.py起動後にNo such file or directory: ‘dev_list.jdon’というエラーが出ます。 どうしたら良いでしょうか? また、素人ながらの質問だったら申し訳ございません。 上手くペアリングしているデバイスのアドレスをscan出来る様になったらそれを元にiPhoneがラズパイに近づいたらLED ONというプログラムを組んでみたいと思ってます。 よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問