Ankündigung

Einklappen
Keine Ankündigung bisher.

Anregungen gesucht zu: Sinnvoller Aufbau einer Logik zur Szenensteuerung

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

    X1 Anregungen gesucht zu: Sinnvoller Aufbau einer Logik zur Szenensteuerung

    Da in meinem Projekt ein fast "schalterloses" Büro entsteht und ich dennoch nicht auf bedarfsorientierten Komfort verzichten möchte, habe ich überlegt die grundsätzliche Steuerung über Szenen zu generieren. Diese Szenen können am X1 und in der App aufgerufen werden.

    Ausgelöst werden die Szenen über die Kachel "Szenenset" mit manueller Datenpunktzuordnung / angelegt sind diese aber ganz normal über die Szenenfunktion im X1 und sollen zur einfachen Administration auch dort verbleiben.

    Anbei mal zur Verdeutlichung zwei Screenshots:

    Screenshot (39).png

    Screenshot (40).png


    Über einen Schlüsselschalter am Eingang wird nicht nur die Alarmanlage scharf/unscharf geschaltet, sondern auch über den zusätzlich angeschlossenen Binäreingang die ANWESENHEIT eben ein- oder ausgeschaltet.

    Mit einem Logikblatt "Szenenlogik" möchte ich zum einen prüfen, ob passend zur An-/Abwesenheit überhaupt die Szene aufgerufen werden darf und zusätzlich noch für die Visualisierung den aktiven "Modus" anzeigen. Grundsätzlich funktioniert dies mit angehängtem Logikblatt ABER ich musste einen Telegrammverzögerer einbauen, da sonst der Ausgangswahlschalter schneller ist als meine Abfrage.

    Und genau das ist nun meine dazu passende Frage: Gibt es einen anderen Weg? Denn mit dem Verzögerer ist automatisch der Aufruf um eine Sekunde später. Dies finde ich nicht so ganz glücklich.

    Nun mal die Logik:

    Screenshot (41).png

    Screenshot (42).png

    Screenshot (43).png


    Grundsätzlich war die Idee, dass bei ANWESENHEIT=0 alle Szenen, die grösser 1 sind nicht verarbeitet werden.


    Vielleicht sehe ich den Wald vor lauter LBS-Möglichkeiten mal wieder gerade nicht.
    Zuletzt geändert von araeubig; 09.08.2021, 10:34.

    #2
    Ich würd das wahrscheinlich alles in eine Formelberechnung packen ...

    Kommentar


      #3
      hyman das hatte ich befürchtet 😊 …

      Kommentar


        #4
        hyman bin dabei Deinen Baustein "Formelberechnung" für mich zu konfigurieren und es funktioniert alles bisher recht gut - Stehe nur vor einem Problem, dass ich bei einer Berechnung im Wahrheitsfall eine Zahl ausgeben möchte und im Nicht-Wahrheitsfall aber NICHTS. Habe es mit dem Schlüsselwort null probiert aber da bekomme ich die Fehlermeldung "Expression 8: (1,77): error CS0173: Type of conditional expression cannot be determined because there is no implicit conversion between `double' and `null'" - das Feld ist als Number eingestellt und ein x-beliebiger Wert geht wunderbar - aber eben nicht NICHTS. Was kann ich da tun?

        Formel 8: /* Vorhang auf Durchgangsposition fahren */ _out1_ && !_out2_ && _out5_ ? _out4_ : null


        mit: /* Vorhang auf Durchgangsposition fahren */ _out1_ && !_out2_ && _out5_ ? _out4_ : 37 - funktioniert es aber mit null eben nicht.


        Kommentar


          #5
          Da zitiere ich doch mal aus der Dokumentation der Konstante null:

          Das typlose "nichts" kann überall stehen wo ein beliebiger auf NULL festlegbarer Typ zulässig ist. Nützlich ist das vor allem, wenn man in einem Zweig eines Bedingungsoperators keinen Wert an einen Ausgang senden möchte. Für Ausgänge vom Typ STRING funktioniert das direkt. Für alle anderen Ausgangstypen muss man im anderen Zweig des Bedingungsoperators explizit die auf NULL festlegbare Variante des Ausgabetyps verwenden. Das Beispiel "Verbesserter Schwellwert mit Hysterese" zeigt, wie man das mit Typumwandlungs-Operatoren erreicht.

          Kommentar


            #6
            Zitat von hyman Beitrag anzeigen
            Da zitiere ich doch mal aus der Dokumentation der Konstante null:
            Genau das habe ich nun schon x-mal gelesen. OK - ich probiere weiter.

            Kommentar


              #7
              Das genannte Beispiel verwendet den Typ bool.

              Dein _out4_ ist vom typ double. Also musst Du Dein Formel so schreiben: ... ? (double?)_out4_ : null
              Zuletzt geändert von hyman; 11.08.2021, 08:39.

              Kommentar


                #8
                hyman Danke Dir! Die Zuweisung hatte ich dummerweise bei "null" probiert. Jetzt funktioniert es einwandfrei.

                Kommentar


                  #9
                  Um vielleicht dem einen oder anderen ein Beispiel zu geben, hier mal ein Teil der umgesetzten Logik:

                  Ziel war es einen Vorhang der direkt hinter der Eingangstür montiert ist über den Türkontakt beim Betreten der Räume zu einer definierten Öffnung zu fahren. Ausserdem soll er beim Verlassen wieder in seine Position zurückfahren.

                  Screenshot (45).png

                  Screenshot (46).png

                  Kommentar


                    #10
                    Und die Hauptlogik der Szenensteuerung auch mit dem Baustein Formelberechnung und Textformatierer gelöst:

                    Screenshot (47).png

                    Screenshot (48).png

                    Screenshot (49).png

                    Kommentar

                    Lädt...
                    X