Signed-off-by: Ebbe Baß <ebbe.bass>
main
Ebbe Baß 2024-02-15 11:31:51 +01:00
parent 0042a51fce
commit 1b6e93c051
2 changed files with 17 additions and 46 deletions

View File

@ -1,6 +1,5 @@
import os
import wifi
from sacn import sACNlistener
from neopixel import *
import requests
import json
@ -60,41 +59,21 @@ def is_connected_to_wifi():
except wifi.exceptions.InterfaceError:
return False
def update_led_strip(dmx_values, dmx_address, strip, LED_PER_PIXEL):
def update_led_strip(r, g, b, dmx_address, strip, LED_PER_PIXEL):
for i in range(LED_COUNT):
pixel_index = i // LEDS_PER_PIXEL
dmx_index = dmx_address + (pixel_index * 3)
r = dmx_values[dmx_index]
g = dmx_values[dmx_index + 1]
b = dmx_values[dmx_index + 2]
strip.setPixelColor(i, Color(r, g, b))
# Update the LED strip
strip.show()
def listen_to_sacn(universe, dmx_address, strip, LEDS_PER_PIXEL):
def mqtt_listner(universe, dmx_address, strip, LEDS_PER_PIXEL):
try:
# Create a new sACN listener
listener = sACNlistener()
# Configure the listener to listen to the specified universe
listener.register_listener(universe)
# Start the listener
listener.start()
while True:
# Get the latest data from the specified universe
packet = listener[universe].listen()
if packet is not None:
# Extract DMX values from the sACN packet
dmx_values = packet.dmx_frame
# Update the LED strip based on the received DMX values
update_led_strip(dmx_values, dmx_address, strip, LEDS_PER_PIXEL)
update_led_strip(values, dmx_address, strip, LEDS_PER_PIXEL)
except Exception as e:
print(f"Error: {e}")
@ -108,14 +87,6 @@ def loopCheckSettingUpdates():
print(f"Error: {e}")
time.sleep(2)
def loopUpdatePixels():
while True:
try:
listen_to_artnet(universe, dmx_address, strip, LEDS_PER_PIXEL)
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
# Connect to Wi-Fi
if is_connected_to_wifi():
@ -125,10 +96,9 @@ if __name__ == "__main__":
global universe
global dmx_address
universe, dmx_address = get_assigned_params()
listen_to_artnet(universe, dmx_address, strip, LEDS_PER_PIXEL)
settingsUpdateThread = Thread(target=loopCheckSettingUpdates, args=())
pixelUpdateThread = Thread(target=loopUpdatePixels, args=())
pixelUpdateThread = Thread(target=mqtt_listner, args=(universe, dmx_address, strip, LEDS_PER_PIXEL))
settingsUpdateThread.start()
pixelUpdateThread.start()

View File

@ -21,18 +21,19 @@ artnetBindIp = get_eth0_ip()
artNet = Artnet.Artnet(BINDIP = artnetBindIp, DEBUG = False, SHORTNAME = "PiXelTubeMaster", LONGNAME = "PiXelTubeMaster", PORT = 6454)
tuple_ip = (str(get_eth0_ip()), 6454)
artNet.art_pol_reply(tuple_ip)
while True:
try:
# Gets whatever the last Art-Net packet we received is
artNetPacket = artNet.readPacket()
# Make sure we actually *have* a packet
if artNetPacket is not None and artNetPacket.data is not None:
print("Universe: "+str(artNetPacket.universe))
# Stores the packet data array
dmxPacket = artNetPacket.data
print(type(artNet.readPacket()))
# while True:
# try:
# # Gets whatever the last Art-Net packet we received is
# artNetPacket = artNet.readPacket()
# # Make sure we actually *have* a packet
# if artNetPacket is not None and artNetPacket.data is not None:
# print("Universe: "+str(artNetPacket.universe))
# # Stores the packet data array
# dmxPacket = artNetPacket.data
except KeyboardInterrupt:
break
# except KeyboardInterrupt:
# break
# Close the various connections cleanly so nothing explodes :)
artNet.close()