NodeRed Grundlagen And Or logische Vergleiche

Поделиться
HTML-код
  • Опубликовано: 12 сен 2024
  • Hier mal ein kleines Video, das die einfachen And Or sowie logische Vergleiche erklären soll.
    Verwendete Paletten:
    node-red-contrib-boolean-logic
    node-red-contrib-boolean-logic-ultimate

Комментарии • 20

  • @Jojo-gf5gd
    @Jojo-gf5gd 3 года назад +2

    NodeRed arbeitet eventbasiert.
    Das heißt, man kann den Zustand des Schalters nicht abfragen, sondern bekommt nur dann mitgeteilt welchen Zustand der Schalter hat, wenn er betätigt wird.
    Will man den Zustand von zwei Schaltern vergleichen, z.B. für die AND-Funktion, dann hat man leider das Problem, dass man nur den Zustand von dem Schalter hat, der gerade betätigt wurde. Deshalb muss man, wenn ein Schalter betätigt wird und man den Zustand in Zusammenhang mit anderen Zuständen von anderen Schaltern verwenden möchte, sich den Zustand merken.
    Innerhalb eines Flows kann man das mit der Funktion Flow.set("name",value), also z.B. mit Flow.set("Schalter1", msg.payload);
    Anschließend holt man sich mit Flow.get("name") den gespeicherten Wert.
    Im Fall einer Lampe die durch zwei Schalter gesteuert werden soll, die mit AND verknüpft sein sollen, sieht das dann wie folgt aus:
    Flow.set(msg.topic,msg.payload);
    let s1 = Flow.get("Schalter1");
    let s2 = Flow.get("Schalter2");
    msg.payload = s1 && s2;
    return msg;
    Dieses Skript kommt in einen function-Knoten. Diesen verbindet man auf der Eingangsseite mit den Schaltern und auf der Ausgangsseite mit der Lampe.
    Zur Erklärung:
    In msg.Topic steht in der Regel der Name des auslösenden Knotens, also im Beispiel "Schalter1" oder "Schalter2". Wird jetzt also Schalter1 betätigt löst der entsprechende Knoten die Verarbeitunug aus und ruft den function-Knoten mit dem Skript auf. Die Variable msg enthält den Topic "Schalter1" und je nach Zustand z.B. den payload 1.
    Mit Flow.set wird der Wert in den Datenspeicher des Flows unter dem Namen Schalter1 abgelegt.
    Anschließend wird der Wert sofort mit Flow.get in die Variable s1 gelesen. Danach wird versucht der Zustand von Schalter2 in die Variable s2 zu lesen. Da der Schalter2 aber noch nicht betätigt wurde, enthält der Speicher des Flows keine Wert.
    Der anschließende Vergleich (AND-Funktion) liefert deshalb false oder 0. Payload wird also mit false oder 0 überschrieben und die Lampe bleibt aus.
    Wird nun auch Schalter2 eingeschaltet wird wieder ein Event ausgelöst. Diesmal vom Knoten für den Schalter2. Deshalb steht im Topic jetzt "Schalter2". Beim Aufruf der Funktion wird also als erstes der Wert von payload(entsprechen der Schalterstellung vermutlich 1) unter dem Namen Schalter2 in Speicher des Flows abgelegt.
    Wenn jetzt anschließend wieder die Variablen s1 und s2 aus dem Speicher des Flows gelesen werden, enthält s1 den Zustand von Schalter1 und s2 den Zustand von Schalter2. Somit kann jetzt ein sinnvoller Vergleich zwischen den Werten durchgeführt werden. Mit der AND-Verknüpfung (s1 && s2) ergibt sich für payload true, wenn beide Schalter eingeschaltet sind.
    Sobald einer der Schalter erneut betätigt wird, überschreibt der neue Wert den alten im Speicher des Flows und anschließend wird wieder eine korrekte AND-Funktion auf die beiden Zustände ausgeführt.
    Das ganze lässt sich auch mit OR ( || ) machen und mit mehr als nur zwei Schaltern.
    Auch wenn man für eine Regelung einen Sollwert vorgeben möchte und mit dem Istwertvergleichen möchte, kann man das auf diese Weise lösen.
    Es gibt sicher noch andere Lösungen. Mir kam im Video zu kurz, dass bei NodeRed keine zyklische Verarbeitung stattfindet bei der man den kompletten Satz der Zustände verfügbar hat, sondern eine durch Ereignisse ausgelöste Verarbeitung stattfindet.

  • @sebastianpreu3938
    @sebastianpreu3938 4 месяца назад +1

    Ich komme aus der SPS-Welt und finde das einarbeiten in NodeRed sehr zäh und kontraintuitiv. Nichts erscheint logisch oder gewohnt. Auch das Wissen aus dem Arduino Bereich ist nicht hilfreich. Leider muss ich da wohl durch zwecks Heimautomation.

  • @maxmaier3372
    @maxmaier3372 3 года назад +1

    Danke für dieses Video! Frage dazu: Die Statusmeldung des Logic Node bringt in Deinem Video immer "false". Das verwirrt mich irgendwie ziemlich. Ich hätte da "true" erwartet ??!

    • @TK-SmartHome
      @TK-SmartHome  3 года назад +1

      Das Liegt daran, das dieses Node versucht die ankommenden Tonics zu interpretieren. Wenn also Werte wie 1 oder 0 oder false und true empfangen werden. Gibt das Node ein True aus. Können die Werte nicht interpretiert werden, wie in meinem Beispiel on und off, dann wird false ausgegeben. In jedem Fall wird nur ein Wert ausgegeben, wenn die entsprechende Anzahl der Signale vorliegt.
      Das Node ist aber gut mit Beispielen Dokumentiert, ich kann dir nur empfehlen das mal zu testen.

    • @maxmaier3372
      @maxmaier3372 3 года назад

      Danke dir!!

  • @scheidi9423
    @scheidi9423 3 года назад +2

    hallo, das Video ist zwar schon etwas älter, aber ich habs mir grad erst angeschaut. Meiner Meinung nach ist die UND Verknüpfung nicht ganz korrekt gelöst. Denn dann müsste sobald einer von beiden Schaltern auf OFF geht die LED auch wieder aus gehen. Das tut sie aber erst, wenn beide Schalter OFF sind. Wie kann man das lösen? Gruss

    • @script0r1309
      @script0r1309 3 года назад +2

      Korrekt. Der Meinung bin ich auch. Die Logic Verknüpfungen machen absolut keinen Sinn. 1+2 = true, alles andere muss false sein und die led ausschalten

  • @maxsupergiovane
    @maxsupergiovane 3 года назад +1

    node-red-contrib-boolean-logic-ultimate is the best 😉

  • @MB-cz1go
    @MB-cz1go 2 года назад +1

    Also ich habe das mit dem UND mehrfach probiert aber es klappt einfach nicht.
    Dann Erklärungen gehen hier nur auf das ODER. Schade

    • @TK-SmartHome
      @TK-SmartHome  2 года назад +1

      Ich mache in den nächsten Tagen ein Video zu diesem Thema, weil die Frage immer wieder kommt.

  • @ralfmustermann181
    @ralfmustermann181 Год назад +1

    Das was du zeigst ist Bullshit. Du zeigst wenn schalter1 gedrückt ist und schalter1 on ist. So etwas ist Quatsch.

  • @yakup5194
    @yakup5194 3 года назад

    Danke dir Großer!

  • @salzwurm
    @salzwurm 3 года назад +2

    Echt übel, wenn Laien Videos machen, der Typ hat keinen Plan von Logik!

    • @TK-SmartHome
      @TK-SmartHome  3 года назад +1

      Sorry wenn ich deinen Ansprüchen nicht gerecht werden konnte. Für konstruktive Hinweise bin ich immer dankbar, aber nur Kritisieren ist bei einem Video von Anwender für Anwender nicht ganz der richtige Zug.

    • @andreasschindler6077
      @andreasschindler6077 Год назад

      Mach ein besseres Video, ich würde es mir anschauen

    • @autobahnsage5187
      @autobahnsage5187 8 месяцев назад

      Ich kann es nur bestätigen