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

Hallo zusammen,
ich habe mit node-red-node-openweathermap zwei virtuelle Netatmo Wetterstationen gefüttert.
Für die aktuellen Werte klappt das ganz gut und ist etwas aktueller und genauer, als die Wetter-Kachel in homee - liegt vermutlich am kürzeren Update-Intervall.

An der Wettervorhersage der nächsten Tage knobele ich allerdings noch etwas und stoße an meine Grenzen.

Der Node openweathermap-in für die 5-Tages-Vorschau liefert die Daten in Arrays von 0-39. Der Zeitabstand dazwischen liegt bei 3 Stunden.

Mit einem function-node kann ich je 10 Pakete so selektieren:

var inmsg = {payload: msg.payload};
var outmsg = [];
for (let i = 0; i <= 9; i++)
{
  outmsg.push(inmsg.payload[i].main.temp_min);
}
return {payload: outmsg};

Ein calculator-node wirft aus dem array das Minimum in ein Template. Das Maximum hole ich genauso und füge es mit join zusammen. Den string übergebe ich dann an das Gerät:

let MinTemp = msg.payload[0].minvalue === undefined ? "": msg.payload[0].minvalue
let MaxTemp = msg.payload[1].maxvalue === undefined ? "": msg.payload[1].maxvalue
var MinMaxStr = `${MaxTemp} °C / ${MinTemp} °C`;
node.send ({payload:{"attribute":{"id":4014,"data":MinMaxStr}}});

Doch jetzt kommt mein Knackpunkt:
Wie kann ich die arrays nach Datum filtern, also „Rest von heute“ (könnte ich auch weglassen, habe ich ja schon als aktuelle Ist-Werte), „morgen“, „übermorgen“, usw…?
Daten liegen als * dt - epoch timestamp und als * dt_text - 2023-03-24 21:00:00 vor.

Der ganze Flow hier:
flows.pdf (36,8 KB)

Wer hat eine Idee?

1 „Gefällt mir“

Hey @Micha oder auch jede(r) Andere der’s weiß.

Gibt es mit node-red die Möglichkeit die Core-Version von homee auszulesen und abzuspeichern?

Hintergrund: Ich lasse mir nach jedem Neustart von homee einen Eintrag in mein Logfile schreiben für die Uptime. Das würde ich nun gerne noch um die Versionsnummer erweitern. Das läuft aber schon so lange, ich habe keinen Plan mehr wie ich das gemacht hab :smiley:

Ja klar geht das. Die Core Version sollte im Settings Enthalten sein.
Edit Abruf mit get:settings und das Ergebnis kommt dann auf msg.payload.settings.version

1 „Gefällt mir“

Am besten ist es die settings in die globale von homee zu speichern. Dann ist diese immer verfügbar. Bei Änderungen einfach auch gleich neu speichern.
Das API Node gibt dir ja alles schön aus.

1 „Gefällt mir“

Das muss ich dann aber immer regelmäßig anfordern über Get:settings oder gibt’s da einen „automatischen“ Weg?
Soll ja automatisch im Log eingetragen werden und die Kleine nicht überlasten

Ich habe in NR über mqtt einen Wasserzähler eingebunden und diesen als virtuellen Wasserzähler in Homee eingebunden.

Dazu hier der Beitrag Opensprinkler wasseruhr mqtt homee

Nun meine Frage, wie ich die Daten in NodeRed unter Homeassistant die sensor entity bekomme.
image

Unter „opensprinkler/sensor/flow“ wirft er am Ende der Laufzeit die Gesamt Wassermenge aus. Bei 10 Litern z.B.:
{„count“:10,„volume“:10.00}

Kann mir jemand helfen, wie ich die Daten in den HA Sensor bekomme?

Hi, spiele eben wieder mit dem Popp Z-Rain als vhih gerät rum…woran ist eigentlich festgemacht welche Werte eines vhih Gerätes als Messwert oder als Gerätestatus angezeigt werden?

VG
Andi :cowboy_hat_face:

Schau doch mal in den flow von der Ecowitt-Anbindung rein. Da ist auch ein Regensensor dabei.

2 „Gefällt mir“

Hallo, ich benutze Domoticz und habe auch node red am laufen. Seit einiger Zeit probiere ich mir auch die Verbrauchsdaten bzw. das was ich nicht verbrauche auszurechnen, leider ohne Erfolg und mit einem hohen Zeitaufwand. Meine Frage gibt es diesen Flow noch im slack und wenn ja könnte ich mir den dort auch ansehen?

Das ist ja ewig her ( 2019 ) wo ich das gemacht habe.
Was genau willst du machen und wie kommen die Werte in Node Red an?

Ich habe einen ir Reader in meinem Schaltschrank an einen RPI angeschlossen. Über node-red-contrib-smartmeter hole ich mir unter anderen den aktuellen Stromverbrauch in Watt, geht dieser Wert ins Minus freut sich der Versorger. Aktuell bekomme ich über node red die Prozente in Domoticz angezeigt, leider hat das log in Domoticz nur einen 5 minütigen Intervall. Ich würde eben gerne aufgrund der Anzahl an negativen Eingängen und deren Summe, den verschenkten Strom berechnen. Auf dem Papier einfach, aber meine Programmierkenntnisse gehen gegen Null. Der Beitrag hat sich so gelesen als ob es meine Bedürfnisse erfüllen könnte.

Hallo,

die Frage ist vielleicht etwas doof, aber ich komm es beim besten Willen nicht hin: Ich hab node-red mit im ioBroker und das wiederum auf einem Raspberry Pi4 laufen, bin aber totaler Anfänger. Ich weiß mittlerweile, wie ich Werte von Geräten aus dem ioBroker (ein tuya Plug) in den virtuellen Homee bekomme und darüber auch in den richtigen Homee und auch zurück. Aber ich bekomme keine Werte von im realen Homee angelernten Geräten (z. B. Shelly 3EM oder Fritz!DECT 210) in den virtuellen Homee, damit ich daraus einen virtuellen Energiemanager bauen kann. Die notwendigen IDs kenne ich (dank GET:/node), aber wsl. fehlt mir die richtige Syntax (und mit welchem Node ich das abfrage – Funktion? Inject?)… Kann mir da jemand helfen? Vielen Dank im Voraus.

LG
Chris

Guten Morgen @Chris0Cross,

Die Werte die Über das API Node kommen rufst du nicht ab.
Diese werden dir bei jeder Änderung am Ausgang des Nodes geliefert.
Du musst lediglich mit einem Funktions Node die entsprechenden Werte Filtern und dann an das vhih Node weiterreichen.

Gerne schreibe ich dir dazu was auf, jedoch dann erst am Nachmittag.

Worauf willst du genau filtern ? Auf die AttributID oder die TypID

VG Micha

1 „Gefällt mir“

Hallo Micha,

also ich habe mir folgende IDs rausgesucht, die ich schätzungsweise für den vHEM benötige:

#Node.IDs
168=Shelly 3EM
146=Balkon (=FRITZ!DECT 210)

#Balkon Attribute.IDs
514=Aktueller Verbrauch (=Produktion, W)
515=Summierter Verbrauch (kWh)

#Shelly 3EM Attribute.IDs
673=Aktueller Verbrauch L1 (W)
674=Stromstärke L1 (A)
675=Spannung L1 (V)
676=Summierter Verbrauch L1 (kWh)
677=Aktueller Verbrauch L2 (W)
678=Stromstärke L2 (A)
679=Spannung L2 (V)
680=Summierter Verbrauch L2 (kWh)
681=Aktueller Verbrauch L3 (W)
682=Stromstärke L3 (A)
683=Spannung L3 (V)
684=Summierter Verbrauch L3 (kWh)
686=Aktueller Gesamtverbrauch (W)
687=Summierter Gesamtverbrauch (kWh)

Und ich brauche schätzungsweise diese Werte hier:


(vielleicht nicht alle, insbesondere weil der Anker-Speicher erst im September kommt und evtl. gar keine API haben wird)

Ich hatte es schon mal mit dieser Funktion versucht, die ich mir zusammengesucht hatte:

if (msg.payload.attribute.id ===514)
{
    return {payload: msg.payload.attribute.current_value
    }
}

Da kommen auch sporadisch Werte (Produktion vom Balkon), aber auch immer wieder Fehlermeldungen:
image
Wobei der Fehler mit dem Port irgendwie neu ist…

Schon mal vielen Dank!

LG
Chris

Kennst Du die Sammlung der node-red-Flows. Da ist ein vHEM dabei. Evtl. hilft der Flow als Vorlage. Soweit ich mich erinnere ging es aber in die andere Richtung. Werte sammeln und als hem an homee übergeben.

Ja, u.a. daher hatte ich mir Flows geholt, aber leider sind die dort teils 3–4 Jahre alt und offenbar hat sich die Syntax von node-red geändert, somit liefert der eine Flow z. B. nur noch Fehlermeldungen:



Und ein anderer nutzt zwar sogar die Shelly 3EM als Source, aber wohl aus einer Zeit, als es noch nicht nativ von homee unterstützt wurde und mit Umweg Aotec und ioBroker-Adapter.
Ich wollte jetzt den hier als Vorlage nutzen:

Siehe dazu auch die Screenshots in meinem vorherigen Post („E-Manager“).

LG
Chris

Wenn IO Broker im Einsatz ist, wäre es nicht auch eine Lösung, den homee Adapter zu nutzen und dann die benötigten Datenpunkte über das IOB In Node Abzurufen, dann würde man sich zumindest das Filtern mittels der Funktion Node sparen?

1 „Gefällt mir“

Das ginge natürlich auch, aber ich dachte, wenn die Daten sowieso schon in homee sind, dann muss man sie nicht erst in den ioBroker laden, um sie dann wieder in homee zu holen… Ich mein, das ist doch auch der Sinn vom virtuellen homee, dass man auch mit realen Geräten interagieren kann und Funktionen hinzufügt, die nicht per se vorhanden sind (wie der Energy Meter), oder? Vielleicht hat @Micha ja heute Nachmittag noch einen Tipp für mich.
Merci

Hallo @Chris0Cross

Der TypeError kommt von der deiner Funktion.
Du musst deinen Filter verfeinern, da es nicht nur Attribut Nachrichten gibt.

var attribute = msg.payload.attribute;
if ( attribute && attribute.id === 514 ){ return }

Dieses verhindert jetzt die Fehlermeldung.

Dein Portproblem liegt daran das du noch einen zweiten vhih definiert hast oder dein Rechner schon eine vhih Instanz auf dem Port ausführt.
Du kannst in Node Red nur einen vhih definieren und diesem dann eine beliebige Zahl an Geräten hinzufügen.
Geräte ID’s müssen einmalig sein genau wie Attribut ID’s.

Der Payload an das vhih Device muss folgenden Wortlaut haben.

{"attribute":{"id":000 , "value": 000}}

oder wenn du mehrere Attribute ändern magst dann so

{"attributes":[
{"id":000,"value":0},
{"id":001,"value":1},
{"id":002,"value":2}
]}

Schau mal ob es dir hilft und wenn noch weitere Probleme bestehen einfach melden.

VG Micha

4 „Gefällt mir“

Hallo homees!
Ich habe am Wochenende iobroker und node red auf meinem raspberry geupdatet und seitdem sind die virtuellen Geräte in homee ausgegraut. Es steht dort host nicht verfügbar.
Will ich den virutellen homee mittels Gerät hinzufügen, homee in homee hinzufügen neu anlernen. Bekomme ich eine Fehlermeldung in homee „Verbindung fehlgeschlagen“.

Was mache ich falsch?

LG,
Markus