with sonoff and micropython , i have a error
it works for a while and after
Code: Select all
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "chauff_elec.py", line 71, in main
File "umqttsimple.py", line 176, in wait_msg
OSError: -1
can you help ?
thank you
my code
Code: Select all
import machine
from umqttsimple import MQTTClient
import ujson
MQTTConfig = {
"client_id": "sdb_electrique",
"server": "192.168.1.51",
"port": 1883,
"keepalive": 60
}
LED = machine.Pin(13, machine.Pin.OUT)
REL = machine.Pin(12, machine.Pin.OUT)
LED.value(1)
REL.value(1)
mqtt = MQTTClient(MQTTConfig['client_id'], MQTTConfig['server'], port=int(MQTTConfig['port']), keepalive=int(MQTTConfig['keepalive']))
def sdb_statut_actions(msg):
#print(msg)
#global ancien_etat
try:
sdb = ujson.loads(msg)
etat_relais = sdb['relais']['RELAIS']
#print('relais =',etat_relais)
if etat_relais == 1:
REL.value(0)
LED.value(0)
else:
REL.value(1)
LED.value(1)
# pass
#REL.value(etat_relais)
#ancien_etat = etat_relais
#mqtt.publish(b"sdb_statut", ujson.dumps({
# "nom": MQTTConfig['client_id'],
# "relais": REL.value()
#}).decode())
except (ValueError, KeyError):
pass
def on_message(topic, msg):
if topic == b'sdb_statut':
#print(topic)
sdb_statut_actions(msg)
def main():
mqtt.set_callback(on_message)
mqtt.connect()
mqtt.subscribe("sdb_statut")
try:
while True:
mqtt.wait_msg()
finally:
mqtt.disconnect()
if __name__ == "__main__":
main()