1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オムロン環境センサ(2JCIE-BU)をラズパイで使ってみた。(9)

Posted at

今まで作ってきたスクリプトなどをサービスで起動されるようにします。

  • 2JCIE-BUからデータを取得してPostgreSQLに登録するスクリプト
  • Juliusを起動するスクリプト

すでにサービスと起動しているのは、PostgreSQLとMetabaseです。

PostgreSQL
pi@raspberrypi:~/metabase $ sudo systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Sat 2021-11-06 11:20:55 JST; 1 day 4h ago
  Process: 643 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 643 (code=exited, status=0/SUCCESS)

11月 06 11:20:55 raspberrypi systemd[1]: Starting PostgreSQL RDBMS...
11月 06 11:20:55 raspberrypi systemd[1]: Started PostgreSQL RDBMS.
Metabase
pi@raspberrypi:~/metabase $ sudo systemctl status metabase
● metabase.service - metabase
   Loaded: loaded (/etc/systemd/system/metabase.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2021-11-06 11:20:50 JST; 1 day 4h ago
 Main PID: 471 (run.sh)
    Tasks: 50 (limit: 4915)
   CGroup: /system.slice/metabase.service
           ├─471 /bin/sh /home/pi/metabase/run.sh
           └─499 java -Xmx500m -jar /home/pi/metabase/metabase.jar

11月 07 15:41:34 raspberrypi run.sh[471]: 2021-11-07 15:41:34,288 INFO metabase.task :: タスク SendAnonymousUsageStats を初期化しています 📆
11月 07 15:41:34 raspberrypi run.sh[471]: 2021-11-07 15:41:34,322 INFO metabase.task :: タスク SendAbandomentEmails を初期化しています 📆
11月 07 15:41:34 raspberrypi run.sh[471]: 2021-11-07 15:41:34,341 INFO task.send-pulses :: スケジュールされたパルスを送信しています…
11月 07 15:41:34 raspberrypi run.sh[471]: 2021-11-07 15:41:34,359 INFO metabase.task :: タスク SendPulses を初期化しています 📆
11月 07 15:41:34 raspberrypi run.sh[471]: 2021-11-07 15:41:34,452 INFO metabase.task :: タスク SendFollowUpEmails を初期化しています 📆
11月 07 15:41:34 raspberrypi run.sh[471]: 2021-11-07 15:41:34,502 INFO metabase.task :: タスク TaskHistoryCleanup を初期化しています 📆
11月 07 15:41:34 raspberrypi run.sh[471]: 2021-11-07 15:41:34,558 INFO driver.impl :: ドライバー:sqlの初期化中です...
11月 07 15:41:34 raspberrypi run.sh[471]: 2021-11-07 15:41:34,561 INFO driver.impl :: ドライバー:sql-jdbcの初期化中です...
11月 07 15:41:34 raspberrypi run.sh[471]: 2021-11-07 15:41:34,563 INFO driver.impl :: ドライバー:h2の初期化中です...
11月 07 15:41:34 raspberrypi run.sh[471]: 2021-11-07 15:41:34,598 INFO metabase.core :: Metabaseの初期化が完了しました

センサー値のデータベース登録スクリプト

(3)で作成したセンサーからデータベースに登録するスクリプトをsensor2db.pyとして、以下のディレクトに格納しました。
/home/pi/omron_sensor/sensor2db.py

で、起動スクリプトをrun.shと作成しました。

run.sh
#!/usr/bin/bash

python3 /home/pi/omron_sensor/sensor2db.py

サービス化するために設定ファイルを作成

pi@raspberrypi:~ $ sudo vi /etc/systemd/system/sensor2db.service
sensor2db.service
[Unit]
Description = sensor to database
After = local-fs.target
ConditionPathExists = /home/pi/omron_sensor

[Service]
WorkingDirectory = /home/pi/omron_sensor
ExecStart = /home/pi/omron_sensor/run.sh
ExecStop = /bin/kill ${MAINPID}
Restart = always
Type = simple

[Install]
WantedBy = default.target

最初ユーザモードでスクリプトを起動できずに悩んで時間が取られてしまいましたが、
WantedBy=multi-user.target
の、設定を
WantedBy = default.target
とすることで解決できました。
systemdをもう少し勉強しないといけないなぁ。

サービスを有効化

pi@raspberrypi:~ $ systemctl --user enable /etc/systemd/system/sensor2db.service
Created symlink /home/pi/.config/systemd/user/default.target.wants/sensor2db.service → /etc/systemd/system/sensor2db.service.
pi@raspberrypi:~ $ systemctl --user daemon-reload
pi@raspberrypi:~ $ systemctl --user start sensor2db

以下のコマンドを実行して、起動時にサービスが起動するようにします。

pi@raspberrypi:~ $ loginctl enable-linger pi

動作確認

再起動してサービスが起動しているかどうか確認します。

pi@raspberrypi:~ $ systemctl --user status sensor2db
● sensor2db.service - sensor to database
   Loaded: loaded (/etc/systemd/system/sensor2db.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-11-08 18:30:12 JST; 21s ago
 Main PID: 623 (run.sh)
   CGroup: /user.slice/user-1000.slice/user@1000.service/sensor2db.service
           ├─623 /usr/bin/bash /home/pi/omron_sensor/run.sh
           └─626 python3 /home/pi/omron_sensor/sensor2db.py

11月 08 18:30:12 raspberrypi systemd[572]: Started sensor to database.

音声認識(Julius)スクリプト

(8)で書いたようにJuliusをサーバモードで起動します。
センサーの時と同じように起動スクリプトをrun.shと作成しました。

run.sh
#!/usr/bin/bash
julius -C ~/julius/dictation-kit-4.5/am-gmm.jconf -nostrip -gram ~/julius/dict/sensor -module

サービス化するために設定ファイルを作成

pi@raspberrypi:~/julius $ sudo vi /etc/systemd/system/julius.service
julius.service
[Unit]
Description = sensor to database
After = local-fs.target
ConditionPathExists = /home/pi/julius

[Service]
WorkingDirectory = /home/pi/julius
ExecStart = /home/pi/julius/run.sh
ExecStop = /bin/kill ${MAINPID}
Restart = always
Type = simple

[Install]
WantedBy = default.target

サービスを有効化

pi@raspberrypi:~/julius $ systemctl --user enable /etc/systemd/system/julius.service
Created symlink /home/pi/.config/systemd/user/default.target.wants/julius.service → /etc/systemd/system/julius.service.
Created symlink /home/pi/.config/systemd/user/julius.service → /etc/systemd/system/julius.service.
pi@raspberrypi:~/julius $ systemctl --user daemon-reload
pi@raspberrypi:~/julius $ systemctl --user start julius

動作確認

pi@raspberrypi:~ $ systemctl --user status julius
● julius.service - sensor to database
   Loaded: loaded (/etc/systemd/system/julius.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-11-08 18:57:09 JST; 24s ago
 Main PID: 624 (run.sh)
   CGroup: /user.slice/user-1000.slice/user@1000.service/julius.service
           ├─624 /usr/bin/bash /home/pi/julius/run.sh
           └─628 julius -C /home/pi/julius/dictation-kit-4.5/am-gmm.jconf -nostrip -gram /home/pi/julius/dict/sensor -module

11月 08 18:57:09 raspberrypi systemd[557]: Started sensor to database.

音声合成

後日続くかも。。。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?