Ankündigung
Einklappen
Keine Ankündigung bisher.
Gira X1
Einklappen
X
-
PPS: Bei iscwebservice @ 770M hab' ich den Tab mit dem neuen Webinterface jetzt mal zu gemacht. Mal schauen, was jetzt passiert...
-
So, eine Stunde später: iscwebservice bei ca. 600M. Ich extrapoliere: Out-of-memory in ca. einer weiteren Stunde...
Ich warte das mal ab und mach dann einen Neustart. Danach fass' ich das neue Webinterface nicht mehr an ...
Einen Kommentar schreiben:
-
Vielen Dank für die Rückmeldungen, dann gibt es definitiv ein Speicherleck im webservice. Auf diesen Prozess wird über API von der Webseite drauf zugegriffen.
Ich guck mir das morgen mal genauer an.
Einen Kommentar schreiben:
-
So, noch bißchen rumgespielt auf dem neuen Webinterface, jetzt ist der iscwebservice schon bei knapp über 200M ...
Ich tu jetz mal die nächste Stunde gar nix und schau's mir dann wieder an ...
Einen Kommentar schreiben:
-
Erst mal auf den Status geschaut ohne das neue Webinterface benutzt zu haben:
Mono ist offenbar schon mindestens einmal neu gestartet worden, sonst hätte es eine niedrigere PID. Wirklich schockiert bin ich aber, dass fast 1G Speicher vom iscwebservice gefressen wird. Hat da irgendwas vom Benutzer kommendes Einfluss?Code:Mem: 1026588K used, 7460K free, 3560K shrd, 6620K buff, 22148K cached CPU: 0% usr 8% sys 0% nic 91% idle 0% io 0% irq 0% sirq Load average: 0.43 0.16 0.10 1/171 23702 PID PPID USER STAT VSZ %VSZ %CPU COMMAND 504 431 root S 926m 91% 0% /opt/gira/bin/iscwebservice -p 1080 -c /opt/gira/etc/iscwebservice/iscwebservice.conf 431 1 root S 181m 18% 0% /opt/gira/bin/devicestack 536 502 root S 158m 16% 0% /opt/gira/bin/knxstack -f /opt/gira/etc/knxstack/knxstack.conf -s 000813110033 28742 431 logic S 139m 14% 0% /usr/bin/mono /opt/gira/share/LogicEngine/LogicModule.Engine.Runner.exe
Einen Neustart später sieht es jedenfalls schon ganz anders aus:
Jetzt sind alle Prozesse deutlich kleiner, am deutlichsten aber der iscwebservice.Code:Mem: 202508K used, 831540K free, 192K shrd, 22720K buff, 79000K cached CPU: 0% usr 0% sys 0% nic 100% idle 0% io 0% irq 0% sirq Load average: 0.60 0.24 0.09 1/173 720 PID PPID USER STAT VSZ %VSZ %CPU COMMAND 719 718 root R 2316 0% 0% top -b -n 1 536 502 root S 158m 16% 0% /opt/gira/bin/knxstack -f /opt/gira/etc/knxstack/knxstack.conf -s 000813110033 431 1 root S 152m 15% 0% /opt/gira/bin/devicestack 503 431 logic S 99344 10% 0% /usr/bin/mono /opt/gira/share/LogicEngine/LogicModule.Engine.Runner.exe 507 431 root S 98956 10% 0% /opt/gira/bin/iscwebservice -p 1080 -c /opt/gira/etc/iscwebservice/iscwebservice.conf
In diesem Zustand kann ich mich problemlos auf dem neuen Webinterface einloggen; auch danach ist noch kein Prozess auffällig gewachsen. Also gege ich auf die Logikübersicht. Lädt auch innerhalb von wenigen Sekunden. Danach sind sowohl mono als auch iscwebservice von knapp unter 100M auf 113 bzw. 103M gewachsen. Noch nix Wildes, also klappe ich ein Logikblatt auf. Kurz drauf hat der iscwebservice 140M. Das lass ich jetzt mal 'ne Weile laufen ...
Einen Kommentar schreiben:
-
Mal ausprobieren ...Zitat von jb1 Beitrag anzeigenKommst du denn auch in diesen Zustand, wenn du nicht die Logik-Seite öffnest, sondern nur die normale Seite?
Ich bekomm das schon deshalb mit, weil ich eine aus der gemittelten Außentemperatur abgeleitete Größe mitlogge. Wenn die irgendwelche Sprünge macht, dann kann ich das auch nach Tagen oder Wochen noch sehen und mit dem Logfile-Inhalt korrelieren. So bin ich ja überhaupt drauf gekommen...Zitat von jb1 Beitrag anzeigenAber da ja der gleiche API Aufruf zum Sammeln der Logikinformationen gemacht wird, sollte ebenfalls bei der Verwendung der alten Webseite noch manchmal der mono-Prozess abstürzen. Da der Prozess aber automatisch wieder neu gestartet wirst, bekommst du davon nur vielleicht nichts mit.
Und es kann natürlich sein, dass bei genügend häufigem Update der alten Seite das Ganze auch wegkachelt, muss ich mal ausprobieren. Die neue Website macht ja automatische Updates (wenn ich auch nicht genau weiß wie häufig).
Ich meld' mich wieder mit den Ergebnissen, wenn ich bißchen rumprobiert hab' ... und dabei schau ich auch mal auf die Speicherauslastung.
Grüße von Horst
Einen Kommentar schreiben:
-
Ich habe dann noch mal etwas Gehirnschmalz inverstiert um eine "Feiertags"-Lösung OHNE Logik und OHNE komplette Dopplung der DPs umzusetzen.
Sowas finde ich immer extrem unübersichtlich, schlecht lesbar und nach ner Weile hat man wieder vergessen, wie es funktioniert.
Traurig/enttäuschend, dass sowas im X1 nicht direkt mit drin ist. So ist die Basis der Lösung eine MDT Bedienzentrale, die eigentlich ausschließlich für diesen Zweck angschafft wurde.
Die eigentliche Steuerung, die eigentlichen Zeitschaltuhren sind auf dem X1. Die sind einfach viel eleganter, da ich nicht mit Szenen arbeiten muss und nicht bei den Aktoren auf die Funktionen angewiesen bin, die die Hersteller für Szenen vorgesehen haben. Ich kann direkt in der Zeitschaltuhr sehen, was und wo angesteuert wird und muss dann nicht noch auf den Aktor gehen.
Um das Ganze übersichtlich zu gestalten, bin ich von funktions-orientierten Zeitschaltuhren zu ereignisorientierten Zeitschaltuhren gewechselt.
Vorher hatte ich Zeitschaltuhren für beispielsweise Kaffeemaschine, Bachlauf, etc.
Jetzt gibt es nur noch 6 Zeitschaltuhren:
Zeitschaltuhr Wochentags EIN (extern angesteuert)
Zeitschaltuhr Wochentags AUS (extern angesteuert)
Zeitschaltuhr Wochenende EIN (extern angesteuert)
Zeitschaltuhr Wochenende AUS (extern angesteuert)
Alle Tage EIN
Alle Tage AUS
Logischerweise brauchen nun die Zeitschaltuhren alle DPs die angesteuert werden müssen. Das ist praktisch kein Problem, da hier ja 50 erlaubt sind, es macht es eher im Gegenteil etwas unübersichtlicher, da alle DPs immer über alle Schaltzeiten mitgeschleppt werden.
Wenn die Schaltzeiten einer Uhr nicht ausreichen, muss man dann halt noch mehr Uhren anlegen.
Für mich reicht das problemlos. Wochentags EIN hat bei mir nur 4 Schaltzeiten 06:00, 06:30, 07:00, 15:00.
Tip 1 - Wenn man mit der MDT BZ arbeitet, sollte man das Ganze auf 6 Schaltzeiten begrenzen, da die BZ nur 6 Zeiten bei einer Schaltuhr kann.
Tip 2 - Wenn hier jemand sowas wie "Sonnenaufgang" vermisst - das sind überlicherweise Schaltzeiten die nicht zwischen Wochentag und -ende unterschieden werden müssen. Deswegen die Uhren "Alle Tage" ohne externe Ansteuerung.
Das externe Ausführen der Zeitschaltuhr geschieht über den Geräte-DP der jeweiligen Schaltuhr. Auch hier 2 Tips:
Tip 3 - Startet die Benennung der Zeitschaltuhren mit "Zeitschaltuhr". Die Geräte-DPs haben keine Struktur sondern sind eine einfach Liste. So sind sie leichter wiederzufinden.
Tip 4 - Richtet die einzelnen Schaltzeiten so ein, als ob sie wirklich so aufgeführt würden. Dies ist eigentlich nicht notwendig, da nur der externe "Ausführen" DP greift. Es hält das Ganze aber besser lesbar.
Der Einzige kleine Trick ist jetzt den Wert "Gültigkeit von" auf ein Datum weit in der Zukunft zu setzen. Ich habe beispielsweise 2050 gewählt. Sprich die Schaltzeituhr wird nie ausgeführt.
Für alle angelegten Zeitschaltuhren findet man nun in den Datenpunkten unter Geräte-Datenpunkte jeweils 5 Einträge. Wir brauchen nur "Ausführen". Hier die "KNX Integration" aktivieren und unter "Senden" eine hierfür angelegte GA aus der ETS eintragen. Das Ganze funktioniert jetzt wie eine Szene. Der in der GA übertragene Wert muss der auszuführenden Schaltzeit entsprechen. in meinem Beispiel:
(1) 06:00
(2) 06:30
(3) 07:00
(4) 15:00
Entsprechend ist die Konfig in der MDT Bedienzentrale nun extrem einfach. Jeweils eine Zeitschaltuhr anlegen. Typ "Wert senden" "Szene". In der Tabelle die Wochentage markieren, die entsprechend Ausführzeit eintragen und als Szenennr. den passenden Zeitschaltindex.
Hier gibt es nun einen kleinen Trick. Die Feiertag-Steuerung bei der MDT BZ erfolgt nach dem Motto "wie Sonntag" und das Ganze funktioniert nur innerhalb einer Zeitschaltuhr. Damit also im Feiertagsfall eine "Sonntags" Zeit geschaltet würde, müsste eine solche auch vorhanden sein.
Ist aber kein Problem. Man aktiviert die Feiertagsbehandlung sowohl für die Uhren "Wochentags", wie Wochenende. Die Wochentags hat keinen Sonntag, was im Feiertagsfall einer Deaktivierung entspricht. Die "Wochenende" ist dann im Feiertagsfall aktiv, egal, dass gar keine Wochentag-Einstellung vorhanden ist.
Somit gelten die Zeiten der MDT BZ, die dann im Prinzip eine Szene aufführen, die einer Schaltzeit im X1 entspricht. Es gelten also nur die Zeiten der BZ.
Hier mal eine großes Lob an die MDT Leute. Wie gut/einfach die Konfig in der ETS umgesetzt wurde. Und auch wie umfangreich die Feiertagsfunktion umgesetzt wurde.
Die hört nämlich bei weitem nicht bei dem einfachen Datenbankabgleich auf:
- man kann in die Datenbank eigene "Feiertage" eintragen, wie z.B. Brückentage
- Man kann einzelne Tage durch Aktivierung des "Feiertag" Schalters am Vortag aktvieren. Sowohl an der MDT BZ selbst, aber auch von Extern. Spricht man kann es auch auf einen beliebigen andern Schalter legen. Also z.B. Auch für nen Brückentag, wenn man keine Lust hat in fest einzutragen, einfach am Vorabend aktvieren..
- Es gibt noch on Top eine Urlaubsfunktion.
Mir fällt zur Zeit keine Lösung mit geringerem Aufwand ein für/mit X1 ein. Hier dann auch ein Lob an die Gira Mitarbeiter für den grundsätzlich tollen X1 und viel Verständnis dafür, dass die Armen offensichtlich alle Feiertage durcharbeiten.
Zuletzt geändert von alorenzen; 25.05.2020, 14:08.
- Likes 1
Einen Kommentar schreiben:
-
Danke, das konnte ich leider am Wochenende auch schon eruieren. Schönere wäre es natürlich, wenn dieser sich wie "Ausführen" verhalten würde. Das würde das Ganze einfach besser lesbar machen, als die versteckete "KNX Integration"Zitat von jb1 Beitrag anzeigen
Die KOs der Zeitschaltuhren in der ETS kann man nicht beschreiben. Über diese KOs wird nur ein Wert rausgesendet, wenn die Uhr ausgelöst hat (Ausgelöst) und welche Schaltzeit augelöst wurde (Index der Schaltzeit).
Auch das konnte ich am Wochenende zum Laufen bringen, hatte ich noch eine Fehler drin. Funzt.Zitat von jb1 Beitrag anzeigenZum manuellen Auslösen musst du auf den Ausführen Datenpunkt schreiben, den du schon im Bild markiert hast.
Zum einfachen Testen kannst du auch einfach mal über den GPA Datenpunktmonitor die Szenennummer auf den Datenpunkt schreiben.Zuletzt geändert von alorenzen; 25.05.2020, 14:01.
Einen Kommentar schreiben:
-
Die KOs der Zeitschaltuhren in der ETS kann man nicht beschreiben. Über diese KOs wird nur ein Wert rausgesendet, wenn die Uhr ausgelöst hat (Ausgelöst) und welche Schaltzeit augelöst wurde (Index der Schaltzeit).Zitat von alorenzen Beitrag anzeigen
So - mir ist eine einfache Umsetzung der Feiertagsfunktion eingefallen.
Ich scheitere aber schon an den Basics, nämlich dem Ausführen der Zeitschaltuhr von extern.
Erstmal einfachster Aufbau. Es soll extern EINE GA mit entsprechender Szenennr. auf die entsprechende Zeitschaltuhr des X1 gesendet werden, also genau ein Schaltindex auf einer Zeitschaltuhr ausführen, mehr nicht. Aber ich kriege die Zeitschaltuhr nicht zum Ausführen des entsprechenden Index.
1. Die ersten 10 Zeitschaltuhren sind in der ETS aktiviert.
2. Auf der entsprechend Zeitschaltuhr ist eine GA auf dem KO "Index der Schaltuhr" zugewiesen. Flag Schreiben auf der dem sendenden KO ist aktiviert, Lesen auf X1 Seite
3. DPT ist 17.001
4. Der Gruppenmonitor zeigt die GA mit dem erwarteten Wert für die Szenennr. auf dem Bus
Aber der X1 tut nix. Ich habe extra eine existierende Zeitschaltuhr benutzt, die definitiv funktioniert. Ich habe auf dem Gerätedatenpunkt für die Zeitschaltuhr mit und ohne KNX-Integration versucht. Wie gesagt wird die GA mit korrektem Inhalt auf den Bus gesendet.
Was mach ich falsch?
Zum manuellen Auslösen musst du auf den Ausführen Datenpunkt schreiben, den du schon im Bild markiert hast.
Zum einfachen Testen kannst du auch einfach mal über den GPA Datenpunktmonitor die Szenennummer auf den Datenpunkt schreiben.
Wenn du dies in der Logik oder über eine Visu-Funktion machen möchtest, kannst du dort einfach diesen Datenpunkt auswählen.
Wenn du das aber über KNX machen möchtest, musst du die KNX-Integration für diesen Datenpunkt aktivieren. Bei "Senden" kommt die Gruppenadresse rein, auf die von außen die Szenennummer geschrieben wird. Status/Rückmeldung kannst du verbinden, musst du aber nicht.
x1-timer-1.png
x1-timer-2.png
x1-timer-3.pngAngehängte Dateien
Einen Kommentar schreiben:
-
Kommst du denn auch in diesen Zustand, wenn du nicht die Logik-Seite öffnest, sondern nur die normale Seite? Denn so wie ich das sehe, sollte das nur passieren, wenn du die Logikseite öffnest und beim Sammeln der Logikdaten der Prozess durch ein out-of-memory sich beendet.Zitat von hyman Beitrag anzeigenWenn es also mit den Fremdbausteinen zu tun hat, muss es irgend was geben, was das neue Web-Interface mit denen anders macht als das alte.
Die neue Webseite macht über JavaScript Anfragen an die interne Webservice-API. Beim Aufruf der Logikseite macht diese API dann wiederum einen Aufruf an die LogicEngine, um die Logik-Informationen zu bekommen. Diese Anfrage ist jedoch exakt die gleiche auf der alten Webseite.Zitat von hyman Beitrag anzeigenUnd warum weigert sich das neue Webinterface, mir auch nur den Login-Screen zu zeigen, während alles andere übers Netzwerk (ping, altes Web-Interface, Datenpunkt-Monitor) gleichzeitig tut?
Hier ist nur der Unterschied, dass für die alte Webseite das HTML der kompletten Seite immer selbst zusammengebaut wird, bei neuen Webseite dies aber dynamisch über API Aufrufe nachgeladen wird.
Da hier der Webservice ja scheinbar beim Abrufen der Logikinformationen blockierend in einer Endlosschleife stecken bleibt, können auch keine anderen Unterseiten mehr aufgerufen werden.
Aber da ja der gleiche API Aufruf zum Sammeln der Logikinformationen gemacht wird, sollte ebenfalls bei der Verwendung der alten Webseite noch manchmal der mono-Prozess abstürzen. Da der Prozess aber automatisch wieder neu gestartet wirst, bekommst du davon nur vielleicht nichts mit.
Einen Kommentar schreiben:
-
Ja, ich habe natürlich haufenweise
in meinem Projekt.Zitat von jb1 Beitrag anzeigeneigenen Logikbausteine oder welche von Drittanbietern
Aber die laufen seit Monaten stabil. Und wie ich schon schrieb: Das Problem ...
Wenn es also mit den Fremdbausteinen zu tun hat, muss es irgend was geben, was das neue Web-Interface mit denen anders macht als das alte.Zitat von hyman Beitrag anzeigenPassiert immer nur, wenn ich das neue Webinterface benutze.
Und warum weigert sich das neue Webinterface, mir auch nur den Login-Screen zu zeigen, während alles andere übers Netzwerk (ping, altes Web-Interface, Datenpunkt-Monitor) gleichzeitig tut?
Einen Kommentar schreiben:
-
Bitte mal den Ball flach halten...
Ich frage mich, wie du zu einem out of memory auf dem X1 gekommen bist. Du wirst vermutlich irgendwelche eigenen Logikbausteine oder welche von Drittanbietern haben, die ein Speicherleck haben.
Eine Übersicht zum aktuellen Speicherverbrauch auf dem X1 kannst du dir auf der neuen oder alten Webseite angucken (Diagnose -> Prozesse bzw. "view more information" -> System Overview).
Die neue genau wie die alte Webseite macht nur beim Aufruf der Unterseite für die Logik einen API Aufruf an die LogicEngine, um eine Übersicht der geladenen Bausteine/Blätter und deren Werte zu bekommen.
Ich kann hier bei der neuen Webseite allerdings feststellen, dass scheinbar ein Timeout beim Abrufen des Logik-Status fehlt. Wenn ich den mono Prozess manuell beende und gleichzeitig den Status abrufe, geht der Abruf wie erwartet ins Leere.
Daraufhin startet wie erwartet die LogicEngine automatisch neu, die Webservice-API der neue Webseite wartet aber immer noch und blockiert somit die Webseite.
Diesen Fehler werde ich mal eintragen.
Einen Kommentar schreiben:
-
Keine Sorge, da liest nicht nur einer mit...Zitat von martiko Beitrag anzeigenIch bin nicht sicher, wie aktiv die hier mitlesen...
Einen Kommentar schreiben:


Einen Kommentar schreiben: