Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Rest-API - Verständnisproblem

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Rest-API - Verständnisproblem

    This topic has been deleted. Only users with topic management privileges can see it.
    • Codierknecht
      Codierknecht Developer Most Active @OliverIO last edited by

      @oliverio sagte in Rest-API - Verständnisproblem:

      Wenn er bei simple api bleibt.

      Bleibt er ja nicht. Er hat Rest-API ... so wie ich in meinem letzten Beispiel auch.

      OliverIO 1 Reply Last reply Reply Quote 0
      • Rene55
        Rene55 @OliverIO last edited by

        @oliverio Ich schau mir den Issue mal an. Vllt. bin ich dann schlauer.

        1 Reply Last reply Reply Quote 0
        • OliverIO
          OliverIO @Codierknecht last edited by OliverIO

          @codierknecht

          Dann sorry, sieht zu ähnlich aus
          Bei echtem Rest wäre aber so ein Befehl unnötig

          Aber ist halt alles philosophisch die Unterscheidung

          Codierknecht Rene55 2 Replies Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @OliverIO last edited by

            @oliverio sagte in Rest-API - Verständnisproblem:

            sieht zu ähnlich aus

            Darum komme ich da auch ständig durcheinander 😁

            Rene55 1 Reply Last reply Reply Quote 0
            • Rene55
              Rene55 @Codierknecht last edited by

              @codierknecht Jetzt muss ich nur noch schauen, wenn es für API einen Benutzer mit Password gibt. Im Simple-Api wurde es einfach hinten angehangen.

              Codierknecht 1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @Rene55 last edited by

                @rene55 sagte in Rest-API - Verständnisproblem:

                wenn es für API einen Benutzer mit Password gibt

                Wer macht denn sowas? 😉

                Basic-Authentication müsste wohl als zusätzlicher Header mitgegeben werden.

                85fb8a55-57af-403a-9410-c768dbdcd27f-grafik.png

                Rene55 1 Reply Last reply Reply Quote 0
                • Rene55
                  Rene55 @OliverIO last edited by

                  @oliverio Schön das der Issue #54 schon aus 2023 ist. Aber nach meinem Denken ist ja schon die http-Befehlszeile im Swagger nicht korrekt, da steht nichts von 'patch' drin.

                  1 Reply Last reply Reply Quote 0
                  • Rene55
                    Rene55 @Codierknecht last edited by

                    @codierknecht Ja, mit ein Grund, auf was 'modernes' umzusteigen! Wobei ich dann noch erlernen muss, wie ich denn im ESP einen curl abgesetzt bekommen - andere Baustelle (aber gehört ins Gesamtpaket).

                    OliverIO BananaJoe 2 Replies Last reply Reply Quote 0
                    • OliverIO
                      OliverIO @Rene55 last edited by

                      @rene55

                      Nix curl
                      Da verwendest du die http Bibliothek.
                      Die kann das.

                      Rene55 1 Reply Last reply Reply Quote 0
                      • Rene55
                        Rene55 @OliverIO last edited by

                        @oliverio Wäre mir am liebsten. Nur das, was ich dafür brauche aus dem Swagger rauszukriegen übersteigt (aktuell) meinen Wissensstand.

                        OliverIO 1 Reply Last reply Reply Quote 0
                        • BananaJoe
                          BananaJoe Most Active @Rene55 last edited by

                          @rene55 sagte in Rest-API - Verständnisproblem:

                          Wobei ich dann noch erlernen muss, wie ich denn im ESP einen curl abgesetzt bekommen

                          Wie @OliverIO schreibt. einfach per http.

                          Swagger nimmt curl weil man aus curl-Beispielen es eigentlich für jede Variante ableiten kann, z.B. PowerShell usw.
                          Bei curl sind die einzelnen Option schön getrennt und klar ersichtlich, z.B. ob es POST oder GET ist, ob ein Header übergeben wird usw.

                          Rene55 1 Reply Last reply Reply Quote 0
                          • OliverIO
                            OliverIO @Rene55 last edited by

                            @rene55

                            Einfach ChatGPT befragen.
                            Gerade für Code, insbesondere wenn die lernbasis groß ist, gibt es schon die 90% Idee wie man zum Ziel kommt, auch wenn da manchmal Fehler enthalten sind.
                            Hier mal eine Abfrage von gerade eben

                            Auf einem ESP (z. B. ESP32 oder ESP8266) kannst du eine HTTP-PATCH-Anfrage mit der HTTPClient-Bibliothek in der Arduino-IDE ausführen. Hier ist ein Beispielcode, der zeigt, wie du eine PATCH-Anfrage mit JSON-Daten an einen Server sendest:

                            Beispielcode für ESP32/ESP8266:

                            #include <WiFi.h>        // Für ESP32 (nutze <ESP8266WiFi.h> für ESP8266)
                            #include <HTTPClient.h>
                            
                            const char* ssid = "Dein_WLAN_Name";
                            const char* password = "Dein_WLAN_Passwort";
                            const char* serverUrl = "http://example.com/api/resource";  // Ziel-URL für PATCH
                            
                            void setup() {
                                Serial.begin(115200);
                                WiFi.begin(ssid, password);
                            
                                // Warten, bis WiFi verbunden ist
                                while (WiFi.status() != WL_CONNECTED) {
                                    delay(1000);
                                    Serial.println("Verbinde mit WiFi...");
                                }
                                Serial.println("WiFi verbunden!");
                            
                                HTTPClient http;
                                http.begin(serverUrl);  // URL setzen
                                http.addHeader("Content-Type", "application/json");  // JSON-Header setzen
                            
                                // JSON-Daten für das Patch-Request
                                String jsonPayload = "{\"key1\":\"value1\",\"key2\":\"value2\"}";
                            
                                int httpResponseCode = http.PATCH(jsonPayload);  // PATCH-Request senden
                            
                                if (httpResponseCode > 0) {
                                    Serial.print("HTTP Response Code: ");
                                    Serial.println(httpResponseCode);
                                    String response = http.getString();
                                    Serial.println("Antwort: " + response);
                                } else {
                                    Serial.print("Fehler bei PATCH: ");
                                    Serial.println(http.errorToString(httpResponseCode).c_str());
                                }
                            
                                http.end();  // Verbindung schließen
                            }
                            
                            void loop() {
                                // Kein Code hier nötig
                            }
                            

                            Erklärung:

                            • WiFi-Verbindung herstellen: Der ESP verbindet sich mit dem WLAN.
                            • HTTPClient verwenden: Mit http.begin(serverUrl) wird die Verbindung zum Server aufgebaut.
                            • Header setzen: http.addHeader("Content-Type", "application/json") teilt dem Server mit, dass JSON gesendet wird.
                            • PATCH-Request senden: http.PATCH(jsonPayload) sendet die JSON-Daten an den Server.
                            • Antwort auslesen: Der HTTP-Response-Code und die Server-Antwort werden über die serielle Konsole ausgegeben.

                            Falls dein Server HTTPS verwendet, solltest du stattdessen WiFiClientSecure und HTTPClient verwenden.

                            Falls du weitere Fragen hast oder es für dein Projekt anpassen möchtest, sag Bescheid!

                            1 Reply Last reply Reply Quote 0
                            • Rene55
                              Rene55 @BananaJoe last edited by

                              @bananajoe Ja soweit alles ok. Wie schon erwähnt, mit Simple-Api (und den ESPs) läuft das bei mir schon geraume Zeit - sowohl zum ESP als auch zurück. Das blöde ist gerade nur, dass ich nicht zu Hause bin und natürlich keinen ESP hier habe. Ich mache jetzt hier nur aus dem Browser heraus.

                              OliverIO 1 Reply Last reply Reply Quote 0
                              • OliverIO
                                OliverIO @Rene55 last edited by

                                @rene55

                                Wenn es läuft würde ich Nix ändern.
                                Da ist kein so großer unterschied solange dir der Funktionsumfang von simple api ausreicht und der Adapter noch gewartet wird.

                                Rene55 1 Reply Last reply Reply Quote 0
                                • Rene55
                                  Rene55 @OliverIO last edited by

                                  @oliverio Auch das ist soweit richtig. Einzig wollte ich meinen Wissensstand erweitern, wobei ich ja gerade hier schon mehrfach eigenständig versucht habe und gescheitert bin.
                                  Übrigens Danke für das umfangreiche Beispiel. Wo ich dann gleich nachfragen muss: Was muss denn genau bei 'serverUrl' rein? Nicht dass wir uns wieder im Kreis drehen.

                                  1 Reply Last reply Reply Quote 0
                                  • OliverIO
                                    OliverIO @Rene55 last edited by OliverIO

                                    http://ipaddress:8093/v1/state/system.adapter.rest-api.0.memHeapTotal
                                    das wäre eine Server url

                                    les dir auch mal nur so als Basis wissen den wikipedia artikel zu REST durch
                                    https://de.wikipedia.org/wiki/Representational_State_Transfer
                                    ggfs auch mal wie das http protokoll funktioniert
                                    https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol

                                    rest sozusagen auf http darauf modelliert
                                    REST folgt dem CRUD prinzip, also atomare atkionen, wie mit daten umgegangen werden kann crud steht für Create,Read,Update,Delete

                                    Rene55 1 Reply Last reply Reply Quote 0
                                    • Rene55
                                      Rene55 @OliverIO last edited by

                                      @oliverio Ich werde mir auch diese Grundlagen mal reinziehen, damit meine Fragen etwas weniger kryptisch werden. Ich hatte eigentlich auf die URL für den 'patch' gehofft. Aber der ist ja seit 2023 etwas defekt.
                                      Erstmal Danke für alle Hilfestellungen. Ich werde mir erstmal einen ESP besorgen und dann in "echt" mal in Ruhe testen. Und wenn es nicht geht, leg ich alles in die Tonne und mach mit Simple-API weiter. Bis es mich wieder überfällt! 😳

                                      OliverIO 1 Reply Last reply Reply Quote 0
                                      • OliverIO
                                        OliverIO @Rene55 last edited by OliverIO

                                        @rene55 sagte in Rest-API - Verständnisproblem:

                                        URL für den 'patch' gehofft. Aber der ist ja seit 2023 etwas defekt

                                        wenn du dir REST durchgelesen hast, wird dir klar, das die URL immer gleich ist.

                                        URL steht ja für unified ressource locatior, also sowas um eine ressource (hier datenpunkt) eindeutig zu identifizieren. in der url
                                        http://ipaddress:8093/v1/state/system.adapter.rest-api.0.memHeapTotal
                                        steht ja drin, welches system = http://ipaddress:8093
                                        welche API version = v1
                                        welchen ressourcentyp = state, wahrscheinlich könnte da auch object stehen
                                        welche ressourcenid = system.adapter.rest-api.0.memHeapTotal

                                        je nach http methode
                                        put = neuanlegen (create)
                                        get = lesen (read)
                                        patch = ändern (update)
                                        delete = löschen (delete)

                                        weiß das system was du da machen möchtest
                                        bei webseiten kennt man meist nur die http methoden get und post

                                        wenn werte notwendig sind, können die als sogenannte payload übergeben werden. das steht aber in der doku der http bibliothek dann auch drin. also immer zuerst die dokumentation genau lesen, nur die gilt.

                                        aber das steht in den beiden artikeln auf einer basis, die anfänger nicht so ganz überfordern.
                                        ansonsten empfehle ich nutze chatgpt (auch schon in der kostenlosenversion)
                                        das kann dir das dann alles erklären und ggfs noch leichter aufbereiten.
                                        ansonsten dann gerne auch hier im forum.

                                        1 Reply Last reply Reply Quote 0
                                        • First post
                                          Last post

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate
                                        FAQ Cloud / IOT
                                        HowTo: Node.js-Update
                                        HowTo: Backup/Restore
                                        Downloads
                                        BLOG

                                        570
                                        Online

                                        31.7k
                                        Users

                                        79.8k
                                        Topics

                                        1.3m
                                        Posts

                                        4
                                        29
                                        770
                                        Loading More Posts
                                        • Oldest to Newest
                                        • Newest to Oldest
                                        • Most Votes
                                        Reply
                                        • Reply as topic
                                        Log in to reply
                                        Community
                                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                        The ioBroker Community 2014-2023
                                        logo