パスワード付きのSwitchBotの操作をpythonでできることを知り、ぜひ試したいと思います。ところがラズパイにpythonをインストールすることにさえ悪戦苦闘する超初心者のお話(覚え書き)です。
シリーズ化してます( ゚∀゚)アハハ
- ドアロック解除! Apple HomeKitとSwitchBotとRaspberry PiとHomeBridgeでキャンピングカーのドアロックを操作するょ!
- <覚え書き>ラズパイにhomebridge-config-ui-xを入れるときにエラー! さぁどうする??
- <覚え書き>ラズパイでpythonを使いたいけどgattlibインストールでエラー! 超初心者なりにいろいろ試すの巻
- <覚え書き>ラズパイ再起動でHomeBridgeを自動起動させるよ!
- PySwitchBotもPythonもわかんない! SwitchBotの設定から逃げるの巻!
いろんなサイトを見て同じように進めて行きますがエラーが発生します…。
真似してもエラー
“homebridge-config-ui-x”で気をよくしたこともあってpythonでの操作に挑戦です。 参考にできるサイトは多くありますが準備のために必要なインストール方法や内容はほぼ一緒。
まずは現状把握。
pi@simejipi:~ $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster
実行結果はいろいろ省略していますが内容はすでに最新バージョンがインストール済みとかばっかりです。
pi@simejipi:~ $ sudo apt-get update pi@simejipi:~ $ sudo apt-get install libbluetooth-dev pi@simejipi:~ $ sudo pip3 install pybluez Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting pybluez Downloading https://www.piwheels.org/simple/pybluez/PyBluez-0.23-cp37-cp37m-linux_armv7l.whl (132kB) 100% |████████████████████████████████| 133kB 174kB/s Installing collected packages: pybluez Successfully installed pybluez-0.23 pi@simejipi:~ $ sudo apt-get install libboost-python-dev pi@simejipi:~ $ sudo apt-get install libboost-thread-dev
問題発生です。 ”python setup.py egg_info”ってなんだろう。
pi@simejipi:~ $ sudo pip3 install gattlib Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting gattlib Downloading https://files.pythonhosted.org/packages/fe/8d/72d539dd6be2d9677864a1604b8db80696c2d5f018cf8093bf442311162f/gattlib-0.20201113.tar.gz (50kB) 100% |████████████████████████████████| 51kB 695kB/s Complete output from command python setup.py egg_info: Package glib-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `glib-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'glib-2.0' found Traceback (most recent call last): File "", line 1, in File "/tmp/pip-install-_47z2s15/gattlib/setup.py", line 53, in "pkg-config --cflags glib-2.0".split()).decode('utf-8') File "/usr/lib/python3.7/subprocess.py", line 395, in check_output **kwargs).stdout File "/usr/lib/python3.7/subprocess.py", line 487, in run output=stdout, stderr=stderr) subprocess.CalledProcessError: Command '['pkg-config', '--cflags', 'glib-2.0']' returned non-zero exit status 1. ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-_47z2s15/gattlib/
※後から気付いたのですが無いと出ている’glib-2.0’は下記で入ったのかも。
sudo apt-get install libperl-dev sudo apt-get install libgtk2.0-dev
エラーエラーエラー
最初に試したのはsetuptoolsのアップグレード。 これでは改善されず。
pi@simejipi:~ $ pip install --upgrade pip setuptools Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting pip Downloading https://files.pythonhosted.org/packages/27/79/8a850fe3496446ff0d584327ae44e7500daf6764ca1a382d2d02789accf7/pip-20.3.4-py2.py3-none-any.whl (1.5MB) 100% |████████████████████████████████| 1.5MB 246kB/s Collecting setuptools Downloading https://files.pythonhosted.org/packages/e1/b7/182161210a13158cd3ccc41ee19aadef54496b74f2817cc147006ec932b4/setuptools-44.1.1-py2.py3-none-any.whl (583kB) 100% |████████████████████████████████| 583kB 622kB/s Installing collected packages: pip, setuptools Successfully installed pip-20.3.4 setuptools-44.1.1
pipとpip3があるっぽいのでインストールします。 ただしこれでは改善されず。
pi@simejipi:~ $ pip3 install --upgrade pip setuptools Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting pip Downloading https://files.pythonhosted.org/packages/fe/ef/60d7ba03b5c442309ef42e7d69959f73aacccd0d86008362a681c4698e83/pip-21.0.1-py3-none-any.whl (1.5MB) 100% |████████████████████████████████| 1.5MB 236kB/s Collecting setuptools Downloading https://files.pythonhosted.org/packages/0c/12/18eda60a1b961e0248e1b1e3ec1ff417420596dc7edf3614ef58a7a8cf6a/setuptools-54.1.2-py3-none-any.whl (785kB) 100% |████████████████████████████████| 788kB 543kB/s Installing collected packages: pip, setuptools Successfully installed pip-21.0.1 setuptools-54.1.2
“python-host”フォルダにgithubから何かをコピーしてるっぽい。
pi@simejipi:~ $ git clone https://github.com/OpenWonderLabs/python-host.git Cloning into 'python-host'... remote: Enumerating objects: 16, done. remote: Counting objects: 100% (16/16), done. remote: Compressing objects: 100% (12/12), done. remote: Total 76 (delta 7), reused 13 (delta 4), pack-reused 60 Unpacking objects: 100% (76/76), done.
Not Found Errorとか言われちゃうのでやっぱり何かが足りないみたい。
pi@simejipi:~/python-host $ sudo python3 switchbot_py3.py --help Traceback (most recent call last): File "switchbot_py3.py", line 35, in from bluetooth.ble import DiscoveryService, GATTRequester File "/usr/local/lib/python3.7/dist-packages/bluetooth/ble.py", line 1, in from gattlib import * ModuleNotFoundError: No module named 'gattlib'
手当たり次第
いろいろ手当たり次第に試しますがすでに最新バージョンがインストール済みなど…。
pi@simejipi:/ $ sudo apt-get install python3-pip libboost-python-dev libboost-thread-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 libboost-python-dev はすでに最新バージョン (1.67.0.1+b1) です。 libboost-thread-dev はすでに最新バージョン (1.67.0.1+b1) です。 python3-pip はすでに最新バージョン (18.1-5+rpt1) です。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 pi@simejipi:/ $ sudo apt-get install libbluetooth-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 libbluetooth-dev はすでに最新バージョン (5.50-1.2~deb10u1+rpt2) です。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 pi@simejipi:/ $ sudo pip3 install pybluez Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Requirement already satisfied: pybluez in /usr/local/lib/python3.7/dist-packages (0.23)
なんでも試します。
pi@simejipi:/ $ sudo apt-get install python-dev libbluetooth3-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 注意、'libbluetooth3-dev' の代わりに 'libbluetooth-dev' を選択します python-dev はすでに最新バージョン (2.7.16-1) です。 python-dev は手動でインストールしたと設定されました。 libbluetooth-dev はすでに最新バージョン (5.50-1.2~deb10u1+rpt2) です。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
pybluez-0.23はインストールできた。
pi@simejipi:/ $ sudo pip install pybluez Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting pybluez Downloading https://files.pythonhosted.org/packages/08/9f/e9d93b266d2d1ea988780a52a696073ba0a65df65a532165fdf6ff90d0ed/PyBluez-0.23.tar.gz (97kB) 100% |████████████████████████████████| 102kB 1.1MB/s Building wheels for collected packages: pybluez Running setup.py bdist_wheel for pybluez ... done Stored in directory: /root/.cache/pip/wheels/c8/09/d3/94417fa65febe1baaa97a7152e6a0a53a446aee33efaf9e6f9 Successfully built pybluez Installing collected packages: pybluez Successfully installed pybluez-0.23
Gettlibの依存パッケージ? ”monodoc-gtk3.0-manual”が提案されて2個のパッケージ”libglib3.0-cil”と”libglib3.0-cil-dev”が新たにインストールされるらしい。
pi@simejipi:/ $ sudo apt-get install libglib3.0 libboost-python-dev libboost-thread-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 注意、regex 'libglib3.0' のために 'libglib3.0-cil-dev' を選択します 注意、regex 'libglib3.0' のために 'libglib3.0-cil' を選択します libboost-python-dev はすでに最新バージョン (1.67.0.1+b1) です。 libboost-thread-dev はすでに最新バージョン (1.67.0.1+b1) です。 提案パッケージ: monodoc-gtk3.0-manual 以下のパッケージが新たにインストールされます: libglib3.0-cil libglib3.0-cil-dev アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。 95.8 kB のアーカイブを取得する必要があります。 この操作後に追加で 236 kB のディスク容量が消費されます。 続行しますか? [Y/n] Y 取得:1 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf libglib3.0-cil armhf 2.99.3-3 [72.4 kB] 取得:2 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf libglib3.0-cil-dev armhf 2.99.3-3 [23.5 kB] 95.8 kB を 2秒 で取得しました (63.6 kB/s) 以前に未選択のパッケージ libglib3.0-cil を選択しています。 (データベースを読み込んでいます ... 現在 124491 個のファイルとディレクトリがインストールされています。) .../libglib3.0-cil_2.99.3-3_armhf.deb を展開する準備をしています ... libglib3.0-cil (2.99.3-3) を展開しています... 以前に未選択のパッケージ libglib3.0-cil-dev を選択しています。 .../libglib3.0-cil-dev_2.99.3-3_armhf.deb を展開する準備をしています ... libglib3.0-cil-dev (2.99.3-3) を展開しています... libglib3.0-cil (2.99.3-3) を設定しています ... * Installing 1 assembly from libglib3.0-cil into Mono libglib3.0-cil-dev (2.99.3-3) を設定しています ...
イケタ!
エラーを吐かずにおわったっぽい。 手当たり次第に試したどれが良かったのかは謎。
pi@simejipi:/ $ sudo pip3 install gattlib Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting gattlib Using cached https://files.pythonhosted.org/packages/fe/8d/72d539dd6be2d9677864a1604b8db80696c2d5f018cf8093bf442311162f/gattlib-0.20201113.tar.gz Building wheels for collected packages: gattlib Running setup.py bdist_wheel for gattlib ... done Stored in directory: /root/.cache/pip/wheels/f3/0e/67/02a5f3e913268502cbada9ecd14a21cfd724b6715dda780b80 Successfully built gattlib Installing collected packages: gattlib Successfully installed gattlib-0.20201113
/home/pi/.homebridge/python-hosts に移って、helpもでるぞ!
pi@simejipi:~/python-host $ ls LICENSE README.md switchbot.py switchbot_meter.py switchbot_meter_py3.py switchbot_py3.py pi@simejipi:~/python-host $ sudo python3 switchbot_py3.py --help usage: switchbot_py3.py [-h] [-s] [-d DEVICE] [-c {press,on,off,open,close,pause}] [-i INTERFACE] [--scan-timeout SCAN_TIMEOUT] [--connect-timeout CONNECT_TIMEOUT] optional arguments: -h, --help show this help message and exit -s, --scan Run Switchbot in scan mode - scan devices to control -d DEVICE, --device DEVICE Specify the address of a device to control -c {press,on,off,open,close,pause}, --command {press,on,off,open,close,pause} Command to be sent to device. Noted that press/on/off for Bot and open/close for Curtain. Required if the controlled device is Curtain (default: press) -i INTERFACE, --interface INTERFACE Name of the bluetooth adapter (default: hci0) --scan-timeout SCAN_TIMEOUT Device scan timeout (default: 2 second(s)) --connect-timeout CONNECT_TIMEOUT Device connection timeout (default: 5 second(s))
いろいろ探しているときにbluepyが良いと書いてあったのでこちらもインストールします。インストールは成功したものの”sudo python3 scan.py”ができない。 ま。いっか。
pi@simejipi:/ $ sudo pip3 install bluepy Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting bluepy Downloading https://www.piwheels.org/simple/bluepy/bluepy-1.3.0-cp37-cp37m-linux_armv7l.whl (560kB) 100% |████████████████████████████████| 563kB 435kB/s Installing collected packages: bluepy Successfully installed bluepy-1.3.0
前途多難
ネットで情報を探して「これでこうしてこうやったら動くよ!」ってのを見てやってもエラー。 これがlinux系(unix系?)の醍醐味!ではなくイヤなところ。
まだ、環境構築の段階なのよね( ゚ー゚)
コメント