1
1
#!/usr/bin/python
2
2
# -*- coding: utf-8 -*-
3
- # script for "panic" mode - extended bot
4
- # using telepot as Python framework for Telegram Bot API
5
- # https://telepot.readthedocs.io/en/latest/reference.html
6
- # author: Thomas Kaulke, [email protected]
7
-
3
+ # ext_greenhouse.py
4
+ """
5
+ script for "panic" mode - extended bot
6
+ using telepot as Python framework for Telegram Bot API
7
+ https://telepot.readthedocs.io/en/latest/reference.html
8
+ author: Thomas Kaulke, [email protected]
9
+ """
8
10
9
11
from __future__ import absolute_import
10
12
import conf .greenhouse_config as conf
39
41
group_two = (relais06 , relais07 , relais08 )
40
42
group_three = (relais04 , relais05 )
41
43
42
- # API token and chat Id
43
- apiToken = conf .token
44
- Id = sys .argv [1 ]
45
-
46
44
47
45
# water a group of targets
48
- def _water_on_group (group ):
46
+ def __water_on_group (group ):
49
47
for member in group :
50
48
utils .switch_on (member )
51
49
return
52
50
53
51
54
52
# water off for a group of targets
55
- def _water_off_group (group ):
53
+ def __water_off_group (group ):
56
54
for member in group :
57
55
utils .switch_off (member )
58
56
return
59
57
60
58
61
- # Assign default output (stdout 1 and stderr 2) to file and read in
62
- # variable and get back
63
- def _read_cmd (cmd ):
64
- os .system (cmd + ' > ' + lib .tmp_file + ' 2>&1' )
65
- file = open (lib .tmp_file , 'r' )
66
- data = file .read ()
67
- file .close ()
68
- return data
69
-
70
-
71
- def _send_msg (message , parse_mode ):
59
+ def __send_msg (message , parse_mode ):
72
60
os .system (
73
61
'curl -s -k https://api.telegram.org/bot{0}/sendMessage -d text="{1}" -d chat_id={2} {3}' .format (
74
- apiToken , message .replace ("`" , "\\ `" ), str (Id ), parse_mode ))
62
+ apiToken , message .replace ("`" , "\\ `" ), str (chat_id ), parse_mode ))
75
63
logging .info ('Message send: {0}' .format (message ))
76
64
return
77
65
78
66
79
- def _check_pins_state ():
67
+ def __check_pins_state ():
80
68
global pins_state
81
69
for pin in group_all :
82
70
if not utils .get_pin_state (pin ):
@@ -86,10 +74,13 @@ def _check_pins_state():
86
74
else :
87
75
display .show_off ()
88
76
pins_state = True
77
+
78
+ if not pins_state :
79
+ __send_msg ('Attention, something is still opened!' , no_parse_mode )
89
80
return
90
81
91
82
92
- def _handle (msg ):
83
+ def __handle (msg ):
93
84
if pins_state :
94
85
display .show_extended ()
95
86
@@ -98,66 +89,69 @@ def _handle(msg):
98
89
99
90
# commands
100
91
if command == lib .cmd_restart :
101
- _send_msg ( _read_cmd ('sudo reboot' ), no_parse_mode )
92
+ __send_msg ( utils . read_cmd ('sudo reboot' , lib . tmp_file ), no_parse_mode )
102
93
display .show_boot ()
103
94
elif command == lib .cmd_update :
104
- _read_cmd (lib .update_bot )
105
- _send_msg (lib .msg_update , no_parse_mode )
95
+ utils . read_cmd (lib .update_bot , lib . tmp_file )
96
+ __send_msg (lib .msg_update , no_parse_mode )
106
97
display .show_update ()
107
98
time .sleep (3 )
108
99
elif command == lib .cmd_logrotate :
109
- _send_msg ( _read_cmd (lib .logrotate_bot ), no_parse_mode )
100
+ __send_msg ( utils . read_cmd (lib .logrotate_bot , lib . tmp_file ), no_parse_mode )
110
101
elif command == lib .cmd_all_on :
111
- _send_msg (utils .get_timestamp () + ' all on' , no_parse_mode )
112
- _water_on_group (group_all )
102
+ __send_msg (utils .get_timestamp () + ' all on' , no_parse_mode )
103
+ __water_on_group (group_all )
113
104
elif command == lib .cmd_all_off :
114
- _send_msg ('all off.' , no_parse_mode )
115
- _water_off_group (group_all )
105
+ __send_msg ('all off.' , no_parse_mode )
106
+ __water_off_group (group_all )
116
107
elif command == lib .cmd_group1_on :
117
- _send_msg (utils .get_timestamp () + 'group 1 on' , no_parse_mode )
118
- _water_on_group (group_one )
108
+ __send_msg (utils .get_timestamp () + 'group 1 on' , no_parse_mode )
109
+ __water_on_group (group_one )
119
110
elif command == lib .cmd_group1_off :
120
- _send_msg ('group 1 off' , no_parse_mode )
121
- _water_off_group (group_one )
111
+ __send_msg ('group 1 off' , no_parse_mode )
112
+ __water_off_group (group_one )
122
113
elif command == lib .cmd_group2_on :
123
- _send_msg (utils .get_timestamp () + 'group 2 on' , no_parse_mode )
124
- _water_on_group (group_two )
114
+ __send_msg (utils .get_timestamp () + 'group 2 on' , no_parse_mode )
115
+ __water_on_group (group_two )
125
116
elif command == lib .cmd_group2_off :
126
- _send_msg ('group 2 off' , no_parse_mode )
127
- _water_off_group (group_two )
117
+ __send_msg ('group 2 off' , no_parse_mode )
118
+ __water_off_group (group_two )
128
119
elif command == lib .cmd_group3_on :
129
- _send_msg ( conf .get_timestamp () + 'group 3 on' , no_parse_mode )
130
- _water_on_group (group_three )
120
+ __send_msg ( utils .get_timestamp () + 'group 3 on' , no_parse_mode )
121
+ __water_on_group (group_three )
131
122
elif command == lib .cmd_group3_off :
132
- _send_msg ('group 3 off' , no_parse_mode )
133
- _water_off_group (group_three )
123
+ __send_msg ('group 3 off' , no_parse_mode )
124
+ __water_off_group (group_three )
134
125
elif command == lib .cmd_kill :
135
126
# disable camera
136
127
logging .info ('Disable camera module.' )
137
- _read_cmd (conf .disable_camera )
138
- pid2 = _read_cmd (lib .get_pid2 )
139
- # logging.info('Got own PID to kill me and prepare the other bot for proper using: {0}'.format(str(pid2)))
140
- _read_cmd (lib .restart_bot )
141
- _send_msg (conf .lib .msg_stop , markdown )
142
- _read_cmd ('kill -9 ' + pid2 )
128
+ utils .read_cmd (conf .disable_camera , lib .tmp_file )
129
+ pid2 = utils .read_cmd (lib .get_pid2 , lib .tmp_file )
130
+ utils .read_cmd (lib .restart_bot , lib .tmp_file )
131
+ __send_msg (conf .lib .msg_stop , markdown )
132
+ utils .read_cmd ('kill -9 ' + pid2 , lib .tmp_file )
143
133
elif command == '/live' :
144
- _send_msg (conf .lib .msg_live .format (conf .live ), markdown )
134
+ __send_msg (conf .lib .msg_live .format (conf .live ), markdown )
145
135
elif command == '/help' :
146
- _send_msg (lib .msg_help , no_parse_mode )
136
+ __send_msg (lib .msg_help , no_parse_mode )
147
137
else :
148
- _send_msg (lib .msg_unknown , no_parse_mode )
149
- _check_pins_state ()
138
+ __send_msg (lib .msg_unknown , no_parse_mode )
139
+ __check_pins_state ()
140
+
150
141
142
+ def __init_and_start ():
143
+ # API token and chat Id
144
+ global apiToken , chat_id
145
+ apiToken = conf .token
146
+ chat_id = sys .argv [1 ]
151
147
152
- def init_and_start ():
153
- # kill the still running greenhouse bot script
154
- pid1 = _read_cmd (lib .get_pid1 )
155
- # logging.info('{0} is PID of running default bot, used to kill.'.format(str(pid1)))
156
- _read_cmd ('kill -9 {0}' .format (str (pid1 )))
148
+ # kill the still running greenhouse bot script.
149
+ pid1 = utils .read_cmd (lib .get_pid1 , lib .tmp_file )
150
+ utils .read_cmd ('kill -9 {0}' .format (str (pid1 )), lib .tmp_file )
157
151
158
152
utils .set_pins ()
159
153
bot = telepot .Bot (apiToken )
160
- bot .message_loop (_handle )
154
+ bot .message_loop (__handle )
161
155
logging .info ('I am listening...' )
162
156
display .show_extended ()
163
157
while 1 :
@@ -174,7 +168,5 @@ def init_and_start():
174
168
display .show_error ()
175
169
176
170
177
- init_and_start ()
178
-
179
171
if __name__ == '__main__' :
180
- pass
172
+ __init_and_start ()
0 commit comments