OMRON S8BA(FA用UPS)をUbuntuで使用する

# 1. はじめに

[OMRON S8BA](https://www.fa.omron.co.jp/products/family/3450/)というFA用のUPSを使用することになったのですが、
・Linux用に用意されているUPS管理ソフトは[PowerAttendant Lite Ver.1.05(Linux版)](https://www.fa.omron.co.jp/product/tool/ups/powerattendant_lite_lin/download.html)と[Simple Shutdown Software Ver.2.40 Linux/64ビット版](https://www.fa.omron.co.jp/product/tool/ups/simple_shutdown_linux.html)の2つ
・しかし、上記2つのソフトはLedHat系しか公式には対応していない。
・UbuntuにてSimple Shutdown Softwareをの動作確認事例はWEB上にいくつかある。
なので、UbuntuでSimple Shutdown Softwareを使用するための手順を書き残します。

なお、Ubuntu16.04とUbuntu22.04で実際に動作確認済みです。



# 2. インストール

作業ディレクトリと同じ階層にSimpleSoftwareVer240_Linux.zipがある前提で進めます。
※zipファイルのダウンロードにあたってはwgetでは403エラーで失敗してしまうので、ブラウザでダウンロードするなどしてください。

```bash:bash
# zipファイルを解凍する
$ unzip ./SimpleSoftwareVer240_Linux.zip

# Releaseディレクトリのある階層まで移動
$ cd SimpleSoftwareVer240_Linux/SimpleSoftwareVer240_Linux_X64

# ディレクトリ以下のアクセス権限をフルアクセスに変更
$ sudo chmod –R 777 Release

# Releaseディレクトリへ移動
$ cd Release

# install.shファイルの一部を修正する
#  -case `uname -n` in
#  +UNAME=debian
#  +
#  +case $UNAME in
$ sed -i '/case `uname -n` in/,/esac/c\UNAME=debian\n\ncase $UNAME in\n\tdebian)\n\tmv -f /usr/lib/ssd/master/SimpleShutdown /etc/init.d/SimpleShutdown\n\tupdate-rc.d SimpleShutdown defaults >/dev/null 2>&1\n\t;;\n\t*)\n\tmv -f /usr/lib/ssd/master/S99SimpleShutdown /etc/init.d/S99SimpleShutdown\n\tln -s /etc/init.d/S99SimpleShutdown /etc/rc1.d/S99SimpleShutdown >/dev/null 2>&1\n\tln -s /etc/init.d/S99SimpleShutdown /etc/rc2.d/S99SimpleShutdown >/dev/null 2>&1\n\tln -s /etc/init.d/S99SimpleShutdown /etc/rc3.d/S99SimpleShutdown >/dev/null 2>&1\n\tln -s /etc/init.d/S99SimpleShutdown /etc/rc5.d/S99SimpleShutdown >/dev/null 2>&1\n\tmv -f /usr/lib/ssd/master/SimpleShutdownDaemon /etc/init.d/SimpleShutdownDaemon\n\tchkconfig --level 1235 SimpleShutdownDaemon on >/dev/null 2>&1\n\t;;\nesac' install.sh

# Simple Shutdown Softwareのソフトをインストール
$ sudo bash ./install.sh
```

# 3. シャットダウンパラメータ設定

これもSimple Shutdown Softwareの取説(zipファイル内にあるpdf)に記載がある通りです。
下記のコマンドを実行し対話形式で設定を行います。
```bash:bash
# 事前にlusbライブラリをインストールしておく(インストールしておかないとエラーで設定できない)
$ sudo apt-get update && sudo apt-get install -y libusb-dev

# シャットダウンパラメータを設定
$ sudo /usr/lib/ssd/master/config.sh
```
1か所だけ気を付けないといけないのは、Ubuntuで使用する際にはUSB通信モードの選択ではHIDを選択しないといけない(らしい)ことです。
※libusb-devをインストールしているのでLibusbでも問題なくUPSと通信できると思います。

```bash
2. Select USB communication mode 
   1. Libusb 2.HID
   (Default Mode is "Libusb")
   Select Number: 2
```

シャットダウンパラメータは /usr/lib/ssd/master/Shutdown.cfg に保存されますので、複数台のPCで同じ設定を繰り返すならば予めShutdown.cfgを作成しておき、あとからcpコマンドで上書きしてしまうのもアリです。
（特にシャットダウンコマンドはタイプミスすると面倒なので）


# 4. デーモンの起動

設定後にデーモンの動作状況を確認することになるのですが、sudoで実行しないと起動/終了の切り替えができません。

```bash:bash
$ sudo /usr/lib/ssd/master/AgentManager

        1. Agent Start           <-終了状態(1で実行すると起動する)
        2. Communication Port
        3. Version Information
        0. Exit

        Please Select Number:1

        1. Agent Stop            <-起動状態(1で実行すると終了する)
        2. Communication Port
        3. Version Information
        0. Exit
```

念の為、ここまで設定できればUPSを正しく認識できているか、ssdDaemonが立ち上がっているか確認しておきましょう。

```bash:bash
# USB接続されているデバイスの確認
$ lsusb
Device 006: ID 0590:00d5 Omron Corp. S8BA-24D24D480SBF Bus 001

# "ssd"を含むデーモンが立ち上がっているか確認
$ ps -aux|grep ssd
root        5542  0.0  0.0   6092  1796 ?        S    10:04   0:00 /usr/lib/ssd/master/ssdDaemon
username    5556  0.0  0.0  10140  2432 pts/0    S+   10:05   0:00 grep --color=auto ssd
```
この状態であれば、UPSの1次側電源を遮断した際にシャットダウンパラメータで設定した内容に応じて自動的にシャットダウンができるはずです。

# 5. デーモンの自動起動

インストールとシャットダウンパラメータを設定しただけの状態では、PCの起動時にssdDaemonが自動で立ち上がらないので、毎回手作業でAgentManagerからデーモンを起動する必要が出てきます。
しかしそれは現実的ではないので、 /usr/lib/ssd/master ディレクトリ内の SimpleShutdownDaemon スクリプトをPCの起動時にできるようにする必要があります。

```bash:bash
# /usr/lib/ssd/master/ ディレクトリ内に SimpleShutdownDaemon があるか確認
$ ls /usr/lib/ssd/master/
AgentManager  S99SimpleShutdown  SimpleShutdownDaemon     config.sh           my_kvm.sh  ssdService
Daemon.Lock   Service.Lock       UsbPort-HID.so.1.0.0     fifo.AgentToKernel  omronctl
EventLogFile  Shutdown.cfg       UsbPort-Libusb.so.1.0.0  fifo.KernelToAgent  ssdDaemon

# なければzipファイルを解凍したディレクトリからコピーしてきます。
cp SimpleSoftwareVer240_Linux/SimpleSoftwareVer240_Linux_X64/Release/SimpleShutdownDaemon /usr/lib/ssd/master/SimpleShutdownDaemon

# /etc/rc.localファイルに次のテキストを追記し、アクセス権も設定します。
#  #!/bin/bash
#  
#  /usr/lib/ssd/master/SimpleShutdownDaemon start
sudo grep -qxF '/usr/lib/ssd/master/SimpleShutdownDaemon start' /etc/rc.local || sudo bash -c 'echo -e "#!/bin/bash\n\n/usr/lib/ssd/master/SimpleShutdownDaemon start" >> /etc/rc.local && chmod +x /etc/rc.local'
```

再起動したあとに下記のようにSimpleShutdownSoftwareに関係するデーモンが立ち上がっていれば、UPSの1次側電源を遮断しても自動的にシャットダウンができるはずです。

```bash:bash
$ ps -aux | grep ssd
root        1759  0.1  0.0   6368  1792 ?        S    00:29   0:00 /usr/lib/ssd/master/ssdService
root        1776  0.3  0.0   8916  2048 ?        S    00:29   0:00 /usr/lib/ssd/master/ssdDaemon
username    3643  0.0  0.0  10208  2304 pts/0    S+   00:29   0:00 grep --color=auto ssd
```


以上です



# 6. 参考記事

https://wtech.jp/wiki/%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89.shtml#j00025_header

https://www.gem.mydns.jp/daitei/linux/homeserver202x/software/ups/

https://yoshinorin.net/articles/2017/07/12/ups-omron-simple-shutdown-software/

https://yoshinorin.net/articles/2017/07/15/simple-shutdown-software-auto-start/