[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker

Begonnen von michael.winkler, 31 Dezember 2017, 16:56:28

Vorheriges Thema - Nächstes Thema

michael.winkler

Zitat von: Fixel2012 am 13 Februar 2018, 16:51:54
Blöde Frage, aber welches event wird denn generiert, wenn ein druck fertig ist?

Bin gerade am drucken und hätte gerne, dass die Steckdose automatisch aus geht, wenn der Druck fertig ist  ;D
ok! State spring von Printing auf Operational und progress_completion auf 100. Beides kannst du verwenden um dann eine Aktion auszuführen.

Fixel2012

Zitat von: michael.winkler am 13 Februar 2018, 17:52:56
ok! State spring von Printing auf Operational und progress_completion auf 100. Beides kannst du verwenden um dann eine Aktion auszuführen.
Danke schön!

Gesendet von meinem ONEPLUS A3003 mit Tapatalk

Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

justme1968

hallo michael,

ich verwende seit ein paar tagen auch dein modul und es funktioniert sehr gut.

vielleicht kannst du zusätzlich zu state noch ein reading einbauen das den letzen zustand hat. also bevor state neu geschrieben wird den alten wert in das zusätzlich reading stecken. natürlich nur bei änderung.

das würde es einfacher machen in einem notify zu unterscheiden ob der drucker mit drucken fertig ist oder ob er nach dem einschalten gerade online gekommen ist.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

michael.winkler

Zitat von: justme1968 am 06 März 2018, 14:27:26
hallo michael,

ich verwende seit ein paar tagen auch dein modul und es funktioniert sehr gut.

vielleicht kannst du zusätzlich zu state noch ein reading einbauen das den letzen zustand hat. also bevor state neu geschrieben wird den alten wert in das zusätzlich reading stecken. natürlich nur bei änderung.

das würde es einfacher machen in einem notify zu unterscheiden ob der drucker mit drucken fertig ist oder ob er nach dem einschalten gerade online gekommen ist.

gruss
  andre
Das wäre natürlich möglich. Nur wo fängt man an und wo hört man auf!

Hilft Dir dieser Thread Eintrag eventuell weiter? https://forum.fhem.de/index.php/topic,81929.msg765968.html#msg765968

Gruß
Michael

Jam2

Vielen Dank für die Integrierung.

Beim send_gcode wird leider nur das erste Element im Array gesendet (Bspw. G28 X - wird zu G28)

Ich hab leider noch keine Ahnung von Perl und FHEM und hab daher nicht gewusst ob ich den Array anderweitig beeinflussen kann. Ich habe es so gelöst:

elsif ( lc( $a[1] ) eq "send_gcode" ) {
my $gcode = "";
foreach my $i (2 .. $#a) {
  $gcode = $gcode . $a[$i]. ' '
}
OctoPrint_SendCommand( $hash, "send_gcode", $gcode );
    }
FHEM / Intel NUC / 8xMAX Fensterkontakte + 16xMAX Thermostate + fakewt + CUL / 20x Technoline TX29 / Hue Bridge / duefern / fbdect / mysensors / homekit
RasPi ser2net CUL
FHEM / RasPi PI / buderus logamatic / temperatursensoren

michael.winkler

Zitat von: Jam2 am 11 März 2018, 22:10:40
Vielen Dank für die Integrierung.

Beim send_gcode wird leider nur das erste Element im Array gesendet (Bspw. G28 X - wird zu G28)

Ich hab leider noch keine Ahnung von Perl und FHEM und hab daher nicht gewusst ob ich den Array anderweitig beeinflussen kann. Ich habe es so gelöst:

elsif ( lc( $a[1] ) eq "send_gcode" ) {
my $gcode = "";
foreach my $i (2 .. $#a) {
  $gcode = $gcode . $a[$i]. ' '
}
OctoPrint_SendCommand( $hash, "send_gcode", $gcode );
    }


Danke für den Hinweis. Auf Seite 1 gibt es eine neue Version.

sbiermann

Kleine Fragen zu dem Modul, um zu entscheiden ob das in meinen geplanten Anwendungsfall Sinn macht oder nicht.
Ich werde meinen CR-10 Drucker mit einen neuen Pi 3B+ Modell ausstatten um dann mittels Octoprint und einer Webcam den Druck zu überwachen. Beide Geräte kommen beide an eine SonOff S20 Funksteckdose, das heißt beide Geräte sind in der Regel aus, nur wenn ich drucken will schalte ich mittels FHEM die Steckdose ein und beide Geräte fahren hoch.
Wenn ich nun das Modul nutze und der Dauerzustand des Octoprint Pi ist nicht erreichbar, bekomme ich da Performance Issues in FHEM? Sprich blockiert FHEM? Wird das Log geflutet mit nicht Erreichbarkeitsmeldungen? Reconnect klappt dann auch?

michael.winkler

Zitat von: sbiermann am 20 März 2018, 10:47:41
Kleine Fragen zu dem Modul, um zu entscheiden ob das in meinen geplanten Anwendungsfall Sinn macht oder nicht.
Ich werde meinen CR-10 Drucker mit einen neuen Pi 3B+ Modell ausstatten um dann mittels Octoprint und einer Webcam den Druck zu überwachen. Beide Geräte kommen beide an eine SonOff S20 Funksteckdose, das heißt beide Geräte sind in der Regel aus, nur wenn ich drucken will schalte ich mittels FHEM die Steckdose ein und beide Geräte fahren hoch.
Wenn ich nun das Modul nutze und der Dauerzustand des Octoprint Pi ist nicht erreichbar, bekomme ich da Performance Issues in FHEM? Sprich blockiert FHEM? Wird das Log geflutet mit nicht Erreichbarkeitsmeldungen? Reconnect klappt dann auch?
FHEM sollte nicht blockiert werden. Es sollte auch keine Meldungen im LOG erscheinen.

Gruß
Michael

JamesB

Hallo Michael,

ich würde gerne dein tolles Modul verwenden. Bekomme aber keine korrekte Verbindung (STATE=???). Wenn ich DEF erneut aufrufe erhalten ich diesen Log:

2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_HD_SendCommand] - append to queue http://10.0.0.164:5000/api/job?&apikey=D9F0F673CEEF4FBFBF9D96C69FCF06F2
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_HD_HandleCmdQueue] - send command url  = http://10.0.0.164:5000/api/job?&apikey=D9F0F673CEEF4FBFBF9D96C69FCF06F2
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_HD_HandleCmdQueue] - send command data =
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_HD_HandleCmdQueue] - send command head = Content-Type: application/json
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_SendCommand] called function CMD = 
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_SendCommand] using unencrypted connection via HTTP
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_HD_SendCommand] - append to queue http://10.0.0.164:5000/api/printer?exclude=state,sd&apikey=D9F0F673CEEF4FBFBF9D96C69FCF06F2
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_SendCommand] called function CMD = 
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_SendCommand] using unencrypted connection via HTTP
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_HD_SendCommand] - append to queue http://10.0.0.164:5000/api/plugin/psucontrol?&apikey=D9F0F673CEEF4FBFBF9D96C69FCF06F2
2018.03.31 19:48:22 0: OctoPrint AnyCubicI3 [OctoPrint_Define] start device
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_ReceiveCommand] called function
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_ReceiveCommand] [readings_job] Data = {
  "job": {
    "averagePrintTime": null,
    "estimatedPrintTime": null,
    "filament": null,
    "file": {
      "date": 1522516336,
      "display": "2 x side.gcode",
      "name": "2_x_side.gcode",
      "origin": "local",
      "path": "2_x_side.gcode",
      "size": 4873708
    },
    "lastPrintTime": null
  },
  "progress": {
    "completion": 33.47857524496749,
    "filepos": 1631648,
    "printTime": 2136,
    "printTimeLeft": 2799,
    "printTimeLeftOrigin": "estimate"
  },
  "state": "Printing"
}
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_ReceiveCommand] [readings_job] JSON =
Can't use an undefined value as an ARRAY reference at ./FHEM/70_OctoPrint.pm line 424.


Ohne verbose=5 erhalte ich keine Meldung. Kannst du mir einen Tipp geben? JSON liefert zumindest ein Ergebnis.

Gruß Frank
ESXi - Debian / 2 x Raspberry PI 3 / CUNX / KS 300 / HM

michael.winkler

Zitat von: JamesB am 31 März 2018, 19:57:36
Hallo Michael,

ich würde gerne dein tolles Modul verwenden. Bekomme aber keine korrekte Verbindung (STATE=???). Wenn ich DEF erneut aufrufe erhalten ich diesen Log:

2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_HD_SendCommand] - append to queue http://10.0.0.164:5000/api/job?&apikey=D9F0F673CEEF4FBFBF9D96C69FCF06F2
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_HD_HandleCmdQueue] - send command url  = http://10.0.0.164:5000/api/job?&apikey=D9F0F673CEEF4FBFBF9D96C69FCF06F2
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_HD_HandleCmdQueue] - send command data =
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_HD_HandleCmdQueue] - send command head = Content-Type: application/json
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_SendCommand] called function CMD = 
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_SendCommand] using unencrypted connection via HTTP
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_HD_SendCommand] - append to queue http://10.0.0.164:5000/api/printer?exclude=state,sd&apikey=D9F0F673CEEF4FBFBF9D96C69FCF06F2
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_SendCommand] called function CMD = 
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_SendCommand] using unencrypted connection via HTTP
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_HD_SendCommand] - append to queue http://10.0.0.164:5000/api/plugin/psucontrol?&apikey=D9F0F673CEEF4FBFBF9D96C69FCF06F2
2018.03.31 19:48:22 0: OctoPrint AnyCubicI3 [OctoPrint_Define] start device
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_ReceiveCommand] called function
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_ReceiveCommand] [readings_job] Data = {
  "job": {
    "averagePrintTime": null,
    "estimatedPrintTime": null,
    "filament": null,
    "file": {
      "date": 1522516336,
      "display": "2 x side.gcode",
      "name": "2_x_side.gcode",
      "origin": "local",
      "path": "2_x_side.gcode",
      "size": 4873708
    },
    "lastPrintTime": null
  },
  "progress": {
    "completion": 33.47857524496749,
    "filepos": 1631648,
    "printTime": 2136,
    "printTimeLeft": 2799,
    "printTimeLeftOrigin": "estimate"
  },
  "state": "Printing"
}
2018.03.31 19:48:22 5: OctoPrint AnyCubicI3 [OctoPrint_ReceiveCommand] [readings_job] JSON =
Can't use an undefined value as an ARRAY reference at ./FHEM/70_OctoPrint.pm line 424.


Ohne verbose=5 erhalte ich keine Meldung. Kannst du mir einen Tipp geben? JSON liefert zumindest ein Ergebnis.

Gruß Frank
Hi Frank,

das LOG sieht komisch aus. Eigentlich erhält FHEM die Daten, kann Sie aber dann nicht ins richtige Format umwandeln. Ist dein FHEM Server aktuell? Kannst Du mir noch ein "list" von deinem Drucker zuschicken?

JamesB

Gerne:

Internals:
CHANGED
DEF 10.0.0.164 5000
INTERVAL 45
NAME AnyCubicI3
NR 211
STATE ???
TYPE OctoPrint
READINGS:
helper:
ADDRESS 10.0.0.164
PORT 5000
RUNNING_REQUEST 0
CMD_QUEUE:
Attributes:
apikey D9F0F673CEEF4FBFBF9D96C69FCF06F2
icon it_printer
plugin_psucontrol 1
room 1.3 Haus
verbose 0


FFHEM sollte halbwegs aktuell sein: Version 16478
Ich verwende VMs und hab auf 2 Instanzen getestet.
ESXi - Debian / 2 x Raspberry PI 3 / CUNX / KS 300 / HM

michael.winkler

Zitat von: JamesB am 03 April 2018, 09:12:00
Gerne:

Internals:
CHANGED
DEF 10.0.0.164 5000
INTERVAL 45
NAME AnyCubicI3
NR 211
STATE ???
TYPE OctoPrint
READINGS:
helper:
ADDRESS 10.0.0.164
PORT 5000
RUNNING_REQUEST 0
CMD_QUEUE:
Attributes:
apikey D9F0F673CEEF4FBFBF9D96C69FCF06F2
icon it_printer
plugin_psucontrol 1
room 1.3 Haus
verbose 0


FFHEM sollte halbwegs aktuell sein: Version 16478
Ich verwende VMs und hab auf 2 Instanzen getestet.
Dein OctoPrint scheint auf Port 5000 zu laufen. Gibt es hierfür einen Grund? Welche Version setzt Du als OctoPrint ein?

JamesB

Habe diese Anleitung von Matthias Kleine verwendet:

https://haus-automatisierung.com/projekt/2018/02/28/projekt-octoprint-3d-druck.html

Wobei mir nicht klar ist wo der Unterschied zwischen Port 80 und 5000 sein sollte.

Was fehlt dem JSON String?

ESXi - Debian / 2 x Raspberry PI 3 / CUNX / KS 300 / HM

hanswerner1

Hallo,

ich versuche mit: set Octoprint send_gcode M280 P0 S0

Das Licht an meinen Drucker einzuschalten. Leider funktioniert das nicht.
Ich habe am Servoausgang die Lichtsteuerung und mit M280 P0 S0 schalte ich diesen Servoausgang.

Laut Log wird wohl nur M280 gesendet.

OctoPrint Octoprint [OctoPrint_HD_HandleCmdQueue] - send command data = {"command": "M280"}

michael.winkler

Zitat von: JamesB am 03 April 2018, 11:39:06
Habe diese Anleitung von Matthias Kleine verwendet:

https://haus-automatisierung.com/projekt/2018/02/28/projekt-octoprint-3d-druck.html

Wobei mir nicht klar ist wo der Unterschied zwischen Port 80 und 5000 sein sollte.

Was fehlt dem JSON String?
Stell doch das Modul mal auf Port 80 um, und versuch es dann noch mal.