mqtt basic
This commit is contained in:
		
							parent
							
								
									f2965f3034
								
							
						
					
					
						commit
						a0f99aacf0
					
				
							
								
								
									
										115
									
								
								examples/epd.py
									
									
									
									
									
								
							
							
						
						
									
										115
									
								
								examples/epd.py
									
									
									
									
									
								
							@ -12,53 +12,84 @@ from waveshare_epd import epd2in13bc
 | 
			
		||||
import time
 | 
			
		||||
from PIL import Image,ImageDraw,ImageFont
 | 
			
		||||
import traceback
 | 
			
		||||
from paho.mqtt import client as mqtt_client
 | 
			
		||||
 | 
			
		||||
logging.basicConfig(level=logging.DEBUG)
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
    logging.info("epd2in13bc Demo")
 | 
			
		||||
    
 | 
			
		||||
    epd = epd2in13bc.EPD()
 | 
			
		||||
    logging.info("init and Clear")
 | 
			
		||||
    epd.init()
 | 
			
		||||
    epd.Clear()
 | 
			
		||||
    time.sleep(1)
 | 
			
		||||
    
 | 
			
		||||
    # Drawing on the image
 | 
			
		||||
    logging.info("Drawing")    
 | 
			
		||||
    font20 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 20)
 | 
			
		||||
    font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18)
 | 
			
		||||
    
 | 
			
		||||
    # Drawing on the Horizontal image
 | 
			
		||||
    logging.info("1.Drawing on the Horizontal image...") 
 | 
			
		||||
    HBlackimage = Image.new('1', (epd.height, epd.width), 255)  # 298*126
 | 
			
		||||
    HRYimage = Image.new('1', (epd.height, epd.width), 255)  # 298*126  ryimage: red or yellow image  
 | 
			
		||||
    drawblack = ImageDraw.Draw(HBlackimage)
 | 
			
		||||
    drawry = ImageDraw.Draw(HRYimage)
 | 
			
		||||
    drawblack.text((10, 0), 'hello world', 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))
 | 
			
		||||
    time.sleep(2)
 | 
			
		||||
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)
 | 
			
		||||
 | 
			
		||||
    logging.info("4.read bmp file on window")
 | 
			
		||||
    blackimage1 = Image.new('1', (epd.height, epd.width), 255)  # 298*126
 | 
			
		||||
    redimage1 = Image.new('1', (epd.height, epd.width), 255)  # 298*126    
 | 
			
		||||
    newimage = Image.open(os.path.join(picdir, 'elektrizitat.bmp'))
 | 
			
		||||
    blackimage1.paste(newimage, (10,10))    
 | 
			
		||||
    epd.display(epd.getbuffer(blackimage1), epd.getbuffer(redimage1))
 | 
			
		||||
    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("Clear...")
 | 
			
		||||
    epd.init()
 | 
			
		||||
    epd.Clear()
 | 
			
		||||
    
 | 
			
		||||
    logging.info("Goto Sleep...")
 | 
			
		||||
    epd.sleep()
 | 
			
		||||
        epd = epd2in13bc.EPD()
 | 
			
		||||
        logging.info("init and Clear")
 | 
			
		||||
        epd.init()
 | 
			
		||||
        epd.Clear()
 | 
			
		||||
        time.sleep(1)
 | 
			
		||||
        
 | 
			
		||||
except IOError as e:
 | 
			
		||||
    logging.info(e)
 | 
			
		||||
        # Drawing on the image
 | 
			
		||||
        logging.info("Drawing")    
 | 
			
		||||
        font20 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 20)
 | 
			
		||||
        font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18)
 | 
			
		||||
        
 | 
			
		||||
        # Drawing on the Horizontal image
 | 
			
		||||
        logging.info("1.Drawing on the Horizontal image...") 
 | 
			
		||||
        HBlackimage = Image.new('1', (epd.height, epd.width), 255)  # 298*126
 | 
			
		||||
        HRYimage = Image.new('1', (epd.height, epd.width), 255)  # 298*126  ryimage: red or yellow image  
 | 
			
		||||
        drawblack = ImageDraw.Draw(HBlackimage)
 | 
			
		||||
        drawry = ImageDraw.Draw(HRYimage)
 | 
			
		||||
        drawblack.text((10, 0), 'Received `{msg.payload.decode()}` from `{msg.topic}` topic', font = font20, fill = 0)
 | 
			
		||||
        epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRYimage))
 | 
			
		||||
        time.sleep(2)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        logging.info("4.read bmp file on window")
 | 
			
		||||
        blackimage1 = Image.new('1', (epd.height, epd.width), 255)  # 298*126
 | 
			
		||||
        redimage1 = Image.new('1', (epd.height, epd.width), 255)  # 298*126    
 | 
			
		||||
        newimage = Image.open(os.path.join(picdir, 'elektrizitat.bmp'))
 | 
			
		||||
        blackimage1.paste(newimage, (10,10))    
 | 
			
		||||
        epd.display(epd.getbuffer(blackimage1), epd.getbuffer(redimage1))
 | 
			
		||||
        
 | 
			
		||||
        logging.info("Clear...")
 | 
			
		||||
        epd.init()
 | 
			
		||||
        epd.Clear()
 | 
			
		||||
        
 | 
			
		||||
        logging.info("Goto Sleep...")
 | 
			
		||||
        epd.sleep()
 | 
			
		||||
    
 | 
			
		||||
except KeyboardInterrupt:    
 | 
			
		||||
    logging.info("ctrl + c:")
 | 
			
		||||
    epd2in13bc.epdconfig.module_exit()
 | 
			
		||||
    exit()
 | 
			
		||||
    print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic")
 | 
			
		||||
 | 
			
		||||
    client.subscribe(topic)
 | 
			
		||||
    client.on_message = on_message
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def run():
 | 
			
		||||
    client = connect_mqtt()
 | 
			
		||||
    subscribe(client)
 | 
			
		||||
    client.loop_forever()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    run()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user