@Efflon
It can't be done during presentation cause the node isn't registered yet at the gateway at that time. Default settings in mysensors requires nodes to be registered before the gateway allows them to send in values. In mysensors 2.1.x setup is called after registration, so it is possible to use that for sending values, but I would still recommend to do it in the loop.
Reason is, in some cases you want to resend the initial values, and then setup is not suitable as it's only called once. Eg if your're using the ethernet gateway and have local sensors on the gateway, when home assistant connects to the gateway, the gateway will re-run presentation and continue with the loop. But setup will not be called again, as it already has been called when the gateway was first started. So if you would send initial values of sensors in setup on a gateway, the sensors wouldn't show in home assistant, cause the initial values would already be sent by the time home assistant connects to the gateway.
Best way, I think, is to use an if block in the loop where you send the values and then request them from home assistant. You use a boolean variable, that you can turn on/off, that decides if the if block should be entered. You have the boolean True by default, and then set it to False when you have received the initial values back from home assistant in receive. This is described in the example sketch here:
https://home-assistant.io/components/mysensors/#presentation