- USB制御系パトライト(NE-USBシリーズ、LR6-USBシリーズ)をpythonを使って制御する方法
- hidapiのインストールと、その使用方法について
この記事では、USB制御系パトライトであるNE-USBやLR6-USBに対して、pythonのhidapiライブラリを使って制御していきます。
「hidapi」のインストール
まずは、「hidapi」をインストールします。
hidapi(Human Interface Device API)とは、USBデバイスのうちHID(Human Interface Device)クラスに属するデバイスを制御するためのライブラリのことです。
このライブラリーを使ってパトライトをpythonで制御します。
pip install hidapi
「hidapi」でパトライトに接続確認
NE-USBの場合
まずは接続するために「ベンダーID」と「デバイスID」を取扱から探します。
NE-USBシリーズの場合、「ベンダーID:191a」と「デバイスID:6001」であることがわかりました。
よって、以下のようにコードに入力し、接続確認します。
import hid
# ベンダーIDとプロダクトIDを指定
vendor_id = 0x191a # ベンダーID
product_id = 0x6001 # 製品ID
# デバイスに接続
device = hid.device()
device.open(vendor_id, product_id)
# デバイスに関する情報を表示
print(f'Device manufacturer: {device.get_manufacturer_string()}')
print(f'Product: {device.get_product_string()}')
実行し、以下のようにパトライトの情報が出力されればOKです。
もし、PCがLinux系の場合、SUDO権限で実行する必要があるので注意してください。
Device manufacturer: PATLITE Corporation
Product: USB Signal Beacon
LR6-USBの場合
LR6-USBシリーズの場合も同様に、「ベンダーID」と「デバイスID」を取扱から探します。
「ベンダーID:191a」と「デバイスID:8003」とあるので、上記のコードのデバイスIDを「8003」に変更して実行すれば同じようにパトライトの情報が出力されます。
pythonによるパトライトのランプ,ブザー制御
NE-USBの場合
先ほどの取説から、制御プロトコルを確認します。
3byte目でブザー種類の制御、4byte目でブザー音量調整、5byte目でLEDランプの色と点灯について制御ができるようになっています。
プロトコル例、一番上の「赤色点灯、連続音(音量6)で吸鳴する場合」について実装してみます。
コードは以下のようになります。
import hid
# ベンダーIDとプロダクトIDを指定
vendor_id = 0x191A # ベンダーID
product_id = 0x6001 # 製品ID
# デバイスに接続
device = hid.device()
device.open(vendor_id, product_id)
# パトライトの制御
data = [0]*9
data[1] = 0x00
data[2] = 0x00
data[3] = 0x01 #ブザー制御
data[4] = 0x06 #ブザー音量
data[5] = 0x11 #LED制御
data[6] = 0x00
data[7] = 0x00
data[8] = 0x00
device.write(data)
device.close()
赤色に点灯し、音を鳴らすことができました。
その他のランプ、ブザーのパターンの組み合わせに変更したければ、以下のようにスクリプトのdata[3~5]の中身を変更すれば好きなように設定可能です。
NE-USBの音量は屋内の静かな場所であればよく響きますが、使用する場所によっては少し物足りないかもしれません。
騒がしい場所で使うのであれば↓のLR6-USBシリーズのほうがおすすめです。
LR6-USBの場合
LR6-USBも同様の流れです。
こちらは5,6,7byte目を使ってLEDの制御をするそうです。
この例に沿って実装すると、↓のようになります。
import hid
# ベンダーIDとプロダクトIDを指定
vendor_id = 0x191a # ベンダーID
product_id = 0x8003 # 製品ID
# デバイスに接続
device = hid.device()
device.open(vendor_id, product_id)
# パトライトの制御
data = [0]*9
data[1] = 0x00
data[2] = 0x00
data[3] = 0x02 #ブザー制御
data[4] = 0x60 #ブザー音量
data[5] = 0x10 #LED制御 R/Y
data[6] = 0x00 #LED制御 G/B
data[7] = 0x00 #LED制御 C/-
data[8] = 0x00
device.write(data)
device.close()
また、LR6-USBシリーズのブザーとランプの制御は以下のように組み合わせが可能です。
今回は、python,hidapiを使って、USB接続パトライトを制御してみました。
以上、お疲れ様でした。