Page 1 of 2

XBMC Script

Posted: Sat Mar 16, 2013 3:04 pm
by keeslamper
Hallo,

Ik wilde het XBMC Script gaan gebruiken wat hier beschreven wordt:

http://board.homeseer.com/showthread.php?t=142187

Maar ik krijg dit niet werkend. Ik krijg de melding "In URLAction GET: De externe server heeft een fout geretourneerd: (404) Niet gevonden."
Iemand enig idee wat hier de oplossing voor kan zijn? Het script is juist, XMBC webserver draait en is te benaderen.

Of heeft iemand een andere oplossing om XBMC te besturen via Homeseer/HStouch?

Hoor het graag!

Kees

Re: XBMC Script

Posted: Sat Mar 16, 2013 3:50 pm
by vanisher
De huidige XBMC werkt alleen nog maar met JSON, niet met http requests :-(

Re: XBMC Script

Posted: Sat Mar 16, 2013 6:05 pm
by keeslamper
Je geeft het antwoord waar ik al bang voor was... Heeft te maken met de API las ik al.

Is er een andere oplossing mogelijk dat je weet?

Re: XBMC Script

Posted: Sun Mar 17, 2013 11:04 am
by AshaiRey
Natuurlijk is er een oplossing.
Gebruik eerst JSON om het resultaat op te halen en converteer dat naar het formaat dat je nodig heb waarna je dit aanbied aan de functie.

Re: XBMC Script

Posted: Sun Mar 17, 2013 11:17 am
by keeslamper
Bedankt AshaiRey,

Dan wordt het voor mij wachten tot iemand anders dat gedaan heeft, ik weet sinds gister wat JSON is, laat staan dat ik het kan gebruiken....

Groet,
Kees

Re: XBMC Script

Posted: Mon Mar 18, 2013 7:01 pm
by yoja

Re: XBMC Script

Posted: Mon Mar 18, 2013 8:41 pm
by keeslamper
Bedankt yoya, die heb ik nu inderdaad! Thanks.

Re: XBMC Script

Posted: Tue Mar 19, 2013 10:22 am
by AshaiRey
Goed te zien dat er ook forumleden zijn die niet beroep gedeformeerd zijn (zoals ik) :-)

Re: XBMC Script

Posted: Tue Mar 19, 2013 12:12 pm
by keeslamper
Ik zit in spanning te wachten op jouw script Ashai :P

Re: XBMC Script

Posted: Wed Mar 20, 2013 12:15 pm
by AshaiRey
Ik heb eens naar het script gekeken en zie dat het alleen een commando naar XBMC stuurt en niets terug verwacht. Dat is mooi want dat houd het lekker simpel.
Er wordt alleen een string gestuurd met daarin het IP adress waarheen het moet en een waarde van een toetsaanslag om een toetsindruk aan de XMBC kant te simuleren.
Weet iemand hoe een werkend command eruit ziet en wil het hier delen zodat ik dat als voorbeeld kan gebruiken?
Ps, ik heb geen XBMC hier om te testen.

Wie heeft er tijd en middelen om voor mij te testen?
Geen garantie dat het ook wat gaat worden.
Je krijgt van mijn code die je moet testen en ik moet het resultaat terug krijgen inclusief foutmeldingen.

Re: XBMC Script

Posted: Wed Mar 20, 2013 1:45 pm
by keeslamper
Bram,

Ik heb tijd en xbmc om te testen. Het was tenslotte mijn verzoek!

Kees

Re: XBMC Script

Posted: Wed Mar 20, 2013 5:05 pm
by Phaeton
Hoi Bram, Kees,

ik ben hier eerder in gedoken (met iets meer wensen, wilde bv de playlist oproepen en de naam/video die afgespeeld wordt tonen in HStouch) maar kwam er zelf niet uit. Maar hier board.homeseer.com/showthread.php?t=148 ... light=json op het Homeseer forum staan voorbeelden van werkende scripts. Vnl voor eenvoudige zaken.

Ik wil indien nodig ook helpen met testen, geen enkel probleem. Ben via PM bereikbaar en check het forum regelmatig.

grtz,
Harry

Re: XBMC Script

Posted: Wed Mar 20, 2013 5:09 pm
by Phaeton
Hierbij een voorbeeld om een text naar XBMC te sturen:

Code: Select all

Dim IP As String = "192.168.0.111"
Dim URLStr As STring = ""
Dim ReplyStr As String = ""

Sub Main(ByVal Parms As Object)

Dim Title As String = "Homeseer Notification"
Dim Message As String = Parms.ToString

'this will take a parameter message and put it into an XBMC notification window


If hs.ping(IP) = 0 Then

'the host is alive

URLStr = "http://" & IP & "/jsonrpc?request={""jsonrpc"":""2.0"",""method"":""GUI.ShowNotification"",""params"":{""title"":" & chr(34) & Title & chr(34) & ",""message"":" & chr(34) & Message & chr(34) & ",""displaytime"":30000}}"

'hs.writelog("XBMC", URLStr)

ReplyStr = hs.urlaction(URLStr,"GET","","")

If ReplyStr <> "" Then


hs.writelog("XBMC", ReplyStr)

End If

Else

hs.writelog("XBMC", "Cannot Send Command - Host Offline")

End If

End Sub

Sub Restart(ByVal Parms As Object)

If hs.ping(IP) = 0 Then

URLStr = "http://" & IP & "/jsonrpc?request={""jsonrpc"":""2.0"",""method"":""System.Reboot""}"

ReplyStr = hs.urlaction(URLStr,"GET","","")


If ReplyStr <> "" Then


hs.writelog("XBMC", ReplyStr)

End If

End If

End Sub
en hier een code die je in HStouch achter een button kan plaatsen:

Code: Select all

&hs.GetURL("http://10.0.0.45","/jsonrpc?request={""jsonrpc"":""2.0"",""method"":""Input.Down ""}",TRUE,8080)

Re: XBMC Script

Posted: Thu Mar 21, 2013 11:29 am
by AshaiRey
Hoi Phaeton,

Even wat checken want ik ben me aan het inlezen in JSON en XBMC.
Het script wat je hierboven gepost hebt werkt dus. Dat is een heel goed startpunt namelijk als dat zo is want ik zie dat het nog steeds met hs.urlaction() werkt. Wat me wel op valt is dat er een GET wordt verzonden terwijl in een HS forum melding gezegt wordt dat dit een POST moet zijn.

Ik heb ondertussen wel een proef scriptje gemaakt met een totaal andere opzet maar als bovenstaande werkt dan gooi ik het plan geheel om
Hier is het met veel debugging info er in voor mij om te zien wat er gebeurd.
Ik heb dus geen idee of onderstaande werkt. (ik krijg hier server not found omdat ik geen XBMC heb)

Code: Select all

Imports System.IO
Imports System.Net
Imports System.Text

'========================================================
'========================================================
'Settings to fill in
Public Dim DEBUG As Boolean = True
Public Dim XBMCServer As String = "http://192.1.168.3"
'========================================================
'========================================================

    Public Sub Main(ByVal Params As Object)
        Dim cmd As String = "{" & Chr(34) & "jsonrpc" & Chr(34) & ": " & Chr(34) & "2.0" & Chr(34) & ", " & Chr(34) & "method" & Chr(34) & ": " & Chr(34)
        cmd = cmd & "JSONRPC.Ping"
        cmd = cmd & Chr(34) & ", " & Chr(34) & "id" & Chr(34) & ": " & Chr(34) & "1" & Chr(34) & "}"
	If DEBUG = True then hs.writelog("AZ_XMBCcmd","JSON string to send = " & cmd )
        PostCommand(cmd)
    End Sub


    Sub PostCommand(strCmd)
	Try
	  If DEBUG = True then hs.writelog("AZ_XMBCcmd","Make byte array")
          Dim byteArray As Array = Encoding.ASCII.GetBytes(strCmd)

	  If DEBUG = True then hs.writelog("AZ_XMBCcmd","Setup webrequest to " & XBMCServer)
          Dim request As WebRequest = WebRequest.Create( XBMCServer )

	  If DEBUG = True then hs.writelog("AZ_XMBCcmd","Set method to POST")
          request.Method = "POST"

	  If DEBUG = True then hs.writelog("AZ_XMBCcmd","Set request lenght : " & byteArray.Length)
          request.ContentLength = byteArray.Length

	  If DEBUG = True then hs.writelog("AZ_XMBCcmd","Set content type")
          request.ContentType = "application/x-www-form-urlencoded"

	  If DEBUG = True then hs.writelog("AZ_XMBCcmd","Make a data stream")
          Dim dataStream As Stream = request.GetRequestStream()

	  If DEBUG = True then hs.writelog("AZ_XMBCcmd","Write data")
          dataStream.Write(byteArray, 0, byteArray.Length)


' Get the response.
            Dim response As WebResponse = request.GetResponse()

            ' Display the status.
     	    If DEBUG = True then hs.writelog("AZ_XMBCcmd","Response status :" & (CType(response, HttpWebResponse).StatusDescription) )
            
	    ' Get the stream containing content returned by the server.
            dataStream = response.GetResponseStream()

            ' Open the stream using a StreamReader for easy access.
            Dim reader As New StreamReader(dataStream)

            ' Read the content.
            Dim responseFromServer As String = reader.ReadToEnd()

            ' Display the content.
            hs.writelog("AZ_XMBCcmd","Response from server :" & responseFromServer)

	  If DEBUG = True then hs.writelog("AZ_XMBCcmd","Close data stream")
            ' Clean up the streams.
            reader.Close()
            dataStream.Close()
            response.Close()

	Catch ex As Exception
	  hs.writelog("AZ_XMBCcmd","Connection to XBMC failed due:" & ex.Message )
	  Exit Sub
	End try
    End Sub

Re: XBMC Script

Posted: Thu Mar 21, 2013 11:36 am
by keeslamper
Bram,

Ik wil jouw script proberen maar moet ik dit als vb script opslaan? Hoe krijg ik het dan in hstouch?

Kees