Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Grundsatzfragen zu API

    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

    Grundsatzfragen zu API

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

      Hallo Zusammen

      ich habe zwei dingz Schalter (Multifunktionsschalter mit WLAN aus der Schweiz).
      Diese können mittels API angesteuert werden ( https://documenter.getpostman.com/view/11123877/TVKD1x7V#82665bf7-cb0d-48d0-a7f1-80887b5f559e )

      Nun möchte ich die LED via iobroker ansteuern (Alarmanlage ein = rot, aus = grün)
      Wie löse ich das nun mit iobroker? Muss dies via JavaScript gemacht werden?
      Mir ist nicht klar, wie ich die POST Befehle versenden kann...
      Ich weiß, das es einen Adapter für dingz gibt, leider unterstützt dieser aber die Ansteuerung der LED nicht.

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

        @roger-spo Im Prinzip, kannst Du es via JavaScript, Blockly oder NodeRed verschicken. Wie steht ja auf der Seite von der Seite die Du gespostet hast wunderbar drin. Sprich Du schickst die JSON Strings mit ggf. den entsprechenden Header mit der POST Methode hin. Da ich NodeRed benutze, bleibe ich Dir erst mal die Syntax schuldig, aber gibt sicher Leute, die das schon häufig gemacht haben.

        Roger Spo 1 Reply Last reply Reply Quote 0
        • Roger Spo
          Roger Spo @mickym last edited by

          @mickym Danke für deine schnelle Antwort! Somit könnte ich dies also auch via NodeRed machen? Stehe leider etwas auf dem Schlauch, da ich aus der KNX Welt komme. JSON und NodeRed sind für mich noch neu...

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

            @roger-spo
            Du kannst es auch mit CURL auf der Kommandozeile machen - auf der Seite hast Du ja auf der rechten Seite die Beispiele:

            42f6b064-d7b4-4526-893c-d1c0fedd30ff-image.png

            In Node Red bereitest Du alles mit einer Change Node vor - die URL kannst entweder in msg.url mitgeben oder in der HTTP-Request node.

            So müsste es eigentlich gehen:

            [
               {
                   "id": "164a1b6.37a52e5",
                   "type": "change",
                   "z": "6840bb80.a7bfb4",
                   "name": "",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "{\"on\":true,\"color\":\"50;100;100\",\"mode\":\"hsv\",\"ramp\":50}",
                           "tot": "json"
                       },
                       {
                           "t": "set",
                           "p": "headers",
                           "pt": "msg",
                           "to": "{\"Connection\":\"close\",\"Content-Type\":\"application/json\",\"Content-Length\":55,\"Access-Control-Allow-Origin\":\"*\"}",
                           "tot": "json"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 530,
                   "y": 160,
                   "wires": [
                       [
                           "1da73091.24e85f"
                       ]
                   ]
               },
               {
                   "id": "1da73091.24e85f",
                   "type": "http request",
                   "z": "6840bb80.a7bfb4",
                   "name": "",
                   "method": "POST",
                   "ret": "txt",
                   "paytoqs": "ignore",
                   "url": "",
                   "tls": "",
                   "persist": false,
                   "proxy": "",
                   "authType": "",
                   "x": 760,
                   "y": 160,
                   "wires": [
                       []
                   ]
               },
               {
                   "id": "e6acaea9.9f4ff",
                   "type": "inject",
                   "z": "6840bb80.a7bfb4",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "true",
                   "payloadType": "bool",
                   "x": 290,
                   "y": 160,
                   "wires": [
                       [
                           "164a1b6.37a52e5"
                       ]
                   ]
               }
            ]
            

            In NodeRED gibst Du den Body einfach in der msg.payload, die header als msg.headers ein und zwar beides als JSON!

            4280f690-02e1-4b73-b59e-9935e24ec387-image.png

            hier die payload

            388ad1b2-e693-4111-940f-49e17e00d448-image.png

            hier die headers

            6d61495e-d1e7-408f-85be-eea11b9a8e29-image.png

            In der request Nachricht dann mit Methode POST versenden und noch die URL eintragen.

            179aa0b2-a990-4835-9a3b-c1c3efc0766a-image.png

            Roger Spo 1 Reply Last reply Reply Quote 0
            • Roger Spo
              Roger Spo @mickym last edited by

              @mickym Vielen Dank für deine Bemühungen! Habe das ganze nun versucht zu integrieren, leider ohne Erfolg. Sollte nicht noch irgendwo dieses mit: {{ip}}/api/v1/led/set?
              habe es in der request so versucht: 192.168.10.128/api/v1/led/set aber auch so kein Erfolg...

              mickym 2 Replies Last reply Reply Quote 0
              • mickym
                mickym Most Active @Roger Spo last edited by mickym

                @roger-spo

                Hmm nein ich glaub ich hab unten in der Payload einen Fehler gemacht.

                Die URL ist meines Erachtens richtig - aber wir haben nicht die action sondern den response verschickt.

                Ich hab den Flow mal geändert und auch Deine IP in die URL mitaufgenommen:
                0ffa452c-1d04-4e33-815b-668cb1b205c8-image.png

                [
                   {
                       "id": "164a1b6.37a52e5",
                       "type": "change",
                       "z": "44bec35c.87766c",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "{\"action\":\"on\",\"color\":\"50;100;100\",\"mode\":\"hsv\",\"ramp\":50}",
                               "tot": "json"
                           },
                           {
                               "t": "set",
                               "p": "headers",
                               "pt": "msg",
                               "to": "{\"Connection\":\"close\",\"Content-Type\":\"application/json\",\"Content-Length\":55,\"Access-Control-Allow-Origin\":\"*\"}",
                               "tot": "json"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 690,
                       "y": 300,
                       "wires": [
                           [
                               "1da73091.24e85f"
                           ]
                       ]
                   },
                   {
                       "id": "1da73091.24e85f",
                       "type": "http request",
                       "z": "44bec35c.87766c",
                       "name": "",
                       "method": "POST",
                       "ret": "txt",
                       "paytoqs": "ignore",
                       "url": "http://192.168.10.128/api/v1/led/set",
                       "tls": "",
                       "persist": false,
                       "proxy": "",
                       "authType": "",
                       "x": 920,
                       "y": 300,
                       "wires": [
                           [
                               "9f58a6d5.bcb148"
                           ]
                       ]
                   },
                   {
                       "id": "e6acaea9.9f4ff",
                       "type": "inject",
                       "z": "44bec35c.87766c",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "true",
                       "payloadType": "bool",
                       "x": 450,
                       "y": 300,
                       "wires": [
                           [
                               "164a1b6.37a52e5"
                           ]
                       ]
                   },
                   {
                       "id": "9f58a6d5.bcb148",
                       "type": "debug",
                       "z": "44bec35c.87766c",
                       "name": "",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "false",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1130,
                       "y": 300,
                       "wires": []
                   }
                ]
                

                Ich hatte vorher in der payload die Antwort des servers und nicht die Action

                989d3db8-1706-4357-8971-35586da7533b-image.png

                Ansonsten würde ich halt mal die curls auf der Kommandozeile ausprobieren, denn wenn die auch nicht funktionieren, dann hast Du ein anderes Problem.

                Also probiers mal auf der Kommandozeile mit:

                curl --location -g --request POST '192.168.10.128/api/v1/led/set' --data-raw 'action=on&color=50;100;100&mode=hsv&ramp=50'
                

                Du willst die LED ja schalten - insofern gibst DU bei action ein: on, off oder toggle

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

                  @roger-spo sagte in Grundsatzfragen zu API:

                  @mickym Vielen Dank für deine Bemühungen! Habe das ganze nun versucht zu integrieren, leider ohne Erfolg. Sollte nicht noch irgendwo dieses mit: {{ip}}/api/v1/led/set?
                  habe es in der request so versucht: 192.168.10.128/api/v1/led/set aber auch so kein Erfolg...

                  Das mit dem set und dem ? verwendet man in der Regel eigentlich bei GET Request. Wo hast Du denn ein Beispiel auf der Webseite gefunden?

                  Hier ein Video von Steve der macht POST Request
                  https://www.youtube.com/watch?v=wW_UeqeszEs
                  zu einem thingsboard.

                  Bei dem CURL Kommando muss man ggf. doch das http mitgeben - da bin ich mir nicht sicher:

                  curl --location -g --request POST 'http://192.168.10.128/api/v1/led/set' --data-raw 'action=on&color=50;100;100&mode=hsv&ramp=50'
                  
                  1 Reply Last reply Reply Quote -1
                  • Roger Spo
                    Roger Spo last edited by

                    @mickym Ich hab es nun hinbekommen. Mit dem exec Befehl einfach das CURL Kommando senden.

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    903
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    2
                    8
                    412
                    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