Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] wie Blockly Script "schöner" machen ?

    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] wie Blockly Script "schöner" machen ?

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

      Hallo Zusammen,
      mittels Alexa Routinen und Note-Red schalte ich per Sprache einen eigenen Datenpunkt um. Das ist der Trigger für mein Blockly Scipt um von meinen 3D Drucker die Restdruckzeit angesagt zu bekommen:
      Das Script funktioniert , jedoch ist die Ansage nicht "schön"

      Frage: "Alexa, wie ist der Druckerstatus ?"
      Antwort: "Restdruckzeit ist null fünf Stunden und null drei Minuten". Die Ansage der führenden Null stört mich etwas. Bestimmt kann man das lösen, nur wie ?

      abfrage.jpg

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

        @HAL sagte:

        Die Ansage der führenden Null stört mich etwas. Bestimmt kann man das lösen, nur wie ?

        Blockly_temp.JPG

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

          @paul53 damit sind aber die führenden "0" nicht weg. Sprich die Stunden und Minuten werden immer zweistellig angesagt.

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

            @HAL sagte:

            damit sind aber die führenden "0" nicht weg.

            Wandle den Datenpunktwert in eine Zahl (nach Zahl).

            Blockly_temp.JPG

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

              @paul53 Hat leider auch nichts gebracht. "Restdruckzeit ist 0 1 Stunden und 0 6 Minuten".

              dslraser 1 Reply Last reply Reply Quote 0
              • dslraser
                dslraser Forum Testing Most Active @HAL last edited by dslraser

                @HAL
                Wie sehen denn die Datenpunkte "Reststunden" und "Restminuten" im RAW aus ? Kommen die von einem Adapter ?

                HAL 1 Reply Last reply Reply Quote 0
                • HAL
                  HAL @dslraser last edited by HAL

                  @dslraser

                  vom Adapter Octoprint

                  {
                    "from": "system.adapter.javascript.0",
                    "user": "system.user.admin",
                    "ts": 1578317499727,
                    "common": {
                      "name": "Reststunden",
                      "desc": "Reststunden",
                      "type": "string",
                      "role": "state"
                    },
                    "native": {},
                    "acl": {
                      "object": 1636,
                      "owner": "system.user.admin",
                      "ownerGroup": "system.group.administrator",
                      "state": 1636
                    },
                    "_id": "javascript.0.OctoPi.Reststunden",
                    "type": "state"
                  }
                  
                  dslraser 1 Reply Last reply Reply Quote 0
                  • dslraser
                    dslraser Forum Testing Most Active @HAL last edited by dslraser

                    @HAL
                    das ist tatsächlich vom Typ string. Ich habe es gerade mit einer Zahl probiert, da kommt die Ansage wie sie soll.
                    Steht dan z.B. bei den Minuten/Stunden 08 ?

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

                      Ja, genua , da steht jeweils die Stunden und Minuten zweistellig und wenn weniger als 10 Stunden oder 10 Minuten mit führender 0.

                      Das dazugehörige Java Script:

                      //************ Umrechnung der Druckzeiten von Sekunden nach HH:MM:SS********************* */
                      createState('javascript.0.OctoPi.Printzeit', {
                          name: 'Druckdauer',
                          desc: 'Druckdauer',
                          type: 'string'
                      });
                       
                      createState('javascript.0.OctoPi.Restzeit', {
                          name: 'Restzeit',
                          desc: 'Restzeit',
                          type: 'string'
                      });
                       
                      createState('javascript.0.OctoPi.Reststunden', {
                          name: 'Reststunden',
                          desc: 'Reststunden',
                          type: 'string'
                      });
                      
                      createState('javascript.0.OctoPi.Restminuten', {
                          name: 'Restminuten',
                          desc: 'Restminuten',
                          type: 'string'
                      });
                      
                      const restdauer  = 'octoprint.0.printjob.progress.printtime_left'
                      const druckdauer = 'octoprint.0.printjob.progress.printtime'
                       
                      // Triggern, wenn sich Restzeit verkleinert
                      on({id: [restdauer], change: "lt"} , function (obj) {
                          umrechnung();
                      });
                       
                      //_________________________________________________________________________
                       
                      function umrechnung() {
                          var time_left = getState("octoprint.0.printjob.progress.printtime_left").val;
                          var job_time  = getState('octoprint.0.printjob.progress.printtime').val;
                       
                          // Hours
                          var hours_restzeit  =  Math.floor( time_left / 3600 );
                          var hours_printzeit =  Math.floor( job_time  / 3600 );
                          if ( hours_restzeit  < 10 ){var std_restzeit = "0" + String(hours_restzeit);}
                              else var std_restzeit = String(hours_restzeit)
                          if ( hours_printzeit < 10 ){var std_printzeit= "0" + String(hours_printzeit); }
                              else var std_printzeit = String(hours_printzeit)
                       
                      
                      
                          // Minutes
                          var minutes_restzeit  = Math.floor( (time_left%3600) / 60 );
                          var minutes_printzeit = Math.floor( (job_time%3600)  / 60 );
                          if ( minutes_restzeit  < 10 ){var min_restzeit = "0" + String(minutes_restzeit);}
                              else var min_restzeit = String(minutes_restzeit)
                          if ( minutes_printzeit < 10 ){var min_printzeit= "0" + String(minutes_printzeit); }
                               else var min_printzeit = String(minutes_printzeit)
                       
                                
                      
                          // Seconds
                          var seconds_restzeit  = Math.floor( time_left%60 );
                          var seconds_printzeit = Math.floor( job_time%60  );
                          if ( seconds_restzeit  < 10 ){var sec_restzeit = "0" + String(seconds_restzeit);}
                              else var sec_restzeit = String(seconds_restzeit)
                          if ( seconds_printzeit < 10 ){var sec_printzeit= "0" + String(seconds_printzeit); }
                              else var sec_printzeit = String(seconds_printzeit)
                       
                          // Zeit in HH:MM:SS format
                          var restzeit  = std_restzeit  + ':' + min_restzeit  + ':' + sec_restzeit;
                          var printzeit = std_printzeit + ':' + min_printzeit + ':' + sec_printzeit;
                       
                          console.log("Java Restzeit: " + restzeit);
                          console.log("Java Printzeit: " + printzeit);
                          console.log("Java Reststunden: " + std_restzeit);
                          console.log("Java Restminuten: " + min_restzeit);
                       
                          setState("javascript.0.OctoPi.Restzeit", restzeit, true);
                          setState('javascript.0.OctoPi.Printzeit', printzeit, true);
                          setState('javascript.0.OctoPi.Reststunden', std_restzeit, true);
                            setState('javascript.0.OctoPi.Restminuten', min_restzeit, true);
                      }
                       
                      
                      
                      paul53 dslraser 2 Replies Last reply Reply Quote 0
                      • paul53
                        paul53 @HAL last edited by

                        @HAL
                        Wandlung "nach Zahl" entfernt führende Nullen.

                        Blockly_temp.JPG

                        1 Reply Last reply Reply Quote 0
                        • dslraser
                          dslraser Forum Testing Most Active @HAL last edited by

                          @HAL
                          ich habe mir gerade mal so einen DP als Sting angelegt. Funktioniert bei mir genau wie von @paul53 vorgeschlagen. Ohne Wandlung nach Zahl kommt die Ansage mit null neun Minuten, mit Wandlung kommt neun Minuten.

                          Bildschirmfoto 2020-01-09 um 19.31.16.png

                          Bildschirmfoto 2020-01-09 um 19.34.19.png

                          HAL 1 Reply Last reply Reply Quote 0
                          • HAL
                            HAL @dslraser last edited by HAL

                            @dslraser
                            bei mir sieht es so aus, aber es kommen immer noch die führenden "nullen"
                            Wandlung.JPG

                            ich werde mal die Wandlung in die ausgabe packen.

                            paul53 dslraser 2 Replies Last reply Reply Quote 0
                            • paul53
                              paul53 @HAL last edited by

                              @HAL sagte:

                              bei mir sieht es so aus,

                              Mein Vorschlag sieht auch anders aus.

                              1 Reply Last reply Reply Quote 1
                              • dslraser
                                dslraser Forum Testing Most Active @HAL last edited by

                                @HAL sagte in wie Blockly Script "schöner" machen ?:

                                ich werde mal die Wandlung in die ausgabe packen.

                                die soll ja auch angesagt werden und @paul53 hatte es auch so.

                                HAL 1 Reply Last reply Reply Quote 0
                                • HAL
                                  HAL @dslraser last edited by

                                  @dslraser ,
                                  so, jetzt muss ich nur warten, bis der Drucker im einstelligen Minuten Bereich ist 😉
                                  (noch 18 Minuten....)
                                  wandlung2.JPG

                                  dslraser 1 Reply Last reply Reply Quote 0
                                  • dslraser
                                    dslraser Forum Testing Most Active @HAL last edited by

                                    @HAL
                                    dann sag mal Bescheid. Hättest aber auch einmal manuell den DP ändern können...

                                    HAL 1 Reply Last reply Reply Quote 0
                                    • HAL
                                      HAL @dslraser last edited by

                                      @dslraser
                                      Jaein, ich nutze den DP auch für VIS und da ist die führende Null optisch besser

                                      dslraser 1 Reply Last reply Reply Quote 0
                                      • dslraser
                                        dslraser Forum Testing Most Active @HAL last edited by

                                        @HAL
                                        ich meinte ja nur ein mal manuell auf 09 ändern...(für die Ansage)

                                        1 Reply Last reply Reply Quote 1
                                        • HAL
                                          HAL last edited by HAL

                                          @dslraser und @paul53,

                                          vielen Dank für Eure Hilfe ! , es hat geklappt ! 🙂 👏

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

                                            @HAL sagte:

                                            es hat geklappt !

                                            Bitte das Thema als [gelöst] markieren.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            544
                                            Online

                                            31.9k
                                            Users

                                            80.3k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            20
                                            867
                                            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