在openWRT中管道Linux cat命令到web



我想从openWRT运行一个shell脚本。基本上它需要不断读取arduino串行端口,当它读取一些东西时,它需要被发送到基于web的服务。

目前这是我的脚本,只保存到文本文件:

cat /dev/ttyACM0  >> /www/home/log.txt & 

我想避免保存到文件,并将输出字符串发送到基于web的服务,该服务将读数存储在mySQL DB中。

所有的数据保存web服务都设置好了,并像这样工作:

http://my-service.com/?data=what-ever-the-arduino-spits

有办法用wget来做吗?

可能是这样的:

cat /dev/ttyACM0 | xargs -n % wget http://ivardi.info?todb=%

请记住,openWRT是在32 RAM和4MB闪存上,所以这只能用shell脚本,而不是Phyton/PHP。

请注意,在某些情况下,直接读取串行(/dev/ttyACM0)设备并将其直接传递给wget可能是危险的,因为某些原因导致读取阻塞(如果串行端口断开并重新连接会发生什么?)

将输出路由到文件可能更安全;然后在一个循环中读取最近的数据并使用wget"推送"数据。比如:

#!/bin/bash
while true; do
    tail -1 /www/home/log/txt | wget <...options...>
    sleep 60
done

在现实中,你可能需要做一些更高级的事情,这样你就不会一直发送重复的数据。

当然,在你自己的情况下,你的建议可能是足够的…

最新更新