Merge pull request #588 from openmv/mqtt_fixes

Mqtt fixes
This commit is contained in:
Ibrahim Abd Elkader 2019-09-12 00:27:21 +02:00 committed by GitHub
commit 61a34a4a62
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 7 deletions

View File

@ -1,11 +1,12 @@
# MQTT Example.
# This example shows how to use the MQTT library.
# This example shows how to use the MQTT library to publish to a topic.
#
# 1) Copy the mqtt.py library to OpenMV storage.
# 2) Install the mosquitto client on PC and run the following command:
# 2) Run this script on the OpenMV camera.
# 3) Install the mosquitto client on PC and run the following command:
# mosquitto_sub -h test.mosquitto.org -t "openmv/test" -v
#
# Note: If the mosquitto broker is down (OSError -12) try a different one (ex: broker.hivemq.com)
# NOTE: If the mosquitto broker is unreachable, try another broker (For example: broker.hivemq.com)
import time, network
from mqtt import MQTTClient

View File

@ -0,0 +1,37 @@
# MQTT Example.
# This example shows how to use the MQTT library to subscribe to a topic.
#
# 1) Copy the mqtt.py library to OpenMV storage.
# 2) Run this script on the OpenMV camera.
# 3) Install the mosquitto client on PC and run the following command:
# mosquitto_pub -t "openmv/test" -m "Hello World!" -h test.mosquitto.org -p 1883
#
# NOTE: If the mosquitto broker is unreachable, try another broker (For example: broker.hivemq.com)
import time, network
from mqtt import MQTTClient
SSID='' # Network SSID
KEY='' # Network key
# Init wlan module and connect to network
print("Trying to connect... (may take a while)...")
wlan = network.WINC()
wlan.connect(SSID, key=KEY, security=wlan.WPA_PSK)
# We should have a valid IP now via DHCP
print(wlan.ifconfig())
client = MQTTClient("openmv", "test.mosquitto.org", port=1883)
client.connect()
def callback(topic, msg):
print(topic, msg)
# must set callback first
client.set_callback(callback)
client.subscribe("openmv/test")
while (True):
client.check_msg() # poll for messages.
time.sleep(1000)

View File

@ -167,11 +167,9 @@ class MQTTClient:
# messages processed internally.
def wait_msg(self):
res = self.sock.recv(1)
self.sock.setblocking(True)
if res is None:
return None
if res == b"":
raise OSError(-1)
return None
self.sock.setblocking(True)
if res == b"\xd0": # PINGRESP
sz = self.sock.recv(1)[0]
assert sz == 0