Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. XML oder JSON Requests senden

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    XML oder JSON Requests senden

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Mitch last edited by

      Hi,

      Ich möchte ein XML oder JSON Requests mit dem ioBroker an dieses System senden:

      https://help.internetx.com/display/APIXMLDE/API-Grundlagen+XML

      Es geht darum eine IP-Adresse hinter einer Subdomain zu ändern. Also praktisch mein eigener, kleiner Dyndns Dienst.

      Habe sowas aber noch nicht gemacht. Bin über jeden Hinweis dankbar, wie man sie da am besten rantastet.

      LG, Mitch

      mickym M 2 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @Mitch last edited by

        @mitch Kannst Du mit allen 3 Logikmaschinen: NodeRed, Blockly und Javascript machen. Wenn Du Hilfe bei NodeRed brauchst, dann melde Dich - für die anderen gibts sicher genügend Hilfe von anderen. Du musst Dich halt entscheiden, welche Logikmaschine Du nutzen möchtest.

        M 1 Reply Last reply Reply Quote 0
        • M
          Mitch @Mitch last edited by

          Ich habe gerade noch ein CLI Skript gefunden, wenn ich das auf dem ioBroker System packe und vom ioBroker ein CLI Kommando absetzen kann, würde das auch gehen:

          https://github.com/pngmbh/autodns-cli

          Was findet ihr besser/einfacher?

          mickym 1 Reply Last reply Reply Quote 0
          • M
            Mitch @mickym last edited by

            @mickym sagte in XML oder JSON Requests senden:

            @mitch Kannst Du mit allen 3 Logikmaschinen: NodeRed, Blockly und Javascript machen. Wenn Du Hilfe bei NodeRed brauchst, dann melde Dich - für die anderen gibts sicher genügend Hilfe von anderen. Du musst Dich halt entscheiden, welche Logikmaschine Du nutzen möchtest.

            Dann würde ich node Red bevorzugen. Müsste ich einen http requests nutzen, oder gibt es da was besseres?

            Vergiss meinen vorherigen Post. Das mit dem cli ist nicht nötig.icb fand nur interessant, dass das Beispiel in der Beschreibung genau das machen soll, was ich möchte. Bei einer Subdomain die IP Adresse updaten.

            1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active @Mitch last edited by mickym

              @mitch na ja Du musst halt wieder was installieren - die JSON API funktioniert out of the box. Auf der Webseite kannst probieren. Ja Du nutzt einfach http Request Nodes. Wenn Du über POST verschicken kannst, kannst Du einfach ein payload Objekt schicken. Auf der Webseite die Du gepostet hast, kannst ja direkt die Befehle absetzen. Wenn Du weißt wie und welcher funktioniert, dann kann man das ja entsprechend in der http Request Node umsetzen.

              M 1 Reply Last reply Reply Quote 0
              • M
                Mitch @mickym last edited by

                @mickym sagte in XML oder JSON Requests senden:

                @mitch na ja Du musst halt wieder was installieren - die JSON API funktioniert out of the box. Auf der Webseite kannst probieren. Ja Du nutzt einfach http Request Nodes. Wenn Du über POST verschicken kannst, kannst Du einfach ein payload Objekt schicken. Auf der Webseite die Du gepostet hast, kannst ja direkt die Befehle absetzen. Wenn Du weißt wie und welcher funktioniert, dann kann man das ja entsprechend in der http Request Node umsetzen.

                Kannst du mir vielleicht bei dem Aufbau des JSON helfen. Das CLI Skript könnte dabei helfen, da hier genau mein Beispiel drin ist:

                $ ./autodns-cli update foo.example.org 127.0.0.1

                Bin irgendwie zu blöd dafür...

                mickym 1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @Mitch last edited by mickym

                  @mitch Ich habs zwar versucht - aber auf die schnelle kann ich Dir da auch nicht helfen. Sorry.

                  Hier steht ein JSON - wie man eine Domäne updated:

                  https://help.internetx.com/display/APIXMLDE/Domain+Update

                  und hier der Aufbau eines Domain Objektes:

                  https://help.internetx.com/display/APIXMLDE/Objekt+Domain

                  Du kannst es ja mal so versuchen:

                  {
                  
                    "name": "domain.de",
                    "nameServers": [
                      {
                        "name": "string",
                        "ttl": 0,
                        "ipAddresses": [
                          "string"
                        ]
                      }
                    ]}
                  

                  Das Objekt mal in eine payload - ein PUT Request machen und an

                  /domain/{name}
                  

                  aber wie gesagt ich kenn mich da auch nicht aus, so würde ich mich halt rantasten.

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    Mitch @mickym last edited by

                    @mickym

                    Ich hatte die letzten Tage viel zu tun und konnte mich nicht darum kümmern. Ich habe nun erfolgreich mittels Postman dieses XML Post zur Anbieter URL (https://gateway.autodns.com) gesendet und es funktioniert:

                    <?xml version="1.0" encoding="utf-8"?>
                    <request>
                    <auth>
                    <user>username</user>
                    <password>passwort</password>
                    <context>4</context>
                    </auth>
                    <task>
                    <code>0202001</code>
                    <default>
                    <search_and_replace>
                    <search>1.2.3.4</search>
                    <replace>1.2.3.5</replace>
                    </search_and_replace>
                    </default>
                    <zone>
                    <name>meinedomain.de</name>
                    <system_ns>a.ns14.net</system_ns>
                    </zone>
                    </task>
                    </request>

                    Jetzt muss ich das nur noch aus Node RED hinbekommen. Allerdings finde ich dort kein XML, sondern nur JSON.

                    Kannst jemand einen Flow posten, wie es funktionieren müsste?

                    Wie macht man das jetzt am günstigsten. Ich habe eine alte IP-Adresse 1.2.3.4 und eine neue IP-Adresse 1.2.3.5. Soll ich damit jetzt das XML in ioBroker Objekt bauen, damit ich es über den Flow absetzen kann, oder kann ich im Flow auch mit Variablen arbeiten, die automatisch die alte IP-Adresse und neue IP-Adresse aus den ioBroker Objekten zusammenbaut. Praktisch wie eine Vorlage.

                    Ich bräuchte ja auch noch ein Trigger-Objekt, was auf true steht, damit er losläuft und den XML Request per POST absetzt.

                    Was würdest ihr tun? Ich denke so eine Vorlage wäre wesentlich einfacher.

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Mitch last edited by mickym

                      @mitch Hänge mal eine debug Node an Deine HTTP-Request Node um zu sehen, was aus dem Abruf rauskommt. JSON ist wesentlich leichter zu verarbeiten. Du kannst einfach meinen Flow verwenden, um aus dem JSON die einzelnen Werte in einzelne Datenpunkte zu schreiben: https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen

                      Also wenn Du JSON zurück bekommst, ist das wesentlich besser. 🙂

                      Den Trigger kannst Du selbst wählen - ob Du über einen Button in der Visualisierung triggerst oder in zeitlichen Intervall - alles ist möglich. 😉 - Ich zeige es Dir gerne, wenn Du mal mehr Zeit hast und die Antworten nicht in Tagesintervallen, sondern in Minutenintervallen kommen.

                      M 1 Reply Last reply Reply Quote 0
                      • M
                        Mitch @mickym last edited by Mitch

                        @mickym

                        Das mit JSON ist mir bewusst. Allerdings ist die JSON-Schnittstelle des Anbieters nicht so gut (oder in meinem Fall einfach) dokumentiert, wie xml. Und XML funktioniert bei mir schonmal, wenn ich es mittels Postman absende.

                        Screenshot 2023-03-10 160623.png

                        flows.json

                        Meine Erwartungshaltung war, dass ich zumindestens eine Rückmeldung der API vom Anbieter bekomme. Aber unter Debug wird nichts geloggt.

                        Bei XML sehe ich halt mehr Land. Wenn ich einen statischen XML-Code aus dem ioBroker dahin senden kann, der dann auch umgesetzt wird., muss ich den XML-Code noch mit Platzhaltern versehen und durch die Objekte ersetzen.

                        Ich denke, das bekomme ich hin.

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

                          @mitch
                          evtl hilft das weiter

                          https://stackoverflow.com/questions/37234407/how-to-post-with-xml-payload-in-node-red

                          dem html request ist es egal was es da sendet, beides ist text. damit der empfänger versteht was da ankommt muss man den content type richtig setzen.

                          eine detailliertere Beschreibung der http request node ist hier
                          https://stevesnoderedguide.com/node-red-http-request-node-beginners

                          wie authentifizierst du die anfrage? sonst könnte ich die ja auch senden?

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

                            @oliverio Authentifizierung wird über Elemente in der XML. Da gibt es Username und Passwort, so wie auch unter dem Link von dir.

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

                              @mitch
                              Ja hab das gesehen. Allerdings kenn ich das so das man durch die Anmeldung meist ein Token oder sessionid erhält, die man dann in den folgenden Anfragen mitgibt.
                              Http ist eigentlich ein zustandsloses Protokoll. D.h. Der Server kann aufeinander folgende Anfragen noch von einander unterscheiden, daher dann ein Kennzeichen um das alles zu verbinden.
                              Im Browser wäre die Alternative ein Cookie oder eine sessionid in der url, wobei man das aus Sicherheitsgründen nicht mehr macht.
                              Das seh ich hier aber nicht. D.h. Die Authentifizierung läuft dann auf Basis der Absender ip, was ich persönlich als relativ unsicher einschätze. Aber evtl hab ich da auch noch was überlesen.

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              752
                              Online

                              31.7k
                              Users

                              79.8k
                              Topics

                              1.3m
                              Posts

                              communication
                              3
                              13
                              646
                              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