Étape 7: Quel est le code d’Agent ?
L’agent a deux emplois :
- Parler à Weather Underground pour obtenir les plus récentes conditions
- Servez le web UI lorsque nécessaire afin que l’utilisateur peut mettre à jour l’emplacement ou voir la prévision prolongée.
Allons-y et sautez en regardant « prepWebpage » pour un moment. Environ 150 lignes vers le bas, jetez un oeil à getConditions.
Pièce la plus importante de la fonction getConditions ressemble à ceci :
Cet extrait de code génère une URL de requête de l’URL de base de l’API Underground de la météo et votre clé API, puis il envoie et attend une réponse, qui est stockée dans Rés. Si tout va bien, res contient ensuite toutes les données dont vous avez besoin sur la météo comme un bloc de JSON, qui nous pouvons analyser facilement :
Finalement, l’agent met ensemble une prévision pour les journaux, puis envoie la pièce maîtresse sur l’appareil :
Semblera familier ? C’est un appel dans le gestionnaire de « seteffect » nous avons vu dans l’appareil, où est analysée la prévision et les effets sont définies. Voilà d'où il vient. Le second paramètre ici est les données de l’appareil recevra : une table avec deux objets, un pour la chaîne de conditions et l’autre pour la température actuelle.
La deuxième tâche de l’agent, qui dessert le web UI, est traitée juste en dessous de getConditions, dans http.onrequest. C’est le gestionnaire de demandes HTTP général, et vous pouvez l’écrire pour faire tout ce que vous désirez en réponse à beaucoup de genres de requêtes HTTP. Celui-ci est assez simple. Il vérifie le chemin pour voir si la demande est venu pour un endroit plus spécifique à l’URL de l’agent. Il existe deux options ici qui déclencheront un comportement spécifique. Si le chemin d’accès est défini sur « getLocation », c’est une requête pour voir où le courant prévision emplacement est (probablement à partir de l’interface web) :
De même, si le chemin d’accès est défini sur « setLocation », c’est une demande de changement de l’emplacement prévu.
Si aucun chemin d’accès n’est fourni à tous, l’agent suppose que c’est une demande de navigateur et remet en retour une grande grande chaîne multiligne - qui se trouve être une page web ! Cela permet l’agent d’agir comme un serveur web minuscule :
C’est tout il y a à lui - et félicitations sur votre nouveau gadget Météo. Profitez !