Node Red - Hilfe-/Frage-/Ideen-/Austausch - Thread

Mit der Gruppe allein ist es nicht getan. Du brauchst noch den Attribut Typ dazu ( an /aus oder auf/ab oder oder ).
Ich schau mal nach dem genauen Befehl und schreibe Ihn dir dann.
VG

Hi,

warum werden Ausgänge einer Funktion nicht gleich behandelt?

grafik

Ich habe mir eine kleine Funktion gebastelt, die an den Ausgängen die minimale und die maximale Temperatur des Tages ausgeben soll… Das funktioniert soweit, aber sobald ich die Werte als http-Request übertragen möchte klappt das nicht mehr, zumindest nicht am 2. Ausgang :frowning:

Ich wandele die Ausgabe mit dem Change-Node um:

grafik

um dann folgende http-Zeile über den http-node an mein Wandtablet zu schicken:

http://…/…={{{query}}}

Der erste Wert kommt an, der 2. nicht. Ich bin am verzweifeln…
Gebe ich die Werte von Hand im Browser ein (also statt {{{query}}} einen Wert) werden sie richtig übertragen, mein Denkfehler muss also in node-red liegen. Hat jemand eine Idee?

Viele Grüße
JayJay

Die Werte werden von der Funktion sauber gesendet ? Was sagt dein Debug dazu ?
Kannst du den flow mal komplett einstellen ? Kannst auch im slack machen wenn du es hier nicht magst !
VG

Ich denke schon, das die Ausgaben sauber sind, zumindest kann ich nicht auffälliges im Debug feststellen.

[{"id":"82b626fe.b5595","type":"inject","z":"91974b25.8fb4e","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":832,"y":4776,"wires":[["a6d4696d.dae3c8"]]},{"id":"a6d4696d.dae3c8","type":"function","z":"91974b25.8fb4e","name":"Temperatur min/max","func":"var Aussentemperaturmin = 1;\nvar Aussentemperaturmax = 2;\n\n\nreturn [{payload1: Aussentemperaturmin,payload2: Aussentemperaturmax}]; \n\n","outputs":"2","noerr":0,"x":992,"y":4776,"wires":[["2be55282.d61e9e"],["ca374567.fc829"]]},{"id":"2be55282.d61e9e","type":"change","z":"91974b25.8fb4e","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload1","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1194,"y":4760,"wires":[["58f70fe6.5ea498"]]},{"id":"ca374567.fc829","type":"change","z":"91974b25.8fb4e","name":"","rules":[{"t":"set","p":"query","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1184,"y":4792,"wires":[["2ece59e8.6ed0c6"]]},{"id":"2ece59e8.6ed0c6","type":"http request","z":"91974b25.8fb4e","name":"","method":"POST","ret":"txt","url":"http://192.168.1.59:8080/automagic/aussentempmax?aussentempmax={{{query}}}&format=json","tls":"","x":1334,"y":4792,"wires":[["cc72984f.0c0df8"]]},{"id":"58f70fe6.5ea498","type":"http request","z":"91974b25.8fb4e","name":"","method":"POST","ret":"txt","url":"http://192.168.1.59:8080/automagic/aussentempmin?aussentempmin={{{payload}}}","tls":"","x":1334,"y":4760,"wires":[["cc72984f.0c0df8"]]},{"id":"cc72984f.0c0df8","type":"debug","z":"91974b25.8fb4e","name":"","active":true,"console":false,"complete":"true","x":1586,"y":4772,"wires":[]}]

Habe die Funktion zum testen mal etwas gekürzt, da es ja nur um die Ausgabe geht. Ausgabe 1 funktioniert Ausgabe 2 funktioniert nicht. Ich habe vorhin dann aufgegeben, deswegen kann es schon sein, das in der 2. Ausgabe Blödsinn steht…

Viele Grüße
JayJay

Hey @JayJayX,

wenn du Payload 1 auf out1 und payload2 auf out2 haben möchtest dann ist das falsch formatiert.
Du hast die Ausgabe auf ein json formatiert zur Ausgabe auf den out 1 .
Das wäre die Lösung für die Ausgabe an zwei Outputs.
return [{payload: Aussentemperaturmin},{payload: Aussentemperaturmax}];

VG Micha

2 „Gefällt mir“

Danke @Micha, jetzt funktioniert es.

Ich hatte die Zeile aus Deiner Funktion “homee filtern” kopiert:

return [null,null,null,null,null,null,null,null,msg];

Was ist genau der Unterschied?

Viele Grüße
JayJay

Du hattest deine geschweifte Klammer falsch gesetzt.
Und daher konnte die Trennung mit dem Komma nicht funktioniert.
In der geschweiften Klammer ist das Objekt und die Arrays werden durch das Komma getrennt.

VG

1 „Gefällt mir“

Mein homee-node gibt mir aktuell ständig

RangeError: Maximum call stack size exceeded

aus. Woher kommt das?

Setzt du setzt du in einer Funktion einen Dimmwert?

Wenn du über das erlaubte Limit gehts ( Dimmer =100) dann kommt eine Fehlermeldung mit dem Maximum Range.
The provided value was out of range and fixed to min or max.

Aktuell arbeite ich mich noch in den homee-node ein.

Momentan gibt es einen homee-node mit einem Debug und sonst nichts. Ein anderer ruft Batteriestände ab. Was aber momentan auch nicht läuft.

Befehle an homee werden nicht gesendet.

Oder sprichst du von Dimmwerten außerhalb von node-red?

Was heißt denn ein anderer ruft die Batteriestände ab?
Wenn nur dein homee Node angelegt ist dann wundert mich die Debug Meldung !

Anhand des Debugfensters geben die Flows der Batteriestati jeweils die Fehlermeldung aus.

Ich will ja jetzt nichts sagen Aber
Das abrufen alles Nodes ist nicht nötig.
Alle Werte die sich ändern werden automatisch in einer globalen gespeichert und sind jederzeit verfügbar.

Klick doch mal auf Node bei der Fehlermeldung, dann wird dir gezeigt welches Node diese ausgelöst hat. Ich glaube nicht das es ein Fehler vom homee ist.
VG

1 „Gefällt mir“

Dh. ich muss den Inject lediglich einmal ausführen?

Die Nodes Garage Bewegungsmelder und alle drei Rauchmelder geben denselben Fehler aus.

Was kommt denn am Debug raus wenn du den einschaltest und dann den inject drückst ?
Du musst den inject garnicht betätigen , das wird alles durch das homee node automatisch erledigt.
Du kannst diese werte über die global.get abrufen.

image

Ich glaube der Change macht was falsches. Es sollte ja nur der Batteriewert ankommen.

image

image

Der Wert für den Batteriestand wird korrekt übermittelt. Kurz darauf sendet er aber den Wert des Stromverbrauchs eines anderes Gerätes. In derselben Sekunde kommt die Fehlermeldung.

Wieso wird diese Info nicht über den Change gefiltert?

Es scheint als bringt jede Reaktion des homee die Fehlermeldung.

Wie gesagt , liegt das nicht am homee.
Du solltest hier nach dem Attribut.type filtern und alle anderen Sachen verwerfen. Dann hast du nicht mehr diese Meldung.
Trotzdem solltest du die Abfrage umbauen und nicht immer mit get nodes oder Attributes alles abfragen.

VG

Der inject ist schon raus. Mir war nicht bewusst dass ich den nicht brauche.

Allerdings hört mein Wissen über node-red so langsam auf.

Wie würde eine korrekte Abfrage des Batteriestandes denn aussehen?
Bisher habe ich ja homee --> change --> ui

Hallo zusammen,

wir möchten evtl. unsere Rollläden auf Rademacher Duofern Gurtwickler umrüsten; Motoren gehen leider nicht.

Heute habe ich dann nach einer Anbindung Richtung Node-Red gesucht, welche es auch gibt. Problem (unnötige Kosten?) dabei ist, daß dies auf dem Homepilot aufsetzt, welchen wir ja eigentlich nicht brauchen.
Im Lieferumfang des Homepilot ist aber ein spezieller USB Stick für Duofern.

Jetzt meine Frage: ist es wohl möglich diesen direkt am Raspi zu nutzen und über node-red bzw. iobroker/node-red zu nutzen?

Kennt oder hat jemand noch eine andere Lösung ohne an den Gurtwicklern basteln zu müssen?

Edit: habe bei einem Lieferanten nach dem Duofern-Stick gefragt und folgende Antwort erhalten:
… auf dem Stick ist das Duofern Funkprotokoll drauf. Grundsätzlich kann man den Stick auch für andere 3-Anbieter Geräte verwenden und diese um das Duofern Funksystem zu erweitern.