Well, your current code breaks the golden rule of Blynk, which is never to have a Blynk.virtualWrite in your void loop.
You need to fix that first. I’d suggest that you read this to understand why it’s an issue, and why you need to use a BlynkTimer…
Then, you need to attach your step widget to a virtual pin, and have a BLYNK_WRITE(vPin) callback to handle the process of getting the temperature setting from the widget and assigning it to a global variable.
You should also have a BLYNK_CONNECTED callback with a Blynk.syncVirtual(vPin) command to ensure that your target temperature is retrieved from the Blynk server on startup/reconnection.
Plenty of examples in the forum if you use those keywords to do some searching.
I’m not sure how re-posting the same code, with its problematic void loop, is going to help.
There are many examples of thermostat projects on the forum. If you can’t find one that uses the DS18B20 sensor then you could either modify the code to use this sensor, or use a different sensor in your project.
I think that’s the basic problem. You need a more structured approach to learning C++, or programming in general, to give you the skills you need to implement your project.
There are a ton of examples of thermostats that use Blynk on this forum, some of which use hysteresis to avoid the heater turning on and off rapidly when you are near the target temperature.
I’d suggest that you take a look at these and use one of them as the basis for your project, but at the same time learn some C++ programming.
This will give you a sensible starting point, and the knowledge to tweak the code examples to work with your choice of hardware and to provide the exact functionality that you need.
The most important isn’t the way you call sensor, that works, but now you need to introduce hysteresis and flags , and change timers …
No need to check sensor every 5", nor to switch the relay every second, use a flag , it will be better.