Maxdunhill Posté(e) le 1 décembre 2015 Signaler Posté(e) le 1 décembre 2015 Bonjour,Voici mon cas d'école,je souhaite envoyer des commande tcp sur une interface eNet Gira ou Jung pour ne pas les citer donc après un gros travail de reverse ing, je connais les commandes et le port utilisé, soit 9050j'ai déjà envoyé les commande par putty en raw, elles sont accepter et exécuter par le controleur, par contre dans un module virtuel avec le script ci-dessous pas de réponse et pas d’interprétation du contrôleur eNet...code lua dans le bouton On du périphérique virtuel: tcpSocket = Net.FTcpSocket("192.168.1.30", 9050) tcpSocket:setReadTimeout(2000) local commande ='{\"PROTOCOL\":\"1.8\",\"TIMESTAMP\":\"1448636693\",\"CMD\":\"VERSION_REQ\"}\r\n\r\n' fibaro:debug(commande) tcpSocket:write(commande) state = tcpSocket:read() fibaro:debug("len: " .. string.len(tostring(state))) fibaro:debug(state) Dans le debug la commande est exactement la même que celle utiliser dans putty en raw...Merci pour vos réponses et votre aide.Philippe
Krikroff Posté(e) le 1 décembre 2015 Signaler Posté(e) le 1 décembre 2015 Bonsoir, Peut-être essayer de créer une table local commande = { PROTOCOLE = '1.8', TIMESTAMP = 1448636693, CMD= 'VERSION_REQ'} puis de faire un local payload = json.encode(commande) tcpSocket:write(payload); mais sans grande conviction....
Dgille Posté(e) le 2 décembre 2015 Signaler Posté(e) le 2 décembre 2015 Bjr, tu peux également essayer de réaliser une capture wireshark pour t'assurer que la box émet bien la trame et voir la réponse du device. il te faudra intercaler un bon vieux hub ou un switch avec un port en mirroir.
Maxdunhill Posté(e) le 3 décembre 2015 Auteur Signaler Posté(e) le 3 décembre 2015 Bonjour à tous, je sais pas si c'est le fait d'être passé en version beta 4.059 mais ce code fonctionne finalement très bien... (pour la blague c'est le presque le même que celui qui ne fonctionnait pas ) if (tcpSocket == nil) then tcpSocket = Net.FTcpSocket("192.168.1.30", 9050); tcpSocket:setReadTimeout(500); end local commande ='{\"PROTOCOL\":\"1.8\",\"TIMESTAMP\":\"1447344184\",\"CMD\":\"ITEM_VALUE_SET\",\"VALUES\":[{\"STATE\":\"ON\",\"NUMBER\":18}]}\r\n\r\n'; fibaro:debug(commande); tcpSocket:write(commande); state = tcpSocket:read(); fibaro:debug("len: " .. string.len(tostring(state))); fibaro:debug(state); Maintenant j'ai de nouvelles questions, je vais récupérer l'état du contacteur via une autre commande, comment la faire apparaître sur l'état du bouton du VD? et comment utiliser mes VD avec le scipt ci-dessus dans une scène? Je sais cela fait beaucoup de questions mais promis je contribuerai aussi un jour
Messages recommandés