Enigma2 per python neustarten

Wir haben aktuell ein Problem mit dem Board und arbeiten an der Lösung...
  • Hallo liebe ihad Community,


    ich habe vor kurzem damit begonnen ein Plugin für Enigma2 zu schreiben.
    Soweit komm ich auch gut voran, nur leider häng ich im Moment an einem Problem... Über die Suche und Google konnte ich leider nichts finden daher hoffe ich, dass einer von Euch mir evtl. weiter helfen kann.


    Ich würde gerne innerhalb meines Python Codes die Dreambox neustarten bzw. Enigma2 neustarten. Es sollte ein sauberer Neustart sein so, dass die EPG Daten auch erhalten bleiben.


    Wie kann ich das bewerkstelligen? Ich weiß wie ich Enigma2 und auch die ganze Box über SSH neustarte, aber wie kann ich das innerhalb von Python machen?


    Ich hoffe ihr könnt mir helfen :).


    Vielen Dank


    Gruß


    Kumaro

  • weis nicht wie deine Erfahrungen sind, werfe da erstmal mal ein paar Brocken rein :grinning_squinting_face: . Bissel selber überlegen muss schon sein :winking_face: (.. ich weis das diese Infos nicht vollständig sind ...)
    # aktuelle Einstellungen speichern (settings-Datei)
    configfile.save()
    # E2 Neutstart
    self.session.open(TryQuitMainloop, 3)


    Evtl sollte man noch ne MessageBox mit Callback für den Neustart nutzen, um dem Nutzer die Entscheidung über den Neustart zu lassen.

  • Hi, danke erstmal für deine Antwort :).


    Ich hab vielleicht vergessen zu erwähnen das ich das erste Mal mit Python programmiere und das es auch das erste Mal ist das ich mich mit enigma2 genauer beschäftige.^^



    self.session.open(TryQuitMainloop, 3) reicht als Befehl aus zum neustarten?


    Was genau macht denn TryQuitMainloop und was heißt die 3 als Parameter?


    Ich kann damit leider noch nicht viel anfangen...könntest du viell noch ein paar Broken mehr dazugeben :)?


    Danke

  • die 3 heißt E2 Neustart (1 und 2 ist glaube ich Herunterfahren und Neustart). Der Aufruf sendet einen "Befehl" an die E2-Mainloop. Es fehlen natürlich noch passende Imports:
    from Screens.Standby import TryQuitMainloop
    from Components.config import configfile
    Ansonsten sollte das so gehen. Weiterhin weis ich nicht wie weit dein Plugin ist, du brauchst aber wenigstens eine "session" (bei normaler Pluginerstellung hat man diese aber)

  • Zitat

    Originally posted by joergm6
    die 3 heißt E2 Neustart (1 und 2 ist glaube ich Herunterfahren und Neustart).


    Die aktuell jeweils unterstützten Return Codes von E2 kann man schön in /usr/bin/enigma2.sh nachlesen. Effektiv führt jeder RC, der hier nicht explizit sonderbehandelt wird, zum E2-Restart (also sowohl 0 als auch 3). Es sind wegen opkgfb inzwischen aber doch 'n paar mehr Reservierte geworden.


    HTH,
    Andre.

  • Hi, vielen Dank für eure Antwort. Das klingt doch schon mal ganz gut.
    Ja eine Session habe bereits.


    Ich komme leider erst morgen dazu es zu testen, aber ich melde mich dann noch mal zurück :)


    Vielen Dank nochmal

  • Ah ich konnte es nicht mehr abwarten^^ und habs doch noch getestet. Funktioniert wunderbar! Vielen Dank


    Jetzt würde ich gerne das sich das Plugin im Standby der Box selber aufruft.
    Kann mir evtl. jmd einen Tipp geben wo ich dazu etwas nachlesen könnte. Leider lassen sich Informationen diesbezüglich schwer finden.


    Gibt es eigentlich eine gut Enigma2 API die ihr nutzt oder woher wisst ihr die einzelnen Befehle?


    Vielen Dank nochmal u gute Nacht

  • das geht nicht. Du musst schon beim Session-Start dein Plugin initialisieren/starten und kannst dort im _init_-Teil einen Notifier platzieren, der dir eine definierte Funktion aufruft, wenn die Box in den Standby geht. z.B.
    config.misc.standbyCounter.addNotifier(self.MeineStandbyFunktion, initial_call = False)

  • Hi,
    danke für die Antwort.


    config.misc.standbyCounter.addNotifier(self.MeineStandbyFunktion, initial_call = False)


    Was genau bewirkt denn der standbyCounter? Und was genau bewirkt initial_call=false?


    Das würde dann also heißen, dass wenn die Box in Standby geht dann würde die Funktion MeineStandbyFunktion aufgerufen werden? Jedes Mal?


    Lässt sich das nicht anhand einer bestimmten Zeit fest machen? Das sie jede Nacht um 3 Uhr oder so das Plugin startet? Es gibt doch das Plugin EPG Refresh das macht es doch ähnlich glaub ich oder?


    Gruß

  • Dann ist ein Timer (eigene Python-Klasse) wohl das Richtige für deine Zwecke.


    Du kannst dir die Sourcen von z.B. EPG-Refresh ja ansehen, wie es dort gemacht wird.