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)

    GUI画面

Pythonバージョン

ver3.8.1以降

外部ライブラリ

なし

手順

  1. FTPサーバを立ち上げる
  2. FTPサーバで使用するポート番号(TCP、デフォルト:21(制御コネクション)・20(アクティブモードのデータコネクション))を開放する
    ※FTPパッシブモードを利用する場合はデータコネクションで使用するポート範囲を開放する
  3. /alerts.htmlをブラウザで開く
  4. “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桁の連番)に保存されます。
  5. アラートを削除しFTPサーバへの保存を停止する場合、HTMLファイルの"Delete all settings"ボタンを押す
  6. 【CUIのみ】Pythonスクリプトを所望のディレクトリにダウンロードし実行する
    コマンド例(スクリプトをC:\にダウンロードし、FTPサーバのマウントディレクトリがC:/ftp/、サブディレクトリ名がunocdkkocf_001の場合)
    cd C:\ 
    python ftp_csv_merge.py C:/ftp/notify-dir/unocdkkocf_001/
    
  7. マージ完了
    スクリプトを実行すると、指定したディレクトリ以下のCSVファイルがマージされ、同一ディレクトリにmerge.csvというファイル名で保存されます。 また、マージの際、1列目に各CSVファイルの最終更新日時(≒データ取得日時)を追記します。 以下はmerge.csvのデータ内容の一例です。

PoE対応 WebAPI 超音波センサ

音圧データ保存・各種音声処理

音圧データを受信しテキストデータとして保存します。 また、受信した音圧データを元にwaveファイル、FFTによるパワースペクトル、STFTによるスペクトログラム、ウェーブレット変換によるスカログラムを保存します。

ダウンロード

Pythonバージョン

ver3.8.1以降

外部ライブラリ

  • matplotlib
  • numpy
  • scipy
  • wavio
  • obspy

手順

  1. データ受信に用いるPCのポート(UDP)を開放する
  2. 【CUIのみ】必要な外部ライブラリがインストールされていない場合、以下のコマンドでインストールする
    pip install matplotlib numpy scipy wavio obspy
    
  3. 【CUIのみ】スクリプトを所望のディレクトリにダウンロードし実行する
    コマンド例(スクリプトをC:\にダウンロードし、ポート番号60000を用いる場合)
    cd C:\ 
    python saveSoundPressure_UdpSrv.py 60000
    
  4. 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}"
      
    • ブラウザから操作する場合
    1. /raw.htmlをPCのブラウザで開く
    2. “Destination IP address"は空欄(=PCに送信)、“Destination port"にはポート番号を入力、“Number of data"は空欄もしくは適当な値を入力し"Start sensing"ボタンを押す
    3. “Stop sensing"ボタンを押す
      ※“Number of data"に値を入力した場合は"Stop sensing"ボタンを押す必要はありません。

音圧データ受信完了後、テキスト形式の音圧データが./dataディレクトリに保存されます。
また、音圧データ受信完了毎に呼び出されるmyFunc関数内において、受信した音圧データを元にwaveファイル、FFTによるパワースペクトル、STFTによるスペクトログラム、ウェーブレット変換によるスカログラムが./dataディレクトリに保存されます。 ※処理時間の肥大化を防ぐため、FFTとスカログラムは一定のデータ点数以下のときのみ処理を行います。データ点数が多い場合にも処理を行いたい場合はPythonスクリプト内のデータ点数の部分を書き換えてください。
以下の画像は「こんにちは」という音声のパワースペクトル、スペクトログラム、スカログラムです。


  1. 一部の製品(PoE対応 WebAPI 超音波センサ)は現在アラート機能を搭載していません。↩︎

  2. 「WindowsによってPCが保護されました」というメッセージが表示される場合の対処方法はこちらを参考にしてください。↩︎