趣味のプログラム工房

2022年05月

eRemoteをpython3から操作してみよう!

eRemoteという赤外線リモコンのガジェットがあるのですが、
pythonのツールを使うとLinuxから操作できるようになるのですが、
いま(2022年!)、これを使おうとしてハマった話。

eRemoteを操作するためには、主に、
「BlackBeanControl」、「python-broadlink」というのを使います。
(これのセットアップ方法はほかのサイトで見て!)

ただ、Linux Mint 20を使っているのですが、最近のOSってデフォルトのpythonってバージョン3なのですが、上記ツールはver2のpythonを対象にしているようで、ver3では動きません。
ただ、普通にツール動かそうとすると、ver3で動いちゃってめんどくさい。
(それに、python2でインストールとかもしなくてはいけなくてめんどい)

■対応方法、
まず、リモコンの登録をしようと下のコマンドを実行するとエラーが出ます
python3 BlackBeanControl.py -c xxx


File "BlackBeanControl.py", line 197
if (len(SentCommand) <> 8) or (not all(c in string.hexdigits for c in SentCommand)):
SyntaxError: invalid syntax

単純にノットイコールとして「<>」が使えないみたい。
「!=」に置き換えます。


Traceback (most recent call last):
File "BlackBeanControl.py", line 167, in
RM3Device = broadlink.rm((RealIPAddress, RealPort), RealMACAddress)
TypeError: __init__() missing 1 required positional argument: 'devtype'

関数の仕様変更により、引数が足りていないようです。
RM3Device = broadlink.rm((RealIPAddress, RealPort), RealMACAddress)
⇒RM3Device = broadlink.rm((RealIPAddress, RealPort), RealMACAddress , RealTimeout)

③登録時
File "BlackBeanControl.py", line 242, in
EncodedCommand = LearnedCommand.encode('hex')
AttributeError: 'bytes' object has no attribute 'encode'


実行時
File "BlackBeanControl.py", line 231, in
DecodedCommand = CommandFromSettings.decode('hex')
AttributeError: 'str' object has no attribute 'decode'


ver3ではencode関数とdecode関数が使えません。
なので、それぞれ、
DecodedCommand = CommandFromSettings.decode('hex')
→ DecodedCommand = bytes.fromhex(CommandFromSettings)

EncodedCommand = LearnedCommand.encode('hex')
→EncodedCommand = str(binascii.hexlify(LearnedCommand), 'utf-8')

に置き換えます。

多分これだけのはず。

2022年05月07日


USB機器をBluetooth化 8デバイス切り替え

キーボード、マウスを複数のPC、スマホで切り替えて使いたい
ということで、今回購入したのは、これ!


AliExpressにて購入しました。
Amazonにも全く形は同じ製品がありますが、全くの別物。
amazonのは魅影などと書かれているやつで、これはキーボードでスマホゲームを操作する専用のデバイス。
残念ながら、USB機器をBluetooth化する製品とは別でした。(安かったので間違えて買ってしまったorz)


さて、購入した写真の本命のほうですが、普通に使えます!
切り替えもばっちり。

これが3000円切ってるならまあまあかな。
日本でも普通に売ってほしい。


2022年05月25日