NEWS
Eine Frage zum und/oder Logikbaustein
-
Ich gehe richtig in der Annahme, dass eine Verwendung des Logikblocks UND / ODER in einer Falls Abfrage bei dessen Verwendung zwei Zustände mit UND verknüpft abfragt, also beide Zustände die Eigenschaft aufweisen müssen, und bei ODER nur einer der beiden Zustände die Bedingung erfüllen muss. Richtig?
Hintergrund ist der, dass ich eine Lichtschaltung nach Anwesenheit (separates Skript, welches im TR-064 Adapter die Anwesenheit mit true / false in Datenpunkte schreibt) damit realisiert habe, die ausschließlich funktioniert, wenn beide Anwesenheitsbedingungen (Wert von Anwesenheit = true) erfüllt sind, ich im Skript allerdings die ODER Logik verwende.
Im konkreten Fall war die zuerst abgefragte Anwesenheit false, die darunterliegende true und das Skript hat die Lampen nicht geschaltet. Ist die obere Anwesenheit true und die untere Anwesenheit false, oder sind beide Anwesenheiten true, schaltet es aber.
Ist ODER hier die falsche Logik, so dass ich UND verwenden muss, oder geht es ganz anders noch besser?
-
@mehrwiedu sagte in Eine Frage zum und/oder Logikbaustein:
Ich gehe richtig in der Annahme, dass eine Verwendung des Logikblocks UND / ODER in einer Falls Abfrage bei dessen Verwendung zwei Zustände mit UND verknüpft abfragt, also beide Zustände die Eigenschaft aufweisen müssen, und bei ODER nur einer der beiden Zustände die Bedingung erfüllen muss. Richtig?
Ja, das ist die Logik dahinter:
UND - beide Bedingungen müssen zutreffen
ODER - eine der Bedingungen muss zutreffenDu kannst mit DEBUG-Ausgaben anzeigen lassen was das System erkannt hat.
Ebenfalls könntest Du auch die Abfrage auftrennen und bspw.
FALLS - Bedingung 1
SONST FALLS - Bedingung 2
prüfen wie dein Script reagiert -
@mehrwiedu sagte in Eine Frage zum und/oder Logikbaustein:
Ich gehe richtig in der Annahme, dass eine Verwendung des Logikblocks UND / ODER in einer Falls Abfrage bei dessen Verwendung zwei Zustände mit UND verknüpft abfragt, also beide Zustände die Eigenschaft aufweisen müssen, und bei ODER nur einer der beiden Zustände die Bedingung erfüllen muss. Richtig?
Das ist korrekt.
Leider sieht man in Deinem Bild nicht was Du abfragst.BBTown war mal wieder schneller. Sein Hinweis auf den "wichtigsten" Baustein in Blocky solltest Du beherzigen.
-
@BBTown sagte in Eine Frage zum und/oder Logikbaustein:
Du kannst mit DEBUG-Ausgaben anzeigen lassen was das System erkannt hat.
@rantanplan sagte in Eine Frage zum und/oder Logikbaustein:
BBTown war mal wieder schneller. Sein Hinweis auf den "wichtigsten" Baustein in Blocky solltest Du beherzigen.
Ich bin tatsächlich gerade dabei, dort wo es sinnvoll ist, überall bei mir die Debug Bausteine einzubauen.
Leider muss ich da auch immer wieder rumtesten, weil ich die Platzierung nicht immer richtig setze.Das Bild habe ich vom Handy als Screenshot. Kriege leider "remote" den Skript-Editor nicht hinreichend bedient am Handy, so dass ich das Fenster dort größer bekomme.
Abfragen tue ich zwei JavaScript.0.Datenpunkte auf true.
(falls wert von Objekt1 = true ODER falls wert von Objekt2 = true)
Die werden von einem separaten Skript gesteuert, was sehr zuverlässig funktioniert. Hier nutze ich die Device Anzeige des tr-064 Adapters um die Anwesenheit darzustellen. -
@mehrwiedu
Wie schon gesagt kann man Deine Bedingungen leider nicht sehen.
Manche sparen sich gerne den Logik Baustein "xy = ab".
Kann man auch machen, wenn man weis, welche Werte verwendet werden.Bedingungen wie: "Falls Wert1 oder Wert2" können in die Hose gehen.
Bei diesem Beispiel ist die Bedingung IMMER erfüllt. Egal ob auf "und" oder auf "oder" abgefragt.Wenn man sich nicht sicher ist, sollte man "Falls Wert1 = wahr oder Wert2 = wahr" verwenden.
-
@rantanplan sagte in Eine Frage zum und/oder Logikbaustein:
Wie schon gesagt kann man Deine Bedingungen leider nicht sehen.
Da steht nur noch = true. Mehr nicht.
Also:Falls - Wert von ObjektID "Anwesenheit1" = true oder Wert von ObjektID "Anwesenheit2" = true
Anwesenheit1 ist mein Handy im tr-064 Adapter und Anwesenheit2 ist das Handy meiner Frau.
Dein letztes Beispiel versuche ich mal nachher umzusetzen.
Bin ja immer wieder fasziniert davon, wie viele Wege es gibt, um an ein Ziel zu kommen.Mir war es eben nur komisch, dass das Skript funktioniert, wenn beide Handys eingebucht sind, also beide Bedingungen erfüllt sind, aber trotz des ODER Bausteins bei ausschließlich meinem Handy mit "Anwesenheit = false" nicht schaltet.
Und ja.... Ich sehe ein, dass ein Debug Baustein hier mehr Klarheit hätte schaffen können. Ich gelobe, diese Bausteine einzubauen.
-
@mehrwiedu sagte in Eine Frage zum und/oder Logikbaustein:
@rantanplan sagte in Eine Frage zum und/oder Logikbaustein:
Wie schon gesagt kann man Deine Bedingungen leider nicht sehen.
Da steht nur noch = true. Mehr nicht.
Also:Falls - Wert von ObjektID "Anwesenheit1" = true oder Wert von ObjektID "Anwesenheit2" = true
So ist es richtig.
Dein letztes Beispiel versuche ich mal nachher umzusetzen.
NEIN! Nicht umsetzen! Da drüber steht "können in die Hose gehen". War ein negativ Beispiel!
Und ja.... Ich sehe ein, dass ein Debug Baustein hier mehr Klarheit hätte schaffen können. Ich gelobe, diese Bausteine einzubauen.
Ja, setze vor dem "Falls....." zwei Debug Bausteine. Am Besten mit Textbaustein und sinnvollem Text.
Du kannst, zum Testen, den Falls Block auch aus dem Trigger nehmen. Dann musst Du nicht immer bis Sonnenuntergang warten.
Musst das Script dann nur immer manuell starten und stoppen.
Oder Du nimmst den Trigger "Zeitplan" und triggerst jede Minute. Zum Testen ist das ok. -
@rantanplan sagte in Eine Frage zum und/oder Logikbaustein:
NEIN! Nicht umsetzen! Da drüber steht "können in die Hose gehen". War ein negativ Beispiel!
Uuups...wäre dann beinahe ebenfalls in die Hose gegangen. Jetzt hab ich es auch richtig gelesen.
Ich mache mich heute Abend mal an die Debug Bausteine und poste hier mal das Ergebnis, wenn es nicht auf Anhieb bei mir klappt. Jetzt ohne Zugriff auf meine Instanz ergibt nachfragen keinen Sinn.
Wobei eine kurze Frage zum Verständnis. Wenn ich den Falls Block nur aus dem Trigger herausziehe, ist der Trigger dann für die eigentliche Funktion automatisch "auskommentiert"? Oder muss ich den aus dem Skript löschen?
-
@mehrwiedu Wenn der Trigger nichts beinhaltet, dann greift der ins leere .... die Triggerinformation wird nicht verarbeitet ... wie auch