Ankündigung

Einklappen
Keine Ankündigung bisher.

XMLHttpRequest aus Gira HS zu Hardware

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

    XMLHttpRequest aus Gira HS zu Hardware

    Hi, ich beiße mir die Zähne aus. Ich habe einen Gira HS und will über eine Gruppenadresse einen XMLHttpRequest ausführen. Die Hardware hat eine Internetbasierte Benutzeroberfläche und wird via XMLHttpRequest-Befehlen angesteuert. Via einfacher HTM-Seite:
    <!doctype html><html><head>
    <script>
    function sendXhr() {
    var request = new XMLHttpRequest();
    request.open("GET","http://172.xxx.200.16/input.cgi?img=1503");
    request.setRequestHeader("DNT","1");
    request.setRequestHeader("Accept-Encoding","gzip, deflate");
    request.setRequestHeader("Host","172.xxx.200.16");
    request.setRequestHeader("Accept-Language","de,en-US;q=0.9,en;q=0.8");
    request.setRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36");
    request.setRequestHeader("Accept","*/*");
    request.setRequestHeader("Referer","http://172.xxx.200.16/input.cgi?img=1503");
    request.setRequestHeader("Connection","keep-alive");
    request.send();
    }
    window.onload = sendXhr;
    </script>
    </head></html>
    tut das auch ganz gut - nur hier habe ich ja einen Browser, der das erledigt. Wie bringe ich die "Web-Seiten/IP-Geräte" dazu das auch zu machen? Ein PHP Script via Curl:
    <html>
    <body>
    <?php
    $ch = curl_init("http://172.xxx.200.22/gira/test.htm");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
    $content = curl_exec($ch);
    curl_close($ch);
    ?>
    </body>
    </html>
    welches mir in einem anderen Script Daten schreibt hat es leider nicht gebracht. Hat jemand eine Idee?

    #2
    Komplizierter geht es nicht?


    Tipp: https://www.elektronik-kompendium.de...et/0902231.htm
    Zuletzt geändert von EugenDo; 18.07.2019, 06:26.

    Kommentar


      #3
      Leider kann ich die Empfänger-Hardware nicht ändern. Einfache Posts oder ähnliches werden nicht angenommen. Selbst wenn ich einige Headers weg lasse wird der Befehl ignoriert. Also -kompliziert oder nicht- bleibt nur den XMLHttpRequest über "Web-Seiten/IP-Geräte" des Gira Homeservers abzusetzen.

      Kommentar


        #4
        sorry!!!! das macht der XMLHttpRequest seit Mitte 1990er oder so:


        GET http://172.xxx.200.16/input.cgi?img=1503 HTTP/1.1
        DNT: 1
        Accept-Encoding: gzip, deflate
        Host: 172.xxx.200.16
        Accept-Language: de,en-US;q=0.9,en;q=0.8
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36
        Accept: */*
        Referer: http://172.xxx.200.16/input.cgi?img=1503
        Connection: keep-alive

        das jetzt einfach in "Web-Seiten/IP-Geräte" umwandeln ... würde ich mal vorher mit Fiddler oder so gegen das Gerät "172.xxx.200.16" testen
        Zuletzt geändert von EugenDo; 18.07.2019, 12:19.

        Kommentar


          #5
          Meinst Du das so?
          Image4.png
          wobei der letzte "Wert als Klartext" den Trigger zum Ausführen darstellt... Mit der 16.200.16 als "Hardware"?
          Image5.png
          Geht zwar so noch nicht aber trotzdem Danke EugenDo für die Ausführungen bis hierhin!

          Kommentar


            #6
            Das kann auch nicht gehen, wenn Du ganz brutal das HTTP missachtest... nach dem letzten header brauchst Du mindestens 2x CRLF am Ende ... dieses Partyzeugs hat im GET nichts zu suchen ... das wäre Höchstens das Request (Empfang) .... aber Bitte bis hierhin.

            P.S.: Der Trigger gehört in das Logikblatt!?!
            Zuletzt geändert von EugenDo; 19.07.2019, 04:13.

            Kommentar


              #7
              So, jetzt hab ich zumindest mal kapiert, wie das Ausführen eines IP-Senden funktioniert - kommt auch eine Rückmeldung auf einer anderen GA über das Logikmodul.
              Image10.png
              Da ich ja nur senden möchte habe ich die Befehle von EugenDo nun in "IP/EIB Telegramme (Senden)" gepackt.
              Image8.png
              geht aber leider immer noch nicht.

              Kommentar


                #8
                Was sagt denn der HSLIST (Debug) dazu? ... hast Du das mal RAW mit Fiddler gegen das 172.16.200.16 getestet ... die erste Zeile ist falsch:


                Code:
                GET [URL="http://172.xxx.200.16/input.cgi?img=1503"]/input.cgi?img=1503[/URL] HTTP/1.1
                DNT: 1
                Accept-Encoding: gzip, deflate
                Host: 172.16.200.16
                Accept-Language: de,en-US;q=0.9,en;q=0.8
                User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36
                Accept: */*
                Referer: [URL="http://172.xxx.200.16/input.cgi?img=1503"]http://172.16.200.16/input.cgi?img=1503[/URL]
                Connection: keep-alive

                Kommentar


                  #9
                  ...die erste Zeile ist falsch... ! Definitiv! Es hat geklappt WAHNSINN! EugenDo hab vielen Dank, nun kann die Sopra Schwimmbad Poolsteuerung und die PH/Chlor Steuerung nun auch über den Bus erfolgen, muss halt nur die benötigten img=... (sind wirklich die Icons in der Steuerung) einzeln übersetzen - macht jetzt aber auch Spaß. Sieht übrigens im "Original" so aus:
                  Image11.png
                  Schön nicht? Würg...

                  Kommentar


                    #10
                    na .. Herzlichen Glückwunsch!

                    War ja gar nicht so schwer, wenn man das HTTP-Protokoll beachtet und Technologien nicht vermischt.

                    Auf den ersten Blick sieht es so aus, als ob man alles von dem UI der SOPRA in den HS legen könnte inkl der Status-Rückmeldungen ... aber da müsste ich das Ding zumindest mit F12 (Developer Mode des Browsers, Chrome) auseinander nehmen.



                    Kommentar


                      #11
                      Hallo cstruck,

                      cool dass du das so umgesetzt hast! Welches Modell der Sopra hast du denn bei dir verbaut? Soweit ich herausfinden konnte hat nur die professional das web-interface….
                      Unsere knapp 20 Jahre alte Sopra Test light ist letzte Woche gestorben, jetzt suche ich einen KNX-tauglichen Ersatz….

                      Kommentar


                        #12
                        Sorry wg. der späten Rückmeldung. Ich habe aktuell die Version 1.07 der Pool Control verbaut. Richtig toll zu Corona ist mir an Ostern 2020 nach nur 2 Jahren das Modul wegen Stromversorgung kaputt gegangen und wurde dann mit massiven Wiederinstallationsproblemen 14 (!) Wochen später erfolgreich in Betrieb genommen (da hängt eine Whirlpool-Umschaltung mit dran, sowie eine Wasser-Poolheizung und eine Elektro-Whirlpoolheizung - da Wärmewertheizung, maximal 35 Grad Vorlauf). Die Programmierung auf EIB-Bus hatte vorher auf eine ältere Version statt gefunden, konnte aber -da das Prinzip gleich blieb- einfach verändert werden. Ich habe es danach schleifen lassen und kann (erst) nur die Partyverlängerung machen. An der Whirlpoolumschaltung habe ich den ersten Versuch vergeigt, auch die Temperaturausgabe hat noch nicht geklappt. Aber die Verlängerung klappt! Voraussetzung, die Pool Control ist im heimischen Netzwerk eingebunden! USB Stick und 2 Zeilen Code. Oha lese grad "Professional"... Ich denke dass ich diese habe, da ich auch die Sopra Test habe, die auch über ein Display verfügt. Grad in der Rechnung gesehen, es ist eine POOL-Control-40.NET ... Das ist eine Box ohne Display mit 3 Tastern...

                        Kommentar

                        Lädt...
                        X