NEWS
[gelöst] wie Blockly Script "schöner" machen ?
-
@HAL sagte:
damit sind aber die führenden "0" nicht weg.
Wandle den Datenpunktwert in eine Zahl (nach Zahl).
-
@paul53 Hat leider auch nichts gebracht. "Restdruckzeit ist 0 1 Stunden und 0 6 Minuten".
-
@HAL
Wie sehen denn die Datenpunkte "Reststunden" und "Restminuten" im RAW aus ? Kommen die von einem Adapter ? -
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" }
-
@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 ? -
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); }
-
@HAL
Wandlung "nach Zahl" entfernt führende Nullen. -
-
@dslraser
bei mir sieht es so aus, aber es kommen immer noch die führenden "nullen"
ich werde mal die Wandlung in die ausgabe packen.
-
-
@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.
-
@dslraser ,
so, jetzt muss ich nur warten, bis der Drucker im einstelligen Minuten Bereich ist
(noch 18 Minuten....)
-
@HAL
dann sag mal Bescheid. Hättest aber auch einmal manuell den DP ändern können... -
@dslraser
Jaein, ich nutze den DP auch für VIS und da ist die führende Null optisch besser -
@HAL
ich meinte ja nur ein mal manuell auf 09 ändern...(für die Ansage) -
-