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