Ankündigung

Einklappen
Keine Ankündigung bisher.

Gira Homeserver - IP Gerät - HTTP POST JSON

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

    Gira Homeserver - IP Gerät - HTTP POST JSON

    Hallo.

    Ich bin leider etwas am verzweifeln.
    Ich versuche gerade einen HTTP Post request abzusetzen um eine Befehl an eine IP Kamera zu geben.
    Hier mein Vorgehen:
    • Über Postman den Befehl verifiziert
    • Über Postman den HTTP Befehlsatz ausgelesen

    HTTP Befehl:
    POST /api.cgi?cmd=PtzCtrl&user=admin&password=123456 HTTP/1.1
    Host: 192.168.10.150
    Content-Type: application/json

    [{"cmd":"PtzCtrl","action":0,"param":{"channel": 0," op":"ToPos","speed":32,"id":2}}]



    Diesen Befehl habe ich im Homeserver über Datenblöcke umgesetzt:



    Nachdem der Befehl abgesetzt wurde, hab ich mir im hslist angeschaut was gesendet wird:

    ​​image.png​​

    Wie man sieht, es wird nicht alles gesendet!!

    Im zweiten Versuch hab ich den HTTP Befehl in ein Byte-Array umgewandelt und das gesendet:


    Auch hier sieht man das nicht alles gesendet wird.
    image.png
    Ich bin mit meinem Latein am Ende.

    Irgendwie werden die zu sendenden Daten einfach abgeschnitten.
    Über die IP/Telegramm-Funktion werden auch die Daten abgeschnitten.

    Hat noch einer ein Hinweis oder eine Idee?

    Danke und Gruß
    Patrick​



    ​​
    Angehängte Dateien
    Zuletzt geändert von perlnet; 22.10.2022, 20:40.

    #2
    Stochere auch nur im Nebel:
    was passiert, wenn du das Length Attribut noch setzt?
    was sagt Wireshark? Evtl. wird ja nur die Anzeige Abgeschnitten?

    Kommentar


      #3
      Hört sich nach dem Problem an, welches ich auch habe. Bin aber auch noch nicht schlauer geworden. Hatte bisher aber auch leider noch nicht die Zeit um mit Wireshark rumzuspielen.

      Hallo zusammen, wir haben uns ganz frisch eine Klimaanlage von Samsung installiert, die sich mit der App SmartThings steuern lässt. Über die Developer-Seite von SmartThings habe ich mir einen Token generiert, mit dem ich die Anlage abfragen bzw. steuern kann (per Postman funktioniert es soweit schonmal. Leider bin ich ein

      Kommentar


        #4
        Wireshark mit ner VM wäre mein nächster Ansatz gewesen.
        Wenn ich das Längen-Attribut mitgeben wird nur noch weniger von den Nutzdaten übertragen.
        Könnte ja sein das Attribute fehlen, aber wenn nicht alles gesendet wird was ich eintrage bringt es mir ja nichts.
        Ob im Log nicht alles ausgegeben wird bekomme ich nur mit Wireshark raus. Mal gucken...

        Ich habe mal den Usernamen und das Passwort auf ein Minimum eingestellt und auch die JSON minimiert.
        Nun wird alles laut Log übertragen, aber es funktioniert trotzdem nicht.

        Bin kurz davor mir ein eigenen Logik-Baustein zu schreiben wo ich die REST-Request einpacke..
        Hab eigentlich keine Lust mich solange damit zu beschäftigen.
        Hab gestern schon den ganzen Tag mit Tests verbracht.


        Schön das man soviel investiert hat um den Homeserver selbst eine REST Schnittstelle zu spendieren aber keine ordentliche Client-Implementierung vorgenommen hat.

        Kommentar


          #5
          Soweit ich weiß wird garnicht alles protokolliert. Das wird am Ende auf der Debug-Seite abgeschnitten.

          Einen POST-Baustein habe ich sogar fast fertig (Aber für GET). Hatte noch einen Fehler mit ner Library, den aber mittlerweile gelöst in nem anderen Zusammenhang. Bzgl. POST: Würde nur gern es etwas besser machen. Ala JSON, wo man variablen mittels Eingängen füllt und dann wird es geschickt.

          Ich hatte es aber getestet und POST geht schon. Hast du es denn gemacht wie in dem Thread beschrieben? Length musst du angeben.

          Kommentar


            #6
            Ich habe auch gerade mit dem Thema gekämpft, ging konkret um die Swagger-Ansteuerung des Peaknx micro (LED-Farbe).

            So klappt es - zu 99%. POST wird ausgeführt und mit 200 OK quittiert, kommt allerding auf der Debugseite in der Antwort noch ein 400 hinterher (wegen Content-L). Muss ich noch wegoptimieren.

            Achtung: Leerzeichen hinter POST und vor HTTP!

            Code:
            23.10.2022 12:46:46 (IP: 192.168.2.124) (Port: 31521)
            [B](Send: 164) 0x50 0x4f 0x53 0x54 0x20 0x2f 0x61 0x70 0x69 0x2f 0x76 0x31 0x2f 0x70 0x61 0x6e 0x65 0x6c 0x2f 0x6c 0x65 0x64 0x2f 0x63 0x6f 0x6c 0x6f 0x72 0x20 0x48 0x54 0x54 0x50 0x2f 0x31 0x2e 0x31 0xd 0xa 0x48 0x6f 0x73 0x74 0x3a 0x20 0x31 0x39 0x32 0x2e 0x31 0x36 0x38 0x2e 0x32 0x2e 0x31 0x32 0x34 0x3a 0x33 0x31 0x35 0x32 0x31 0xd 0xa 0x43 0x6f 0x6e 0x74 0x65 0x6e 0x74 0x2d 0x54 0x79 0x70 0x65 0x3a 0x20 0x61 0x70 0x70 0x6c 0x69 0x63 0x61 0x74 0x69 0x6f 0x6e 0x2f 0x6a 0x73 0x6f 0x6e 0xd 0xa 0x43 0x6f 0x6e 0x74 0x65 0x6e 0x74 0x2d 0x4c 0x65 0x6e 0x67 0x74 0x68 0x3a 0x20 0x34 0x33 0xd 0xa 0xd 0xa 0x7b 0x22 0x72 0x22 0x3a 0x30 0x2c 0x22 0x67 0x22 0x3a 0x32 0x35 0x35 0x2c 0x22 0x62 0x22 0x3a 0x30 0x7d 0xd 0xa 0x43 0x6f 0x6e 0x6e 0x65 0x63 0x74 0x69 0x6f 0x6e 0x3a 0x20 0x43 0x6c 0x6f 0x73 0x65 0xd 0xa 0xd 0xa[/B]
            POST /api/v1/panel/led/color HTTP/1.1
            Host: 192.168.2.124:31521
            Content-Type: application/json
            Content-Length: 43
            
            {"r":0,"g":255,"b":0}
            Connection: Close
            
            
            [B](Recv: 212) 0x48 0x54 0x54 0x50 0x2f 0x31 0x2e 0x31 0x20 0x32 0x30 0x30 0x20 0x4f 0x4b 0xd 0xa 0x44 0x61 0x74 0x65 0x3a 0x20 0x53 0x75 0x6e 0x2c 0x20 0x32 0x33 0x20 0x4f 0x63 0x74 0x20 0x32 0x30 0x32 0x32 0x20 0x31 0x30 0x3a 0x34 0x36 0x3a 0x34 0x39 0x20 0x47 0x4d 0x54 0xd 0xa 0x53 0x65 0x72 0x76 0x65 0x72 0x3a 0x20 0x4b 0x65 0x73 0x74 0x72 0x65 0x6c 0xd 0xa 0x43 0x6f 0x6e 0x74 0x65 0x6e 0x74 0x2d 0x4c 0x65 0x6e 0x67 0x74 0x68 0x3a 0x20 0x30 0xd 0xa 0xd 0xa 0x48 0x54 0x54 0x50 0x2f 0x31 0x2e 0x31 0x20 0x34 0x30 0x30 0x20 0x42 0x61 0x64 0x20 0x52 0x65 0x71 0x75 0x65 0x73 0x74 0xd 0xa 0x43 0x6f 0x6e 0x6e 0x65 0x63 0x74 0x69 0x6f 0x6e 0x3a 0x20 0x63 0x6c 0x6f 0x73 0x65 0xd 0xa 0x44 0x61 0x74 0x65 0x3a 0x20 0x53 0x75 0x6e 0x2c 0x20 0x32 0x33 0x20 0x4f 0x63 0x74 0x20 0x32 0x30 0x32 0x32 0x20 0x31 0x30 0x3a 0x34 0x36 0x3a 0x34 0x39 0x20 0x47 0x4d 0x54 0xd 0xa 0x53 0x65 0x72 0x76 0x65 0x72 0x3a 0x20 0x4b 0x65 0x73 0x74 0x72 0x65 0x6c 0xd 0xa 0x43 0x6f 0x6e 0x74 0x65 0x6e 0x74 0x2d 0x4c[/B]
            HTTP/1.1 200 OK
            Date: Sun, 23 Oct 2022 10:46:49 GMT
            Server: Kestrel
            Content-Length: 0
            
            HTTP/1.1 400 Bad Request
            Connection: close
            Date: Sun, 23 Oct 2022 10:46:49 GMT
            Server: Kestrel
            Content-L
            [B](Gesamt: 0) (Work: 0) (Typ: Liste) (OK: 1)[/B]​
            swagger-post.png
            Zuletzt geändert von MatthiasS; 23.10.2022, 12:13.
            Gruß Matthias
            EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
            - PN nur für PERSÖNLICHES!

            Kommentar


              #7
              MatthiasS
              Wie verhält es sich denn, wenn der Payload größer ist? Unterhalb von ca. 2xx Zeichen wird bei uns anscheinend auch nichts abgeschnitten.

              Kommentar


                #8
                Die zu sendenden Daten werden nicht abgeschnitten mMn, nur in der Debug-Seite begrenzt.
                Gruß Matthias
                EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
                - PN nur für PERSÖNLICHES!

                Kommentar


                  #9
                  Gerade in der Hilfe nachgeschaut (kann man immer empfehlen ): Max. 500.000 Zeichen Senden/Empfangen
                  Gruß Matthias
                  EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
                  - PN nur für PERSÖNLICHES!

                  Kommentar


                    #10
                    Hallo.

                    Ich bin nun etwas weiter aber nicht entwirrter.
                    Ich hab mit Wireshark und einer VM den Datentransfer mitgeschnitten.

                    Beim Request passiert nichts.
                    Schau ich auf die Console der VM hab ich durch Zufall aber das gesehen:

                    image.png

                    Bin nun total verwirrt.

                    Hier meine Config:
                    image.png
                    image.png


                    Ein Bild von der Kamera welches per HTTP (JPEG) gezogen wird geht aber.

                    Ein Login per ssh brachte auch "network unreachable"...

                    Ich werd bescheuert. Daran hab ich nicht gedacht.
                    Nachdem diesen EIntrag hier:

                    image.png

                    Konnte ich das Netzwerk erreichen.

                    Nun teste ich mal ob auch der HTTP Request überhaupt raus geht.
                    Danke schon mal an alle.​

                    Kommentar


                      #11
                      Kurzer Nachtrag.
                      Nun geht auch alles .

                      Auf den dreh bin ich nicht gleich gekommen da ja das Kamera Bild funktioniert.
                      Aber der Bild holt sich der Client wahrscheinlich direkt und nicht über den Server...

                      Danke nochmals!

                      Kommentar


                        #12
                        Hallo Matthias, bin auch gerade dabei mit der Farbansteuerung am Peaknx Micro, funktioniert soweit aber hast du das schon mit dem Content-L in Griff bekommen ?


                        Zitat von MatthiasS Beitrag anzeigen
                        So klappt es - zu 99%. POST wird ausgeführt und mit 200 OK quittiert, kommt allerding auf der Debugseite in der Antwort noch ein 400 hinterher (wegen Content-L). Muss ich noch wegoptimieren.

                        Zuletzt geändert von Gergi; 30.12.2023, 15:02.

                        Kommentar

                        Lädt...
                        X