Krikroff Posté(e) le 15 novembre 2014 Auteur Signaler Posté(e) le 15 novembre 2014 @gorn, peut-être des infos ici http://www.domotique-fibaro.fr/index.php/topic/2613-detection-de-pr%C3%A9sence/ sinon la tout de suite je n'ai pas d'idée pour windows phone
yassinex Posté(e) le 20 novembre 2014 Signaler Posté(e) le 20 novembre 2014 Salut Krikroff, L'identification par adresse MAC c'est mieux,car c'est la seule constante sur un équipement réseau. En affichant la table ARP tu peux récupérer la liste des devices connectés et voir si ton device est dansa la liste. tu peux également récupérer l'adresse IP du device à travers son adresse MAC. J'ai vu un script intéressant ICI mais je ne sais pas si c'est implémentable sur notre chère box ? Un avis ?
Krikroff Posté(e) le 20 novembre 2014 Auteur Signaler Posté(e) le 20 novembre 2014 Oui je sais bien tout cela, c'est bien pour cela que j'utilise mon device freebox serveur pour ça . Malheureusement le lua du HC2 est limité (même en V4) , encore la semaine dernière j'ai essayé de coder une lib avec les moyens du bord pour avoir le SNMP et bien c'est cuit ... Peut-être en V4 stable si plus d'ouverture ou implémentation par Fibaro!
yassinex Posté(e) le 20 novembre 2014 Signaler Posté(e) le 20 novembre 2014 Ok, je vois que tu as tout tenté. Ils sont quand même un peu "parano" chez fibaro, alors que tu peux générer une attaque D.O.S simplement avec une MainLoop et une requête qui va bien...les limitations imposés ne sont clairement pas pour des raisons de sécurité. Ou alors j'ai rien compris ! Envoyé de mon iPhone en utilisant Tapatalk
Tsv91 Posté(e) le 18 février 2015 Signaler Posté(e) le 18 février 2015 Le code fonctionne bien , un grand merci Krikroff J'ai quant meme une question : Pourquoi bytes derrière la variable local ? local bytes,errorCode = tcpSocket:write("test"); merci
Krikroff Posté(e) le 18 février 2015 Auteur Signaler Posté(e) le 18 février 2015 En l’occurrence la variable bytes n' est pas utilisée ici mais par habitude puisque tcpSocket:write retourne la réponse "bytes" et aussi un code d'erreur
Tsv91 Posté(e) le 18 février 2015 Signaler Posté(e) le 18 février 2015 Comme je n'avais compris son utilité je l'avais suprimé mais le code dans ce cas ne fonctionne pas Merci krikroff
Tsv91 Posté(e) le 19 février 2015 Signaler Posté(e) le 19 février 2015 Juste pour ma culture personnelle ou peut on trouver la doc ou explication de cette"fonction" Merci
Gazous Posté(e) le 22 mars 2015 Signaler Posté(e) le 22 mars 2015 Bonsoir, Je me permet juste 2 petites remarques concernant ce script : 1) Il y a une erreur ligne 51 fibaro:log("Error: " .. f); Ce n'est pas dans f que le message de l'erreur est contenu mais plutôt dans result. En plus f est un booléen donc cela générera une erreur d'interprétation LUA. Donc à corriger avec fibaro:log("Error: " .. result); 2) J'ai remarque en faisant des tests que le "setReadTimeout" ne servait pas à grand chose car si le host de destination est inaccessible, c'est la ligne au dessus, celle de connection TCP qui va bloquer. Je n'ai pas trouvé d'information là dessus mais existe-t-il un genre "connectTimeout" sur cet objet ? Sinon il serait intéressant de trouver une méthode qui permet de faire un "vrai" ping (packet ICMP)
Krikroff Posté(e) le 23 mars 2015 Auteur Signaler Posté(e) le 23 mars 2015 C'est bien vu pour l'erreur d’interprétation LUA avec le booléen. Je précise que j'utilise la possibilité offerte par pcall pour retourner un résultat true|false pour valider ou pas le "pseudo" ping . Pour un vrai ping ce n'est pas possible pour le moment car toutes les librairies exposées par Fibaro sont "bridées".
Gazous Posté(e) le 23 mars 2015 Signaler Posté(e) le 23 mars 2015 Oui c'est vraiment dommage de ne pas pouvoir effectuer un vrai Ping car en ce qui me concerne, j'utilise ce code pour détecter l'état de ma TV Samsung (dont le réseau est DOWN si en veille...) Le souci c'est que lorsque je l'éteint, l'ouverture de la socket peut prendre jusqu'à30 secondes avant de rendre la main. Sinon, il n'existe pas un moyen de fixer un temps d'exécution àune fonction ? Avec un appel non bloquant par exemple ? Cela permettrait de pouvoir définir une durée max àl'ouverture de la socket et dans on cas limiter le délai d'attente.
Krikroff Posté(e) le 23 mars 2015 Auteur Signaler Posté(e) le 23 mars 2015 J'ai une bonne et une mauvaise nouvelle Sinon, il n'existe pas un moyen de fixer un temps d'exécution à une fonction ? Avec un appel non bloquant par exemple ? La bonne: c'est simple à faire avec la méthode setTimeout La mauvaise: ce n'est possible que dans une scène (en V4) sur le nouveau moteur, de plus pas de TCPSocket possible dans les scènes, pas simple ! sinon peut-être qu'en testant plusieurs fois de suite tu peux déterminer l'état ?
Gazous Posté(e) le 23 mars 2015 Signaler Posté(e) le 23 mars 2015 Merci Krikroff, je ne connaissais pas encore setTimeoout On en revient toujours au même dès qu'on veut essayer de faire un truc simple, ça devient très vite compliqué avec toutes ces limitations absurdes car effectivement je suis dans une Mainloop... Tester plusieurs fois de suite, c'est bien ce que je fais mais lorsque la TV s'éteint, la première tentative génère un timeout de 30s... d'où l'idée d'un connectTimeout. Je pense que ce Timeout est du au fait que la TV est en train de couper son interface réseau... Sinon je crois que je vais coder un script sur RPI qui se charge du ping et qui met à jour un une variable Globale mais ça m'ennui de devoir déporter un truc aussi simple.
jojo Posté(e) le 20 août 2015 Signaler Posté(e) le 20 août 2015 @krikroff, Je travaille avec mprinfo sur un VD "Synology monitoring" et nous aimerions bien réutiliser ton code "ping". ok pour toi ?
Rem's Posté(e) le 25 septembre 2015 Signaler Posté(e) le 25 septembre 2015 Bonjour Krikoff, Je voulais me servir de ta scène pour mes équipement réseau, seulement voila, j'ai l'erreur suivante : Peux-tu m'aider ... ??
jojo Posté(e) le 25 septembre 2015 Signaler Posté(e) le 25 septembre 2015 @Rem's, Tu peux également utiliser mon Synology Monitoring pour surveiller d'autres équipements réseau. Pour le ping, il est inspiré du code de Krikroff
jjacques68 Posté(e) le 26 avril 2016 Signaler Posté(e) le 26 avril 2016 Bonjour à tous, J'ai mis ce bout de code dans le main loop d'un device virtuel, mais visiblement, ça ne fonctionne pas. Le but est de tester la présence de mon iPhone ou pas. si l'iphone est en veille, il n'est pas censé me trouver. si il est actif, il est censé me trouver. tcpSocket = Net.FTcpSocket("192.168.2.31", 3500) bytes, errorCode = tcpSocket:write("test") if errorCode == 0 then fibaro:setGlobal("PresenceJJ", "oui"); fibaro:debug("present"); else fibaro:setGlobal("PresenceJJ", "non"); fibaro:debug("absent"); end Quand j'utilise la fenêtre de debug du module, quand l'iphone est en veille, il ne fait absolument rien (alors qu'il devrait afficher absent), et quand l'iphone est actif, là il me marque absent !!! j'ai raté qqch ? Merci d'avance !!! PS : si je met le port 62078, il m'affiche bien quand il est actif, mais rien si il est en veille...
jjacques68 Posté(e) le 26 avril 2016 Signaler Posté(e) le 26 avril 2016 je me réponds à moi même, en fait ça marche. Simplement le retour négatif du ping met environ 20 secondes à venir. Alors que le retour positif met 2-3 secondes. Donc c'est ok. Dommage qu'avec les iPhone il faille envoyer un push pour le sortir de son mode veille pour que le ping réponde... du coup toutes les 15 minutes je fais un push de test. Mais maintenant la HC peux savoir quand je suis à la maison ou pas, sans passer par le service de géolocalisation et donc sans vider la batterie à vu d'Å“il. merci pour vos informations !!
Messages recommandés