Transparentes PNG über das laufende Programm einblenden

Hier kommen die Skripte rein, die von euch erstellt wurden.
Nachricht
Autor
Benutzeravatar
gogobog2
Beginners
Beginners
Beiträge: 10
Registriert: 15 Jan 2025 19:24
Receiver 1: Vu+Duo4KSE
Receiver 2: DM920
Hat gedankt: 14 Mal
Hat Dank erhalten: 6 Mal

Transparentes PNG über das laufende Programm einblenden

#1

Beitrag von gogobog2 »

Hallo zusammen

Ich habe mir ein Shell-Script gebastelt, das OpenVPN einschaltet und überwacht – es funktioniert einwandfrei.
Leider habe ich eine instabile Internetverbindung, wodurch das VPN ab und zu disconnected.

Nun hatte ich die Idee, den VPN-Status abzufragen und mir eine Nachricht auf dem Bildschirm anzeigen zu lassen und zwar so:

wget -qO- 'http://127.0.0.1/web/message?type=1&tim ... t=VPN%20ON'
wget -qO- 'http://127.0.0.1/web/message?type=1&tim ... =VPN%20OFF'


Das funktioniert perfekt aber das Problem ist, dass diese Nachrichten mitten auf dem Bildschirm erscheinen und während des Schauens stören.
Deshalb kam mir die Idee, stattdessen einen kleinen grünen Punkt (für „VPN an“) oder einen roten Punkt (für „VPN aus“) am
unteren linken Bildrand dauerhaft anzuzeigen, das würde nicht stören.

Ich habe bereits einige Stunden gegoogelt und im Forum gesucht, aber leider nichts gefunden das in diese Richtung ging.

Die Bilder zu erstellen, ist kein Problem – ich benötige nur Hilfe beim Skripten der anzeige von png über das laufende program.

Ich bin mir nicht sicher, ob ich das über einen „Skin“ machen muss oder ob es einen wget-Befehl oder einen anderen Shell-Befehl gibt,
mit dem sich transparente png Bilder über das laufende Programm anzeigen lassen.

Hat jemand eine Idee, wie ich das per Shell-Script umsetzen könnte?

Liebe Grüsse
openf@n
Beginners
Beginners
Beiträge: 1
Registriert: 27 Dez 2023 09:37
Hat Dank erhalten: 1 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#2

Beitrag von openf@n »

dafür würde ich mir einen Renderer bauen und den VPN Status in der Infobar anzeigen lassen

das Script "befüllt" ein /tmp file mit dem Status on oder off
der Renderer zeigt je nach Inhalt des Statusfiles = Status das png im infobar screen an - die Position kann je nach Skin auch ausserhalb der Infobar Leiste sein

Ich hatte mir mal so die Raumtemperatur und Luftfeuchtigkeit der Kelleräume in der 2nd Infobar anzeigen lassen, die Daten wurden vom Raspberry Pi auf einen NFS share der Box geschrieben und der Renderer hat die Daten dort ausgelesen
Benutzeravatar
gogobog2
Beginners
Beginners
Beiträge: 10
Registriert: 15 Jan 2025 19:24
Receiver 1: Vu+Duo4KSE
Receiver 2: DM920
Hat gedankt: 14 Mal
Hat Dank erhalten: 6 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#3

Beitrag von gogobog2 »

@openf@n Danke :clapping:

Dann muss mich mich mal einlesen was ein Renderer ist und wie der funktioniert.
Ich stelle mir vor das könnte ein python script sein ? Der dann das Bild aufruft...?

Da muss ich noch viel lernen - weiss jemand ob man nicht einen bestehenden Renderer/Python
script benutzen kann um ein Bild auf den Screen zu zaubern ?

Mit meinem minimalen Verständnis sollte das doch einfach sein.
Benutzeravatar
hammu
Senior member
Senior member
Beiträge: 2275
Registriert: 20 Jun 2018 09:37
Wohnort: OWL
Receiver 1: Gigablue UE 4K mit 7.4 und 7.5
Receiver 2: Gigablue UHD TRIO4K mit 7.4 und 7.5
Receiver 3: Gigablue Quadplus mit 7.4
Receiver 4: Gigablue Ultra UE mit 7.4
Receiver 5: div. alte Boxen
Hat gedankt: 331 Mal
Hat Dank erhalten: 1190 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#4

Beitrag von hammu »

Einfach ist das nicht.
Du brauchst erstmal einen OSD-Screen, z.B. die schon existierende Infobar
Darin platziertst Du erstmal die pixmap für "Verbindung aus".
Dann musst Du im Skin ein widget platzieren nach dem Schema
<widget source=XXX render=pixmap ..............>
Dann eine Source definieren, in der die Information steht oder in eine bereits vorhandene Source (z.B FrontendInfo.py) einbauen.
Die muss dann einen Boolean-Ausdruck zurückgeben können.
Dann einen Converter erstellen oder in einen vorhandenen (z.B. FrontendInfo.py) einbauen.
Nicht verwirren lassen, Source und Converter können identische Dateinamen haben.
Der Converter liest dann den Boolean-Wert aus und über ein "ConditionalShowHide" legt dann das widget die pixmap für "Verbindung ein" über die andere.
Und Du brauchst natürlich noch ein Signal, das der Source mitteilt, wenn sich der Verbindungszustand geändert hat.

Klingt kompliziert?
Ist es auch und durch ein bisschen Lesen nicht schnell umgesetzt.

HIER stehen einige Grundlagen zur Skinfunktion.
Wie man Sources und Converter genau aufbaut und wie sie miteinander korrespondieren, dazu gibt es leider keine Anleitungen-
Benutzeravatar
gogobog2
Beginners
Beginners
Beiträge: 10
Registriert: 15 Jan 2025 19:24
Receiver 1: Vu+Duo4KSE
Receiver 2: DM920
Hat gedankt: 14 Mal
Hat Dank erhalten: 6 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#5

Beitrag von gogobog2 »

@hammu danke

Ich muss dieses Projekt wohl aufgeben. Ich habe mich eingelesen und einiges mit Hilfe von ChatGPT ausprobiert. Auf einer DM920, die ich habe, ging das Platzieren eines Bildes mit ffmpeg ganz einfach so:

Code: Alles auswählen

ffmpeg -i /home/root/Bilder/bild.png -f fbdev -pix_fmt bgra /dev/fb0
Jedoch funktioniert derselbe Befehl auf der VU+Duo4K zwar ohne Fehlerausgabe im Terminal, aber es wird kein Bild auf dem Bildschirm angezeigt.

ChatGPT meinte, dass in gewissen Enigma2-Versionen die Befehle manchmal nur funktionieren, wenn man sie im Enigma2-Umfeld unter einem anderen Kontext ausführt. Also habe ich Enigma2 mit init 4 beendet, und plötzlich funktionierte der Befehl:

Code: Alles auswählen

ffmpeg -i /home/root/Bilder/bild.png -f fbdev -pix_fmt bgra /dev/fb0
dann auch auf der Vu+Box. Aber das kann ja nicht die Lösung sein. Ich möchte ja ein Fernsehbild mit einem PNG überlagern.

Wenn mir hier keiner der Python-Programmierer :clapping: weiterhelfen oder etwas programmieren kann, muss ich das Projekt wohl aufgeben.
Für mich ist das mit dem Python script und den Renderern zu schwierig :yu:

Ich verstehe einfach nicht, warum es so schwierig ist, ein Bild anzuzeigen – Menüs und Co. funktionieren ja problemlos :dance:
4l3x2k
VIP
VIP
Beiträge: 1534
Registriert: 20 Dez 2016 10:06
Hat gedankt: 399 Mal
Hat Dank erhalten: 825 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#6

Beitrag von 4l3x2k »

vielleicht findest du hier was als ausgangspunkt / vorlage

viewtopic.php?t=21609

viewtopic.php?p=500917#p500917
Benutzeravatar
hammu
Senior member
Senior member
Beiträge: 2275
Registriert: 20 Jun 2018 09:37
Wohnort: OWL
Receiver 1: Gigablue UE 4K mit 7.4 und 7.5
Receiver 2: Gigablue UHD TRIO4K mit 7.4 und 7.5
Receiver 3: Gigablue Quadplus mit 7.4
Receiver 4: Gigablue Ultra UE mit 7.4
Receiver 5: div. alte Boxen
Hat gedankt: 331 Mal
Hat Dank erhalten: 1190 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#7

Beitrag von hammu »

Ich verstehe einfach nicht, warum es so schwierig ist, ein Bild anzuzeigen – Menüs und Co. funktionieren ja problemlos
Menüs, Setups, MessageBox, Volume, Mute usw.
funktionieren alle nach demselben Prinzip:
screen > widget > source > renderer > converter
das Ganze dann in einer skin.xml konfiguriert
im Hintergrund noch das Image, das die Daten generiert und die Screenaufrufe steuert.
Ist eben keine Konsolenanwendung sondern eine hochkomplexe Sache. :derisive:
input2
Member
Member
Beiträge: 107
Registriert: 28 Jan 2016 21:48
Receiver 1: Mutant HD66se
Hat gedankt: 9 Mal
Hat Dank erhalten: 23 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#8

Beitrag von input2 »

Ich hab mir sowas für "openpli" zurechtgebastelt. Die Anzeige ist in der Infobar und wird sofort erneuert.
Im Anhang die "ObsVpn.py" nach: /usr/lib/enigma2/python/Components/Converter
und den Text in Deinen Skin in die "skin.xml" einfügen. Dein Skin ist unter: /usr/share/enigma2 . Im Text kannst Du über "position und size"
die Größe und die Position ändern. Zum editieren Notepad++ oder gleichwertigen Edtitor nutzen.
Den Pfad in der "ObsVpn.py" (für "tun0.inet" und "wg0") hab ich von "openpli" für "Pure2" geändert. Ich hoffe der ist auch für "opnatv" richtig,
ansonsten mußt Du halt mal suchen,wo die Dateien sind.
Damit sollte es für openvpn und wireguard funktionieren. Beim mir funktioniert es damit (VPN rot-keine Verbindung, VPN grün Verbindung)
Vpn.rar
(888 Bytes) 15-mal heruntergeladen
Benutzeravatar
gogobog2
Beginners
Beginners
Beiträge: 10
Registriert: 15 Jan 2025 19:24
Receiver 1: Vu+Duo4KSE
Receiver 2: DM920
Hat gedankt: 14 Mal
Hat Dank erhalten: 6 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#9

Beitrag von gogobog2 »

@4l3x2k, hammu und input2 DANKE :clapping: !

Vielen Dank für eure Tipps! Ich habe das ganze Wochenende damit verbracht und brauche jetzt erst mal etwas Zeit, um das sacken zu lassen. Danach werde ich die VPN.rar entpacken und das ausprobieren.

Ich bin übrigens immer noch auf der Suche nach einer Lösung, um per Shell-Skript ein PNG über das OSD einzublenden. Ich erwähne das hier noch einmal, falls jemand vorbeikommt, für den das ein Klacks wäre :good: .
Benutzeravatar
gogobog2
Beginners
Beginners
Beiträge: 10
Registriert: 15 Jan 2025 19:24
Receiver 1: Vu+Duo4KSE
Receiver 2: DM920
Hat gedankt: 14 Mal
Hat Dank erhalten: 6 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#10

Beitrag von gogobog2 »

Ich habe das rar entpackt und mir mit Hilfe von ChatGPT die Datei umschreiben lassen sodass es OpenVPN via ifconfig als source für die Überprüfung von VPN genommen wird, bin nicht sicher ob das funktioniert kenne ja Python nicht aber sieht nicht schlecht aus...

Code: Alles auswählen

import os
import re
import subprocess
from Components.Converter.Converter import Converter
from Components.Element import cached

class ObsVpn(Converter, object):
    VPNLOAD = 0

    def __init__(self, type):
        Converter.__init__(self, type)
        if type == 'vpn':
            self.type = self.VPNLOAD

    @cached
    def getBoolean(self):
        # Ausführen von ifconfig und Prüfen, ob 'tun0' im Output enthalten ist
        try:
            result = subprocess.check_output(["ifconfig"], universal_newlines=True)
            # Überprüfen, ob "tun0" im Output vorhanden ist
            if "tun0" in result:
                return True
            else:
                return False
        except subprocess.CalledProcessError:
            return False

    boolean = property(getBoolean)

    def changed(self, what):
        Converter.changed(self, what)
Jedoch wird auf der info Tafel nichts angezeigt ?

ich habe sicher was falsch gemacht :boredom: !


Den XML Text habe ich in diese Datei zu oberst nach dem Absatz <skin> eingefügt

Code: Alles auswählen

<!-- !!!copied and changed file!!! -->
<skin>
### VPN-Anzeige	    
    <eLabel text="VPN" position="130,966" size="100,55" zPosition="1" font="FHD;40" foregroundColor="#00ff2300" halign="center" backgroundColor="transpBlack" transparent="1" />  
    <widget source="session.FrontendStatus" render="FixedLabel" text="VPN" position="130,966" size="100,55" zPosition="3" font="FHD;40" halign="center" foregroundColor="#0000f700" backgroundColor="transpBlack" transparent="1">
      <convert type="ObsVpn">vpn</convert>
      <convert type="ConditionalShowHide" />
    </widget>
<!-- cf#_#start -->
	<!-- MetrixHD v2.5 by iMaxxx | optimized for openATV 4.0 -->
	<!-- MetrixHD v3.0 by openATV Team  -->
	<!-- recommended to use with XPicons -->
	<!-- Explicitly, no one is allowed to use any version of the Skin with other team Images -->
	
und zwar in dieser Datei: /usr/share/enigma2/MetrixHD/skin.xml ist das richtig ?

Dies hat leider keine Veränderung des Bildschirms gebracht.

Auch ist mir aufgefallen dass das enigma2 vom phyton script nach Neustart nicht automatisch eine ObsVpn.pyc erstellt hat ?
Ich habe dies dann manuell so bewerkstelligt:

Code: Alles auswählen

dos2unix /usr/lib/enigma2/python/Components/Converter/ObsVpn.py
python -m compileall /usr/lib/enigma2/python/Components/Converter/ObsVpn.py
Aber auch nach einem Neustart sehe ich keine Änderung der Info Anzeige.
Hat da jemand noch einen Tipp :declare: ?
Benutzeravatar
hammu
Senior member
Senior member
Beiträge: 2275
Registriert: 20 Jun 2018 09:37
Wohnort: OWL
Receiver 1: Gigablue UE 4K mit 7.4 und 7.5
Receiver 2: Gigablue UHD TRIO4K mit 7.4 und 7.5
Receiver 3: Gigablue Quadplus mit 7.4
Receiver 4: Gigablue Ultra UE mit 7.4
Receiver 5: div. alte Boxen
Hat gedankt: 331 Mal
Hat Dank erhalten: 1190 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#11

Beitrag von hammu »

Der xml-Teil gehört in die Datei skin_infobar.xml unter diese Zeile:

Code: Alles auswählen

<screen name="InfoBar" backgroundColor="transparent" flags="wfNoBorder" position="0,0" size="1280,720" title="InfoBar">
Es ist aber davon abzuraten, in den Originaldateien von Metrix herumzuschrauben. Da wäre ein Skinpart besser. Im Forum gibt es dazu Anleitungen.
Zum Testen geht das natürlich.

Meine .py(s) werden alle bei Neustart in pyc kompiliert. Keine Ahnung was da los ist.
Benutzeravatar
Mr.Servo
Developer
Developer
Beiträge: 2989
Registriert: 10 Aug 2020 22:09
Wohnort: Pfalz / Palatinate
Receiver 1: GigaBlue UE 4K Cable (OpenATV 7.5.1)
Receiver 2: Mut@nt HD51 4K Cable (OpenATV 7.6)
Receiver 3: VU+ Uno 4K Cable (OpenATV 7.5.1)
Hat gedankt: 2052 Mal
Hat Dank erhalten: 2498 Mal
Geschlecht:

Re: Transparentes PNG über das laufende Programm einblenden

#12

Beitrag von Mr.Servo »

hammu hat geschrieben: 10 Feb 2025 12:23 Meine .py(s) werden alle bei Neustart in pyc kompiliert. Keine Ahnung was da los ist.
Wäre Schlimm wenn nicht, denn nur die compilierten .pyc sind lauffähig! Das ist aber schon immer so, das die .py im Rahmen eines GUI-Neustarts als .pyc erzeut werden. Unter Python2 hießen die noch .pyo

Gruß.....Mr.Servo
input2
Member
Member
Beiträge: 107
Registriert: 28 Jan 2016 21:48
Receiver 1: Mutant HD66se
Hat gedankt: 9 Mal
Hat Dank erhalten: 23 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#13

Beitrag von input2 »

Hallo gogobog2
Ich hab Deine geänderte "ObsVpn.py" getestet. Bei mir wird eine "ObsVpn.pyc" automatisch erzeugt, wie es sein soll und
die Anzeige für openvpn funktioniert. Wo beim Metrix der "skin.xml" Schnipsel hin muß,weiß ich nicht.
Ist der Render="FixedLabel" bei Dir vorhanden?
Hast Du in den Fonts-Ordner für die Schriften die: "FHD.ttf" ? Fonts-Ordner kann im 'Skin' oder unter "usr/share/fonts" sein.
Wenn die "FHD.ttf" nicht da ist,dann durch eine vorhandene Schrift ersetzen.
Außerdem müßen in Deinem Skin die Farben für die "VPN" Anzeige vorhanden sei, wenn nicht einfach dort wo die
anderen Farben sind mit eintragen, oder andere Farben z.bsp. "red und green" nutzen. Die sollten vorhanden sein.
<color name="unff2300" value="#00ff2300" />
<color name="unf700" value="#0000f700" />
Die Farbe für den "backgroundColor",kannst Du auch durch eine vorhandenen ersetzen. Ist erstmal nicht so wichtig.
Ich glaube, solange die "ObsVpn.pyc" nicht automatisch erzeugt wird, ist der "skin.xml" Schnipsel nicht an der richtigen Stelle.
Einen GUI-Neustart nach den Änderungen hast Du sicher gemacht?
Benutzeravatar
Mr.Servo
Developer
Developer
Beiträge: 2989
Registriert: 10 Aug 2020 22:09
Wohnort: Pfalz / Palatinate
Receiver 1: GigaBlue UE 4K Cable (OpenATV 7.5.1)
Receiver 2: Mut@nt HD51 4K Cable (OpenATV 7.6)
Receiver 3: VU+ Uno 4K Cable (OpenATV 7.5.1)
Hat gedankt: 2052 Mal
Hat Dank erhalten: 2498 Mal
Geschlecht:

Re: Transparentes PNG über das laufende Programm einblenden

#14

Beitrag von Mr.Servo »

NACHTRAG. Es kann sein, daß eine ungenutzte und ungebundene .py-Datei nur erst dann compiliert wird, wenn sie erstmalig genutzt wird...

Die meisten Plugins werden ja compiliert, da sie nach dem GUI-Neustart direkt eingebunden werden.

Sorry, das hatte ich vergessen zu erwähnen.

Gruß.....Mr.Servo
Benutzeravatar
gogobog2
Beginners
Beginners
Beiträge: 10
Registriert: 15 Jan 2025 19:24
Receiver 1: Vu+Duo4KSE
Receiver 2: DM920
Hat gedankt: 14 Mal
Hat Dank erhalten: 6 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#15

Beitrag von gogobog2 »

@input2 @Mr.Servo und @hammu, vielen Dank an alle, die mir hier geholfen haben ! :good:

Ich habe's nun tatsächlich geschafft, das ObsVpn von "input2" in den Default-Skin von OpenATV 7.5.1 einzubauen :good2:

Für alle, die das ebenfalls für OpenATV 7.5.1 umsetzen möchten, hier die nötigen Infos dazu.

In der Datei: /usr/share/enigma2/MetrixHD/skinfiles/skin_infobar.mySkin.xml

muss folgender XML-Code ganz oben im File unter der Linie <screen name="InfoBar" backgroundColor="transparent"....> eingefügt werden.

Code: Alles auswählen

<!-- ### VPN-Anzeige -->
<eLabel text="VPN OFF" position="130,130" size="200,100" zPosition="1" font="global_large;80" foregroundColor="#00ff2300" halign="center" backgroundColor="text-background" transparent="1" />  
<widget source="session.FrontendStatus" render="FixedLabel" text="VPN ON" position="130,130" size="200,100" zPosition="3" font="global_large;80" halign="center" foregroundColor="#0000f700" backgroundColor="text-background" transparent="1">
	<convert type="ObsVpn">vpn</convert>
	<convert type="ConditionalShowHide" />
</widget>
<color name="unff2300" value="#00ff2300" />
<color name="unf700" value="#0000f700" />


Der Motor des Ganzen ist ein Python-Skript, das kontinuierlich überwacht, ob eine VPN-Verbindung besteht.
Er muss hier hin: /usr/lib/enigma2/python/Components/Converter/ObsVpn.py


Code: Alles auswählen

import os
import re
import subprocess
from Components.Converter.Converter import Converter
from Components.Element import cached

class ObsVpn(Converter, object):
    VPNLOAD = 0

    def __init__(self, type):
        Converter.__init__(self, type)
        if type == 'vpn':
            self.type = self.VPNLOAD

    @cached
    def getBoolean(self):
        # Ausf¸hren von ifconfig und Pr¸fen, ob 'tun0' im Output enthalten ist
        try:
            result = subprocess.check_output(["ifconfig"], universal_newlines=True)
            # ‹berpr¸fen, ob "tun0" im Output vorhanden ist
            if "tun0" in result:
                return True
            else:
                return False
        except subprocess.CalledProcessError:
            return False

    boolean = property(getBoolean)

    def changed(self, what):
        Converter.changed(self, what)


So sieht das dann am TV aus:

Bild

Alles läuft nun perfekt :cool: ist VPN an ist die Schrift grün anderen falls rot !

Nun zu meinem ursprünglichen Wunsch:
Ich hätte gerne, dass ein Bild oder ein Text dauerhaft über dem Fernsehbild angezeigt wird. Natürlich in kleiner und unauffälliger Form, damit es nicht stört – aber das kann ich später anpassen.

Hat nun jemand eine Idee, wie ich die bestehende ObsVpn-Kombo so umprogrammieren kann, dass ich sie per Shell-Skript starten und auf dem Bildschirm permanent anzeigen kann (OHNE INFO-PANNEL -> nur das wort VPN) – bis ich es dann bei Bedarf mit einem Shell-Script wieder ausblende ?

Danke schon mal für eure Tipps !
Benutzeravatar
Mr.Servo
Developer
Developer
Beiträge: 2989
Registriert: 10 Aug 2020 22:09
Wohnort: Pfalz / Palatinate
Receiver 1: GigaBlue UE 4K Cable (OpenATV 7.5.1)
Receiver 2: Mut@nt HD51 4K Cable (OpenATV 7.6)
Receiver 3: VU+ Uno 4K Cable (OpenATV 7.5.1)
Hat gedankt: 2052 Mal
Hat Dank erhalten: 2498 Mal
Geschlecht:

Re: Transparentes PNG über das laufende Programm einblenden

#16

Beitrag von Mr.Servo »

Vorsichtig gesprochen: Besser wäre es das komplett in Python als kleines Plugin zu machen, dann hat es Hand und Fuß.

Dann könnte man es z.B. auf die Taste "Info - lang" setzen und auch im laufenden Betrieb deaktivieren / aktivieren.

In wieweit traust Du Dir sowas prinzipiell zu? Mit Hilfe natürlich!

Gruß.....Mr.Servo
input2
Member
Member
Beiträge: 107
Registriert: 28 Jan 2016 21:48
Receiver 1: Mutant HD66se
Hat gedankt: 9 Mal
Hat Dank erhalten: 23 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#17

Beitrag von input2 »

Hier gibt es eine Script-Sammlung.
viewtopic.php?t=55752

Da ist eventuell etwas dabei, was du nutzen kannst.
z.b. gibt es ein "VPN Verbindung bei zb: Zwangstrennung automatisch neustarten" Script.
Damit kannst du vielleicht dein Problem mit dem Internetzug umgeben.
Benutzeravatar
gogobog2
Beginners
Beginners
Beiträge: 10
Registriert: 15 Jan 2025 19:24
Receiver 1: Vu+Duo4KSE
Receiver 2: DM920
Hat gedankt: 14 Mal
Hat Dank erhalten: 6 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#18

Beitrag von gogobog2 »

@input2

Danke für den Link! Die Skripte zum Starten, Stoppen und Überwachen des VPN-Zugangs habe ich bereits selbst geschrieben.

Ich erledige das alles über Shell-Skripte – damit kenne ich mich gut aus. Die Überwachung läuft über ein Shell-Skript, das jede Minute per Cron-Job ausgeführt wird. Das funktioniert alles bereits einwandfrei.

Als kleines Sahnehäubchen habe ich mir die Herausforderung gesetzt, den VPN-Status (oder später auch andere Informationen) als Bild auf dem laufenden Bildschirm anzuzeigen :yes4: . Ich hätte nie gedacht, dass das mit Enigma2 so kompliziert ist! Ich hatte gehofft, dass ein einzelner Shell-Befehl dafür ausreicht – aber man lernt nie aus :D


@Mr.Servo

Ein Plugin in Python zu schreiben wäre für mich eine ganz neue Baustelle. Generell habe ich nichts gegen Herausforderungen :good: , aber ehrlich gesagt kenne ich mich mit Python nicht aus. Zudem fehlt mir das Wissen, wie ich ein Bild an ein Python-Skript übergeben könnte, damit es dann auf dem Bildschirm erscheint.

Lange Rede, kurzer Sinn: Ich bräuchte dabei eine Menge Unterstützung von euch. Falls jemand helfen kann, bin ich aber gerne dabei :good2:

Liebe Grüsse gogobog2
Benutzeravatar
hammu
Senior member
Senior member
Beiträge: 2275
Registriert: 20 Jun 2018 09:37
Wohnort: OWL
Receiver 1: Gigablue UE 4K mit 7.4 und 7.5
Receiver 2: Gigablue UHD TRIO4K mit 7.4 und 7.5
Receiver 3: Gigablue Quadplus mit 7.4
Receiver 4: Gigablue Ultra UE mit 7.4
Receiver 5: div. alte Boxen
Hat gedankt: 331 Mal
Hat Dank erhalten: 1190 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#19

Beitrag von hammu »

Nach Deinen bisherigen Erfolgsberichten würde ich schliessen : Du schaffst das!
Man darf sich nur nicht selbst unter Druck setzen. Zur Erweiterung von E2-Systemen kommst Du an Python nicht vorbei. Deine Aufgabe ist überschaubar und lösbar. Das wird am Besten mit einem Plugin gehen, das auf die GUI Zugriff hat und Skinkomponenten enthält. Da ist die Shell wohl raus.
Hier mal ein paar Grundlagen zu Plugins: Klick
Python ist relativ einfach aber sehr effektiv und eher leicht zu lernen, besonders wenn man Programmiererfahrung hat.
Hier findet man hilfreiche Informationen zu Enigma2/openATV im Detail: Klick

Kommt Zeit, kommt Plugin :yes:
Benutzeravatar
gogobog2
Beginners
Beginners
Beiträge: 10
Registriert: 15 Jan 2025 19:24
Receiver 1: Vu+Duo4KSE
Receiver 2: DM920
Hat gedankt: 14 Mal
Hat Dank erhalten: 6 Mal

Re: Transparentes PNG über das laufende Programm einblenden

#20

Beitrag von gogobog2 »

@hammu Danke für die Blumen :D


Ich bin mir nicht sicher, ob ich das hinbekomme. In den letzten Tagen habe ich mich bereits intensiv mit dieser Option auseinandergesetzt.

ChatGPT hat mir einige Plugin-Skripte vorgeschlagen, die tatsächlich funktionierende Plugins erzeugt haben – sie waren sogar im Extension-GUI sichtbar und haben irgendetwas gemacht.

Aber… :beee:

Bei all diesen Plugins habe ich es nie geschafft, sie von ausserhalb von Enigma2 zu starten!

Was ich meine: Wenn ich beispielsweise aus einem Cron-Job heraus versuche, ein Plugin zu starten – etwa so:

Code: Alles auswählen

python -c "from Plugins.Extensions.ShowPicture.plugin import startPlugin; startPlugin(None)"
Dann bekomme ich immer eine Fehlermeldung ähnlich wie diese:

Code: Alles auswählen

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'Plugins'
Laut ChatGPT liegt das daran, dass ich das Plugin aus dem falschen Kontext starte – also ausserhalb von Enigma2 – und deshalb dieser Fehler auftritt.


Starte ich dasselbe Plugin jedoch über das Erweiterungsmenü der GUI oder aus der Skriptverwaltung heraus, funktioniert alles einwandfrei ?


Nur :black_eye: wenn ich es von ausserhalb Enigma2 starten will (z. B. wie gesagt aus einem Cron-Job), kommen die Errors, und das Python file wird nicht mehr als solches ausgeführt – aber genau das wäre ja mein Ziel.

Darum bin ich unsicher, ob sich der Aufwand lohnt mich noch weiter in das Thema einzuarbeiten, oder ob mein Ziel schlicht unerreichbar ist.

Vielleicht ist dies eine Begrenzung/Sicherheitsaspekt/Design des enigma2 Systems das gar nicht umgangen werden kann.

Hat jemand eine Idee oder Erklärung dazu?
Zuletzt geändert von gogobog2 am 13 Feb 2025 15:29, insgesamt 1-mal geändert.
Antworten

Zurück zu „Skripte“