Je ne sais pas vers qui remonter l'info pour mettre à jour le plugin officiel, mais après avoir patché le fichier kodi.class.php & avec les 2 fonctions ci-dessous, ça marche nickel chez moi avec leia
public function reqjson($json = null) {
$kodi = $this->getEqLogic();
if ($kodi->getConfiguration('login') == '' && $kodi->getConfiguration('password') == '') {
$requestHeader = 'http://' . $kodi->getConfiguration('addr') . ':' . $kodi->getConfiguration('port');
} else {
$requestHeader = 'http://' . $kodi->getConfiguration('login') . ':' . $kodi->getConfiguration('password') . '@' . $kodi->getConfiguration('addr') . ':' . $kodi->getConfiguration('port');
}
//$request = urlencode(json_encode($json));
$request = json_encode($json);
//$url = $requestHeader . "/jsonrpc?request=" . $request;
$url = $requestHeader . "/jsonrpc";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($request))
);
$response = curl_exec($ch);
if ($response === false) {
log::add('kodi', 'Error', __('Erreur curl : ', __FILE__) . curl_error($ch) . __(' sur la commande Kodi ', __FILE__) . $this->name);
throw new Exception(__('[Kodi] Erreur curl : ', __FILE__) . curl_error($ch) . __(' sur la commande Kodi ', __FILE__) . $this->name);
}
curl_close($ch);
return $response;
}
et
public static function cron() {
$eqLogics = eqLogic::byType('kodi');
foreach ($eqLogics as $kodi) {
if ($kodi->getIsEnable() == 1 && $kodi->getConfiguration('heartbeat', 0) == 1) {
$json = array(
'id' => 1,
'jsonrpc' => '2.0',
'method' => 'Player.GetActivePlayers',
);
if ($kodi->getConfiguration('login') == '' && $kodi->getConfiguration('password') == '') {
$requestHeader = 'http://' . $kodi->getConfiguration('addr') . ':' . $kodi->getConfiguration('port');
} else {
$requestHeader = 'http://' . $kodi->getConfiguration('login') . ':' . $kodi->getConfiguration('password') . '@' . $kodi->getConfiguration('addr') . ':' . $kodi->getConfiguration('port');
}
//$request = urlencode(json_encode($json));
$request = json_encode($json);
//$url = $requestHeader . "/jsonrpc?request=" . $request;
$url = $requestHeader . "/jsonrpc";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($request))
);
$response = curl_exec($ch);
if ($response === false) {
$actualstate = $kodi->getCmd(null, 'pinginfo')->execCmd();
if ($actualstate != 'Dead') {
$kodi->getCmd(null, 'pinginfo')->event('Dead');
log::add('kodi', 'info', 'Le kodi ' . $kodi->getName() . ' ne répond pas je le marque comme éteint');
$kodi->getCmd(null, 'status_media')->event('Arrêt');
$kodi->getCmd(null, 'status')->event('Arrêt');
$mc = cache::byKey('kodiWidgetmobile' . $kodi->getId());
$mc->remove();
$mc = cache::byKey('kodiWidgetdashboard' . $kodi->getId());
$mc->remove();
$kodi->toHtml('mobile');
$kodi->toHtml('dashboard');
$kodi->refreshWidget();
}
} else {
$actualstate = $kodi->getCmd(null, 'pinginfo')->execCmd();
if ($actualstate != 'Alive') {
log::add('kodi', 'info', 'Le kodi ' . $kodi->getName() . ' est revenu à la vie je le marque comme vivant');
$kodi->getCmd(null, 'pinginfo')->event('Alive');
}
}
}
}
}