Hallo,
ich versuche gerade Kodi auf meinem Raspberry Pi mit IP Symcon anzusteuern.
Dafür habe ich mir hier im Forum auch schon einiges durchgelesen, es gibt ja viele Beispielskripte noch für XBMC.
Es klappt bei mir aber noch nicht ganz.
Das habe ich bisher geschrieben:
$config = array();
$config[‚Name‘] = „beispiel“; // Name dieses XBMCs
$config[‚Host‘] = „…“; // Hostname oder IP des XBMC-PCs
$config[‚UDPPort‘] = 8278; // XBMC-UDP-Port (Standard: 8278)
$config[‚WebPort‘] = 8080; // XBMC „Webserver Port“
$config[‚WebUser‘] = „…“; // XBMC „Webserver Benutzername“
$config[‚WebPassword‘] = „…“; // XBMC „Webserver Passwort“
$config[‚WebTimeout‘] = 5; // Timeout für Webserveranfragen
$config[‚UpdateInterval‘] = 10; // Update-Intervall für die Filmposition
CSCK_SendText($IDXBMCClientSocket,’{„jsonrpc“: „2.0“, „method“: „Application.Quit“}, „id“: 1}’);
Ich weiß aber nicht genau, wie man mid dem CSCK_SendText umgeht, das wirft bei mir gerade noch Fehlermeldungen aus.
HTTP steuern ist an und Remote Control ist auch angeschalten am Kodi.
ika
10. Dezember 2015 um 15:28
2
Moin,
wie du es mit einem IPS-Socket machst weiß ich auch nicht - bin da nicht so fit
Mit einem einfachen URL-Aufruf klappt es aber bei mir:
z.B.
$url = 'http://192.168.xx.xxx/jsonrpc?request={"jsonrpc":"2.0","id":"1","method":"Application.SetVolume","params":{"volume":'.$IPS_VALUE.'}}';
$Ausgabe = fopen("$url", "r");
Danke,
aber wenn ich das probier kommt
Warning: fopen(http://141.58.102.54/jsonrpc?request={„jsonrpc“:„2.0“,„id“:„1“,„method“:„Application.SetVolume“,„params“:{„volume“:} }): failed to open stream: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.
in C:\IP-Symcon\scripts\32806.ips.php on line 8
bzw. so wirft es keine Fehlermeldung mehr auf:
$url = ‚http://1 …:8080/jsonrpc?request={„jsonrpc“: „2.0“, „method“: „Input.Down“, „id“: 1}}‘;
aber an Kodi passiert auch nichts.
Bayaro
10. Dezember 2015 um 16:33
5
Hi!
Also im letzten Post sieht dein JSON Befehl ziemlich falsch aus. Entweder hast du was vergessen oder er ist falsch
$_IPS[‚VALUE‘] ist eine Systemvariable von IPS und wird z.B. dann gefüllt, wenn das Skript durch Bedienung der Variable im WebFront aufgerufen wurde.
Probier mal das:
<?
$url = 'http://192.168.xx.xxx/jsonrpc?request={"jsonrpc":"2.0","id":"1","method":"Application.SetVolume","params":{"volume":"10"}}';
$Ausgabe = Sys_GetURLContent("$url");
echo $Ausgabe;
?>
…oder statt der „10“ am Ende etwas anderes. Keine Ahnung, was Kodi da genau haben möchte, da ich kein Kodi verwende.
Grüße,
Chris
Danke, stimmt, da hatte ich die Zahl vergessen, aber auch so wirft das ganze Fehlermeldungen auf:
Warning: HTTP/1.1 401 Unauthorized in C:\IP-Symcon\scripts\32806.ips.php on line 14
Habe jetzt meinen Kodi Socket eingerichtet und dann diesen folgenden Code ausgeführt:
USCK_SendText(22833 /[kodi Socket] /,’{„jsonrpc“: „2.0“, „method“: „Input.Down“, „id“: 1}}’);
Da kommen dann keine Fehlermeldungen, jedoch reagiert Kodi einfach nicht drauf. Muss ich da noch zusätzliche Angaben machen, um Json zu verwenden?
Bayaro
10. Dezember 2015 um 16:53
7
Bedeutet mein Code würde gehen, aber dein Kodi verlangt anscheinend Benutzer/Passwort und deshalb lehnt Kodi die Verbindung ab…
Siehe >Google HTTP Fehler 401
Da hilft dann auch kein Socket
Grüße,
Chris
ok danke.
Weiß irgendjemand, wie man Benutzername und Passwort übermitteln kann?
Meine Versuche scheinen nicht zu funktionieren.
Bayaro
10. Dezember 2015 um 17:09
9
Im Zweifel immer so:
http://user:pass@xbmcIP:xbmcPort/......
Sagt auch Google… Selbst goggelt der Mann
-Chris-
Ups, ich glaub ich muss an meinen Google Fähigkeiten noch arbeiten
Jetzt wirft es keine Fehlermeldungen mehr auf, jedoch passieren tut leider immer noch nichts.
EIB Gateway – Zeitüberschreitung bei Warten auf Antwort
kommt dann irgendwann bei den Meldungen.
Bayaro
11. Dezember 2015 um 10:39
11
EIB Gateway ??? :eek: Was treibst du da nur?
Hast du die falsche IP eingegeben oder wie kann dieses Skript hier etwas von deinem EIB Gateway erzählen??
<?
$url = 'http://kodiUser:kodiPw@kodiIP:kodiPort/jsonrpc?request={"jsonrpc":"2.0","id":"1","method":"Application.SetVolume","params":{"volume":"10"}}';
$Ausgabe = Sys_GetURLContent("$url");
echo $Ausgabe;
?>
-Chris-
Oh, nee die EIB Gateway ist von was anderem. Hat nichts mit meinem jetzigen Skript zu tun, da hast Recht.
Der wird ausgeführt, aber es geschieht an Kodi nichts. Und sieht auch genauso aus wie bei dir (nur halt mit meine Daten).
Bayaro
11. Dezember 2015 um 11:12
13
Bekommst du den bei dem Skript von mir eine Ausgabe, wenn du das Skript ausgeführt hast? Ein 200 OK oder sonst irgendwas?
Im Kodi selbst hast du die Steuerung aus dem LAN über HTTP und was da noch so war (hatte jemand erwähnt hier im Thread) aktiviert?
Hier noch einige Links zu API Infos von Kodi und Beispiele zum Testen:
JSON-RPC API/Examples - Kodi
JSON-RPC API/v6 - Kodi (sofern du ein aktuelles Kodi hast)
-Chris-
Ich bekomme keine Ausgabe und es ist auch alles aktiviert.
Bayaro
11. Dezember 2015 um 11:20
15
Dann probier mal andere Dinge aus dem „Examples“ Link aus. Zum Beispiel „What is playing“ oder „play/pause“ oder oder…
-Chris-
Habe ich, es passiert leider bei keinem Befehl etwas.
thka
11. Dezember 2015 um 11:43
17
versuch’s mal so
$ip = "192.168.10.13";
$port = "8080";
$Kodi_befehl = "Application.SetVolume%22,%22params%22:{%22volume%22:%22decrement%22}"; // Volume down
$Kodi_befehl = "Application.SetVolume%22,%22params%22:{%22volume%22:%22increment%22}"; // Volume up
$Kodi_befehl = "Application.SetMute%22,%22params%22:{%22mute%22:%22toggle%22}"; // Mute toggle
$url= "http://".$ip.":".$port."/jsonrpc?request={%22jsonrpc%22:%222.0%22,%22id%22:1,%22method%22:%22".$Kodi_befehl."}";
$Ausgabe = fopen("$url", "r");
echo $Ausgabe;
ika
11. Dezember 2015 um 12:14
18
Moin,
bevor du dich in IPS verhaspelst, solltest du erstmal checken, ob der Aufruf funktioniert wenn man ihn händisch tätigt.
Einfach erstmal die URL-Zeile im Browser aufrufen:
http://kodiUser:kodiPw@kodiIP:kodiPort/jsonrpc?request={"jsonrpc":"2.0","id":"1","method":"Application.SetVolume","params":{"volume":"10"}}
Dein Browser meldet dann zurück, ob du die Datei „json.rpc“ downloaden willst. Das tust du und öffnest sie im Editor… Wenn wir das Ergebnis haben, sehen wir weiter
Ich habe das mal gemacht, allerdings mit dem folgenden:
http://…/jsonrpc?request="{„jsonrpc“: „2.0“, „method“: „Input.Back“, „parameters“:"", „id“: „1“}"
und es kommt die Fehlermeldung {„error“:{„code“:-32600,„message“:„Invalid request.“},„id“:null,„jsonrpc“:„2.0“}
Dann habe ich es im Skript mal mit cUrl versucht:
$ch = curl_init();
$data = array(„jsonrpc“ => „2.0“, „method“ => „Input.Home“, „id“ => „1“);
$data_string = json_encode($data);
$ch = curl_init(‚http://....@ip :port‘);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, „POST“);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
‚Content-Type: application/json‘,
'Content-Length: ’ . strlen($data_string))
);
$result = curl_exec($ch);
echo $result;
curl_close($ch);
und bekomme dann sowas zurück:
Kodi
-->
-->
Profiles
Remote
Movies
TV Shows
Music
Ist schon mal ein Fortschritt, es tut ja immerhin etwas, jedoch passiert an Kodi selber immer noch nichts.
Bayaro
11. Dezember 2015 um 13:09
20
Bitte gewöhne dir an Code-Schnipsel in den PHP oder CODE Tag zu setzen (Siehe meine Posts)
-Chris-