kopia lustrzana https://github.com/Yakifo/amqtt
				
				
				
			
		
			
				
	
	
		
			51 wiersze
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			51 wiersze
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
| import logging
 | |
| import asyncio
 | |
| 
 | |
| from amqtt.client import MQTTClient, ClientException
 | |
| from amqtt.mqtt.constants import QOS_1
 | |
| 
 | |
| 
 | |
| #
 | |
| # This sample shows how to subscbribe a topic and receive data from incoming messages
 | |
| # It subscribes to '$SYS/broker/uptime' topic and displays the first ten values returned
 | |
| # by the broker.
 | |
| #
 | |
| 
 | |
| logger = logging.getLogger(__name__)
 | |
| 
 | |
| 
 | |
| async def uptime_coro():
 | |
|     C = MQTTClient()
 | |
|     await C.connect("mqtt://test:test@0.0.0.0:1883")
 | |
|     # await C.connect('mqtt://0.0.0.0:1883')
 | |
|     # Subscribe to '$SYS/broker/uptime' with QOS=1
 | |
|     await C.subscribe(
 | |
|         [
 | |
|             ("data/memes", QOS_1),  # Topic allowed
 | |
|             ("data/classified", QOS_1),  # Topic forbidden
 | |
|             ("repositories/amqtt/master", QOS_1),  # Topic allowed
 | |
|             ("repositories/amqtt/devel", QOS_1),  # Topic forbidden
 | |
|             ("calendar/amqtt/releases", QOS_1),  # Topic allowed
 | |
|         ]
 | |
|     )
 | |
|     logger.info("Subscribed")
 | |
|     try:
 | |
|         for i in range(1, 100):
 | |
|             message = await C.deliver_message()
 | |
|             packet = message.publish_packet
 | |
|             print(
 | |
|                 "%d: %s => %s"
 | |
|                 % (i, packet.variable_header.topic_name, str(packet.payload.data))
 | |
|             )
 | |
|         await C.unsubscribe(["$SYS/broker/uptime", "$SYS/broker/load/#"])
 | |
|         logger.info("UnSubscribed")
 | |
|         await C.disconnect()
 | |
|     except ClientException as ce:
 | |
|         logger.error("Client exception: %s" % ce)
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     formatter = "[%(asctime)s] {%(filename)s:%(lineno)d} %(levelname)s - %(message)s"
 | |
|     logging.basicConfig(level=logging.INFO, format=formatter)
 | |
|     asyncio.get_event_loop().run_until_complete(uptime_coro())
 |