I quite succesfully managed to do this with PacketPeerUDP,
I had a rather complex network of arduinos all connected together. One had either wifi / ethernet shield attached (it didnt matter which) and was designated master.
The Master arduino would monitor devices joining / leaving this network and report back to the godot app which devices were connected and allow basic messages to be sent back to the arduinos.
Godot side is very simple, Arduino side was basic UDP listener example.
var UdpSocket = PacketPeerUDP.new()
var port = 9000
var ip = "192.168.0.10"
if UdpSocket.get_available_packet_count() > 0:
var array_bytes = UdpSocket.get_packet()
print("Server says "+array_bytes.get_string_from_ascii())
if (UdpSocket.listen(port) != OK):
print("Error listening on port: " + str(port))
print("Listening on port: " + str(port))
var pac = data.to_ascii()
print("send data via UDP! "+data)