(Gelöst) Notify HTTP Befehl und Variable

Begonnen von Rolfg, 12 November 2017, 12:55:58

Vorheriges Thema - Nächstes Thema

Rolfg

Hallo zusammen,

brauche mal wieder eure Hilfe. ich versuche mich darin eine Fernbedienung für DVB Viewer über TabletUI zu basteln. Über HTTP Befehle kann ich den DVB Viewer steuern. Direkt aus TabletUI geht nicht wirklich. Dann wird immer eine leere Webseite geladen. Also über Fhem mit Dummy und Notify.

Hier mein Dummy:

Internals:
   CFGFN
   NAME       d_Fernseh_Programm
   NR         3992
   STATE      -c:11110
   TYPE       dummy
   READINGS:
     2017-11-12 12:34:56   state           -c:11110
Attributes:
   room       Wohnzimmer


Hier das Notify:

Internals:
   CFGFN
   DEF        d_Fernseh_Programm:.*
{
my $xy = Value("d_Fernseh_Programm");;
{ GetFileFromURL("user:passwort@192.168.xxx.15:8089", "/api/dvbcommand.html?target=Video&cmd=$xy") }}
   NAME       N_Fernseh_Programm
   NOTIFYDEV  d_Fernseh_Programm
   NR         4414
   NTFY_ORDER 50-N_Fernseh_Programm
   REGEXP     d_Fernseh_Programm:.*
   STATE      2017-11-12 12:34:56
   TYPE       notify
   READINGS:
     2017-11-12 12:34:40   state           active
Attributes:
   room       Wohnzimmer_Technik
   verbose    5


Das steht im Logfile:


2017.11.12 12:34:55 4: N_Fernseh_Programm exec {
my $xy = Value("d_Fernseh_Programm");;;;
{ GetFileFromURL("user:passwort@192.168.xxx.15:8089", "/api/dvbcommand.html?target=Video&cmd=$xy") }}



Es sieht für mich so aus, als ob er die Variable nicht füllt oder nicht auflöst. Habe es auch schon versucht ohne variable direkt mit $EVENT, ging aber auch nicht.

Das kommt im Event Monitor beim druck auf den Button in TabletUI


2017-11-12 12:52:30 dummy d_Fernseh_Programm  -c:11110


Weiß jemand wo mein Fehler ist?

Danke und Gruß Rolf

Rolfg

Hallo,

als update. So funktioniert der Befehl.


d_Fernseh_Programm:.*
{ GetFileFromURL('http://user:passwort@192.168.xx.15:8089/api/dvbcommand.html?target=Video&cmd=-c:10301')


Aber ich schaffe es einfach nicht "-c:10301" durch eine Variable zu ersetzen. Weil -c:10301 für jeden Sender anders ist.
Vielleicht hat ja jemand eine Idee wie ich das lösen kann.

Danke und Gruß Rolf

Rolfg

Ein letztes update:

Dieser Befehl funktioniert und schaltet den Sender um:


d_Fernseh_Programm:.*
{ GetFileFromURL('http://user:passwort@192.168.xxx.15:8089/api/dvbcommand.html?target=Video&cmd=-c:10301') }


Folgender Log Eintrag:


2017.11.12 16:12:46 4: N_Fernseh_Programm exec { GetFileFromURL('http://user:passwort@192.168.xxx.15:8089/api/dvbcommand.html?target=Video&cmd=-c:10301') }


Folgendes funktioniert nicht:


d_Fernseh_Programm:.*
{
my $x = "GetFileFromURL('http://admin:votec%40192.168.178.15:8089/api/dvbcommand.html?target=Video&cmd=";;
my $y = Value('d_Fernseh_Programm');;
my $z = $x.$y."')";;
Log 3, "$z";;
{ $z }}


Folgender Log Eintrag:


2017.11.12 16:09:11 4: N_Fernseh_Programm exec {
my $x = "GetFileFromURL('http://user:passwort\@192.168.xxx.15:8089/api/dvbcommand.html?target=Video&cmd=";;;;
my $y = Value('d_Fernseh_Programm');;;;
my $z = $x.$y."')";;;;
{ $z }}

2017.11.12 16:09:11 3: N_Fernseh_Programm return value: GetFileFromURL('http://user:passwort@192.168.xxx.15:8089/api/dvbcommand.html?target=Video&cmd=-c:10301')



Nach gefühlten 20 Stunden probieren, fällt mir nix mehr ein und ich sehe einfach den Wald vor lauter Bäumen nicht mehr. Keine Ahnung warum es nicht geht.

Gruß Rolf

amenomade

Und so?
d_Fernseh_Programm:.*
{ GetFileFromURL("http://user:passwort@192.168.xxx.15:8089/api/dvbcommand.html?target=Video&cmd=".Value("d_Fernseh_Programm")) }
?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Rolfg

Hallo amenomade,

unglaublich. Vielen Danke es funktioniert. Ich musste nur die " durch das ' ersetzen.
Vielen vielen Dank. Da wäre ich nie drauf gekommen.

Hier noch der Code der funktioniert:


d_Fernseh_Programm:.*
{ GetFileFromURL('http://user:passwort@192.168.xxx.15:8089/api/dvbcommand.html?target=Video&cmd='.Value("d_Fernseh_Programm")) }



Danke und Gruß Rolf

amenomade

Zitat von: Rolfg am 12 November 2017, 19:49:14
Ich musste nur die " durch das ' ersetzen.

Das hab ich übersehen. Das kommt vermutlich vom "@" nach dem Passwort. Das muss man escapen: \@
Oder ja single quotes nutzen.. da wird tatsächlich nichts interpretiert.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus