Python
製品共通
アラート登録・FTPサーバへ保存
PoE対応WebAPIセンサの一部の製品 1は、指定した周期で自動的に計測を行い、指定した条件を満たした際に通知するアラート機能を搭載しています。
ここではFTPモードを利用し、アラート設定をブラウザから登録し指定したFTPサーバ・パスにCSV形式の通知データを保存し、そのデータをPythonスクリプトによりマージする方法を説明します。
ダウンロード
-
CUI
ftp_csv_merge.py -
GUI (Windows専用)
GUIで操作できるようにしたものです。exeファイルを使用する場合、Pythonのインストールおよび下記手順6の操作は不要です。
ftp_csv_merge_GUI.py (ソースコード。要PySimpleGUI)
ftp_csv_merge_GUI.exe (exeファイル 2)
Pythonバージョン
ver3.8.1以降
外部ライブラリ
なし
手順
- FTPサーバを立ち上げる
- FTPサーバで使用するポート番号(TCP、デフォルト:21(制御コネクション)・20(アクティブモードのデータコネクション))を開放する
※FTPパッシブモードを利用する場合はデータコネクションで使用するポート範囲を開放する /alerts.html
をブラウザで開く- “Notify mode"は"ftp"を選択、“Destination IP address"はFTPサーバのIPアドレス(空欄の場合はこのHTMLを開いているPCのIPを適用)、“Destination port"は空欄、FTPの"Active mode"はON(パッシブモード時はOFF)、“Add sub directory"はON、“Username"と"Password"はFTPに接続可能なアカウントのユーザ名とパスワードを入力、“Notify timing"に"eachPeriod”、それ以外の項目は適当な値を入力し"Register"ボタンを押す
アラート条件を満たすと通知データをFTPサーバに保存します。上の画像の設定の場合、監視周期である10秒毎にCSVファイルが
/notify-dir/unocdkkocf_001/00000001.csv
(サブディレクトリ名の規則はシリアルナンバー+0埋め3桁の連番、ファイル名の規則は0埋め8桁の連番)に保存されます。 - アラートを削除しFTPサーバへの保存を停止する場合、HTMLファイルの"Delete all settings"ボタンを押す
- 【CUIのみ】Pythonスクリプトを所望のディレクトリにダウンロードし実行する
コマンド例(スクリプトをC:\
にダウンロードし、FTPサーバのマウントディレクトリがC:/ftp/
、サブディレクトリ名がunocdkkocf_001
の場合)cd C:\ python ftp_csv_merge.py C:/ftp/notify-dir/unocdkkocf_001/
- マージ完了
スクリプトを実行すると、指定したディレクトリ以下のCSVファイルがマージされ、同一ディレクトリにmerge.csv
というファイル名で保存されます。 また、マージの際、1列目に各CSVファイルの最終更新日時(≒データ取得日時)を追記します。 以下はmerge.csv
のデータ内容の一例です。
PoE対応 WebAPI 超音波センサ
音圧データ保存・各種音声処理
音圧データを受信しテキストデータとして保存します。 また、受信した音圧データを元にwaveファイル、FFTによるパワースペクトル、STFTによるスペクトログラム、ウェーブレット変換によるスカログラムを保存します。
ダウンロード
-
GUI (Windows専用)
GUIで操作できるようにしたものです。exeファイルを使用する場合、Pythonのインストールおよび下記手順2, 3の操作は不要です。
saveSoundPressure_UdpSrv_GUI.py (ソースコード。要PySimpleGUI)
saveSoundPressure_UdpSrv_GUI.exe (exeファイル 2)
Pythonバージョン
ver3.8.1以降
外部ライブラリ
- matplotlib
- numpy
- scipy
- wavio
- obspy
手順
- データ受信に用いるPCのポート(UDP)を開放する
- 【CUIのみ】必要な外部ライブラリがインストールされていない場合、以下のコマンドでインストールする
pip install matplotlib numpy scipy wavio obspy
- 【CUIのみ】スクリプトを所望のディレクトリにダウンロードし実行する
コマンド例(スクリプトをC:\
にダウンロードし、ポート番号60000を用いる場合)cd C:\ python saveSoundPressure_UdpSrv.py 60000
- curlコマンド等で音圧データ取得操作を行うか、
/raw.html
をブラウザで開き音圧データ取得操作を行う- curlを利用する場合のコマンド例
curl -X POST "http://abcdefghij.local/raw" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"dstPort\":60000,\"frqHz\":160000,\"dataNum\":16384}"
- ブラウザから操作する場合
/raw.html
をPCのブラウザで開く- “Destination IP address"は空欄(=PCに送信)、“Destination port"にはポート番号を入力、“Number of data"は空欄もしくは適当な値を入力し"Start sensing"ボタンを押す
- “Stop sensing"ボタンを押す
※“Number of data"に値を入力した場合は"Stop sensing"ボタンを押す必要はありません。
- curlを利用する場合のコマンド例
音圧データ受信完了後、テキスト形式の音圧データが./data
ディレクトリに保存されます。
また、音圧データ受信完了毎に呼び出されるmyFunc関数内において、受信した音圧データを元にwaveファイル、FFTによるパワースペクトル、STFTによるスペクトログラム、ウェーブレット変換によるスカログラムが./data
ディレクトリに保存されます。
※処理時間の肥大化を防ぐため、FFTとスカログラムは一定のデータ点数以下のときのみ処理を行います。データ点数が多い場合にも処理を行いたい場合はPythonスクリプト内のデータ点数の部分を書き換えてください。
以下の画像は「こんにちは」という音声のパワースペクトル、スペクトログラム、スカログラムです。