[Gelöst] Zeichen Ersetzen Userreading

Begonnen von flolee, 08 Juni 2017, 10:54:35

Vorheriges Thema - Nächstes Thema

flolee

hallo allerseits!

folgendes problem mit meiner dreambox: das Enigma-modul gibt die servicereference des aktuell laufenden programms in der form X:X:XX:..:X: aus (z.B.
1:0:19:72:D:85:C00000:0:0:0: ). nun möchte ich diese benutzen um zur entsprechenden URL des passenden picons zu kommen, welche wie folgt aufgebaut ist: URL/X_X_XX_..._X.svg . die URL sollte als userreading hinterlegt werden.
ich spiele nun schon seit Ewigkeiten mit diversen codeschnipsel aus dem Forum herum, scheitere aber schon alleine am ersetzen der : mit _ und dem entfernen des letzten ":" in der servicereference. hätte hier irgendwer einen tipp für mich? ich wäre äußerst dankbar :)

lg,
flo


defmod SATReceiver ENIGMA2
attr SATReceiver alias Dreambox
attr SATReceiver bouquet-radio 1:7:2:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.radio" ORDER BY bouquet
attr SATReceiver bouquet-tv 1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.tv" ORDER BY Bouquet
attr SATReceiver group Multimedia
attr SATReceiver icon dreambox
attr SATReceiver model DM900
attr SATReceiver stateFormat Aktuell: currentTitle
attr SATReceiver webCmd channel:on:off

setstate SATReceiver Aktuell: EHF CL: Telekom Veszprém (HUN) - Paris Saint-Germain HB (FRA), Halbfinale 1 Final Four in Köln
setstate SATReceiver 2017-06-08 10:40:12 PiconServRef Error evaluating SATReceiver userReading PiconServRef: Bareword "_" not allowed while "strict subs" in use at (eval 560251) line 1.\
Bareword "g" not allowed while "strict subs" in use at (eval 560251) line 1.\

setstate SATReceiver 2017-06-08 10:49:27 acg 0
setstate SATReceiver 2017-06-08 10:40:12 apid 1026
setstate SATReceiver 2017-06-08 10:49:27 ber 0
setstate SATReceiver 2017-06-08 10:40:12 channel Sky_Sport_2_HD
setstate SATReceiver 2017-06-08 09:51:09 channelList setstate SATReceiver 2017-06-08 10:40:12 currentMedia 1:0:19:72:D:85:C00000:0:0:0:
setstate SATReceiver 2017-06-08 10:40:12 currentTitle EHF CL: Telekom Veszprém (HUN) - Paris Saint-Germain HB (FRA), Halbfinale 1 Final Four in Köln
setstate SATReceiver 2017-06-06 22:47:33 enigmaversion 4.3.1r7-2017-05-23
setstate SATReceiver 2017-06-08 10:49:27 eventcurrenttime 1496911767.64
setstate SATReceiver 2017-06-08 10:49:27 eventcurrenttime_hr 10:49:27
setstate SATReceiver 2017-06-08 10:49:27 eventcurrenttime_next 1496911767.65
setstate SATReceiver 2017-06-08 10:49:27 eventcurrenttime_next_hr 10:49:27
setstate SATReceiver 2017-06-08 10:40:12 eventdescription Handball: Velux EHF Champions League Telekom Veszprém (HUN) - Paris Saint-Germain HB (FRA), Halbfinale 1 Final Four in Köln
setstate SATReceiver 2017-06-08 10:40:12 eventdescription_next Handball: Velux EHF Champions League HC Vardar Skopje (MKD) - FC Barcelona Lassa (ESP), Halbfinale 2 Final Four in Köln
setstate SATReceiver 2017-06-08 10:40:12 eventdescriptionextended Endlich mal die Finger an die CL-Trophäe bekommen! So lautet das Motto von Paris Saint-Germain HB und Telekom Veszprém für das diesjährige Final4 in Köln. Denn obwohl die beiden europäischen Schwergewichte in der Champions League regelmäßig Handball der Spitzenklasse zeigen, blieb ihnen der ganz große Wurf bisher verwehrt. Die Ungarn, in der Heimat 24-maliger Meister, sind bereits zum vierten Mal in Folge für das Endrundenturnier in Köln qualifiziert. Im vergangenen Jahr unterlagen sie dem KS Kielce im Finale mit 38:39 nach Siebenmeterwerfen. Im letzten Final4 verlor PSG ebenfalls gegen den späteren Titelträger aus Polen, musste sich im Halbfinale mit 26:28 geschlagen geben. Kommentar: Karsten Petrzika.
setstate SATReceiver 2017-06-08 10:40:12 eventdescriptionextended_next Neunmaliger Königsklassen-Champ gegen mazedonischen Außenseiter: Auf dem Papier klingt die Halbfinal-Partie zwischen dem FC Barcelona und Skopje nach einer klaren Sache. Zumal die Katalanen, nachdem sie vergangenes Jahr das Final4 verpassten, endlich wieder zeigen wollen, wer "rechtmäßig" auf den Thron gehört. Im Viertelfinale revanchierten sie sich beim THW Kiel (26:28, 23:18), der im letzten Jahr noch die Oberhand hatte. Skopje zeigte sich in der bisherigen Saison auch sehr souverän, warf zuletzt Flensburg raus (26:24, 35:27). Gelingt den Mazedoniern die große Überraschung? Mit dem KS Kielce als Final4-Sieger hatten im vergangenen Jahr auch die wenigsten gerechnet. Kommentar: Karsten Petrzika.
setstate SATReceiver 2017-06-08 10:40:12 eventduration 7200
setstate SATReceiver 2017-06-08 10:40:12 eventduration_hr 02:00:00
setstate SATReceiver 2017-06-08 10:40:12 eventduration_next 7200
setstate SATReceiver 2017-06-08 10:40:12 eventduration_next_hr 02:00:00
setstate SATReceiver 2017-06-08 10:40:12 eventname EHF CL: Telekom Veszprém (HUN) - Paris Saint-Germain HB (FRA), Halbfinale 1 Final Four in Köln
setstate SATReceiver 2017-06-08 10:40:12 eventname_next EHF CL: HC Vardar Skopje (MKD) - FC Barcelona Lassa (ESP), Halbfinale 2 Final Four in Köln
setstate SATReceiver 2017-06-08 10:49:27 eventremaining 4233
setstate SATReceiver 2017-06-08 10:49:27 eventremaining_hr 01:10:33
setstate SATReceiver 2017-06-08 10:40:12 eventremaining_next 7200
setstate SATReceiver 2017-06-08 10:40:12 eventremaining_next_hr 02:00:00
setstate SATReceiver 2017-06-08 10:40:12 eventstart 1496908800
setstate SATReceiver 2017-06-08 10:40:12 eventstart_hr 10:00:00
setstate SATReceiver 2017-06-08 10:40:12 eventstart_next 1496916000
setstate SATReceiver 2017-06-08 10:40:12 eventstart_next_hr 12:00:00
setstate SATReceiver 2017-06-08 10:40:12 eventtitle EHF CL: Telekom Veszprém (HUN) - Paris Saint-Germain HB (FRA), Halbfinale 1 Final Four in Köln
setstate SATReceiver 2017-06-08 10:40:12 eventtitle_next EHF CL: HC Vardar Skopje (MKD) - FC Barcelona Lassa (ESP), Halbfinale 2 Final Four in Köln
setstate SATReceiver 2017-06-06 22:47:33 fpversion None
setstate SATReceiver 2017-05-31 23:38:35 hdd1_capacity 2000.398
setstate SATReceiver 2017-06-05 22:59:57 hdd1_free 0.0
setstate SATReceiver 2017-05-31 23:38:35 hdd1_model ATA-SAMSUNG HD204UI
setstate SATReceiver 2017-06-06 22:47:33 imageversion Experimental 2017-05-23
setstate SATReceiver 2017-06-08 09:51:09 input tv
setstate SATReceiver 2017-04-24 19:18:52 inputList tv,radio
setstate SATReceiver 2017-06-06 23:36:36 iswidescreen -
setstate SATReceiver 2017-06-06 22:47:33 model dm900
setstate SATReceiver 2017-06-08 09:51:09 mute off
setstate SATReceiver 2017-06-08 10:40:12 nextTitle EHF CL: HC Vardar Skopje (MKD) - FC Barcelona Lassa (ESP), Halbfinale 2 Final Four in Köln
setstate SATReceiver 2017-06-08 10:32:29 onid 133
setstate SATReceiver 2017-06-08 10:40:12 pcrpid 1023
setstate SATReceiver 2017-06-08 10:40:14 pmtpid 99
setstate SATReceiver 2017-06-08 09:51:09 power on
setstate SATReceiver 2017-06-08 09:51:09 presence present
setstate SATReceiver 2017-06-08 10:32:29 providername SKY
setstate SATReceiver 2017-06-06 00:06:20 recordings 0
setstate SATReceiver 2017-05-19 22:26:59 recordings_error 0
setstate SATReceiver 2017-06-06 22:47:33 recordings_finished 0
setstate SATReceiver 2017-05-31 23:38:34 recordings_next 0
setstate SATReceiver 2017-05-31 23:38:34 recordings_next_counter 0
setstate SATReceiver 2017-05-31 23:38:34 recordings_next_counter_hr -
setstate SATReceiver 2017-05-31 23:38:34 recordings_next_hr -
setstate SATReceiver 2017-05-31 23:38:34 recordings_next_name -
setstate SATReceiver 2017-05-31 23:38:34 recordings_next_servicename -
setstate SATReceiver 2017-06-08 10:40:12 servicename Sky Sport 2 HD
setstate SATReceiver 2017-06-08 10:40:12 servicereference 1:0:19:72:D:85:C00000:0:0:0:
setstate SATReceiver 2017-06-08 10:34:24 servicevideosize 1920x1080
setstate SATReceiver 2017-06-08 10:40:12 sid 114
setstate SATReceiver 2017-06-08 10:49:27 snr 100
setstate SATReceiver 2017-06-08 10:49:27 snrdb 16.50
setstate SATReceiver 2017-06-08 09:51:09 state on
setstate SATReceiver 2017-06-08 09:51:09 stateAV on
setstate SATReceiver 2017-06-08 10:40:12 tsid 13
setstate SATReceiver 2017-04-24 19:24:24 tuner_a1 Si2166B (DVB-S2)
setstate SATReceiver 2017-04-24 19:24:24 tuner_a2 Si2166B (DVB-S2)
setstate SATReceiver 2017-06-08 10:34:24 txtpid 32
setstate SATReceiver 2017-06-08 10:34:24 videoheight 1080
setstate SATReceiver 2017-06-08 10:34:24 videowidth 1920
setstate SATReceiver 2017-06-07 19:00:23 volume 100
setstate SATReceiver 2017-06-08 10:40:12 vpid 1023
setstate SATReceiver 2017-06-06 22:47:33 webifversion 1.8.0

DeeSPe

Damit entfernst Du den letzten : und ersetzt die verbleibenden : mit _;

my $string = "1:0:19:72:D:85:C00000:0:0:0:";
$string =~ s/:$//;
$string =~ s/:/_/g;


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Amenophis86

Noch ein Hinweis, bitte keine RAW-Definition eines Device posten, sondern ein list. Erhälst du mittels "list <device>" in der Konsole. Da stehen die wichtigen Informationen drinnen.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

igami

Zitat von: Amenophis86 am 08 Juni 2017, 11:32:31
Noch ein Hinweis, bitte keine RAW-Definition eines Device posten, sondern ein list. Erhälst du mittels "list <device>" in der Konsole. Da stehen die wichtigen Informationen drinnen.
Ich finde beides hat seine Berechtigung ;)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

flolee

super, vielen, vielen dank dan!

ist eigentlich schon etwas peinlich angesichts der einfachheit... aber ich glaub ich hab ich mich mit den verschiedenen codeschnipsel hier ziemlich verlaufen :(

so funktionierts jedenfalls:
PiconServRef { my $string = ReadingsVal("SATReceiver","servicereference",0); $string =~ s/:$//; $string =~ s/:/_/g; return $string }

danke Amenophis86, wir notiert fürs nächste mal!

lg,
flo

Amenophis86

Zitat von: igami am 08 Juni 2017, 12:20:20
Ich finde beides hat seine Berechtigung ;)

Was siehste denn bei nem defmod, was du bei nem list nicht siehst? Bei nem list siehst du doch direkt viel mehr. Lasse mich aber gerne eines besseren Belehren :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

igami

Zitat von: Amenophis86 am 08 Juni 2017, 12:52:58
Was siehste denn bei nem defmod, was du bei nem list nicht siehst? Bei nem list siehst du doch direkt viel mehr. Lasse mich aber gerne eines besseren Belehren :)
Einfach kopieren um bei mir das Problem nachzustellen bzw. eine Lösung zu testen.
Am besten wäre es, wenn man beides bekommt.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Amenophis86

Bevor eine Grundsatzdiskussion entsteht ;) :
Ich finde ein list vorerst besser, da man meist einen Fehler erkennt, ohne ihn nachstellen zu müssen. Dafür werden oft mehr Informationen gebraucht, als ein defmod liefert. Sollte man natürlich die Sache nachstellen wollen, ist ein defmod besser. Daher sagen wir einfach, dass wir beide Recht haben und dankbar sind, wenn wir wenigstens eins der beiden bekommen :D
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

DeeSPe

Zitat von: flolee am 08 Juni 2017, 12:23:36
ist eigentlich schon etwas peinlich angesichts der einfachheit... aber ich glaub ich hab ich mich mit den verschiedenen codeschnipsel hier ziemlich verlaufen :(

RegEx ist eigentlich sehr einfach!
Wenn man es denn mal verstanden hat... 8)

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

flolee

haha, ja alles ist einfach wenn mans verstanden hat  ;D

vielleicht noch eine fragen, das KODI-modul gibt die thumbnail-url raw wie folgt aus:

image://https%3a%2f%2fwww.skygo.sky.de%2fbin%2fPicture%2f721%2fC_1_Picture_156260_content_4.jpg/

da ich nun den ersten und letzten teil (also "image://"  und "/") gar nicht brauchte, komme ich wie folgt zu einer "normalen" URL im userreading:

HttpThumbnail { my $string = ReadingsVal("KODI","thumbnail",0); $string =~ s/image:\/\///; $string =~ s/%3a/:/g; $string =~ s/%2f/\//g; $string =~ s/\/$//; return $string;}

wie würde ich allerdings mit einem split zu dieser lösung kommen, also wenn man später alle teile benötigen würde und diese nicht einfach mit "nix" ersetzen kann? hab da einiges probiert aber es hat entweder nur zu einem return von "1" oder einem error geführt.

danke schon mal :)

lg,
flo

DeeSPe

Das sollte so gehen (ungetestet):

HttpThumbnail {(split /\//,ReadingsVal("KODI","thumbnail","image://https%3a%2f%2fwww.skygo.sky.de%2fbin%2fPicture%2f721%2fC_1_Picture_156260_content_4.jpg/"))[2]}

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe