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. JSON Werte in Datenpunkte

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    922

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

JSON Werte in Datenpunkte

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
18 Beiträge 4 Kommentatoren 4.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.
  • KevinK Kevin

    Hallo zusammen,
    Ich bin ganz neu in der Welt des ioBrokers und Umsteiger von fhem.

    Ich versuche gerade auch eine Json von meinem 3D Drucker auszulesen und die entsprechenden Datensätze selbst anlegen zulassen. Leider komme ich nicht weiter:

    Das ist der Output von meiner URL von dem 3D Drucker.

    {"status":"P","coords":{"axesHomed":[1,1,1,1,1,1],"wpl":1,"xyz":[160.851,108.581,27.592,45.000,2.000,24.000],"machine":[115.842,58.395,33.482,45.000,2.000,18.110],"extr":[20722.2,0.0,0.0,0.0]},"speeds":{"requested":40.0,"top":40.0},"currentTool":0,"params":{"atxPower":-1,"fanPercent":[0,100,-1,90,100,0,100,0,100,50],"speedFactor":100.0,"extrFactors":[100.0,100.0,100.0,100.0],"babystep":0.000},"seq":2,"sensors":{"probeValue":0,"fanRPM":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]},"temps":{"bed":{"current":90.0,"active":90.0,"standby":0.0,"state":2,"heater":0},"current":[90.0,235.4,30.4,31.9,32.7],"state":[2,2,0,0,0],"tools":{"active":[[235.0],[0.0],[0.0],[0.0]],"standby":[[235.0],[0.0],[0.0],[0.0]]},"extra":[]},"time":45569.0,"currentLayer":138,"currentLayerTime":77.1,"extrRaw":[20698.6,0.0,0.0,0.0],"fractionPrinted":88.1,"filePosition":16983003,"firstLayerDuration":749.6,"firstLayerHeight":0.20,"printDuration":24418.6,"warmUpDuration":397.2,"timesLeft":{"file":3431.8,"filament":2551.1,"layer":6133.5}}
    

    Das ist dazu mein Script:

    var request = require('request');
    
     
     Intervall = setInterval(SendRequest,5000);
     
    function SendRequest(){
     
        var options = {
            url: 'http://URLVON3DRUCKER',
        };
     
        request(options, function (error, response, body){
     
            if (!error){
                CreateDevices(JSON.parse(body));
                console.log(body);
            }
     
            else{ console.error(error);}
     
        });
     
    }//End of Function SendRequest
     
    function CreateDevices(data){
     
    if ("undefined" !== typeof  data.result){    
     
        for (i = 0; i < data.result.length; i++) {
     
                     for (var ObjName in data.result[i].acState) {
     
                         if (!getObject('0_userdata.0.3DPrinter.' +i +'.acState' +'.' +ObjName)){
     
                             createState('0_userdata.0.3DPrinter.' +i +'.acState' +'.' +ObjName,data.result[i].acState[ObjName],{type: typeof data.result[i].acState[ObjName], role: ObjName});
     
                             console.log('ERSTELLT');
                         }
     
                         else{setState('0_userdata.0.3DPrinter.' +i +'.acState' + '.' +ObjName,data.result[i].acState[ObjName],akt=true)}
                     }
        }
    }
    else{console.warn('Response in JSON nicht gefunden ! ')}
     
    }//End of Function CreateDevices
    

    Dann bekomme ich folgende Meldung in dem Log:

    javascript.0	2020-07-29 20:53:50.291	warn	(24214) script.js.common.3D_Printer: Response in JSON nicht gefunden !
    javascript.0	2020-07-29 20:53:45.258	info	(24214) script.js.common.3D_Printer: {"status":"P","coords":{"axesHomed":[1,1,1,1,1,1],"wpl":1,"xyz":[164.129,107.010,27.592,45.000,2.000,24.000],"machine":[123.229,61.852,33.48
    

    An was kann das liegen?

    Die Werte einzeln an ioBroker zu schreiben bekomme ich über ein anderes Skript hin. Nur hätte ich gerne alle Werte automatisch angelegt.

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #8

    @Kevin sagte:

    An was kann das liegen?

    Das Objekt enthält keine Eigenschaft result und ist auch kein Array.
    Versuche es mal so:

    function iter(name, obj) {
       for(let i in obj) {
          if(typeof obj[i] == 'object') iter(name + '.' + i, obj[i]);
          else {
             log(name + '.' + i + ': ' + obj[i]);
             if(existsState(name + '.' + i)) setState(name + '.' + i, obj[i]);
             else createState(name + '.' + i, obj[i]); // type: "mixed"
          }
       }
    }
    
    function SendRequest(){
        var options = {
            url: 'http://URLVON3DRUCKER'
        };
        request(options, function (error, response, body){
            if (!error) iter('0_userdata.0.3DPrinter', JSON.parse(body));
            else console.error(error);
        });
    }
    
    schedule('*/5 * * * * *', SendRequest);
    

    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

    KevinK 1 Antwort Letzte Antwort
    0
    • paul53P paul53

      @Kevin sagte:

      An was kann das liegen?

      Das Objekt enthält keine Eigenschaft result und ist auch kein Array.
      Versuche es mal so:

      function iter(name, obj) {
         for(let i in obj) {
            if(typeof obj[i] == 'object') iter(name + '.' + i, obj[i]);
            else {
               log(name + '.' + i + ': ' + obj[i]);
               if(existsState(name + '.' + i)) setState(name + '.' + i, obj[i]);
               else createState(name + '.' + i, obj[i]); // type: "mixed"
            }
         }
      }
      
      function SendRequest(){
          var options = {
              url: 'http://URLVON3DRUCKER'
          };
          request(options, function (error, response, body){
              if (!error) iter('0_userdata.0.3DPrinter', JSON.parse(body));
              else console.error(error);
          });
      }
      
      schedule('*/5 * * * * *', SendRequest);
      
      KevinK Offline
      KevinK Offline
      Kevin
      schrieb am zuletzt editiert von
      #9

      @paul53 said in JSON Werte in Datenpunkte:

                                                                                                                                  function iter(name, obj) {                                                                                                                                                                               for(let i in obj) {                                                                                                                                                                                  if(typeof obj[i] == 'object') iter(name + '.' + i, obj[i]);                                                                                                                                                                                  else {                                                                                                                                                                                     log(name + '.' + i + ': ' + obj[i]);                                                                                                                                                                                     if(existsState(name + '.' + i) setState(name + '.' + i, obj[i]);                                                                                                                                                                                     else createState(name + '.' + i, obj[i]); // type: "mixed"                                                                                                                                                                                  }                                                                                                                                                                               }                                                                                                                                                                            }                                                                                                                                                                                                                                                                                                                                                         function SendRequest(){                                                                                                                                                                                var options = {                                                                                                                                                                                    url: 'http://URLVON3DRUCKER',                                                                                                                                                                                };                                                                                                                                                                                request(options, function (error, response, body){                                                                                                                                                                                    if (!error) iter('0_userdata.0.3DPrinter', JSON.parse(body));                                                                                                                                                                                    else console.error(error);                                                                                                                                                                                });                                                                                                                                                                            }                                                                                                                                                                                                                                                                                                                                                         schedule('*/5 * * * * *', SendRequest);                                            
      

      Danke schon mal für dein Hilfe :)

      Leider hat es nicht ganz funktioniert:

      javascript.0	2020-07-29 22:56:55.543	error	(24214) at process._tickCallback (internal/process/next_tick.js:68:7)
      javascript.0	2020-07-29 22:56:55.543	error	(24214) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
      javascript.0	2020-07-29 22:56:55.542	error	(24214) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
      javascript.0	2020-07-29 22:56:55.542	error	(24214) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17)
      javascript.0	2020-07-29 22:56:55.542	error	(24214) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1124:17)
      javascript.0	2020-07-29 22:56:55.541	error	(24214) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1533:17)
      javascript.0	2020-07-29 22:56:55.541	error	(24214) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1480:37)
      javascript.0	2020-07-29 22:56:55.541	error	(24214) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:1257:28)
      javascript.0	2020-07-29 22:56:55.540	error	(24214) at Object.createScript (vm.js:277:10)
      javascript.0	2020-07-29 22:56:55.540	error	(24214) at new Script (vm.js:83:7)
      javascript.0	2020-07-29 22:56:55.540	error	(24214) SyntaxError: Unexpected identifier
      javascript.0	2020-07-29 22:56:55.539	error	(24214) ^^^^^^^^
      javascript.0	2020-07-29 22:56:55.539	error	(24214) if(existsState(name + '.' + i) setState(name + '.' + i, obj[i]);
      javascript.0	2020-07-29 22:56:55.539	error	at script.js.common.Skript_1:6
      javascript.0	2020-07-29 22:56:55.539	error	(24214) script.js.common.Skript_1 compile failed:
      
      paul53P 1 Antwort Letzte Antwort
      0
      • KevinK Kevin

        @paul53 said in JSON Werte in Datenpunkte:

                                                                                                                                    function iter(name, obj) {                                                                                                                                                                               for(let i in obj) {                                                                                                                                                                                  if(typeof obj[i] == 'object') iter(name + '.' + i, obj[i]);                                                                                                                                                                                  else {                                                                                                                                                                                     log(name + '.' + i + ': ' + obj[i]);                                                                                                                                                                                     if(existsState(name + '.' + i) setState(name + '.' + i, obj[i]);                                                                                                                                                                                     else createState(name + '.' + i, obj[i]); // type: "mixed"                                                                                                                                                                                  }                                                                                                                                                                               }                                                                                                                                                                            }                                                                                                                                                                                                                                                                                                                                                         function SendRequest(){                                                                                                                                                                                var options = {                                                                                                                                                                                    url: 'http://URLVON3DRUCKER',                                                                                                                                                                                };                                                                                                                                                                                request(options, function (error, response, body){                                                                                                                                                                                    if (!error) iter('0_userdata.0.3DPrinter', JSON.parse(body));                                                                                                                                                                                    else console.error(error);                                                                                                                                                                                });                                                                                                                                                                            }                                                                                                                                                                                                                                                                                                                                                         schedule('*/5 * * * * *', SendRequest);                                            
        

        Danke schon mal für dein Hilfe :)

        Leider hat es nicht ganz funktioniert:

        javascript.0	2020-07-29 22:56:55.543	error	(24214) at process._tickCallback (internal/process/next_tick.js:68:7)
        javascript.0	2020-07-29 22:56:55.543	error	(24214) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
        javascript.0	2020-07-29 22:56:55.542	error	(24214) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
        javascript.0	2020-07-29 22:56:55.542	error	(24214) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17)
        javascript.0	2020-07-29 22:56:55.542	error	(24214) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1124:17)
        javascript.0	2020-07-29 22:56:55.541	error	(24214) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1533:17)
        javascript.0	2020-07-29 22:56:55.541	error	(24214) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1480:37)
        javascript.0	2020-07-29 22:56:55.541	error	(24214) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:1257:28)
        javascript.0	2020-07-29 22:56:55.540	error	(24214) at Object.createScript (vm.js:277:10)
        javascript.0	2020-07-29 22:56:55.540	error	(24214) at new Script (vm.js:83:7)
        javascript.0	2020-07-29 22:56:55.540	error	(24214) SyntaxError: Unexpected identifier
        javascript.0	2020-07-29 22:56:55.539	error	(24214) ^^^^^^^^
        javascript.0	2020-07-29 22:56:55.539	error	(24214) if(existsState(name + '.' + i) setState(name + '.' + i, obj[i]);
        javascript.0	2020-07-29 22:56:55.539	error	at script.js.common.Skript_1:6
        javascript.0	2020-07-29 22:56:55.539	error	(24214) script.js.common.Skript_1 compile failed:
        
        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #10

        @Kevin sagte:

        Leider hat es nicht ganz funktioniert:

        existsState(id) wird anscheinend angemeckert. Welche Version des Javascript-Adapters ?

        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

        KevinK 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @Kevin sagte:

          Leider hat es nicht ganz funktioniert:

          existsState(id) wird anscheinend angemeckert. Welche Version des Javascript-Adapters ?

          KevinK Offline
          KevinK Offline
          Kevin
          schrieb am zuletzt editiert von
          #11

          @paul53 Sollte eigentlich die aktuellste Version sein: 4.6.21

          paul53P 1 Antwort Letzte Antwort
          0
          • KevinK Kevin

            @paul53 Sollte eigentlich die aktuellste Version sein: 4.6.21

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #12

            @Kevin
            Sorry, da fehlt eine schließende Klammer vor setState. Habe sie ergänzt.

            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

            KevinK 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @Kevin
              Sorry, da fehlt eine schließende Klammer vor setState. Habe sie ergänzt.

              KevinK Offline
              KevinK Offline
              Kevin
              schrieb am zuletzt editiert von
              #13

              @paul53 Perfekt danke für die schnelle Hilfe. Genau wie ich es mir vorgestellt habe.

              paul53P 1 Antwort Letzte Antwort
              0
              • KevinK Kevin

                @paul53 Perfekt danke für die schnelle Hilfe. Genau wie ich es mir vorgestellt habe.

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #14

                @Kevin sagte:

                Genau wie ich es mir vorgestellt habe.

                Dann markiere bitte das Thema in der Überschrift des ersten Beitrags als [gelöst].

                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

                KevinK 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @Kevin sagte:

                  Genau wie ich es mir vorgestellt habe.

                  Dann markiere bitte das Thema in der Überschrift des ersten Beitrags als [gelöst].

                  KevinK Offline
                  KevinK Offline
                  Kevin
                  schrieb am zuletzt editiert von
                  #15

                  @paul53 Ich habe noch eine Frage :)

                  Lässt sich verhindern, dass die Abfrage durchgeführt wird, wenn der Drucker ausgeschaltet ist?

                  javascript.0	2020-07-31 07:08:11.796	error	(24214) Request error: Error: connect ETIMEDOUT 91.15.159.27:8000
                  javascript.0	2020-07-31 07:08:11.795	error	(24214) script.js.common.3D_Printer: {'errno':'ETIMEDOUT','code':'ETIMEDOUT','syscall':'connect','address':'IP','port':8000}
                  
                  paul53P 1 Antwort Letzte Antwort
                  0
                  • KevinK Kevin

                    @paul53 Ich habe noch eine Frage :)

                    Lässt sich verhindern, dass die Abfrage durchgeführt wird, wenn der Drucker ausgeschaltet ist?

                    javascript.0	2020-07-31 07:08:11.796	error	(24214) Request error: Error: connect ETIMEDOUT 91.15.159.27:8000
                    javascript.0	2020-07-31 07:08:11.795	error	(24214) script.js.common.3D_Printer: {'errno':'ETIMEDOUT','code':'ETIMEDOUT','syscall':'connect','address':'IP','port':8000}
                    
                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #16

                    @Kevin sagte:

                    wenn der Drucker ausgeschaltet ist?

                    Wie kann man das feststellen ? Nur ping ?

                    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

                    KevinK 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @Kevin sagte:

                      wenn der Drucker ausgeschaltet ist?

                      Wie kann man das feststellen ? Nur ping ?

                      KevinK Offline
                      KevinK Offline
                      Kevin
                      schrieb am zuletzt editiert von
                      #17

                      @paul53 Ich könnte es über einen Datenpunkt an der Fritzbox abfragen. Dann wäre Datenpunkt 3Drucker.active auf true sobald er im netzwerk ist

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • KevinK Kevin

                        @paul53 Ich könnte es über einen Datenpunkt an der Fritzbox abfragen. Dann wäre Datenpunkt 3Drucker.active auf true sobald er im netzwerk ist

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von paul53
                        #18

                        @Kevin sagte:

                        über einen Datenpunkt an der Fritzbox abfragen

                        Dann mache die Abfrage als erstes in der Funktion SendRequest().

                        function SendRequest(){
                          if(getState('abc.0.xyz.3Drucker.active').val) {
                            var options = {
                                url: 'http://URLVON3DRUCKER'
                            };
                            request(options, function (error, response, body){
                                if (!error) iter('0_userdata.0.3DPrinter', JSON.parse(body));
                                else console.error(error);
                            });
                          }
                        }
                        

                        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
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        943

                        Online

                        32.6k

                        Benutzer

                        82.0k

                        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