Hi,
I have the problem with the OctoPrint (Version 1.3.9 on OctoPi 0.15.1) and really low tempreture information from the printer. I am using Creality CR-10 S5 and it is in my Gardenshellt in a Box. But we have right now the beginning of winter and the surrounding temp is arround -5°. OctoPrint cannot cope with that and starts only at 10°. So the problem is, that it cannot communicate with the printer because an Error occurs as soon as I want to start heating with OctoPrint. I have to manually start the preheating from the Printer and as soon as the bed temp and nozzle is reaching 10° OctoPrint is showing up the temp and is working just fine. I also can then start the print from OctoPrint.
Does anyone of you heard about the problem already or could give me a hit how to solve it? I think it was just not thought about my special temp case, which I totally understand.
Could I solve that with changing configuration at OctoPrint or do I have to deep into the source code?
Wildly flailing for an answer, I would guess that the regex responsible for interpreting temperatures from the printer expects two digits or more of temperature and therefore is having difficulty seeing your single digit or negative celsius amounts.
I would then guess that this file is responsible, specifically the regex_temp variable's use of regex_float_pattern.
regex_float_pattern = "[-+]?[0-9]*\.?[0-9]+"
Try looking at your Terminal tab to and report back here if your printer is reporting the temperature in a weird way. It would be nice to know what it looks like as a string so that we can run that through the regex to see if it works or not.
I have that same or similar problem at home cause I dont use central heating. If my printer has a bed or nozzle temperature below x (i think about 15 or so) degree for some it gives a min temp alarm (written on display) and cuts the connection via USB. Restarting the printer and reconnecting Octoprint fixes that. I have a network controlled power switch so I can do that remote if needed.
Min temp errors come from your printer's firmware. Most printers will use a minimum temperature as a simple way of detecting temperature sensor errors. If your printer regularly sees temperatures below that, you might need to consider lowering the min temp value and re-flash your firmware. There's nothing OctoPrint can do if your printer's firmware thinks there are sensor issues.
Haven't used marlin in years but as far as I'm aware, adjusting any of the security/safety issues requires a re-flash. Min / max temp, thermal runaway, etc. Bit annoying I know but generally the min temp is probably one of those things you set and forget, never really needing to change it again, so is pointless to be taking up valuable eeprom variable space.
I put my printer in an enclosure and am using the enclosure plugin to run a very small space heater in the enclosure to keep the temperature at a printable level. When I had mine out in the open I had the same issues and would get problems with prints lifting do a cold draft from a window near where the printer was situated.
The error is triggerd by the heatbed.
In Marlin is a BED_MINTEMP defined with 5 (°C). This also is used to check for a broken thermistor wiring (0°C as far as i remember).
So the questions should be:
"Is your room-/bed-temperature realy below 5°C or is your thermistor wiring broken?"
"Which actual bed temperature reports Octoprint in the temperature tab?"
No wiring Errors. Everything is working fine. I have the printer Enbeded but in a my Gardenshelter. So write now we have winter in Austria and the surrounding temp is -3°. I can start the heating up with my printer controller. As soon as the bed and the nozzle reaches 10° I can connect with OctoPrint and can take over.
Problem is in the Octoprint code. The printer is showing temp a single digit and I it will be sent as single digit.
I know It's a special case, but I would like to also been able to start heating up for remote.
Does anyone of you did already plugin's with temp control for octoPrint to know what to change in the regex or if where the Octoprint Software is sending the Heater_ID: bed error?
Until we see the actual temperature(s) returned from your firmware then it's difficult to suggest a solution. It feels like we have a horse-and-cart problem: you can't see your Terminal until OctoPrint connects to the printer in order to start seeing those responses. Again, use a hairdryer to warm up your hotend/bed/whatever long enough for OctoPrint to successfully handshake.
Once the serial connection is happy, then don't heat anything up with the interface. Let it cool back down to 9 degrees Celsius or less again while watching the Terminal. In theory, it will fail. And yet at this point, you could copy/paste the Terminal output.
I would then guess that this file is responsible, specifically the regex_temp variable's use of regex_float_pattern .
regex_float_pattern = "[-+]?[0-9]*\.?[0-9]+"
In my mind, we'll need to see what is produced from your firmware to run it through that regex. Then we'll know which of two paths to take: fix your firmware or patch OctoPrint.
I got your point with the hear dryer and I am sorry about thinking it the wrong way. I wanted to heat it up today but the climate is twisting right now and I have around 10° surrounding temp. at the week and it will cool down again to arround 0. But I have some temp values also with a slight temp below 10°:
I don't know why but the 8.8 temp was not a problem today ?!?
maybe the nozzle has also to be below 10°? When I am getting the first Error I will post it.
The temp ribbon is showing below 10 : Aus -> maybe in English off or out
What I guessed was happening before you provided the terminal output:
For any decimal place that was other than zero, your firmware would return one digit of precision on the temperature
For any decimal place that was exactly zero, your firmware was dropping the period and decimal zero, leaving that as just "B:9" or "T:9", let's say. We still don't know if this is the case since it hasn't failed. Perhaps more testing.
Maybe this is related only to the initial temperature check. Maybe once it's passed the initial check, it's never going to complain again.
Short version: the regex is happy with "T:n.d" and "B:n.d" (single-digit to left/right of decimal point). This isn't the problem.
It's still possible that when that "n" or that "d" is also a zero what your firmware produces something that the regex isn't happy with. But as has been suggested, exactly zero to OctoPrint means "your thermistor isn't attached". [Update: Only your firmware might think that rather than OctoPrint, as described below by foosel.]
It's also entirely possible that this is something wrong with your thermistor or your control board; heating up the thermistor in the bed brought it up to the minimum operating temperature, say.
Feel free to use an ice cube (and a bowl below it) to change the temperature of the (unheated) hotend if you wanted to make things go faster.
Exactly zero to OctoPrint means 0. It doesn't care about temperatures, it just parses and displays them. Any related errors are triggered by the firmware. If your firmware is happy with -10°C, OctoPrint will also be happy with it. If your firmware isn't, it will trigger an Error: message which in turn will tell OctoPrint that something's off which it will then inform the user about with a big red angry notification.