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.
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
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
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.
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
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?
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?
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.
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.
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
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:
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?
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
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
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“.