[Plugin Idea] Notification of reaching the set temperature

I would like to suggest an idea for a new plugin.

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:

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

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

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

Sincerely, Dmitry.


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.

You can implement 1 in the custom GCode your slicer adds.

BTW if you want someone to write code for you (for free) it's never a good idea to state how simple the task is.

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

It is not hard to write a plugin :slight_smile:

Good idea, I would know exactly how to do it but I don't have time :frowning_face:

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.

or an M300 command and one of those plugins also...

You could do this without modifying the control.jinja2 file by using custom controls in your config.yaml.


I posted an example related to flow/feed rate the other day and one of them had multiple command examples.

[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:

  1. There is no way to set a pop-up hint about button functions;
  2. 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...

Thanks, I'm glad you enjoy my work.