2014-02-26 97 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