From a0f99aacf05362e41404a064699db64a9393d6b4 Mon Sep 17 00:00:00 2001 From: Robert Borzutzki Date: Tue, 18 Oct 2022 22:27:20 +0200 Subject: [PATCH] mqtt basic --- examples/epd.py | 115 ++++++++++++++++++++++++++++++------------------ 1 file changed, 73 insertions(+), 42 deletions(-) diff --git a/examples/epd.py b/examples/epd.py index db2478d..1bd1076 100644 --- a/examples/epd.py +++ b/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() + + +