Autor Thema: [70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker  (Gelesen 9012 mal)

Offline michael.winkler

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1097
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #30 am: 13 Februar 2018, 17:52:56 »
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.

Offline Fixel2012

  • Hero Member
  • *****
  • Beiträge: 1218
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #31 am: 13 Februar 2018, 18:07:17 »
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

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17777
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #32 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
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline michael.winkler

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1097
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #33 am: 07 März 2018, 09:38:31 »
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

Offline Jam2

  • Newbie
  • Beiträge: 1
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #34 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 );
    }

Offline michael.winkler

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1097
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #35 am: 12 März 2018, 10:06:06 »
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.

Offline sbiermann

  • Full Member
  • ***
  • Beiträge: 382
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #36 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?

Offline michael.winkler

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1097
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #37 am: 20 März 2018, 10:54:12 »
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

Offline JamesB

  • New Member
  • *
  • Beiträge: 13
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #38 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
ESXi - Debian / 2 x Raspberry PI 3 / CUNX / KS 300 / HM

Offline michael.winkler

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1097
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #39 am: 03 April 2018, 08:38:46 »
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?

Offline JamesB

  • New Member
  • *
  • Beiträge: 13
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #40 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.
ESXi - Debian / 2 x Raspberry PI 3 / CUNX / KS 300 / HM

Offline michael.winkler

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1097
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #41 am: 03 April 2018, 09:27:04 »
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?

Offline JamesB

  • New Member
  • *
  • Beiträge: 13
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #42 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?

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

Online hanswerner1

  • Full Member
  • ***
  • Beiträge: 176
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #43 am: 03 April 2018, 14:04:42 »
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"}

Offline michael.winkler

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1097
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #44 am: 03 April 2018, 14:07:36 »
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.