Heinzelman et al. ont proposé une famille de protocoles appelée SPIN (Sensor Protocols for Information via Negotiation), reposant sur un modèle de négociation afin de propager l'information dans un réseau de capteurs. Le but de SPIN est de pallier aux problèmes de l'inondation, qui sont :
L'implosion due à la duplication inutile des réceptions d'un même message.
Le chevauchement lié au déploiement dense des capteurs. En utilisant l'inondation, les capteurs d'une zone émettrons tous la même donnée (ou presque).
L'ignorance des ressources, car d'inondation ne prend pas en considération les ressources des noeuds.
Ces trois problèmes affectent grandement la durée de vie et les performances du réseau. Pour les résoudre, SPIN adopte deux principes :
La négociation : pour éviter le problème d'implosion, SPIN précède l'émission d'une donnée par sa description, en utilisant la notion de méta-données. Le récepteur aura le choix par la suite d'accepter la donnée ou non. Ce mécanisme permet aussi de régler le problème de chevauchement.
L'adaptation aux ressources : d'une manière continue, les noeuds contrôlent leur niveau d'énergie. Le protocole SPIN accommode son exécution suivant l'énergie restante du capteur, et modifie en conséquence le comportement du noeud.
Les communications dans SPIN se font en trois étapes :
Lorsqu'un noeud veut émettre une donnée, il émet d'abord un message ADV contenant une description de la donnée en question.
Un noeud recevant un message ADV, consulte sa base d'intérêt. S'il est intéressé par cette information, il émet un message REQ vers son voisin.
En recevant un message REQ, l'émetteur transmet à l'intéressé la donnée sous forme d'un message DATA.
La figure suivante illustre ces trois étapes :
Lorsque le noeud s'aperçoit que son énergie est descendu sous un certain seuil, il change son mode de fonctionnement, et ne répond à aucun message ADV.