jjacques68 Posté(e) le 21 août 2018 Signaler Posté(e) le 21 août 2018 hello tout le monde ! petite question... vous explique mon cas : j’ai une scène toute simple avec comme trigger 3 VG (VG1, VG2, VG3) cette scène met la valeur et le nom de la VG déclencheuse dans une autre VG (VGSend) et actionne un bouton dans un VD. Ce bouton envoie le contenu de la VGSend vers une socket. Cette trame est analysée par un soft, ... bref ça c’est ok. quand la scène est déclenchée par une seule VG, c’est nickel. le soft reçoit la trame avec le nom et la valeur. MAIS : si la scène est déclenchée 2 ou 3 fois quasi instantanément (à cause du changement de valeur des VG simultanément) la çà pose problème. la scène est bien triggée 3 fois je le vois dans le débug. Le bouton du VD est bien actionnée 3 fois (visible dans le debug), mais la valeur de la VGSend n’est pas toujours à jour dans le VD. je sais pas si vous voyez ce que je veux dire, mais on dirait que la VGSend met plus de temps à se mettre à jours que l’excution du script de la scène et du VD. Resultat, je me retrouve avec 3 trames sur la socket, mais avec des valeurs en double, par exemple 2 fois la VG1, voir des fois 3 fois. j’ai tenté de ne pas passer par la VGSend, mais directement par un label de mon VD, mais c’est pire. j’ai tenté de temporiser l’exécution de la scène avec un sleep(500) dès le début de la scène, mais ça change rien. j’ai même tenté de mettre fibaro:sleep(fibaro:countScenes()*500) pour que chaque instance de la scène soit retardée en fonction du nombre..., mais toujours rien. alors je sèche... comment comprendre ce qu’il se passe ? comment y remédier ? une solution idéale serait d’envoyer sur la socket depuis la scène, mais il me semble que ce n’est pas possible... merci à vous !!
Indyana Posté(e) le 21 août 2018 Signaler Posté(e) le 21 août 2018 Tu as bien mit l'id de ta scène dans le Fibaro:countScenes(ID)?....
jjacques68 Posté(e) le 21 août 2018 Auteur Signaler Posté(e) le 21 août 2018 euh... oups... c’est pas obligé si ?
jjacques68 Posté(e) le 21 août 2018 Auteur Signaler Posté(e) le 21 août 2018 arrête, je l’utilise souvent pour empêcher qu’il y ait trop d’instaces... bon j’essaye après
jjacques68 Posté(e) le 21 août 2018 Auteur Signaler Posté(e) le 21 août 2018 nan ça change rien avec l'ID... voici le code de ma scène : --[[ %% properties %% events %% globals VDSoleilAzimut WifiOn PatrolCave PatrolSalon PatrolEtage --]] local MonMessage = "VG;" local MaVg = fibaro:getSourceTrigger().varName MonMessage = MonMessage..MaVg..";"..tonumber(fibaro:getGlobalValue(MaVg))..";" fibaro:setGlobal("SendDisplayVg", MonMessage) fibaro:call(559,"pressButton", 1) print(MonMessage) et celui du bouton du VD : local udpSocket = Net.FUdpSocket() local ToSend = fibaro:getGlobalValue("SendDisplayVg") local Ip = fibaro:getGlobalValue("DisplayIp") if ToSend ~= "" then fibaro:debug(ToSend) udpSocket:write(ToSend,Ip,9503) end on peut pas faire plus simple je pense... Donc si les 3 VG Patrolxxxxx changent au même moment, c'est là que je perds la "synchro"
jjacques68 Posté(e) le 21 août 2018 Auteur Signaler Posté(e) le 21 août 2018 c'est pénible ! J'ai essayé avec un setTimeout au lieu du sleep et change rien. Je me suis dit qu'avant d'écrire dans la VGSend, j'allais lire le contenu de cette variable, et ajouter la nouvelle à la précédente, et change rien non plus. Je sais pas si c'est le VD qui rame ou l'écriture de la VG...
Messages recommandés