Поддержка dmx512

Добрый день, как в WB5 с поддержкой DMX512.
Как я понимаю аппаратно он поддерживает, т.к. есть порт rs485, а вот программно?
Очень нужно, спасибо.

Теоретическая возможность отправлять сообщения DMX512 есть, но никакой программной интеграции мы не делали.

Если у вас коммерческий проект и туда планируется много контроллеров - напишите/позвоните нам пожалуйста, обсудим, можем ли мы это сделать.

Проект коммерческий но штучный, поэтому бюджет ограничен, если получится с поддержкой dmx купим под объект 4 контроллера.
Я нашел код на python, и как понимаю порт rs485 должен поддерживать скорость 250 000 для
возможности передавать DMX сигнал, что подскажите?

def sendDMX(data):
import serial

# Make a DMX packet out of the data

dmxPacket = chr(0x00) + ''.join(chr(element) for element in data)

# To create sync signal (break and mark after break, in DMX-speak),
# slow port down and send a long 0

slow = serial.Serial('/dev/ttyS1', 19200)
slow.write(chr(0x00))
slow.close()

# Sync done; send out the data

fast = serial.Serial('/dev/ttyS1', 250000, stopbits=serial.STOPBITS_TWO)
fast.write(dmxPacket)
fast.close()

Usage example

>>> import dmx

>>> dmx.sendDMX([0xAA, 0x55, 0x01, 0x81])

Порт по идее поддерживает 250000. Проверьте, вполне возможно будет работать.

Евгений, спасибо, 250000 поддерживает.

Т.е. у вас получилось послать команду DMX512?

Да, все отлично работает.
На текущий момент проверено:

  1. Подключен 1 ДЕКОДЕР DMX SR-2108FA-RJ45-DIN к первому порту
  2. Через выше указанный скрипт отправляются посылки DMX в цикле с паузой в 0.1 сек, можно и быстрей
  3. Скрипт python грузит процессор на 10%, если смотреть через top.

Скоро буду собирать большую DMX сеть, отпишу дополнительно если какие возникнут сложности.

кхм… а можно подглядеть? оч интересно. есть светодионая сеть на dmx

#!/usr/bin/python

-- coding: utf-8 --

import random, time
def sendDMX(data):
import serial
# Make a DMX packet out of the data
dmxPacket = chr(0x00) + ‘’.join(chr(element) for element in data)
# To create sync signal (break and mark after break, in DMX-speak),
# slow port down and send a long 0
slow = serial.Serial(’/dev/ttyAPP1’, 19200)
slow.write(chr(0x00))
slow.close()
# Sync done; send out the data
fast = serial.Serial(’/dev/ttyAPP1’, 250000, stopbits=serial.STOPBITS_TWO)
fast.write(dmxPacket)
fast.close()

import dmx

r = 0
g = 0
b = 0
w = 0

while True:
r = random.randint(0 ,255)
g = random.randint(0 ,255)
b = random.randint(0 ,255)

    dmx.sendDMX([r, g, b, w])
    time.sleep(0.1)
1 лайк

большое спасибо буду пробовать

Возникла аналогичная задача. Но с Питоном прям совсем не знаком. Можете немного направить?
Скрипт в данном случае - это все кроме последних двух строчек? Его кладем в папку root, называем dmx.py ? Кроме этого ничего делать не нужно, все пакеты уже установлены на контроллере?
А последние две строчки в сообщении - это вызов скрипта? Но не пойму как этот вызов будет из WB-Ruls выглядеть, каков синтаксис?

Можете направить где почитать по поводу моего сообщения выше?

Нет, весь.

Дать право на выполнение надо, если запускать будете прямым вызовом.

“скрипт” - это функция. Да, показано как ее вызвать. Из wb-rules тоже можно вызвать, сложив параметры (будущий массив data) в mqtt топик предварительно.