From b9d3dfe2c205a9e082f7bc61ce6d7530c5431bb9 Mon Sep 17 00:00:00 2001 From: aixiao Date: Mon, 29 Jan 2018 19:28:58 +0800 Subject: [PATCH] 20180129 --- README.md | 9 ++- raspberrypi_zero/gpio/.info.sh.swp | Bin 0 -> 20480 bytes raspberrypi_zero/gpio/info.sh | 74 ++++++++++++++++++++----- raspberrypi_zero/gpio/infrared.log | 1 + raspberrypi_zero/gpio/log/infrared.pid | 1 + raspberrypi_zero/gpio/log/main.pid | 1 + 6 files changed, 70 insertions(+), 16 deletions(-) create mode 100644 raspberrypi_zero/gpio/.info.sh.swp create mode 100644 raspberrypi_zero/gpio/infrared.log create mode 100644 raspberrypi_zero/gpio/log/infrared.pid create mode 100644 raspberrypi_zero/gpio/log/main.pid diff --git a/README.md b/README.md index 518f6f2..a749ba5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,9 @@ # raspberrypi -raspberrypi_zero GPIO 实现的智能家居 -- 根据 http://shumeipai.nxez.com/2016/06/26/raspberry-pi-diy-with-a-smart-home-server.html +raspberrypi zero w GPIO 实现的智能家居 +- 参考:http://shumeipai.nxez.com/2016/06/26/raspberry-pi-diy-with-a-smart-home-server.html + +- 我发现传感器的数据是实时的,传感器的工作必须是实时的 +- 有时做不到数据的准确 +- 就做了多进程的shell(不同pid)来满足传感器数据现状,一个进程收集传感器数据,另一个进程处理. +_ diff --git a/raspberrypi_zero/gpio/.info.sh.swp b/raspberrypi_zero/gpio/.info.sh.swp new file mode 100644 index 0000000000000000000000000000000000000000..2d8f6f5977e9949663c9308932e23d98cb0d8c54 GIT binary patch literal 20480 zcmeI3dyo`I9mg9HlVB39XjxXos%CcY1=-gD;kb2q6t6qw1bIj$gq(A`v$rGr%FHas zvOaBbfsu(p<20E zr&}010=^DbgD-;5ff-;LXa{a_uK3NAp; z^We{5A4q^Wkil2LU0?}l1fK0^pNi0=S69n>}C?$bke{0~jb_;pa{8I_Lu-Fa&Ut z=9^T_6BXgPq+5TVZshWvX2HcMqaZreBsUb@;F7=3e3VzS>*aJoDM~!XrHB;eMoP(A zaclqjN(UY&e|LB3c>nO8{?hY@OAj77xAR#>(Ui1qiAFaymekx*jLR5DkFM6hF^r>Z zs|=)oQLM5Wd{#v)ibn^TD{ICGG3nXZ_J+q4l+trw`TPCl7akrS7(`o?`j0a+lpY}K zHPlcE6~$-c)JB1B1=ggCJRsLTNz)U($k$dip`H8L7xxSwc=_xjn@dj~bqjFvN59l$ zO-VR?pe75)p3%>C0cVDW&YajjJhZR0f5-69Nw*B25>Mq|m|I5WiBo(&g%Ov|b*phQ z0KG6QUAYBz@#TjeF7F;{UuNd+WSq_Q*pflS6hF9{?9#vDb*k$I175QxLJP$%p zM(J&n3)%>iO@qi}R`E{E*R2?lmagV-LN;VRdp6$`GL%eS(PRTz1dR+0(3)FLL`iPY84oGuiTnp^CwyOTV01M$%*ZyhaN4P-p9%ut_ta62A+10Iv=k@hm z*`OMDw=qq&`a?_#x%*Zn=5cLiMNrcm`3lQpnTksD^98<4(c((hkh_&u@>OsY_HD7w zuCy6908e|5vL+Ip7RgXDk56euGS6-CFIzTqL=9)W>CLhhY07;CB^&Qm&9XY$?k)m5 zTBT%Yi8mh}=;DDaZ{{0$x2ELzy>(RXMy@Lf3YVJml5?l<20e6da7t?^)E(7B!QdU% zg>K;7fLLYX{Z2QZU?(geZx?tgwqWzA@$bK_~Tt<~)P@}q;+@I)5L+NP+-P}Ld z8`FH5s6<)exEX0`-3rO+S)RZSC$P;E*yaQ#Jb?)(Fyjf#IDx&Mz+MXUSWoW@WRj2h z_`Fp{DyOw_S>2$@xw+OUm{Ee})0JulUL`WKH8K-%7r;NZ^5$@)B^-&gAYk#b_N6?N zOBB)y?(l1FZO-TSD_V~CP!5wraBZP385{6v{-48K+J|{H&Ho#5`YYz{!{B$|H25hv z0-gah|L+Gh-=6|5(A*vT8XN-$!FRv|pa7C!4OkB510R?G-bZ=A0k4B!fnS1?;3yab zKLm%sUhoLG2P_6;r{6xqRB;FegaSeVp@2|8C?FIN3J3*+0z!dnserXiHW`b^SPu-* zf_5;kCTL;MT}xvMR#C0BZmilQWF?c!7HgNh?F^i?v5}cLE8$qev&(FfoON=1wWIHE ziY~{^`7q6iqfurqSB06xx_a%&V$fO<3+Q~EnoeVONVeR;b+tPyr&~F#LkG3_FqHZ?68GiRA|=H~8S8@wma=krL+7mty_Mtt^=bZJ zhi}$(H(|(N{!e@UFJWF!YXENn`u_hC*ayA@mVqevC+6_4f?t5cKm*gkG!Ow{&;%xd zi4pGV!_2EPU35DEwdgaSeVp@2}}dRD;Qt;XCd zcLzz7j~YlXSJj6{fYEZPj(o*;V)vURmFN4Zqn+6O<|rX{zgfFiFh{zY-EYqRwEvmS wZ~wjhY@=+!6Z_fz|M#=ecDR`2?5EPry-(O2LH;C-O<2ypD4(_8)w6x /dev/null); #距离传感器 l="60"; @@ -78,20 +86,31 @@ function lightinfo() } -DATE; +#DATE; #getcpudata; #get18b20data >> ~/temperature.txt; lightinfo; + +function WHILE() +{ + while true; do + ${bindir}/info_infrared ${wiringpi_infrared} > infrared.log + SLEEP 1 + done +} + function main_() { while true; do if [ "${now}" -ge "${high}" -a "${now}" -le "${low}" ]; then #检测时间段 - if [ "${phonelogic}" == "0" ]; then #检测手机IP - #if [ "${infrared}" = "1" ]; then #检测人体红外线 + #if [ "${phonelogic}" == "0" ]; then #检测手机IP + #echo ${infrared} + if [ "${infrared}" = "1" ]; then #检测人体红外线 #if [ "${distance}" -ge ${l} -a "${distance}" -le ${s} ]; then #检测距离范围 if test "${lightpinvalue}" = "0"; then #检测灯pin值 ${start_light}; + SLEEP 9; fi else if test "${lightpinvalue}" = "1"; then #如果开着就关闭 @@ -104,20 +123,47 @@ while true; do fi fi lightinfo; #再次获取信息 - sleep 7; #睡眠 + SLEEP 1; #睡眠 done } -while getopts :d pi +while getopts :ds: pi do case ${pi} in d) daemon='&'; ;; + s) + case $OPTARG in + "stop") + array=$(ls ${bindir}/log/) + for arr in ${array[@]}; do + kill $(cat ${bindir}/log/${arr}) + done + exit 0 + ;; + *) + : + ;; + esac + exit 0 + ;; h|?) - : + echo " +raspberrypi zero w 智能灯控 +$0 Usage: $0 [-?|h] [-d] [-s] + -d Daemon. + -s kill Daemon, signal: stop. + +by aixiao. +" +exit 0 ;; esac done +WHILE & +WHILEID="$(echo $!)" +echo ${WHILEID} > log/infrared.pid 2> /dev/null eval main_ ${daemon} +echo $! > log/main.pid 2> /dev/null diff --git a/raspberrypi_zero/gpio/infrared.log b/raspberrypi_zero/gpio/infrared.log new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/raspberrypi_zero/gpio/infrared.log @@ -0,0 +1 @@ +1 diff --git a/raspberrypi_zero/gpio/log/infrared.pid b/raspberrypi_zero/gpio/log/infrared.pid new file mode 100644 index 0000000..e83f6f1 --- /dev/null +++ b/raspberrypi_zero/gpio/log/infrared.pid @@ -0,0 +1 @@ +14389 diff --git a/raspberrypi_zero/gpio/log/main.pid b/raspberrypi_zero/gpio/log/main.pid new file mode 100644 index 0000000..35c7a33 --- /dev/null +++ b/raspberrypi_zero/gpio/log/main.pid @@ -0,0 +1 @@ +14392