Creating Custom Scripts for different extruder heads


I have three different types of extruders Ceramic, Plastic, Syringe Pump currently and I only use one at a time in my custom machine. I have configured my firmware for dual extruder and given steps per mm is based on the plastic extruder. The reason why I configured for dual extruder is I am planning to experiment with different dual head configurations in future like dual cermic, Ceramic+syringe pump, Plastic+syringe pump, but currently I use one extruder at a time (Only one extruder mounted on printer)

When I change the extruder, what I do is send M92 with new steps per mm based on the extruder and save it to EEPROM, Load it and verify that everything is properly configured by reading M503 report.

I have been trying to make this simple and asked Marlin Community where there is an option to choose different heads from LCD screen like this, but seems like there isn't.

So decided to check whether Octoprint has any feature. In octorpint for my second printer I have configured custom buttons for testing BLTouch and filament load/unload feature.
So decided to go that way
Created a Container and in that created a Command for Filament extruder and this is the gcode that I wrote

M92 T0 E92 ; Set extruder 1 steps per mm as 92
M92 T1 E92 ; Set extruder 2 steps per mm as 92
M500            ; Save it to EEPROM
M501            ; Load EEPROM values as active parameters
M503             ; Report everything back

And did similar for other extruders. But this would require manual verification by reading M503 report and if not configured properly I would have to click button again.


So I decided to look in to writing some scripts (Gcode/python) to check Configured steps per mm with target value and then send the command again automatically if not configured properly.

Is it possible ?? I have basic knowledge in python (Made a small GUI using QTPy once)

Any reference links or suggestions ?
Also is there any way to get current steps per mm in Marlin ? I tried sending M92 but no report back