It is necessary to add the ability to issue notifications when a preset temperature is reached for a hot bed (and for a hot end - completely the same). In order not to get confused while talking about the temperature of the hot bed.
Next to the standard temperature control buttons on the "Control" tab, add one more button: "Signal". The button must have two states: "On" and "Off". The state is switched with a mouse click.
If the button is switched to the "On" state, tracking of the moment of reaching the temperature set in the interface (value from the interface) should be started. The signal is issued once when the set temperature is reached. When the preset temperature is reached, Octoprint should send for execution the command specified by the user in the settings, and the button should be set to “Off”.
In the plug-in settings, you must also provide for the user to set the temperature corresponding to the temperature of the "off" state. I suppose for her it is advisable to set the default value "30 degrees Celsius". The user can switch the heater to “off”, turn on the “Alarm” - and he will receive a notification about the moment when it will be possible to remove the part from the cooled table.
It was the idea itself, and now thoughts on implementation options:
The minimum option is the command M190 S value from the interface M300 S user setting P user setting. But this is a rather weak option.
It would be much better to keep track of the values that are received in the terminal from the printer. If at the moment of turning on the "Signal" button the current table temperature is lower than the set one (the user is heating the bed), then the signal must be issued when the temperature becomes equal to the value of the value from the interface or higher than it. If at the moment of turning on the "Signal" button the current temperature of the table is higher than the set one (the user is cooling the bed), then the signal must be issued when the temperature becomes equal to or less than the value from the interface.
And of course, it is advisable to execute a fully user-defined command.
It seems to me that such a plugin is not very difficult to implement. The interface is simple and intuitive, and the possibilities are very broad. I think the plugin will be popular with users.
You can do this with already existing plugins and tools.
One toolchain is the mqtt plugin with custom mqtt-subscriber, or with node-red
Other is the prometheus/grafana alerting with the prometheus plugin
We also have a pushover plugin with alert event (M300) and temperature reached functionality
The first option gives you a full automation framework where you can do/program whatever you want. (With a lot of premade integration.)
The second option gives you ready to lunch alerting things with a lot of configuration options, slack, email, pagerduty, wechat, webhook, and pushover integrations, if you need alerting and not automation.
Thanks for your advice!
In my opinion, both of these solutions are too powerful and therefore too complex for those who are sitting next to the printer and just waiting for the hot bed (or extruder) to warm up or cool down.
The idea I proposed has a very simple and user-friendly interface that does not require complex settings and additional software on third-party devices.
The slicer contains what you need to print a specific part.
In the Octoprint interface, everything you need to manage your printer. The idea is to add audible alarms to processes controlled from the octoprint interface.
For example, I need to warm up the table for bedleveling. I have set the warm-up in the interface and I want to hear a signal when the warm-up is over. But I don't have to do this every time I print a part.
And I am not asking anyone to write a plugin FOR ME. I added a couple of fixed temperature buttons (e.g. 'M140S75/n G4S1/n M190S75/n M299/n G4P700') in control.jinja2 and that's enough FOR ME.
I give an idea to someone who is interested in writing a plugin that I think will be useful FOR MANY. And maybe get some kind of support from users...
Good idea, I would know exactly how to do it but I don't have time
My LED plugin WS281x LED Status already hooks into the temperatures received hook, to track heating (& maybe in future cooling) progress for display on the lights.
Honestly, the let's-set-the-hotend-temperature gcode command is a blocking command. If the next command is M117 I am so ready, combined with one of the nifty M117-related plugins then you're all set.
[jneilliii], Thank you very much, I know about this opportunity.
It is unwise to use an additional slider to set the temperature of the sound signal; this value is already set in the standard interface under the temperature graph.
It is convenient to use "Custom Controls"; when using them, you do not need to re-make changes in "control.jinja2" when changing a octoprint release.
But I consider the functionality of CustomControls insufficient.
It has two major drawbacks:
There is no way to set a pop-up hint about button functions;
There is no possibility to block the button from execution during the part printing process.
Yes, it is possible to turn on work with confirmation and give the button a red / blue color - but this is not the same as complete blocking for the current mode.
This is partly why I so much welcome your excellent "Consolidated Tabs" plugin - it makes the "Terminal" tab easily accessible, where your other plugin ("Terminal commands extended") will display additional buttons with their richest functionality.
And, just in case, I will once again explain the essence of the idea: when using the Octoprint interface (at this moment we are working with the printer interactively!) We start a rather lengthy process, the duration of which is unknown in advance. It is convenient to receive a notification that the process is complete. But this notification is NOT ALWAYS required. Therefore, the control element for enabling / disabling the notification mode must be located somewhere near the control elements of the process itself.
Like an accelerator pedal, speedometer and sound signaling device of reaching a certain (in settings) speed in a car.
We have a speedometer = a graph of temperature changes. There is an accelerator pedal under it = fields for setting the temperature. And it seems to me that adding a buzzer here is a good idea. Car manufacturers have passed this long ago...