Seite 3 von 3

Re: Zu einer bestimmtem Uhrzeit langsam hoch dimmen

Verfasst: Di Dez 10, 2019 8:36 pm
von Robert_Mini
Wie gesagt:
An den Trigger kommt man nicht ran. Es stößt nur die Ausführung der Zelle zum def. Zeitpunkt an.

Was aber geplant ist: ein ähnliches Menü zur Eingabe eines Zeitpunktes, das als normaler Eingang definiert wird und einen Cron-String übergibt, den man dann im Cron-Timer verwenden kann.

Lg
Robert

Re: Zu einer bestimmtem Uhrzeit langsam hoch dimmen

Verfasst: Mi Dez 11, 2019 8:55 pm
von S. Kolbinger
Hallo Bodo,

ich habe mal so eine Custom-Logik zusammen gebaut:

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.

Re: Zu einer bestimmtem Uhrzeit langsam hoch dimmen

Verfasst: Mi Dez 11, 2019 9:26 pm
von StefanW
Hallo Bodo,
bodo hat geschrieben: Di Dez 10, 2019 7:49 pmIch habe im sogenannten LE-Code die Variable $CRONTRIGGER_2_5 gefunden, komme aber nicht an sie ran.Wenn ich sie als Ausgang definiere geht das nicht, weil sie nicht definiert ist.
bitte nicht in Form von "Variablen" denken sondern wir bei einem Schaltplan von Leitungen - wir nennen das Signale.

Der LE-Code ist kein prozeduraler Code mit Definitionen, Variablen, Zuweisungen, Funktionen, sondern es ist eine Schaltplanbeschreibung.

Stelle Dir - wie beim Elektronikbaukasten unserer Jugend - das als einzelne Module vor, die man auf dem Feld anordnet und dann mit Drähten ("Signale") verbindet.

Was Stefan Dir sagen will, Du nimmst also einen Cron-Baustein und verbindest diesen mit einem Berechnungsbaustein (und noch Speichern usw). Der Cron-Baustein berechnet den nächsten Trigger-Zeitpunkt und der Berechnungsbaustein addiert dann was dazu und das verbindet man dann mit einem Trigger-Eingang eines anderen Bausteins.

Ich hoffe das Dir das Bild der Bausteine die man verbindet besser hilft beim Verständnis. Wenn man das mal verstanden hat, wird man sehr schnell mit der Logik und sehr sauber.

lg

Stefan

Re: Zu einer bestimmtem Uhrzeit langsam hoch dimmen

Verfasst: Mi Dez 11, 2019 11:13 pm
von bodo
S. Kolbinger hat geschrieben: Mi Dez 11, 2019 8:55 pm ich habe mal so eine Custom-Logik zusammen gebaut:
Hoi Stefan

Vielen Dank, es funktioniert. :clap:
Da muss ich in der Denke wohl etwas umstellen. :shock:

Re: Zu einer bestimmtem Uhrzeit langsam hoch dimmen

Verfasst: Mi Dez 11, 2019 11:19 pm
von bodo
StefanW hat geschrieben: Mi Dez 11, 2019 9:26 pm bitte nicht in Form von "Variablen" denken sondern wir bei einem Schaltplan von Leitungen - wir nennen das Signale.
Hoi Stefan

Die Module:

Code: Alles auswählen

["Multiplexer",[0,"$TimeStep"],"$Period","$Run"],   // $Period == 0, stoppt den Timer
["Clocksignal","$Active",0,"$Period"]               // Timer für nächsten Schritt
machen Sachen, die ich noch nicht ganz kapiert hab'. Das wird schon, vielleicht. :shifty:

Re: Zu einer bestimmtem Uhrzeit langsam hoch dimmen

Verfasst: Do Dez 26, 2019 11:00 am
von Matze76
Hallo @bodo,

Code: Alles auswählen

["Clocksignal","$Active",0,"$Period"]               // Timer für nächsten Schritt
Das Clocksignal ist ein zyklischer Trigger, der die Logik - nachdem sie initial getriggert wurde - intern immer wieder neu triggert. Vorausgesetzt sie ist aktiv ($Active = true). Die Variable $Period bestimmt dabei die Zeit, nach der immer wieder neu getriggert und hier damit der Dimmwert stufenweise hochgesetzt wird.

Code: Alles auswählen

["Multiplexer",[0,"$TimeStep"],"$Period","$Run"],   // $Period == 0, stoppt den Timer
Hier wird der Wert der Variable $Period für das Clocksignal bestimmt.
Wenn die Dimmsequenz läuft ($Run = true = 1) wird $Period mit dem Input-Parameter "Intervall" (Variable $TimeStep) versorgt.

Ist die Sequenz abgelaufen ($Run = false = 0) wird $Period = 0. Damit wird das Clocksignal gestoppt.

Re: Zu einer bestimmtem Uhrzeit langsam hoch dimmen

Verfasst: Do Dez 26, 2019 11:14 am
von Matze76
... mit ein paar kleinen Anpassungen kann man auch langsam herunter dimmen (z. B. für eine Sonnenuntergangssimulation im Aquarium).

Die "Konstante Eins" wird zu -1, und die Variablen im Polynomial- sowie Comparator-Modul umgedreht.

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"]
    ]
}

Re: Zu einer bestimmtem Uhrzeit langsam hoch dimmen

Verfasst: Do Dez 26, 2019 5:46 pm
von StefanW
Bitte

die fertigen Custom-Logiken mit entsprechenden Beschreibungen als eigene Threads unter "zusätzliche" Logikbausteine posten.

Weil sonst geht das unter und das wäre total schade. Insbesondere würden wir, wenn ausreichend "abgehangen" und bewertet und von uns geprüft diese nützlichen Bausteine auch in das Standard-Sortiment mit aufnehmen.

lg

Stefan

Re: Zu einer bestimmtem Uhrzeit langsam hoch dimmen

Verfasst: Do Dez 26, 2019 5:52 pm
von Matze76
Gerne, ich poste dann das Original weiter oben zum Hochdimmen (von Stefan Kolbinger) und meine Modifikation dort nochmal mit Verweis auf diesen Beitrag. Habe sowieso noch eine weitere Ergänzung in Arbeit.