Ankündigung

Einklappen
Keine Ankündigung bisher.

Gira X1

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Zitat von jb1 Beitrag anzeigen
    Kommst du denn auch in diesen Zustand, wenn du nicht die Logik-Seite öffnest, sondern nur die normale Seite?
    Mal ausprobieren ...

    Zitat von jb1 Beitrag anzeigen
    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.
    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...

    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

    Kommentar


      Erst mal auf den Status geschaut ohne das neue Webinterface benutzt zu haben:
      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
      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?

      Einen Neustart später sieht es jedenfalls schon ganz anders aus:

      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
      Jetzt sind alle Prozesse deutlich kleiner, am deutlichsten aber der iscwebservice.

      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 ...

      Kommentar


        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 ...

        Kommentar


          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.

          Kommentar


            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 ...

            Kommentar


              PS: mono hat aktuell immer zwischen 105 und 120M

              Kommentar


                PPS: Bei iscwebservice @ 770M hab' ich den Tab mit dem neuen Webinterface jetzt mal zu gemacht. Mal schauen, was jetzt passiert...

                Kommentar


                  PPPS: Nix passiert mehr: iscwebservice immer noch bei 770M

                  Kommentar


                    ... und kaum macht man die Logikübersicht wieder auf (noch nicht mal ein Logikblatt aufgeklappt), frisst der iscwebservice schon wieder Speicher: aktuell schon über 800M; Tendenz weiter steigend. Kann es sein, dass der ständig alle Logikblätter abfragt, obwohl alle zugeklappt sind?

                    Kommentar


                      Soeben wurde mono neu gestartet nach out-of-memory-exception (bei iscwebservice @ 770M).

                      Jetzt zeigt auch das neue Web-Interface "Verbindungsfehler" und tut nix mehr -- vermutlich auch Speichermangel. Im iscwebapi.log gibt es allerdings keine aktuellen Einträge, obwohl seit 20:35 (iscwebservice @ 100..200M) im iscwebapi.log alle paar Sekunden folgendes geloggt wurde:
                      Code:
                      20-05-25 20:35:09.451 [1995853840] ERROR root, operator() ApiSession.cpp:271 - Try to run mount, but an error occurred: Cannot allocate memory
                      20-05-25 20:35:09.454 [1995853840] FATAL root, operator() ApiSession.cpp:752 - Could not check whether the SD card is present: system:12, Cannot allocate memory
                      20-05-25 20:35:09.458 [1995853840] ERROR root, operator() ApiSession.cpp:322 - Try to run hostname, but an error occurred: Cannot allocate memory
                      20-05-25 20:35:09.461 [1995853840] FATAL root, operator() ApiSession.cpp:761 - Could not determine the hostname: system:12, Cannot allocate memory
                      Um 20:57 (iscwebservice @ 200..300M) hören diese Einträge auf -- seither Stille.

                      Kommentar


                        Nach einem Reboot des X1 lasse ich jetzt seit über 2 Stunden die alte Logikseite alle 10s neu laden (also schon etwa 600..800mal). Bisher sind alle Prozesse brav klein und haben ihre Original-Prozess-ID (also keine Neustarts) ... ich lass' das jetzt noch in paar Stunden weiter laufen, erwarte aber keine dramatische Entwicklung mehr.

                        Mein vorläufiges Fazit deckt sich mit dem schon eingangs stark vermuteten: Irgendwo in der Art, wie das neue Webinterface die Daten abholt, ist der Wurm drin. Wundert mich eigentlich, dass sich sonst noch keiner mit diesem Problem gemeldet hat ... das könnte darauf hin deuten, dass es nur unter speziellen Umständen auftritt. Wäre gut, wenn noch der eine andere ein bißchen experimentieren und seine Beobachtungen hier mitteilen könnte.

                        Jochen, danke für Deine Zusage, da zeitnah danach zu schauen. Wenn noch weitere Daten benötigt werden ... ich unterstütze gerne.

                        Grüße von Horst

                        Kommentar


                          Fehler ist gefunden und behoben, es fehlte ein virtueller Destructor bei einem Objekt, das für das Zusammenbauen des Logikstatus benutzt wird.

                          Die alte Gerätewebseite nutzt den Webservice auch gar nicht, daher siehst du dort auch keinen Speicheranstieg.

                          Allgemein steigt der Speicherverbrauch auch abhängig von der Anzahl der Bausteine, die man hat. Bei einem kleinen Projekt hat der Speicherverbrauch erst nach einigen Minuten ganz langsam angefangen zu steigen, aber mit 250 Bausteinen kann man das gut beobachten.

                          Die neue Webseite macht ja im Hintergrund alle 5 Sekunden einen Aufruf für den Logikstatus, daher empfehle ich, die Logikseite nicht lange Zeit offen zu halten und zur Logikanalyse bevorzugt die alte Seite unter https://<geräte-ip>:4433/discovery/logic/ zu benutzen

                          Auf den anderen Unterseiten Geräteinformationen, Sonos und Diagnose gibt es keine Probleme.

                          Kommentar


                            Hallo Jochen,

                            Das ist eine gute Nachricht. Kommt der Fix schon mit dem nächsten Firmware-Update? Wenn ja, kannst Du schon sagen, wann etwa?

                            Zitat von jb1 Beitrag anzeigen
                            Allgemein steigt der Speicherverbrauch auch abhängig von der Anzahl der Bausteine, die man hat. Bei einem kleinen Projekt hat der Speicherverbrauch erst nach einigen Minuten ganz langsam angefangen zu steigen, aber mit 250 Bausteinen kann man das gut beobachten.
                            Bei mir gut 650 Bausteine, davon ca. 110 Third-Party und ca. 230 Ein-/Ausgänge. Das könnte natürlich erklären, warum ich stärker betroffen bin als andere.

                            Danke und Grüße von Horst

                            Kommentar


                              Hallo Kelvin ,


                              Können Sie einen Screenshot davon machen, wie der HTTP-Befehl eingestellt werden sollte ?
                              Ich kann es nicht tun

                              AV.JPG


                              Zitat von Kelvingradcelsius Beitrag anzeigen

                              Hallo zusammen,

                              mit den Web Request oder HTTP Get Bausteinen ist dies nun möglich. Vorausgesetzt der Reveicer unterstützt die Befehle. Habe einen Denon AVR X4500H mit 3 Zonen. Hier funktioniert es wunderbar. Marantz müsste aufgrund derselben Bauart ebenso fuktionieren. Denke, dass auch die anderen (Onkyo, Pioneer, ...) derartgie Befehle unterstützen.

                              Hier ein kurzes Beispiel. Kurze Taste auf umschalten. Wechselt damit zwischen ZSQuick1 (Radiosender + Volume hinterlegt) und 2. Lange Taste schaltet die Zone aus.

                              http://IP-Receiver/goform/formiPhone...t.xml?Z3QUICK1
                              http://IP-Receiver/goform/formiPhone...t.xml?Z3QUICK2
                              http://IP-Receiver/goform/formiPhoneAppDirect.xml?Z3OFF

                              Daher an dieser Stelle ausdrücklichen Dank an die Entwickler der Bausteine hier dalbuschat

                              Christian

                              Kommentar


                                Zitat von alorenzen Beitrag anzeigen
                                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.
                                Sieht doch gut gelöst aus

                                Aber scheinbar verwendest du jetzt die Zeitschaltuhren ohne Schaltzeiten, dann hättest du auch gleich Szenensets verwenden können
                                Zum einen haben die nämlich auch alle ein KO in der ETS zum auslösen einer bestimmten Szene im Szenenset (dies wäre nämlich auch der Datenpunkt Execute), zum anderen kannst du da im GPA auch weitere Auslöse-Datenpunkte hinzufügen. Das könnten dann z.B. auch Gruppenadress-Datenpunkte sein, auf die Szenennummer geschrieben wird.

                                Kommentar

                                Lädt...
                                X