我有一个小型 Python 服务器,我可以向它发送命令以控制我的 LIFX 灯。从邮递员那里,我可以随心所欲地发送垃圾邮件,永远不会看到错误,但我要做的是构建几个墙壁开关,使用 NodeMCU 板触发灯,从那里,我收到了 ECONNABORTED 错误大约五分之一的请求。
我到处寻找解决方案,问题实际上是服务器配置错误或客户端配置错误,但我想知道这里是否还有其他问题。我的服务器代码很简单,而且,正如我所说,它似乎在从我的 NodeMCU 板以外的任何地方触发时都能工作。
主要.py:
from machine import Pin, reset
from time import sleep
import urequests
# set these two pins as required to up/down
buttonUp = Pin(4, Pin.IN, Pin.PULL_UP)
buttonDown = Pin(5, Pin.IN, Pin.PULL_UP)
light = "LightName"
# button can be pressed, held or double pressed
# press = 1x press, 1x release in .5 seconds
# hold = 1x press, 0x release
# double = 2x press, 2x release in .5 seconds
def detectPress():
pressed = False
press = 0
direction = 'up'
release = 0
if not buttonUp.value() or not buttonDown.value:
pressed = True
if not buttonDown.value():
direction = 'down'
while buttonUp.value() and buttonDown.value():
sleep(.01) # wait for a button push
for x in range(8):
if pressed == False:
if not buttonUp.value():
direction = 'up'
pressed = True
press += 1
if not buttonDown.value():
direction = 'down'
pressed = True
press += 1
else:
if direction == 'up':
if buttonUp.value():
pressed = False
release += 1
else:
if buttonDown.value():
pressed = False
release += 1
sleep(.1)
return press, release, direction
我怀疑这是一个套接字问题,但不知道还能做些什么来调试它。
在重新设置时,我几乎可以保证前 4 或 5 次传输会正常工作。我也几乎可以保证按住按钮(每秒左右触发一个命令)会在 3 或 4 次传输后失败。
有时重试有效,但更多时候无效。
大多数情况下,在失败后,等待 5 秒然后重试会起作用,但有时不会。
大多数情况下,长时间延迟(> 1 分钟)后的初始按下会起作用,但有时不会。
12345678_0001
相关分类