FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: michaelz am 17 August 2017, 18:02:22

Titel: [Gelöst] Leerzeichen in %20 konvertieren für HTTPMOD
Beitrag von: michaelz am 17 August 2017, 18:02:22
Hallo,
ich hätte gerne mal ein Problem. Folgendes: Ich benutze KODI zur Hausbeschallung. Um ein einfaches Multiroom zu ermöglichen habe ich die Kombi Darkice/Icecast2 aufgesetzt was sehr gut funktioniert. Das Problem ist, daß ich auf diesem Weg (geht über den Standardaudio Output) keine Metatags (currentArtist, currenttitle...) von Kodi bekomme.

Icecast2 läßt sich mit Metatags versorgen über ein HTTP-Get, etwa http://<ip>:8000/metadata??pass=xxxxx&mode=updinfo&mount=/sample192&song=<artist> - <title> , was das Problem lösen würde.

Da ich Kodi bereits in FHEM integriert habe, dachte ich, HTTPMOD dafür zu verwenden, was auch sehr gut manuell funktioniert, per "set Metadata Icecast Artist%20Title". Per "set Metadata Icecast Artist Title" tut sich nichts, nichtmal ein Fehler im Log (Logtiefe Standard)
Wenn ich aber ein Reading von Kodi verwende, gibt es keine Übertragung, weil vermutlich bei der Tagausgabe Leerzeichen verwendet werden, die für das HTTP get nicht standardkonform sind.

Zum HTTPMOD feeden benutze ich ein Notify.

Wer hat eine Idee?

Danke schonmal

Michael
Titel: Antw:Leerzeichen in %20 konvertieren für HTTPMOD
Beitrag von: dev0 am 17 August 2017, 18:12:57
Du könntest urlEncode($) aus HttpUtils.pm zum encoden nutzen.
Titel: Antw:Leerzeichen in %20 konvertieren für HTTPMOD
Beitrag von: michaelz am 17 August 2017, 18:29:59
Hallo,

ich hab mal kurz in der Referenz drübergeschaut. Im Moment ist mir das meterweit zu hoch, da muß ich mich erst einarbeiten.
Jedenfalls vielen Dank für den Tipp.

VG
Michael
Titel: Antw:Leerzeichen in %20 konvertieren für HTTPMOD
Beitrag von: dev0 am 17 August 2017, 18:57:56
Um HttpUtils FHEMweit nutzen zu können:

define HttpUtilsInit notify global:INITIALIZED {use HttpUtils}


In notify dann:

my $enc = urlEncode($url);

$url ist der String, den Du encoden möchtest.
$enc ist der codierte string.
Titel: Antw:Leerzeichen in %20 konvertieren für HTTPMOD
Beitrag von: michaelz am 18 August 2017, 01:01:51
Puh.....schwierige Geburt. Dein Vorschlag funktioniert perfekt, nur habe ich noch ein Problem mit dem Reading, ich krieg nichts.

So sieht die Def vom Notify aus;(webDisplay2:Line1.*) {
my $url = "[webDisplay2:Line1]";
my $enc = urlEncode($url); {
fhem( "set Metadata Icecast $enc" );
}
}


Das "webDisplay" liefert die Ausgabe vorformatiert als "Artist - Title". Die Übertragung nach Icecast2 funktioniert, es wird aber genau "[webDisplay2:Line1]" angezeigt. Zum Testen habe ich auch Leerzeichen eingefügt, läuft perfekt. Der Event zum Update wird auch ausgelöst.

Was mache ich falsch?
Titel: Antw:Leerzeichen in %20 konvertieren für HTTPMOD
Beitrag von: michaelz am 18 August 2017, 01:57:59
Ok, geschafft. Es funktioniert, eventuell ist die Konfig noch nicht optimal, aber es tut. Wen es interessiert:

(webDisplay2:Line1.*) {
my $url = ReadingsVal("webDisplay2","Line1","");
my $enc = urlEncode($url); {
fhem( "set Metadata Icecast $enc" );
}
}


Vielen Dank an Dev0 für die Unterstützung
Titel: Antw:Leerzeichen in %20 konvertieren für HTTPMOD
Beitrag von: Amenophis86 am 18 August 2017, 01:58:56
Dann noch auf gelöst setzen :)