Ergebnis 1 bis 4 von 4
  1. #1
    Anfänger
    Registriert seit
    15.07.2017
    Beiträge
    3
    Thanks (gegeben)
    0
    Thanks (bekommen)
    0
    Total Downloaded
    104,51 MB
    Total Downloaded
    104,51 MB
    ReceiverDanke

    Aktuellen Sendernamen in Plugin auslesen,

    Servus,

    ich schreibe gerade ein Plugin um meine Ip-Cams mit PTZ mit der Fernbedienung des Receivers zu steuern. Die Streams der Cams sind als rtsp-stream in die Kanalliste eingebunden. Nach Aufruf des Plugins erscheint ein Hinweis das die Steuerung aktiv ist. Alles funktioniert wie es soll.
    Ich versuche nun schon etliche Tage zu programmieren, dass beim Start des Plugins eine Abfrage des Sendernamens/Kameranamens erfolgt und je nachdem dann die entsprechende Kamera angesteuert wird.
    Bisher sieht der Code so aus. Das Problem ist der subprocess. Auf der python-Kommandzeile erhalte ich den Sendernamen, im Plugin wird er nicht übernommen. Der Weg übers webif ist sicher nicht der einfachste, einen anderen kenne ich nicht.
    Vielleicht hat einer einen Hinweis wie ich den Sendernamen als Variable in das Plugin bekomme?

    Code:
    from Screens.Screen import Screen
    from Components.ActionMap import ActionMap 
    from Plugins.Plugin import PluginDescriptor
    import os
    import subprocess
    
    ###########################################################################
    
    cams = subprocess.Popen(['wget -O - -q http://xxx:xxx@192.xxx.xxx.xxx/web/getcurrent | grep "\(<\|</\)e2servicename" | sed "s/.*<e2servicename>\(.*\)<\/e2servicename.*/\\1/"'], stdout=subprocess.PIPE, shell=True).communicate()[0]
    
    
    class PTZAktivScreen(Screen):
        skin = """
            <screen position="100,100" size="230,60">
            <eLabel text="PTZ aktiv" position="10,10" size="210,50" font="Regular;40" backgroundColor="#102e59" />
            </screen>"""
    
            def __init__(self, session, args = None):
            self.session = session
            Screen.__init__(self, session)
                    if cams == "Magnum":
                    self["myActionMap"] = ActionMap(["SetupActions","WizardActions","KeyboardInputActions","HotkeyActions"],
                    {
                           "cancel": self.close,
                        "ok": self.close,
                        "left": self.left,
                        "right": self.right,
                        "up": self.up,
                        "down": self.down,
                        "1": self.preset1,
                        "2": self.preset2,
                        "3": self.preset3,
                        "4": self.preset4,
                        "5": self.preset5,
                        "6": self.preset6,
                        "7": self.preset7,
                        "8": self.preset8,
                        "9": self.preset9,
                        "0": self.preset10,
                        "channelup": self.tele,
                        "channeldown": self.wide,
                        "rec": self.record,
                        "subtitle": self.close
                        }, -1)
                    elif cams == "Vogelvilla":
                    self["myActionMap"] = ActionMap(["SetupActions","WizardActions","KeyboardInputActions","HotkeyActions"],
                    {
                           "cancel": self.close,
                        "ok": self.close,
                        "left": self.leftv,
                        "right": self.rightv,
                        "up": self.upv,
                        "down": self.downv,
                        "1": self.preset1v,
                        "2": self.preset2v,
                        "3": self.preset3v,
                        "4": self.preset4v,
                        "5": self.preset5v,
                        "6": self.preset6v,
                        "7": self.preset7v,
                        "8": self.preset8v,
                        "9": self.preset9v,
                        "0": self.preset10v,
                        "channelup": self.telev,
                        "channeldown": self.widev,
                        "rec": self.recordv,
                        "subtitle": self.close
                        }, -1)
                    else:
                        self["myActionMap"] = ActionMap(["SetupActions","WizardActions","KeyboardInputActions","HotkeyActions"],
                        {
                        "cancel": self.close,
                        "ok": self.close
                        },-1)
                        
    
            def left(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=moveConLeft&xge=30&yge=30" http://192.168.163.5/zm/index.php > /dev/null')
            def right(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=moveConRight&xge=30&yge=30" http://192.168.163.5/zm/index.php > /dev/null')
            def up(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=moveConUp&xge=30&yge=30" http://192.168.163.5/zm/index.php > /dev/null')
            def down(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=moveConDown&xge=30&yge=30" http://192.168.163.5/zm/index.php > /dev/null')
            def tele(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=zoomConTele&xge=30&yge=30" http://192.168.163.5/zm/index.php > /dev/null')
            def wide(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=zoomConWide&xge=30&yge=30" http://192.168.163.5/zm/index.php > /dev/null')
            def preset1(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=presetGoto1" http://192.168.163.5/zm/index.php > /dev/null')
            def preset2(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=presetGoto2" http://192.168.163.5/zm/index.php > /dev/null')
            def preset3(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=presetGoto3" http://192.168.163.5/zm/index.php > /dev/null')
            def preset4(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=presetGoto4" http://192.168.163.5/zm/index.php > /dev/null')
            def preset5(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=presetGoto5" http://192.168.163.5/zm/index.php > /dev/null')
            def preset6(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=presetGoto6" http://192.168.163.5/zm/index.php > /dev/null')
            def preset7(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=presetGoto7" http://192.168.163.5/zm/index.php > /dev/null')
            def preset8(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=presetGoto8" http://192.168.163.5/zm/index.php > /dev/null')
            def preset9(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=presetGoto9" http://192.168.163.5/zm/index.php > /dev/null')
            def preset10(self):
                    os.system('curl --silent --data "view=request&request=control&id=1&control=presetGoto10" http://192.168.163.5/zm/index.php > /dev/null')
            def record(self):
                    os.system('ffmpeg -t 60 -i "rtsp://192.168.163.31:554/stream0?username=xxx&password=xxx" -vcodec copy "/media/net/Aufnahmen_ab_09.2019/Cams/Vogelvilla/Vv_$(date +%Y%m%d-%H%M).mp4"')
    
    ##############
    
            def leftv(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=moveConLeft&xge=30&yge=30" http://192.168.163.5/zm/index.php > /dev/null')
            def rightv(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=moveConRight&xge=30&yge=30" http://192.168.163.5/zm/index.php > /dev/null')
            def upv(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=moveConUp&xge=30&yge=30" http://192.168.163.5/zm/index.php > /dev/null')
            def downv(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=moveConDown&xge=30&yge=30" http://192.168.163.5/zm/index.php > /dev/null')
            def telev(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=zoomConTele&xge=30&yge=30" http://192.168.163.5/zm/index.php > /dev/null')
            def widev(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=zoomConWide&xge=30&yge=30" http://192.168.163.5/zm/index.php > /dev/null')
            def preset1v(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=presetGoto1" http://192.168.163.5/zm/index.php > /dev/null')
            def preset2v(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=presetGoto2" http://192.168.163.5/zm/index.php > /dev/null')
            def preset3v(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=presetGoto3" http://192.168.163.5/zm/index.php > /dev/null')
            def preset4v(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=presetGoto4" http://192.168.163.5/zm/index.php > /dev/null')
            def preset5v(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=presetGoto5" http://192.168.163.5/zm/index.php > /dev/null')
            def preset6v(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=presetGoto6" http://192.168.163.5/zm/index.php > /dev/null')
            def preset7v(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=presetGoto7" http://192.168.163.5/zm/index.php > /dev/null')
            def preset8v(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=presetGoto8" http://192.168.163.5/zm/index.php > /dev/null')
            def preset9v(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=presetGoto9" http://192.168.163.5/zm/index.php > /dev/null')
            def preset10v(self):
                    os.system('curl --silent --data "view=request&request=control&id=2&control=presetGoto10" http://192.168.163.5/zm/index.php > /dev/null')
            def recordv(self):
                    os.system('ffmpeg -t 60 -i "rtsp://192.168.163.31:554/stream0?username=xxxxx&password=xxxxxx" -vcodec copy "/media/net/Aufnahmen_ab_09.2019/Cams/Vogelvilla/Vv_$(date +%Y%m%d-%H%M).mp4"')
    
    ###########################################################################
    
    def main(session, **kwargs):
        print "\n[Hallo World] start\n"
        
        session.open(PTZAktivScreen)
    
    ###########################################################################
    
    def Plugins(**kwargs):
        return PluginDescriptor(
                name="PTZ",
                description="Kameras steuern",
                where = PluginDescriptor.WHERE_PLUGINMENU,
                icon="./ipcam.png",
                fnc=main)
    Besten Dank im Voraus!

    Grüsse Osssi
    Geändert von osssi (24.02.2020 um 15:54 Uhr)

    •   Alt Advertising

       

  2. #2
    Avatar von Topfi
    Registriert seit
    05.04.2013
    Beiträge
    597
    Thanks (gegeben)
    204
    Thanks (bekommen)
    214
    Total Downloaded
    5,76 MB
    Total Downloaded
    5,76 MB
    ReceiverDanke
    Ui, das ist ja von hinten durch die Brust ins Auge...

    Evtl. verstehe ich dich falsch, aber die Info solltest du über die session rausbekommen, die dem Plugin ja in __init__ übergeben wird.
    Hier ein etwas älterer Codeschnipsel aus einem anderen Plugin, ich hoffe, das passt im aktuellen Enigma2 noch so:

    Code:
    		# Get Channelname
    		sref = self.session.nav.getCurrentlyPlayingServiceReference()
    		if sref is not None:
    			ref = eServiceReference(sref.toString())
    			ref.setName("")
    			serviceHandler = eServiceCenter.getInstance()
    			info = serviceHandler.info(ref)
    			channel_name = info and info.getName(ref).replace('\xc2\x86', '').replace('\xc2\x87', '').decode("utf-8", "ignore").encode("utf-8") or ""
    			self.serviceref = ref.toString()
    		else:
    			channel_name = ""
    			self.serviceref = ""

  3. Thanks Papi2000 bedankten sich
  4. #3
    Anfänger
    Registriert seit
    15.07.2017
    Beiträge
    3
    Thanks (gegeben)
    0
    Thanks (bekommen)
    0
    Themenstarter
    Total Downloaded
    104,51 MB
    Total Downloaded
    104,51 MB
    ReceiverDanke
    Danke erst mal. Kann's grad nicht testen...
    Das mein Weg nicht der direkteste ist, war mir bewusst, alles ist "mühevollst" zusammengecopypasted! Mangels besseren Wissens.

    Grüsse

  5. #4
    Anfänger
    Registriert seit
    15.07.2017
    Beiträge
    3
    Thanks (gegeben)
    0
    Thanks (bekommen)
    0
    Themenstarter
    Total Downloaded
    104,51 MB
    Total Downloaded
    104,51 MB
    ReceiverDanke
    So, es ist vollbracht. Bringt genau das erwünschte Ergebnis.

    Code:
    from enigma import eServiceReference, eServiceCenter
    muss noch am Script-Anfang eingefügt werden, dann läufts.

    Besten Dank nochmal!


Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 Uhr.
Powered by vBulletin® Version 4.2.5 (Deutsch)
Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.
Resources saved on this page: MySQL 5,56%
Parts of this site powered by vBulletin Mods & Addons from DragonByte Technologies Ltd. (Details)
vBulletin Skin By: PurevB.com