Insider Preview 3 veröffentlicht

Bild

Wir haben seben die Insider Preview 3 zur Version 4.8 veröffentlicht
Komplett überarbeiteter Logik Katalog mit verbesserter Übersicht und Suche für einfachere Auswahl der Lgik Module
Sechs neue Logiken für Farbraum-Umrechnungen (siehe Bild)
Fünfzehn neue Logiken aus der Community
Damit sind es nun 99 Logiken
Einundzwanzig neue winterliche Hintergründe für die VISU
Verbesserte Mouse-Over im VISU Editor für klarere Information
Das HTTP-API Subsystem liefert nun im Header stets Header Access-Control-Allow-Origin = * aus
Der Modbus Register Auswahlassistent erlaubt nun verschiedene Sortierungen beim Anlegen einer Transaktion
Viele Bugfixes


Release Notes: https://elabnet.atlassian.net/wiki/x/AYDD0

AKTION: Wir haben noch viele tolle Updates und 150 Videos (und 800 Wiki Seiten) geplant. Bitte unterstütze uns mit einem Software-Wartungsvertrag, damit wir dieses alles erreichen können. Und damit Dein Server weiterhin Updates, Upgrades und Support erhält. Jetzt in der Aktion schenken wir Dir den Insider Club mit derselben Laufzeit wie der am längsten laufende aktive Wartungsvertrag dazu - bei sofortigem Laufzeitbeginn. Damit profitierst Du auch von einer vorzeitigen Verlängerung. Alle Infos: https://elabnet.atlassian.net/wiki/x/GQB8z

[NEUHEIT] Zu bestimmten Zeitpunkten langsam dimmen

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
Matze76
Beiträge: 316
Registriert: Mo Sep 24, 2018 9:59 am
Hat sich bedankt: 291 Mal
Danksagung erhalten: 196 Mal

Zu bestimmten Zeitpunkten langsam dimmen

#1

Beitrag von Matze76 »

Hallo zusammen,

hier eine Sammlung von Custom-Logiken zum Thema "langsam Dimmen" (entstanden aus diesem Beitrag: viewtopic.php?f=24&t=1752#p18432 )

1.) Zu einem bestimmten Zeitpunkt langsam hochdimmen (von S. Kolbinger)

Code: Alles auswählen

{
    "Level": [
        ["$ValStart","float",0.0],
        ["$ValEnd","float",100.0],
        ["$ValStep","float",5.0],
        ["$ValCurrent","float",0.0],
        ["$ValNext","float",0.0],
        ["$Active","bool",false],
        ["$Run","bool",false],
        ["$TimeStep","float",1.5],
        ["$Period","float",0.0],
        ["$KonstEins","float",1.0]
    ],
    "Module": [
        ["Multiplexer",["$Active"],"$Run",0],
        ["Multiplexer",["$ValNext"],"$ValCurrent",0],
        ["Polynomial","$KonstEins","$ValNext",["$ValStep","$ValCurrent"]],
        ["Comparator","$ValNext","-$Run","$ValEnd"],        // Run sollange nächster Wert nicht größer als Endwert
        ["Latch","$ValStart","$ValNext","-$Active",0],      // Falls deaktiviert => Rücksetzen auf Startwert
        ["Latch","$ValStart","$ValNext","$Run",2],          // Rücksetzen auf Startwert, bei fallender Flanke von $Run
        ["Multiplexer",[0,"$TimeStep"],"$Period","$Run"],   // $Period == 0, stoppt den Timer
        ["Clocksignal","$Active",0,"$Period"]               // Timer für nächsten Schritt       
    ],
    "Input": [
        ["Aktiv","Aktiviere/Deaktivier Dimmer","$Active","u"],
        ["Start","Start-Wert","$ValStart","u"],
        ["Ende","End-Wert","$ValEnd","u"],
        ["Step","Schrittweite","$ValStep","u"],
        ["Intervall","Zeit [s] zwischen zwei Werten","$TimeStep","u"]
    ],
    "Output": [
        ["Dimmwert","Aktueller Dimmwert","$ValCurrent","c"]
    ]
}
Nachdem man die konstanten Eingänge zu Parametern gemacht und den Cron-Trigger hinzugefügt hat, sollte das ganze etwa so aussehen:

Bild

Die Parameter sind: Start- und Endwert des Dimmvorgangs, die Schrittweite und die Schrittdauer (in Sekunden).
Der Eingang "Aktiv" muss true sein, wenn der Cron-Timer feuert, damit der Dimmvorgang gestartet wird.
Wird der "Aktiv"-Eingang während des Dimmvorgangs false, wird der Dimmvorgang abgebrochen und der Ausgang bleibt auf dem letzten Wert stehen.

2.) Zu einem bestimmten Zeitpunkt langsam herunterdimmen (Abwandlung von mir zu 1.)

Code: Alles auswählen

{
    "Level": [
        ["$ValStart","float",100.0],
        ["$ValEnd","float",0.0],
        ["$ValStep","float",5.0],
        ["$ValCurrent","float",100.0],
        ["$ValNext","float",100.0],
        ["$Active","bool",false],
        ["$Run","bool",false],
        ["$TimeStep","float",1.5],
        ["$Period","float",0.0],
        ["$KonstEins","float",-1.0]
    ],
    "Module": [
        ["Multiplexer",["$Active"],"$Run",0],
        ["Multiplexer",["$ValNext"],"$ValCurrent",0],       
        ["Polynomial","$KonstEins","$ValNext",["$ValCurrent","$ValStep"]], // $ValNext = $ValCurrent + ($ValStep * -1)
        ["Comparator","$ValEnd","-$Run","$ValNext"],        // Run solange nächster Wert nicht kleiner als Endwert
        
        ["Latch","$ValStart","$ValNext","-$Active",0],      // Falls deaktiviert => Rücksetzen auf Startwert (100). 
        ["Latch","$ValStart","$ValNext","$Run",2],          // Rücksetzen auf Startwert, bei fallender Flanke von $Run (100)
              
        ["Multiplexer",[0,"$TimeStep"],"$Period","$Run"],   // $Period == 0, stoppt den Timer
        ["Clocksignal","$Active",0,"$Period"]               // Timer für nächsten Schritt       
    ],
    "Input": [
        ["Aktiv","Aktiviere/Deaktivier Dimmer","$Active","u"],
        ["Start","Start-Wert","$ValStart","u"],
        ["Ende","End-Wert","$ValEnd","u"],
        ["Step","Schrittweite","$ValStep","u"],
        ["Intervall","Zeit [s] zwischen zwei Werten","$TimeStep","u"]
    ],
    "Output": [
        ["Dimmwert","Aktueller Dimmwert","$ValCurrent","c"]
    ]
}
Konfiguration wie unter 1.)
Zum Herunterdimmen muss der Startwert natürlich größer sein als der Endwert.
Zuletzt geändert von Matze76 am Do Dez 26, 2019 9:42 pm, insgesamt 1-mal geändert.
Gruß
Matthias

TWS 2500 ID:110 + PBM, VPN offen, Reboot nach Rücksprache

Ersteller
Matze76
Beiträge: 316
Registriert: Mo Sep 24, 2018 9:59 am
Hat sich bedankt: 291 Mal
Danksagung erhalten: 196 Mal

#2

Beitrag von Matze76 »

Zunächst nur für das Herunterdimmen habe ich noch diese Variante gebaut:

Use-Case:
Die Dimmsequenz soll nicht mit einem Festwert, sondern mit dem jeweils aktuellen Dimmwert gestartet werden.

Dazu muss der Code etwas anders aussehen (in den o.g. Beispielen wird schon am Ende der letzten Sequenz der feste Startwert für die nächste Sequenz festgelegt).

Code: Alles auswählen

{
    "Level": [
        ["$ValStart","float",100.0],
        ["$ValEnd","float",0.0],
        ["$ValStep","float",5.0],
        ["$ValCurrent","float",100.0],
        ["$ValNext","float",100.0],
        ["$Active","bool",false],
        ["$Run","bool",false],
        ["$TimeStep","float",1.5],
        ["$Period","float",0.0],
        ["$KonstEins","float",-1.0]
    ],
    "Module": [
        ["Multiplexer",["$Active"],"$Run",0],               // Wird die Logik getriggert, wird $Active an $Run übergeben und die Sequenz gestartet
        ["Latch","$ValStart","$ValNext","$Run",1],          // Bei steigender Flanke von $Run (Sequenz gestartet), setze $ValNext auf aktuellen Eingangswert (Startwert)
         
        ["Multiplexer",["$ValNext"],"$ValCurrent",0],       // $ValNext wird an $ValCurrent (=> Ausgang) gegeben
        ["Polynomial","$KonstEins","$ValNext",["$ValCurrent","$ValStep"]], // $ValNext = $ValCurrent + ($ValStep * -1)
        
        ["Comparator","-$ValNext","-$Run","-$ValEnd"],        // Run solange nächster Wert nicht kleiner als Endwert
        ["Latch","$ValEnd","$ValCurrent","$Run",2],           // Wenn Run gestoppt wird (fallende Flanke), setze $ValCurrent auf den eingestellten Endwert ($ValEnd)
        
        ["Multiplexer",[0,"$TimeStep"],"$Period","$Run"],   // $Period == 0, stoppt den Timer
        ["Clocksignal","$Active",0,"$Period"]               // Timer für nächsten Schritt       
    ],
    "Input": [
        ["Aktiv","Aktiviere/Deaktivier Dimmer","$Active","u"],
        ["Start","Start-Wert","$ValStart","u"],
        ["Ende","End-Wert","$ValEnd","u"],
        ["Step","Schrittweite","$ValStep","u"],
        ["Intervall","Zeit [s] zwischen zwei Werten","$TimeStep","u"]
    ],
    "Output": [
        ["Dimmwert","Aktueller Dimmwert","$ValCurrent","c"]
    ]
}
Die Einstellungen entsprechen den im ersten Beitrag genannten Beispielen, außer dass der Eingang "Start" nicht mit einem konstanten Parameter belegt wird, sondern mit einem Eingangsobjekt verbunden wird (z. B. dem Statusobjekt "aktueller Dimmwert" der zu dimmenden Beleuchtung).

Wichtig: Der Eingang "Start" darf die Logik nicht triggern, d.h. er muss auf "U" (Update) bleiben.

Da man je nach Schrittweite aufgrund des dynamischen Startwerts am Ende der Sequenz nicht unbedingt genau auf dem Endwert landet, habe ich noch eine Zeile ergänzt, die den Dimmwert am Ende genau auf den eingestellten Endwert setzt.

Einstellungs-Beispiel:

Um 22:15 Uhr wird die Dimmsequenz gestartet und vom dann anliegenden Dimmwert bis auf 0 heruntergedimmt (alle 3 Sekunden 1 Prozentpunkt)

Bild
Zuletzt geändert von Matze76 am Do Dez 26, 2019 10:13 pm, insgesamt 1-mal geändert.
Gruß
Matthias

TWS 2500 ID:110 + PBM, VPN offen, Reboot nach Rücksprache
Antworten

Zurück zu „Zusätzliche Logikbausteine“