NEWS
[gelöst] Überwachung im Garten aktivieren
-
Hallo,
da es ja keine und / oder Verknüpfungen gibt habe ich folgendes getestet, leider ohne Erfolg.
Ich denke das liegt daran das in diesem Beispiel der Wert von OG2 Flur statisch auf 1 ist, das soll ja praktisch nur eine zusätzliche Abfrage sein.
Hat jemand eine Idee warum das so nicht funktioniert?
Lg Mike
-
Hallo Mike,
kannst du uns erstmal erklären, was du machen möchtest?
Deine Switch-Nodes haben nur einen Ausgang. Deswegen werden wie wohl nur dann weiterleiten, wenn die Bedingung erfüllt ist. Für den anderen Fall benötigst du eine komplementäre Prüfung oder einen sonst-Ausgang, den man im switch-Node einfach aktivieren kann.
-
Hallo,
in diesem ganz einfachen Beispiel möchte ich eine einfache UND Verknüpfung realisieren.
EG Flur und OG2 Flur Licht ein, dann OG1 Flur Licht ein.
In meinem Beispiel ist OG2 Flur Licht bereits ein, dann schalte ich EG Flur Licht ein, es sollte eigentlich dann OG1 Flur Licht schalten.
Das geht scheinbar so nicht.
-
Du hast recht, dass dies auf diese Art nicht geht, aber anders:
Code:
! [
! {
! "id": "b32d986f.6a2e88",
! "type": "ioBroker in",
! "z": "96f1d94b.d7a958",
! "name": "",
! "topic": "EG_Flurlicht.STATE",
! "payloadType": "value",
! "onlyack": true,
! "func": "all",
! "gap": "",
! "x": 287.6111145019531,
! "y": 489.55558013916016,
! "wires": [
! [
! "2bae7c00.3ff194"
! ]
! ]
! },
! {
! "id": "3546ef74.cf7e8",
! "type": "ioBroker in",
! "z": "96f1d94b.d7a958",
! "name": "",
! "topic": "OG2_Flurlicht.STATE",
! "payloadType": "value",
! "onlyack": true,
! "func": "all",
! "gap": "",
! "x": 302.6111145019531,
! "y": 624.5555648803711,
! "wires": [
! [
! "83f3a054.19ae4"
! ]
! ]
! },
! {
! "id": "6e320613.41b498",
! "type": "ioBroker get",
! "z": "96f1d94b.d7a958",
! "name": "",
! "topic": "OG2_Flurlicht.STATE",
! "attrname": "payload",
! "payloadType": "value",
! "x": 700.6109924316406,
! "y": 485.00003814697266,
! "wires": [
! [
! "d4746af9.f15508"
! ]
! ]
! },
! {
! "id": "9c9e4ee7.ea617",
! "type": "ioBroker get",
! "z": "96f1d94b.d7a958",
! "name": "",
! "topic": "EG_Flurlicht.STATE",
! "attrname": "payload",
! "payloadType": "value",
! "x": 694.6110534667969,
! "y": 626.9999771118164,
! "wires": [
! [
! "d4746af9.f15508"
! ]
! ]
! },
! {
! "id": "2bae7c00.3ff194",
! "type": "switch",
! "z": "96f1d94b.d7a958",
! "name": "",
! "property": "payload",
! "propertyType": "msg",
! "rules": [
! {
! "t": "eq",
! "v": "true",
! "vt": "str"
! }
! ],
! "checkall": "true",
! "outputs": 1,
! "x": 472.6111145019531,
! "y": 490.4444351196289,
! "wires": [
! [
! "6e320613.41b498"
! ]
! ]
! },
! {
! "id": "83f3a054.19ae4",
! "type": "switch",
! "z": "96f1d94b.d7a958",
! "name": "",
! "property": "payload",
! "propertyType": "msg",
! "rules": [
! {
! "t": "eq",
! "v": "true",
! "vt": "str"
! }
! ],
! "checkall": "true",
! "outputs": 1,
! "x": 474.6111145019531,
! "y": 626.4443740844727,
! "wires": [
! [
! "9c9e4ee7.ea617"
! ]
! ]
! },
! {
! "id": "d4746af9.f15508",
! "type": "switch",
! "z": "96f1d94b.d7a958",
! "name": "",
! "property": "payload",
! "propertyType": "msg",
! "rules": [
! {
! "t": "eq",
! "v": "true",
! "vt": "str"
! }
! ],
! "checkall": "true",
! "outputs": 1,
! "x": 929.6111145019531,
! "y": 555.4444198608398,
! "wires": [
! [
! "860b3262.18f93"
! ]
! ]
! },
! {
! "id": "860b3262.18f93",
! "type": "ioBroker out",
! "z": "96f1d94b.d7a958",
! "name": "",
! "topic": "OG1_Flurlicht.STATE",
! "ack": "false",
! "autoCreate": "false",
! "x": 1167.6111145019531,
! "y": 553.2222518920898,
! "wires": []
! }
! ]Ein Flow braucht genau einen Trigger für den Start. Dies sind in node-red immer in-Nodes.
Da die Reihenfolge, in der die Schalter gedrückt werden, nicht feststeht, muss es für beide States einen in-Node geben und jeweils der andere über einen get-Node abgerufen und geprüft werden.
-
Hallo,
ok, das kann ich ja noch nachvollziehen, hier ein Ausschnitt aus deinem Beispiel.
Das entspricht ja komplett meinem, OG2 war ja bereits an, dann entspricht es exakt Deinem Beispiel und es hätte funktionieren müssen.
Die Switch sind jeweils auf "is true", oder?
Ok, ich habe gesehen, die switch von Dir sind mit == True konfiguriert, macht das den Unterschied?
Ich habe vergeblich nach einer Anleitung für den Switch gesucht, leider nichts gefunden.
Ich möchte von den programmen auf der CCU weg, bin mir noch nicht so sicher ob ich das alles in Node-RED umsetzen kann, das meiste sind logische Verknüpfungen und vergleicher, wenn Jalousie > 80% und Tageslicht… dann Licht in dem Raum aus, halt einfach einfache Dinge, dafür ist das Tool ja schon fast zu mächtig. Java kann ich nicht, am liebsten Programmierung wie in der SPS, so mit logischen Verknüpfungen.
Lg Mike
-
Kommt drauf an, was du in den Adapter-Einstellungen eingestellt hast. Aus historischen Gründen werden von den iobroker-Nodes alle Werte als String ausgegeben. Somit funktioniert nur die Abfrage auf =="true" oder Eingabe als Zeichenkette im Switch-Node.
Wenn das Häkchen in den Einstellungen nicht gesetzt ist kannst du auch auf ===true bzw. is true abfragen.
-
Hallo,
der Haken war gesetzt, aber mit == TRUE funktioniert das.Wenn ich EG Flur schalte, kommt, schaltet OG1 Flur
jetzt wollte ich ein Vergleicher mit hinzu nehmen, wie muss den dann der Switch konfiguriert werden wenn z.B Licht Schlafen bei 30% das OG1 Flur Licht geschaltet werden soll ?
! [
! {
! "id": "f1c5ce48.33ec",
! "type": "ioBroker in",
! "z": "f1d2bf37.5edd7",
! "name": "_EG Flur Licht.STATE",
! "topic": "hm-rpc.0.MEQ0276480.1.STATE",
! "payloadType": "value",
! "onlyack": "",
! "func": "all",
! "gap": "",
! "x": 179.8298797607422,
! "y": 428.28125,
! "wires": [
! [
! "75da5cde.fd5ae4"
! ]
! ]
! },
! {
! "id": "75da5cde.fd5ae4",
! "type": "switch",
! "z": "f1d2bf37.5edd7",
! "name": "",
! "property": "payload",
! "propertyType": "msg",
! "rules": [
! {
! "t": "eq",
! "v": "true",
! "vt": "str"
! }
! ],
! "checkall": "true",
! "outputs": 1,
! "x": 375.8402557373047,
! "y": 427.72222900390625,
! "wires": [
! [
! "9505a39c.7263"
! ]
! ]
! },
! {
! "id": "9505a39c.7263",
! "type": "ioBroker get",
! "z": "f1d2bf37.5edd7",
! "name": "OG2 Flur Licht:1.STATE",
! "topic": "hm-rpc.0.MEQ0276539.1.STATE",
! "attrname": "payload",
! "payloadType": "value",
! "x": 568.8299102783203,
! "y": 428.6041856695107,
! "wires": [
! [
! "e53d2389.ec33c"
! ]
! ]
! },
! {
! "id": "e53d2389.ec33c",
! "type": "switch",
! "z": "f1d2bf37.5edd7",
! "name": "",
! "property": "payload",
! "propertyType": "msg",
! "rules": [
! {
! "t": "eq",
! "v": "true",
! "vt": "str"
! }
! ],
! "checkall": "true",
! "outputs": 1,
! "x": 765.8264312744141,
! "y": 428.72570666560443,
! "wires": [
! [
! "b33a62c1.d1b6a"
! ]
! ]
! },
! {
! "id": "b33a62c1.d1b6a",
! "type": "ioBroker out",
! "z": "f1d2bf37.5edd7",
! "name": "_OG1 Flur Licht.STATE",
! "topic": "hm-rpc.0.MEQ0276492.1.STATE",
! "ack": "false",
! "autoCreate": "false",
! "x": 967.8298797607422,
! "y": 428.8993225097656,
! "wires": []
! },
! {
! "id": "b1c3f40f.a90ce8",
! "type": "ioBroker get",
! "z": "f1d2bf37.5edd7",
! "name": "OG1 Schlafen Licht:3.LEVEL",
! "topic": "hm-rpc.0.MEQ0375275.3.LEVEL",
! "attrname": "payload",
! "payloadType": "value",
! "x": 147,
! "y": 501.9305419921875,
! "wires": [
! [
! "c352e86b.291a08"
! ]
! ]
! },
! {
! "id": "c352e86b.291a08",
! "type": "switch",
! "z": "f1d2bf37.5edd7",
! "name": "",
! "property": "payload",
! "propertyType": "flow",
! "rules": [
! {
! "t": "btwn",
! "v": "10",
! "vt": "flow",
! "v2": "40",
! "v2t": "flow"
! }
! ],
! "checkall": "true",
! "outputs": 1,
! "x": 380.8333282470703,
! "y": 503.3992919921875,
! "wires": [
! [
! "9505a39c.7263"
! ]
! ]
! }
! ]LG Mike
-
Hallo,
habe jetzt mal nachdem ich Scenes und node-red gebastelt habe etwas mit Blockly gemacht, hier habe ich leider ein Verständnis Problem, hat jemand vielleicht ein Beispiel wie ich 2 Eingänge (Zustände von Licht z.B.) mit einem "und" Glied auf einen Ausgang schalten kann?
In Blockly bekomme ich keinen state geändert, vermutlich mache ich etwas grundlegendes falsch, im Forum habe ich gesucht, so einfache Sachen werden irgendwie nicht beschrieben, wenn ich einmal den Anfang habe, danach klappt es meistens.
Lg Mike
-
habe etwas mit Blockly gemacht, hier habe ich leider ein Verständnis Problem
Lg Mike `
Mache doch bitte hierzu einen neuen Beitrag im richtigen Bereich auf.
-
Hallo,
der Haken war gesetzt, aber mit == TRUE funktioniert das.Wenn ich EG Flur schalte, kommt, schaltet OG1 Flur
jetzt wollte ich ein Vergleicher mit hinzu nehmen, wie muss den dann der Switch konfiguriert werden wenn z.B Licht Schlafen bei 30% das OG1 Flur Licht geschaltet werden soll ? `
Ich gehe mal davon aus, dass der Vergleich im Switch-Node nicht das tut, was er soll.
Es gibt in Javascript unterschiedliche Operatoren für Vergleiche. == z.B. überprüft nur den Wert, nicht aber den Datentyp. Falls möglich wird der Datentyp für den Vergleich implizit konvertiert. Mit === wird auch der Datentyp mit überprüft. Wenn einer der Werte eine Zeichenkette ist wird bei == eigentlich immer der andere auch in eine Zeichenkette konvertiert und dann diese verglichen.
Man Gibt im Switch-Node den Datentyp auch an:
Wenn du nun nicht auf Gleichheit sondern z.B. auf größer oder kleiner prüfen möchtest geht das so nicht, da dieser bei Zeichenketten nicht das gewünschte Ergebnis haben wird. Die einfachste Lösung ist, den Haken einfach weg zu machen. Dann kommt der Level-Wert direkt als Zahl und man kann dann mit Zahlen vergleichen. Ansonsten müsste man den String zuerst in einem Function-Node erst mittels Javascript in eine Zahl umwandeln.