-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathheat_tweet.sh
executable file
·118 lines (102 loc) · 2.18 KB
/
heat_tweet.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/bin/bash
# heat_tweet.sh
#
# This script will send a tweet each time the Heat or AC
# goes on or off
#
# It uses the data generated by get-nest-info.sh to determine
# current state and to update the state change files
#
# Check https://github.com/shmick/pi-scripts/ for latest version
#
# Twitter: @shmick
# Give the get-nest-info.sh cron job a few seconds to finish
sleep 5
NESTDATA="/ramdisk/nest-info.txt"
HEATSTATEFILE="/ramdisk/heatstate"
COOLSTATEFILE="/ramdisk/coolstate"
TWEETCMD="python $HOME/pi-scripts/tweet.py"
GatherData()
{
if [[ -e $NESTDATA ]]
then
HeatMode=$(grep FurnaceOn $NESTDATA | awk '{print $2}')
CoolMode=$(grep AirConOn $NESTDATA | awk '{print $2}')
OutsideTemp=$(grep OutsideTemp $NESTDATA | awk '{print $2}')
InsideTemp=$(grep InsideTemp $NESTDATA | awk '{print $2}')
TargetTemp=$(grep TargetTemp $NESTDATA | awk '{print $2}')
Humidity=$(grep RelativeHumidity $NESTDATA | awk '{print $2}')
RelHumid=$(grep OutsideHumidity $NESTDATA | awk '{print $2}')
Time=$(date +%H:%M)
TweetString=""
Type=""
Mode=""
else
echo "Sorry no datafile to read, exiting"
exit
fi
}
StateCheckAndUpdate()
{
if [[ -e $HEATSTATEFILE ]] && [[ -e $COOLSTATEFILE ]]
then
HEATSTATE=$(cat $HEATSTATEFILE)
if [ "$HeatMode" = "1" ] && [ "$HEATSTATE" = "0" ]
then
Type=Heat
Mode=ON
echo 1 > $HEATSTATEFILE
elif [ "$HeatMode" = "0" ] && [ "$HEATSTATE" = "1" ]
then
Type=Heat
Mode=OFF
echo 0 > $HEATSTATEFILE
fi
COOLSTATE=$(cat $COOLSTATEFILE)
if [ "$CoolMode" = "1" ] && [ "$COOLSTATE" = "0" ]
then
Type=AC
Mode=ON
echo 1 > $COOLSTATEFILE
elif [ "$CoolMode" = "0" ] && [ "$COOLSTATE" = "1" ]
then
Type=AC
Mode=OFF
echo 0 > $COOLSTATEFILE
fi
else
if [[ -n "$HeatMode" ]] && [[ -n "$CoolMode" ]]
then
echo $HeatMode > $HEATSTATEFILE
echo $CoolMode > $COOLSTATEFILE
fi
fi
}
CreateTweet()
{
if [ "$Type" = "" ]
then
exit
else
TweetString="$Type $Mode at ${Time}, \
Target = $TargetTemp°C, \
Inside = $InsideTemp°C, \
Outside = $OutsideTemp°C, \
Outside RH = $RelHumid%, \
Inside RH = $Humidity% \
"
fi
}
SendTweet()
{
if [ "$TweetString" = "" ]
then
exit
else
$TWEETCMD "$TweetString"
fi
}
GatherData
StateCheckAndUpdate
CreateTweet
SendTweet