NEWS
2 Werte Subtrtahieren in Node Red
-
@siporax Verstehe ich dich richtig: Du hast einen Teich, dessen Technik entweder übers Netz, gemessen mit SonOff-Pow, versorgt wird oder bei Netzausfall über eine Wechselrichter. Wie wird die Leistung des Wechselrichters gemessen?
-
@geschild said in 2 Werte Subtrtahieren in Node Red:
@siporax Verstehe ich dich richtig: Du hast einen Teich, dessen Technik entweder übers Netz, gemessen mit SonOff-Pow, versorgt wird oder bei Netzausfall über eine Wechselrichter. Wie wird die Leistung des Wechselrichters gemessen?
Über eine fritz dect Steckdose wird der Wechselrichter gemessen
und der Teich über Sonoff Pow
Wie im Beispiel im Bild oben zu sehen ist.
983 Watt kommen vom Wechselrichter und nach Teichabzug gehen noch 780 Watt in die Batterie.
Damit ist der Verbraucht real vom Teich 203 Watt und diesen Wert will ich immer sehen mit oder ohne Wechselrichter. -
@siporax Werte kommen an aber werden nicht gerechnet habe da ein fehler drin denke ich.
-
-
So habe ich das gemacht mit dem Rechnen.
-
@siporax
Sieht es etwa so aus?
Du möchtest rechnen: POW - Fritz = Teichverbrauch real ?
Bzw. wissen: Wann hat der Teich mehr verbraucht, als der Wechselrichter liefert und wieviel ? -
@geschild Teich jat mehr verbrauch z.b im Winter in der Nacht usw.ist verschieden.
Kann man keine Regel erstellen wenn du das meinst.
Daher wollte ich es einfach immer so rechnen:
Pow minus Fritz Dect
Da dieses rgebnis immer der Verbrauch vom Teich ergibt.
Ob er 400 oder 800 Watt er ausgibt.
Nachts gibt er wenn die Batterie leer ist auch einfach auch mal 0 Watt ab.
Soltte doch gehen oder lieg ich falsch? -
@siporax Der Verbrauch vom Teich wird doch über den POW gemessen!
-
@geschild ja wird er aber der kann nur in eine Richtung zählen.
Sollange der Wechselrichter aus ist geht das prima.
Wenn er sich einschaltet zählt er den wert dazu und ich sehe mein realen verbrauch nicht mehr. -
@siporax Was ist an meiner Zeichnung falsch ?
-
@geschild könnten wir um uns um die Rechnung kümmern und nicht warum,bitte.
Den das Ergebnis ist das was ich brauche -
-
@geschild said in 2 Werte Subtrtahieren in Node Red:
Ich habes mal versucht damit.
Werte kommen an nur errechnet wird nichts bisher.
Denke die Ordnerstruktur im Broker muss dazu genau so aussehen,
einfach diese neu zu zuordnen geht nicht so einfach. -
@siporax wie ich schon mehrfach erklärt habe, rechnet man über einen Kontext oder sammelt alles in einem Nachrichtenobjekt. Was steht denn in Deiner function Node drin. Welcher deiner beiden Werte soll den triggern? Vorher wurde doch schon mit get nodes gearbeitet.
So wird das NIE funktionieren- und vielleicht kann sich einer ja mal überlegen warum.
Wenn ich das so lese muss doch nur der Verbrauch triggern und davon wird der Wechselrichterwert abgezogen. Dafür benötigt man keine 2 trigger und auch keine function Node.
Übrigens wenn ihr hier ein Flow einstellt, dann nur zwischen CodeTags und dann verspoilern.. sonst kann niemand damit was anfangen.
-
@siporax
Das wurde doch unten alles schon mal richtig dargestellt. Wie gesagt 2 mal triggern bringt nichts - die Werte treffen sich nie,Hier zum Import (verspoilert und in CodeTags):
-
Deine Lösung ist eleganter als meine. Chapeau. Bin mehr in script als in nodered zu Hause.
Bitte deshalb um Nachhilfe, wie deine Lösung funktioniert, wo erfolgt die Subtraktion (Doppelklick auf den change hat mich nicht weiter gebracht).
Noch in eigener Sache:
Deinen Kommentar zu meinem Ergebnis möchte ich nicht unkommentiert zu Kenntnis nehmen.
"Übrigens wenn ihr hier ein Flow einstellt, dann nur zwischen CodeTags und dann verspoilern.. sonst kann niemand damit was anfangen."
Einfach die .txt öffnen, STRG-A, STRG-C, in NodeRed importieren. Feddich"Was steht denn in Deiner function Node drin"
Importieren, Doppelklick auf node, lesen."So wird das NIE funktionieren- und vielleicht kann sich einer ja mal überlegen warum."
Doch, es funktioniert (sonst hätte ich es nicht gepostet) - und vielleicht kann sich einer ja mal überlegen warum. -
-
@geschild Nun wichtig ist folgendes zu verstehen. Ich baue es mal mit eigenen DP nach:
Am Besten ist sowas wenn man sich immer das komplette Nachrichtenobjekt ausgeben lässt:
Die payload stammt von der iobroker-IN Node und ist der Ausgangstrigger. Grün markiert.
Wichtig ist, wie bereits ja unten beschrieben, dass Du nun den 2. Wert den Du Dir ins Nachrichtenobjekt ein anderes Attribut zuweist, sonst überschreibst Du, falls Du in der get Node das Attribut payload belässt, Dir mit der get Node den originalen payload aus der iobroker-IN Node.
Ich habe den Inhalt des Wechselrichters in das Nachrichtenattribut wr geschrieben. Siehe gesamtes Nachrichtenobjekt. Gelb markiert.
Nun habe ich BEIDE Werte in EINEM Nachrichtenobjekt.
Die Subtraktion findet einfach in der Change Node mit JSONATA statt: https://docs.jsonata.org/overview
Dies mächtige Bibliothek kann man in verschiedenen Nodes einfach über das GROSSE J nutzen (gibts auch in Switch, Change, JOIN - in vielen Nodes):
Damit kann ich über die Nachrichteneigenschaft eine neue payload setzen in dem ich die Differenz der ursprünglichen payload - wr bilde. Also von der payload hier 80 - wr hier 50 abziehe und dann als Ergebnis als neue payload 30 ausgebe.
-
@geschild sagte in 2 Werte Subtrtahieren in Node Red:
Übrigens wenn ihr hier ein Flow einstellt, dann nur zwischen CodeTags und dann verspoilern.. sonst kann niemand damit was anfangen."
Einfach die .txt öffnen, STRG-A, STRG-C, in NodeRed importieren. FeddichDas ist halt einfach umständlicher als wenn ich den Spoiler aufmache - auf SelectAll klicke und dann in die Zwischenablage kopiere.
Ich habs auch nicht gefunden. Wie gesagt - Deine Lösung KANN nur funktionieren, wenn Du in der function Node mit dem Node-Kontext arbeitet.
Falls nicht
werden sich die beide Nachrichten aus den aus den iobroker-IN Nachrichten NIE treffen. Ich kenne den Code wie gesagt nicht - ich seh das Ergebnis aber Du wirst dann wohl mit dem Node-Kontext gearbeitet haben.
var wr = context.get('Wechselrichter') || 0
oder so ähnlich,
dann musst halt das topic abfragen und dann ggf. neu setzen - also ich weiß schon wie es geht.
- Nur ich bin kein Freund des Codierens wenn es nicht sein muss.
- Dann macht man die visuelle Darstellung wieder kaputt. Im Prinzip kannst Du ganze Flows in eine function Node packen.
-
@mickym Danke, wieder was dazugelernt. Ja ich habe mit context gearbeitet.