NEWS
asynch funktion
-
werden die Register ja der Reihe nach abgefragt
Das würde bedeuten, dass man das auch selbst in der Hand hat.
Triggert man auf den state, der als letztes gelesen wird, braucht's auch keinen timeout.Werde ich mich wohl demnächst auch mal mit beschäftigen müssen.
Meine PV kommt Montag ;-)@codierknecht said in asynch funktion:
Werde ich mich wohl demnächst auch mal mit beschäftigen müssen.
Meine PV kommt MontagWas hast du denn für einen WR? Falls du SMA hast, könnten wir uns ja vielleicht dann mal austauschen, das Berechnen des Eigenverbrauchst ist nämlich gar nicht so einfach, wie ich jetzt gemerkt hab. Vielleicht kann ich ja mal was beitragen...
-
@codierknecht said in asynch funktion:
Werde ich mich wohl demnächst auch mal mit beschäftigen müssen.
Meine PV kommt MontagWas hast du denn für einen WR? Falls du SMA hast, könnten wir uns ja vielleicht dann mal austauschen, das Berechnen des Eigenverbrauchst ist nämlich gar nicht so einfach, wie ich jetzt gemerkt hab. Vielleicht kann ich ja mal was beitragen...
-
@codierknecht said in asynch funktion:
Werde ich mich wohl demnächst auch mal mit beschäftigen müssen.
Meine PV kommt MontagWas hast du denn für einen WR? Falls du SMA hast, könnten wir uns ja vielleicht dann mal austauschen, das Berechnen des Eigenverbrauchst ist nämlich gar nicht so einfach, wie ich jetzt gemerkt hab. Vielleicht kann ich ja mal was beitragen...
@delphinis sagte in asynch funktion:
Eigenverbrauchst ist nämlich gar nicht so einfach, wie ich jetzt gemerkt hab
Ist ja auch technisch fast unmöglich. Du müsstest ja jedes Mal zeitgleich alle Werte bekommen. Bei mir sind Zähler, PV-Wechselrichter und Wallbox getrennte Geräte. Batterie-Inverter kommt noch getrennt dazu. Das heißt, man wird nie eine Momentaufnahme bekommen, welche Dir genau einen richtigen Wert liefern kann. Die Messintervalle und wie oft über Modbus die Daten abgefragt werden, ist ja bei jedem Gerät anders.
Also einfach alles in die Datenbank loggen. Dann kannst Du damit aggregiert in einem 5, 10 oder 15min Fenster rechnen. Und für Energiedaten funktioniert das bei mir sehr genau. Eine gewisse Unschärfe ist immer drin. Sonst müsste man ja im Millisekunden-Bereich Daten bekommen.
-
@delphinis
Nur ein paar Kleinigkeiten.
Ich weiß: Erbsenzählerei, aber da bin ich manchmal etwas penibel.- Zeile 2 sollte eingerückt werden
- Statt
if (working == false)kann man auchif (!working)schreiben - Ein
count+=1notiert man üblicherweisecount++
Auf sowas reite ich gerne mal rum ;-)
Code wird zu 80% gelesen und nicht geschrieben. Und dabei geht es nicht nur um fremde Leser.
Nicht selten sitzt man nach Tagen, Wochen oder Monaten vor einem Stück Code und fragt sich: "Welcher Vollhorst hat das denn verbrochen?"
Nur um nach einiger Zeit festzustellen: "Uuuups, war ich ja selbst!"Die Formatierung der Zeit lässt sich auch noch vereinfachen.
const moment = require('moment'); const now1 = moment().format('mm:ss:SSS');Warum selbst zusammenklöppeln, wenn es dafür schon passende Bibliotheken gibt? ;-)
-
@delphinis
Nur ein paar Kleinigkeiten.
Ich weiß: Erbsenzählerei, aber da bin ich manchmal etwas penibel.- Zeile 2 sollte eingerückt werden
- Statt
if (working == false)kann man auchif (!working)schreiben - Ein
count+=1notiert man üblicherweisecount++
Auf sowas reite ich gerne mal rum ;-)
Code wird zu 80% gelesen und nicht geschrieben. Und dabei geht es nicht nur um fremde Leser.
Nicht selten sitzt man nach Tagen, Wochen oder Monaten vor einem Stück Code und fragt sich: "Welcher Vollhorst hat das denn verbrochen?"
Nur um nach einiger Zeit festzustellen: "Uuuups, war ich ja selbst!"Die Formatierung der Zeit lässt sich auch noch vereinfachen.
const moment = require('moment'); const now1 = moment().format('mm:ss:SSS');Warum selbst zusammenklöppeln, wenn es dafür schon passende Bibliotheken gibt? ;-)
@codierknecht sagte in asynch funktion:
Warum selbst zusammenklöppeln, wenn es dafür schon passende Bibliotheken gibt?
Und wozu Bibliotheken einbinden, wenn das gleiche mit
Date(bzw.Intl) auch schon funktioniert? :)new Date().toLocaleTimeString('de-DE', { minute: '2-digit', second: '2-digit', fractionalSecondDigits: 3 })oder die integrierten Funktionen des JavaScript-Adapters:
formatDate(new Date(), 'mm:ss.sss'); -
@codierknecht sagte in asynch funktion:
Warum selbst zusammenklöppeln, wenn es dafür schon passende Bibliotheken gibt?
Und wozu Bibliotheken einbinden, wenn das gleiche mit
Date(bzw.Intl) auch schon funktioniert? :)new Date().toLocaleTimeString('de-DE', { minute: '2-digit', second: '2-digit', fractionalSecondDigits: 3 })oder die integrierten Funktionen des JavaScript-Adapters:
formatDate(new Date(), 'mm:ss.sss');@haus-automatisierung
Punkt für Dich :grin: -
@codierknecht sagte in asynch funktion:
Warum selbst zusammenklöppeln, wenn es dafür schon passende Bibliotheken gibt?
Und wozu Bibliotheken einbinden, wenn das gleiche mit
Date(bzw.Intl) auch schon funktioniert? :)new Date().toLocaleTimeString('de-DE', { minute: '2-digit', second: '2-digit', fractionalSecondDigits: 3 })oder die integrierten Funktionen des JavaScript-Adapters:
formatDate(new Date(), 'mm:ss.sss');@haus-automatisierung sagte in asynch funktion:
oder die integrierten Funktionen des JavaScript-Adapters:
Genau danach hatte ich gesucht, war aber zu blöd es zu finden :-(
-
@haus-automatisierung sagte in asynch funktion:
oder die integrierten Funktionen des JavaScript-Adapters:
Genau danach hatte ich gesucht, war aber zu blöd es zu finden :-(
-
@haus-automatisierung
Da war ich tatsächlich schon.
Hatte aber nach sowas wie "formatTime()" gesucht und bin dann bei "formatTimeDiff()" gelandet.Ein bisschen hochscrollen hätte das Problem gelöst.
Manchmal ist es soooooo einfach :grin: