AFAIK, that’s partially true.
VPN is good solution if you’re physically outside your lan area.
if @lastpeony external network is simply another router connected to the one with the yeelights, then there are other solutions like NAT or editing the routing table on the external router.
nontheless, solutions like this should be able to allow sending out commands, but in order to get response back from the yeelight, changing the NAT / routing table on the yeelight’s router might also be necessary.
@lastpeony - you questions is more about how to forward TCP packets between two different networks ( w/ or w/o VPN ) - then about Yeelight itself.
as told above, Yeelight only communicate with other device on SAME network.
so it’s just about passing that TCP packet from one network to the other and it doesn’t really matter the fact that it is for yeelight - i.e it’s network communication puzzle.
also IMHO, your life will be much easy if you’d set static IP to the yeelight devices in the router they communicate with.