from rgbmatrix import RGBMatrix, RGBMatrixOptions import paho.mqtt.client as mqtt import time from PIL import Image # Configuration for the matrix options = RGBMatrixOptions() options.rows = 32 options.cols = 64 options.chain_length = 2 options.parallel = 1 options.hardware_mapping = 'regular' # If you have an Adafruit HAT: 'adafruit-hat' matrix = RGBMatrix(options=options) # Load image and make sure it fits our screen. def pure_pil_alpha_to_color_v2(image, color=(0, 0, 0)): image.load() # needed for split() background = Image.new('RGB', image.size, color) background.paste(image, mask=image.split()[3]) # 3 is the alpha channel return background image = Image.open("faces/prootface3.bmp") image.thumbnail((128, 32), Image.ANTIALIAS) RGBImage = pure_pil_alpha_to_color_v2(image) # offscreen canvas that can be written to and then set to the matrix asynchronously offscreen_canvas = matrix.CreateFrameCanvas() offscreen_canvas.brightness = 50 offscreen_text_canvas = matrix.CreateFrameCanvas() offscreen_text_canvas.brightness = 50 offscreen_text_canvas.SetImage(RGBImage) def update_screen(): global color, matrix, offscreen_canvas next_canvas = offscreen_canvas if color == 1: next_canvas.Fill(255, 255, 255) elif color == 0: next_canvas.Fill(255, 0, 0) elif color == 2: next_canvas = offscreen_text_canvas next_canvas = matrix.SwapOnVSync(next_canvas) color = 0 def toggle_color(): global color color += 1 color %= 3 update_screen() # functions called by the MQTT listener def on_connect(client, userdata, flags, response_code): print("Connected to MQTT broker with result code " + str(response_code)) client.subscribe("test") def on_message(client, userdata, message): print("Received message '" + str(message.payload) + "' on topic '" + message.topic + "' with QoS " + str(message.qos)) toggle_color() # MQTT broker configuration broker_address = "10.1.13.173" # Replace with your MQTT broker's address broker_port = 1883 broker_keepalive = 60 client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect(broker_address, broker_port, broker_keepalive) client.loop_start() while True: time.sleep(0.005)