我想从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
在现实中,你可能需要做一些更高级的事情,这样你就不会一直发送重复的数据。
当然,在你自己的情况下,你的建议可能是足够的…