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
これまでのアクション:
FTDI ドライバーのインストール
opkg install kmod-usb-serial-ftdi
上記の単純化されたバージョンに基づいて、フォルダー/bin/ihiuにボイラー2text.shというスクリプトを作成しました。
ファイルの実行許可が与えられた場合
chmod u+x boiler2text.sh
Putty SSH ウィンドウ内からスクリプトを実行しました。
sh /bin/ihiu/boiler2text.sh
これまでのところ、うまく機能していますが、いくつかの問題に遭遇しました。
- システムに SSH 接続しなくても、スクリプトを 24 時間年中無休で実行する必要があります。PHP ページ内からシステム コマンドを実行できますが、スクリプトを実行するとハングするだけで、ファイルに何も出力されないようです。
- ファイルが非常に大きくなり始めると、理想的には、ファイルが最大ファイルサイズに達したら、行が追加されるたびにファイルの先頭から行を削除する必要があります。または、日付と時刻に基づいたファイル名に保存して、ファイル名が 1 時間ごとに変わるようにします。
私は Linux を初めて使用しますが、何かアドバイスをいただければ幸いです。