Advertisement
Guest User

Untitled

a guest
Aug 9th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. import base64
  2. import hmac
  3. import urllib.parse
  4.  
  5. import paho.mqtt.client as mqtt
  6. import time
  7.  
  8. hubAddress = "freeiottest.azure-devices.cn"
  9. deviceId = "myDeviceId"
  10. deviceKey = '<your device key>'
  11.  
  12. hubUser = hubAddress + '/' + deviceId
  13. endpoint = hubAddress + '/devices/' + deviceId
  14. hubTopicPublish = 'devices/' + deviceId + '/messages/events/'
  15. hubTopicSubscribe = 'devices/' + deviceId + '/messages/devicebound/#'
  16.  
  17.  
  18. def on_connect(client, userdata, flags, rc):
  19. print("Connected with result code "+str(rc))
  20. client.subscribe(hubTopicSubscribe)
  21. client.publish(hubTopicPublish, "testmessage")
  22.  
  23.  
  24. def on_message(client, userdata, msg):
  25. print("{0} - {1} ".format(msg.topic, str(msg.payload)))
  26.  
  27.  
  28. def generate_sas_token(uri, key, expiry=3600):
  29. ttl = int(time.time()) + expiry
  30. urlToSign = urllib.parse.quote(uri, safe='')
  31. sign_key = "%s\n%d" % (urlToSign, int(ttl))
  32. h = hmac.new(base64.b64decode(key), msg="{0}\n{1}".format(urlToSign, ttl).encode('utf-8'), digestmod='sha256')
  33. signature = urllib.parse.quote(base64.b64encode(h.digest()), safe='')
  34. return "SharedAccessSignature sr={0}&sig={1}&se={2}".format(urlToSign,
  35. urllib.parse.quote(base64.b64encode(h.digest()),
  36. safe=''), ttl)
  37.  
  38.  
  39. client = mqtt.Client(client_id=deviceId, protocol=mqtt.MQTTv311)
  40. client.on_connect = on_connect
  41. client.on_message = on_message
  42.  
  43.  
  44. client.tls_set("WS_CA1_NEW.crt")
  45. client.username_pw_set(username=hubUser,
  46. password=generate_sas_token(endpoint, deviceKey))
  47. client.connect("freeiottest.azure-devices.cn", port=8883, keepalive=60)
  48.  
  49. client.loop_forever()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement