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

Guten Morgen,

ich bräuchte mal eure Node Red Erfahrung. Ich habe seit einiger Zeit schon NR bei mir am laufen um einen Xiaomi Temperatur Sensor in homee zu bekommen, das funktioniert soweit auch.

Gestern war mir langweilig weshalb ich mal mit Influx und Grafana rumgespielt habe, die Werte vom Xiaomi bekomme ich ja über NR in Influx und dann zu Grafana.
Wie mache ich das ganze nun aber für Geräte die am homee sind?

Die exportierten Verläufe umzuwandeln und dann zu Influx ist mir etwas zu kompliziert, weshalb ich mir gesagt hab, das nur „neue“ Verläufe über NR zu Influx sollen.

Ich wollte nun mal die Geräte auslesen, also habe ich einen Inject Node mit dem String „Get:nodes“ vor den homeeAPI Node gesetzt und dahinter einen debug Node.
Schicke ich den Inject nun ab, erhalte ich aber im debug keine Ausgabe.

Mache ich hier etwas falsch?

Das sollte eigentlich get:/nodes sein.
Bist du damit weiter gekommen ?

Ich hatte in der Zwischenzeit mal den homee API Node neu hinzugefügt, das hatte schon gereicht.

Hallo zusammen,
ich bin totaler Red Node Neuling und habe in den letzten Wochen angefangen mit dem Programm zu arbeiten. Ich nutze es als iobroker-addon um teilweise meine hausautomation zu steuern.
Ich habe einige HmIP Fensterkontakte, wenn ein Fenster länger als 30 Minuten offen ist, gibt Alexa eine Meldung aus.

Jetzt möchte ich den nächsten Schritt. Ich würde gerne eine Funktion programmieren, die mir einen String ausgibt mit den Räumen, in denen ein Fenster geöffnet ist.
Die Zustände der Fenster bekomme ich per boolean aus einem iobroker objekt.
Bspw. soll Alexa mir sagen, „Die Fenster im Schlafzimmer, Badezimmer … sind noch offen“ oder eben, dass keines mehr offen ist.

Ich habe angefangen eine Funktion mit dem function Node zu schreiben, in die jeweils die Boolean meiner Fensterkontakte hineingehen. Leider bekomme ich es nicht hin, den Zustand eines Fensters auszugeben, da durch den Flankenwechsel immer nur die Schleifen aktiv werden, die durch den entsprechenden Kontakt gestartet werden. War vorher ein Fenster offen, wird der Text einfach überschrieben, weil der string vorher auf „“ gesetzt wurde und es wird nur der Raum der die Function anstößt in meinen String geschrieben, obwohl andere Fenster auf auf true stehen.

Wie löst man ein solches „Problem“??

Hoffe mein Problem ist euch klar geworden :slight_smile:
viele Grüße

Christoph

Hallo,
Ich habe Node Red über eine Rasberrymatic - Redmatic am laufen mit der Version v1.2.6
Die Ansteuerung von Geräten und die Werte von der homeeApi aufs Dashboard funktionieren einwandfrei, als ich aber letztens die ID eines Gerätes mittels GET:nodes - homeeApi - Debug auslesen wollte funktioniert das nicht mehr???
Kann es sein dass es mit der Änderung in der homeeApi zu tun hat, wie ich gelesen habe müsste man jetzt mehrere ID’s vergeben??!!
Wenn ja, wo kann ich das machen ich habe dafür keine Möglichkeit gefunden.
Danke für eure Hilfe und auf ein smartes neues Jahr!!

Hallo @Herbert,
Du musst in Deiner Homee Node die Geräte ID eingeben. Dann funktioniert es wieder. So war es jedenfalls bei mir.
image

1 „Gefällt mir“

Hallo,
hat funktioniert,
Danke!!

1 „Gefällt mir“

Hallo,

ich möchte mit node-red Aktionen an bestimmten Tagen im Monat ausführen… Leider sind meine Versuche alle gescheitert, zumindest mit den Nodes die ich gefunden habe.

Der eingebaute Timer ist nur für tägliche Intervalle zu gebrauchen
Mit BigTimer gibt einfach immer ein Output, obwohl ich bestimmte Tage erlaubt bzw. ausgeschlossen habe.
Cron+ kann ich nicht konfigurieren (da geht zumindest kein Fenster auf) :frowning:

Hat noch jemand eine Idee, wie oder womit ich das realisieren kann?

Ich möchte Aktionen jeden 1. und jeden letzten Tag im Monat und am 15. des Monats ausführen…

habe node-red 0.17.5 installiert, falls das relevant sein sollte…

Viele Grüße
JayJay

Hast das schon versucht?

Alternativ müsset doch ein HG als Auslöser und ein virtuelles Gerät im Homee gehen.

Das ist leider nicht das, was ich suche. Ich möchte nicht an einem Wochentag zu einer bestimmten Uhrzeit triggern, sondern am 1. 15. oder letzen Tag des Monats zu einer bestimmten Uhrzeit.

homee soll da eigentlich nicht mit reinspielen, aber homee würde das hinbekommen :smiley: Das wäre das 1. Mal das homee eine Logik beherrscht die node-red nicht hinbekommt :smiley:

Und wenn Du mit einer Funktion den Tag, also 1,14,31 (30) vorgibst und den mit dem aktuellen Datum vergleichst?
Dahinter dann noch einen Switch und bei true kommt der Inject durch und sonst eben nicht.
Der Inject läuft dann jeden Tag zur gleichen Zeit.

1 „Gefällt mir“

Danke @Sofasportler,

so funktioniert es. Wundere mich nur das es dafür keinen Node gibt. Na egal, Hauptsache es funktioniert am 1. :smiley: Und falls jemand einen Node kennt, immer her damit :smiley:

Viele Grüße
JayJay

1 „Gefällt mir“

Gibt es bei node-red sowas wie einen Puffer für den payload, so dass er in einer Nachricht verschickt werden kann?

Ich schreibe mehrere Werte in eine Datei, da ist das nicht so wild, bzw. sogar erwünscht. Wenn ich mir aber eine Nachricht senden lassen möchte kommen in meinem Fall 5 Nachrichten an, die auch nicht immer in der gewünschten Reihenfolge sind.

Ich dachte über eine Funktion könnte ich das lösen, aber die legt ja nach jedem payload los…

Kannst du nicht in Variablen speichern und dann später zu einem Payload wieder zusammensetzen?

Ich habe einen Puffer gefunden, der sammelt die Payloads und gibt sie dann komplett aus, aber als array.
Da meckert node-red dann

„Function tried to send a message of type string“

Wie bekomme ich einen String weiterverarbeitet?

Das über die Variablen war mir zu viel tipperei und da verliere ich schnell die übersicht, soll ja so einfach wie möglich sein :smiley:

Evtl mit dem Change node?!

Ne, das muss schon in der Funktion sein, sonst bin ich ja wieder am Anfang und habe einzelne Payloads…
Wahrscheinlich wird es wohl doch auf eine Variablenorgie hinaus laufen :frowning:

Meinst du vielleich so etwas?
node.send ({payload:{„attribute“:{„id“:1451,„value“:Aussentemp}}});
node.send ({payload:{„attribute“:{„id“:1452,„value“:Aussenfeuchte}}});
node.send ({payload:{„attribute“:{„id“:1455,„value“:Luftdruck}}});
node.send ({payload:{„attribute“:{„id“:1461,„value“:Windgeschwindigkeit}}});
node.send ({payload:{„attribute“:{„id“:1462,„value“:Himmelsrichtung}}});
node.send ({payload:{„attribute“:{„id“:1463,„value“:Windboe}}});
node.send ({payload:{„attribute“:{„id“:1467,„value“:RegenEin}}});
node.send ({payload:{„attribute“:{„id“:1468,„value“:RegenAktuell}}});
node.send ({payload:{„attribute“:{„id“:1469,„value“:RegenHeute}}});

Klar brauchst du da Variablen, nur das hast du alles in einer Funktion.

Ja so ungefähr sieht mein Payload auch aus, wie kriege ich das hin, dass alle node send als ein Payload ausgegeben werden und zwar formatiert mit Zeilenumbruch?
Ich möchte sie sowohl in eine Logdatei schreiben als auch als Nachricht bekommen. In Deinem Fall würde ich 9 einzelne Nachrichten bekommen, fasse ich das zusammen ist es nicht mehr formatiert…

Was du dir vorstellst könnte mit dem Split-Node gehen. Da kannst du ein JSON aufteilen, so dass dieser in einzelnen Nachrichten gesendet wird.