← index #357Issue #309
Related · high · value 2.865
QUERY · ISSUE

can't await mqtt.simple publish method

openby alirezaimiopened 2019-10-22updated 2020-01-07

Hi
I'm using umqtt.simple and there is problem when i await mqtt.publish in my code !
'NoneType' object isn't iterable
Is there any way to solve this issue ?
Or use other lib like https://github.com/peterhinch/micropython-mqtt/blob/master/mqtt_as ?

2 comments
2niuhe · 2020-01-06

The umqtt.simple module is sync.You'd better use peterhinch's uasync mqtt lib.

While you only need subscribe to some topic.
my solution is :

  • use check_msg() instead of wait_msg(),cause check_msg() return immediately.
import uasyncio
from umqtt.simple import MQTTClient

loop = uasyncio.get_event_loop()
async def my_callback(topic,msg):
   await uasyncio.sleep(1)
   
def sub_callback(topic, msg):
   global loop
   loop.create_task(my_callback(topic,msg))

async def my_main():
   c = MQTTClient("umqtt_client", server)
   c.set_callback(sub_callback)
   c.connect()
   c.subscribe(b'foo_con')
   pass

loop.creat_task(my_main())
loop.run_forever()
alirezaimi · 2020-01-07

@2niuhe thanks, but using umqtt_async have its own problem : https://forum.micropython.org/viewtopic.php?f=15&t=7144

thanks for your solution but i had problem in publish part not others .

CANDIDATE · ISSUE

a problem with the publication

closedby novikovav69opened 2018-10-03updated 2018-10-07

Hello!
I have a problem with the publication.
I do:
from umqtt.simple import MQTTClient
client = MQTTClient(client_id="ESP8266", server="192.168.100.10", port=1883)
client.connect
client.publish("in", "sHOW")

I receive:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "umqtt/simple.py", line 123, in publish
AttributeError: 'NoneType' object has no attribute 'write'

2 comments
SpotlightKid · 2018-10-03

@novikovav69 MQTTClient.connect is a method, you need to call it.You are missing the parentheses after client.connect.

novikovav69 · 2018-10-07

Many thanks! Forgive me my carelessness.

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied