ich arbeite derzeit an der Entwicklung einer EMS-Konfiguration für stationäre Energiespeicher. Zu Testzwecken nehmen wir viele verschiedene Werte mit InfluxDB auf und visualisieren diese per Grafana.
Derzeit wird nur jede Sekunde ein Wert in die InfluxDB-Datenbank geschrieben und auch Grafana zeigt nur jede Sekunde einen Wert an. Ich würde mir aber gerne die mehr Werte anzeigen lassen, sprich alle 100ms.
Kann ich die Zeitspanne in der das Protokoll von InfluxDB aufgerufen wird, von 1s auf 100ms verändern und wenn ja wie?
auf welcher Hardware hast du die InfluxDB laufen ?
Ich kann mir nicht vorstellen, wie die Werte in 100 Millisekunden in die InfluxDB geschrieben werden sollen, da musst du ja einen ultraschnellen Rechner haben ?
Kannst du mal auch ein kurzes Video mit ScantoGif hochladen, dies würde mich auch interessieren ?
Ich hätte dies bereits auf Sekundenbasis versucht, aber da kommt mein Skript und mein iobroker nicht nach.
Ich habe seit Anfang Juni einen Infrarot-Lesekopf auf meinen EVU-Smartmeter Siemens TD-3511 im Einsatz, welcher jede Sekunde die Werte Leistung Bezug und Einspeisung ermittelt.
1.7.0 Bezug, 2.7.0 Einspeisung, Saldo 1.7.0-2.7.0=Momentan Leistung-Bezug-/Einspeisung.
Anschließend wird dieser Leistungswert dem kumulierten Saldo Bezug- und Einspeisung in kWh hinzugerechnet.
Mit MQTT übertrage ich diese Werte alle 2 Sekunden im Heimnetzwerk per Wlan in meinen iobroker, bereite diese Werte mit einem Blockly alle 2 Sekunden auf und schreibe diese in meine InfluxDB. Aufbereitung erfolgt in Grafana, Visualisierung alle 5 Sekunden.
Anbei ein soeben erstelltes kurzes Video mit ScantoGif, links vom Smartmeter, rechts vom iobroker mit den Objekten.
Die Einspeisung im Video ist deshalb so gering, da gerade der 5 kW Heizstab mit Smartfox, mit PV-Überschuss-Stromverwertung mit Leistungssteller läuft, welcher versucht auf -20 W hinzuregeln.
Habe hier ebenso über ein Blockly eine Synthetische Batteriespeichersimulation mit einem Batteriespeicher 5 kWh u. 2,5 kW Lade- und Entladeleistung am Laufen, Lade- und Entladewirkungsgrad u. Max- und Min-SOC zum Einstellen.
Anbei auch noch ein Video vom Vorgang kochen.
Hier sieht man sehr schön, wie schnell Lastwechsel bei einem normalen Cerankochfeld stattfinden.
Kann mir nicht vorstellen, dass du das auch noch in 100 ms protokollieren kannst. -
vielen Dank für die Menge an Informationen. Unsere InfluxDB läuft im Hintergrund auf einem Linux-Rechner mit dem Derivat “Debian”. Leider kann ich kein Video hochladen, da dies gegen meine Geheimhaltungsvereinbarung verstößt.
Ich hatte in einem anderen Beitrag aus der Community gelesen das es irgendwie möglich wäre, Werte öfter als jede Sekunde in die InfluxDB zu schreiben.
der verlinkte Thread sollte eigentlich die Frage schon klären.
Die Methode handleEvent() ruft in jedem Cycle die Methode collectAndWriteChannelValues() auf. In dieser Methode werden dann alle Daten gesammelt und über die (asynchrone) Methode this.influxConnector.write() in die Datenbank geschrieben.
Für eine höhere Schreibrate sollte deshalb
die Cycle-Time über die Komponente Core.Cycle heruntergesetzt werden
Übrigens sollte die InfluxDB keinerlei Probleme mit so einer Schreibgeschwindigkeit haben. Es ist wohl eher so, dass z. B. die angeschlossenen Zähler nicht so schnell lesen können, oder Modbus-Verbindungen zu langsam sind.
ich habe den Quellcode der Komponente “influx.Timedata”, wie in dem obigen Link beschrieben, angepasst und auch die Zykluszeit in der Komponente “CoreCycle” von 1000ms auf 100ms geändert.
Trotz dieser Änderungen wird immer noch jede Sekunde ein Wert in die Influx geschrieben und nicht öfter.
ich habe mein Energiemanagementsystem auf einem INTELNUC mit Debian10 laufen.
Iobroker läuft auf einer VM, influxdb und grafana auf einem LXC.
Mich würde interessieren, für was man Stromwerte in 100ms verwendet, was machst du damit ?
Eine Vielzahl an Batteriespeichersystemen kann ja solche Werte in 100ms gar nicht verarbeiten und vor allem nachfahren, wenn man sich die Speicherinspektion 2021 der HTW-Berlin anschaut.
Ich benötige eine solche Abtastrate für die Untersuchung unseres Gesamtsystems, welches im Rahmen meiner Diplomarbeit entwickelt wird.
Dabei Untersuchen wir die Reaktionsgeschwindigkeit des Systems, wenn wir es mit Leistungssprüngen beaufschlagen. Um aussagekräftige Aussagen treffen zu können reicht es nicht aus einen Wert jede Sekunde zu messen.
ich habe mir dazu ein Testsystem gebaut. Mit diesem Pull-Request sollten die Werte jetzt mit höherer Genauigkeit in die InfluxDB geschrieben werden:
Der Timestamp wird auf die global konfigurierte Cycle-Time (in der Komponente Core.Cycle) gerundet. Um also Werte z. B. alle 200 ms zu schreiben, muss dort eine Cycle-Time von 200 konfiguriert werden.
ich bin der Meinung, dass dieser Pull-Request unser Problem lösen kann. Leider kam ich noch nicht dazu diesen zu testen, werde es aber im laufe der Woche noch tun.
Vielen Dank für die Hilfe!
Prinzipiell bin ich immer offen für solche Aufgaben und Veranstaltungen. Zur Zeit kann ich aber keine genauen Aussagen treffen, da mein Terminkalender sehr voll ist.
Wann wäre denn diese Konferenz?
Ich konnte vergangene Woche den Pull-Request erfolgreichTesten. Vielen Dank dafür!
In der KW45 und KW46 sieht es leider gerade sehr eng aus bei mir. Grund ist, dass unsere Zielhardware in diesem Zeitraum geliefert wird und ich für meine DA noch die EMS-Konfiguration auf dieser implementieren muss. Ich kann momentan schlecht einschätzen wie viel Aufwand die Implementierung hervorruft. Für den Fall das ich doch noch einen Zeitslot frei schaufeln kann, würde ich mich nochmal bei dir melden.