Ankündigung

Einklappen
Keine Ankündigung bisher.

EibPC neu starten

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

    #16
    Was Du damit erreichen möchtest, entspricht aber eher einem "flush"-Komando, mit dem man das sofortige Schreiben aller noch nur in Buffern stehender Daten auf den Datenträger erzwingt. Ein solcher Befehl fehlt dem EibPC wohl auch noch...
    Das mit einem reboot zu erledigen ist mit Kanonen auf Spatzen schießen.
    Abgesehen davon soll das Flash ja auch möglichst wenig beschrieben werden.

    Wie sehr verzögert der EibPC denn das Speichern ins Flash überhaupt?
    Tessi

    Kommentar


      #17
      Zitat von Tessi Beitrag anzeigen
      Was Du damit erreichen möchtest, entspricht aber eher einem "flush"-Komando.
      Och Mensch, jetzt hast Du mich erkannt. Aber es ist ja durchaus sinnvoll das zu kombinieren. Wir haben hier ja nun auch keine Objekt-orientierte Programmiersprache mit einem Destruktor, der die Aufräumarbeit erledigt.

      Abgesehen davon soll das Flash ja auch möglichst wenig beschrieben werden.
      Wie sehr verzögert der EibPC denn das Speichern ins Flash überhaupt?
      Der EibPC selber wohl gar nicht (mutwillig). Das ist eine Frage der Programmtechnik. (delay)

      Bei meinen Remanentspeicher-Makros habe ich das Speichern der remanenten Daten um einen Zeitraum von 30 Sekunden verzögert. Ich benutze das z.B. um die Solltemperaturen meiner Raumtemperaturregler damit dauerhaft zu speichern. Wenn ich dann über das Webinterface diesen Wert ändere, dann wird nicht sofort bei jeder Änderung ins Flash geschrieben sondern erst nach dieser Wartezeit.

      Aber heute Abend ist mir noch ein Grund aufgefallen, warum es sinnvoll sein könnte ein reboot() nachzurüsten: Bei einem Neustart nach Programmierung war mir aufgefallen, das der KNX IP-Router von einem anderen Gerät in Beschlag genommen worden ist. Das Resultat ist, das kein einziges Telegramm ausgetauscht werden konnte. Nun hatte ich ja glücklicherweise das Eibstudio und konnte den EibPC damit neu starten um den Router wieder davon zu überzeugen doch lieber mit dem EibPC zusammenzuarbeiten. Würde mir das aber fehlen und hätte ich keinen Zugang zum Versorgungsraum könnte ich nicht mal einen Neustart durch Stecker ziehen.
      Zugegebenermaßen eine blöde Konstellation aber immerhin durchaus möglicher Fall.

      In diesem Zusammenhang wäre es natürlich auch schön gewesen, wenn ich mit dem Programm den EibPC hätte fragen können: Bist Du lieber EibPC am Bus aktiv und hast Du in letzter Zeit mal was empfangen?
      Dafür werde ich mir wohl als nächstes ein Makro stricken. Oder habt ihr für sowas schon was in Planung maestrii enertexi?

      Gruß,
      Bernd

      Kommentar


        #18
        Zitat von bmx Beitrag anzeigen
        Aber heute Abend ist mir noch ein Grund aufgefallen, warum es sinnvoll sein könnte ein reboot() nachzurüsten: Bei einem Neustart nach Programmierung war mir aufgefallen, das der KNX IP-Router von einem anderen Gerät in Beschlag genommen worden ist. Das Resultat ist, das kein einziges Telegramm ausgetauscht werden konnte. Nun hatte ich ja glücklicherweise das Eibstudio und konnte den EibPC damit neu starten um den Router wieder davon zu überzeugen doch lieber mit dem EibPC zusammenzuarbeiten.
        Was war denn das andere Gerät und warum war der Tunnel nach dem Neustart wieder frei? Solange der IP Router oder das andere Gerät den Tunnel nicht per Disconnect freigeben, kann der EibPC nicht verbinden.
        Und wenn ich es richtig in Erinnerung habe, versucht der EibPC auch im Betrieb laufend eine Verbindung aufzubauen, bis es mal klappt.
        Firma: Enertex Bayern GmbH, Ebermannstädter Straße 8, 91301 Forchheim
        Amazon: KNXnet/IP Router
        , KNXnet/IP Interface

        Kommentar


          #19
          Zitat von bmx Beitrag anzeigen
          Aber es ist ja durchaus sinnvoll das zu kombinieren. Wir haben hier ja nun auch keine Objekt-orientierte Programmiersprache mit einem Destruktor, der die Aufräumarbeit erledigt.
          Dann haben wir aber auch keinen Konstuktor, der mal eben hinter unserem Rücken Speicher belegt. Soweit ich weiß, sind alle Variablen statisch - wie die lokalen Variablen in Makros verwaltet werden, weiß ich jetzt nicht genau, aber entweder sind auch sie statisch oder existieren nur für den kurzen Moment der Makroauswertung...
          Es dürfte da eigentlich keine Speicherlecks geben...
          Gut, für den Webserver kann ich da keine Aussagen machen...

          Zitat von bmx Beitrag anzeigen
          Der EibPC selber wohl gar nicht (mutwillig). Das ist eine Frage der Programmtechnik. (delay)
          Eben, da läßt sich sicher ein Weg finden, ohne die Reset-Keule "aufzuräumen", mehr als alle Variablen neu zu initialisieren dürfte ja nicht notwendig sein und GAs zu resetten macht keinen Sinn, ich brauche deren aktuellen Wert ja meistens und müßte ihn dann extra wieder neu anfordern - was ich aber auch ohne reset kann.

          Zitat von bmx Beitrag anzeigen
          Bei meinen Remanentspeicher-Makros habe ich das Speichern der remanenten Daten um einen Zeitraum von 30 Sekunden verzögert. Ich benutze das z.B. um die Solltemperaturen meiner Raumtemperaturregler damit dauerhaft zu speichern. Wenn ich dann über das Webinterface diesen Wert ändere, dann wird nicht sofort bei jeder Änderung ins Flash geschrieben sondern erst nach dieser Wartezeit.
          Also weniger als 30s dauert ein Reset aber auch nicht. Außerdem verlierst Du beim Reset die Verbindung zum Webserver, das willst Du doch nicht wirklich, oder?

          Zitat von bmx Beitrag anzeigen
          Aber heute Abend ist mir noch ein Grund aufgefallen, warum es sinnvoll sein könnte ein reboot() nachzurüsten: Bei einem Neustart nach Programmierung war mir aufgefallen, das der KNX IP-Router von einem anderen Gerät in Beschlag genommen worden ist.
          An einem Resourcen-Konflikt kann ein Neustart aber auch nichts ändern...

          Zitat von bmx Beitrag anzeigen
          ...und hätte ich keinen Zugang zum Versorgungsraum könnte ich nicht mal einen Neustart durch Stecker ziehen.
          Hättest Du keinen Zugang dann würde ich davon ausgehen, das Du auch nicht dazu berechtigt bist...

          Zitat von bmx Beitrag anzeigen
          In diesem Zusammenhang wäre es natürlich auch schön gewesen, wenn ich mit dem Programm den EibPC hätte fragen können: Bist Du lieber EibPC am Bus aktiv und hast Du in letzter Zeit mal was empfangen?
          Ja, das ist schon interessanter, aber dazu würde ich einfach alle zyklisch gesendeten GAs per Timeout überwachen, sind alle gleichzeitig weg, ist entweder der Bus tot, oder meine Verbindung zu ihm unterbrochen.

          Zitat von bmx Beitrag anzeigen
          Dafür werde ich mir wohl als nächstes ein Makro stricken.
          Die Lösung würde mich dann mal interessieren.

          Zitat von salixer Beitrag anzeigen
          Was war denn das andere Gerät und warum war der Tunnel nach dem Neustart wieder frei? Solange der IP Router oder das andere Gerät den Tunnel nicht per Disconnect freigeben, kann der EibPC nicht verbinden.
          Das habe ich befürchtet.

          Zitat von salixer Beitrag anzeigen
          Und wenn ich es richtig in Erinnerung habe, versucht der EibPC auch im Betrieb laufend eine Verbindung aufzubauen, bis es mal klappt.
          Zur Beruhigung aller sollte das auch in der Dokumentation erwähnt werden (falls noch nicht geschehen).
          Tessi

          Kommentar


            #20
            Zitat von Tessi Beitrag anzeigen
            An einem Resourcen-Konflikt kann ein Neustart aber auch nichts ändern...
            Korrekt. Wenn der EibPC von sich aus versucht den Kontakt aufzunehmen ist ja alles ok. Das würde ich auch so erwarten. Ich kann leider nicht exakt aufbröseln, was da genau gelaufen ist. Jedenfall mochte er gestern nicht. Das kann aber auch daran liegen, das die Resource IP-Router nicht wieder freigegeben worden ist. Ach, wären die Enertexi doch schon weiter ...

            Das mit dem Destruktor war auch nur ein Beispiel. Es ist klar, das wir beim EibPC Programm selbst nur alles von vorne herein statisch haben.

            Worauf ich hinaus will: Es gibt Makros, die schreiben nach Änderung oder nur einmal täglich die Änderungen ins Flash. Wenn ich mich recht erinnere, habe ich das in den Enertex Flash-Makros gesehen.
            Wenn ich ein Programm neu aufspiele, dann bekommen die Makros das nicht mit. Demzufolge werden die Meßwerte seit dem letzten Flash Schreibvorgang nicht gesichert und fehlen.
            Um das zu verhindern, müßte ich mir entweder einen Button auf den Webserver legen den ich dann betätige um allen Makros kundzutun: "Jetzt Flash schreiben!"
            Oder aber ich könnte in die Firmware eine Funktion einbauen, die diese Hilfsarbeiten anstoßen kann. Nennen wir es einfach reboot().
            Ob ein Neustart nun 30 sekunden dauert oder nicht ist mir eigentlich für diesen Fall schnuppe.
            Ich hoffe ich habe mich jetzt klarer ausgedrückt.


            Zitat von Tessi
            Hättest Du keinen Zugang dann würde ich davon ausgehen, das Du auch nicht dazu berechtigt bist...
            Richtig. Aber für mich wäre es schon ein Unterschied, ob ein berechtigter User per HTTPS auf den EibPC zugreifen und ihn neu starten darf oder ob einer in meinen Verteilerraum reinläuft und da alles darf.
            Nicht falsch zu verstehen: Ich darf in meinen Verteilerraum und ich darf auch den EibPC neu starten. In diesem Zusammenhang denke ich eigentlich eher an Firmen wo der EibPC im Einsatz ist.

            Gruß,
            Bernd

            Kommentar


              #21
              Das generelle Problem ist aber, das der EibPC ja gar nicht weiß, ob und was er vor einem geplanten Shutdown speichern soll, er hat ja keine von ihm selbst verwalteten Caches...
              Er führt jeden Speicherbefehl sofort aus, sobald die programmierte Logik einen auslöst. Davor weiß er ja nicht eimal, das er je mal was speichern soll. Nur bekommt das Programm bislang von einem Reset gar nichts mit - hätte auch nichts mehr davon, da die Ausführung auch genau in dem Moment abgebrochen wird.
              Als Lösung bleibt nur, jedem verzögerten Aufruf eines Speicherbefehls einen zusätzlichen Trigger zu geben, der dann bei Bedarf auch aus der Reihe das Speichern auslösen kann.

              Was wohl noch fehlt ist die automatische Generierung eines solchen Triggersignals, das Gegenstück zum Systemstart fehlt da, würde aber auch nur beim Programmieren was nützen, bei einem richtigen Reset bekäme des Programm wohl gar keine Gelegenheit mehr überhaupt noch darauf zu reagieren...

              Ein "ferngesteuerter" Reset ginge ja über einen Schaltaktor (siehe Beitrag weiter oben).
              Ob ich aber jemandem, den ich nicht genug vertraue, um ihn an die Verteilung zu lassen, dann andererseits den EibPC programmieren lassen würde...
              Tessi

              Kommentar


                #22
                Zitat von Tessi Beitrag anzeigen
                Das generelle Problem [...] Nur bekommt das Programm bislang von einem Reset gar nichts mit.
                [...]
                Was wohl noch fehlt ist die automatische Generierung eines solchen Triggersignals, das Gegenstück zum Systemstart fehlt da, würde aber auch nur beim Programmieren was nützen, bei einem richtigen Reset bekäme des Programm wohl gar keine Gelegenheit mehr überhaupt noch darauf zu reagieren...
                Richtig, bei Stromausfall und mutwilligem Ausschalten hat man keine Chance. Aber das oben beschriebene würde ja durch die zuvor von mir beschriebene Verfahrensweise angegangen.


                Zitat von Tessi
                Ob ich aber jemandem, den ich nicht genug vertraue, um ihn an die Verteilung zu lassen, dann andererseits den EibPC programmieren lassen würde...
                Nee, programmieren lassen nicht. Eben nur neu starten bzw. herunterfahren.

                Gruß,
                Bernd

                Kommentar

                Lädt...
                X