Ergebnis 1 bis 4 von 4
-
24.02.2020, 14:05 #1
- Registriert seit
- 15.07.2017
- Beiträge
- 3
- Thanks (gegeben)
- 0
- Thanks (bekommen)
- 0
- Total Downloaded
- 104,51 MB
- Total Downloaded
- 104,51 MB
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)
Grüsse OsssiGeändert von osssi (24.02.2020 um 15:54 Uhr)
-
Advertising
-
24.02.2020, 18:27 #2
- Registriert seit
- 05.04.2013
- Beiträge
- 597
- Thanks (gegeben)
- 204
- Thanks (bekommen)
- 214
- Total Downloaded
- 5,76 MB
- Total Downloaded
- 5,76 MB
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 = ""
-
Danke - 1 ThanksPapi2000 bedankten sich
-
24.02.2020, 20:16 #3
- Registriert seit
- 15.07.2017
- Beiträge
- 3
- Thanks (gegeben)
- 0
- Thanks (bekommen)
- 0
- Total Downloaded
- 104,51 MB
- Total Downloaded
- 104,51 MB
ThemenstarterDanke 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
-
25.02.2020, 22:33 #4
- Registriert seit
- 15.07.2017
- Beiträge
- 3
- Thanks (gegeben)
- 0
- Thanks (bekommen)
- 0
- Total Downloaded
- 104,51 MB
- Total Downloaded
- 104,51 MB
ThemenstarterSo, es ist vollbracht. Bringt genau das erwünschte Ergebnis.
Code:from enigma import eServiceReference, eServiceCenter
Besten Dank nochmal!
Lesezeichen