Ankündigung

Einklappen
Keine Ankündigung bisher.

Schaltzeitindex in Logik verwenden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • DiMa
    antwortet
    Zitat von knxPaul Beitrag anzeigen
    Ich bin heute uneinsichtig ... Was ist daran falsch?
    Na, das in diesem Fall einfach Nix passieren soll 😉 Das ist das "do nothing", wonach ich suche.

    Zitat von knxPaul Beitrag anzeigen
    Mit welchem Telegramm-Inhalt werden die Lichter eingeschaltet? Vermutlich eine '1'.
    Ja.

    Zitat von knxPaul Beitrag anzeigen
    Nutze den Filter nach dem UND-Gatter
    Zitat von 6ast Beitrag anzeigen
    Dann ist "Filter" dein Freund.
    Probiere ich!

    Einen Kommentar schreiben:


  • knxPaul
    antwortet
    Zitat von DiMa Beitrag anzeigen
    Aber jede andere Bedingung ... schaltet meine Lampen ein
    Jede andere Bedingung bewirkt eine '0' am Ausgang des UND-Gatters und über den Inverter eine '1' für die Lichter. Ich bin heute uneinsichtig ... Was ist daran falsch?

    Ab hier ergänzt:
    Mit welchem Telegramm-Inhalt werden die Lichter eingeschaltet? Vermutlich eine '1'.

    Zitat von DiMa Beitrag anzeigen
    Bei vorliegen dieser Bedingung will ich die Einschaltbefehle "überschreiben" (also "AUS" senden) sonst nicht
    Langsam dämmert es mir: Die Zeitschaltuhr schaltet ein und die Logik soll gleich wieder Ausschalten, daher ein FALSE aus der Logik, aber kein TRUE, das ja sonst das Licht einschalten würde. Gast1961 hat es gleich verstanden: Nutze den Filter nach dem UND-Gatter
    Angehängte Dateien
    Zuletzt geändert von knxPaul; 29.12.2020, 18:12. Grund: ELSE verstanden und Filter ergänzt

    Einen Kommentar schreiben:


  • Gast1961
    antwortet
    Zitat von DiMa Beitrag anzeigen
    Pseudocode siehe #2.
    Dann ist "Filter" dein Freund. Da kannst du gezielt EIN oder AUS durchlassen.

    Bei Bedarf kann ein Filter auch vor einen "Wertgenerator" gesetzt werden und diesen triggern (sendet bei EIN, bei AUS passiert nix).

    Ein mehrfaches Senden eines unverändertem Wertes kann man bei Bedarf mit "send by change" verhindern, aber sowas immer VOR den Filter setzen weil der Wert hinter dem Filter sich ja nicht ändert.
    Zuletzt geändert von Gast1961; 29.12.2020, 17:56.

    Einen Kommentar schreiben:


  • DiMa
    antwortet
    1.) Nein, siehe 3-fach UND in #4.

    2.) Den Inverter habe ich nur benutzt, um die Ausgangszustände direkt zu setzen (die müssen ein FALSE bekommen, wenn die Bedingung erfüllt ist). Pseudocode siehe #2.

    Einen Kommentar schreiben:


  • knxPaul
    antwortet
    Zitat von DiMa Beitrag anzeigen
    in die Logiken einarbeiten
    ist ein sehr lobenswertes Ziel, das ich gerne unterstütze.

    Um zu einem gemeinsamen Verständnis zu kommen:
    KNX ist ein ereignisgesteuertes System; auf dem Bus herrscht solange Ruhe, bis etwas passiert, und dann wird ein Telegramm gesendet. Manche Menschen interpretieren das Telegramm als Zustandswechsel, merken sich Zustände und bauen so gedanklich eine Logik mit Zuständen. Der Simulator im GPA macht das auch so. Das bildet das KNX-System gut, aber nicht vollständig korrekt ab! Daher gibt es im X1/L1 ganz besondere Logik-Bausteine.

    Zitat von DiMa Beitrag anzeigen
    Ich möchte beim Auslösen einer bestimmten Schaltzeit eine Logik triggern.
    Eine Logik triggern ist also nichts anderes als ein Telegramm. Nun hat das Telegramm einen Inhalt, nehmen wir 1-Bit mit '0' oder '1'. Bei jedem Telegramm wird die Logik ausgeführt, der Ausgangszustand kann gleich bleiben oder sich ändern.
    Eine wichtiger Logik-Baustein ist 'Send-by-Change'; er leitet am Eingang empfangene Telegramme nur dann an den Ausgang weiter, wenn der Telegrammwert am Eingang sich von dem vorherigen Telegrammwert unterscheidet.

    1. Rückfrage: Soll jedes Telegramm die Logik triggern oder beispielsweise nur ein '1'-Telegramm? Dann wäre der Logik-Baustein 'Filter' geeignet, nur ein bestimmtes Telegramm in die Logik gelangen zu lassen.

    2. Rückfrage: Welche Funktion hat der Inverter im Bild von #4 ? Ich interpretieren den als ELSE-Zweig ohne 'DO <irgendwas>' in #2. Schreibst Du mir bitte den Pseudocode für die gewünschte Funktion 😄 nur zum Üben für die X1-Logiken.


    Einen Kommentar schreiben:


  • DiMa
    antwortet
    Ich wusste, es ist ein Fehler, den Anwendungsfall zu beschreiben 😉

    Ich weiß die Hilfe wirklich zu schätzen, aber die Funktion an sich ist nicht mein Problem. Die läuft aktuell mit vier Zeilen Code in OpenHAB. Mit allen möglichen Zeitschaltuhren kann man das auch lösen. Und selbstverständlich auch komplett ohne Logik-Engine 😉

    ich versuche das aber mit einer Logik im X1 zu lösen, weil ich mich für deutlich komplexere Anwendungsfälle in die Logiken einarbeiten möchte.

    Ich fasse nochmals meine eigentlichen Fragen zum X1 aus den ersten beiden Posts zusammen:
    • Wo bekomme ich den Schaltzeitindex der Zeitschaltuhr her? Annahme: Das sind die jeweiligen Nummern vor den Schaltzeiten der Zeitschaltuhr im GPA, korrekt?
    • Zählt der Index ab 0 oder 1 (GPA zählt ab 1)?
    • Wie/wann wird der Zeitschaltindex aktualisiert? Steht in der Variablen immer der zuletzt ausgelöste Index? Ich muss auf den Trigger ("Ausgelöst") reagieren, aber nur bei einer bestimmten Schaltzeit ("Schaltzeitindex" = x).
    • Wie baut man einen "else"-Zweig im X1 Logik-Editor?

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Keine Ahnung, was ihr hier so anstellen wollt, Dämmerung 1/0 direkt an das Schaltobjekt im Aktor. Die Uhr sperrt den Aktorkanal. Je nach Hersteller schaltet der Aktor auch nicht wieder ein, wenn die Sperre zurückgenommen wird und es bereits hell ist. (Rücknahme der Sperre folgt dem Schaltzustand) oder so ähnlich.

    Einen Kommentar schreiben:


  • matthiaz
    antwortet
    Keine Ahnung, was an 2 Zeitschaltuhren in der APP unelegant ist?
    1) Aktor Kanal Sperren bis 6
    2) Aktor Schalten mit 1 Stunde vor Sonnenaufgang + Schalten um 6 Uhr (damit Du da halt definitiv Licht hast) + Aktor Ausschalten nach Sonnenaufgang

    Brauch nicht einmal ne Logik...

    Einen Kommentar schreiben:


  • DiMa
    antwortet
    Zitat von knxPaul Beitrag anzeigen
    Die geforderte Sperre würde ich mit einem logischen UND realisieren, so einfach wie möglich
    Ähh ja, das war auch mein Ansatz, die Probleme damit habe ich in meinen Beiträgen beschrieben - siehe #2. Mein Problem ist ja nicht den "Auslösezustand" zu erkennen, sondern zu verhindern, dass die Logik in allen anderen Fällen auch was macht 😉 In OpenHAB & Co. ist das ein Vierzeiler, aber an diesem Regeltechnik-Ansatz vom X1 beiß' ich mir die Zähne aus.

    Zitat von matthiaz Beitrag anzeigen
    Das mit dem Kanal sperren hast Du aber auch gelesen, oder?
    Ja, aber ob ich ein Sperrobjekt auslöse oder eine Schaltfunktion betätige, hat die gleichen Probleme, die ich beschrieben habe: Die Sperre wird auch gesetzt (oder gelöscht) wenn eine andere Schaltzeit als die um die es geht ausgelöst wird. Natürlich könnte ich auch einfach eine absolute Zeit Sperren - aber dann wird es so unelegant, dass ich einfacher eine eigene Zeitschaltuhr nur für diese Auslösung anlege - da geht's dann mit einer einfachen UND Verknüpfung für den Auslösefall und nix sonst, weil es keine Rolle spielt, da der Trigger dann "auslösezeitspezifisch" ist.

    Aber ich habe noch die Hoffnung, dass sich das eleganter lösen lässt, sonst könnte man sich die interne Variable für den Schaltzeitindex ja komplett sparen 😊 Ich probier's noch mal mit einer "ungleich"-Bedingung im Vergleicher, das könnte auch zum Ziel führen, vielleicht kann man damit wie von Beleuchtfix angeregt den else-Zweig explizit ausbilden...
    Zuletzt geändert von DiMa; 28.12.2020, 19:59.

    Einen Kommentar schreiben:


  • knxPaul
    antwortet
    Zitat von matthiaz Beitrag anzeigen
    Kanal sperren
    Legende für mein Bild in #8:
    • Zeile Uhr sind die Stunden
    • Zeile Licht ist der gewünschte Zeitbereich für die Beleuchtung in gelb
    • Zeilen Winter und Sommer markiert den Bereich zwischen Sonnenaufgang und Sonnenuntergang in orange
    • Zeile Ausgang Winter zeigt das Verknüpfungsergebnis für den Winter in grün
    • Zeile Ausgang Sommer ist leer, weil da kein künstliches Licht ein- oder ausgeschaltet werden muss.
    Die geforderte Sperre würde ich mit einem logischen UND realisieren, so einfach wie möglich 😁😄

    Einen Kommentar schreiben:


  • matthiaz
    antwortet
    Zitat von DiMa Beitrag anzeigen
    Das ist aber nicht gewünschte Funktionalität. Ich will schliesslich nicht im Sommer von 3:30h - 5:30h das Licht anmachen 😉
    Das mit dem Kanal sperren hast Du aber auch gelesen, oder?

    Einen Kommentar schreiben:


  • knxPaul
    antwortet
    Zitat von DiMa Beitrag anzeigen
    gewünschte Funktionalität
    Meinst Du so etwas: Künstliches Licht nur innerhalb eines bestimmten Zeitfensters und nur dann, wenn es dunkel ist?
    You do not have permission to view this gallery.
    This gallery has 1 photos.

    Einen Kommentar schreiben:


  • DiMa
    antwortet
    Zitat von knxPaul Beitrag anzeigen
    Schau mal in die Festlegung der Schaltzeitpunkte der Uhr
    Das ist die Funktion, die ich in der Zeitschaltuhr verwende. Nutzt mir aber für die Logik nichts und auf den Sonnenauf-/-untergangs-Zeitpunkt kann ich mittels Logik auch nicht zugreifen.

    Zitat von matthiaz Beitrag anzeigen
    Geht aber auch direkt aus der App raus mit einer Zeitschaltuhr.
    Erstens löst das mein Problem auch nicht und zweitens ist der Zugriff auf Funktionsuhren mittels Logik bis Gira die vergessene Funktion(en) nachliefert eine rein theoretische Möglichkeit 😉 Siehe meinen Thread zum Thema.

    Zitat von matthiaz Beitrag anzeigen
    Hier kann man dann simple einfach bswp. 2 Stunden vor Sonnenaufgang einschalten.
    Das ist aber nicht gewünschte Funktionalität. Ich will schliesslich nicht im Sommer von 3:30h - 5:30h das Licht anmachen 😉

    Einen Kommentar schreiben:


  • matthiaz
    antwortet
    Geht aber auch direkt aus der App raus mit einer Zeitschaltuhr. Auch dort kann man als Zeitpunkt Sonnenauf- bzw -untergang auswählen, und die Schaltzeit relativ verschieben.

    Hier kann man dann simple einfach bswp. 2 Stunden vor Sonnenaufgang einschalten. Und sofern das erst ab 6 Uhr sein soll, halt einfach den entsprechenden Kanal zwischen sagen wir 2 und 6 Uhr morgens sperren.

    Sprich: einfach in der App die Zeitschaltuhr nach Wunsch erstellen, und in der Logik einfach den Kanal wie oben genannt sperren (oder auch wieder mit einer Zeitschaltuhr in der App, wenn der Zeitpunkt flexibel angepasst werden soll). Fertig. Wäre für mich eine deutlich elegantere und flexiblere Lösung als Deine Logik?

    Einen Kommentar schreiben:


  • knxPaul
    antwortet
    Zitat von DiMa Beitrag anzeigen
    Einen Sonnenaufgangs-/Sonnenuntergangs-Baustein habe ich nicht gefunden
    Den hat Gira auch besonders gut versteckt: Schau mal in die Festlegung der Schaltzeitpunkte der Uhr
    You do not have permission to view this gallery.
    This gallery has 1 photos.

    Einen Kommentar schreiben:

Lädt...
X