Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
hat einer schon die Logik geschrieben, um zw. 22 und 6 Uhr die Badbeleuchtung nur 30% zu dimmen, statt 100%?
Also ein Dimwert nachzusenden, sobald die Leuchte angehen soll...
Derzeit zwischen Kistenauspacken und Garten anlegen.
Baublog im Profil.
Einfach unten den auskommentierten Teil wieder einkommentieren. Das nachträgliche Dimmen beim Aktivieren bzw. Wiederaufdimmen beim Ausschalten würde dann aber noch extra müssen. Evtl. "rekursiv" erst mal Nachtmodus() umschalten.
if trigger['source'].endswith('Nachtmodus'): # if Nachtmodus triggered logic if not hasattr(logic, 'light_items'): logic.light_items = [] for item_expression in logic.watch_item: logic.light_items += [item.return_parent() for item in sh.match_items(item_expression) if not str(item).endswith('Nachtmodus')] logger.info('{}: light_items={}'.format(logic.name, logic.light_items)) for light_item in logic.light_items: if light_item(): logger.info('{}: light_item={}'.format(logic.name, light_item)) # select only light_items which are on if trigger['value']: # if Nachtmodus is switched on, set night brightness light_item.Helligkeitswert(light_item.Automatikschalter.conf['nacht_helligkeitswert'], logic.name) else: # if off, send off/on sequence to normal brightness (which might be less than 100%) light_item.Automatikschalter(0, logic.name) light_item.Automatikschalter(1, logic.name)
elif (sh.Nachtmodus() and trigger['value']): # if active and switching on # now = sh.now() # if ((((now.today().weekday() in range(0, 5)) and (now <= now.replace(hour=7, minute=0, second=0, microsecond=0))) or # ((now.today().weekday() in range(5, 7)) and (now <= now.replace(hour=9, minute=0, second=0, microsecond=0)))) # or (now > now.replace(hour=21, minute=0, second=0, microsecond=0)) source_item = sh.return_item(trigger['source']) source_item.return_parent().Helligkeitswert(source_item.conf['nacht_helligkeitswert'], logic.name)
Ich habe gerade noch in der Dusche nachgedacht, und dabei kam die Lösung raus:
Der Code ist exakt! identisch mit den letzten drei Zeilen des Codes oben!? Außer dass bei deiner Lösung auch angedimmt wird wenn die Lampe ausgeschaltet wird.
langsam denke ich Du möchtest die Lücke/Rolle ausfüllen die Makki hinterlassen hat.
Das ist gegenüber makki nicht fair.
Sag mir einfach, dass ich mich im Ton vergriffen habe. Da hast du recht mit. Ich bitte dich um Entschuldigung.
Ich hab so unpassend geantwortet, weil wir teilweise (deswegen ja auch der Bart-Hinweis) Sachen mehrfach erfinden, anstelle einen Ansatz zu Ende zu feilen. Sicher gibts auch bei obigen Code was optimieren, was ich ja auch oben geschrieben habe. Z.b. fehlt mir ein smarter Ansatz, wie die Lampen wieder auf "volle" Helligkeit gebracht werden können. Wobei "voll" ja eben durch ein Dali-GW auch "80%" sein kann. Das "aus-ein" versagt aber wenn der Präsenzmelder an einer Sammeladresse hängt, da diese nie extern "ein" wird, man also nicht mitbekommt dass die GA "an" ist und entsprechend handeln kann.
Hier: "Deckenstrahler" müsste "an" sein, um bei "Nachtmodus -> aus" wieder hochzudimmen. Wird nie der Fall sein. Das eval funzt nicht, weil dann bei jeglichen "an" dass auf dem KNX rausgeschmissen wird, da die "Spiegel-Abfrage" im KNX-Plugin nur auf KNX und nicht auf "Eval" abfragt. Eigentlich richtig wäre es nur, über jedes Einzel-Item zu gehen.
Mir als "Einsteiger" bzw. "Fast nicht Programmierer und mit Mühe Python Code Leser" ist mknx Beispiel lieber. Einfach, weil man es besser verstehen kann. Das mag für Informatiker halt anders sein. Alles in einer Zeile ist aber irgendwie wieder perl-like Da wollen wir ja weg. Letztlich kann es aber jeder machen, wie er will.
Wenn jemand aber Roberts Beispiel direkt versteht, braucht er die Hilfe hier im Forum nicht mehr. Meine Meinung (Robert, ich hoffe Du verstehst, worauf ich hinaus will).
Ich werde das mal ausprobieren. Wenns passt, pack ich das in meinen Logik Thread zur Sammlung.
Derzeit zwischen Kistenauspacken und Garten anlegen.
Baublog im Profil.
Usually its DPT 5 (knx_dpt = 5) for 0 to 255 or DPT 5.001 (knx_dpt = 5001) for 0 to 100%
Thanks, that was one more step, but still I am far from getting this logic to work..
where exactly do I place the file below(Have no logic in my root folder), and do I need to replace 'Source', 'item name', and sh.return_item?? with what??
Code:
# logic/nachtlicht.py
zeit = sh.now()
if zeit.hour > 22 or zeit.hour < 6:
itemname = trigger['source']
item = sh.return_item(itemname)
item.dimmen(60)
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar