Ligne 29 : |
Ligne 29 : |
| | | |
| Dans le cas ci-présent, il ne faut pas détecter la fermeture d'un contact (comme le bouton poussoir) '''mais l'ouverture d'un contact'''. | | Dans le cas ci-présent, il ne faut pas détecter la fermeture d'un contact (comme le bouton poussoir) '''mais l'ouverture d'un contact'''. |
| + | |
| + | == Montage == |
| + | Comme pour le bouton poussoir, le montage est élémentaire et utilise une résistance pull-down de 10 KOhms (brun, noir, orange) et une résistance de protection de 100 Ohms (brun, noir, brun). |
| + | |
| + | [[fichier:SPARK-MAGNETIC-SWITCH_bb.jpg|640px]] |
| + | |
| + | Lorsque le contact est fermé (la porte fermée), 3.3V est appliqué sur la broche D4... lorsque la porte est ouverte, le contact reed s'ouvre et la broche D4 est ramenée à la masse par la résistance pull-down. |
| | | |
| == Code == | | == Code == |
Ligne 40 : |
Ligne 47 : |
| // 1) De détecter l'ouverture de contact reed (switch magnetic) avec | | // 1) De détecter l'ouverture de contact reed (switch magnetic) avec |
| // avec déparasitage logiciel. | | // avec déparasitage logiciel. |
− | // 2) Reporte cette information dans une variable "counter" sur Spark Cloud | + | // 2) Reporte cette information dans une variable "counter" sur Particle Cloud |
| // (le nombre d'ouverture) permettant à un autre logiciel comme | | // (le nombre d'ouverture) permettant à un autre logiciel comme |
| // un SmartPhone de détecter l'événement. | | // un SmartPhone de détecter l'événement. |
Ligne 47 : |
Ligne 54 : |
| // Pratique par exemple pour la cabane de jardin, chambre froide, | | // Pratique par exemple pour la cabane de jardin, chambre froide, |
| // box du cheval (s'il est de sortie... donc porte ouverte), etc | | // box du cheval (s'il est de sortie... donc porte ouverte), etc |
− | // 3) Offrir une fonction "reset" sur Spark Cloud permettant | + | // 3) Offrir une fonction "reset" sur Particle Cloud permettant |
| // a un autre logiciel de remettre le compteur "counter" à zéro. | | // a un autre logiciel de remettre le compteur "counter" à zéro. |
| // Force la relecture de l'entrée digital et la mise à jour | | // Force la relecture de l'entrée digital et la mise à jour |
Ligne 70 : |
Ligne 77 : |
| void setup() | | void setup() |
| { | | { |
− | // Enregistrer la variable compteur sur Spark Cloud | + | // Enregistrer la variable compteur sur Particle Cloud |
| Spark.variable("counter", &counter, INT ); | | Spark.variable("counter", &counter, INT ); |
− | // Publie l'état du contact dans la variable "close" sur Spark Cloud | + | // Publie l'état du contact dans la variable "close" sur Particle Cloud |
| Spark.variable("close", &contactState, INT ); | | Spark.variable("close", &contactState, INT ); |
| | | |
− | // Enregistrer la fonction "reset compteur" sur Spark Cloud | + | // Enregistrer la fonction "reset compteur" sur Particle Cloud |
| Spark.function("reset", resetCounter ); | | Spark.function("reset", resetCounter ); |
| | | |
Ligne 129 : |
Ligne 136 : |
| return 1; // retour de valeur pour l'API | | return 1; // retour de valeur pour l'API |
| }</nowiki> | | }</nowiki> |
− |
| |
− | == Montage ==
| |
− | Comme pour le bouton poussoir, le montage est élémentaire et utilise une résistance pull-down de 10 KOhms (brun, noir, orange) et une résistance de protection de 100 Ohms (brun, noir, brun).
| |
− |
| |
− | [[fichier:SPARK-MAGNETIC-SWITCH_bb.jpg|640px]]
| |
− |
| |
− | Lorsque le contact est fermé (la porte fermée), 3.3V est appliqué sur la broche D4... lorsque la porte est ouverte, le contact reed s'ouvre et la broche D4 est ramenée à la masse par la résistance pull-down.
| |
| | | |
| == Faire un appel d'API avec CURL == | | == Faire un appel d'API avec CURL == |
− | Nous allons maintenant tester notre programme... nous allons donc faire des appels d'API sur Spark Cloud. | + | Nous allons maintenant tester notre programme... nous allons donc faire des appels d'API sur Particle Cloud. |
| | | |
| Pour rappel, nous avons deux API dans notre programme: | | Pour rappel, nous avons deux API dans notre programme: |
Ligne 157 : |
Ligne 157 : |
| "name": "counter", | | "name": "counter", |
| "result": 5, | | "result": 5, |
| + | "coreInfo": { |
| + | "last_app": "", |
| + | "last_heard": "2014-12-31T15:53:55.238Z", |
| + | "connected": true, |
| + | "deviceID": "0123456789abcdef" |
| + | } |
| + | }</nowiki> |
| + | |
| + | === L'état du contact === |
| + | Pour commencer, nous allons récupérer l'état du contact magnétique en utilisant curl (voyez nos précédents tutoriels concernant CURL). |
| + | |
| + | <nowiki>curl -G https://api.spark.io/v1/devices/0123456789abcdef/close -d access_token=123412341234</nowiki> |
| + | |
| + | Ce qui produit le résultat ci-dessous, où vous pouvez constater que le contact est actuellement ouvert (a priori, la porte est ouverte): |
| + | |
| + | <nowiki>{ |
| + | "cmd": "VarReturn", |
| + | "name": "close", |
| + | "result": 1, |
| "coreInfo": { | | "coreInfo": { |
| "last_app": "", | | "last_app": "", |
Ligne 166 : |
Ligne 185 : |
| | | |
| === Réinitialiser le compteur === | | === Réinitialiser le compteur === |
− | Idéalement votre programme utilisant l'API Spark devrait prendre la valeur du compteur... puis surveiller le changement de cette valeur. | + | Idéalement votre programme utilisant l'API Particle devrait prendre la valeur du compteur... puis surveiller le changement de cette valeur. |
| | | |
| Si le compteur augmente... c'est que l'on a ouvert le contact (la porte) :-) | | Si le compteur augmente... c'est que l'on a ouvert le contact (la porte) :-) |
Ligne 172 : |
Ligne 191 : |
| Restons pragmatique... cette façon de faire n'est pas forcement confortable. | | Restons pragmatique... cette façon de faire n'est pas forcement confortable. |
| | | |
− | En conséquence, nous avons ajouté une fonction '''reset''' sur Spark Cloud pour réinitialiser le compteur (ps: j'ai volontairement laissé le paramètre "params", même s'il est vide). | + | En conséquence, nous avons ajouté une fonction '''reset''' sur Particle Cloud pour réinitialiser le compteur (ps: j'ai volontairement laissé le paramètre "params", même s'il est vide). |
| | | |
| <nowiki>curl https://api.spark.io/v1/devices/0123456789abcdef/reset -d access_token=123412341234 -d params=</nowiki> | | <nowiki>curl https://api.spark.io/v1/devices/0123456789abcdef/reset -d access_token=123412341234 -d params=</nowiki> |
Ligne 186 : |
Ligne 205 : |
| }</nowiki> | | }</nowiki> |
| | | |
− | La valeur 1 est retournée par l'exécution de la fonction sur le Spark... mais le compteur sera bien à zéro! | + | La valeur 1 est retournée par l'exécution de la fonction sur le Particle... mais le compteur sera bien à zéro! |
| | | |
| {{Spark-Core-Hacking-TRAILER}} | | {{Spark-Core-Hacking-TRAILER}} |