Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Werte (JSON) an URL senden

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Werte (JSON) an URL senden

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

      Hey,
      ich habe einen Dockercontainer laufen der über eine API verfügt. Man kann über die IP "IPdesSystems:PORT/swagger" auf die API zugreifen. Wenn ich dort im "PUT" Fenster "Try Out" wähle und Werte ändere und "execute", wird im WebInterface des Containers auch das geändert, was ich will.
      Zwischenablage02.jpg
      Zwischenablage03.jpg
      Da ich dieses Vorgehen über einen externen Taster realisieren möchte, bräuchte ich Hilfe, wie ich ein Skript erstelle, dass über den Trigger (Taster) die Werte an die API des Dockercontainer sendet.
      Ich habe einen Beitrag hier im Forum gefunden (heißt quasi wie dieser, ist aber auf "gelöst" gesetzt) in dem EIN Wert geschickt werden sollte. Bei mir müssten es mehrere sein.
      In der API wird scheinbar folgendes ausgeführt:

      curl -X 'PUT' \   'http://192.168.9.105:7190/api/Config/UpdateCarConfiguration?carId=1' \   -H 'accept: */*' \   -H 'Content-Type: application/json' \   -d '{   "chargeMode": 2,   "minimumSoC": 20,   "latestTimeToReachSoC": "2023-03-01T17:06:45.205Z",   "ignoreLatestTimeToReachSocDate": true,   "maximumAmpere": 0,   "minimumAmpere": 0,   "usableEnergy": 0,   "shouldBeManaged": true,   "chargingPriority": 0 }'
      

      Wenn ich im WebInterface den Entwicklermodus von Chrome aufrufe und da dann Netzwerk wird folgendes "geschickt" wenn ich im WebInterface auf "speichern" gehe.

      {
          "carId": 1,
          "chargeMode": 2,
          "minimumStateOfCharge": 30,
          "latestTimeToReachStateOfCharge": "2023-03-02T17:06:45.205",
          "ignoreLatestTimeToReachSocDate": true
      }
      

      und zwar an "http://192.168.9.105:7190/api/Index/UpdateCarBaseSettings"
      Das würde mir reichen (ich brauche nur den chargeMode und den minimumStateOfCharge)
      Ich wollte das ganze mit nem BLockly mit exec Block ausprobieren.
      Zwischenablage01.jpg
      Wie bekomme ich da wo "test" steht "result" hin? Ich finde den Result Block nicht 😞
      Die Idee hierzu habe ich aus dem anderen Beitrag (dort hat er allerdings nicht zum Erfolg geführt, sondern ein JavaScript, das ich nicht verstehe ^^
      Vielen Dank schon mal

      EDIT: Hier der Link zum anderen Thema, falls der hilft 🙂
      Klick

      paul53 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @M-A-X last edited by

        @m-a-x sagte: Ich finde den Result Block nicht

        Erstelle eine Variable result.

        M 1 Reply Last reply Reply Quote 0
        • M
          M-A-X @paul53 last edited by

          Ok, leider hilft mir das nicht weiter 🙂

          javascript.0
          2023-03-01 19:00:39.945	info	script.js.TeslaSolarSetSOC:
          
          javascript.0
          2023-03-01 19:00:39.717	info	script.js.TeslaSolarSetSOC: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
          
          javascript.0
          2023-03-01 19:00:39.666	info	Start javascript script.js.TeslaSolarSetSOC
          

          Das passiert im Log, wenn ich das Script neu starte

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @M-A-X last edited by

            @m-a-x sagte: Das passiert im Log, wenn ich das Script neu starte

            Du hast result an den Debug-Block übergeben?

            Blockly_temp.JPG

            M 1 Reply Last reply Reply Quote 0
            • M
              M-A-X @paul53 last edited by

              @paul53 ja
              Zwischenablage01.jpg

              beim ersten mal kam noch die Meldung, dass ich exec im Adapter erlauben muss 🙂 das hab ich gemacht und dann kam das o.g.

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @M-A-X last edited by

                @m-a-x
                Vielleicht stimmt etwas am Kommando nicht? Dann wird error zurück gemeldet.

                Blockly_temp.JPG

                M 1 Reply Last reply Reply Quote 0
                • M
                  M-A-X @paul53 last edited by M-A-X

                  @paul53

                  Ich versuche das Log zu schicken, aber es kommt der Fehler "forbidden" beim Antworten 😉

                  avascript.0
                  2023-03-01 19:16:08.834	info	script.js.TeslaSolarSetSOC: {'code':3,'killed':false,'signal':null,'cmd':'curl -X 'PUT' \\ 'http://192.168.9.105:7190/api/Config/UpdateCarConfiguration?carId=1' \\ -H 'accept: */*' \\ -H 'Content-Type: application/json' \\ -d '{ \'chargeMode\': 2, \'minimumSoC\': 20, \'latestTimeToReachSoC\': \'2023-03-01T17:06:45.205Z\', \'ignoreLatestTimeToReachSocDate\': true, \'maximumAmpere\': 0, \'minimumAmpere\': 0, \'usableEnergy\': 0, \'shouldBeManaged\': true, \'chargingPriority\': 0 }''}
                  
                  javascript.0
                  2023-03-01 19:16:08.598	info	script.js.TeslaSolarSetSOC: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                  

                  EIDT: Jetzt.. Evtl zu Kurze Antwort?

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @M-A-X last edited by

                    @m-a-x sagte: Evtl zu Kurze Antwort?

                    Ich habe keine Ahnung, was Error-Code 3 bedeutet.

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      M-A-X @paul53 last edited by

                      @paul53
                      Das mit der zu kurzen Antwort war auf die Forenantwort bezogen 🙂 wollte dir ursprünglich nur schreiben "jetzt kommt:" und dann den Code.
                      Gibt es eine Möglichkeit das "Text" Fenster des exec Befehls größer zu machen, sodass ich darin leichter rum probieren kann?
                      Ich hab in meinem ersten Beitrag auch mal ganz unten den anderen Thread verlinkt, falls das hilft

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @M-A-X last edited by paul53

                        @m-a-x
                        Der Kommandotext wird durch Hochkommata unterbrochen. Wenn innerhalb des Kommandos Hochkommata erforderlich sind, müssen diese mit Backslash eingeleitet werden. Anfang:

                        'cmd':'curl -X \'PUT\' \\ \'http:/
                        
                        M 1 Reply Last reply Reply Quote 0
                        • M
                          M-A-X @paul53 last edited by

                          @paul53
                          Leider nicht besser geworden 🙂

                          javascript.0
                          2023-03-01 19:37:31.205	info	script.js.TeslaSolarSetSOC1: {'code':3,'killed':false,'signal':null,'cmd':'curl -X \\'PUT\\' \\ \\'http://192.168.9.105:7190/api/Config/UpdateCarConfiguration?carId=1\\' \\ -H \\'accept: */*\\' \\ -H \\'Content-Type: application/json\\' \\ -d \\'{ \'chargeMode\': 2, \'minimumSoC\': 20, \'latestTimeToReachSoC\': \'2023-03-01T17:06:45.205Z\', \'ignoreLatestTimeToReachSocDate\': true, \'maximumAmpere\': 0, \'minimumAmpere\': 0, \'usableEnergy\': 0, \'shouldBeManaged\': true, \'chargingPriority\': 0 }\\''}
                          

                          Da, wo im Log jetzt ein ' ist, war vorher ein ", da wo jetzt zwei \' sind, hatte ich ein \ vor einem ' eingefügt...
                          Auch ganz hinten und am Anfang

                          curl -X \'PUT\' \   \'http://192.168.9.105:7190/api/Config/UpdateCarConfiguration?carId=1\' \   -H \'accept: */*\' \   -H \'Content-Type: application/json\' \   -d \'{   "chargeMode": 2,   "minimumSoC": 20,   "latestTimeToReachSoC": "2023-03-01T17:06:45.205Z",   "ignoreLatestTimeToReachSocDate": true,   "maximumAmpere": 0,   "minimumAmpere": 0,   "usableEnergy": 0,   "shouldBeManaged": true,   "chargingPriority": 0 }\'
                          
                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @M-A-X last edited by paul53

                            @m-a-x
                            Gibt es irgendwo eine Beschreibung der API? Request ist vielleicht besser geeignet?

                            M 1 Reply Last reply Reply Quote 0
                            • M
                              M-A-X @paul53 last edited by

                              @paul53
                              Ich glaube leider nein..
                              Das ist das Projekt:
                              https://github.com/pkuehnel/TeslaSolarCharger

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @M-A-X last edited by

                                @m-a-x sagte: leider nein..

                                Woher stammen die Bilder?

                                M 1 Reply Last reply Reply Quote 0
                                • M
                                  M-A-X @paul53 last edited by M-A-X

                                  @paul53
                                  Ich kann über IPdesSystems:7190/swagger
                                  die API aufrufen
                                  Also in meinem Fall 192.168.9.105:7190/swagger
                                  Zwischenablage02.jpg

                                  1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @M-A-X last edited by

                                    @m-a-x sagte: ich brauche nur den chargeMode und den minimumStateOfCharge

                                    Sollen die Werte abgefragt oder gesetzt werden?
                                    Welche Werte kann "chargeMode" annehmen?

                                    M 1 Reply Last reply Reply Quote 0
                                    • M
                                      M-A-X @paul53 last edited by M-A-X

                                      @paul53
                                      Die Werte sollen gesetzt werden. Wenn ich das per "PUT" in der API mache, klappt es auch (wie im ersten Post kommt kann dieser "code" mit CURL am Anfang raus.
                                      Der DockerContainer lässt mein Fahrzeug nur mit PV Überschuss laden. Aber manchmal brauche ich es auch einfach, dass das Fahrzeug komplett geladen wird. Dazu möchte ich einen Taster neben die Wallbox bauen und hierdurch, über Iobroker, soll dann der SOC auf 100% gesetzt werden. Den Rest der Logik (zurückkehren zu den Standardwerten, sobald der Ladevorgang abgebrochen wird oder beendet ist) würde ich in ein Skript mit einbauen. Wichtig wäre zunächst "nur", dass dieser EXEC Block funktioniert 🙂

                                      chargeMode gibt es von 0 bis 3. Ich brauche (immer nur) chargeMode:2 (es würden auch andere gehen, dann müsste ich aber beim Zurückwechseln noch mehr Werte ändern)
                                      Das steht in der API
                                      Zwischenablage03.jpg
                                      minimumStateOfCharge ist eine (Prozent) Zahl zwischen 0 und 100 🙂

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @M-A-X last edited by

                                        @m-a-x
                                        Ich habe zwar nicht wirklich Ahnung davon, aber versuche es mal mit request().

                                        on({id: '0_userdata.0.Tesla.Laden.voll'}, function() { // Taste "voll laden"
                                            request({
                                                method: 'POST',
                                                url: 'http://192.168.9.105:7190/api/Config/UpdateCarConfiguration?carId=1',
                                                headers: {accept: '*/*', 'Content-Type': 'application/json'},
                                                body: {chargeMode: 2, minimumSoC: 100}
                                            }, function(error, response, body) {
                                                if(error) log(error, 'warn');
                                                else log(body);
                                            });
                                        });
                                        
                                        M 1 Reply Last reply Reply Quote 0
                                        • M
                                          M-A-X @paul53 last edited by

                                          @paul53
                                          Wie kann ich das Skript Triggern? ich habe "0_userdata.0.Tesla.Laden.voll" ersetzt durch "javascript.0.TeslaSetSOC".
                                          Dieses Objekt habe ich als Logik Objekt angelegt und anschließend bei den Objekten auf "true" (bestätigt) gesetzt.
                                          Dann stürzt aber der komplette Javaskriptadapter ab und restartet 🙂

                                          paul53 1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @M-A-X last edited by paul53

                                            @m-a-x sagte: Dann stürzt aber der komplette Javaskriptadapter ab und restartet

                                            Dann ist vermutlich etwas am request() gefährlich falsch. Vielleicht meldet sich noch jemand, der sich besser damit auskennt?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            767
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            22
                                            721
                                            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