2014-02-26 137 views
0

我遵循這個指示:Web Control of Raspberry Pi GPIO樹莓派和外部MySQL

它顯示瞭如何通過簡單的Web界面打開或關閉GPIO引腳。基本上,PHP文件使用關於引腳的信息(打開或關閉)來更新本地MySQL數據庫,並且.sh文件會不斷讀取數據庫以查看引腳是否應該打開或關閉。下面是sh文件:

# Script created by Daniel Curzon (http://www.instructables.com/member/drcurzon) 
# Initial version created 10th June 2012 
# Version: 1.0 

################################### 
##### EDIT THESE BEFORE USE ##### 
################################### 
mysqlusername="USERNAME" 
mysqlpassword="PASSWORD" 

############################################################################################################################# 
################################################### DO NOT EDIT BELOW THIS LINE ############################################## 
############################################################################################################################## 

#Set Refresh 
echo "How long do you want the wait time to be?   " 
read waitTime 

#Invoke GPIO 
echo "4" > /sys/class/gpio/export 
echo "17" > /sys/class/gpio/export 
echo "18" > /sys/class/gpio/export 
echo "21" > /sys/class/gpio/export 
echo "22" > /sys/class/gpio/export 
echo "23" > /sys/class/gpio/export 
echo "24" > /sys/class/gpio/export 
echo "25" > /sys/class/gpio/export 

#Start Loop 
while : 
do 
#Read MySQL Data 
#Direction 
direction4=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinDirection FROM pinDirection WHERE pinNumber='4'";) 
direction17=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinDirection FROM pinDirection WHERE pinNumber='17'";) 
direction18=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinDirection FROM pinDirection WHERE pinNumber='18'";) 
direction21=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinDirection FROM pinDirection WHERE pinNumber='21'";) 
direction22=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinDirection FROM pinDirection WHERE pinNumber='22'";) 
direction23=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinDirection FROM pinDirection WHERE pinNumber='23'";) 
direction24=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinDirection FROM pinDirection WHERE pinNumber='24'";) 
direction25=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinDirection FROM pinDirection WHERE pinNumber='25'";) 
#Status 
status4=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinStatus FROM pinStatus WHERE pinNumber='4'";) 
status17=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinStatus FROM pinStatus WHERE pinNumber='17'";) 
status18=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinStatus FROM pinStatus WHERE pinNumber='18'";) 
status21=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinStatus FROM pinStatus WHERE pinNumber='21'";) 
status22=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinStatus FROM pinStatus WHERE pinNumber='22'";) 
status23=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinStatus FROM pinStatus WHERE pinNumber='23'";) 
status24=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinStatus FROM pinStatus WHERE pinNumber='24'";) 
status25=$(mysql -B --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinStatus FROM pinStatus WHERE pinNumber='25'";) 

#Run Commands 
if [ "$direction4" == "out" ]; then 
    echo "out" > /sys/class/gpio/gpio4/direction 
    if [ "$status4" == "1" ]; then 
     echo "1" > /sys/class/gpio/gpio4/value 
     echo "GPIO 4 Turned On" 
    else 
     echo "0" > /sys/class/gpio/gpio4/value 
     echo "GPIO 4 Turned Off" 
    fi 
else 
    echo "in" > /sys/class/gpio/gpio4/direction 
fi 
if [ "$direction17" == "out" ]; then 
     echo "out" > /sys/class/gpio/gpio17/direction 
    if [ "$status17" == "1" ]; then 
       echo "1" > /sys/class/gpio/gpio17/value 
       echo "GPIO 17 Turned On" 
     else 
       echo "0" > /sys/class/gpio/gpio17/value 
       echo "GPIO 17 Turned Off" 
     fi 
else 
     echo "in" > /sys/class/gpio/gpio17/direction 
fi 
if [ "$direction18" == "out" ]; then 
     echo "out" > /sys/class/gpio/gpio18/direction 
    if [ "$status18" == "1" ]; then 
       echo "1" > /sys/class/gpio/gpio18/value 
       echo "GPIO 18 Turned On" 
     else 
       echo "0" > /sys/class/gpio/gpio18/value 
       echo "GPIO 18 Turned Off" 
     fi 
else 
     echo "in" > /sys/class/gpio/gpio18/direction 
fi 
if [ "$direction21" == "out" ]; then 
     echo "out" > /sys/class/gpio/gpio21/direction 
    if [ "$status21" == "1" ]; then 
       echo "1" > /sys/class/gpio/gpio21/value 
       echo "GPIO 21 Turned On" 
     else 
       echo "0" > /sys/class/gpio/gpio21/value 
       echo "GPIO 21 Turned Off" 
     fi 
else 
     echo "in" > /sys/class/gpio/gpio21/direction 
fi 
if [ "$direction22" == "out" ]; then 
     echo "out" > /sys/class/gpio/gpio22/direction 
    if [ "$status22" == "1" ]; then 
       echo "1" > /sys/class/gpio/gpio22/value 
       echo "GPIO 22 Turned On" 
     else 
       echo "0" > /sys/class/gpio/gpio22/value 
       echo "GPIO 22 Turned Off" 
     fi 
else 
     echo "in" > /sys/class/gpio/gpio22/direction 
fi 
if [ "$direction23" == "out" ]; then 
     echo "out" > /sys/class/gpio/gpio23/direction 
    if [ "$status23" == "1" ]; then 
       echo "1" > /sys/class/gpio/gpio23/value 
       echo "GPIO 23 Turned On" 
     else 
       echo "0" > /sys/class/gpio/gpio23/value 
       echo "GPIO 23 Turned Off" 
     fi 
else 
     echo "in" > /sys/class/gpio/gpio23/direction 
fi 
if [ "$direction24" == "out" ]; then 
     echo "out" > /sys/class/gpio/gpio24/direction 
    if [ "$status24" == "1" ]; then 
       echo "1" > /sys/class/gpio/gpio24/value 
       echo "GPIO 24 Turned On" 
     else 
       echo "0" > /sys/class/gpio/gpio24/value 
       echo "GPIO 24 Turned Off" 
     fi 
else 
     echo "in" > /sys/class/gpio/gpio24/direction 
fi 
if [ "$direction25" == "out" ]; then 
     echo "out" > /sys/class/gpio/gpio25/direction 
    if [ "$status25" == "1" ]; then 
       echo "1" > /sys/class/gpio/gpio25/value 
       echo "GPIO 25 Turned On" 
     else 
       echo "0" > /sys/class/gpio/gpio25/value 
       echo "GPIO 25 Turned Off" 
     fi 
else 
     echo "in" > /sys/class/gpio/gpio25/direction 
fi 
#Complete Loop 
sleep $waitTime 
done 

我想控制GPIO我的網絡之外,所以我想將數據庫上傳到服務器並創建網站進行更新。但是,我不知道如何在.sh文件中訪問外部 MySQL數據庫!我該怎麼做?

回答

0

您可以使用--host=<hostname>選項告訴MySQL要連接到哪個主機。儘管您可能需要在服務器上允許外部連接。

查看http://linux.die.net/man/1/mysql瞭解更多詳情。向下滾動到「--host」。

+0

謝謝!非常有用的答案! – JuanGesino