Quelques remarques:
1. Il faut placer de préférence l’instanciation du socket dans le onInit ainsi que le nécessaire pour la configuration / paramétrage soit
function QuickApp:onInit()
self.sock = net.TCPSocket()
self.ip = self:getVariable("IP")
self.port = tonumber(self:getVariable("Port"))
end
2. Ajouter une méthode Close_Socket() dans le QuickApp
function QuickApp:Close_Socket()
self.sock:close()
end
3. La méthode Open_Socket ne devrait servir qu'a l'ouverture du socket + trace etc...
function QuickApp:Open_Socket()
self:debug("open socket")
self.sock:connect(self.ip, self.port)
end
4. Utiliser de préférence setTimeout (non bloquant) à la place de fibaro.sleep(xxx) car net.TCPSocket est asynchrone... soit remplacer les lignes
self.sock:close()
fibaro.sleep(200)
self:Open_Socket()
fibaro.sleep(200)
self:Send(MaTrame)
PAR
self.Close_Socket() -- socket closed
fibaro.setTimeout(5000, function()
self:Open_Socket()
self:Send(MaTrame)
end) -- re-connection attempt (every 5s)
5. Ne pas hésiter à restituer le message d'erreur retourné comme ceci
self:debug("connection error:", message)
Je n'ai rien testé mais cela permettra de mieux identifier par la suite les points bloquants