Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] Werte einzeln aus JSON extrahieren

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

[gelöst] Werte einzeln aus JSON extrahieren

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
7 Beiträge 3 Kommentatoren 1.5k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • svenomattS Offline
    svenomattS Offline
    svenomatt
    schrieb am zuletzt editiert von svenomatt
    #1

    Hallo zusammen,

    ich habe leider noch nie so richtig mit Json gearbeitet und benöntige für mein Saugroboter-Script Datenpunkte die aktuell nur in einer mihome-vacuum.0.history.allTableJSON integriert sind.

    zwischenzeitlich habe ich eine Ganze menge ausprobiert jedoch mit mäßigen Erfolg. Vielleicht kan jemand helfen.

    Inhalt der mihome-vacuum.0.history.allTableJSON

    [{"Datum":"30.12","Start":"20:47","Saugzeit":"3 min","Fläche":"3.29 m²","Error":0,"Ende":false},{"Datum":"30.12","Start":"20:43","Saugzeit":"0 min","Fläche":"0 m²","Error":0,"Ende":false}........]
    

    Ich hätte gerne die einzelnen Punkte in sep. Datenpunkte

    Das war mein letzter Versuch.

    
     on({id: 'mihome-vacuum.0.history.allTableJSON', change: "any"}, function (obj) {
    
    var json = "mihome-vacuum.0.history.allTableJSON"/*mihomeDaten*/;
    
    var StDatum = "javascript.0.Eigene_Datenpunkte.Staubi-Datum"/*Start Datum*/;
    var StStart = "javascript.0.Eigene_Datenpunkte.Staubi-Startzeit"/*Startzeit*/;
    var StSaugzeit = "javascript.0.Eigene_Datenpunkte.Saugzeit"/*Reinigungsdauer*/;
    var StFlaeche = "javascript.0.Eigene_Datenpunkte.Fläche"/*Fläche*/;
    var StError = "javascript.0.Eigene_Datenpunkte.Error"/*Error*/;
    var StEnde = "javascript.0.Eigene_Datenpunkte.Ende"/*Ende*/;
    
       var obj = JSON.parse(getState(json).val);
    
       setState(StDatum, parseFloat(obj.Datum));
       setState(StStart, parseFloat(obj.Start));
       setState(StSaugzeit, parseFloat(obj.Saugzeit));
       setState(StFlaeche, parseFloat(obj.Fläche));
       setState(StError, parseFloat(obj.Error));
       setState(StEnde, obj.Ende);
    
     });
    
    
    paul53P 1 Antwort Letzte Antwort
    0
    • svenomattS svenomatt

      Hallo zusammen,

      ich habe leider noch nie so richtig mit Json gearbeitet und benöntige für mein Saugroboter-Script Datenpunkte die aktuell nur in einer mihome-vacuum.0.history.allTableJSON integriert sind.

      zwischenzeitlich habe ich eine Ganze menge ausprobiert jedoch mit mäßigen Erfolg. Vielleicht kan jemand helfen.

      Inhalt der mihome-vacuum.0.history.allTableJSON

      [{"Datum":"30.12","Start":"20:47","Saugzeit":"3 min","Fläche":"3.29 m²","Error":0,"Ende":false},{"Datum":"30.12","Start":"20:43","Saugzeit":"0 min","Fläche":"0 m²","Error":0,"Ende":false}........]
      

      Ich hätte gerne die einzelnen Punkte in sep. Datenpunkte

      Das war mein letzter Versuch.

      
       on({id: 'mihome-vacuum.0.history.allTableJSON', change: "any"}, function (obj) {
      
      var json = "mihome-vacuum.0.history.allTableJSON"/*mihomeDaten*/;
      
      var StDatum = "javascript.0.Eigene_Datenpunkte.Staubi-Datum"/*Start Datum*/;
      var StStart = "javascript.0.Eigene_Datenpunkte.Staubi-Startzeit"/*Startzeit*/;
      var StSaugzeit = "javascript.0.Eigene_Datenpunkte.Saugzeit"/*Reinigungsdauer*/;
      var StFlaeche = "javascript.0.Eigene_Datenpunkte.Fläche"/*Fläche*/;
      var StError = "javascript.0.Eigene_Datenpunkte.Error"/*Error*/;
      var StEnde = "javascript.0.Eigene_Datenpunkte.Ende"/*Ende*/;
      
         var obj = JSON.parse(getState(json).val);
      
         setState(StDatum, parseFloat(obj.Datum));
         setState(StStart, parseFloat(obj.Start));
         setState(StSaugzeit, parseFloat(obj.Saugzeit));
         setState(StFlaeche, parseFloat(obj.Fläche));
         setState(StError, parseFloat(obj.Error));
         setState(StEnde, obj.Ende);
      
       });
      
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @svenomatt

         obj = JSON.parse(obj.state.val)[0];
       
         setState(StDatum, obj.Datum);  // String DD.MM
         setState(StStart, obj.Start); // String hh:mm
         setState(StSaugzeit, parseFloat(obj.Saugzeit));  // Zahl, Einheit: Minuten
         setState(StFlaeche, parseFloat(obj.Fläche));  // Zahl, Einheit: m²
         setState(StError, obj.Error); // Zahl
         setState(StEnde, obj.Ende); // Logikwert
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • svenomattS Offline
        svenomattS Offline
        svenomatt
        schrieb am zuletzt editiert von
        #3

        Hallo Paul,

        vielen dank für deine Antwort. konnte jedoch leider nicht wirklich etwas damit anfangen. hätte gedacht die // sind dann Komentare

        Habe das ganze mal versucht im Kleinen

         on({id: 'mihome-vacuum.0.history.allTableJSON', change: "any"}, function (obj) {
        
        var json = "mihome-vacuum.0.history.allTableJSON"/*mihomeDaten*/;
        var StDatum = "javascript.0.Eigene_Datenpunkte.Staubi-Datum"/*Start Datum*/;
        
        
        var obj = JSON.parse(getState(json).val);
        
            setState(StDatum, obj.Datum);  // String DD.MM
        
         });
        

        Der Datenpunkt wird aber nicht gefüllt. Im log kommt dann das

        javascript.0	2019-12-31 10:06:51.846	warn	(1016) at processImmediate (timers.js:658:5)
        javascript.0	2019-12-31 10:06:51.846	warn	(1016) at tryOnImmediate (timers.js:676:5)
        javascript.0	2019-12-31 10:06:51.846	warn	(1016) at runCallback (timers.js:705:18)
        javascript.0	2019-12-31 10:06:51.845	warn	(1016) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:224:41)
        javascript.0	2019-12-31 10:06:51.845	warn	(1016) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4745:37)
        javascript.0	2019-12-31 10:06:51.844	warn	(1016) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:364:25)
        javascript.0	2019-12-31 10:06:51.844	warn	(1016) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:963:38)
        javascript.0	2019-12-31 10:06:51.843	warn	(1016) at Object.<anonymous> (script.js.Staubi.Json-Auswerten:13:5)
        javascript.0	2019-12-31 10:06:51.843	warn	(1016) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1258:20)
        javascript.0	2019-12-31 10:06:51.841	warn	(1016) Wrong type of javascript.0.Eigene_Datenpunkte.Staubi-Datum: "undefined". Please fix, while deprecated and will not work in next versions.
        

        Wie gesagt bin im Programmieren totaler Anfänger.

        1 Antwort Letzte Antwort
        0
        • svenomattS Offline
          svenomattS Offline
          svenomatt
          schrieb am zuletzt editiert von
          #4

          Im Log vom javaSkript kommt dies

          31.12.2019, 10:06:37.330	[info ]: javascript.0 (1016) Stop script script.js.Staubi.Json-Auswerten
          31.12.2019, 10:06:38.781	[info ]: javascript.0 (1016) Start javascript script.js.Staubi.Json-Auswerten
          31.12.2019, 10:06:38.795	[info ]: javascript.0 (1016) script.js.Staubi.Json-Auswerten: registered 1 subscription and 0 schedules
          31.12.2019, 10:06:51.843	[warn ]: javascript.0 (1016)     at Object.<anonymous> (script.js.Staubi.Json-Auswerten:13:5)
          
          paul53P 1 Antwort Letzte Antwort
          0
          • svenomattS svenomatt

            Im Log vom javaSkript kommt dies

            31.12.2019, 10:06:37.330	[info ]: javascript.0 (1016) Stop script script.js.Staubi.Json-Auswerten
            31.12.2019, 10:06:38.781	[info ]: javascript.0 (1016) Start javascript script.js.Staubi.Json-Auswerten
            31.12.2019, 10:06:38.795	[info ]: javascript.0 (1016) script.js.Staubi.Json-Auswerten: registered 1 subscription and 0 schedules
            31.12.2019, 10:06:51.843	[warn ]: javascript.0 (1016)     at Object.<anonymous> (script.js.Staubi.Json-Auswerten:13:5)
            
            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #5

            @svenomatt
            Du solltest schon richtig lesen (Zeile 1).

               obj = JSON.parse(obj.state.val)[0];
            

            obj ist das erste Element eines Arrays und ist bereits als Funktionsparameter deklariert.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Antwort Letzte Antwort
            0
            • svenomattS Offline
              svenomattS Offline
              svenomatt
              schrieb am zuletzt editiert von
              #6

              Vielen Dank,
              du hast recht, wer lesen kann ist klar im Vorteil. :smile:

              Aufjedenfall klappt es jetzt, Vielen Dank für deine Hilfe

              1 Antwort Letzte Antwort
              0
              • realwaxR Offline
                realwaxR Offline
                realwax
                schrieb am zuletzt editiert von
                #7

                Falls das wer auch mit blockly lösen möchte.

                Einfachster weg: Mit einem DEBUG baustein, das JSON Objekt in den Log ausgeben.

                Den Output kopieren und in Notepad++ einfügen und dort die Plugins JSTools runterladen.
                Unter Erweiterungen JSTools den JSON Viewer aktivieren und schon seht ihr die Objektstruktur und könnt gut scripten und debuggen.

                In Folge einzelne Attribute mit mit dem Block mit Attribut abfragen.
                Ich habe so meine Busabfahrtszeiten abfragen via Alexa gelöst und lasse mir jeden Tag meine Google Termine vorlesen.

                dda34d79-f864-4429-b653-c1cadf88a1d2-image.png

                1 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                646

                Online

                32.7k

                Benutzer

                82.3k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe