Wo ist der Fehler im Java Code in Node Red (8 Zeilen)?
Was ist falsch ich finde es nicht. Meldung kommt "ReferenceError: aus is not defined (line 2, col 19)" Was ist col 19?
var Lichtstatus = flow.get ('Lichtstatus') ||0;
if (Lichtstatus ==aus) {
msg.payload = reset
}
else {
msg.payload = stay
}
return msg;
3 Antworten
"line 2, col 19" ist "Zeile 2, Spalte 19" aus deinem Code
Willst Du auf den Text "aus" prüfen, oder auf den Inhalt einer Variable mit dem Namen "aus".
Vermutlich ersteres. Dann ist
"aus"
richtig,
aus
wäre die Variable.
Funktionieren kann das nur, wenn Du irgendwo anders ein
flow.set ('Lichtstatus', "aus")
gemacht hast. Auch mit Anführungszeichen.
Du hast das selbe Problem auch mit reset und stay. Da fehlen auch die Anführungszeichen.
Das aller größte Problem sehe ich aber darin, dass Du überhaupt diesen Code schreibst. Dafür brauchst Du in node red keinen Code, nur eine switch node und zwei change nodes:
[{"id":"b75c6f2e7c9b83b8","type":"switch","z":"d18d008e.467c2","name":"Wie ist der Lichtstatus","property":"Lichtstatus","propertyType":"flow","rules":[{"t":"eq","v":"aus","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":800,"y":2460,"wires":[["42f63fde3b3ada9c"],["f355031fb33aac25"]]},{"id":"42f63fde3b3ada9c","type":"change","z":"d18d008e.467c2","name":"List ist aus","rules":[{"t":"set","p":"payload","pt":"msg","to":"reset","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1010,"y":2440,"wires":[[]]},{"id":"f355031fb33aac25","type":"change","z":"d18d008e.467c2","name":"Licht ist nicht aus","rules":[{"t":"set","p":"payload","pt":"msg","to":"stay","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1030,"y":2480,"wires":[[]]}]
Das kopieren und in Node red importieren. Das ist das was du wirklich brauchst. Ganz ohne Code.
Merksatz: Wenn Du in node red die function node verwendest, machst Du im Regelfall etwas falsch.

Ist das wirklich Java oder JavaScript? Mir sieht es eher nach JavaScript aus ...
Auf jeden Fall steht doch da das Problem. Aus wurde nicht definiert, somit funktioniert if(Lichtstatus == aus) nicht, weil es kein aus gibt
Mit:
var Lichtstatus = flow.get ('Lichtstatus') ||0;
msg.payload=Lichtstatus;
return msg;
Gibt er mir das was ich will raus also an oder aus. Andere Bausteine geben auch on oder off raus daher dachte ich das es schon geht. Ist ja auch auch eine String Message da sollte alles gehen.
Die meldung ist doch relativ eindeutig, aus ist nicht definiert.
Du überprüfst ob die variable Lichstatus gleich der variable aus ist, und du hast wohl die variable "aus" nie definiert.
Jap das war es "aus".
var Lichtstatus = flow.get ('Lichtstatus') ||0;
if (Lichtstatus =="off") {msg.payload = "reset"}
else {msg.payload = "stay"}
return msg;
Gibt dann stay oder oder reset. Vielen Dank.
Aus ist aber keine Variable sondern ich will wissen ob die Variable Lichtstatus "aus" ist. Ist"" vielleicht die Lösung?
Ja natürlich JavaScript vollkommen richtig. Warum kein aus gibt? Er soll doch vergleichen ob die Variable Lichtstatus aus oder an ist. Was ich mir in Zeile 1 hole per flow.get.