Hallo zusammen,
bin z.Zt. dabei ueber ein BBB meine DMX Steuerung zu machen. Hardwareseitig laeuft das Ganze seit ein paar Monaten stabil (siehe DYI-forum) und fuer den naechsten Schritt des Anbindens an KNX ueber smarthome.py habe ich eine Frage:
Wenn das plugin nicht nur Schaltvorgaenge, sondern auch heller-/dunkler-dimmen soll, z.b. 0%...100% in 3000 ms, brauche ich eine Moeglichkeit um (a) den Dimmvorgang zu starten und (b) zu stoppen und das fuer parallel laufende Dimmvorgaenge.
Hierfuer hatte ich Folgendes gedacht:
1) dimmstart ueber KNX => thread starten mit einem event als argument
2) dimmstop ueber KNX => thead stoppen ueber event.set()
Meine Frage: gibt es "Bedenken" bzgl. der Vorgehensweise bzw. was waere hierfuer eine bessere Herangehensweise?
Danke fuer alle Hilfe, Kommentare etc. und LG - tullsta
ein beispielhafter code (ohne error-handling etc.) waere hier:
bin z.Zt. dabei ueber ein BBB meine DMX Steuerung zu machen. Hardwareseitig laeuft das Ganze seit ein paar Monaten stabil (siehe DYI-forum) und fuer den naechsten Schritt des Anbindens an KNX ueber smarthome.py habe ich eine Frage:
Wenn das plugin nicht nur Schaltvorgaenge, sondern auch heller-/dunkler-dimmen soll, z.b. 0%...100% in 3000 ms, brauche ich eine Moeglichkeit um (a) den Dimmvorgang zu starten und (b) zu stoppen und das fuer parallel laufende Dimmvorgaenge.
Hierfuer hatte ich Folgendes gedacht:
1) dimmstart ueber KNX => thread starten mit einem event als argument
2) dimmstop ueber KNX => thead stoppen ueber event.set()
Meine Frage: gibt es "Bedenken" bzgl. der Vorgehensweise bzw. was waere hierfuer eine bessere Herangehensweise?
Danke fuer alle Hilfe, Kommentare etc. und LG - tullsta
ein beispielhafter code (ohne error-handling etc.) waere hier:
Code:
def thread1(e, threadID, startTime):
dimTime = 2.0
idx = 0;
print('starting thread', str(threadID))
while not e.isSet():
idx = idx + 1
print(str(threadID) + '\t -> ' + str(idx))
time.sleep(dimTime/255.0)
print('stop-event for thread ', str(threadID), 'set at time', str(timedelta(seconds = time.monotonic()-startTime)))
pass
# starte Dimmvorgaenge
e1 = threading.Event()
t1 = threading.Thread(target=thread1, args=(e1, 1, time.monotonic()))
t1.start()
e2 = threading.Event()
t2 = threading.Thread(target=thread1, args=(e2, 2, time.monotonic()))
t2.start()
time.sleep(0.1)
e3 = threading.Event()
t3 = threading.Thread(target=thread1, args=(e3, 3, time.monotonic()))
t3.start()
# stoppe Dimmvorgaenge
time.sleep(0.1)
e1.set()
time.sleep(0.1)
e2.set()
time.sleep(0.1)
e3.set()
time.sleep(5)



Kommentar