MAm sklecony napredce skrypt czytający z portu serial przesyłane z arduino bezprzewodowo dane. Jeśli odpale go recznie wszystko dziala - czyta dane i jesli napotka odpowiedni ciag znakow umieszcza liczbe w mysql. Chodzi mi o to, żeby uruchamiał sie automatycznie przy starcie ( nie udalo mi sie to więc próbowałem obejść to uruchamianiem go z crona - jesli nie ma pliku kontrolka.txt uruchamia się skrypt i leci w pętli - jeśli jest kontrolka - konczy swoje działanie ( w domyśle istnieje już instancja tego programu).
Problem w tym, że cron odpala ten skrypt (w logach widać, pojawia się też plik kontrolka.txt) ale chyba nie czyta wogole danych z portu szeregowego a przynajmniej nie mam wartości w mysql.
Od razu proszę o nie wyśmiewanie siermiężnego skryptu - to moje początki....
Byłbym zobowiązany gdyby ktoś mógł pomóc, naprowadzić....
Kod: Zaznacz cały
#! /bin/bash
# mysql username
SQLUSER="root"
# mysql password
SQLPASS="haslohaslo"
# mysql server hostname/IP
SQLHOST="192.168.1.114"
# prints date in YYYY-MM-DD format
#SQLDATE=$(date +%Y\-%m\-%d)
#SQLTIME=$(date +%H\:%M\:%S)
# database to use (created with: mysql> create database db_whois ;)
SQLDB="hermes"
# table inside the database to use
# created with: mysql> CREATE TABLE tbl_scraped(id INT NOT NULL AUTO_INCREMENT,PRIMARY KEY(id),domain VARCHAR(50),whois_data TEXT,date DATE);
SQLTBL="tbl_scraped"
`
if [ -e /run/kontrolka.txt ] ; then
echo "Masz plik kontrolka"
exit
fi
ARDUINO_PORT=/dev/ttyO2
ARDUINO_SPEED=9600
# Set speed for usb
stty -F $ARDUINO_PORT ispeed $ARDUINO_SPEED ospeed $ARDUINO_SPEED raw
exec 6<$ARDUINO_PORT
echo "." > /run/kontrolka.txt
# Read data from Arduino
while read -u 6 f ;do
SQLDATE=$(date +%Y\-%m\-%d)
SQLTIME=$(date +%H\:%M\:%S)
# Remove trailing carriage return character added
# by println to satisfy stupid MS-DOS Computers
f=${f:0:${#f} - 1}
temp=`echo $f | cut -d : -f 2`
senderid=`echo $f | cut -d : -f 1`
if [ $senderid = "Station1" ]; then
temp_station1=`echo $f | cut -d : -f 2`
hum_station1=`echo $f | cut -d : -f 3`
echo "$(date) I think this is from Station1... temp: $temp_station1, wilg.: $hum_station1 "
elif [ $senderid == "Gas" ]; then
#tlazienka=`echo $f | cut -d : -f 6`
gaz=`echo $f | cut -d : -f 2`
echo "$(date) Spalono kolejne 0,01 m3 gazu"
echo "INSERT INTO gaz VALUES (NULL,'$SQLDATE','$SQLTIME','$gaz');"\
|mysql -u$SQLUSER -p$SQLPASS -h$SQLHOST $SQLDB
echo "gaz done"
elif [ $senderid == "pressure" ]; then
cisnienie=`echo $f | cut -d : -f 2`
echo "$(date) aktualne ciśnienie $cisnienie "
echo "INSERT INTO pressure VALUES (NULL,'$SQLDATE','$SQLTIME','$cisnienie');"\
|mysql -u$SQLUSER -p$SQLPASS -h$SQLHOST $SQLDB
else
echo "nieznany nadawca"
fi
# Do something with the data read
# echo "$(date) $f was read."
#echo $tkuchnia > /var/www/tkuchnia.txt
#echo $hkuchnia > /var/www/hkuchnia.txt
#echo $tlazienka > /var/www/tlazienka.txt
#echo $hlazienka > /var/www/hlazienka.txt
done