56
56
LOCALFILE = "local.txt"
57
57
# pylint: enable=line-too-long
58
58
59
- STATUS_NO_CONNECTION = (100 , 0 , 0 )
60
- STATUS_CONNECTING = (0 , 0 , 100 )
61
- STATUS_FETCHING = (200 , 100 , 0 )
62
- STATUS_DOWNLOADING = (0 , 100 , 100 )
63
- STATUS_CONNECTED = (0 , 100 , 0 )
64
- STATUS_DATA_RECEIVED = (0 , 0 , 100 )
65
- STATUS_OFF = (0 , 0 , 0 )
59
+ STATUS_NO_CONNECTION = (100 , 0 , 0 ) # Red
60
+ STATUS_CONNECTING = (0 , 0 , 100 ) # Blue
61
+ STATUS_FETCHING = (150 , 100 , 0 ) # Orange
62
+ STATUS_DOWNLOADING = (0 , 100 , 100 ) # Cyan
63
+ STATUS_CONNECTED = (0 , 0 , 100 ) # Blue
64
+ STATUS_DATA_RECEIVED = (0 , 100 , 0 ) # Green
65
+ STATUS_HTTP_ERROR = (100 , 0 , 0 ) # Red
66
+ STATUS_OFF = (0 , 0 , 0 ) # Off
66
67
67
68
CONTENT_TEXT = const (1 )
68
69
CONTENT_JSON = const (2 )
@@ -171,10 +172,7 @@ def url_encode(url):
171
172
"""
172
173
A function to perform minimal URL encoding
173
174
"""
174
- url = url .replace (" " , "+" )
175
- url = url .replace ("%" , "%25" )
176
- url = url .replace (":" , "%3A" )
177
- return url
175
+ return url .replace (" " , "+" ).replace ("%" , "%25" ).replace (":" , "%3A" )
178
176
179
177
def get_strftime (self , time_format , location = None ):
180
178
"""
@@ -187,6 +185,7 @@ def get_strftime(self, time_format, location=None):
187
185
self .connect ()
188
186
api_url = None
189
187
reply = None
188
+ print ("Get time" )
190
189
try :
191
190
aio_username = self ._secrets ["aio_username" ]
192
191
aio_key = self ._secrets ["aio_key" ]
@@ -206,13 +205,16 @@ def get_strftime(self, time_format, location=None):
206
205
api_url += "&fmt=" + self .url_encode (time_format )
207
206
208
207
try :
208
+ self .neo_status (STATUS_FETCHING )
209
209
response = self ._wifi .requests .get (api_url , timeout = 10 )
210
+ self .neo_status (STATUS_DATA_RECEIVED )
210
211
if response .status_code != 200 :
211
212
print (response )
212
213
error_message = (
213
214
"Error connecting to Adafruit IO. The response was: "
214
215
+ response .text
215
216
)
217
+ self .neo_status (STATUS_HTTP_ERROR )
216
218
raise RuntimeError (error_message )
217
219
if self ._debug :
218
220
print ("Time request: " , api_url )
@@ -285,7 +287,7 @@ def wget(self, url, filename, *, chunk_size=12000, headers=None):
285
287
print ("Content-Length: {}" .format (int (headers ["content-length" ])))
286
288
if "date" in headers :
287
289
print ("Date: {}" .format (headers ["date" ]))
288
- self .neo_status (( 100 , 0 , 0 ) ) # red = http error
290
+ self .neo_status (STATUS_HTTP_ERROR ) # red = http error
289
291
raise HttpError (
290
292
"Code {}: {}" .format (
291
293
response .status_code , response .reason .decode ("utf-8" )
@@ -375,6 +377,7 @@ def connect(self, max_attempts=10):
375
377
try :
376
378
self ._wifi .connect (secret_entry ["ssid" ], secret_entry ["password" ])
377
379
self .requests = self ._wifi .requests
380
+ self ._wifi .neo_status (STATUS_CONNECTED )
378
381
break
379
382
except (RuntimeError , ConnectionError ) as error :
380
383
if max_attempts is not None and attempt >= max_attempts :
0 commit comments