XBMC sendet TCP/IP Telegramm

  • Hallo Zusammen,

    derzeit habe ich einen Win7 Rechner mit EventGhost.
    Ich möchte jetzt auf Linux umsteigen weil ich testweise Openelec auf einem anderen Rechner installiert habe und damit voll zufrieden bin.
    Leider funktioniert unter Linux kein EventGhost.

    Gibt es irgendwie dieMöglichkeit mit einem Menüeintrag in XBMC ein TCP/IP Telegramm über das Netzwerk an meinen Gira Homeserver zu schicken bzw. beim Systemstart?
    Unter EventGhost schaut ein Beispielaufruf so aus:

    "
    import socket

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.settimeout(2.0)
    sock.connect(("192.178.168.111", 1024))
    sock.settimeout(1.0)
    sock.sendall("HTPCan")
    "

    Ich wende mich an euch, weil ich mit der Suche im Internet nichts gefunden habe.
    Bin leider auch ein Linux noob...

    Danke und Gruß
    Florian

  • Hallo don,

    könntest du deine Frage etwas genauer definieren.
    Weis nicht auf was deine Frage abzielt.

    Kleiner Zwischenstand:
    Das Senden meines gewünschten TCP/IP an den Homeserver von Linux, war einfacher als gedacht.
    Naja im Nachhinein ist so einiges einfach...
    Hab nur eine neue Datei erzeugt mit der Endung .py und in die Datei hab ich den Code geschrieben

    Python
    #!/usr/bin/python
    import socket
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.settimeout(2.0)
    sock.connect(("192.178.168.111", 1024))
    sock.settimeout(1.0)
    sock.sendall("HTPCan")

    Im Terminal hab ich die Datei mit ./test.py ausgeführt und schon hat mein HS die Botschaft "HTPCan" empfangen.
    Soweit sogut...

    Nur wie kann ich jetzt diese Datei automatisch mit einem XBMC Zustand/Trigger ausführen lassen.
    Also zum Beispiel möchte ich die Datei Filmstart.py automatisch ausführen, sobald ich einen Film per XBMC abspiele.

    Für EventGhost hat es so ein Plugin für XBMC gegeben...

    Falls es was zur Sache tut, ich benutze den Aeon MQ5 Skin.

    Danke und Gruß

  • :)

    Am einfachsten wäre es, das Script direkt mit XBMC zu starten. Also als autoexec.py... Ansonsten ginge das noch als onload direkt im Skin oder noch aufwendiger als Service Addon... Da würde ich zur ersten Variante greifen...

    Im Script köpnnte man dann z.B in einer while Schleife die Bedingung "not xbmc.abortRequested" mit einem xbmc.sleep(1000) prüfen, um das Script beim Beenden von XBMC zu verlassen... Um auf das Starten eines Videos zu reagieren könnte man sich die Methode onPlayBackStarted(...) der xbmc.Player-Klasse zunutze machen...

    So direkt aus dem Kopf...
    [daten]
    import xbmc
    import socket
    import sys


    class run(xbmc.Player):
    def onPlayBackStarted(self):
    if self.isPlayingVideo():
    self.send()



    def send(self):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.settimeout(2.0)
    sock.connect(("192.178.168.111", 1024))
    sock.settimeout(1.0)
    sock.sendall("HTPCan")



    if __name__ == '__main__':
    r = run()
    while (not xbmc.abortRequested):
    xbmc.sleep(1000)
    del r
    sys.modules.clear()

    [/daten]


    Hierbei würde dann jedoch bei jedem x-beliebigen Video etwas gesendet werden, sobald es gestartet wird... Hier müsste man dann ggf. in der onPlaybackStarted Funktion noch ermitteln, ob es sich bei dem Video um einen Inhalt aus der Videodatenbank bzw um einen Film handelt... Hierzu fällt mir aber gerade so auf die Schnelle nicht viel zu ein... Das xbmc Modul bietet hierfür glaube ich kein passende Funktion... Aber das müsste man auch über ein/zwei json Abfragen herausfinden können...


    Edit:
    Du musst allerdings noch die Einrückung von Python beachten!!! Diese wurde hier wieder mal zunichte gemacht...

    Edit2:
    Habe es mal als Datei angehangen...

  • Guten Tag,

    ich stehe vor dem gleichen Problem und suche ebenso die Lösung dazu.
    Ich bin auf service.callbacks2 gestoßen. Damit ist es möglich "Events" in Actionen zu verwandeln.
    Sprich: Startet das Systems, wird ein Script ausgeführt. Ebenso beim starten des Players, bei Stop, Pause etc. ...

    Die scripts liegen als python script bereit - Jetzt kommt aber mein Problem. Die Dokumentation dazu ist mir zu hoch, bzw ich verstehe es nicht (könnte daran liegen das die Dokumentation etwas spärlich ist).
    Letztendlich muss ich zu jeder Aktion die ausgeführt werden soll ein script anlegen. Nur komme ich da nicht besonders weit weil mir python fremd ist.

    Da es hier scheinbar Leidensgenossen gibt, frage ich mich ob wir uns da evtl. gegenseitig helfen können.

    Danke & Grüße
    prime0n


    Edit:
    Nachdem meine KNX-Anlage inkl. Homeserver erst nächst Woche installiert wird, ich aber schon so viel wie möglich vorbereiten will, habe ich in Anlehnung an flashbang's Post folgendes zusammengebastelt:

    Code
    import socket
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.settimeout(2.0)
    sock.connect(("192.168.70.249", 3654))
    sock.settimeout(1.0)
    msg = ''
    sock.sendall(msg)


    Callback2 führt zu jeder Aktion die in XBMC diesen Script aus und übergibt nur den Wert "msg".
    Wie gesagt, ich kann es derzeit nicht testen, aber wenn sich das mal jemand anschauen könnte um mir zu sagen, ja "msg" als Parameter wird als IP Telegramm verschickt wäre ich schon glücklich!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!