オムロン環境センサ（2JCIE-BU）をラズパイで使ってみた。再び。

# Raspberry Pi 5でオムロン環境センサ（2JCIE-BU）を使ってみる。
以前にラズパイ4を使って、オムロンの環境センサで遊んでいたのですが、今回ラズパイ5を購入したので、そちらのほうで環境センサを使ってみることにします。

以前の記事
[オムロン環境センサ（2JCIE-BU）をラズパイで使ってみた。（１）](https://qiita.com/Toshiaki0315/items/aa43e78c024bb900ef53)

前回2021/10/11に記事を投稿しているので、復習がてら最初からやってみます。

## 2JCIE-BUを認識させる

ラズパイ5に2JCIE-BUを挿します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28184/dacc5f1f-fad7-53bf-ee50-96dd2576c490.png)

前回と違ってカメラやらRTCの電池やらシリアルの線やらが出ていますが、必要なので映していません。

## 2JCIE-BUのベンダーIDとプロダクトIDの確認
最初に接続デバイス（2JCIE-BE）のベンダーIDとプロダクトIDを確認するためにlsusbコマンドを実行します。

```shell:
nomura@raspberrypi5:~ $ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 0590:00d4 Omron Corp. 2JCIE-BU01
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
```

バス、デバイス、ベンダーID、プロダクトID、ベンダー名、製品名の順に並んでいます。
2JCIE-BUのところだけ抜き出すと以下のようになります。

|Bus|Device|VenderID|ProductID|Vender|Product|
|:-:|:-:|:-:|:-:|:-:|:-:|
|001|002|0590|00d4|Omron Corp.|2JCIE-BU01|

## FTDIのドライバと2JCIE-BUを関連付ける

```shell:
nomura@raspberrypi5:~ $ sudo modprobe ftdi_sio
nomura@raspberrypi5:~ $ sudo sh -c "echo 0590 00d4 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id"
```

### 確認
new_idファイルに書き込まれているか確認します。

```shell:
nomura@raspberrypi5:~ $ cat /sys/bus/usb-serial/drivers/ftdi_sio/new_id
0590 00d4
```

ちゃんとFTDI USB Serial Device converterがttyUSB0に割り当てられているか確認します。

```shell:
nomura@raspberrypi5:~ $ dmesg | grep usb
[    0.031116] usbcore: registered new interface driver usbfs
[    0.031124] usbcore: registered new interface driver hub
[    0.031133] usbcore: registered new device driver usb
[    0.356789] usbcore: registered new device driver r8152-cfgselector
[    0.356797] usbcore: registered new interface driver r8152
[    0.356803] usbcore: registered new interface driver lan78xx
[    0.356810] usbcore: registered new interface driver smsc95xx
[    0.357018] usbcore: registered new interface driver uas
[    0.357031] usbcore: registered new interface driver usb-storage
[    0.370027] usbcore: registered new interface driver usbhid
[    0.370029] usbhid: USB HID core driver
[    0.525780] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
[    0.525785] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.525787] usb usb1: Product: xHCI Host Controller
[    0.525790] usb usb1: Manufacturer: Linux 6.6.28+rpt-rpi-2712 xhci-hcd
[    0.525792] usb usb1: SerialNumber: xhci-hcd.0
[    0.526073] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.06
[    0.526076] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.526079] usb usb2: Product: xHCI Host Controller
[    0.526081] usb usb2: Manufacturer: Linux 6.6.28+rpt-rpi-2712 xhci-hcd
[    0.526083] usb usb2: SerialNumber: xhci-hcd.0
[    0.527006] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
[    0.527010] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.527012] usb usb3: Product: xHCI Host Controller
[    0.527015] usb usb3: Manufacturer: Linux 6.6.28+rpt-rpi-2712 xhci-hcd
[    0.527017] usb usb3: SerialNumber: xhci-hcd.1
[    0.527234] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.06
[    0.527238] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.527240] usb usb4: Product: xHCI Host Controller
[    0.527242] usb usb4: Manufacturer: Linux 6.6.28+rpt-rpi-2712 xhci-hcd
[    0.527244] usb usb4: SerialNumber: xhci-hcd.1
[    2.939289] usbcore: registered new interface driver brcmfmac
[  554.119996] usb 1-2: new full-speed USB device number 2 using xhci-hcd
[  554.312434] usb 1-2: New USB device found, idVendor=0590, idProduct=00d4, bcdDevice=10.00
[  554.312440] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  554.312444] usb 1-2: Product: 2JCIE-BU01
[  554.312446] usb 1-2: Manufacturer: OMRON
[  554.312449] usb 1-2: SerialNumber: MY36USV9
[ 1593.872089] usbcore: registered new interface driver usbserial_generic
[ 1593.872111] usbserial: USB Serial support registered for generic
[ 1593.878839] usbcore: registered new interface driver ftdi_sio
[ 1593.878859] usbserial: USB Serial support registered for FTDI USB Serial Device
[ 1781.242102] usb 1-2: Detected FT-X
[ 1781.251740] usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB0
```
## 2JCIE-BUを自動認識するように設定
前回も書きましたが、起動するたびにコマンドを実行して認識させるのも面倒なので、/etc/udev/rules.d/に新しいルールファイルを作って自動認識するようにします。

```shel:
nomura@raspberrypi5:~ $ sudo vi /etc/udev/rules.d/80-2jcie-bu01-usb.rules
```

ルール
```shell:80-2jcie-bu01-usb.rules
ACTION=="add", \
SUBSYSTEM=="usb", \
ATTRS{idVendor}=="0590", \
ATTRS{idProduct}=="00d4", \
RUN+="/sbin/modprobe ftdi_sio", RUN+="/bin/sh -c 'echo 0590 00d4 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'"
```
ルールファイルのキーの意味などは以前の投稿を参考にしてください。

```shell:
nomura@raspberrypi5:~ $ sudo udevadm control --reload
```

ルール適用がうまくいくと、2JCIE-BUを挿した状態で起動したり、起動後に2JCIE-BUを挿したりしたときに自動的にドライバーが読み込まれて使える状態になっています。

再起動後のdmesgコマンド実行結果
```shell:[    0.031230] usbcore: registered new interface driver usbfs
[    0.031238] usbcore: registered new interface driver hub
[    0.031247] usbcore: registered new device driver usb
[    0.356895] usbcore: registered new device driver r8152-cfgselector
[    0.356903] usbcore: registered new interface driver r8152
[    0.356909] usbcore: registered new interface driver lan78xx
[    0.356916] usbcore: registered new interface driver smsc95xx
[    0.357124] usbcore: registered new interface driver uas
[    0.357137] usbcore: registered new interface driver usb-storage
[    0.370144] usbcore: registered new interface driver usbhid
[    0.370146] usbhid: USB HID core driver
[    0.525910] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
[    0.525914] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.525916] usb usb1: Product: xHCI Host Controller
[    0.525919] usb usb1: Manufacturer: Linux 6.6.28+rpt-rpi-2712 xhci-hcd
[    0.525921] usb usb1: SerialNumber: xhci-hcd.0
[    0.526204] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.06
[    0.526208] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.526210] usb usb2: Product: xHCI Host Controller
[    0.526212] usb usb2: Manufacturer: Linux 6.6.28+rpt-rpi-2712 xhci-hcd
[    0.526214] usb usb2: SerialNumber: xhci-hcd.0
[    0.527142] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
[    0.527145] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.527148] usb usb3: Product: xHCI Host Controller
[    0.527150] usb usb3: Manufacturer: Linux 6.6.28+rpt-rpi-2712 xhci-hcd
[    0.527152] usb usb3: SerialNumber: xhci-hcd.1
[    0.527370] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.06
[    0.527373] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.527375] usb usb4: Product: xHCI Host Controller
[    0.527377] usb usb4: Manufacturer: Linux 6.6.28+rpt-rpi-2712 xhci-hcd
[    0.527379] usb usb4: SerialNumber: xhci-hcd.1
[    3.085218] usbcore: registered new interface driver brcmfmac
[   27.979717] usb 1-2: new full-speed USB device number 2 using xhci-hcd
[   28.172809] usb 1-2: New USB device found, idVendor=0590, idProduct=00d4, bcdDevice=10.00
[   28.172814] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   28.172817] usb 1-2: Product: 2JCIE-BU01
[   28.172818] usb 1-2: Manufacturer: OMRON
[   28.172820] usb 1-2: SerialNumber: MY36USV9
[   32.648683] usbcore: registered new interface driver usbserial_generic
[   32.648700] usbserial: USB Serial support registered for generic
[   32.654631] usbcore: registered new interface driver ftdi_sio
[   32.654653] usbserial: USB Serial support registered for FTDI USB Serial Device
[   32.656400] usb 1-2: Detected FT-X
[   32.666113] usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB0
```

認識されていることが確認できたら、オムロンが公開しているサンプルプログラムを動かしてみましょう。
正常に認識されていれば、以下のようなデータが繰り返し取得されるようになります。

```:log
Time measured:2024/06/01 14:33:04
Temperature:27.33
Relative humidity:72.34
Ambient light:244
Barometric pressure:1003.162
Sound noise:63.29
eTVOC:224
eCO2:1572
Discomfort index:77.66
Heat stroke:26.36
Vibration information:0
SI value:0.0
PGA:0.0
Seismic intensity:0.0
Temperature flag:0
Relative humidity flag:0
Ambient light flag:0
Barometric pressure flag:0
Sound noise flag:0
eTVOC flag:0
eCO2 flag:0
Discomfort index flag:0
Heat stroke flag:0
SI value flag:0
PGA flag:0
Seismic intensity flag:0
```