POST HTML an Loewe TV per SOAP XML

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Gast

    #1

    POST HTML an Loewe TV per SOAP XML

    Hallo Leute, ich versuche meinen Loewe TV per SOAP zu steuern. Die API dazu habe ich von Loewe bekommen. Per Virtuellen Ausgang funktioniert das Ganze auch, jedoch muss man vor Senden der Befehle den Miniserver am Loewe bekanntmachen (Pairing) und man bekommt eine flüchtige Client ID zugewiesen. Diese ist dann in den Befehlen anzugeben. Somit ist der Virtuelle Ausgang nicht zu gebrauchen, da dieser ja nur statische Requests absetzen kann (oder gibt es da nen Trick). Ich habe also daraufhin mit PicoC einen POST Request erzeugt, der mir aber nicht klappen will. Irgendwo hapert es. Der Loewe Fernseher antwortet auf nen GET (http://IP-Adresse:905/loewe_tablet_0001) mit "sorry I don't answer to GET". Das kann ich mit meinem kleinen PicoC Code auch nachspielen und auslesen. Wie gesagt, lediglich der sch*** POST will mir nicht gelingen. Hier der Quellcode. Vielleicht sieht jemand, was falsch sein könnte (evtl. liegt es am Content-Type? Aber genauso sieht ein Request von der offiziellen Loewe App aus... Bin grad ratlos...

    #define BUFF_SIZE 40000
    #define RD_BLOCK_SIZE 128

    STREAM* pTcpStream = stream_create("/dev/tcp/192.168.178.41/905",0,0); // create tcp stream
    char* pTcpCmd = "POST /loewe_tablet_0001 HTTP/1.1\r\nHost: 192.168.178.41:905\r\nUser-Agent: LoxLIVE [en]\r\nContent-Length: 409\r\nContent-Type: application/soap+xml; charset=utf-8\r\nSOAPACTION: RequestAccess\r\n\r\n<?xml version="1.0"?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ltv="urn:loewe.de:RemoteTV:Tablet"><env:Body ><ltv:RequestAccess><fcid>81</fcid><ClientId>?</ClientId><DeviceType>Loxone Miniserver</DeviceType><DeviceName>lxl0BB7</DeviceName><DeviceUUID>50:4F:94:10:0B:B7</DeviceUUID><RequesterName>Assist Media App</RequesterName></ltv:RequestAccess></env:Body></env:Envelope>";
    stream_write(pTcpStream,pTcpCmd,strlen(pTcpCmd)); // write to output buffer
    stream_flush(pTcpStream); // flush output buffer
    char szBuffer[BUFF_SIZE];
    char szTmpBuffer[RD_BLOCK_SIZE];
    int nCnt;
    int nBytesReceived = 0;
    int i = 0;
    // read stream
    do
    {
    nCnt = stream_read(pTcpStream,szTmpBuffer,RD_BLOCK_SIZE,4 000);
    if(nCnt > 0)
    strncpy((char*)szBuffer+i*RD_BLOCK_SIZE,szTmpBuffe r,nCnt);
    nBytesReceived += nCnt;
    i++;
    }
    while (nCnt > 0);
    FILE* pw = fopen("/user/common/response.xml","w"); // open file
    fprintf(pw,"%s",szBuffer); // write file
    printf("Bytes received: %d",nBytesReceived);
    fclose(pw);
    stream_close(pTcpStream);
  • Jan W.
    Lox Guru
    • 30.08.2015
    • 1498

    #2
    Für die Eingrenzung des Problems würde ich die Pakete zwischen MS und TV vom Switch per Wireshark mitschneiden und analysieren, was der TV zurückmeldet. "Bessere" LAN Switche bieten sowas (Funktion Mirror Port), aber auch die Fritzbox, siehe http://www.wehavemorefun.de/fritzbox/Paketmitschnitt
    Miniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul
    Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox
    Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C
    Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP
    Node-RED: IKEA Tradfri

    Kommentar

    • Gast

      #3
      Sehr gute Idee! Vielen Dank! Mirror Port - das könnte der Switch sogar haben (ist zwar "nur" ein Zyxel, hat aber PoE auf allen 24 Ports, 4GBIC 's und ne HTML Admin GUI - das sieht nach "besser" aus - bin nur grad auf Arbeit und weiß das Modell nicht ;-). Aber die Fritzbox Variante bleibt ja auch noch. Denn wenn ich das zum Laufen bringe, gäb's ne vollwertige Loewe Anbindung - incl. OSD Meldungen von der Loxone auf dem Bildschirm des TV. Wäre chic!

      Kommentar

      • Gast

        #4
        So, über Mirror Port habe ich das Ganze mal mit nem Wireshark auswerten können. Die Content-Length hat überhaupt nicht gepasst. Auch ist es scheinbar wichtig, dass nach dem schließenden Envelope Tag ganz am Ende, also nach dem > ein Leerzeichen kommt. Warum auch immer... Die Ganze Sache läuft jetzt! Ich verifiziere die Sache noch, säubere das Debug Gedöns und dann Poste ich den Code für den Programm Baustein hier. Realisiert werden soll, dass der Loewe sich einschaltet und auf AV umstellt, wenn der angeschlossene Sonos Player loslegt. Am Rande: Es kursiert hier eine Status Abfrage für den Sonos, wo Titel/Album/Interpret scheinbar nicht funktionieren. Hier stimmt auch die Content-Length nicht (richtig wäre 297) und es hat sich ein Leerzeichen vor dem \n bevor der Content (also <env....) beginnt, eingeschlichen. Wer einen LoeweTV besitzt kann dann den die Infos über das OSD einblenden... Aber wie gesagt, das ist alles noch Baustelle. Hab noch nicht mal den AV Adapter (den hole ich heute beim Händler).

        Kommentar

        • Diablo_Vmax1200
          Extension Master
          • 03.09.2015
          • 119

          #5
          Hi,
          ich habe irgendwann ähnliches vor. Hast du es voll hin bekommen?

          grüsse Michael

          Kommentar

          • patrick.kolar
            Azubi
            • 16.12.2016
            • 3

            #6
            I would like to control Loewe throught Loxone. Did anyone make it work? I would appreciate your help. Regards. Patrick

            Kommentar

            Lädt...