Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. URL Request mit Blockly

    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

    URL Request mit Blockly

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

      Ich komm einfach nicht weiter…

      Wie kann ich denn mein Objekt````
      arr_test

      
      Ich hoffe mir kann jemand helfen - ich versuch' es schon den ganzen Tag.
      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        Was möchtest du genau erreichen?

        Es sieht für mich so aus als ob die Webseite eine json oder XML zurück gibt.

        Wilste diese nun in ein object ablegen oder die darin enthaltenen Werte?

        Ein bespiel wie man json aus einer url abfragen kann habe ich letztens nach verlinkt, suche Mal nach Domoticz (bin gerade an Jahres sorry)

        –-----------------------

        Send from mobile device

        1 Reply Last reply Reply Quote 0
        • G
          George_Best last edited by

          @Dutchman:

          Es sieht für mich so aus als ob die Webseite eine json oder XML zurück gibt.

          Wilste diese nun in ein object ablegen oder die darin enthaltenen Werte?

          e `

          Ich möchte den Zustand meiner ETA-Heizung auslesen. Die Heizung gibt mir auf den Request

          http://192.168.178.13:8080/user/var//112/10021/0/0/12000
          

          eine Antwort

          "version":"1.0","xmlns":"http://www.eta.co.at/rest/v1","value": "_":"2006","uri":"/user/var//112/10021/0/0/12000","strValue":"Heizen","unit":"","decPlaces":"0","scaleFactor":"1","advTextOffset":"2000"
          

          Ich habe es bereits geschafft in einem Javascript (siehe oben) den Antwort-String (oder XML?) in eine (scheinbar lokale) Variable```
          arr_test = [][/code] zu schreiben.

          Nun würde ich gerne auf diese Variable bzw. auf den String in einem anderen Javascript und/oder Blockly daraufzugreifen. Und genau daran scheitere ich.

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            Und brauchst dir dafür den kompletten String oder eine Variable aus diesem String ?

            –-----------------------

            Send from mobile device

            1 Reply Last reply Reply Quote 0
            • G
              George_Best last edited by

              Den kompletten String.

              Den Wert bekomm ich über Parser oder in Blockly via URL-Request. Der Wert ist aber leider nur ein Code (z.b. 2006). Im String steht der Status im Klartext (strValue":"Heizen").

              1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators last edited by

                Ok,

                Variabelen existieren nur im entsprechenden Script. Wenn du auch aus anderen scripten darauf zugreifen möchtest solltest du mit objecten arbeiten

                1. erstellen dir ein neues object nach beliebigen Namen

                2. schreibe den String in das object

                3. in anderen Script: hohle die den Wert aus den object

                –-----------------------

                Send from mobile device

                1 Reply Last reply Reply Quote 0
                • G
                  George_Best last edited by

                  Guten Morgen,

                  vielen herzlichen Dank, Dutchman, für deine Unterstützung und deine Geduld.

                  Ich stelle mich leider viel zu blöd an.

                  Ich habe jetzt ein Objekt````
                  javascript.0.Test_Objekt_JS

                  
                  (sieht als RAW so aus: 
                  >! {
                  >! "common": {
                  >! "name": "Test_Objekt_JS",
                  >! "role": "",
                  >! "type": "object",
                  >! "desc": "Manuell erzeugt",
                  >! "read": true,
                  >! "write": true
                  >! },
                  >! "native": {},
                  >! "acl": {
                  >! "object": 1638,
                  >! "owner": "system.user.admin",
                  >! "ownerGroup": "system.group.administrator",
                  >! "state": 1638
                  >! },
                  >! "_id": "javascript.0.Test_Objekt_JS",
                  >! "type": "state"
                  >! })
                  
                  Aber wie schreibe ich den String nun in dieses Objekt?
                  

                  "javascript.0.Test_Objekt_JS"/Test_Objekt_JS/ = arr_test;

                  javascript.0.Test_Objekt_JS = arr_test;

                  Test_Objekt_JS = arr_test;

                  
                  Sorry - aber ich komm immer noch nicht weiter. Über jegliche Hilfe bin ich sehr, sehr dankbar!
                  1 Reply Last reply Reply Quote 0
                  • Dutchman
                    Dutchman Developer Most Active Administrators last edited by

                    @George_Best:

                    Guten Morgen,

                    vielen herzlichen Dank, Dutchman, für deine Unterstützung und deine Geduld. `

                    gerne 🙂

                    @George_Best:

                    Ich stelle mich leider viel zu blöd an. `

                    Ganz und garnicht du probierst und man muss ja erstmal rausfinden wie alles geht 😉

                    @George_Best:

                    Ich habe jetzt ein Objekt````
                    javascript.0.Test_Objekt_JS

                    
                    Aber wie schreibe ich den String nun in dieses Objekt?
                    

                    "javascript.0.Test_Objekt_JS"/Test_Objekt_JS/ = arr_test;
                    ````erscheint eine Fehlermeldung "ReferenceError: Invalid left-hand side in assignment" `

                    Object mit daten fuellen machst du mit setstate, in deinem fall muesste das dan sein:

                    setState (javascript.0.Test_Objekt_JS, arr_test);
                    
                    

                    siehe dazu fuer mehr informationen die javascript adapter docu: https://github.com/ioBroker/ioBroker.ja … d#setstate

                    1 Reply Last reply Reply Quote 0
                    • AlCalzone
                      AlCalzone Developer last edited by

                      @Dutchman:

                      setState (javascript.0.Test_Objekt_JS, arr_test);
                      
                      ```` `  
                      

                      Das muss

                      setState("javascript.0.Test_Objekt_JS", arr_test);
                      

                      heißen (mit Anführungszeichen).

                      1 Reply Last reply Reply Quote 0
                      • G
                        George_Best last edited by

                        Ich werd narrisch 😄

                        Genau so funktioniert es! Vielen, herzlichen Dank an Dutchman und AlCalzone.

                        Ich hatte schon in vielen anderen Foren-Beiträgen den Hinweis mit setState gelesen. Ich konnte es aber nie richtig in meinem Script umsetzen (habe z.B. setState("javascript.0.Test_Objekt_JS").val = arr_test; versucht usw…). Aber jetzt habe ich es verstanden.

                        Ich poste hier mal für alle anderen Suchenden meine Lösung.

                        Use-Case: Meine ETA-Heizung (mit Web-Server) liefert mir auf einen URL-Request eine entsprechende Antwort als XML (siehe Beispiel oben). Ich möchte nun diese Antwort in ein (globales) Objekt speichern. Ziel ist diesen String in JS/ Blockly/ vis weiterzuverwenden.

                        Das Objekt "javascript.0.Test_Objekt_JS" bzw. Datenpunkt habe ich in ioBroker im Reiter "Objekte" als Objekt definiert

                        Das Script sieht so aus:

                        var parseString = require('xml2js').parseString;
                        var request = require('request');
                        arr_test = [];
                        
                        request('http://192.168.178.13:8080/user/var//112/10021/0/0/12000', function (error, response, body) {
                            if (!error && response.statusCode == 200) {
                              parseString(body, {
                                    explicitArray: false,
                                    mergeAttrs: true
                                 }, 
                                 function (err, result) {
                                    if (err) {
                                       log("Fehler: " + err);
                                    } else {
                        
                                      arr_test = (JSON.stringify(result.eta));
                                      setState("javascript.0.Test_Objekt_JS", arr_test);
                                    }
                                 });
                           } else  {
                             log(error);
                           }
                        });
                        

                        Kleiner Schönheitsfehler: Es erscheint im log die Warnung````
                        10:52:30.773 [warn] javascript.0 at script.js.Skript1:30:15
                        10:52:30.778 [warn] javascript.0 at Request._callback (script.js.Skript1:20:7)

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        552
                        Online

                        31.9k
                        Users

                        80.3k
                        Topics

                        1.3m
                        Posts

                        3
                        12
                        4533
                        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