3D-Drucker nach dem Druck ausschalten

Begonnen von jay-jey, 13 November 2018, 11:27:16

Vorheriges Thema - Nächstes Thema

Karsiacar

Hallo,

müsste das Thema nochmal ansprechen und bräuchte für mein Teilerfolg noch den passenden Abschluss.
Das Problem:
([MQTT2_DVES_3755C6:POWER] eq "on" and [OctoRasPi:presence] eq "absent") (set MQTT2_DVES_3755C6 off)

funktioniert. Leider schaltet der Drucker jetzt auch beim anschalten aus, weil die Bedingungen ja am Anfang gegeben sind und der Pi eine weile brauch bis er gebootet hat.
Hab schon mehrere Versuche mit notify und doif durch. Das Problem beim Anschalten bleibt.
Und wenn ich das richtig verstanden hab, soll der Drucker durch attr absenceThreshold "4" abkühlen bzw. durch nicht ankommen des Ping´s, warten bis er abschaltet. Hat er jetzt so auch nicht. Hat früher aus geschaltet.
Hat da jemand eine Lösung oder vielleicht n ganz anderen Ansatz?

defmod OctoRasPi PRESENCE lan-ping 192.168.178.57 10
attr OctoRasPi absenceThreshold 4
attr OctoRasPi devStateIcon ONLINE:WLAN_Status.1 OFFLINE:WLAN_Status.0
attr OctoRasPi eventMap present:ONLINE absent:OFFLINE

setstate OctoRasPi OFFLINE
setstate OctoRasPi 2020-04-08 16:19:07 .absenceThresholdCounter 3
setstate OctoRasPi 2020-04-08 16:19:07 .presenceThresholdCounter 0
setstate OctoRasPi 2020-04-08 15:00:50 model lan-ping
setstate OctoRasPi 2020-04-08 16:19:07 presence absent
setstate OctoRasPi 2020-04-08 16:19:07 state absent


defmod OctoRasPI_doif DOIF ([MQTT2_DVES_3755C6:POWER] eq "on" and [OctoRasPi:presence] eq "absent") (set MQTT2_DVES_3755C6 off)
attr OctoRasPI_doif wait 30

setstate OctoRasPI_doif cmd_2
setstate OctoRasPI_doif 2020-04-08 16:20:14 Device OctoRasPi
setstate OctoRasPI_doif 2020-04-08 16:13:52 cmd 2
setstate OctoRasPI_doif 2020-04-08 16:13:52 cmd_event MQTT2_DVES_3755C6
setstate OctoRasPI_doif 2020-04-08 16:13:52 cmd_nr 2
setstate OctoRasPI_doif 2020-04-08 16:13:52 e_MQTT2_DVES_3755C6_POWER off
setstate OctoRasPI_doif 2020-04-08 16:20:14 e_OctoRasPi_presence absent
setstate OctoRasPI_doif 2020-04-08 15:54:04 mode enabled
setstate OctoRasPI_doif 2020-04-08 16:13:52 state cmd_2
setstate OctoRasPI_doif 2020-04-08 16:13:52 wait_timer no timer


Wenn jetzt das Ping-Interval von 10sec. zu kurt für den Boot des Pi´s ist und ich sie erhöhe, Schaltet dann der POW bzw. das doif den Drucker jetzt nur evtl. später aus? Vielleicht sogar während des Drucks? Danke schon mal an euch!

Beste Grüße

Gasmast3r

Hy wird der PI mit abgeschaltet oder läuft der 24/7?

([Anet:progress_completion] eq "100") (set Anet_A8 off;set teleBot message @ XXXXXX Druck Fertig)

Mein Pi bleibt halt dauerhaft an.

Gesendet mit Tapatalk


Karsiacar

Hi,

danke für die Antwort!
Ich fahre den Pi per das Automatic- Shutdown runter.
Dein Vorschlag ([Anet:progress_completion] eq "100") zu verwenden, ist mir auch schon gekommen. Leider ist da auch das gleiche Problem. Beim booten des Pi steht das Reading progress_completion-Wert ja noch auf 100. Was wieder das abschalten triggert. Genau hier liegt der Knoten - bei allen Readings von octoprint oder auch dem POW. Keine Ahnung welche Bedingung ich setzen könnte, die sich bei Neustart geändert hat.

Gasmast3r

Hy naja beim Stromverbrauch eines Pi lass ihn doch einfach laufen.
Oder versuch es doch einfach per anwesenheits steuerung die kannst du ja passen triggern und dann eine abschalt Kombination.
([NUC] eq "present") (set GHoma_d34588 on) DOELSE (set GHoma_d34588 off)

Wenn ich mich nicht täusche kann octoprint sich nach dem druck selber herunterfahren oder plugin[emoji848].


Gesendet mit Tapatalk


Karsiacar

Hi,

genau so ist mein letzter Stand. Per Plugin octopi runter fahren. Dann 
([MQTT2_DVES_3755C6:POWER] eq "on" and [OctoRasPi:presence] eq "absent") (set Pushbullet message 3dDrucker ist abgeschaltet | fhem) (set MQTT2_DVES_3755C6 off)
Das Problem ist, dass meine Bedingungen auch beim Start des Pi´s zutreffen.

Gasmast3r

Mach mal ein? Bei dem POW ins doif
   
([?Lichtsteuerung:light] < 5 and dann wird der POW nicht direkt getriggert.
Da deine abfrage triggert sobald der POW an ist.

Gesendet mit Tapatalk


Karsiacar

#21
Hab jetzt mal attr OctoRasPI_doif wait 30 auf 180 gestellt. Funktioniert jetzt. Hier wartet wohl das "ganze" DOIF bis es anfängt zu arbeiten. Also ist genug Zeit für den Octopiboot und online zu gehen.
Leider hab ich deinen Vorschlag nicht getestet - bewirkt aber das gleiche? Also die Triggerverzögerung?
Dank!

Bleib gesund und munter
Karsten

Gasmast3r

Nein das? Bewirkt eigendlich nur das er zwar auf das on triggert aber nur in Kombination mit nem anderen wert Arbeitet

([?Lichtsteuerung:light] < 5 and [ESPEasy_Sonoff7_PUMP:Relay]eq "on") (set HUEDevice45 on)
Bewirkt eigendlich nur das wenn relay on ist und Licht <5 wird, HUEDevice45 nicht schaltet sondern nur wenn  licht <5 ist umd dann Relay an geht mein HUEDevice45 geschaltet wird.

Gesendet mit Tapatalk


Karsiacar

Ah ok. Versuch ich die Tage mal. Danke Dir nochmal!

Nogga

...nur weil ich den Beitrag per Zufall gesehen habe und mein Drucker ebenfalls an OctoPrint und an einer Schalt-Steckdose (per MQTT) hängt...
Mein Code ist wie folgt und sollte itnerpretierbar sein:

defmod Doif_Auto_3D_Drucker_Abschalten DOIF (\
[MQTT2_Gosund_P1_002_Chan01:ENERGY_Power] < 15 \
&& (\
[MQTT2_Gosund_P1_002_Chan01:state] eq 'on' \
|| [MQTT2_Gosund_P1_002_Chan01:state] eq 'set_on'\
)\
&& [OctoPrint:progress_completion] == 100\
)\
(\
## 3D Drucker\
set pushmsg msg device='AlexPhone11' message='3D Drucker wird in 5 Minuten ausgeschalten!' expire=3600 url_title='Ausschalten abbrechen' action='http://fhem-vm-prod:8083/fhem?cmd=delete%20At_OctoPrint_off%3Bdelete%20At_3D_Drucker_off&XHR=1',\
defmod At_OctoPrint_off at +00:03:00 qx("ssh poweroff\@OctoPrint sudo systemctl poweroff"),\
defmod At_3D_Drucker_off at +00:07:00 set MQTT2_Gosund_P1_002_Chan01 off,\
)\
DOELSE\
(\
)
attr Doif_Auto_3D_Drucker_Abschalten cmdIcon cmd_1:control_on_off enable:general_an disable:general_aus
attr Doif_Auto_3D_Drucker_Abschalten group Automatisch
attr Doif_Auto_3D_Drucker_Abschalten room Automatisierung,Steuerung
attr Doif_Auto_3D_Drucker_Abschalten wait 300
attr Doif_Auto_3D_Drucker_Abschalten webCmd cmd_1:enable:disable


In Prosa:

- Ich schaue, ob der Stromverbrauch <25 Watt ist (dann heizt/druckt er nicht) und natürlich ob die Steckdose an ist.
- Gleichzeitig habe ich OctoPrint eingebunden und reagiere auf einen fertig Druck (100%)
- Wenn das so ist erstelle ich zwei ATs --> das erste um den Raspi runterzufahren und zeitverzögert schalte ich die Steckdose aus.
- Zuletzt schicke ich mir vorab noch eine Push-Message in der ein Link ist um das Ganze abzubrechen (z.B. wegen einem Folgedruck, o.ä.)

Für den Remote-Shutdown des Raspi habe ich auch noch ein cmd-alias (inklusive Comments auf die ursprünglichen quellen zum Einrichten...):

defmod Command_shutdown_octoprint cmdalias shutdown_octoprint AS {\
qx("ssh poweroff\@OctoPrint sudo systemctl poweroff");;\
Log 1, "OctoPrint RPI wird runtergefahren";;\
defmod At_3D_Drucker_off at +00:01:00 set MQTT2_Gosund_P1_002_Chan01 off,\
Log 1, "3D Drucker ausgeschaltet";;\
}
attr Command_shutdown_octoprint comment https://www.linuxfun.de/homeautomation/fhem/ssh-befehle-auf-anderen-rechnern-mit-fhem-ausfuehren/\
http://www.sven-kuegler.de/ubuntu/befehl-als-anderer-benutzer-ausfuehren
attr Command_shutdown_octoprint group Commands
attr Command_shutdown_octoprint room System

Icinger

Muss der Drucker zwingend über FHEM geschaltet werden?
Andernfalls kannst du ja das PSU-Plugin nehmen. Das kann Systembefehle absetzen, MQTT (und div. andere) Kommandos senden etc.

Bei mir ists zB so, dass ich 2 OctoInstanzen auf einem Pi habe.
In beiden Instanzen ist der jeweilige Sonoff als MQTT angegeben.
Somit schaltet sich der jeweilige Drucker 15 Minuten nach Druckende automatisch aus.
Octoprint ist weiterhin erreichbar. Und wenn ich einen neuen Druck starte, schaltet das Plugin von selbst den Strom für den Drucker wieder an.

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Nogga

Bei mir hängt der Pi zusammen am Drucker. D.h. wenn ich etwas drucken möchte dann schalte ich einmal die Dose an, warte 90 Sekunden auf den RPI-Boot und lege dann los. Danach geht alles wieder aus.
Deine Variante ist natürlich auch möglich und ist dann [RPI] always on...