parent
b3d360e9d7
commit
d5ddc8ee26
|
@ -83,14 +83,13 @@ For the professionals out there, most of you will already know how to pixel cont
|
||||||
### Commands to install all the required packages:
|
### Commands to install all the required packages:
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo apt update -y && sudo apt upgrade -y && sudo apt install python3 python3-pip git python3-flask apache2 php mariadb-server mariadb-client ola ola-python dnsmasq hostapd rfkill mosquitto mosquitto-clients -y
|
sudo apt update -y && sudo apt upgrade -y && sudo apt install python3 python3-pip git python3-flask apache2 php mariadb-server mariadb-client ola ola-python dnsmasq hostapd rfkill mosquitto mosquitto-clients python3-mysqldb -y
|
||||||
sudo rm /usr/lib/python3.11/EXTERNALLY-MANAGED
|
|
||||||
pip3 install Flask
|
pip3 install Flask
|
||||||
pip3 install adafruit_circuitpython_neopixel
|
pip3 install adafruit_circuitpython_neopixel
|
||||||
pip3 install Requests
|
pip3 install Requests
|
||||||
pip3 install stupidArtnet
|
pip3 install stupidArtnet
|
||||||
pip3 install wifi
|
pip3 install wifi
|
||||||
sudo apt install python3-mysqldb -y
|
pip3 install paho-mqtt
|
||||||
```
|
```
|
||||||
|
|
||||||
### Setup the wifi access point:
|
### Setup the wifi access point:
|
||||||
|
|
|
@ -7,6 +7,8 @@ from stupidArtnet import StupidArtnet
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
wlan_mac_address = ':'.join(['{:02x}'.format((int(os.popen(f'cat /sys/class/net/wlan0/address').read().split(':'))[i]),) for i in range(6)])
|
||||||
|
|
||||||
# Read configuration from config.json
|
# Read configuration from config.json
|
||||||
try:
|
try:
|
||||||
with open('config.json', 'r') as config_file:
|
with open('config.json', 'r') as config_file:
|
||||||
|
@ -38,7 +40,7 @@ db = MySQLdb.connect(
|
||||||
|
|
||||||
universe_count = config['artnet']['universe_count']
|
universe_count = config['artnet']['universe_count']
|
||||||
|
|
||||||
mqttc = mqtt.Client("localhost", 1883, 60)
|
mqtt_client_id = "PiXelTubeMaster-"+wlan_mac_address
|
||||||
|
|
||||||
# Function to register a tube in the database
|
# Function to register a tube in the database
|
||||||
def register_tube(mac_address):
|
def register_tube(mac_address):
|
||||||
|
@ -84,12 +86,23 @@ def get_assigned_params(tube_unique_id):
|
||||||
def flask_api():
|
def flask_api():
|
||||||
app.run(host='0.0.0.0', port=5000)
|
app.run(host='0.0.0.0', port=5000)
|
||||||
|
|
||||||
def mqtt_publisher(universe):
|
|
||||||
try:
|
|
||||||
# Connect to the MQTT broker
|
|
||||||
mqtt_client = mqtt.Client()
|
|
||||||
mqtt_client.connect("localhost", 1883, 60)
|
|
||||||
|
|
||||||
|
def connect_mqtt():
|
||||||
|
def on_connect(client, userdata, flags, rc):
|
||||||
|
if rc == 0:
|
||||||
|
print("Connected to MQTT Broker!")
|
||||||
|
else:
|
||||||
|
print("Failed to connect to MQTT broker, return code %d\n", rc)
|
||||||
|
|
||||||
|
client = mqtt.Client(mqtt_client_id)
|
||||||
|
client.on_connect = on_connect()
|
||||||
|
client.connect("localhost", 1883)
|
||||||
|
return client
|
||||||
|
|
||||||
|
|
||||||
|
def mqtt_publisher(universe):
|
||||||
|
mqtt_client = connect_mqtt()
|
||||||
|
try:
|
||||||
# Create a new Art-Net listener
|
# Create a new Art-Net listener
|
||||||
artnet = StupidArtnet()
|
artnet = StupidArtnet()
|
||||||
artnet.start(universe=universe)
|
artnet.start(universe=universe)
|
||||||
|
@ -100,7 +113,7 @@ def mqtt_publisher(universe):
|
||||||
if dmx_values is not None:
|
if dmx_values is not None:
|
||||||
for channel, value in enumerate(dmx_values):
|
for channel, value in enumerate(dmx_values):
|
||||||
# Create MQTT topic based on the universe and channel
|
# Create MQTT topic based on the universe and channel
|
||||||
topic = f"/{universe}/{channel + 1}"
|
topic = f"/{universe}/{channel}"
|
||||||
|
|
||||||
# Publish the DMX value to the MQTT topic
|
# Publish the DMX value to the MQTT topic
|
||||||
mqtt_client.publish(topic, payload=value, qos=0, retain=False)
|
mqtt_client.publish(topic, payload=value, qos=0, retain=False)
|
||||||
|
@ -109,7 +122,7 @@ def mqtt_publisher(universe):
|
||||||
print(f"Error in universe {universe}: {e}")
|
print(f"Error in universe {universe}: {e}")
|
||||||
|
|
||||||
def start_mqtt_publishers(universe_count):
|
def start_mqtt_publishers(universe_count):
|
||||||
used_universes = universe_count
|
used_universes = universe_count - 1
|
||||||
|
|
||||||
# Create and start a thread for each universe
|
# Create and start a thread for each universe
|
||||||
threads = [threading.Thread(target=mqtt_publisher, args=(universe,)) for universe in used_universes]
|
threads = [threading.Thread(target=mqtt_publisher, args=(universe,)) for universe in used_universes]
|
||||||
|
|
Loading…
Reference in New Issue