Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dremel 3d45 #30

Open
garyriet opened this issue May 21, 2020 · 16 comments
Open

Dremel 3d45 #30

garyriet opened this issue May 21, 2020 · 16 comments

Comments

@garyriet
Copy link

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

@Mrnt
Copy link
Owner

Mrnt commented May 21, 2020

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.

@garyriet
Copy link
Author

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

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

@garyriet
Copy link
Author

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

@Mrnt
Copy link
Owner

Mrnt commented May 21, 2020

Fun!

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

@garyriet
Copy link
Author

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
Copy link
Author

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
Copy link
Author

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

@garyriet
Copy link
Author

I still have to set the other settings for OctoPrint

@Mrnt
Copy link
Owner

Mrnt commented May 25, 2020

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

@eduncan911
Copy link

There is a PR already open for this issue: #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
Copy link

eduncan911 commented Sep 10, 2020

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!

@Mrnt
Copy link
Owner

Mrnt commented Sep 10, 2020

@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...

@Ve2mrx
Copy link

Ve2mrx commented Mar 19, 2021

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

@Ve2mrx
Copy link

Ve2mrx commented Mar 19, 2021

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

@eduncan911
Copy link

@Ve2mrx Take a look at this PR: #9 (comment)

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.

@bvaerewyck
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants