0

Arduino Yun (openWRT を実行) の USB ポートからの入力をファイルに保存しようとしています。これにより、Yun でホストされ、ブラウザー経由でアクセスできる PHP ページから準備できるようになります。

Yun は、RS485 を介してボイラーへの Web インターフェイスとして機能し、すべてのデータを記録し、ボイラーから供給されてファイルに保存されるさまざまな温度のグラフを生成します。

データは、RS485 フィード (ボイラーから) から FTDI ケーブル経由で取得されます。

データは次の形式で毎秒フィードされます...

DAT,39665,8,0.00,-273.15,-273.15,-273.15,0,0.00,0.60,0.00,0.00,-6.25,0.00,0.00,60.00,60.00,225,-273.15,0.00
STAT,39666,0.00,0,19,924,2,0,0,0,0,2,2,2,0,0

次のヒントを使用して、いくつかの運がありました... Linuxシェル:シリアルポートからの入力行を毎分保存し、リモートサーバーに送信します

そして... Bashスクリプト:特定の入力(eofなど)が現れるまで、シリアルポート(/ dev/ttyUSB0)からファイルにストリームを保存します

この最後の記事では、次のコードを提供します。

#!/bin/bash
while read line; do
     if [ "$line" != "EOF" ]; then
          echo "$line" >> file.txt
     else
          break
     fi
done < /dev/ttyUSB0

ただし、エラーが発生しますline 8: syntax error: unexpected "done" (expecting then)

しかし、理由がわからないので、次のように単純化しました。

#!/bin/bash
while read line; do
    echo "$line" >> hsffile.txt
done < /dev/ttyUSB0

これまでのアクション:

  1. FTDI ドライバーのインストールopkg install kmod-usb-serial-ftdi

  2. 上記の単純化されたバージョンに基づいて、フォルダー/bin/ihiuにボイラー2text.shというスクリプトを作成しました。

  3. ファイルの実行許可が与えられた場合chmod u+x boiler2text.sh

  4. Putty SSH ウィンドウ内からスクリプトを実行しました。sh /bin/ihiu/boiler2text.sh

これまでのところ、うまく機能していますが、いくつかの問題に遭遇しました。

  1. システムに SSH 接続しなくても、スクリプトを 24 時間年中無休で実行する必要があります。PHP ページ内からシステム コマンドを実行できますが、スクリプトを実行するとハングするだけで、ファイルに何も出力されないようです。
  2. ファイルが非常に大きくなり始めると、理想的には、ファイルが最大ファイルサイズに達したら、行が追加されるたびにファイルの先頭から行を削除する必要があります。または、日付と時刻に基づいたファイル名に保存して、ファイル名が 1 時間ごとに変わるようにします。

私は Linux を初めて使用しますが、何かアドバイスをいただければ幸いです。

4

1 に答える 1