It works fine without define TAMPLATE_ID and DEVICE_NAME

It depends how you’re doing your Blynk connection.

If you just do Blynk.begin(auth); then Blynk Libraries with version greater than 0.6.1 will try to connect to the Blynk Legacy servers (
Later versions of the Blynk library (and you should currently be using 1.0.1 with Blynk I0T) will look at the first two lines of code in the sketch. If the library sees a Template ID in there then it will know that it has to connect to the Blynk IoT cloud servers ( instead.

If you manually specify the IoT cloud server in your Blynk connection code then you can work around this behaviour, and I believe that you can even force the legacy library to connect with the IoT cloud severs (but this isn’t a good idea!).

There’s also some info in this topic…