NEWS
Gerät anhand der Leistung ausschalten
-
Hallo Zusammen,
ich möchte gerne meinen 3d-Drucker abschalten, wenn er den Druck fertig gestellt hat. Manche drucke dauern ja Stunden und die starte ich dann vor der Arbeit/ins Bett gehen. Wenn der Drucker fertig ist ist er manchmal noch Stunden im Leerlauf, das möchte ich verhindern.
Also habe ich einen Meross-Steckdosenadapter verbaut, der die Leistung messen kann. Im Ruhezustand hat der Drucker ~12W, jeder Wert darüber ist also noch Betrieb. Allerdings braucht er relativ wenig Leistung, wenn das Heizbett/Heizpatrone mal ihre Temperatur erreicht haben. Und wenn dann mal kurzzeitig der wert <14 erreicht wird, schaltet die Steckdose sofort ab. Ich hatte dann gedacht, dass wenn der 3x prüfen muss, mit einer Verzögerung von jeweils 30s, ob die Leistung unter 15ist, sollte er den Ruhezustand erkennen können. Allerdings funktioniert das nicht, manchmal wird er nach dem einschalten sofort wieder ausgeschaltet, keine Ahnung warum.Ich dachte jedenfalls, dass 3x die Bedingung erfüllt sein muss, bevor er effektiv ausgeschaltet wird. Natürlich kann es zufällig vorkommen, dass exakt 3x hintereinander das Phänomen "wenig Leistung" eintreten kann, wird aber sehr unwahrscheinlich. Daher gehe ich davon aus, dass meine Verknüpfung logisch betrachtet falsch umgesetzt wurde.
-
@gintonik sagte in Gerät anhand der Leistung ausschalten:
Daher gehe ich davon aus, dass meine Verknüpfung logisch betrachtet falsch umgesetzt wurde.
Die Logik ist an mehreren Stellen falsch:
- Der Baustein
Wert
beinhaltet den Wert der den Trigger ausgelöst hat. Dementsprechend ändert sich der Wert zwischen den pausen nicht. - Der Trigger wird mehrfach aufgerufen - bei jeder Änderung des State erneut, und dann in 1.5 Minuten abgearbeitet. Das bedeutet das das Konstrukt auch dann nicht gehen würde wenn der korrekte Wert des Datenpunktes abgefragt wird.
Die eigentliche Lösung ist viel einfacher:
In deinem Trigger machst du:
falls Wert >= 14 mache
Anhalten Timeout
sonst falls nicht Timeout mache
Ausführen Timeout in 90 Sekunden
Innerhalb des Timeout dann diese 2 Aktionen:
Steuere An mit falsch
setze Timeout = null
Damit wird verifiziert das die Leistung für 90 sekunden unterhalb von 14 sein muss bevor der Drucker abgeschaltet wird.
A.
- Der Baustein
-
@gintonik Du verwendest nicht zufällig OctoPrint? https://octoprint.org/
Zum einen gibt es für OctoPrint plugins die das selbst machen, zum anderen einen ioBroker Adapter dafür über den du den Druckstatus überwachen kannst.
OctoPrint kann z.B. auch eine Nachricht versenden wenn der Druck fertig ist:
Ich nutze es hauptsächlich weil ich die Druckaufträge so im Webbrowser hochladen und überwachen kann. Die Tasten am Drucker habe ich seit dem quasi gar nicht mehr genutzt.
Es gibt auch mechanische Lösung die abschalten wenn der Drucker am Ende in Parkposition fährt ...
-
@bananajoe said in Gerät anhand der Leistung ausschalten:
@gintonik Du verwendest nicht zufällig OctoPrint? https://octoprint.org/
Zum einen gibt es für OctoPrint plugins die das selbst machen, zum anderen einen ioBroker Adapter dafür über den du den Druckstatus überwachen kannst.
OctoPrint kann z.B. auch eine Nachricht versenden wenn der Druck fertig ist:
Ich nutze es hauptsächlich weil ich die Druckaufträge so im Webbrowser hochladen und überwachen kann. Die Tasten am Drucker habe ich seit dem quasi gar nicht mehr genutzt.
Es gibt auch mechanische Lösung die abschalten wenn der Drucker am Ende in Parkposition fährt ...
Mein Drucker läuft nicht mit Octoprint sondern mit der eingebauten Steuerung. Ich rufe meinen G-Code immer von der SD-Karte ab. Für Octoprint müsste mindestens ein ESP bzw. Raspi eingebunden sein, und halte ich in meinem Fall für unpraktisch, da ich persönlich keinen Mehrwert im Octoprint gesehen habe. Die Parkposition abzufragen ist auch clever, allerdings wird auch hier wieder ein ESP benötigt, der den Impuls auswertet. Genau deswegen wollte ich meine olle Cloud-China-Büchse namens Meross verwenden, da die sonst außer Weihnachtsbeleuchtung keinen Einsatzweck mehr hat.
-
@asgothian said in Gerät anhand der Leistung ausschalten:
@gintonik sagte in Gerät anhand der Leistung ausschalten:
Daher gehe ich davon aus, dass meine Verknüpfung logisch betrachtet falsch umgesetzt wurde.
Die Logik ist an mehreren Stellen falsch:
- Der Baustein
Wert
beinhaltet den Wert der den Trigger ausgelöst hat. Dementsprechend ändert sich der Wert zwischen den pausen nicht. - Der Trigger wird mehrfach aufgerufen - bei jeder Änderung des State erneut, und dann in 1.5 Minuten abgearbeitet. Das bedeutet das das Konstrukt auch dann nicht gehen würde wenn der korrekte Wert des Datenpunktes abgefragt wird.
Die eigentliche Lösung ist viel einfacher:
In deinem Trigger machst du:
falls Wert >= 14 mache
Anhalten Timeout
sonst falls nicht Timeout mache
Ausführen Timeout in 90 Sekunden
Innerhalb des Timeout dann diese 2 Aktionen:
Steuere An mit falsch
setze Timeout = null
Damit wird verifiziert das die Leistung für 90 sekunden unterhalb von 14 sein muss bevor der Drucker abgeschaltet wird.
A.
Keine Chance, ich komme nicht zurecht, finde keine Blöcke die deiner Beschreibung entsprechen z.B. "Anhalten Timeout".
Ich habe jetzt doch einen Post gefunden, der eine Waschmaschine ausschaltet, wenn die Leistung gesunken ist. Aber laut Post ist das eine Super Lösung, funktioinieren tut Sie bei mir nicht und ich verstehe nicht, was da überhaupt passieren soll...
Das habe ich quasi portiert aber keine Ahnung wie das überhaupt gehen soll...
- Der Baustein
-
@gintonik das sollte gehen
es funktioniert nach einem vergleichbaren Prinzip, allerdings mit 5 Minuten.
der Sonst Zweig erzeugt den Timeout wenn der Wert von >14 auf 14 oder weniger fällt.
Wenn der Timeout durchkommt, dann wird abgeschaltet
der falls Zweig bricht den Timeout ab, sofern der Wert wieder über 14 steigt.A.
p.s. der "anhalten Timeout" Baustein den ich zitiert hatte war der "stop Timeout" Baustein. Ich hatte keinen Zugriff auf Blockly um das genau zu prüfen.
-
Bei mir funktioniert die Logik nicht und ich habe einen Verdacht:
Der Trigger ist ja die Leistungsmessung. Wenn diese sich nicht verändert, und das kann ja passieren, wenn sie konstant bleibt, wird der Turnus kein zweites mal ausgeführt und somit kann keine Vergleichsmessung stattfinden, oder sehe ich das falsch?
Ich habe den Drucker eingeschaltet und das Heizbett erwärmt und 2min. später wieder deaktiviert, er bleibt trotzdem an... -
@gintonik sagte in Gerät anhand der Leistung ausschalten:
Wenn diese sich nicht verändert, und das kann ja passieren
eher genau das Gegenteil.
Die Leistung wird sich immer im Messabstand im milliWatt (oder was immer du da misst) -bereich ändern.
Außer dein Messgerät ist grobmotorisch oder falsch konfiguriertAber das kannst du ja über einen debug-Baustein feststellen oder durch loggen des Leistungs-Datenpunktes
-
@homoran said in Gerät anhand der Leistung ausschalten:
@gintonik sagte in Gerät anhand der Leistung ausschalten:
Wenn diese sich nicht verändert, und das kann ja passieren
eher genau das Gegenteil.
Die Leistung wird sich immer im Messabstand im milliWatt (oder was immer du da misst) -bereich ändern.
Außer dein Messgerät ist grobmotorisch oder falsch konfiguriertAber das kannst du ja über einen debug-Baustein feststellen oder durch loggen des Leistungs-Datenpunktes
Wie kann ich "debuggen"? Am liebsten würde ich sehen, was gerade passiert, das würde mir auch helfen, manche Abläufe zu verstehen. In Pascal hätte ich hier in 2 Minuten alles fertig, aber das ist eine andere Welt...
-
@gintonik sagte in Gerät anhand der Leistung ausschalten:
Wie kann ich "debuggen"?
@homoran sagte in Gerät anhand der Leistung ausschalten:
über einen debug-Baustein
(unter System)
-
@gintonik ich würde in jedem Falle empfehlen, den Stromverbrauch zunächst aufzuzeichnen und in grafana z.B. genau zu analysieren, damit du den Zeitpunkt "Drucker ist fertig" auch genau triffst. Das ist möglicherweise nicht immer trivial und unter Umständen auch nicht immer gleich.
-
@dan_ce said in Gerät anhand der Leistung ausschalten:
@gintonik ich würde in jedem Falle empfehlen, den Stromverbrauch zunächst aufzuzeichnen und in grafana z.B. genau zu analysieren, damit du den Zeitpunkt "Drucker ist fertig" auch genau triffst. Das ist möglicherweise nicht immer trivial und unter Umständen auch nicht immer gleich.
Ich vermute dass diese vermeintlich einfache Funktion doch etwas schwieriger ist als angenommen. Ich bin Neuling und tue mich noch etwas schwer. Ihr sagt ja dass der Block weiter oben laufen sollte, in so fern könnte mein Meross noch in die Suppe spucken. Ich werde dann mal versuchen irgendwelche Daten aufzuzeichnen, irgendwie.
-
@gintonik
Zum Aufzeichnen kannst du z.B. die InfluxDB nutzen und zum visualisieren der Werte Grafana.
Zu beiden findest du anfängerfreundliche Anleitungen, z.B. bei YouTube -
@gintonik sagte in Gerät anhand der Leistung ausschalten:
Bei mir funktioniert die Logik nicht und ich habe einen Verdacht:
Der Trigger ist ja die Leistungsmessung. Wenn diese sich nicht verändert, und das kann ja passieren, wenn sie konstant bleibt, wird der Turnus kein zweites mal ausgeführt und somit kann keine Vergleichsmessung stattfinden, oder sehe ich das falsch?
Ich habe den Drucker eingeschaltet und das Heizbett erwärmt und 2min. später wieder deaktiviert, er bleibt trotzdem an...Du hast einen Denkfehler in deiner Logik. Es findet kein Leistungsvergleich statt.
Statt dessen ist es eine reine "Event" Abarbeitung:
Fällt die Leistungsaufnahme unter 14 W wird angestossen das das Gerät in 5 Minuten ausgeschaltet wird - ohne weitere Prüfungen.
Steigt die Leistungsaufnahme über 14 W wird ein gegebenenfalls angestossenes Abschalten deaktiviert, das Gerät läuft also weiter.A