Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst]JSON parsen, bräuchte Hilfe

    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

    [gelöst]JSON parsen, bräuchte Hilfe

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

      Ich hoffe das Skript gibt es dann hier [emoji847]

      Oder gar einen Repetier Adapter [emoji6]

      1 Reply Last reply Reply Quote 0
      • coyote
        coyote Most Active last edited by

        Script kann ich mal posten wenn ich es fertig hab, da sollen noch paar mehr Sachen rein.

        Adapter wäre cool, bin ich aber leider der falsche Ansprechpartner für, da hab ich zu wenig Kenntnisse mit Javascript.

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

          Json parse geht mit dem Systeminfo Adapter andere dafür sind nicht geplant.

          Also entweder den oder JavaScript

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

          Send from mobile device

          Das schöne ios hat Auto Korrektur zum k****

          Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community

          1 Reply Last reply Reply Quote 0
          • coyote
            coyote Most Active last edited by

            @Dutchman:

            Json parse geht mit dem Systeminfo Adapter andere dafür sind nicht geplant.

            Also entweder den oder JavaScript `

            Nee, er meinte ja einen extra Adapter für die Repetier Server Software für den 3d Drucker

            1 Reply Last reply Reply Quote 0
            • coyote
              coyote Most Active last edited by

              Hey,

              leider muss ich nochmal nachfragen, da ich jetzt noch ein zweites JSON hab, bei dem ich Zeit und Status in Prozent lesen könnte. Funktioniert nur nicht so wie ich dachte.

              [{"active":true,"analysed":1,"done":0.26915197043345518,"job":"Halter_rechts.","jobid":4,"linesSend":67,"name":"AM8","ofLayer":146,"online":1,"pauseState":0,"paused":false,"printTime":4266.7126891287853,"printedTimeComp":412.82550469314651,"slug":"AM8","start":1515704149,"totalLines":24893}]
              

              Das ist das JSON und ich brauche "done", "printTime" und "printedTimeComp". Ok, dachte ich mir dann müsste "done" ja "body.done" sein, stimmt aber anscheinend nicht, der Datenpunkt wird nicht gefüllt. Leider verstehe ich nicht warum. Helft mir bitte mal auf die Sprünge.

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

                @coyote:

                dachte ich mir dann müsste "done" ja "body.done" sein `

                body[0].done
                
                1 Reply Last reply Reply Quote 0
                • coyote
                  coyote Most Active last edited by

                  Danke paul53, ich wusste irgendwo kommt die [0] hin, nur war mir nicht klar dass sie an "body" kommt. Wieder ein Stück dazu gelernt.

                  1 Reply Last reply Reply Quote 0
                  • A
                    andyb last edited by

                    @coyote:

                    Script kann ich mal posten wenn ich es fertig hab, da sollen noch paar mehr Sachen rein.

                    Adapter wäre cool, bin ich aber leider der falsche Ansprechpartner für, da hab ich zu wenig Kenntnisse mit Javascript. ` Läuft das Skript und willst du es veröffentlichen?

                    Seit diesem WE läuft mein repetiersever [emoji16]

                    1 Reply Last reply Reply Quote 0
                    • L
                      ludino last edited by

                      Da wäre auch sehr intressiert dran.

                      Am liebsten sogar ein Adapter.

                      1 Reply Last reply Reply Quote 0
                      • J
                        Jan007 last edited by

                        Würde mich auch sehr darüber freuen 😄 😄 😄

                        1 Reply Last reply Reply Quote 0
                        • L
                          ludino last edited by

                          Da der Themen Owner sich nicht meldet vielleicht kann uns ja ein Experte mal erklären wie wir/ich vorgen muss damit das funktioniert!

                          Lieb Guck

                          1 Reply Last reply Reply Quote 0
                          • L
                            ludino last edited by

                            Keiner da der etwas hilfe geben kann?

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

                              @ludino:

                              damit das funktioniert! `
                              Damit was funktioniert ? Habe gerade meine Glaskugel verlegt.

                              1 Reply Last reply Reply Quote 0
                              • L
                                ludino last edited by

                                Zu erklärung,

                                wir/ich haben einen Repetier server am laufen, diesen möchten wir gerne mit in IObroker bringen. der Themen Owner hat ein Script dafür geschrieben.

                                Leider meldet er sich nicht mehr, um mal diesen Script zu veröffentlichen.

                                Wie muss ich vorgehen damit ich so ein script schreiben kann? Ich will es gerne lernen!

                                1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators last edited by

                                  Ich (als JS-Legastheniker) würde den Parser-Adapter dazu verwenden.

                                  Habe gestern auch schon etwas mit dem Code, der anfangs gepostet wurde versucht, sah recht nett aus.

                                  Ich bräuchte nur wesentlich mehr Informationen.

                                  Wie sieht bei dir eine solche Antwort aus?

                                  • hier bitte den Code

                                  Welche Daten willst du haben?

                                  • bitte anhend der Antwort mit den dort enthaltenen Werten.

                                  Gruß

                                  Rainer

                                  1 Reply Last reply Reply Quote 0
                                  • L
                                    ludino last edited by

                                    @Homoran:

                                    Ich (als JS-Legastheniker) würde den Parser-Adapter dazu verwenden.

                                    Habe gestern auch schon etwas mit dem Code, der anfangs gepostet wurde versucht, sah recht nett aus.

                                    Ich bräuchte nur wesentlich mehr Informationen.

                                    Wie sieht bei dir eine solche Antwort aus?

                                    • hier bitte den Code

                                    Welche Daten willst du haben?

                                    • bitte anhend der Antwort mit den dort enthaltenen Werten.

                                    Gruß

                                    Rainer `

                                    Ich werde mir darüber gedanken machen und mich melden, Erst mal muss ich rausfinden wie der Code aussehen muss mit der Antwort das hatte ich schonmal gehabt…..! Naja

                                    1 Reply Last reply Reply Quote 0
                                    • coyote
                                      coyote Most Active last edited by

                                      Sorry dass ich hier nicht mehr weiter geantwortet habe, hatte das Thema nicht mehr richtig auf dem Schirm.

                                      Ich poste mein Script mal, aber ich sage gleich mal dazu, ich bin nicht der große Scripter. Ist mehr so etwas zusammengewürfelt und rumprobiert.

                                      Es zeigt das an was ich wollte und mehr habe ich da auch nicht mehr gemacht. Da ist definitv noch einiges mehr rauszuholen und bestimmt noch vieles zu verbessern. Vllt kann sogar jemand einen Adapter draus machen.

                                      Es müssen 2 URL's im Parser Adapter eingetragen werden, für die Statelist und Printerlist mit eurem API-Key:

                                      Das Script ist für meine 2 Drucker, einmal den AM8 und einmal den NoName.

                                      Die ganzen Bezeichnungen sind auch noch nicht wirklich "sauber", wenn ich Zeit habe werde ich mich da nochmal ran setzen.

                                      536_repetier_li.jpg

                                      http://192.168.XXX.XXX:3344/printer/api … XXXXXXXXXX

                                      http://192.168.XXX.XXX:3344/printer/api ... XXXXXXXXXX

                                      var idJson = "parser.0.drucker";
                                      var idJson2 = "parser.0.druckerlist";
                                      var am8tempakt = "javascript.0.3dDrucker.AM8.Extruder.TempAkt"/*javascript.0.3dDrucker.AM8.Extruder.TempAkt*/;
                                      var am8tempset = "javascript.0.3dDrucker.AM8.Extruder.TempSet";
                                      var am8tempbettakt = "javascript.0.3dDrucker.AM8.Bett.TempAkt";
                                      var am8tempbettset = "javascript.0.3dDrucker.AM8.Bett.TempSet";
                                      var nntempakt = "javascript.0.3dDrucker.NoName.Extruder.TempAkt";
                                      var nntempset = "javascript.0.3dDrucker.NoName.Extruder.TempSet";
                                      var nntempbettakt = "javascript.0.3dDrucker.NoName.Bett.TempAkt";
                                      var nntempbettset = "javascript.0.3dDrucker.NoName.Bett.TempSet";
                                      var nnjob = "javascript.0.3dDrucker.NoName.Druckteil";
                                      var nnprinttime = "javascript.0.3dDrucker.NoName.Druckzeit";
                                      var nnprinttimecomp ="javascript.0.3dDrucker.NoName.Restzeit";
                                      var nndone ="javascript.0.3dDrucker.NoName.Prozent";
                                      var am8job = "javascript.0.3dDrucker.AM8.Druckteil";
                                      var am8printtime = "javascript.0.3dDrucker.AM8.Druckzeit";
                                      var am8printtimecomp ="javascript.0.3dDrucker.AM8.Restzeit";
                                      var am8done ="javascript.0.3dDrucker.AM8.Prozent";
                                      
                                      createState(am8tempakt, {name: "T1", unit: "°C"});
                                      createState(am8tempset, {name: "T2", unit: "°C"});
                                      createState(am8tempbettakt, {name: "T3", unit: "°C"});
                                      createState(am8tempbettset, {name: "T4", unit: "°C"});
                                      createState(nntempakt, {name: "T5", unit: "°C"});
                                      createState(nntempset, {name: "T6", unit: "°C"});
                                      createState(nntempbettakt, {name: "T7", unit: "°C"});
                                      createState(nntempbettset, {name: "T8", unit: "°C"});
                                      createState(nnjob, {name: "J"});
                                      createState(nnprinttime, {name: "T9"});
                                      createState(nnprinttimecomp, {name: "T10"});
                                      createState(nndone,{name: "Done"});
                                      createState(am8job, {name: "J1"});
                                      createState(am8printtime, {name: "T11"});
                                      createState(am8printtimecomp, {name: "T12"});
                                      createState(am8done,{name: "Done1"});
                                      
                                      function werteAuslesen(jsonStr) {
                                          var myJson = JSON.parse(jsonStr);
                                          var T1 = myJson.AM8.extruder[0].tempRead;
                                          var T2 = myJson.AM8.extruder[0].tempSet;
                                          var T3 = myJson.AM8.heatedBeds[0].tempRead;
                                          var T4 = myJson.AM8.heatedBeds[0].tempSet;
                                      
                                          var T5 = myJson.NoName.extruder[0].tempRead;
                                          var T6 = myJson.NoName.extruder[0].tempSet;
                                          var T7 = myJson.NoName.heatedBeds[0].tempRead;
                                          var T8 = myJson.NoName.heatedBeds[0].tempSet;
                                      
                                          setState(am8tempakt, T1.toFixed(2)); 
                                          setState(am8tempset, T2.toFixed(2));
                                          setState(am8tempbettakt, T3.toFixed(2)); 
                                          setState(am8tempbettset, T4.toFixed(2));
                                      
                                          setState(nntempakt, T5.toFixed(2)); 
                                          setState(nntempset, T6.toFixed(2));
                                          setState(nntempbettakt, T7.toFixed(2)); 
                                          setState(nntempbettset, T8.toFixed(2));
                                      
                                      }
                                      
                                      function werteAuslesen2(jsonStr) {
                                          var myJson2 = JSON.parse(jsonStr);
                                          var J1 = myJson2[0].job;
                                          var T11 = Math.round (1 * myJson2[0].printTime /60);          // Gesamtzeit AM8
                                          var T12 = Math.round (1 * myJson2[0].printedTimeComp /60) ;   // Gedruckte Zeit AM8
                                          var T13 = (T11-T12);                                          // Restzeit AM8
                                          var Done1 =  myJson2[0].done;
                                          var J = myJson2[1].job;
                                          var T9 = Math.round (1 * myJson2[1].printTime /60) ;          // Gesamtzeit NN
                                          var T10 = Math.round (1 * myJson2[1].printedTimeComp /60) ;   // Gedruckte Zeit NN
                                          var T14 = (T9-T10);                                           // Restzeit NN
                                          var Done = myJson2[1].done;
                                      
                                          setState(nnjob, J); 
                                          setState(nnprinttime, T9 + " min");
                                          setState(nnprinttimecomp, T14 + " min");
                                          if (getState("javascript.0.3dDrucker.NoName.Druckteil"/*J*/).val != "none"){
                                          setState(nndone, Done.toFixed(2) + " %");
                                      }
                                      
                                          setState(am8job, J1); 
                                          setState(am8printtime, T11 + " min");
                                          setState(am8printtimecomp, T13 + " min");
                                          if (getState("javascript.0.3dDrucker.AM8.Druckteil"/*J1*/).val != "none"){
                                          setState(am8done, Done1.toFixed(2) + " %");
                                      } 
                                      }
                                      
                                      on({id:idJson,change:'ne'}, function (obj) {
                                          werteAuslesen(obj.state.val);
                                      });
                                      
                                      on({id:idJson2,change:'ne'}, function (obj) {
                                          werteAuslesen2(obj.state.val);
                                      });
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • First post
                                        Last post

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      575
                                      Online

                                      31.8k
                                      Users

                                      79.9k
                                      Topics

                                      1.3m
                                      Posts

                                      9
                                      31
                                      9517
                                      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