From 183188ef6534278b4af5bdfbab5938137d52c197 Mon Sep 17 00:00:00 2001 From: Jerry Needell Date: Tue, 25 Dec 2018 17:25:49 -0500 Subject: [PATCH 1/4] add POST option to url_request - with example --- adafruit_espatcontrol.py | 4 +-- examples/espatcontrol_post.py | 50 +++++++++++++++++++++++++++++++ examples/espatcontrol_settings.py | 1 + 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 examples/espatcontrol_post.py diff --git a/adafruit_espatcontrol.py b/adafruit_espatcontrol.py index f9897e1..62136be 100644 --- a/adafruit_espatcontrol.py +++ b/adafruit_espatcontrol.py @@ -147,7 +147,7 @@ def begin(self): except OKError: pass #retry - def request_url(self, url, ssl=False): + def request_url(self, url, ssl=False, type = "GET"): """Send an HTTP request to the URL. If the URL starts with https:// we will force SSL and use port 443. Otherwise, you can select whether you want ssl by passing in a flag.""" @@ -165,7 +165,7 @@ def request_url(self, url, ssl=False): port = 443 if not self.socket_connect(conntype, domain, port, keepalive=10, retries=3): raise RuntimeError("Failed to connect to host") - request = "GET "+path+" HTTP/1.1\r\n" + request = type+" "+path+" HTTP/1.1\r\n" request += "Host: "+domain+"\r\n" request += "User-Agent: "+self.USER_AGENT+"\r\n" request += "\r\n" diff --git a/examples/espatcontrol_post.py b/examples/espatcontrol_post.py new file mode 100644 index 0000000..f44d782 --- /dev/null +++ b/examples/espatcontrol_post.py @@ -0,0 +1,50 @@ +import time +import board +import busio +from digitalio import DigitalInOut +import adafruit_espatcontrol + + +# Get wifi details and more from a settings.py file +try: + from settings import settings +except ImportError: + print("WiFi settings are kept in settings.py, please add them there!") + raise + + + +URL = "https://io.adafruit.com/api/v2/webhooks/feed/"+settings['aio_feed_webhook']+"?value=" + +resetpin = DigitalInOut(board.D5) +rtspin = DigitalInOut(board.D9) +uart = busio.UART(board.TX, board.RX, timeout=0.1) + + + +print("Post to a URL", URL) + +esp = adafruit_espatcontrol.ESP_ATcontrol(uart, 115200, reset_pin=resetpin, run_baudrate = 115200, rts_pin=rtspin, debug=True) +print("Resetting ESP module") +esp.hard_reset() +print("Connected to AT software version", esp.get_version()) + +counter = 0 +while True: + try: + # Connect to WiFi if not already + while not esp.is_connected: + print("Connecting...") + esp.connect(settings) + print("Connected to", esp.remote_AP) + # great, lets get the data + print("Posting request URL...", end='') + header, body = esp.request_url(URL+str(counter), type = "POST") + counter = counter + 1 + print("OK") + except RuntimeError as e: + print("Failed to connect, retrying") + print(e) + continue + headet = body = None + time.sleep(15) diff --git a/examples/espatcontrol_settings.py b/examples/espatcontrol_settings.py index cc10246..33f3fbc 100644 --- a/examples/espatcontrol_settings.py +++ b/examples/espatcontrol_settings.py @@ -6,4 +6,5 @@ 'password' : 'my password', 'timezone' : -5, # this is offset from UTC 'github_token' : 'abcdefghij0123456789', + 'aio_feed_webhook' : 'abcdefghij0123456789', } From e27585adf4f4aa0eabbe33cb81b6710d279cec81 Mon Sep 17 00:00:00 2001 From: Jerry Needell Date: Wed, 26 Dec 2018 07:22:54 -0500 Subject: [PATCH 2/4] update POST example --- examples/espatcontrol_post.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/espatcontrol_post.py b/examples/espatcontrol_post.py index f44d782..68223b0 100644 --- a/examples/espatcontrol_post.py +++ b/examples/espatcontrol_post.py @@ -46,5 +46,5 @@ print("Failed to connect, retrying") print(e) continue - headet = body = None + header = body = None time.sleep(15) From ecf0694ea8685d0c6c08d7a429a0c3cdfcc0c262 Mon Sep 17 00:00:00 2001 From: Jerry Needell Date: Wed, 26 Dec 2018 08:27:01 -0500 Subject: [PATCH 3/4] fix retries in POST example --- examples/espatcontrol_post.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/examples/espatcontrol_post.py b/examples/espatcontrol_post.py index 68223b0..9f55f77 100644 --- a/examples/espatcontrol_post.py +++ b/examples/espatcontrol_post.py @@ -42,9 +42,8 @@ header, body = esp.request_url(URL+str(counter), type = "POST") counter = counter + 1 print("OK") - except RuntimeError as e: - print("Failed to connect, retrying") - print(e) + except (RuntimeError, adafruit_espatcontrol.OKError) as e: + print("Failed to get data, retrying\n", e) continue header = body = None time.sleep(15) From d3db3600b910d82c9944ee634f54617b79815b6a Mon Sep 17 00:00:00 2001 From: Jerry Needell Date: Wed, 26 Dec 2018 08:41:01 -0500 Subject: [PATCH 4/4] pylint fixes --- adafruit_espatcontrol.py | 4 ++-- examples/espatcontrol_post.py | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/adafruit_espatcontrol.py b/adafruit_espatcontrol.py index 62136be..3f61c6f 100644 --- a/adafruit_espatcontrol.py +++ b/adafruit_espatcontrol.py @@ -147,7 +147,7 @@ def begin(self): except OKError: pass #retry - def request_url(self, url, ssl=False, type = "GET"): + def request_url(self, url, ssl=False, request_type="GET"): """Send an HTTP request to the URL. If the URL starts with https:// we will force SSL and use port 443. Otherwise, you can select whether you want ssl by passing in a flag.""" @@ -165,7 +165,7 @@ def request_url(self, url, ssl=False, type = "GET"): port = 443 if not self.socket_connect(conntype, domain, port, keepalive=10, retries=3): raise RuntimeError("Failed to connect to host") - request = type+" "+path+" HTTP/1.1\r\n" + request = request_type+" "+path+" HTTP/1.1\r\n" request += "Host: "+domain+"\r\n" request += "User-Agent: "+self.USER_AGENT+"\r\n" request += "\r\n" diff --git a/examples/espatcontrol_post.py b/examples/espatcontrol_post.py index 9f55f77..a2b7430 100644 --- a/examples/espatcontrol_post.py +++ b/examples/espatcontrol_post.py @@ -24,12 +24,13 @@ print("Post to a URL", URL) -esp = adafruit_espatcontrol.ESP_ATcontrol(uart, 115200, reset_pin=resetpin, run_baudrate = 115200, rts_pin=rtspin, debug=True) +esp = adafruit_espatcontrol.ESP_ATcontrol(uart, 115200, reset_pin=resetpin, + run_baudrate = 115200, rts_pin=rtspin, debug=True) print("Resetting ESP module") esp.hard_reset() print("Connected to AT software version", esp.get_version()) -counter = 0 +counter = 0 while True: try: # Connect to WiFi if not already @@ -39,7 +40,7 @@ print("Connected to", esp.remote_AP) # great, lets get the data print("Posting request URL...", end='') - header, body = esp.request_url(URL+str(counter), type = "POST") + header, body = esp.request_url(URL+str(counter), request_type = "POST") counter = counter + 1 print("OK") except (RuntimeError, adafruit_espatcontrol.OKError) as e: