Hallo,
ich möchte über eine eventMap einen JSON Befehl in einem XBMC Device absenden. In meiner manuellen Fassung des XBMC Moduls ist dies über das Set-Kommando "jsonraw" möglich. Da ein JSON Befehl jedoch viele Sonderzeichen beinhaltet, kommt es daher wahrscheinlich wegen den Doppelpunkten zu Schwierigkeiten in der Syntax. Auch ein paar Abwandlungen mit Single Quotes haben nicht funktioniert:
attr sz_xbmc eventMap /jsonraw {"jsonrpc":"2.0","method":"Addons.ExecuteAddon","params":{"addonid":"script.json-cec","params":{"command":"standby"}},"id":1}:cecoff/
Sobald ich den Befehl "cecoff" absenden will, kommt eine Meldung, dass dieser Befehl nicht existiert. Wenn ich für cecoff ein anderes Kommando in die eventMap packe funktioniert das. Ebenso der reine JSON Befehl:
set sz_xbmc jsonraw {"jsonrpc":"2.0","method":"Addons.ExecuteAddon","params":{"addonid":"script.json-cec","params":{"command":"standby"}},"id":1}
Wie bekomme ich ich diesen Befehl in eine eventMap gepackt? Jemand eine Idee?
Das Problem ist anscheinend wiedermal etwas spezieller. Kann das jemand bitte wieder in Sonstiges verschieben? :)
Ist mein Vorhaben denn nicht möglich? Ein "nein" wäre zwar schade, aber wenigstens irgend eine Antwort. ;D
Hat einer unserer FHEM Gurus vielleicht eine Antwort auf diese Frage?! :)
Hallo,
ich bin zwar keiner der FHEM-Gurus aber ich würde das mit einem notify versuchen zu lösen.
Grüße
Zitat von: Puschel74 am 10 Juli 2014, 15:15:27
ich bin zwar keiner der FHEM-Gurus aber ich würde das mit einem notify versuchen zu lösen.
In einem Notify funktioniert der Aufruf, aber da ich solche JSON Requests in mehreren Notifys verwenden möchte, würde ich diese gerne als kurze Kommandos nutzen, um die Übersichtlichkeit zu wahren.
Vielleicht ist dies mit der momentanen Konfiguration von eventMap nicht möglich und ein Entwickler passt das an. Und da vielleicht später mehrere Leute diese Art von eventMaps nutzen möchten (gerade falls meine Version von 70_XBMC.pm demnächst ins SVN wandert), dachte ich poste ich diesen Missstand gleich hier. Vielleicht bin ich auch einfach nur unfähig die bereits funktionierende Lösung zu finden. ;D
Trotzdem danke für den Tipp!
Also in fhem.pl (bin bei Version 6080), Zeile 3195 wird das einzelne eventMapping mittels
split(":", $rv, 3);
zerlegt. Also werden nur die ersten 2 Doppelpunkte in deinem String verwendet (Limit = 3). Das was du versuchst kann also nicht funktionieren, die Doppelpunkte kannst du auch nicht escapen o.Ä. ... der Weg des geringsten Widerstandes wäre wohl bei der jsonraw-Methode anzusetzen und der beizubringen, irgendetwas anderes anstatt des Doppelpunktes zu akzeptieren ...
Sinn von dem Vorhaben ist für mich aber irgendwie fragwürdig, ich möchte im eventMap und damit im Frontend eigentlich nicht mit etwas so sperrigem wie kompletten JSON-RPC-Calls umgehen müssen - zumal du dabei den Standard verbiegst (jeder deiner Requests bekommt so die gleiche ID!) - das müsste eher das Modul Kapseln ... d.h. ich würde im eventMap eher sowas eintragen wollen:
attr sz_xbmc eventMap /raw-rpc Addons.ExecuteAddon(addonid=script.json-cec(command=standby)):cecoff/
Die jsonraw Methode war gedacht für Tests und noch nicht implementiert Funktionen. Die Möglichkeiten der JSON Api von XBMC sind ja schon sehr vielseitig.
Allerdings ist dein Vorschlag die JSON Parameter in einem definierten Format anzugeben interessant. Ich habe im Moment leider nicht viel Zeit um mir das XBMC Modul noch mal vorzunehmen (unabhängig dass ich kein richtiger Programmierer bin). Mal schauen ob ich demnächst mal dazu komme ggf. die jsonraw Methode umzubauen oder eine zusätzliche json Methode dieser Art zu implementieren... Falls jemand anderes sich daran versuchen möchte, "meine" Version vom XBMC Modul befindet sich im XBMC Thread (http://forum.fhem.de/index.php/topic,10075.165.html).
Ich habe mir nun eine Lösung gebaut. Ich habe im XBMC Modul eine neue Funktion eingebaut um Addons anzusteuern. Damit sollte ich nun eventMaps bauen können, da keine Doppelpunkte oder andere Sonderzeichen für den Aufruf benötigt werden. :)
XBMC Modul FHEM Forum (http://forum.fhem.de/index.php?topic=10075.msg186702#msg186702)