Aller au contenu

jjacques68

Membres confirmés
  • Compteur de contenus

    4 349
  • Inscription

  • Dernière visite

  • Jours gagnés

    39

Tout ce qui a été posté par jjacques68

  1. jjacques68

    Question TCPSocket

    elle bug leur instruction read.
  2. jjacques68

    Question TCPSocket

    j'ai viré les sleep et remplacé par des setTimeout pour la reconnexion... y en a 3 maintenant (dans les 2 write et dans la boucle de read) c'est un bordel inimaginable (plein de deconnexion/reconnexion et des paquets qui manquent...) function QuickApp:onInit() self.sock = net.TCPSocket({timeout = 2000}) self.ip = self:getVariable("IP") self.port = tonumber(self:getVariable("Port")) self:Open_Socket() end ---------------------------------------------------------------- function QuickApp:Open_Socket() self.sock:connect(self.ip, self.port,{ success = function() self:debug("Socket opened") self.socketClosed = false self:updateProperty("value", true) self:waitForResponseFunction() end, error = function(err) self:debug("error opening socket : ",err) self.sock:close() self.socketClosed = true self:updateProperty("value", false) end }) end ---------------------------------------------------------------- function QuickApp:Close_Socket() self.sock:close() self.socketClosed = true self:debug("Socket closed") self:updateProperty("value", false) end ---------------------------------------------------------------- function QuickApp:waitForResponseFunction() self.sock:read({ -- reading a data package from the socket success = function(data) self:debug("From Server - "..data) -- handling of received data self:waitForResponseFunction() -- looping of data readout end, error = function(err) -- a function that will be called in case of an error when trying to receive data, e.g. disconnecting a socket self:debug("response error - "..err) self.sock:close() -- socket closed fibaro.setTimeout(5000, function() self:Open_Socket() end) -- re-connection attempt (every 5s) end }) end --------------------------------------------------------------- function QuickApp:Send(MaTrame) --reconnect if closed if self.socketClosed == true then fibaro.setTimeout(3000, function() self:Open_Socket() end) end --affiche la trame dans le label self:updateView("LBL_Buffer", "text", tostring(MaTrame)) --envoi la première trame d'essai self.sock:write("\n", { success = function() --self:debug("First send = OK") --envoi la data self.sock:write(MaTrame.."\n", { success = function() --self:debug("Data send = OK") end, error = function(err) self:debug("error sending data : "..err) self:Close_Socket() fibaro.setTimeout(3000, function() self:Send(MaTrame) end) end }) end, error = function(err) self:debug("error sending first : "..err) self:Close_Socket() fibaro.setTimeout(3000, function() self:Send(MaTrame) end) end }) end Je comprends même plus l'ordre des messages qui s'affichent dans le debug
  3. jjacques68

    Question TCPSocket

    alors je viens de faire une petite expérience : j'ai ajouté la fonction function QuickApp:waitForResponseFunction() self.sock:read({ -- reading a data package from the socket success = function(data) self:debug("From Server - "..data) -- handling of received data self:waitForResponseFunction() -- looping of data readout end, error = function(err) -- a function that will be called in case of an error when trying to receive data, e.g. disconnecting a socket self:debug("response error - "..err) self.sock:close() -- socket closed fibaro.setTimeout(5000, function() self:Open_Socket() end) -- re-connection attempt (every 5s) end }) end et bien j'ai comme réponse : quand y en a une : [DEBUG] 18.03.2020 21:47:37: response error - Operation canceled et ça tourne en boucle, donc j'ai visiblement des erreurs venant du serveur... mais y a aucune raisons !!!
  4. jjacques68

    Question TCPSocket

    ah mais dans leur exemple ils font une lecture continue ! faudrait pouvoir arriver à intercepter le résultat de cette fonction après le write, genre dans une variable locale... nan c’est pas le top... ton idée serait de faire ce read dans le success du write... et que si on détecte un message du serveur genre un close, on ré ouvre Mais bon sang, il devrait le faire tout seul ça ! désolé je réfléchi à voix haute
  5. jjacques68

    Question TCPSocket

    ben j’étais entrain de cogiter dessus, ajouter un self.sock:read() dans le write... ça fait beaucoup d’instruction asynchrone qui s’imbriquent... je suis entrain de lire pour la 100ème fois l’exemple sur le site de fibaro, je comprends bien la méthode read, mais j’ai du mal à comprendre comment l’intégrer !
  6. jjacques68

    Question TCPSocket

    ben je suis d’accord, c’est la solution du pauvre... mais c’est pas possible de pas pouvoir stabiliser ce truc, sur la HC2 c’était impec !
  7. jjacques68

    Question TCPSocket

    tiens en disant ça ! c’est nul, mais j’ai constaté que quand le QA crash, il redémarre au bout de 3 - 4 secondes... pourquoi pas provoquer un crash du QA en cas de perte de connexion ! roah j’ai honte de dire ça
  8. jjacques68

    Question TCPSocket

    si on pouvait réinitialiser le QA en cas de perte de connexion...
  9. jjacques68

    Question TCPSocket

    tu ne constates pas la même chose de ton côté ?
  10. jjacques68

    Question TCPSocket

    J'ai rien programmé comme réponses sur le serveur... du coup j'ai pas besoin de traité les read().
  11. jjacques68

    Question TCPSocket

    j'ai viré les sleep... ça change rien... [DEBUG] 18.03.2020 20:14:19: First send = OK [DEBUG] 18.03.2020 20:14:19: error sending data : Broken pipe [DEBUG] 18.03.2020 20:14:19: Socket closed [DEBUG] 18.03.2020 20:14:20: error sending first : Bad file descriptor [DEBUG] 18.03.2020 20:14:20: Socket closed [DEBUG] 18.03.2020 20:14:20: error opening socket : Operation canceled [DEBUG] 18.03.2020 20:14:20: error sending first : Bad file descriptor ...
  12. jjacques68

    Question TCPSocket

    J'ai l'impression que l'instruction close() ne libère pas les ressources correctement...
  13. jjacques68

    Question TCPSocket

    c'est celui sur lequel on avait déjà bossé : function QuickApp:onInit() self.sock = net.TCPSocket({timeout = 2000}) self.ip = self:getVariable("IP") self.port = tonumber(self:getVariable("Port")) self:Open_Socket() end ---------------------------------------------------------------- function QuickApp:Open_Socket() self.sock:connect(self.ip, self.port,{ success = function() self:debug("Socket opened") self.socketClosed = false self:updateProperty("value", true) self:Send("Hello") end, error = function(err) self:debug("error opening socket : ",err) self.sock:close() self.socketClosed = true self:updateProperty("value", false) end }) end ---------------------------------------------------------------- function QuickApp:Close_Socket() self.sock:close() self.socketClosed = true self:debug("Socket closed") self:updateProperty("value", false) end --------------------------------------------------------------- function QuickApp:Send(MaTrame) --reconnect if closed if self.socketClosed == true then self:Open_Socket() fibaro.sleep(3000) end --affiche la trame dans le label self:updateView("LBL_Buffer", "text", tostring(MaTrame)) --envoi la première trame d'essai self.sock:write("\n", { success = function() self:debug("First send = OK") --envoi la data self.sock:write(MaTrame.."\n", { success = function() self:debug("Data send = OK") end, error = function(err) self:debug("error sending data : "..err) self:Close_Socket() fibaro.sleep(500) self:Send(MaTrame) end }) end, error = function(err) self:debug("error sending first : "..err) self:Close_Socket() fibaro.sleep(500) self:Send(MaTrame) end }) end
  14. jjacques68

    Question TCPSocket

    euh je crois que ça vient d'un copier coller... inutile
  15. jjacques68

    Question TCPSocket

    si tu as le temps je veux bien, ça fait 5 heures que je fais toutes sortes d'essais... Ce qui est dingue, c'est que j'utilise le bout de code suivant (dan sun autre QA) pour un envoi unique et à la demande, et j'ai aucun soucis !! le truc, c'est dans ce cas là j'ouvre la socket à chaque envoi, chose que je peux pas faire dans l'autre QA, car il y aune grosse quantité de données envoyées à la suite... puis c'est pas normal... function QuickApp:TurnOffPc(Ip) self.sockOff:connect(tostring(Ip), tonumber(self:getVariable("Port")),{ success = function() self:debug("Socket OFF - opened") fibaro.sleep(100) self.sockOff:write("shutdown;YWRtaW5zaHV0ZG93bg==", { success = function() self:debug("Socket OFF - Data sended") end, error = function(err) self:debug("Socket OFF - error sending data : "..err) self:Close_SocketOff() fibaro.setTimeout(3000, function() self:TurnOffPc(Ip) end) end }) end, error = function(err) self:debug("Socket OFF - error opening : ",err) self:Close_SocketOff() fibaro.setTimeout(3000, function() self:TurnOffPc(Ip) end) end }) end
  16. jjacques68

    Question TCPSocket

    pffffffffffff... je trouve pas ce qui cloche ! Ce qui est sûr : - La connexion du QA est immédiate si le serveur est déjà lancé. - Si le serveur est redémarré, le QA n'arrive pas à se reconnecter malgré le code qu'on mis en place. Pour le refaire partir, je suis obligé de modifier n'importe quoi dans le QA afin de de pouvoir l'enregistrer et donc de le redémarrer. En gros : le serveur en premier, le QA en deuxième. L'inverse est impossible. Faut redémarrer le QA.
  17. jjacques68

    Question TCPSocket

    J'ai l'impression que les boucles dans le Open_Socket() et dans le Send() se prennent les pied dans le tapis...
  18. jjacques68

    Question TCPSocket

    ouai nan j'arrive pas réouvrir la socket ... j'ai cette erreur lors de la tentative de réouverture : pourtant, côté serveur je vois bien la demande arriver... et le serveur l'accepte bien
  19. jjacques68

    WakeOnLan

    en même temps, vu l’actualité, les gens ont peut être autre chose à faire
  20. jjacques68

    WakeOnLan

    pourtant j’ai pas l’impression que beaucoup de personnes possèdent une HC3... c’est plutôt calme les sujets...
  21. jjacques68

    Question TCPSocket

    mouai j’ai encore des difficultés de connexion au serveur ... je vais regardé ça demain. bon une fois que c’est ouvert c’est très stable.
  22. jjacques68

    WakeOnLan

    nan mais j’espère qu’ils vont quand même sortir une MAJ prochainement !
  23. jjacques68

    WakeOnLan

    du coup, j'allume avec la HC2 et j'éteins avec la HC3
  24. jjacques68

    WakeOnLan

    mais attend, le broadcast (en général) peut pas se faire sur une socket TCP ? c'est que pour l'UDP ?
  25. jjacques68

    WakeOnLan

    oui exacte, mais je le suis dis que je le passais sur une socket TCP... Ben visiblement non... Le broadcast passe pas
×
×
  • Créer...