Superenkel dashboarding direkt på linkit en (2 / 2 steg)
Steg 2: Äntligen en enkel lösning
Detta är vad jag äntligen kom fram till. Något som är super enkelt. Ingen javascript alls. Några beroenden, inga lastande yttre json sidor, bara enkla html med en refresh-taggen. Det är inte den vackraste sak i världen, men det fungerar.
De flesta av genomgången är likvärdiga med vad är i så, jag kommer inte att upprepa att alla här.
Jag kommer dock lyfta fram några saker som du bör kolla in:
< p >< meta http-equiv = "uppdatera" content = "30" / >< /p >
Detta tvingar sidan att ladda varje 30 sekunden. Det är så liten att du inte kommer att märka.
String batteryLevel = String(LBattery.level());
String batteryCharging = String(LBattery.isCharging());
Jag konvertera heltal från LBattery-funktioner direkt i strängar för enkel utskrift.
Taggen < mätare > återges inte i alla webbläsare. Till exempel i Safari på min frus iphone gör det så tomt.
Också, som du ser i kommentarerna här är baserad på Apache licens koden från Evothings. Inte kopiera och klistras in rutorna koden i detta exempel. Vissa escape-tecken användes (detta verktyg var ganska bra att göra saker skrivs ut korrekt för detta instructable: http://www.accessify.com/tools-and-wizards/developer-tools/quick-escape/default.php). I stället hämtar koden från min github här: https://github.com/stirobot/evothings-examples/blob/master/examples/mediatek-linkit/mediatek_linkit/linkitone_battery_json_with_meters.ino
Notering:
//
Copyright 2015, Evothings AB
//
Licensieras under Apache License, Version 2.0 ("licensen")
du får inte använda denna fil utom i enlighet med licensen.
Du kan erhålla en kopia av licensen på
//
http://www.apache.org/licenses/LICENSE-2.0
//
Om inte tillämplig lagstiftning eller gått med på att skriftligen, programvara
distribuerad under licensen är utdelad på ett "AS IS" grund,
UTAN garantier eller villkor av något slag, varken uttryckliga eller underförstådda.
Se licensen för språket styr behörigheter och
begränsningar under licens.
//
LinkIt en - Position
//
Skapad februari, 2015
//
Ändrat av github användaren stirobot November, 2015 att exponera batteristatus i stället för GPS (t.ex. en enklare)
Detta exempel visar hur du hämtar ställning och dela med
en enkel webserver.
//
#include < LTask.h >
#include < LWifiServer.h >
#include < LWifiClient.h >
#include < LWifi.h >
#include < LBattery.h >
Konfiguration av WiFi AP inställningar.
#define WIFI_AP "blah"
#define WIFI_PASSWORD "svart"
LWIFI_OPEN, LWIFI_WPA eller LWIFI_WEP.
#define WIFI_AUTH LWIFI_WPA
Konfigurera timeout för en http-begäran (ms).
CONST uint32_t requestTimeout = 1000;
Globala variabler
LWiFiServer server(80);
röding buff [256];
void setup()
{
LTask.begin();
LWiFi.begin();
Serial.BEGIN(115200);
Delay(2000);
}
void loop()
{
statiska bool wifiStatusPrinted = false;
connectToAccessPoint(); okomplicerad
om (Serial & & wifiStatusPrinted == false)
{
printWifiStatus();
wifiStatusPrinted = sant;
}
annat om (!. Serial)
{
wifiStatusPrinted = false;
}
LWiFiClient klient = server.available();
om (klient)
{
Serial.println ("ny kund");
en http-förfrågan avslutas med en tom rad
booleska currentLineIsBlank = sant;
uint32_t lastReceptionTime = millis();
samtidigt (client.connected())
{
om (client.available())
{
Vi i princip ignorerar klientbegäran, men vänta HTTP begäran slutet
int c = client.read();
lastReceptionTime = millis();
Serial.Print((Char)c);
String batteryLevel = String(LBattery.level());
String batteryCharging = String(LBattery.isCharging());
om (c == '\n' & & currentLineIsBlank)
{
Serial.println ("Skicka svar");
Skicka ett standard http-svarshuvud
client.println ("HTTP/1.1 200 OK");
client.println ("Content-Type: text/html");
client.println ("anslutning: Stäng"); anslutningen kommer att stängas efter slutförandet av svar
client.println ("Access-kontroll-tillåta-ursprung: *");
client.println();
client.println ("<! DOCTYPE html > ");
client.println ("< html >< kropp >");
client.println ("< h3 > enkel Sensor mäter Demo < /p >");
client.println ("< p > batteri (med mätaren element):" + batteryLevel + "< mätaren id = \"bat\"min = \"0\"max = \"100\"värde = \" "+ batteryLevel +"\">< / meter >< /p >");
client.println ("< p > batteri (med framsteg element):" + batteryLevel + "< framsteg id = \"batp\"min = \"0\"max = \"100\"värde = \" "+ batteryLevel +"\">< / meter >< /p >");
client.println ("< p > laddning:" + batteryCharging + "< /p >");
client.println ("< meta http-equiv = \"refresh\"innehåll = \"30\"/ >< / body >< / html >");
client.println();
bryta;
}
om (c == "\n")
{
du börjar en ny rad
currentLineIsBlank = sant;
}
annars om (c! = '\r')
{
du har fått ett tecken på den aktuella raden
currentLineIsBlank = false;
}
}
annat
{
om (millis() - lastReceptionTime > requestTimeout)
{
Serial.println ("fel - client timeout, släppa anslutning...");
bryta;
}
}
}
de web webbläsare möjlighet att ta emot data
Delay(500);
stänga anslutningen:
Serial.println ("nära samband");
client.stop();
Serial.println ("klienten kopplas från");
}
}
Hjälpare funktioner
void connectToAccessPoint()
{
medan (LWiFi.status()! = LWIFI_STATUS_CONNECTED)
{
om (LWiFi.connect (WIFI_AP, LWiFiLoginInfo (WIFI_AUTH, WIFI_PASSWORD)))
{
Server.BEGIN();
printWifiStatus();
}
annat
{
Serial.println ("fel - kunde inte ansluta till WiFi");
}
}
}
Hjälpare funktioner från WifiWebServer.ino exempel utvecklat av MediaTek
void printWifiStatus()
{
skriva ut SSID för nätverket du är ansluten till:
Serial.Print ("SSID:");
Serial.println(LWiFi.SSID());
skriva ut din WiFi shield's IP-adress:
IP-adress ip = LWiFi.localIP();
Serial.Print ("IP-adress:");
Serial.println(IP);
Serial.Print ("nätmask:");
Serial.println(LWiFi.subnetMask());
Serial.Print ("gateway IP:");
Serial.println(LWiFi.gatewayIP());
skriva ut mottagna signalstyrka:
långa rssi = LWiFi.RSSI();
Serial.Print ("signalstyrka (RSSI):");
Serial.Print(RSSI);
Serial.println ("dBm\n");
}