NEWS
Boolean Logic Problem
-
Guten Abend zusammen,
ich habe ein Verständnisfrage zu Boolean Ultimate Logic, dazu folgende Sache:
- Abfrage einer KNX GA (funktioniert)
- Abfrage eines Zeitinjects immer wenn ich bei dem Zeitinjects den Button betätige, dass er das True Signal sendet (beim Debug kommt korrekt true an) bringt mir die Boolean Logic "recived invalid topic" leider werde ich nicht schlau daraus warum das kommt, es wird doch lediglich ein msg.bolean True vom Timeinjects gesendet.
Hat einer das Problem schon gehabt?
Danke euch.
Saranger
-
wie sieht es mit dieser Checkbox aus? Die solltest du deaktivieren.
Und ich denke es wäre hilfreicher wenn du deinen Flow und die Debugausgaben hier einstellen würdest, denn ohne ist helfen wohl eher Glaskugel schauen.
-
@saranger sagte in Boolean Logic Problem:
Boolean Ultimate Logic,
Ich habe es schon mal an anderer Stelle gesagt, dass ich diese Node überflüssig finde.
Wer sich die Beschreibung dieser Node anschaut:
der sieht, dass diese Node nichts weiter macht, als ein Objekt aus den topics mit den "Boolean" payloads erstellt .
Mit einer JOIN Node bin ich dann aber noch flexibler, weil ich entscheiden kann, ob wirklich alle topics (Inputs geliefert wurden oder nicht).Wahrscheinlich sendest Du bei Deiner Inject Node keinen Topic mit - dann kann das Teil nicht funktionieren.
-
Guten Morgen,
anbei mal der Flow, die Cechkbox ist deaktiviert.
@mickym wie würde denn eine und Verknüpfung mit dem Join In aussehen, ich hab immer mal nach und oder Verknüpfung gegoogelt und lande immer wieder bei dem boolean.
-
@saranger Hi, wie @mickym schon schrieb, musst du bei der Injekt Node ein Topic mitgeben. Wenn du auf mehrere verschiedene Nachrichten reagieren willst, muss die Logik auch wissen das es verschiedene Nachrichten sind, jede Nachricht braucht dann ein eigenes Topic. Auch wenn du z.B. die Join verwendest, braucht jede Nachricht ihr eigenes Topic. Bei den In Nodes und get Nodes wird das automatisch aus dem ausgewählten Topic (Datenpunkt) erstellt / mitgegeben. Bei den Injekt Nodes kann / muss man das selbst eingeben. Dabei ist es eigentlich völlig egal was man da eingibt, Zahlen, Buchstaben.
Das Topic kann man im Prinzip als Namen oder Absender der Nachricht verstehen.
-
@saranger Wie gesagt bei Deiner Inject Node fehlt das Topic das braucht das Teil immer.
So ich hab Dir mal für grundlegendes UND und ODER die Lösung mit Hausmitteln hier:
Die ersten 3 Ausgaben ist ein logisches UND, die zweiten 3 Ausgaben ein logisches ODER.
Das was Deine Boolesche Node macht habe ich mal gruppiert und entsprechend markiert.XOR oder NOT sind ja alles nur abgeleitete Nodes.
Hier mal UND und ODER als Switch oder Change Nodes:
Ich habe mir diese 4 Nodes einfach in meine lokale Bibliotek kopiert und somit immer zur Verfügung. Deswegen braucht man die anderen Nodes in meinen Augen nicht.
Der Vorteil mit JOIN ist halt, dass man hier halt selbst darauf reagieren kann, ob alle topics vorhanden sein müssen oder nicht.Wie man sowas flexibel zur Überwachung einsetzen kann, auch ohne die Anzahl der topics zu kennen, habe ich hier schon mal beschrieben:
https://forum.iobroker.net/topic/44765/gelöst-überwachung-eingeschaltete-verbraucher/6?_=1641722216059OK - kenn die Boolschen Nodes nicht genau, was die für eine Nachricht aus Ihren Ausgängen rausschickt, da müsstest Du ggf. halt noch eine Change Node hinterher schicken. Die Originalnachrichten sind ja in dem Objekt der einzelnen Topics enthalten.
Auch hier noch mal so ein paar Beispiele von logischen Verknüpfungen mit Switch-Nodes und JSONATA:
JSONATA Switches.jsonAch ausführliches zu diesen Nodes haben @frankyboy73 und ich erst kürzlich in diesem Thread diskutiert: https://forum.iobroker.net/topic/49835/vergleich-von-zwei-eingangswerten-um-wert-festzulegen/11
-
vielen Dank für die Beispiele, nach dem ich das Topic eingefügt hatte ging auch die Lösung mit dem Boolean. Ich habe aber auch die aufgeführten Beispiele von Dir getestet um es zu verstehen. Das ging am Anfang nicht, erst nach dem ich nach dem And noch jeweils eine Changenode für True und false eingefügt habe. Ich denke das kann man auch anders machen aber so würde es gehen :-). Das Inject schickt jeweils unterschiedliche Zeiten, als Beispiel 22:00 uhr soll es auf True gehen und 05:00 Uhr auf false zusätzlich kommt dann die KNX Adresse der Wetterstation für die Tag/Nacht Umschaltung.
-
@saranger Ja falls es darum geht ,dass nur ein true oder false weitergegeben wird, gab es aus dem 4er Pack,das ich Dir gepostet habe, auch eine Change Node.
Mir ging es ja auch nur darum zu zeigen, dass man das auch mit Standardmitteln erreichen kann und nur für die logische Verknüpfung keine extra Node braucht - aber sind ja noch mehrere Funktionen dabei - vielleicht gibt es ja auch was, was nicht so einfach mit Boardmitteln zu realisieren ist.In die Nodes habe ich ja auch eine kleine Hilfe verpackt:
-
ah die verinfachte Variante hatte ich irgendwie übersehen, die ist dann genau was ich für den Fall brauche :-). Das mit der Hilfe ist auch ein guter Tip gewesen.
Danke für die Hilfe
Viele Grüße
-
@mickym Hi, seit dem Node Red Adapter Update auf Version 3.2.0 bzw. Version größer 3, funktionieren bei mir die UND und ODER mit der JSONata Eigenschaft nicht mehr. Bekomme eine Fehlermeldung. Geht dir das auch so? Bzw. hast du da schon eine Lösung gefunden. JSONata ist nicht so mein Fachgebiet.
Edit:
Hi, hatte noch ne alte Version der Switch bzw. der Change Nodes. Habe den Code aus diesem Post noch mal neu Importiert und damit funktioniert es jetzt. (Wenn man es richtig eingebunden hat)