Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Json einlesen und verarbeiten

    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

    Json einlesen und verarbeiten

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

      Hallo ich versuche mich an Json nur leider bekomme ich es nicht hin. Ich habe eine json die ich im Browser über http://192.168.X.X/start.json aufrufe. Das Ergebnis ist:

      {
      "time":"08:13:08",
      "date":"23.05.2019",
      "fw":"1.0.0",
      "cpu_temp":"33.96",
      "sensor1_qual":"0",
      "sensor1":"16.38",
      "sensor1_name":"Wassertemperatur",
      "sensor2_qual":"0",
      "sensor2":"11.94",
      "sensor2_name":"Außentemperatur",
      "sensor3_qual":"1",
      "sensor3":"4095.94",
      "sensor3_name":"Sensor 3",
      "sensor4_qual":"1",
      "sensor4":"4095.94",
      "sensor4_name":"Sensor 4",
      "relais1":"0",
      "relais1_name":"Filterpumpe",
      "relais2":"2",
      "relais2_name":"Solar",
      "relais3":"2",
      "relais3_name":"Heizung"
      }
      

      Jetzt wollte ich mir die Daten (Sensor 1 und Sensor 2) in zwei Variablen hinterlegen. Doch leider funktioniert es nicht.

      // Pool
      
      createState('javascript.0.PoolController.sensor1',0, {type: 'number',name: 'sensor1',unit: '°C', read: true,write: true,role: 'per Script'});
      createState('javascript.0.PoolController.sensor2',0, {type: 'number',name: 'sensor2',unit: '°C', read: true,write: true,role: 'per Script'});
      // Werte holen ------------------------------------------------------------------------------------------------------------------------
      
      function weiter() {
          var request = require('request');
          request('http://192.168.178.75/start.json', function (error, response, body) {
              if (!error && response.statusCode == 200) {
                  log ("json = " + body);
                  var obj = JSON.parse(body);
                     
                      setState('javascript.0.PoolController.sensor1', obj.sensor1);
                      setState('javascript.0.PoolController.sensor2', obj.sensor2);
                      
                      
              });
      }
      }
      // alle 2 Minuten ------------------------------------------------------------------------------------------------------------------------
      
      schedule("*/2 * * * *", function () {
          weiter();           // Werte holen
         
      });
      
      

      Was habe ich falsch gemacht?

      paul53 1 Reply Last reply Reply Quote 0
      • D
        dna909 last edited by

        Du solltest die Funktion "weiter" auch aufrufen.
        Dann sollte es funktionieren.

        Gruß

        dna909

        1 Reply Last reply Reply Quote 0
        • W
          w2kscout last edited by

          Sorry das habe ich nicht verstanden! Was meinst du mit "weiter"? Ich habe von Java keine Ahnung!!!

          1 Reply Last reply Reply Quote 0
          • D
            dna909 last edited by

            Du hast die Funktion "weiter" in deinem Code --> function weiter() { ...

            Diese muss aber auch aufgerufen werden, ansonsten passiert da nix.

            Schreib ganz am Ende einfach mal noch ein weiter() hin, dann sollte die Funktion auch aufgerufen werden.

            P.S.: das hier ist Javascript nicht Java 🙂

            Gruß

            dna909

            1 Reply Last reply Reply Quote 0
            • W
              w2kscout last edited by

              So habe ich verändert nun bekomme ich einen Fehler: error javascript.0 script.js.Garten.Pool compile failed:
              at script.js.Garten.Pool:34

              1 Reply Last reply Reply Quote 0
              • D
                dna909 last edited by

                Ups, hatte den Code nicht bis zum Ende gelesen.
                Vergiss das geschriebene.

                Du erstellst die Datenpunkte als type: number. Im JSON ist der type aber String.
                Ändere beim createState den type mal auf string oder mixed.

                Dann sollte das eigentlich funktionieren.

                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @w2kscout last edited by paul53

                  @w2kscout Zeile 8 kann ab JS Version 3.3.4 entfallen.

                  Ändere bitte ab Zeile 14

                              setState('javascript.0.PoolController.sensor1', parseFloat(obj.sensor1));
                              setState('javascript.0.PoolController.sensor2', parseFloat(obj.sensor2));
                          } else log(error, 'error');
                      }); // Ende request
                  } // Ende function
                  
                  1 Reply Last reply Reply Quote 0
                  • W
                    w2kscout last edited by

                    Man was soll ich sagen vielen Dank! Es funktioniert ... Ich wünsche einen schöne Tag.

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    426
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    500
                    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