The use of the ESP8266 in the world of IoT

User avatar
By copo
#86863 Hello everyone, I'm trying to control a relay from afar using ThingSpeak and the get request function (code linked below). I managed to get it working for some time, but after a while (usually a day or so) the get request stops working for some reason, spitting the following error:

Connected to MIWIFI_2G_PXN5
ssl_handshake_status: -256
Traceback (most recent call last):
File "main.py", line 19, in <module>
File "urequests.py", line 149, in get
File "urequests.py", line 93, in request
OSError: [Errno 5] EIO

-- after looking in some forums, I found some people referring to the OSE error as caused by memory issues. Given that the program works and gets hard resetted properly after the selected amount of cycles, I can't see why it would be caused by that. About the handshake part, all I've found is that it might be due to time/dates settings differences between my board and router, which doesn't really help either...

If someone could point me to a forum thread with a similar error solved, I would be elated. Thanks!
btw the board is an esp01 + relay module from aliexpress with a wire soldered to pin 4.
Code: Select allimport json,network,sys
import urequests as ureq
from machine import Pin,reset
from time import sleep
cycles = 0 # For reset purposes

with open('wlan_set.json') as c: # Load network config as a dict
    wlan_set = json.load(c)

sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(wlan_set['ssid'], wlan_set['pass']) # Connect to saved AP
while not sta_if.isconnected():    # Wait until connection is established
    pass
print('\n\n Connected to {}'.format(wlan_set['ssid']))

for cycles in range(10):

    ts_data = ureq.get('https://api.thingspeak.com/channels/971598/fields/1.json?api_key=CU5423HHCJIR5X91&results=2') #Requests API data

    if not ts_data.status_code == 200:  # Checks status
        print('Cant read web')

    dic_data = ts_data.json()   # Convert data from json to python
    signal = dic_data['feeds'][-1]['field1']    # Nav to the value we want
    pin2 = Pin(4, Pin.OUT)  # Control GPIO based on value

    print(signal)

    if signal == '1': # Activate the relay for 1 sec
        pin2.on()
        sleep(1)
        pin2.off()
        sleep(15)
        ureq.get('https://api.thingspeak.com/update?api_key=295ZUMME6PC3859V&field1=0') # Disables the signal

    sleep(5)

reset()


[img]
https://gyazo.com/6b9a706dc7a0ae4c1fc52f0750f586e9
[/img]