Page 1 of 1
urequests post stopped working
Posted: Sun Jan 15, 2017 3:56 am
by brett
I'm very new to micropython and python. I've been trying to get the ESP8266 to work with pushingbox. The following code worked for awhile but stopped working today.
[code]import machine
import time
import urequests
url_14 = '
http://api.pushingbox.com/pushingbox?de ... xxxxxxxxxx'
# Buttons
button14 = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_UP)
led = machine.Pin(2, machine.Pin.OUT)
while True:
first = button14.value()
time.sleep(0.01)
second = button14.value()
if first and not second:
print('Button pressed!')
led(0)
elif not first and second:
print('Button released!')
led(1)
resp = urequests.post(url_14)[/code]
I get the following error when I run the script:
File "<stdin>", line 22, in <module>
File "urequests.py", line 104, in post
File "urequests.py", line 51, in request
OSError: -2
Any help would be greatly appreciated.
Re: urequests post stopped working
Posted: Tue Jan 17, 2017 12:20 am
by brett
I'm an idiot...I forgot that I reflashed the board but didn't reconnect it to the wiFi

Re: urequests post stopped working
Posted: Tue Jan 17, 2017 8:56 am
by kfricke
Side note: This is an example where the assumption that the ESP automagically will connect to a WLAN can be a bad design decision.
Considering the need to erase the flash when upgrading makes it worse.
Re: urequests post stopped working
Posted: Mon Jan 23, 2017 1:40 am
by brett
Ok...thanks to pythoncoder I got a working program, but I'm having urequests issues again. The post under emergencyRequest works fine but the posts under helpRequest just pauses for a second or two and then the function completes. It seems like it is trying to send it but it doesn't go through. I've tested the url by entering url_01 under emergencyRequest and it works. I've also tried getting rid of everything in the helpRequest function except the urequests post and it still doesn't work. Any thoughts on what is going on?
Code: Select all
import machine
import network
import time
import urequests
from machine import Timer
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('xxxxxxxxxxx', 'xxxxxxxx')
button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_UP)
redled = machine.Pin(5, machine.Pin.OUT)
yelled = machine.Pin(12, machine.Pin.OUT)
grnled = machine.Pin(4, machine.Pin.OUT)
url_01 = 'http://api.pushingbox.com/pushingbox?devid=xxxxxxxxxxxxxx'
url_02 = 'http://api.pushingbox.com/pushingbox?devid=xxxxxxxxxxxxxx'
buttonCounter = 0
def helpRequest():
from machine import Timer
if buttonCounter == 1:
resp = urequests.post(url_01)
print('Help 1')
yelled(1)
tim = Timer(-1)
tim.init(period=10000, mode=Timer.ONE_SHOT, callback=lambda t:yelled(0))
elif buttonCounter == 2:
resp = urequests.post(url_01)
print('Help 2')
yelled(1)
tim = Timer(-1)
tim.init(period=10000, mode=Timer.ONE_SHOT, callback=lambda t:yelled(0))
def emergencyRequest():
from machine import Timer
print('Emergency')
resp = urequests.post(url_02)
redled(1)
tim2 = Timer(1)
tim2.init(period=10000, mode=Timer.ONE_SHOT, callback=lambda t:redled(0))
def buttonReset(self):
helpRequest()
global buttonCounter
buttonCounter = 0
print('reset')
print(buttonCounter)
while True:
first = button.value()
time.sleep(0.05)
second = button.value()
if first and not second:
print('Button pressed!')
buttonCounter = buttonCounter + 1
print(buttonCounter)
tim3 = Timer(2)
tim3.init(period=2000, mode=Timer.ONE_SHOT, callback=buttonReset)
if buttonCounter >= 3:
emergencyRequest()
buttonCounter = 0
if wlan.isconnected() == True:
grnled(1)
elif wlan.isconnected() == False:
grnled(0)
Re: urequests post stopped working
Posted: Mon Jan 23, 2017 10:38 am
by deshipu
I don't think you can do requests from inside of interrupts.
Re: urequests post stopped working
Posted: Mon Jan 23, 2017 11:29 am
by brett
I was thinking that but the emergency one works. Is that an interrupt?
Re: urequests post stopped working
Posted: Mon Jan 23, 2017 12:39 pm
by deshipu
The emergency one is being called from the main loop. The help one is called from a timer interrupt.
Re: urequests post stopped working
Posted: Mon Jan 23, 2017 12:43 pm
by brett
Ahhhh....OK...I will see what I can do about that this evening. Thanks for helping this newb learn!!
Re: urequests post stopped working
Posted: Thu Feb 23, 2017 2:03 am
by brett
Ok…I’m still struggling. The program will send both a help request and an emergency request. Where it gets weird is when you make 5 consecutive activations of combinations of help and emergency requests.
I’ve tried these combinations:
Help, help, help, help, help
Emergency, help, help, help, help
Help, emergency, emergency, emergency, emergency
Emergency, help, Emergency, help, Emergency
Help, emergency, help, emergency, help
After these combinations I get the following error message:
Traceback (most recent call last):
File "main.py", line 61, in <module>
File "urequests.py", line 104, in post
File "urequests.py", line 51, in request
OSError: -2
After the second emergency request I get the following error message:
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x40100000, len 32028, room 16
tail 12
chksum 0x40
ho 0 tail 12 room 4
load 0x3ffe8000, len 1092, room 12
tail 8
chksum 0x17
load 0x3ffe8450, len 3000, room 0
tail 8
chksum 0x56
csum 0x56
Any thoughts and suggestions? Here is the current code:
Code: Select all
import machine
import network
import time
import urequests
from machine import Timer
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('xxxxxxxxxxxx', 'xxxxxxxxxx')
button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_UP)
redled = machine.Pin(5, machine.Pin.OUT)
yelled = machine.Pin(12, machine.Pin.OUT)
grnled = machine.Pin(4, machine.Pin.OUT)
url_01 = 'http://api.pushingbox.com/pushingbox?devid=xxxxxxxxxxxxxxx'
url_02 = 'http://api.pushingbox.com/pushingbox?devid=xxxxxxxxxxxxxx'
buttonCounter = 0
helpFlag = False
def helpRequest():
if buttonCounter == 1:
global helpFlag
helpFlag = True
elif buttonCounter == 2:
global helpFlag
helpFlag = True
def emergencyRequest():
from machine import Timer
print('Emergency')
resp = urequests.post(url_02)
redled(1)
tim2 = Timer(1)
tim2.init(period=10000, mode=Timer.ONE_SHOT, callback=lambda t:redled(0))
def buttonReset(self):
helpRequest()
global buttonCounter
buttonCounter = 0
print('reset')
print(buttonCounter)
while True:
first = button.value()
time.sleep(0.05)
second = button.value()
if first and not second:
print('Button pressed!')
buttonCounter = buttonCounter + 1
print(buttonCounter)
tim3 = Timer(2)
tim3.init(period=2000, mode=Timer.ONE_SHOT, callback=buttonReset)
if buttonCounter >= 3:
emergencyRequest()
buttonCounter = 0
if helpFlag == True:
resp = urequests.post(url_01)
helpFlag = False
print('Help 2')
yelled(1)
tim = Timer(-1)
tim.init(period=10000, mode=Timer.ONE_SHOT, callback=lambda t:yelled(0))
if wlan.isconnected() == True:
grnled(1)
elif wlan.isconnected() == False:
grnled(0)