Bonjour à tous,
Pour détourner l'usage d'un Dash Button (bouton qui se connecte en wifi dès qu'on appuie dessus, envois une requête HTTP à Amazon et se déconnecte) dans ma solution domotique, je me suis "amusé" à écrire un petit programme python (v2.7) qui snif les requêtes ARP et pour chacune d'elles, si l'adresse MAC est celle du bouton alors j’envoie une requête sur mon serveur domotique.
La ligne de code est :
sniff(prn=arp_detect, filter="arp", store=0)
C'est dans la fonction arp_detect que je fais le test sur la mac adresse et que je lance la requête au serveur domotique.
Mon programme fonctionne parfaitement bien sur un Raspberry PI 3.
Afin qu'il reste en fonctionnement je le lance avec une commande du genre "sudo nohup nom_prog&" que j'ai mis dans la crontab afin qu'elle soit exécutée à chaque reboot.
Tout cela fonctionne parfaitement ! Mais j'ai tout de même un soucis que je n'arrive pas à comprendre et c'est là que j'ai besoin de vos connaissances.
Comme je l'ai dit tout fonctionne parfaitement. A chaque fois que j’appuie sur mon bouton, il se connecte, le programme détecte la requête ARP sur le LAN, le programme détecte bien s'il s'agit du bouton ou pas et réagis parfaitement en fonction. Si j'utilise le bouton au moins une fois par jour cela fonctionne. Par contre, quand le bouton n'est pas utilisé pendant un temps que j'ai du mal à déterminer, mais je dirais plus de 24h, alors mon programme ne semble pas détecter la requete ARP. Pourtant je suis sur que le bouton c'est bien connecté en wifi et a bien envoyé la requete à Amazon car je reçois une notification d'Amazon sur mon telephone. Il faut que j'appuie une seconde fois sur le bouton pour que le snifer réagisse.
Comme si au bout d'un temps supérieur à 24h le snifer était en sommeil. Mais si c'est le cas alors pourquoi lors de la seconde pression sur le bouton il réagit ?
Pouvez vous m'aider à comprendre ce qu'il se passe ?
Par avance je vous remercie.
Partager