Stap 3: Code walkthrough!
Wanneer u klaar bent moet je kunnen gaan naar het IP-adres van uw linkit een en zoiets als wat is afgebeeld voor deze stap.
#include <LTask.h>#include <LWifi.h> #include <LWifiServer.h> #include <LWifiClient.h> #include <LBattery.h>
Dit zijn de bibliotheken van mediatek. Ik kan me niet herinneren welke taak doet. De wifi-help met wifi en de batterij een biedt twee eenvoudige functies. Een te controleren van het niveau van de batterij en één om u te vertellen als het wordt geladen of gelost.
// Configuration of the WiFi AP settings.#define WIFI_AP "foo" #define WIFI_PASSWORD "bar"// LWIFI_OPEN, LWIFI_WPA, or LWIFI_WEP. #define WIFI_AUTH LWIFI_WPA
Zet hier uw specifieke AP-informatie (dit is het soort ding dat in een liefhebber schets zou je in de eigenschappen van een bestand op het deel van de opslag van de Raad van bestuur en Lees hier).
// Configure the timeout of a http request (ms).const uint32_t requestTimeout = 1000;// Global variables LWiFiServer server(80); char buff[256];
Zelf verklarende globale variabelen. De server port het wat dat 80 is.
void setup(){ LTask.begin(); LWiFi.begin(); Serial.begin(115200); //delay(2000); }
Ik haalde de vertraging die in de oorspronkelijke tekening was. Als u wilt weten waarom vertragingen zijn kwade controle dit uit: https://www.sparkfun.com/news/1940
yadda yadda... er is wat code die controleert de status van wifi en het spams naar de seriële console. Ik ga niet te gaan over het hier. Het is geweldig voor het snel uitzoeken welk IP-adres uw linkit een heeft ontvangen van de AP. De andere kant kan je dat het door te gaan naar de adminpagina van uw Toegangspunt en kijken naar de DHCP indienen voor het item met het overeenkomstige MAC-adres (blik op de sticker op de onderkant van je board).
while (client.connected()) { if (client.available()) { // we basically ignores client request, but wait for HTTP request end int c = client.read(); lastReceptionTime = millis(); Serial.print((char)c); if (c == '\n' && currentLineIsBlank) { Serial.println("send response"); // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: application/json"); client.println("Connection: close"); // the connection will be closed after completion of the response client.println("Access-Control-Allow-Origin: *"); client.println(); client.print("{\"batteryLevel\":\""); client.print(LBattery.level()); client.print("\", \"chargingStatus\":\""); client.print(LBattery.isCharging()); client.print("\"}"); client.println(); break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } else { if (millis() - lastReceptionTime > requestTimeout) { Serial.println("Error - client timeout, dropping connection..."); break; } } } // give the web browser time to receive the data delay(500); // close the connection: Serial.println("close connection"); client.stop(); Serial.println("client disconnected"); }
Dit stukje is de juiste webserver. Het zorgt voor alles, van wanneer een client het hits met een HTTP GET tot het punt dat die verbinding is gedaan.
De belangrijke dingen gebeurt in deze lijnen:
client.println("Content-Type: application/json");
Deze regel wordt het MIME-type van de terugkeer naar json, die wordt begrepen door veel "IoT enablers" zoals ubidots, Vrijboord, enz.
client.print("{\"batteryLevel\":\"");client.print(LBattery.level()); client.print("\", \"chargingStatus\":\""); client.print(LBattery.isCharging());
De LBattery.level() is dat zeer eenvoudige methode die ik op eerder zinspeelde die gewoon het niveau van de batterij retourneert. Helaas het is niet zeer fijnkorrelige en zal slechts 0, 33, 66 en 100.
Het is vrij eenvoudig te vervangen deze code met uw eigen en hebben een sensor-waardes voorgeschoteld als de json-gegevens voor gemakkelijke consumptie. Vervang batteryLevel met uw descriptor en de functieaanroep met een functie-aanroep waarmee gegevens worden opgehaald van uw sensor van keuze. Ook kunt u deze afdrukken lijnen in hetzelfde patroon om te bouwen van meer structuur in het uitbreiden. Voor meer info over json en welke json ziet eruit als check-out: http://www.w3schools.com/json/