Aller au contenu

Add-On Xbmc + Télécommande By Shad


Shad

Messages recommandés

Déjà , ce main loop ne devrait tourner que si tu regardes un films.

Donc regarde l'état de la variable xbmc_salon pour voir si tu es sur empty ou pas.

 

Cette variable sert à  savoir qu'est ce que tu regardes, donc au moment ou tu arrêtes le média cette variable doit repasser sur Empty et le main loop ne doit pas presser le bouton 36.

Lien vers le commentaire
Partager sur d’autres sites

merci de ton aide shad!

 

Pas très calé en code!  Comment on regarde l'état de cette variable?

 

Je sais pas si c'est cela, mais quand je vais dans "panneaux variables"  ma variable est bien à  "Empty" quand aucun film et passe bien à  "Movies" quand j'en met un en route.

 

 

un exemple dans le slider volume, j'ai remplacé le code lua par sa version string soit:

 

command:/jsonrpc?request={"jsonrpc":"2.0","method":"Application.SetVolume","params":{"volume":_sliderValue_},"id":1} 

 

et là  cela fonctionne. J'ai fait pareil pour "play/pause" et "Stop" et cela marche également.

 

Je me disais que j'avais peut-être un problème avec tout ce qui est code LUA mais non car j'ai également récupéré "duration" et toute les touches "avance" et "recul" les < <+ et > +>

 

En rajoutant cela dans le code:

 

HC2 = Net.FHttp(ip_module, 8080)
HC2:setBasicAuthentication("xbmc","xbmc")
 
Par contre toujours rien dans "titre" ,"duré" et artiste. xbmc me met un message d'erreur "erreur du script HC2" quand j'appuie sur la touche 1 de caméra (surement un problème du au chemin http)
 
Bon je progresse moi! Je vais bien arriver à  tout faire fonctionner :60:
Lien vers le commentaire
Partager sur d’autres sites

Euh oui :15:

 

Comme je te l'ai dit je cherche à  ce que tout fonctionne et j'ai effectivement modifié certaines parties et ajouter quelques autres à  certains scripts pour que cela fonctionne!

 

Je ne l'ai fait que ce matin donc les problèmes antérieurs ne sont pas dà» à  mes modifs!

 

Je vais remettre en LUA les commandes que j'avais passé en string car j'ai l'impression que les problèmes était juste dà» au problème d'identification.

 

Comme je l'ai dit la variable global se modifie bien mais dès que je remet le bout de script dans le loop, la rasp rame à  mort et finit par planter!

Lien vers le commentaire
Partager sur d’autres sites

Bon c'est confirmer tout était dà» à  ce problème d'identification. (j'ai remis le code dans le loop et ça ne plante plus!

 

voilà  à  quoi ressemble le script par exemple de play/pause:

local ip_module = fibaro:get(fibaro:getSelfId(), "IPAddress")
local port = fibaro:get(fibaro:getSelfId(), "TCPPort")
HC2 = Net.FHttp(ip_module, 8080)
HC2:setBasicAuthentication("xxxx","xxxx")
local globVar = "Xbmc_salon";
if ( fibaro:getGlobalValue(globVar) == "Music") then
  HC2:GET('/jsonrpc?request={"jsonrpc":"2.0","id":1,"method":"Player.PlayPause","params":{"playerid":0}}')
else
  HC2:GET('/jsonrpc?request={"jsonrpc":"2.0","id":1,"method":"Player.PlayPause","params":{"playerid":1}}')
end

j'ai remplacé mon login&mdp par des xxxx

 

j'ai mis les 2 premières lignes dans tous les sripts LUA qu'il y avait, mais je suppose que certains ont besoin de la deuxième ligne d'autre pas!

 

De mémoire dans certains modules il y avait déjà  la ligne pour l'authentification mais placé après "local globVar = "Xbmc_salon";", or moi si il n'est pas placé avant cette ligne cela ne marche pas!

 

Bon toujours le titre et durée sans rien et la caméra qui fonctionne pas mais bon cela progresse!

Lien vers le commentaire
Partager sur d’autres sites

Désolé pas eu le temps de répondre plus tôt!

  

 

 

Tu veux dire dans le loop? je l'ai rajouté!

 

Par contrej'ai toujours pas le titre et la durée! 

 

et surtout impossible d'avoir les notifications de la caméra.J'ai essayé sur un autre pc équipé d'xbmc et j'ai les mêmes symptômes!!

 

je suis pourtant sà»r du lien de la caméra, quand je saisi ce lien dans un navigateur l'image s'affiche.

 

En regardant le log, j'ai une erreur python:

ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <type 'exceptions.EOFError'>
                                            Error Contents: EOF when reading a line
                                            Traceback (most recent call last):
                                              File "/storage/.xbmc/addons/fibaro.addon/default.py", line 65, in <module>
                                                viewer = CamView()
                                              File "/storage/.xbmc/addons/fibaro.addon/default.py", line 62, in __init__
                                                urllib.urlretrieve(url, imagefile)
                                              File "/home/stephan/projects/openelec-4.0/build.OpenELEC-Generic.i386-4.0.7/Python-2.7.3/.install_pkg/usr/lib/python2.7/urllib.py", line 93, in urlretrieve
                                              File "/home/stephan/projects/openelec-4.0/build.OpenELEC-Generic.i386-4.0.7/Python-2.7.3/.install_pkg/usr/lib/python2.7/urllib.py", line 239, in retrieve
                                              File "/home/stephan/projects/openelec-4.0/build.OpenELEC-Generic.i386-4.0.7/Python-2.7.3/.install_pkg/usr/lib/python2.7/urllib.py", line 207, in open
                                              File "/home/stephan/projects/openelec-4.0/build.OpenELEC-Generic.i386-4.0.7/Python-2.7.3/.install_pkg/usr/lib/python2.7/urllib.py", line 358, in open_http
                                              File "/home/stephan/projects/openelec-4.0/build.OpenELEC-Generic.i386-4.0.7/Python-2.7.3/.install_pkg/usr/lib/python2.7/urllib.py", line 371, in http_error
                                              File "/home/stephan/projects/openelec-4.0/build.OpenELEC-Generic.i386-4.0.7/Python-2.7.3/.install_pkg/usr/lib/python2.7/urllib.py", line 695, in http_error_401
                                              File "/home/stephan/projects/openelec-4.0/build.OpenELEC-Generic.i386-4.0.7/Python-2.7.3/.install_pkg/usr/lib/python2.7/urllib.py", line 759, in retry_http_basic_auth
                                              File "/home/stephan/projects/openelec-4.0/build.OpenELEC-Generic.i386-4.0.7/Python-2.7.3/.install_pkg/usr/lib/python2.7/urllib.py", line 788, in get_user_passwd
                                              File "/home/stephan/projects/openelec-4.0/build.OpenELEC-Generic.i386-4.0.7/Python-2.7.3/.install_pkg/usr/lib/python2.7/urllib.py", line 797, in prompt_user_passwd
                                            EOFError: EOF when reading a line
                                            -->End of Python script error report<--
10:55:45 T:3052403520   ERROR: CAESinkALSA - snd_pcm_writei(-32) Broken pipe - trying to recover

c'est un log pour openelec 4.0.2 gotham

 

Ahh plus que ces 3 trucs là  à  régler et c'est parfait!!

Lien vers le commentaire
Partager sur d’autres sites

Non ce n'est pas dans le main loop qu'il faut mettre tes login mais dans le bouton code.

Le main loop appelle click sur un bouton pour éviter que sa plante.

En faite tes problèmes vient du faite que tu as mis un mot de passe à  xbmc.

 

Et pour tes caméra c'est pareil, il faut que tu passe en lua pour mettre tes logins.

 

Ou tu prend le problèmes à  l'envers, tu enlèves le password de l'interface xbmc et tu remets mon code comme il était ;)

Lien vers le commentaire
Partager sur d’autres sites

oui c'est pas bête du tout! 

 

Bon j'ai enlevé le mot de passe xbmc et effectivement (presque) tout fonctionne (en remettant le code comme avant)!

 

Sauf les caméras avec toujours les mêmes lignes d'erreur dans le log d'xbmc

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Bonjour à  tous

 

je viens de mettre en place le module xbmc et cela fonctionne parfaitement mais... oui... il fallait un "mais" sinon cela ne serait pas drole... j'ai un problème pour remonter le nom du film/acteurs/ durée sur la télécommande virtuelle.

 

Etant catastrophique en dév (merci en passant à  tous ceux qui apportent leur savoir à  des gens comme moi) je souhaite savoir ou se trouve mon erreur...

 

 

Le code est le suivant:

local xbmc_ip = ('192.168.1.45');
local globVar = "XBMC_PC";
selfId = fibaro:getSelfId();

function xbmcJson (label)
  local xbmcFunction = pcall(function()
      local XBMC = Net.FHttp(xbmc_ip, 80);
      
      if (label == "1") then
        response,status, errorCode = XBMC:GET('/jsonrpc?request={"jsonrpc":"2.0","method":"Application.GetProperties","params":{"properties":["volume"]},"id":1}');
      elseif (label == "2") then
        if ( (fibaro:getGlobalValue(globVar) == "PVR" )) then
          response,status, errorCode = XBMC:GET('/jsonrpc?request={"jsonrpc":"2.0","method":"Player.GetItem","params":{"playerid":1,"properties":["showtitle"]},"id":1}');
        elseif ( fibaro:getGlobalValue(globVar) == "Movies" ) then
          response,status, errorCode = XBMC:GET('/jsonrpc?request={"jsonrpc":"2.0","method":"Player.GetItem","params":{"playerid":1,"properties":["set"]},"id":1}');
        elseif ( fibaro:getGlobalValue(globVar) == "Music" ) then
 response,status, errorCode = XBMC:GET('/jsonrpc?request={"jsonrpc":"2.0","method":"Player.GetItem","params":{"playerid":0,"properties":["title","album","albumartist","artist"]},"id":1}');
        end
      elseif (label == "3") then
        if ( fibaro:getGlobalValue(globVar) == "Music" ) then
          response,status, errorCode = XBMC:GET('/jsonrpc?request={"jsonrpc":"2.0","method":"Player.GetProperties","params":{"playerid":0,"properties":["percentage","time","totaltime"]},"id":1}');
        elseif ( (fibaro:getGlobalValue(globVar) == "Movies") or (fibaro:getGlobalValue(globVar) == "TVShows") or (fibaro:getGlobalValue(globVar) == "PVR") ) then
          response,status, errorCode = XBMC:GET('/jsonrpc?request={"jsonrpc":"2.0","method":"Player.GetProperties","params":{"playerid":1,"properties":["percentage","time","totaltime"]},"id":1}');
        end
 elseif (label == "4") then
   response,status, errorCode = XBMC:GET('/jsonrpc?request={"jsonrpc":"2.0","id":1,"method":"Playlist.GetItems","params":{"properties":["title","artist"],"limits":{"start":0,"end":5},"playlistid":0}}');
      end
      local t = nil;
      t = json.decode(response);
      if (label == "1") then
        fibaro:call(selfId, "setProperty","ui.sldVolume.value",t.result.volume);
      elseif (label == "2") then
        if ( (fibaro:getGlobalValue(globVar) == "PVR" )) then
          fibaro:call(selfId, "setProperty", "ui.lblXbmc2.value", t.result.item.label);
        elseif ( fibaro:getGlobalValue(globVar) == "Movies" ) then
          local currentValue = t.result.item.set;
          if (currentValue == "") then
            data = "No Saga";
          else
            data = "Saga: " .. currentValue;
          end 
          fibaro:call(selfId, "setProperty", "ui.lblXbmc2.value", data);
elseif ( fibaro:getGlobalValue(globVar) == "Music" ) then
 fibaro:call(selfId, "setProperty", "ui.lblXbmc1.value", t.result.item.title);
 if ( tostring(t.result.item.albumartist[1]) == "Various artists" ) then
       fibaro:call(selfId, "setProperty", "ui.lblXbmc3.value", tostring(t.result.item.artist[1]) .. " / " .. t.result.item.album);
 else
   fibaro:call(selfId, "setProperty", "ui.lblXbmc3.value", tostring(t.result.item.albumartist[1]));
 end
        end
      elseif (label == "3") then
        fibaro:call(selfId, "setProperty", "ui.sldPercentage.value",string.match(t.result.percentage, "(%d.*%.%d%d)"));
        fibaro:call(selfId, "setProperty", "ui.lblTime.value",t.result.time.hours .. ":" .. t.result.time.minutes .. ":" .. t.result.time.seconds .. " / " .. t.result.totaltime.hours .. ':' .. t.result.totaltime.minutes .. ':' .. t.result.totaltime.seconds);
 elseif (label == "4") then
   fibaro:debug("ok");
   fibaro:debug(tostring(t.result.items[1]));
fibaro:call(selfId, "setProperty", "ui.lblXbmc2.value", tostring(t.result.items[1].title .. '\n' .. t.result.items[2].title .. "\n" .. t.result.items[3].title .. "\n" .. t.result.items[4].title .. "\n" .. t.result.items[5].title));
      end
  end)
  if (not xbmcFunction) then
    fibaro:debug('Decode raised an error');
  end
end

if ( (fibaro:getGlobalValue(globVar) == "PVR") or (fibaro:getGlobalValue(globVar) == "Movies") ) then
  xbmcJson("2");
  fibaro:sleep(1000);  
end
if ( fibaro:getGlobalValue(globVar) == "Music" ) then
  xbmcJson("4");
  fibaro:sleep(1000);
end
xbmcJson("1");
fibaro:sleep(1000);
xbmcJson("3");

j'ai en debug le message suivant "[DEBUG] 22:04:15: Decode raised an error

 

qu'est ce qui cloche ?

 

Merci pour votre aide :)

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Normalement, une variable globale avec des valeurs prédéfinie devrait se créer automatique grâce au plugin xbmc lors de la première lecture.

Si ce n'est pas le cas créer en une avec pour valeur :

- Empty

- Movies

- Music

- PVR

- TVShows

 

- Ensuite vous devez importez le fichier vfib (virtual device) contenue dans le zip dans la HC2.

Attention, si vous modifiez la variable globale "Xbmc_salon", pensé à  faire pareil dans l'addon xbmc.

Éditez l'adresse IP principal + celle des boutons N°4 / 8  / 9 / 10 / 18 pour y mettre celui de votre xbmc.

 

salut à  tous,

j'ai un probleme avec ce tuto et j'aurais 2 questions :

 

- Ou puis je voir si la variable a bien été créée ? C'est bien dans Panneau variables ? ( je ne vois rien )

et

- a la lecture du code des buttons, j'ai l'impression que ce n'est plus la peine d'editer chaque bouton ? ( le bouton va chercher lui meme l'IP que j'ai renseigné pour le MV, non ?)

local ip_module = fibaro:get(fibaro:getSelfId(), "IPAddress")
local port = fibaro:get(fibaro:getSelfId(), "TCPPort")
HC2 = Net.FHttp(ip_module, 8080)

Duration = _sliderValue_
HC2:GET('/jsonrpc?request={"jsonrpc":"2.0","method":"Player.Seek","params":{"playerid":1,"value":'..Duration..'},"id":1}') 
Lien vers le commentaire
Partager sur d’autres sites

Hello Shad,

 

J'ai beaucoup de mal a mettre en place ce Virtual Device, peux-tu m'eclairer ?

 

Virtual device + module XBMC importé depuis ici:

http://passion-xbmc.org/addons/?Page=View&ID=fibaro.addon

 

J'ai bien changé les adresses IP et le port (80 ici et non 8080) et crée la variable global

 

Problèmes:

- J'ai les boutons en "string" qui ne fonctionnent pas ( pourquoi c'est des strings ? )

- Je n'ai pas de remontée d'info

 

Je précise que c'est sur la v4.017 beta

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...