NEWS
[UMFRAGE] Besteht Interesse an einem Octoprint Adapter
-
@joergeli Hallo, mir gefÀllt deine VIS sehr gut. WÀre es eventuell möglich das die Bilder inkl. View (Exportiert) hochgeladen werden?? Lg
-
Sorry fĂŒr die spĂ€te Antwort, war unterwegs.
Hier meine Octoprint-Icons (View als Export hatte ich weiter oben hier im Thread schon mal hochgeladen)GruĂ
Jörg -
Sorry fĂŒr die spĂ€te Antwort, war unterwegs.
Hier meine Octoprint-Icons (View als Export hatte ich weiter oben hier im Thread schon mal hochgeladen)GruĂ
Jörg -
@joergeli Wie hast du dsa mit der Bedienung der achsen gelöst? Welches Widget ist das oder sind das alles einzelteile??
-
@andbru01
Das sind alles Einzelwidgets vom Typ jqui - ButtonState.
Einstellungen fĂŒr z.B. Z-Achse 10 Schritte hoch:


Ach ja, drehen der Widgets mache ich mit CSS:

-
@andbru01
Das sind alles Einzelwidgets vom Typ jqui - ButtonState.
Einstellungen fĂŒr z.B. Z-Achse 10 Schritte hoch:


Ach ja, drehen der Widgets mache ich mit CSS:

-
@jĂŒrgen-b-0 sagte in [UMFRAGE] Besteht Interesse an einem Octoprint Adapter:
1.) Wo Àndere ich den User und das Passwort? (Zeile)
2.) Zeile 4? wie kann ich das node-ssh in Javascript-Adapter installieren?
3.) Wie pflege ich das entsprechend im VIS-Editor ein?1.) User/Passwort: bei //Octoprint-Server via SSH herunterfahren - in der setTimeout(function() ab Zeile 150
2.) node-ssh manuell in den Einstellungen des JavaScript-Adapters hinzufĂŒgen/reinschreiben:

Das dauert dann einen Moment, bis node-ssh installiert wurde.
In den JavaSript-Einstellungen auch den Haken bei Kommandoe "exec" erlauben nicht vergessen!3.) Anbei mein vis-View nochmals als Export, den kannst Du importieren und Dich daran orientieren.
NatĂŒrlich musst Du darin die Pfade anpassen, in denen die Bildchen, etc. gespeichert sind!Sieht jetzt so aus:
octo-view_export.zip
#######################################################################################
Ich hatte mein Script zwischenzeitlich noch mal editiert, bzgl. zusÀtzlichen Ausgaben von Fertigstellungszeit / -Datum.
AuĂerdem habe ich noch einen Schalter eingebaut, mit dem in der vis ausgewĂ€hlt werden kann, ob der Drucker nach Fertigstellung und AbkĂŒhlung automatisch ausgeschaltet werden soll, oder nicht.
ZusĂ€tzlich noch ein paar Buttons fĂŒr X/Y-Positionierung des Druckkopfes.
Dazu mĂŒssen in den vis-Buttons entspr. Werte eingetragen werden, z.B. so:




Beachte bitte, daĂ ich die Sprachausgabe mit PAW mache, das musst Du sehr wahrscheinlich an Deine Gegebenheiten anpassen ( Alexa, Telegram, o.Ă€.)
Anbei mein aktuelles Script:
//##################################################################### // Octoprint-Server ein-/ausschalten, bzw. ueberwachen //##################################################################### // node-ssh muss in Javascript-Adapter installiert sein ! // Die folgenden Variablen werden benoetigt, damit die jeweilige Sprachausgabe - bei entspr. %-Zahl - nur einmalig erfolgt var twentyfive = 0; //25% gedruckt var fifty = 0; //50% gedruckt var seventyfive = 0; //75% gedruckt var ninety = 0; //90% gedruckt var done = 0; //100% gedruckt const octopi_steckdose = 'shelly.0.SHPLG-S#04168A#1.Relay0.Switch' // Shelly Plug S Steckdose Octopi und 3D-Drucker const octopi_autoshutdown = 'javascript.0.OctoPi.AutoShutdown' // Drucker nach Druckende autom. ausschalten const octoprint_adapter = 'system.adapter.octoprint.0.connected' // Octoprint-Adapter verbunden const ping_octoprint = 'javascript.0.ping.Raspi Octoprint' // Octoprint Ping const octoprint_verbindung = 'octoprint.0.info.connection' // Verbindung zum Drucker const anycubic_verbindung = 'octoprint.0.printer_status' // Printer Status const anycubic_timedone = 'octoprint.0.printjob.progress.printtime' const anycubic_timeleft = 'octoprint.0.printjob.progress.printtimeLeft' const anycubic_extrudertemp = 'octoprint.0.tools.tool0.actualTemperature' const anycubic_extrudertemp_soll = 'octoprint.0.tools.tool0.targetTemperature' const anycubic_tempbed = 'octoprint.0.tools.bed.actualTemperature' const anycubic_tempbed_soll = 'octoprint.0.tools.bed.targetTemperature' const anycubic_fortschritt = 'octoprint.0.printjob.progress.completion' const anycubic_dateiname = 'octoprint.0.printjob.file.name' const anycubic_speicherort = 'octoprint.0.printjob.file.origin' const anycubic_dateigroesse = 'octoprint.0.printjob.file.size' const anycubic_laenge = 'octoprint.0.printjob.filament.length' const anycubic_volumen = 'octoprint.0.printjob.filament.volume' const anycubic_gesamtlayer = 'octoprint.0.plugins.displayLayerProgress.layer.total' const anycubic_currentlayer = 'octoprint.0.plugins.displayLayerProgress.layer.current' var pfad = 'javascript.0.OctoPi.'; const {NodeSSH} = require('node-ssh') const ssh = new NodeSSH() createState( pfad + 'ShutdownState', false, {name: 'State of Shutdown Octopi'}); createState( pfad + 'ShuttingDown', { name: 'Shuttingdown OctoPi', desc: 'Shutdown OctoĂi', type: 'string' }); 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.Gesamtzeit', { name: 'Gesamtzeit', desc: 'Gesamtdauer des Druckjobs', type: 'string', }); createState( pfad + 'EndeZeit', { name: 'EndeZeit', desc: 'Uhrzeit Fertigstellung des Druckes', type: 'string' }); createState( pfad + 'AutoShutdown', { name: 'AutoShutdown', desc: 'Drucker nach Druckende ausschalten', type: 'boolean' }); //______ pruefen, ob Shutdown-Button gedrueckt wurde ____ on('javascript.0.OctoPi.Shutdown', function (obj) { if (!obj.state.ack && obj.state.val == true) { octopi_shutdown(); } }); //______ pruefen, ob Start-Button gedrueckt wurde ____ on('javascript.0.OctoPi.Shutdown', function (obj) { if (!obj.state.ack && obj.state.val == false) { var autoshut = false; octopi_startup(); } }); //____________________________________________________________________________________________________ // Umrechnung der Druckzeiten von Sekunden in HH:MM:SS und Ende-Zeit berechnen on({id: [anycubic_timeleft], change: "lt"} , function (obj) { umrechnung(); EndeZeit(); }); //____________________________________________________________________________________________________ function octopi_shutdown() { lautstaerke_tablet(); // Lautstaerke Tablet auf 13 setzen twentyfive = 0; fifty = 0; seventyfive = 0; ninety = 0; done = 0; //ioBroker OctoPi-Instanz beenden setTimeout(function(){ octo_adapter_off(); sendTo("paw.0",'Tablet_Jörg',{tts: 'Octoprint Instanz wurde beendet'}); }, 1000); sendTo("paw.0",'Tablet_Jörg',{play: true}); // sofort default sound notification abspielen setState (pfad + 'ShuttingDown', 'Octoprint-Instanz beendet ...', true); //Sprachansage, dass Octopi heruntergefahren wird setTimeout(function(){ sendTo("paw.0",'Tablet_Jörg',{tts: 'OctoPrint-Server wird heruntergefahren'}); log ('OctoPrint wird heruntergefahren'); setState (pfad + 'ShuttingDown', 'OctoPrint wird gestoppt ...', true); //Druckzeiten und Layer zuruecksetzen setState("javascript.0.OctoPi.Restzeit", '---', true); setState('javascript.0.OctoPi.Printzeit', '---', true); setState("javascript.0.OctoPi.EndeZeit", '---', true); setState("javascript.0.OctoPi.Gesamtzeit", '---', true); setState("javascript.0.OctoPi.AutoShutdown", false, true); setState("javascript.0.OctoPi.Shutdown", true, true); setState('octoprint.0.plugins.displayLayerProgress.layer.averageDuration', 0, true); setState('octoprint.0.plugins.displayLayerProgress.layer.current', 0, true); setState('octoprint.0.plugins.displayLayerProgress.layer.total', 0, true); }, 5000); //Octoprint-Server via SSH herunterfahren setTimeout(function(){ //log ('__ SSH Verbindung gestartet __'); //SSH-Session starten, um Octoprint-Raspi sauber! herunterzufahren ssh.connect({ host: '192.168.192.30', //IP-Adresse des Octoprint-Raspi username: 'pi', //Username Octoprint-Raspi (normalerweise pi) password: 'xxxxxxxx' //Passwort Octoprint-Raspi }).then(() => { ssh.execCommand('echo "xxxxxxxx"|sudo -S shutdown -h now'); // Achtung! Im execCommand muss nochmals das Passwort fĂŒr den Octoprint-Raspi eingetragen werden }); }, 6000); // 6 Sekunden warten //Sprachansage, dass Octopi heruntergefahren wird setTimeout(function(){ sendTo("paw.0",'Tablet_Jörg',{tts: 'Shutdown wurde gestartet'}); //log ('__ Shutdown wurde gestartet ... __'); setState (pfad + 'ShuttingDown', 'Shutdown wurde gestartet ...', true); }, 10000); //OctoPi Shutdown Fertig-Meldung setTimeout(function(){ sendTo("paw.0",'Tablet_Jörg',{tts: 'Octoprint-Server ist down'}); //log ('__ Octoprint-Server ist down __'); setState (pfad + 'ShuttingDown', 'OctoPrint ist down ...', true); }, 18000); //OctoPi- Shelly Plug S - Steckdose ausschalten setTimeout(function(){ setState(octopi_steckdose, false); sendTo("paw.0",'Tablet_Jörg',{tts: 'OctoPrint-Steckdose und 3 D-Drucker sind ausgeschaltet'}); log ('OctoPi-Steckdose ausgeschaltet'); setState (pfad + 'ShuttingDown', 'OctoPrint ist ausgeschaltet', true); setState("javascript.0.OctoPi.EndeZeit", '---', true); }, 24000); } // Ende function octopi_shutdown //____________________________________________________________________________________________________ function octopi_startup() { lautstaerke_tablet(); twentyfive = 0; fifty = 0; seventyfive = 0; ninety = 0; done = 0; //Druckzeiten und Layer zuruecksetzen setState("javascript.0.OctoPi.Restzeit", '---', true); setState('javascript.0.OctoPi.Printzeit', '---', true); setState("javascript.0.OctoPi.EndeZeit", '---', true); setState("javascript.0.OctoPi.Gesamtzeit", '---', true); setState("javascript.0.OctoPi.AutoShutdown", false, true); setState('octoprint.0.plugins.displayLayerProgress.layer.averageDuration', 0, true); setState('octoprint.0.plugins.displayLayerProgress.layer.current', 0, true); setState('octoprint.0.plugins.displayLayerProgress.layer.total', 0, true); setState('octoprint.0.printjob.progress.completion', 0, true); //OctoPi-Instanz starten, wenn Octopi-Raspi kpl. hochgefahren ist setTimeout(function(){ octo_adapter_on(); //sendTo("paw.0",'Tablet_Jörg',{tts: 'Octoprint Instanz wurde gestartet'}); log('Octoprint Instanz wurde gestartet'); }, 45000); setTimeout(function(){ sendTo("paw.0",'Tablet_Jörg',{tts: 'OctoPrint-Server wird gestartet'}); log ('OctoPrint-Server wird gestartet'); setState (pfad + 'ShuttingDown', 'OctoPrint wird gestartet ...', true); }, 10000); //Geduld1... setTimeout(function(){ setState (pfad + 'ShuttingDown', 'Geduld, Octoprint startet ...', true); sendTo("paw.0",'Tablet_Jörg',{tts: 'Bitte noch etwas Geduld, Octoprint startet noch'}); log ('Geduld, Octoprint startet ...'); }, 20000); //Geduld2... setTimeout(function(){ setState (pfad + 'ShuttingDown', 'Octoprint ist gleich verfĂŒgbar ...', true); sendTo("paw.0",'Tablet_Jörg',{tts: 'Geduld. Octoprint ist gleich verfĂŒgbar'}); //log ('Geduld, Octoprint ist gleich verfĂŒgbar'); }, 35000); setTimeout(function(){ // Steckdose einschalten setState(octopi_steckdose, true); setState (pfad + 'ShuttingDown', '3D Drucker wurde eingeschaltet ...', true); log('3D Drucker wurde eingeschaltet ...'); sendTo("paw.0",'Tablet_Jörg',{tts: 'Der 3Dee Drucker wurde eingeschaltet'}); }, 100); } //Ende function octopi_startup //____________________________________________________________________________________________________ //OctoPi Online-Meldung, wenn Verbindung zum 3D-Drucker hergestellt wurde on({id: anycubic_verbindung, change: 'gt'}, function() { lautstaerke_tablet(); twentyfive = 0; fifty = 0; seventyfive = 0; ninety = 0; done = 0; //Druckzeiten und Layer zuruecksetzen setState("javascript.0.OctoPi.Restzeit", '---', true); setState('javascript.0.OctoPi.Printzeit', '---', true); setState("javascript.0.OctoPi.EndeZeit", '---', true); setState("javascript.0.OctoPi.Gesamtzeit", '---', true); setState('octoprint.0.plugins.displayLayerProgress.layer.current', 0, true); setState('octoprint.0.plugins.displayLayerProgress.layer.total', 0, true); var stat = getState('octoprint.0.printer_status').val; if (stat == 'Operational'){ //log ('___ Status= ' + stat + '___'); sendTo("paw.0",'Tablet_Jörg',{tts: 'Octoprint-Server ist online'}); log ('Octoprint-Server ist online'); setState (pfad + 'ShuttingDown', 'OctoPrint ist online', true); variablen_abfragen(); } }); // Ende Meldung Verbindungsherstellung //____________________________________________________________________________________________________ // Wenn Steckdose ausgeschaltet wird, alles auf 0 setzen (fuer vis) on({id: octopi_steckdose, change: 'lt'}, function() { setState (anycubic_fortschritt, 0, true); setState (anycubic_timedone , 0, true); setState (anycubic_timeleft , 0, true); setState (anycubic_extrudertemp , 0, true); setState (anycubic_extrudertemp_soll , 0, true); setState (anycubic_tempbed , 0, true); setState (anycubic_tempbed_soll , 0, true); setState (anycubic_dateigroesse , 0, true); setState (anycubic_speicherort , '---', true); setState (anycubic_dateiname , '---', true); setState (anycubic_laenge, 0, true); setState (anycubic_volumen, 0, true); setState(anycubic_gesamtlayer, 0, true); setState(anycubic_currentlayer, 0, true); EndeZeit(); } ); //____________________________________________________________________________________________________ // Octoprint-Datenpunkte abfragen function variablen_abfragen(){ //log ('___ Octoprint-Datenpunkte werden gelesen ___'); lautstaerke_tablet(); var verbleibende_zeit = getState(anycubic_timeleft).val; var bed_temp0 = getState(anycubic_tempbed).val; var bed_temp = Math.round(bed_temp0 * 1) / 1; // keine Nachkommastellen ansagen var extruder_temp0 = getState(anycubic_extrudertemp).val; var extruder_temp = Math.round(extruder_temp0 * 1) / 1; // keine Nachkommastellen ansagen var druck_fortschritt0 = getState(anycubic_fortschritt).val; var druck_fortschritt = Math.round(druck_fortschritt0 * 1) / 1; // keine Nachkommastellen ansagen var dateigroesse = getState(anycubic_dateigroesse).val; var druckdauer = getState('javascript.0.OctoPi.Gesamtzeit').val; //log ('druckdauer= ' + druckdauer); // var laenge = getState(anycubic_laenge).val; // var volumen = getState(anycubic_volumen).val; // setState (pfad + 'Laenge', laenge, true); // setState (pfad + 'Laenge', volumen, true); } // Ende function variablen_abfragen //____________________________________________________________________________________________________ //Ansage Druckfortschritt on({id: anycubic_fortschritt, change: 'any'}, function() { lautstaerke_tablet(); var verbleibende_zeit = getState(anycubic_timeleft).val; var bed_temp0 = getState(anycubic_tempbed).val; var bed_temp = Math.round(bed_temp0 * 1) / 1; // keine Nachkommastellen ansagen var extruder_temp0 = getState(anycubic_extrudertemp).val; var extruder_temp = Math.round(extruder_temp0 * 1) / 1; // keine Nachkommastellen ansagen var druck_fortschritt0 = getState(anycubic_fortschritt).val; var druck_fortschritt = Math.round(druck_fortschritt0 * 1) / 1; // keine Nachkommastellen ansagen var fortschrSprache = Math.round(druck_fortschritt0 * 10) / 10; // 1 Nachkommastelle //var dateigroesse = getState(anycubic_dateigroesse).val; //log ("fort: " + fortschrSprache); //log ("bett: " + bed_temp0); //Ansage des Druck-Fortschrittes bei 25% if(twentyfive == 0 ){ if(fortschrSprache >= 25 && fortschrSprache <= 27 ){ setTimeout(function(){ sendTo("paw.0",'Tablet_Jörg',{tts: 'Der 3 D-Drucker hat ' + druck_fortschritt + 'Prozent des Ausdruckes fertiggestellt'}); }, 2000); log ('## AnyCubic ist zu ' + druck_fortschritt + '% fertig ##'); twentyfive = 1; } // Ende if fortschrSprache >= 25 } //Ansage des Druck-Fortschrittes bei 50% if(fifty == 0 ){ if(fortschrSprache >= 50 && fortschrSprache <= 52 ){ setTimeout(function(){ sendTo("paw.0",'Tablet_Jörg',{tts: 'Der 3 D-Drucker hat ' + druck_fortschritt + 'Prozent des Ausdruckes fertiggestellt'}); }, 2000); log ('## AnyCubic ist zu ' + druck_fortschritt + '% fertig ##'); fifty = 1; } // Ende if fortschrSprache >= 50 } //Ansage des Druck-Fortschrittes bei 75% if(seventyfive == 0 ){ if(fortschrSprache >= 75 && fortschrSprache <= 77 ){ setTimeout(function(){ sendTo("paw.0",'Tablet_Jörg',{tts: 'Der 3 D-Drucker hat ' + druck_fortschritt + 'Prozent des Ausdruckes fertiggestellt'}); }, 2000); log ('## AnyCubic ist zu ' + druck_fortschritt + '% fertig ##'); seventyfive = 1; } // Ende if fortschrSprache >= 75 } //Ansage des Druck-Fortschrittes bei 90% if(ninety == 0 ){ if(fortschrSprache >= 90 && fortschrSprache <= 92 ){ setTimeout(function(){ sendTo("paw.0",'Tablet_Jörg',{tts: 'Der 3 D-Drucker hat ' + druck_fortschritt + 'Prozent des Ausdruckes fertiggestellt'}); }, 2000); log ('## AnyCubic ist zu ' + druck_fortschritt + '% fertig ##'); ninety = 1; } // Ende if fortschrSprache >= 90 } }); // Ende Ansage Druckfortschritte //____________________________________________________________________________________________________ //____________________________________________________________________________________________________ //Ansage, dass der Druck fertig ist, wenn Druckfortschritt = 100% und das Druckbett abgekuehlt (<= 50 Grad) ist, // optional danach automatisches Herunterfahren on({id: anycubic_tempbed, change: 'any'}, function() { if(done == 0 ){ var druck_fortschritt0 = getState(anycubic_fortschritt).val; var druck_fortschritt = Math.round(druck_fortschritt0 * 1) / 1; // keine Nachkommastellen ansagen //log ('Druckfortschritt ist: ' + druck_fortschritt); var bed_temp0 = getState(anycubic_tempbed).val; var bed_temp = Math.round(bed_temp0 * 1) / 1; // keine Nachkommastellen ansagen //log ('bed_temp ist: ' + bed_temp); if(druck_fortschritt == 100 && bed_temp >= 48 && bed_temp <= 50 ){ var autoshut = getState('javascript.0.OctoPi.AutoShutdown').val; log ('AutoShutdown ist ' + autoshut); // bei aktivem AutoShutdown den Drucker nach Abkuehlung ausschalten if ( autoshut == true ){ setTimeout(function(){ log ('--> Drucker wird jetzt automatisch ausgeschaltet'); octopi_shutdown(); }, 17000); setTimeout(function(){ sendTo("paw.0",'Tablet_Jörg',{tts: 'Der Drucker wird jetzt automatisch ausgeschaltet'}); }, 11000); } // ende autoshut true setTimeout(function(){ sendTo("paw.0",'Tablet_Jörg',{tts: 'Der 3 D-Drucker hat den Ausdruck fertiggestellt und die Druckbett-Temperatur ist auf ' + bed_temp + ' Grad gefallen'}); }, 2000); //sendTo("paw.0",'Tablet_Jörg',{play: true}); // sofort default sound notification abspielen log ('## AnyCubic ist fertig, HotBed: ' + bed_temp + '°C ##'); done = 1; } // Ende if(druck_fortschritt == 100 && bed_temp >= 48 && bed_temp <= 50 ) } // ende if done }); // Ende On ID anycubic_tempbed change //____________________________________________________________________________________________________ //____________________________________________________________________________________________________ function octo_adapter_on() { // Octoprint-Adapter einschalten //var octo_instanz = getObject("system.adapter.octoprint.0"); //octo_instanz.common.enabled = true; //setObject("system.adapter.octoprint.0", octo_instanz); log ('__ Octoprint_Adapter wurde gestartet __'); setState("system.adapter.octoprint.0.alive", true); } function octo_adapter_off() { // Octoprint-Adapter ausschalten //var octo_instanz = getObject("system.adapter.octoprint.0"); //octo_instanz.common.enabled = false; //setObject("system.adapter.octoprint.0", octo_instanz); log ('__ Octoprint_Adapter wurde beendet __'); setState("system.adapter.octoprint.0.alive", false); } // function umrechnung() { // Umrechnung der Druckzeiten von Sekunden in HH:MM:SS var time_left = getState("octoprint.0.printjob.progress.printtimeLeft").val; var job_time = getState('octoprint.0.printjob.progress.printtime').val; var duration = time_left + job_time; // Hours var hours_restzeit = Math.floor( time_left / 3600 ); var hours_printzeit = Math.floor( job_time / 3600 ); var hours_duration = Math.floor( duration / 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) if ( hours_duration < 10 ){var std_duration= "0" + String(hours_duration); } else var std_duration = String(hours_duration) // Minutes var minutes_restzeit = Math.floor( (time_left%3600) / 60 ); var minutes_printzeit = Math.floor( (job_time%3600) / 60 ); var minutes_duration = Math.floor( (duration%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) if ( minutes_duration < 10 ){var min_duration= "0" + String(minutes_duration); } else var min_duration = String(minutes_duration) // Seconds var seconds_restzeit = Math.floor( time_left%60 ); var seconds_printzeit = Math.floor( job_time%60 ); var seconds_duration = Math.floor( duration%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) if ( seconds_duration < 10 ){var sec_duration= "0" + String(seconds_duration); } else var sec_duration = String(seconds_duration) // Zeit in HH:MM:SS format var restzeit = std_restzeit + ':' + min_restzeit + ':' + sec_restzeit; var printzeit = std_printzeit + ':' + min_printzeit + ':' + sec_printzeit; var dauer = std_duration + ':' + min_duration + ':' + sec_duration; //console.log("Restzeit:" + restzeit + "__" + " Printzeit:" + printzeit + "__" +" Dauer:" + dauer); setState("javascript.0.OctoPi.Restzeit", restzeit, true); setState('javascript.0.OctoPi.Printzeit', printzeit, true); setState("javascript.0.OctoPi.Gesamtzeit", dauer, true); } //____________________________________________________________________________________________________ // Druck-Ende Uhrzeit berechnen // //################################# function EndeZeit(){ var time_left = getState("octoprint.0.printjob.progress.printtimeLeft").val; var sekunden_restzeit = time_left; // Restzeit in Sekunden aus Octopi if(time_left == null || time_left == 0 ){ setState("javascript.0.OctoPi.EndeZeit", '---', true) }; var Zeit = new Date(); //log('jetzt: ' + Zeit); var z0_neu = Zeit.getSeconds()+ sekunden_restzeit; var z_neu = Zeit.setSeconds(z0_neu); var ZeitNeu = new Date(z_neu); //console.log('Endezeit: ' + ZeitNeu); var h_ende = ZeitNeu.getHours(); var m_ende = ZeitNeu.getMinutes(); var s_ende = ZeitNeu.getSeconds(); var tag_ende = ZeitNeu.getDate(); var months = ["Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]; var monat_ende = months[ZeitNeu.getMonth()]; var EndeZeit = tag_ende + '.' + monat_ende + ' ' + h_ende + ':' + m_ende + ':' + s_ende; //console.log('EndeZeit: ' + EndeZeit); // FĂŒhrende 0 hinzufĂŒgen und als String wandeln if ( tag_ende < 10 ){var endtag = "0" + String(tag_ende);} else var endtag = String(tag_ende) if ( h_ende < 10 ){var endstunde = "0" + String(h_ende);} else var endstunde = String(h_ende) if ( m_ende < 10 ){var endminute = "0" + String(m_ende);} else var endminute = String(m_ende) if ( s_ende < 10 ){var endsekunde = "0" + String(s_ende);} else var endsekunde = String(s_ende) var EndeZeit = endtag + '. ' + monat_ende + ' ' + endstunde + ':' + endminute + ':' + endsekunde; //console.log('EndeZeit: ' + EndeZeit); //setState("javascript.0.OctoPi.EndeZeit", EndeZeit, true); if(time_left == null || time_left == 0 ){ setState("javascript.0.OctoPi.EndeZeit", '---', true) } else setState("javascript.0.OctoPi.EndeZeit", EndeZeit, true); } // end of function EndeZeit() //____________________________________________________________________________________________________ // Lautstaerke von Landvo-Smartphone auf 15 setzen function lautstaerke(){ sendTo("paw.0",'Landvo',{volume: 15}); } // Lautstaerke von Android-Tablet auf 13 setzen function lautstaerke_tablet(){ sendTo("paw.0",'Tablet_Jörg',{volume: 13}); }Das Ganze geht bestimmt auch eleganter/einfacher, aber da ich nicht so der JS-Crack bin, habe ich mir das so zusammengefrickelt.
@joergeli Danke fĂŒr dieses tolle Skript, kann ich hier anstatt paw.0 einfach meine Alexa Sprachausgabe (alexa2.1.Echo-Devices.G0913L061032041X.Commands.speak) einfĂŒgen?
Viele GrĂŒĂe -
@joergeli Danke fĂŒr dieses tolle Skript, kann ich hier anstatt paw.0 einfach meine Alexa Sprachausgabe (alexa2.1.Echo-Devices.G0913L061032041X.Commands.speak) einfĂŒgen?
Viele GrĂŒĂe@blue231181
Ich habe es zwar nicht getestet, sollte aber funktionieren.Edit:
Gerade getestet ---> funktioniert
setState("alexa2.0.Echo-Devices.G0922K062434xxxx.Commands.speak", '60; OctoPrint-Server wird gestartet.', false); // sendTo("paw.0",'Tablet_Jörg',{tts: 'OctoPrint-Server wird gestartet'});Also die "sendTo( paw.....)-Befehle auskommentieren, oder löschen und stattdessen die
entspr. Alexa-Commands.speak einfĂŒgen.
Hinweis: die 60 im Beispiel ist die LautstÀrke, mit der das Speak-Command ausgegeben wird. -
@blue231181
Ich habe es zwar nicht getestet, sollte aber funktionieren.Edit:
Gerade getestet ---> funktioniert
setState("alexa2.0.Echo-Devices.G0922K062434xxxx.Commands.speak", '60; OctoPrint-Server wird gestartet.', false); // sendTo("paw.0",'Tablet_Jörg',{tts: 'OctoPrint-Server wird gestartet'});Also die "sendTo( paw.....)-Befehle auskommentieren, oder löschen und stattdessen die
entspr. Alexa-Commands.speak einfĂŒgen.
Hinweis: die 60 im Beispiel ist die LautstĂ€rke, mit der das Speak-Command ausgegeben wird.@joergeli dankeschön im Namen der Java unwissenden đ
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden đ
Registrieren Anmelden

