Befehl ausführen (Drucker ausschalten) nach Idle-Zeit X Minuten

2»

Comments

  • Dann mach ich gleich mal wieder ein Update und berichte :) Danke für die stehts schnelle Reaktion und Umsetzung immer, echt super Support :)
  • edited May 2020
    So, ich hab das Update nun drauf.

    Webactions kann ich nun ganz normal anlegen und aus dem Webactions-Bereich auch triggern. Ich kann die Drucker auch ein-/ausschalten über das Dropdown-Menü im jeweiligen Druckermenü.

    Was jedoch nicht funktioniert, ist, diese Events über Gcode zu triggern.

    Laut der Webactions Maske sollte ich z.b. das ausschalten mit ";@webAction i3plus_off" triggern. Da passiert aber nichts. Nach dem entfernen des Semikolon funktioniert es auch nicht. An funktioniert über Gcode demnach auch nicht.

    Ich hab, was das gcode triggern betrifft, jetzt erst einmal wieder die externe @execute Variante am laufen.

  • Aber web action über menu triggern klappt? Wäre echt merkwürdig weil es ja die gleiche Funktion ist die es auslöst und bei mir klappt es auch mit ;@webAction - werds mir noch mal ansehen aber wie gesagt hat funktioniert sobald es im menü auch klappte. Machmal dauert es allerdings eine weile wen IFTTT etwas hinterher hinkt.
  • Über das Webactions Menü bzw. den Ausführen Button klappt es, genauso über die im Druckermenü hinterlegten neuen Einträge. Nur eben über die Konsole mit dem ;@webAction Befehl nicht Ich hab es heute noch mal probiert, das Fehlerbild bleibt gleich. @execute zündet direkt.
  • Das macht mich jetzt verrückt. Hab jetzt noch mal auf einem pi getestet und auch dort hat es geklappt. Hab sogar eine webAktion mit dem Namen ;@webAction i3plus_off erzeugt. Dann hab ich gedacht wenn da aus versehen ein Leerzeichen drin wäre würde es nicht funktionieren. Aber sowohl chrome als auch firefox haben die Leerzeichen schon beim senden entfernt. Welchen Browser nutzt du? Und ist im Namen zufällig ein Leerzeichen?

    Ansonsten kannst du mir ein Screenshot der Einstellung schicken? Muss doch rauszubekommen sein warum das bei dir nicht klappt. Ist ja beides die gleiche ausführende Funktion. Du kannst den Befehl ja sogar an einen anderen Drucker senden.
  • edited May 2020
    Klar, hier mal die Screenshots:
    https://www.directupload.net/file/d/5824/vtm7v926_png.htm

    Als Browser benutze ich Chrome und mit der @execute Lösung funktioniert es. Alternativ mit FireFox probiert, gleiches Problem.

    Leerzeichen sind keine drin und beide Drucker mit insgesamt 4 Zuständen (je 1x on/off pro drucker) reagieren nicht auf die Webactions.

  • Ok, da sieht alles richtig aus. Hab noch eine neue Version gemacht die explizit die spaces abfängt und zusätzlich in server.log schreibt ob der Aufruf Fehlerhaft war oder nicht und warum er nicht funktioniert hat. Das server.log kannst du mittlerweile in der Druckeransicht unter logs herunterladen. Ich denke nur mit der Ausgabe aus dem Log kommen wir der Ursache bei dir auf die spur.
  • edited May 2020
    Anscheinend hatte ich diese Version schon, da ich nicht updaten konnte :D Die server.log kann ich nämlich schon runterladen.

    Folgendes steht in der Log:
    2020-05-20 14:55:12: Client closed connection unexpectedly
    2020-05-20 15:00:15: Websocket opened
    2020-05-20 15:30:21: Websocket opened
    2020-05-20 15:30:29: Executed webAction i3plus_on
    2020-05-20 15:30:33: Connection started: Wanhao i3 Plus
    2020-05-20 15:30:33: Reset printer Wanhao i3 Plus
    2020-05-20 15:32:47: error:~RequestContext:Assertion violation
    2020-05-20 15:33:16: Executed webAction i3plus_on
    2020-05-20 15:33:53: unknown escape sequence
    2020-05-20 15:34:02: error:~RequestContext:Assertion violation
    2020-05-20 15:34:24: unknown escape sequence
    2020-05-20 15:34:25: unknown escape sequence
    2020-05-20 15:34:26: unknown escape sequence
    2020-05-20 15:34:41: error:~RequestContext:Assertion violation
    2020-05-20 15:36:00: Executed webAction i3plus_off
    2020-05-20 15:36:02: error: Reading serial conection failed: End of file. Closing connection.
    2020-05-20 15:36:02: Port closed for Wanhao i3 Plus
    2020-05-20 15:36:02: Connection closed: Wanhao i3 Plus
    2020-05-20 15:36:06: Executed webAction i3plus_on
    2020-05-20 15:36:08: Connection started: Wanhao i3 Plus
    2020-05-20 15:36:08: Reset printer Wanhao i3 Plus
    2020-05-20 15:36:31: unknown escape sequence
    2020-05-20 15:36:32: unknown escape sequence
    2020-05-20 15:36:40: error: Reading serial conection failed: End of file. Closing connection.
    2020-05-20 15:36:40: Port closed for Wanhao i3 Plus
    2020-05-20 15:36:40: Connection closed: Wanhao i3 Plus

    Dabei ist das Executed Webaction immer über das Dropdownmenü ausgeführt. Wenn ich es über die Konsole machen möchte, kommen diese unknown escape sequence fehler als auch dieser RequestContect error.

    Ich hab ihn also mal an gemacht, dann 2-3x versucht über den Webaction Befehl in der Konsole auszuschalten. Dann kamen diese unknown escape sequence Fehler. Anschließend über das Dropdown wieder ausgeschaltet, danach über das Dropdown wieder an und noch 2x über die Konsole probiert.
  • Server log runterladen ging ja auch vorher. Es ging mir um die erweiterten Fehlerausgaben ins server.log die ich hinzugefügt habe. Ich hab sie jetzt noch weiter erweitert.

    Das merkwürdige ist das im ganzen Quellcode der Text "unknown escape sequence" nicht vorkommt. Muss also aus eine Fehlermeldung stammen die vom Betriebssystem oder einer externen Bibliothek kommt. Die einzige escape sequence die ich bei dir sehe ist aber %20. Hab sogar mal deinen Link versucht, hat ihn nicht gestört aber bekomme natürlich status 400 - host existiert nicht:-) %20 in einem anderen Link stört aber auch nicht.

    Kannst du es bitte noch mal mit neuer version testen. Du solltest jetzt immer eine Meldung bekommen - entweder 

    "Executed webAction.." oder "Execution of webAction..." oder "No valid webAction with name..." oder "error: running webaction ...."

    Damit wissen wir dann auch der die Aktion ausgeführt wurde.

    Ich führe sie immer manuell in der Konsole aus.

  • edited May 2020
    Okay. Ja wie erwähnt, lies sich das letzte Update nicht installieren daher dachte ich, ich hab diese bereits drauf. Es kam immer die Meldung ich hätte schon die neueste Version, nicht mal mit dem -f Parameter ging es. Das ganz frische jetzt konnte ich wieder installieren.

    Als Basis hab ich übrigens das PI-Image von der Seite genommen. Dies hab ich ja erst vor 2 Wochen installiert, keine weiteren Updates oder Tools installiert. Das ist also ziemlich jungfräulich.

    Nach dem neuen Update sieht es im server.log aber nicht anders aus:
    2020-05-21 13:32:31: Websocket opened
    2020-05-21 13:32:36: Executed webAction i3plus_on
    2020-05-21 13:32:38: Connection started: Wanhao i3 Plus
    2020-05-21 13:32:38: Reset printer Wanhao i3 Plus
    2020-05-21 13:32:53: Executed webAction i3plus_off
    2020-05-21 13:32:55: error: Reading serial conection failed: End of file. Closing connection.
    2020-05-21 13:32:55: Port closed for Wanhao i3 Plus
    2020-05-21 13:32:55: Connection closed: Wanhao i3 Plus
    2020-05-21 13:32:57: Executed webAction i3plus_on
    2020-05-21 13:32:59: Connection started: Wanhao i3 Plus
    2020-05-21 13:32:59: Reset printer Wanhao i3 Plus
    2020-05-21 13:33:08: unknown escape sequence

    Szenario:
    An über Dropdown
    Aus über Dropdown
    AN über Dropdown
    ;@webAction i3plus_off über Druckerkonsole

    Vielleicht doch irgendwas externes, eine veraltete Komponente? Ich werde mal das Image updaten und berichte erneut. Wenn ich den Fehler "error:~RequestContext:Assertion violation" google, der auch immer wieder vorkommt, scheint das irgendwie mit Apache/Chromium/Java etc. zusammenzuhängen.

    Nachtrag:
    auch ein Update mit apt-get update und apt-get upgrade ändert nichts.
  • Izzy said:
    ... Ich kann die Drucker auch ein-/ausschalten über das Dropdown-Menü im jeweiligen Druckermenü.

    ..
    ich habe es bisher geschafft, den/die drucker per knopf aus dem hauptmenü ein bzw auszuschalten, nur wie bekomme ich ein dropdown menü im jeweiligen druckermenü hin?
    lg
    volker

  • Ganz einfach. Aus der Anleitung:
    Commands are normally visible in the global menu. If you want one to appear only in
    	     in the printer menu, add the attribute "slug" with the slugname as value to command tag
           where it should show up. You see the slugname when you select a printer as part of the path.
        -->
    	<command icon="">
    		<name>Shutdown Server</name>

    also einfach <command slug="druckerslug" ....
    slug ist der Name in der Url den due siehst wenn du zu dem Drucker wechselt. Wird überall im server als Referenz verwendet.
  • Hallo,
    ich blicke da irgendwie nicht durch. Hab mir eine Wifi Steckdose mit Tasmota Firmware gekauft, da meine alten nicht mehr übers Internet schaltbar waren.
    Hab daran mein Drucker angesteckt. Ein und ausschalten manuell klappt ja, aber ich möchte es gern das wie hier auch beschrieben der Drucker nach beenden des Druckes und abkühlen des Hotends runter fährt und die Steckdose auf Aus schaltet.
    Was trage ich wo ein? 
    Z.B unter G Codes, Ereignisabhängig, Drucker herunter fahren?
    Was kommt am Ende in den G Code selbst?
    Muss ich was auf der SD Karte von Raspi selbst noch ändern? 
    Ich hab keine Ahnung wie der Befehl zum Schalten der Steckdose selbst aussieht. Das funktioniert über einen Browser oder die Tasmota App.


    Eine Anleitung Schritt für Schritt wäre echt klasse.
  • Da es ein Web Aufruf ist solltest du das unter den Webaktionen eintragen. Dann hast du schon mal einen Menüeintrag zum Testen ob die URL mit Daten korrekt war. Die URLs hängen von der Steckdose etc ab, da kann ich kein universelles Tutorial bieten. Zu den Webaktionen im Allgemeinen gibt eins in den FAQ.
    Wenn es da eine App gibt öffne sie und aktiviere chrome debug tools und dann Netzwerk. Wenn du eine Aktion ausführst siehst du die Daten die gesendet wurden und ob das per GET/POST/PUT gesendet wurde. Das sind die URLs und daten die du in die Webaktion einfügen musst. Ich hoffe das da keine Authorisierung drin ist, also immer der gleiche API-Key oder so verwendet wird.

    Wenn der Webaufruf klappt steht da in der Konfiguration ja auch ein server Befehl der ihn ausführt. Den Kopierst du dann in die Skripte wo do sie gerne hättest, also druckende oder ausschalt skript.
  • Also wenn ich über Chrome Schalte dann sehe ich folgende Zeile mit der ich die Steckdose schalten kann
    http://192.168.178.58/?m=1&o=1
    Das klappt über den Browser im Heimnetz, wobei ich nix ändern muß um es ein und auszuschalten, ist immer die gleiche Zeile.
    Füge ich diese in Globale Einstellungen, Web Aktionen , hinzufügen in URL ein mit Sendemethode Get passiert nix.
    Füge ich die Zeile weiter oben in Icon URL ein, dann schaltet sich die Steckdose aus ohne das ich was gemacht habe.
    Das passiert auch immer wieder bis ich den Befehl da wieder raus nehme.
    Was ist da falsch?
    Noch was anderes, mein Raspberry mit dem Repetierserver ist im Drucker verbaut und bezieht auch darüber sein Strom, das heißt wenn der Befehl zum ausschalten kommt wird der Raspi mit ausgeschaltet, dann ist natürlich der Server noch nicht heruntergefahren, da müsste eine Idee her wie vielleicht eine Minute Zeitverzögerung für die Steckdose.
     
     
  • Was ist wenn du in chrome im incognito modus den link sendest? Ich fürchte du hast irgendwie dich authentifiziert und er nutzt ein cookie. Hast du mal gegoogelt ob es dazu eine AP beschreibung gibt?

    Das mit dem eingebauten Pi ist am Drucker eher nicht zu lösen. Du musst den Rechner ja sauber herunter fahren. Und wenn das passiert ist kannst du natürlich nichts mehr senden. Wenn also die Steckdose keine Verzögerung unterstützt kannst du nur ein anderes Skript auf einem andere Rechner triggern der dann mit verzögerung die Steckdose abschaltet.
  • Der Link funktioniert auch im inkognito Modus, also passt das wohl. Klar unterstützt Tasmota auch eine Zeitplanung, es müsste doch Theoretisch möglich sein diese auch über ein Befehl zu aktivieren mit einer Minute zusätzlich zur aktuellen Zeit.
    Das der Pi oder ein Rechner danach ständig weiter läuft ist ja eigentlich unnötig. Ich drucke ab und an was, da macht es keinen Sinn das da ein Pi oder PC 24/7 laufen.
    Wo soll denn nun die Zeile hin? Bei Icon URL läuft der Befehl direkt los und schaltet die Steckdose ab
  • >  Bei Icon URL läuft der Befehl direkt los und schaltet die Steckdose ab
    Demnach klappt es jetzt auch vom server aus?

    > . Klar unterstützt Tasmota auch eine Zeitplanung, es müsste doch Theoretisch möglich sein diese auch über ein Befehl zu aktivieren mit einer Minute zusätzlich zur aktuellen Zeit.
    Wie läuft die - kannst du so was delay=60 einfügen? Wie die uhr der Steckdose geht ist ja nicht bekannt und rechnen kann man nicht bei dem Befehl.

    Ich würde den Code beim Ereignis Drucker herunterfahren einbauen direkt for @shutdown aber er muss halt die Verzögerung als parameter haben sonst ist shutdown vermutlich noch nicht fertig. So kannst du dann beim Druck entscheiden ob er herunterfahren soll oder nicht weil du noch was hinterher drucken willst. Pass aber auf - es gibt noch eine idle Einstellung die den Drucker auch runter fahren kann wenn du die aktiviert hast. Nutzt das gleiche Skript.
Sign In or Register to comment.