mqtt basic
This commit is contained in:
		
							parent
							
								
									f2965f3034
								
							
						
					
					
						commit
						a0f99aacf0
					
				@ -12,10 +12,32 @@ from waveshare_epd import epd2in13bc
 | 
				
			|||||||
import time
 | 
					import time
 | 
				
			||||||
from PIL import Image,ImageDraw,ImageFont
 | 
					from PIL import Image,ImageDraw,ImageFont
 | 
				
			||||||
import traceback
 | 
					import traceback
 | 
				
			||||||
 | 
					from paho.mqtt import client as mqtt_client
 | 
				
			||||||
 | 
					
 | 
				
			||||||
logging.basicConfig(level=logging.DEBUG)
 | 
					logging.basicConfig(level=logging.DEBUG)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
try:
 | 
					broker = 'homeassistant'
 | 
				
			||||||
 | 
					port = 8883
 | 
				
			||||||
 | 
					topic = "openWB/evu/W"
 | 
				
			||||||
 | 
					user = "mqtt-user"
 | 
				
			||||||
 | 
					pw = "phio6yiR9ohs1veeghu4WaeGhaiRi8he4EiWasheev4faeku8tohdiuthah7zahP"
 | 
				
			||||||
 | 
					client_id = "solarmonitor"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def connect_mqtt() -> mqtt_client:
 | 
				
			||||||
 | 
					    def on_connect(client, userdata, flags, rc):
 | 
				
			||||||
 | 
					        if rc == 0:
 | 
				
			||||||
 | 
					            print("Connected to MQTT Broker!")
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            print("Failed to connect, return code %d\n", rc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    client = mqtt_client.Client(client_id)
 | 
				
			||||||
 | 
					    client.username_pw_set(username, password)
 | 
				
			||||||
 | 
					    client.on_connect = on_connect
 | 
				
			||||||
 | 
					    client.connect(broker, port)
 | 
				
			||||||
 | 
					    return client
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def subscribe(client: mqtt_client):
 | 
				
			||||||
 | 
					    def on_message(client, userdata, msg):
 | 
				
			||||||
        logging.info("epd2in13bc Demo")
 | 
					        logging.info("epd2in13bc Demo")
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        epd = epd2in13bc.EPD()
 | 
					        epd = epd2in13bc.EPD()
 | 
				
			||||||
@ -35,8 +57,7 @@ try:
 | 
				
			|||||||
        HRYimage = Image.new('1', (epd.height, epd.width), 255)  # 298*126  ryimage: red or yellow image  
 | 
					        HRYimage = Image.new('1', (epd.height, epd.width), 255)  # 298*126  ryimage: red or yellow image  
 | 
				
			||||||
        drawblack = ImageDraw.Draw(HBlackimage)
 | 
					        drawblack = ImageDraw.Draw(HBlackimage)
 | 
				
			||||||
        drawry = ImageDraw.Draw(HRYimage)
 | 
					        drawry = ImageDraw.Draw(HRYimage)
 | 
				
			||||||
    drawblack.text((10, 0), 'hello world', font = font20, fill = 0)
 | 
					        drawblack.text((10, 0), 'Received `{msg.payload.decode()}` from `{msg.topic}` topic', font = font20, fill = 0)
 | 
				
			||||||
    drawblack.text((10, 20), '2.13inch e-Paper bc', font = font20, fill = 0)
 | 
					 | 
				
			||||||
        epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRYimage))
 | 
					        epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRYimage))
 | 
				
			||||||
        time.sleep(2)
 | 
					        time.sleep(2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -55,10 +76,20 @@ try:
 | 
				
			|||||||
        logging.info("Goto Sleep...")
 | 
					        logging.info("Goto Sleep...")
 | 
				
			||||||
        epd.sleep()
 | 
					        epd.sleep()
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
except IOError as e:
 | 
					    print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic")
 | 
				
			||||||
    logging.info(e)
 | 
					
 | 
				
			||||||
 | 
					    client.subscribe(topic)
 | 
				
			||||||
 | 
					    client.on_message = on_message
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def run():
 | 
				
			||||||
 | 
					    client = connect_mqtt()
 | 
				
			||||||
 | 
					    subscribe(client)
 | 
				
			||||||
 | 
					    client.loop_forever()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    run()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
except KeyboardInterrupt:    
 | 
					 | 
				
			||||||
    logging.info("ctrl + c:")
 | 
					 | 
				
			||||||
    epd2in13bc.epdconfig.module_exit()
 | 
					 | 
				
			||||||
    exit()
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user