2323import os
2424import json
2525import logging
26- import time
2726import logging .handlers
2827import subprocess
2928import picamera
3837from event import EventManager
3938from conversation import Conversation
4039
41- from flask import Flask , render_template , request , send_file , redirect , Response , jsonify
40+ from flask import Flask , render_template , request , send_file , Response , jsonify
4241from flask_babel import Babel
4342from werkzeug .datastructures import Headers
4443#from flask_sockets import Sockets
6463event = None
6564conv = None
6665
67- app = Flask (__name__ ,static_url_path = "" )
66+ app = Flask (__name__ , static_url_path = "" )
6867#app.config.from_pyfile('coderbot.cfg')
6968babel = Babel (app )
7069app .debug = False
@@ -86,26 +85,33 @@ def get_locale():
8685@app .route ("/" )
8786def handle_home ():
8887 stream_port = cam .stream_port if cam else ""
89- return render_template ('main.html' , host = request .host [:request .host .find (':' )], stream_port = stream_port , locale = get_locale (), config = app .bot_config , program_level = app .bot_config .get ("prog_level" , "std" ), cam = cam != None , cnn_model_names = json .dumps ([[name ] for name in cnn .get_models ().keys ()]))
88+ return render_template ('main.html' ,
89+ host = request .host [:request .host .find (':' )],
90+ stream_port = stream_port ,
91+ locale = get_locale (),
92+ config = app .bot_config ,
93+ program_level = app .bot_config .get ("prog_level" , "std" ),
94+ cam = cam != None ,
95+ cnn_model_names = json .dumps ([[name ] for name in cnn .get_models ().keys ()]))
9096
9197@app .route ("/config" , methods = ["POST" ])
9298def handle_config ():
9399 Config .write (request .form )
94100 app .bot_config = Config .get ()
95- return "ok" ;
101+ return "ok"
96102
97103@app .route ("/wifi" , methods = ["POST" ])
98104def handle_wifi ():
99105 mode = request .form .get ("wifi_mode" )
100106 ssid = request .form .get ("wifi_ssid" )
101107 psk = request .form .get ("wifi_psk" )
102- logging .info ( "mode " , mode , " ssid: " , ssid , " psk: " , psk )
108+ logging .info ("mode " + mode + " ssid: " + ssid + " psk: " + psk )
103109 client_params = " \" " + ssid + "\" \" " + psk + "\" " if ssid != "" and psk != "" else ""
104110 logging .info (client_params )
105111 os .system ("sudo python wifi.py updatecfg " + mode + client_params )
106112 os .system ("sudo reboot" )
107113 if mode == "ap" :
108- return "http://coder.bot:8080" ;
114+ return "http://coder.bot:8080"
109115 else :
110116 return "http://coderbot.locali:8080"
111117
@@ -134,28 +140,24 @@ def handle_bot():
134140 motion .stop ()
135141 except :
136142 logging .warning ("Camera not present" )
137- pass
138143 elif cmd == "take_photo" :
139144 try :
140145 cam .photo_take ()
141146 audio .say (app .bot_config .get ("sound_shutter" ))
142147 except :
143148 logging .warning ("Camera not present" )
144- pass
145149 elif cmd == "video_rec" :
146150 try :
147151 cam .video_rec ()
148152 audio .say (app .bot_config .get ("sound_shutter" ))
149153 except :
150154 logging .warning ("Camera not present" )
151- pass
152155 elif cmd == "video_stop" :
153156 try :
154157 cam .video_stop ()
155158 audio .say (app .bot_config .get ("sound_shutter" ))
156159 except :
157160 logging .warning ("Camera not present" )
158- pass
159161 elif cmd == "say" :
160162 logging .info ("say: " + str (param1 ) + " in: " + str (get_locale ()))
161163 audio .say (param1 , get_locale ())
@@ -176,15 +178,14 @@ def handle_bot():
176178def handle_bot_status ():
177179 return json .dumps ({'status' : 'ok' })
178180
179- def video_stream (cam ):
180-
181+ def video_stream (a_cam ):
181182 while not app .shutdown_requested :
182- frame = cam .get_image_jpeg ()
183+ frame = a_cam .get_image_jpeg ()
183184 yield ("--BOUNDARYSTRING\r \n " +
184185 "Content-type: image/jpeg\r \n " +
185186 "Content-Length: " + str (len (frame )) + "\r \n \r \n " )
186- yield ( frame )
187- yield ( "\r \n " )
187+ yield frame
188+ yield "\r \n "
188189
189190@app .route ("/video" )
190191def handle_video ():
@@ -209,11 +210,12 @@ def handle_video_stream():
209210 h .add ('Cache-Control' , 'no-cache, private' )
210211 h .add ('Pragma' , 'no-cache' )
211212 return Response (video_stream (cam ), headers = h , mimetype = "multipart/x-mixed-replace; boundary=--BOUNDARYSTRING" )
212- except : pass
213+ except :
214+ pass
213215
214- def video_stream_cv (cam ):
216+ def video_stream_cv (a_cam ):
215217 while not app .shutdown_requested :
216- frame = cam .get_image_cv_jpeg ()
218+ frame = a_cam .get_image_cv_jpeg ()
217219 yield ("--BOUNDARYSTRING\r \n " +
218220 "Content-type: image/jpeg\r \n " +
219221 "Content-Length: " + str (len (frame )) + "\r \n \r \n " +
@@ -227,9 +229,8 @@ def handle_video_stream_cv():
227229 h .add ('Cache-Control' , 'no-cache, private' )
228230 h .add ('Pragma' , 'no-cache' )
229231 return Response (video_stream_cv (cam ), headers = h , mimetype = "multipart/x-mixed-replace; boundary=--BOUNDARYSTRING" )
230- except : pass
231-
232-
232+ except :
233+ pass
233234
234235@app .route ("/photos" , methods = ["GET" ])
235236def handle_photos ():
@@ -240,20 +241,18 @@ def handle_photos():
240241def handle_photo_get (filename ):
241242 logging .info ("media filename: " + filename )
242243 mimetype = {'jpg' : 'image/jpeg' , 'mp4' : 'video/mp4' }
243- video = None
244244 try :
245245 media_file = cam .get_photo_file (filename )
246- except picamera .exc .PiCameraError :
247- pass
248-
249- return send_file (media_file , mimetype = mimetype .get (filename [:- 3 ], 'image/jpeg' ), cache_timeout = 0 )
246+ return send_file (media_file , mimetype = mimetype .get (filename [:- 3 ], 'image/jpeg' ), cache_timeout = 0 )
247+ except picamera .exc .PiCameraError as e :
248+ logging .error ("Error: " + str (e ))
250249
251250@app .route ("/photos/<filename>" , methods = ["PUT" ])
252251def handle_photo_put (filename ):
253252 logging .info ("photo update" )
254253 data = request .get_data (as_text = True )
255254 data = json .loads (data )
256- cam .update_photo ({"name" : filename , "tag" :data ["tag" ]});
255+ cam .update_photo ({"name" : filename , "tag" :data ["tag" ]})
257256 return jsonify ({"res" :"ok" })
258257
259258@app .route ("/photos/<filename>" , methods = ["DELETE" ])
@@ -280,7 +279,7 @@ def handle_program_save():
280279 name = request .form .get ('name' )
281280 dom_code = request .form .get ('dom_code' )
282281 code = request .form .get ('code' )
283- prog = Program (name , dom_code = dom_code , code = code )
282+ prog = Program (name , dom_code = dom_code , code = code )
284283 app .prog_engine .save (prog )
285284 return "ok"
286285
@@ -336,7 +335,7 @@ def handle_cnn_models_new():
336335@app .route ("/cnnmodels/<model_name>" , methods = ["GET" ])
337336def handle_cnn_models_status (model_name ):
338337 logging .info ("cnn_models_status" )
339- model_status = cnn .get_model ( model_name = model_name )
338+ model_status = cnn .get_models (). get ( model_name )
340339
341340 return json .dumps (model_status )
342341
@@ -372,10 +371,13 @@ def run_server():
372371 global motion
373372 global audio
374373 global cnn
374+ global conv
375+ global event
375376 try :
376377 try :
377378 app .bot_config = Config .read ()
378- bot = CoderBot .get_instance (servo = (app .bot_config .get ("move_motor_mode" )== "servo" ), motor_trim_factor = float (app .bot_config .get ('move_motor_trim' , 1.0 )))
379+ bot = CoderBot .get_instance (servo = (app .bot_config .get ("move_motor_mode" ) == "servo" ),
380+ motor_trim_factor = float (app .bot_config .get ('move_motor_trim' , 1.0 )))
379381 audio = Audio .get_instance ()
380382 audio .say (app .bot_config .get ("sound_start" ))
381383 try :
0 commit comments