NEWS
NODE-RED Werte von iobroker nur connected
-
Hallo,
habe eine frage zu node-red in verbindung mit inputs von iobroker.
wenn ich den raspberry neustarte kommt bei den inputs von iobroker nur "connected" als status.
Im iobroker selbst steht der wert aber zb mit true oder false bzw. 0 oder 1.Sobald ich einmal auf der vis den wert ändere ist es auch wieder in node-red hinterlegt.
Kann mir bitte wer sagen was ich falsch mache?
-
Hi, das ist normal, nach Neustart von Node Red, oder wenn du Input Node oder Get Node oder Output Node deploys, wird dir erst nach Änderung bzw. Aktualisierung des Wertes der Status angezeigt. Bis dahin steht nur connected drunter.
-
Falls du beim Start den Status brauchst, um bestimmte Sachen zu steuern oder zu visualisieren. Kannst du das mit Started und Get Nodes machen. Du packst einfach ne Get Node hinter die Input Node, wählst das selbe Objekt in der Get Node wie in der Input Node aus und ziehst den Started auch auf die Get Node. Dann wird beim Start die Get Node getriggert und du hast deinen aktuellen Zustand.
Hier mal ein Beispiel, den Started kannst du an alle Get Node ziehen die du beim Start auslesen willst, brauchst also nur einmal die Started Node.[ { "id": "3bbfdf77.bec54", "type": "ioBroker in", "z": "523fbe1.477244", "name": "Computer", "topic": "MeineSchaltler.0.Computer", "payloadType": "value", "onlyack": "", "func": "rbe", "gap": "", "x": 120, "y": 440, "wires": [ [ "4117d461.26053c" ] ] }, { "id": "4117d461.26053c", "type": "ioBroker get", "z": "523fbe1.477244", "name": "GetState", "topic": "MeineSchaltler.0.Computer", "attrname": "payload", "payloadType": "value", "x": 340, "y": 440, "wires": [ [ "41481478.7efc2c" ] ] }, { "id": "41481478.7efc2c", "type": "ui_switch", "z": "523fbe1.477244", "name": "", "label": "Computer", "tooltip": "", "group": "8fb88aa7.8a20d", "order": 10, "width": 0, "height": 0, "passthru": false, "decouple": "true", "topic": "", "style": "", "onvalue": "true", "onvalueType": "bool", "onicon": "", "oncolor": "", "offvalue": "false", "offvalueType": "bool", "officon": "", "offcolor": "", "x": 540, "y": 440, "wires": [ [ "60b240d.a3bd1c" ] ] }, { "id": "60b240d.a3bd1c", "type": "ioBroker out", "z": "523fbe1.477244", "name": "Computer", "topic": "MeineSchaltler.0.Computer", "ack": "false", "autoCreate": "false", "x": 740, "y": 440, "wires": [] }, { "id": "86b20784.5b76a8", "type": "inject", "z": "523fbe1.477244", "name": "", "topic": "", "payload": "Started!", "payloadType": "str", "repeat": "", "crontab": "", "once": true, "x": 160, "y": 540, "wires": [ [ "4117d461.26053c", "5ce8d55b.96270c" ] ] }, { "id": "ef7b1993.251c38", "type": "ioBroker in", "z": "523fbe1.477244", "name": "Flur", "topic": "deconz.0.Lights.5.on", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 110, "y": 380, "wires": [ [ "5ce8d55b.96270c" ] ] }, { "id": "5ce8d55b.96270c", "type": "ioBroker get", "z": "523fbe1.477244", "name": "Get State", "topic": "deconz.0.Lights.5.on", "attrname": "payload", "payloadType": "value", "x": 280, "y": 380, "wires": [ [ "a14cc626.1d5998" ] ] }, { "id": "a14cc626.1d5998", "type": "ui_switch", "z": "523fbe1.477244", "name": "", "label": "Flur", "tooltip": "", "group": "8fb88aa7.8a20d", "order": 8, "width": 0, "height": 0, "passthru": false, "decouple": "true", "topic": "", "style": "", "onvalue": "true", "onvalueType": "bool", "onicon": "", "oncolor": "", "offvalue": "false", "offvalueType": "bool", "officon": "", "offcolor": "", "x": 510, "y": 380, "wires": [ [ "9aa400ce.66369" ] ] }, { "id": "9aa400ce.66369", "type": "ioBroker out", "z": "523fbe1.477244", "name": "Flur", "topic": "deconz.0.Lights.5.on", "ack": "false", "autoCreate": "false", "x": 670, "y": 380, "wires": [] }, { "id": "8fb88aa7.8a20d", "type": "ui_group", "z": "", "name": "Group 1", "tab": "acb2996f.76a818", "order": 1, "disp": false, "width": "6", "collapse": false }, { "id": "acb2996f.76a818", "type": "ui_tab", "z": "", "name": "Geräte Drinnen", "icon": "dashboard", "order": 2, "disabled": false, "hidden": false } ]
-
Hallo,
danke für die Infos. Läuft einwandfrei danke.
So nun habe ich aber noch eine Frage, bekomme einen vergleich einfach nicht zurecht.
will in node eigentlich 2 werte vergleichen und dann eben eine variable mit true oder false erzeugen.
Doch es will einfach nicht.[{"id":"b285ac47.cc5ec","type":"ioBroker in","z":"2dc8f5a8.ffdc32","name":"","topic":"0_userdata.0.Temp_2","payloadType":"value","onlyack":"","func":"all","gap":"","fireOnStart":"false","x":180,"y":220,"wires":[["53e94042.fedf","772dd17d.83bb7"]]},{"id":"dfc58c2f.b0c6b8","type":"ioBroker in","z":"2dc8f5a8.ffdc32","name":"","topic":"0_userdata.0.Temp_1","payloadType":"value","onlyack":"","func":"all","gap":"","fireOnStart":"false","x":160,"y":140,"wires":[["cdc51754.e8c92","49905b72.d2f6e4"]]},{"id":"49905b72.d2f6e4","type":"function","z":"2dc8f5a8.ffdc32","name":"Flow Set","func":"var newMsg = { payload: msg.payload};\nflow.set('temp_1',newMsg);\nreturn newMsg;","outputs":1,"noerr":0,"x":540,"y":160,"wires":[["c1cdf4be.a9fc78"]]},{"id":"53e94042.fedf","type":"function","z":"2dc8f5a8.ffdc32","name":"Flow Set","func":"var newMsg = { payload: msg.payload};\nflow.set('temp_2',newMsg);\nreturn newMsg;","outputs":1,"noerr":0,"x":540,"y":260,"wires":[["c1cdf4be.a9fc78"]]},{"id":"c1cdf4be.a9fc78","type":"function","z":"2dc8f5a8.ffdc32","name":"test","func":"var ist_temp_1= flow.get('temp_1');\nvar ist_temp_2 = flow.get('temp_2');\n\n\n if(ist_temp_1 == ist_temp_2 ) {\n msg.payload = 1;\n } \n\nelse {\n msg.payload = 0;\n}\n\treturn msg;","outputs":1,"noerr":0,"x":730,"y":220,"wires":[["96c736ff.1b3b38"]]},{"id":"cdc51754.e8c92","type":"debug","z":"2dc8f5a8.ffdc32","name":"Temp_1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":560,"y":80,"wires":[]},{"id":"772dd17d.83bb7","type":"debug","z":"2dc8f5a8.ffdc32","name":"Temp_2","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":520,"y":360,"wires":[]},{"id":"96c736ff.1b3b38","type":"debug","z":"2dc8f5a8.ffdc32","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":970,"y":220,"wires":[]}]
-
@mike1976
Hi, das Problem, wird sein du du 2 Input Nodes verwendest. Aus denen kommt ja immer nur ne Nachricht wenn sie aktualisiert, bzw. geändert wurden. Da die beiden Datenpunkte nie gleichzeitig aktualisiert werden, kriegst du immer nur Nachricht von einer Input Node, und die zweite fehlt dir zum Vergleich.
Du nimmst eine von beiden als Input Node und hängst dahinter ne Get Node, mit der anderen Temperatur, wenn die Temperatur jetzt aktualisiert wird, geht die Nsachricht auch durch die Get Node und du hast beide Werte. Bei der Input Node hast du immer msg.payload, bei der Get Node musst du dann bei Atribut nen anderen Namen als Payload nehmen, sonst wird die msg.payload überschrieben. Ich habe hier im Beispiel temp2 genommen. Dann hast du msg.payload (von temp1) und msg.temp2 (von temp2), die du vergleichen kannst. Die eine Debug Node habe ich auf volles Nachrichtenobjekt umgestellt, dann siehst du nicht nur die msg.payload, sonder alles Messenges. Ich weiß jetzt nicht ob das die super Lösung ist, aber es klappt bei mir.[ { "id": "18bd5a50.a45126", "type": "ioBroker in", "z": "523fbe1.477244", "name": "", "topic": "0_userdata.0.Temp_1", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 160, "y": 420, "wires": [ [ "eb11a80b.91dee8" ] ] }, { "id": "aff9f76e.95eb18", "type": "function", "z": "523fbe1.477244", "name": "test", "func": "var ist_temp_1 = msg.payload;\nvar ist_temp_2 = msg.temp2;\n\n\n if(ist_temp_1 == ist_temp_2 ) {\n msg.payload = 1;\n } \n\nelse {\n msg.payload = 0;\n}\n\treturn msg;", "outputs": 1, "noerr": 0, "x": 690, "y": 480, "wires": [ [ "d71adff9.eda3d" ] ] }, { "id": "7523be45.2f15b", "type": "debug", "z": "523fbe1.477244", "name": "Temp_1+2", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "x": 770, "y": 320, "wires": [] }, { "id": "d71adff9.eda3d", "type": "debug", "z": "523fbe1.477244", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "x": 930, "y": 480, "wires": [] }, { "id": "eb11a80b.91dee8", "type": "ioBroker get", "z": "523fbe1.477244", "name": "", "topic": "0_userdata.0.Temp_2", "attrname": "temp2", "payloadType": "value", "x": 450, "y": 440, "wires": [ [ "aff9f76e.95eb18", "7523be45.2f15b" ] ] } ]
-
@mike1976
Du brauchst übrigens in deiner Funktion Node "Test", die du zum Vergleichen verwendest nicht unbedingt erst Variablen erstellen, du kann auch direkt mit den msg. arbeiten.if(msg.payload == msg.temp2) { msg.payload = 1; } else { msg.payload = 0; } return msg;
-
hi,
okay danke so gehts, das heist aber auch ich muss das auch im wechsel für beide machen.
da sonst ja nur eine abfrage ist wenn sich temp1 ändert.Habe mir das fast gedacht, hatte die get leider gar nicht beachtet
mein fehler.
Herzliches Dankeschön
[ { "id": "a6e92dc6.28b5a8", "type": "ioBroker in", "z": "2dc8f5a8.ffdc32", "name": "", "topic": "0_userdata.0.Temp_1", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 240, "y": 520, "wires": [ [ "8feea21b.699cb8" ] ] }, { "id": "6a1aadd1.3be26c", "type": "function", "z": "2dc8f5a8.ffdc32", "name": "test", "func": "if(msg.payload == msg.temp2) {\n msg.payload = 1;\n } \n\nelse {\n msg.payload = 0;\n}\nreturn msg;\n", "outputs": 1, "noerr": 0, "x": 770, "y": 580, "wires": [ [ "c2b826e3.d4a73" ] ] }, { "id": "c2b826e3.d4a73", "type": "debug", "z": "2dc8f5a8.ffdc32", "name": "ergebnis", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "x": 1000, "y": 580, "wires": [] }, { "id": "8feea21b.699cb8", "type": "ioBroker get", "z": "2dc8f5a8.ffdc32", "name": "", "topic": "0_userdata.0.Temp_2", "attrname": "temp2", "payloadType": "value", "x": 530, "y": 540, "wires": [ [ "6a1aadd1.3be26c" ] ] }, { "id": "cfcd42af.738b1", "type": "ioBroker in", "z": "2dc8f5a8.ffdc32", "name": "", "topic": "0_userdata.0.Temp_2", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 220, "y": 620, "wires": [ [ "c349e466.9e0608" ] ] }, { "id": "c349e466.9e0608", "type": "ioBroker get", "z": "2dc8f5a8.ffdc32", "name": "", "topic": "0_userdata.0.Temp_1", "attrname": "temp2", "payloadType": "value", "x": 510, "y": 640, "wires": [ [ "6a1aadd1.3be26c" ] ] } ]
-
@mike1976
Hi, oder 2 get Node, im ersten Atribut auf tem1 im zweiten auf temp2 und dann msg.tem1 und msg.temp2 vergleichen. Und beide Input auf die Get Nodes.[ { "id": "c962ba01.a791e8", "type": "ioBroker in", "z": "523fbe1.477244", "name": "", "topic": "0_userdata.0.Temp_1", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 160, "y": 380, "wires": [ [ "2770d4dd.08c1cc" ] ] }, { "id": "486d7a56.2eac24", "type": "function", "z": "523fbe1.477244", "name": "test", "func": "if(msg.temp1 == msg.temp2) {\n msg.payload = 1;\n } \n\nelse {\n msg.payload = 0;\n}\nreturn msg;\n", "outputs": 1, "noerr": 0, "x": 770, "y": 440, "wires": [ [ "3d08a978.d14ac6" ] ] }, { "id": "3d08a978.d14ac6", "type": "debug", "z": "523fbe1.477244", "name": "ergebnis", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "x": 920, "y": 440, "wires": [] }, { "id": "860b7de7.571d6", "type": "ioBroker get", "z": "523fbe1.477244", "name": "", "topic": "0_userdata.0.Temp_2", "attrname": "temp2", "payloadType": "value", "x": 600, "y": 420, "wires": [ [ "486d7a56.2eac24" ] ] }, { "id": "cf6394e8.f0d808", "type": "ioBroker in", "z": "523fbe1.477244", "name": "", "topic": "0_userdata.0.Temp_2", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 140, "y": 480, "wires": [ [ "2770d4dd.08c1cc" ] ] }, { "id": "2770d4dd.08c1cc", "type": "ioBroker get", "z": "523fbe1.477244", "name": "", "topic": "0_userdata.0.Temp_1", "attrname": "temp1", "payloadType": "value", "x": 360, "y": 420, "wires": [ [ "860b7de7.571d6" ] ] } ]