Arduino를 사용하여 Pachube에 데이터를 게시 할 때 문제가 있습니다. Arduino는 't'를 보내고 'l'을 보낼 때 빛의 레벨에 대한 JSON 데이터를 반환 할 때 온도에 대한 JSON 데이터를 반환하도록 구성됩니다. 이것은 Arduino 시리얼 모니터를 통해 완벽하게 작동합니다. 나는 두 개의 bash 스크립트를 만들었다. 하나는 정기적으로 't'와 'l'명령을 Arduino에 보내고 각 요청 사이에 10 초를 기다립니다.Arduino가 쿼리보다 많은 응답을 반환했습니다.
while true; do
echo -n t > /dev/ttyACM0
echo "$(date): Queried Arduino for temperature."
sleep 10
echo -n l > /dev/ttyACM0
echo "$(date): Queried Arduino for light."
sleep 10
done
잘 작동합니다. 10 초마다 에코 메시지가 나타납니다. 다른 스크립트는 직렬 포트에서 생성 된 JSON을 읽습니다 (기본적으로 일부 웹 페이지에서 복사했습니다). 이 매 10 초 (첫 번째 스크립트가 JSON 메시지를 작성하는 아두 이노 말했다 때마다 그것을 할 만해야하지만
ARDUINO_PORT=/dev/ttyACM0
ARDUINO_SPEED=9600
API_KEY='MY_PACHUBE_KEY'
FEED_ID='MY_FEED_ID'
# Set speed for usb
stty -F $ARDUINO_PORT ispeed $ARDUINO_SPEED ospeed $ARDUINO_SPEED raw
exec 6<$ARDUINO_PORT
# Read data from Arduino
while read -u 6 f ;do
# Remove trailing carriage return character added
# by println to satisfy stupid MS-DOS Computers
f=${f:0:${#f} - 1}
curl --request PUT --header "X-PachubeApiKey: $API_KEY" --data-binary "{ \"version\":\"1.0.0\", \"datastreams\":[ $f ] }" "http://api.pachube.com/v2/feeds/MY_FEED_ID"
echo "$(date) $f was read."
done
불행하게도,이 스크립트는 에코 메시지 나에게이 Pachube에 게시 된 데이터를 10 초당 여러 번 이야기에 미친 간다). Arduino에서 버퍼링 된 메시지가 문제가 될 수 있다고 생각했지만 문제를 다시 껐다가 다시 켤 때도 마찬가지입니다. 이견있는 사람? 미리 감사드립니다.
많은 도움을 주셔서 감사합니다. 나는 그들이 행동에 변화가 생기고 몇 가지 피드백을 주는지 볼 것입니다. – mikey
안녕하세요. 불행히도 귀하의 제안 중 아무도 도움이되지 않았습니다. 어쨌든 고마워. 다른 아이디어? – mikey
'set -x'를 사용하여 디버깅을 시도해 루프 진행을 결정하는 것이 무엇입니까? 그냥 "여러 번"기다렸다가 무언가를 받기를 기다리거나 아무것도 기다리지 않는 단단한 루프에서 뛰고 있습니까? – ormaaj