Hey there. We're building networked 3D printers. We're trying to figure out how to identify

Hey there. We’re building networked 3D printers. We’re trying to figure out how to identify printers on our network. On querying the printer we currently get this information: “FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1” which isn’t sufficient to uniquely identify the printer and may anyway change on firmware update. Are there any other ways to figure out what printer is connected to a machine without looking at the printer? Any help greatly appreciated!

What’s the underlying software you’ve chosen as the basis of the network? That could be a factor. Additionally, some machines have no unique ID from one to another of the same model which could also be a problem.

Octoprint?

we communicate via the serial ports directly using the normal gcode commands. Our forwarding software is built upon linux. Thanks! Shame about the unique ID. Do you know which ones specifically that’s the case for? Might be enough just to know the printer type, which would already be more than the above.

Also, the firmware on the control board (typically atmega 2560 based) of the printer might have the ID string in it, as it is the entity controlling and communicating. Look there?

I think you can query config Paramus such as print area, which might vary between machines. But why not name the machines to tell them apart?

alright, I talked with some of the team I’m working with on a similar project. Our machines turn up as
/dev/serial/by-id/usb-UltiMachine__ultimachine.com__RAMBo_64036353430351211061-if00
which is unique to the RAMBo board on each device. In this case, these are Lulzbots being installed into a Repetier-Server setup.

Marlin actually echos back the date/creator if you have that set in the top of your configuration.h

Look at botqueue

Maybe mess with the source for https://github.com/ErikZalm/Marlin/blob/Marlin_v1/Marlin/language.h#L156 and add a SERIAL_NUMBER string yourself.

Thanks, Very useful.