Alternativ könntest du, wenn es nur 2 Variablen sind einfach einen sleep Befehl einbauen damit die 1. Reaggregation abgeschlossen ist bevor die 2. startet
Warum hast du dies im englischen Forum veröffentlicht?
Ich habe es mal verschoben.
Ein sleep wird aber nicht helfen, da das Reaggregieren einer Variable im allerersten Durchlaufen gestartet wurde und dann beendet sich das Script.
Egal ob das Archiv fertig ist, oder nicht.
ich habe 1 Sekunde sleep eingeführt, und das hat das Problem vorerst gelöst. Es gefällt mir aber nicht, es ist ein sehr grobes Hack. Eine Art Semaphor wäre mir lieber…
ich bin aktuell auch über das Problem „Another aggregation is already running“ gestolpert.
Ich habe einen Anwendungsfall, bei dem ich regelmäßig neue Werte zum Archiv mehrerer Variablen hinzufügen und diese dementsprechend neue aggregieren muss.
Also ehrlich gesagt würde ich erwarten, dass IPS das intern regelt und sicherstellt, dass wenn bereits eine Aggregation läuft, die nächste durchgeführt wird, wenn die vorherige abgeschlossen ist.
Es kann doch nicht sein, dass ich im Zweifelsfall wer weiß wie lange probiereren muss, bis es klappt. So eine Reaggregation kann ja in einer Sekunde durch sein, sie kann aber auch 5 Minuten laufen. Warum kann man da kein Queuing implementieren, wenn Reaggregationen zwingend sequenziell abgearbeitet werden müssen?
Ich verstehe aber auch nicht, warum man nicht mehrere Variablen parallel reaggregieren kann. Gibt es da irgendwelche internen Abhängigkeiten? Wenn man es bei der selben Variable zweimal versuchen würde, würde ich es ja als konkurrierenden Zugriff ansehen und verstehen, aber bei unterschiedlichen Variablen… Aber ich weiß natürlich nicht, wie das Archiv intern arbeitet.
Dein Use-Case wird einfach nicht offiziell unterstützt. Unser Use-Case ist fortlaufend Daten zu loggen und die AddLoggedValues Funktion ist nur für seltenes Hinzufügen von Daten gedacht. Auch die Reaggregation ist nicht dafür gedacht ständig aktiviert zu werden. Deshalb gibt es auch keinerlei Logik, dass diese Parallel ausgeführt wird (weil wir dies nicht brauchen ;))
Haha, das ist natürlich die perfekte Begründung für alles. Geht nicht, weil wir es nicht brauchen.
Den muss ich mir mal für die Arbeit merken.
Ich finde es eigentlich auch blöd, dass ich darauf zurückgreifen muss, aber in dem Fall geht es nicht anders.
Die externe Datenquelle liegt nicht unter meiner Kontrolle und sie versorgt mich leider nur in größeren Intervallen mit neuen Werten und liefert in unregelmäßigen Abständen die alten Daten mit hoher Genauigkeit nach. Dann muss ich es halt weiter durch ständige Wiederholungen versuchen. Solange das Archiv noch klein ist, geht es ja…
Da fällt mir gerade noch eine andere Frage zum Archiv ein, wo wir gerade bei dem Thema „Brauchen wir nicht“ sind.
Man kann in IPS ja theoretisch mehrere Archiv-Instanzen erstellen. Braucht man das für irgendwas?
Ich hatte z.B. daran gedacht, dass man vielleicht die Archiv-Daten bestimmter Variablen je Archiv gruppieren kann (der Übersichtlichkeit halber). Aber wenn man mehrere Instanzen erstellt, hat man dort einfach erneut alle Variablen gelistet.
Oder könnte man das dazu missbrauchen, um die Reaggregation parallel über unterschiedliche Archiv Controls laufen zu lassen? Ich habe aber auch wieder tolle Ideen, merke ich gerade.
so ganz mag ich dem nicht zustimmen Es ist sicherlich so, dass im Rahmen eurer Betrachtungen dies eine untergeordnete Bedeutung hat. Da ich mein Entwicklungs- und Produktivsystem vollständig getrennt habe und somit immer alle Dateien inkl. IPSStudio ohne das db-Verzeichnis vom Entwicklungs- auf das Produktivsystem kopiere bin ich gezwungen, danach die Reaggregation aller Variablen durchzuführen. Um die Probleme mit dem Timing zu umgehen habe ich das oben genannte Skript auf meine Verhältnisse angepasst Auf diese Weise hat man zumindest ein Lösung.
@Slummi Ich kann mir vorstellen, dass aufgrund des verstärkten Einsatzes von RPis eine parallele Ausführung sicherlich problematisch sein könnte.
Es ist jedoch eher die Ausnahme und die Anwendungsfälle dafür sind schon sehr speziell. Ich wollte eigentlich nur sagen: Wir haben dies nicht umgesetzt, da die Nachfrage danach zu gering war und der Aufwand dafür nicht zu unterschätzen ist
AddLoggedValues könnte ja auch automatisch nur die relevanten Teile automatisch reaggregieren. Optimieren kann man da einiges Aber dann sind wir wieder bei… Das brauchen nicht so viele
Gute Nachrichten: Ab IP-Symcon 5.5 kann man mehrere Aggregationen parallel durchführen Auch die Konsole wird dies für euch automatisch skalieren, sodass mehr eurer CPU-Kerne ausgelastet werden.
Nee mal Spaß bei Seite. Finde ich gut!
Vielleicht wollt ihr ja auch noch das Thema mit den Mehrfachinstanzen fürs Archiv angehen, wenn ihr ohnehin am Umbauen des Archivs seid.
Entweder ganz unterbinden oder zum Zwecke der besseren Organisation (z.B. ein Archiv für Wetterdaten, ein Archiv für Energiedaten etc.) gezielt ermöglichen.
Hallo
Dazu mal eine Frage.
Kann ich dann in einem Script mehrere
AC_REAGGREGATEVARIABLE Functionen
hintereinander aufrufen und die laufen parallel?
Wenn das so funktioniert bekomme ich ja keinen Rueckgabewert der Funktionen
weil die ja nicht warten.