Kodi mit IPS ansteuern

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.

Moin,

wie du es mit einem IPS-Socket machst weiß ich auch nicht - bin da nicht so fit :wink:
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.

Hi!

Also im letzten Post sieht dein JSON Befehl ziemlich falsch aus. Entweder hast du was vergessen oder er ist falsch :smiley:

$_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?

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 :wink:

Grüße,
Chris

ok danke.

Weiß irgendjemand, wie man Benutzername und Passwort übermitteln kann?
Meine Versuche scheinen nicht zu funktionieren.

Im Zweifel immer so: :smiley:

http://user:pass@xbmcIP:xbmcPort/......

Sagt auch Google… Selbst goggelt der Mann :wink:

-Chris-

Ups, ich glaub ich muss an meinen Google Fähigkeiten noch arbeiten :stuck_out_tongue:

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.

EIB Gateway ??? :eek: Was treibst du da nur? :smiley:

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).

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.

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.

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;

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 :wink:

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

 --&gt;


 --&gt;






  
  
    
      Profiles
      Remote
      Movies
      TV Shows
      Music

Ist schon mal ein Fortschritt, es tut ja immerhin etwas, jedoch passiert an Kodi selber immer noch nichts.

Bitte gewöhne dir an Code-Schnipsel in den PHP oder CODE Tag zu setzen :slight_smile: (Siehe meine Posts)
-Chris-