SiPy, Micropython and Google IoT Core MQTT



  • Hi, new to pycom but do have experience with MQTT and Google IoT Core.

    Has anyone managed to connect a device running micropython to the Google MQTT IoT Core broker service?

    If so could they please help me with the initial connection code.

    My code:

    #example here: https://docs.pycom.io/chapter/tutorials/all/mqtt.html
    
    from umqtt import MQTTClient
    from network import WLAN
    import machine
    import time
    
    def sub_cb(topic, msg):
      print(msg)
    
    wlan = WLAN(mode=WLAN.STA)
    wlan.connect("SSID", auth=(WLAN.WPA2, "WIFIPWD"), timeout=5000)
    
    while not wlan.isconnected():
        machine.idle()
    print("Connected to Wifi\n")
    
    client = MQTTClient("device_id", "mqtt.googleapis.com", user="USERNAME", password="APIKEY", port=8883)
    
    client.set_callback(sub_cb)
    client.connect()
    client.subscribe(topic="projects/mongoose-iota/topics/telemetry-topic")
    
    while True:
        print("Sending ON")
        client.publish(topic="projects/mongoose-iota/topics/telemetry-topic", msg="ON")
        time.sleep(1)
        print("Sending OFF")
        client.publish(topic="projects/mongoose-iota/topics/telemetry-topic", msg="OFF")
        client.check_msg()
    time.sleep(1)
    

    I keep getting this error:

    Traceback (most recent call last):
    File "main.py", line 22, in <module>
    File "/flash/lib/umqtt.py", line 97, in connect
    AssertionError:
    MicroPython v1.8.6-849-86da809 on 2018-01-17; SiPy with ESP32

    Line 97 is this, mqtt taken from this source https://pypi.python.org/pypi/micropython-umqtt.simple/1.3.4

    assert resp[0] == 0x20 and resp[1] == 0x02
    

    Any help would be very much appreciated.
    Thank you in advance!
    Jon



  • @jonnyboy I've been trying to get our pycom device talking to google IoT Core as well. Did you have any luck making it work or finding a micro-python compatible JWT Library?



  • @seb
    JWT tokens use HMAC
    and this lib can be used for it
    https://github.com/micropython/micropython-lib/tree/master/hmac



  • @jonnyboy said in SiPy, Micropython and Google IoT Core MQTT:

    https://pypi.python.org/pypi/micropython-umqtt.simple/1.3.4

    It is my understanding that google's mqtt requires you to use JWT to authenticate, unfortunately the cryptography necessary to create JWT tokens is not something our modules can support with the current firmware. You would have to use an external server to generate the JWT tokens which when using MQTT are valid for 1h.



  • Hi, bumping this on.....anyone please.


 

Pycom on Twitter