OctoPrint-FlashForge icon indicating copy to clipboard operation
OctoPrint-FlashForge copied to clipboard

Dremel 3d45

Open garyriet opened this issue 4 years ago • 16 comments

Question, will the plugin work withe 3D45? Just picked up a brand new one for 500.

garyriet avatar May 21 '20 20:05 garyriet

That seems like a good deal!

The plugin does not have the USB product ID for the 3D45 right now, although it does have the one for the 3D20. You can either edit the code in init.py so that

0x8889: "Dremel IdeaBuilder 3D20"

becomes

0x8889: "Dremel IdeaBuilder 3D20", 0x<newproductIDhere>: "Dremel IdeaBuilder 3D45"

or upload the ID and I can add it.

If you feel comfortable adding the code, it would be helpful because you could go ahead and test with it and see what works.

Mrnt avatar May 21 '20 20:05 Mrnt

I dotn feel comfortable changing code. Lmao. I’ll look into Thanks Gary

https://patents.justia.com/inventor/gary-rietmann

garyriet avatar May 21 '20 20:05 garyriet

Going tuna fishing tonight, I look at it over the weekend. Its in the middle of a print right now.

garyriet avatar May 21 '20 21:05 garyriet

Fun!

Ha - just looked at your link, I think you can do this ;)

Mrnt avatar May 21 '20 21:05 Mrnt

https://www.linkedin.com/in/gary-rietmann-4054007/

LMAO Yea I got it. Going thru bad divorce that mad me crack up. Thanks for that

garyriet avatar May 21 '20 21:05 garyriet

Changing monitoring state from "Offline" to "Opening serial port" Connected to: <octoprint_flashforge.flashforge.FlashForge object at 0x69144bf0>, starting monitor Starting baud rate detection... Changing monitoring state from "Opening serial port" to "Detecting baudrate" Trying baudrate: 115200 Send: M601 S0 Recv: CMD M601 Received. Recv: Control Success. Recv: ok Changing monitoring state from "Detecting baudrate" to "Operational" Send: M119 Recv: status: ready Recv: temperature: 25 Recv: platform_temperature: 21 Recv: chamber_temperature: 19 Recv: extruder_target_temperature: 0 Recv: buildPlate_target_temperature: 0 Recv: error_code: 200 Recv: door_open: 1 Recv: remaining: 0 Recv: totalTime: 0 Recv: firmware_version: v3.0_R02.09.04 Recv: jobstatus: Recv: progress: 0 Recv: layer: 50 Recv: jobname: Recv: elaspedtime: 0 Recv: networkBuild: 0 Recv: filament_type: ECO-ABS Recv: usbBuild: 0 Recv: fanSpeed: 0 Recv: message: success Recv: ok Send: M27 Recv: CMD M27 Received. Recv: SD printing byte 0/0 Recv: ok Send: M115 Recv: CMD M115 Received. Recv: machine_type: DREMEL 3D45 IDEA BUILDER Recv: firmware_version: v3.0_R02.09.04 Recv: api_version: 1.0.2-alpha Recv: SN: 803036493 Recv: ethernet_ip: 192.168.1.79 Recv: ethernet_connected: 1 Recv: wifi_ip: Recv: wifi_connected: 0 Recv: error_code: 200 Recv: message: success Recv: usb_connected: 1 Recv: ok Send: M146 r255 g255 b255 Recv: CMD M146 Received. Recv: ok Send: M119 Recv: status: ready Recv: temperature: 25 Recv: platform_temperature: 21 Recv: chamber_temperature: 19 Recv: extruder_target_temperature: 0 Recv: buildPlate_target_temperature: 0 Recv: error_code: 200 Recv: door_open: 1 Recv: remaining: 0 Recv: totalTime: 0 Recv: firmware_version: v3.0_R02.09.04 Recv: jobstatus: Recv: progress: 0 Recv: layer: 50 Recv: jobname: Recv: elaspedtime: 0 Recv: networkBuild: 0 Recv: filament_type: ECO-ABS Recv: usbBuild: 0 Recv: fanSpeed: 0 Recv: message: success Recv: ok Send: M105 Recv: CMD M105 Received. Recv: T0:25/0 B:21/0 C:19 E:0ok Communication timeout while idle, trying to trigger response from printer. Configure long running commands or increase communication timeout if that happens regularly on specific commands or long moves. Send: M119 Recv: status: ready Recv: temperature: 25 Recv: platform_temperature: 21 Recv: chamber_temperature: 19 Recv: extruder_target_temperature: 0 Recv: buildPlate_target_temperature: 0 Recv: error_code: 200 Recv: door_open: 1 Recv: remaining: 0 Recv: totalTime: 0 Recv: firmware_version: v3.0_R02.09.04 Recv: jobstatus: Recv: progress: 0 Recv: layer: 50 Recv: jobname: Recv: elaspedtime: 0 Recv: networkBuild: 0 Recv: filament_type: ECO-ABS Recv: usbBuild: 0 Recv: fanSpeed: 0 Recv: message: success Recv: ok

garyriet avatar May 24 '20 22:05 garyriet

Sweet it works! "Dremel": {0x8889: "Dremel IdeaBuilder 3D20", 0x888d: "Dremel IdeaBuilder 3D45"},

garyriet avatar May 24 '20 22:05 garyriet

I still have to set the other settings for OctoPrint

garyriet avatar May 24 '20 22:05 garyriet

Nice! It’s a pretty chatty little thing isn’t it (looking at the response to M119)

Mrnt avatar May 25 '20 05:05 Mrnt

There is a PR already open for this issue: https://github.com/Mrnt/OctoPrint-FlashForge/pull/9

Just needs some final testing. I am going to try this over the next few days/week, as I finish testing the 3D20 changes of late.

eduncan911 avatar Sep 10 '20 21:09 eduncan911

So about that Camera in the 3D45... It appears to be a an M-JPEG stream. I found this URL when directly accessing the printer:

http://[ip-of-printer]:10123

It immediately brings up a default web server landing page of "M-JPEG streamer":

image

^- Notice a small screenshot of the camera at the bottom of that image? Hehehe...

Why they want the extra overhead of running an embedded Java, and encoding individual JPEG images, is insane. First thing that pops into my head is, "how unsecure is this free-standing java web server on a printer with no security?" Good thing I run these printers on a dedicated Untrusted VLAN for IoT crap. I would never let this thing on my regular wireless.

Clicking on the Stream, clearly shows a simple <img src="/?action=stream" /> HTML code that one could embed to show the camera.

image

And it streams the JPEG images, with just that img!

As a matter of fact, hitting the url directly brings up a browser-window of what i think is around 800x640 resolution video of the camera feed: http://[ip-of-printer]:10123/?action=stream. Note no "HTTPS", just plaintext HTTP - and no security.

That URL is also compatible with VideoLAN video streaming:

image

There's also snapshots built in! So you can easily use it for time lapse prints:

http://[ip-of-printer]:10123/?action=snapshot

The final interesting fact is, we have camera controls!

image


So about OctoPrint and cameras... It got me thinking, can it stream the streaming URL?

YES IT CAN!!!

image

So in summary, when we get the 3D45 working with this plugin, we can clearly document how one would add the Camera to their octoprint instance by saying something like:

To display the camera, go into OctoPrint's settings for Webcam & Timelaspe, and enter the URL: http://[ip-of-printer]:10123/?action=stream

Nice!

eduncan911 avatar Sep 10 '20 21:09 eduncan911

@eduncan911 Nice job on the camera!

This made me chuckle:

Good thing I run these printers on a dedicated Untrusted VLAN for IoT crap. I would never let this thing on my regular wireless.

Yep, me too, along with the wifi security cams of questionable security...

Mrnt avatar Sep 10 '20 21:09 Mrnt

I have a Dremel 3D45 if you need to test/troubleshoot.

Ve2mrx avatar Mar 19 '21 19:03 Ve2mrx

USB ID: Bus 001 Device 003: ID 2a89:888d udev rule needed and was added; connection sucessful.

Ve2mrx avatar Mar 19 '21 20:03 Ve2mrx

@Ve2mrx Take a look at this PR: https://github.com/Mrnt/OctoPrint-FlashForge/pull/9#issuecomment-715574187

That's basically where we stand. The plugin needs to be tested.

Note, right now there are some "work arounds" for the 3D20 built into the codebase. The 3D45 seemed much more forgiving of regular Gcode in my previous tests, whereas the 3D20 has caused several lockups and reboots that were worked around (and now works great with).

Hopefully we don't need to do that.

Also, someone needs to pull down the codebase and get it updated with master branch, in that PR.

eduncan911 avatar Mar 19 '21 23:03 eduncan911

I have access to a Dremel 3D45 if this gets picked up again.

bvaerewyck avatar Dec 07 '21 02:12 bvaerewyck