#!/bin/bash
##2015年9月29日 23:32:22
echo
"##VI 2016年4月8日 22:56:12 ## V2.2"
TDIR=
/tmp
mkdir
-p $TDIR
export
PATH=$PATH:
/usr/local/bin
gpio -g write 21 1
gpio -g mode 21 out
##电源开关 拉低开
gpio -g write 26 1
gpio -g mode 26 out
##桌面灯条 拉低开
gpio -g write 19 1
gpio -g mode 19 out
##桌面灯条 拉低开
gpio -g write 13 1
gpio -g mode 13 out
##柜子锁 拉低开
gpio -g write 6 1
gpio -g mode 6 out
##门锁 拉低开
FI35=0
CLE_TIME=0
##检测计数器
##你API的设备号
DEV=
##你传感器的编号
SW_POWER=
SW_DSKLED=
SW_DOOR=
SW_FORCER=
SW_CHANGE=
getdev(){
DEVS=$1
wget http:
//api
.
/v1
.0
/device/
${DEV}
/sensor/
${DEVS}
/datapoints
-O $TDIR
/sa
${DEVS} -T 5 &>
/dev/null
FTIME=`
cat
$TDIR
/sa
${DEVS} |
sed
's/.*\"\:\"//g;s/\"\,\".*$//g'
`
FYMD=`
echo
$FTIME |
sed
's/T.*$//g'
`
FHMS=`
echo
$FTIME |
sed
's/^.*T//g'
`
VAL=`
cat
$TDIR
/sa
${DEVS} |
sed
's/^.*value\"\://g;s/\}//g'
`
if
[ ! -e $TDIR
/savetime
${DEVS} ];
then
echo
""
> $TDIR
/savetime
${DEVS}
if
[
"$DEVS"
==
"$SW_POWER"
];
then
if
[
"$VAL"
==
"1"
];
then
gpio -g write 21 0
else
gpio -g write 21 1
fi
fi
if
[
"$DEVS"
==
"$SW_DSKLED"
];
then
if
[
"$VAL"
==
"1"
];
then
gpio -g write 19 0
else
gpio -g write 19 1
fi
fi
fi
echo
-e
"\e[31;1m$FTIME \e[34;1m# $FYMD ## $FHMS\e[32;1m $DEVS \e[33;1m $VAL\e[0m"
if
[
"$FYMD"
==
"`date +%Y-%m-%d`"
];
then
echo
##操作日期为当天才进行下面的操作
if
[
"$FHMS"
!=
"`cat $TDIR/savetime${DEVS}`"
];
then
echo
##操作时间不和上次的记录相同才进行下面的操作
if
[
"`echo $FHMS | awk -F ':' '{printf $1}'`"
==
"`date +%H`"
];
then
A=`
echo
$FHMS |
awk
-F
':'
'{printf $1}'
`
echo
-e
"\e[31;1m$A\e[0m"
##if [ "$VAL" == "1" ];then
if
[
"$DEVS"
==
"$SW_DOOR"
];
then
#门锁
gpio -g write 6 0
sleep
2
gpio -g write 6 1
elif
[
"$DEVS"
==
"$SW_FORCER"
];
then
#柜子锁
gpio -g write 13 0
sleep
2
gpio -g write 13 1
elif
[
"$DEVS"
==
"$SW_POWER"
];
then
#电源开关
if
[
"$VAL"
==
"1"
];
then
gpio -g write 21 0
else
gpio -g write 21 1
fi
elif
[
"$DEVS"
==
"$SW_DSKLED"
];
then
#桌面灯条
if
[
"$VAL"
==
"1"
];
then
gpio -g write 19 0
else
gpio -g write 19 1
fi
elif
[
"$DEVS"
==
"$SW_CHANGE"
];
then
#充电座
if
[
"$VAL"
==
"1"
];
then
gpio -g write 26 0
else
gpio -g write 26 1
fi
fi
echo
"$FHMS"
> $TDIR
/savetime
${DEVS}
##fi
fi
fi
fi
}
##给LED点阵模块发送时间数据
ledtime(){
if
[ -e
/dev/ttyUSB0
];
then
echo
"\`wr`date +%H%M`"
| microcom -p
/dev/ttyUSB0
-s 115200
fi
}
##先初始化锁和充电开关
getdev $SW_DOOR
getdev $SW_FORCER
getdev $SW_CHANGE
getdev $SW_DSKLED
while
:
do
getdev $SW_POWER
getdev $SW_DSKLED
getdev $SW_DOOR
getdev $SW_FORCER
getdev $SW_CHANGE
if
[
"`date +%H%M`"
-
ge
"1900"
];
then
##时间在下午5点20后
if
[
"$FI35"
==
"0"
];
then
##是否查找过设备233)0否不在线 1是在线
if
[
"`ping 192.168.1.233 -c 1 -S 1 &> /dev/null;echo $?`"
==
"0"
];
then
##查找手机是否在线
gpio -g write 21 0
gpio -g write 19 0
FI35=1
fi
elif
[
"`date +%H%M`"
-
ge
"1905"
];
then
##如果手机不在线则判断时间是否在晚上7点以后
if
[
"$CLE_TIME"
-
le
"5"
];
then
((CLE_TIME++))
echo
"CLE_TIME $CLE_TIME"
else
CLE_TIME=0
if
[
"`ping 192.168.1.233 -c 1 -S 1 &> /dev/null;echo $?`"
==
"1"
];
then
##如果不在线则清除标记
if
[
"$CLOSE_LED"
==
"0"
];
then
CLOSE_LED=1
else
CLOSE_LED=0
gpio -g write 21 1
##关灯关电源
gpio -g write 19 1
FI35=0
fi
fi
fi
fi
elif
[
"`date +%H%M`"
-
le
"0230"
];
then
##时间是否在凌晨2点半以内
if
[
"$FI35"
==
"0"
];
then
##如果是,则判断手机是否在线
if
[
"`ping 192.168.1.233 -c 1 -S 1 &> /dev/null;echo $?`"
==
"0"
];
then
##如果手机在线则开灯
gpio -g write 21 0
gpio -g write 19 0
FI35=1
fi
fi
elif
[
"$FI35"
!=
"0"
];
then
##否则关灯
FI35=0
gpio -g write 19 1
gpio -g write 21 1
fi
sleep
1
ledtime
gpio -g write 6 1
done