Elektriska Imp Garage dörröppnare (8 / 11 steg)
Steg 8: HTML-App – genomgång
Den klient app som startar av laddar 4 bilderna som används för animering WiFi vågorna som kommer från roboten (Marvin paranoid android från Liftarens Guide till galaxen) när roboten är rörd. Du kan få gratis teckningar för icke-kommersiellt bruk här:
http://FindIcons.com/Icon/45522/hitchhikeguidetogalaxy1_lock
http://www.Iconarchive.com/show/Hitchhikers-guide-icons-by-IconShock/Marvin-icon.html
Jag sydde ihop bilder av Marvin med en WiFi-ikonen. Jag skär WiFi-ikonen i tre delar för att animera RF vågorna som kommer från marvins huvud. När skärmen är berört i området i bilden, börjar JavaScript animeringen. Animeringen cykler genom 4 bilder med 250ms fördröjning mellan bilderna att simulera att trådlöst skicka ett meddelande till garageporten. Cykeln upprepas två gånger främst eftersom detta undviker otålig familjemedlemmar från peta på skärmen när det inte omedelbart svar från dörren. Som tidigare nämnts, kan latens vara ca 2 sekunder ibland så animeringen kan användare tror att kommunikation är fortfarande pågår.
Kommunicera med den elektriska Imp görs genom att skicka ett meddelande till Imp Agent URL för din Imp.
För HTML-App, vi skapar ett XMLHttpRequest objekt och sedan bokföra det knapp-ID till Imp Agent för din garageport. Tekniskt kunde vi ha ett antal olika knappfunktioner så skicka ID till firmware skulle tillåta firmware kan fatta beslut baserat på knappen som skickades. Dock för denna app har vi bara en knapp så ID är lite överflödig men vi måste skicka något! En fråga jag stötte på var att iOS6 vill cachelagra utgående inlägg. Lösningen är att se till att data du bokför ändras varje gång. Detta gjordes genom att lägga till tidsstämpeln till den sträng som säkerställer att varje inlägg var unik och således inte cachelagrade av iOS. Att ha utgående samtal cachelagrat är meningslöst för mig men det är meningsfullt att någon på Apple. Det finns ett sätt att specifikt begära att utgående samtalet inte cachelagras men det fungerade inte för detta gränssnitt... Se kommentarer i kod.
XMLHTTP.Open ("inlägg", "https://api.electricimp.com/v1/Your_Imp_Specfic_ID_Here", true);
xmlhttp.setRequestHeader ("Content-type", "application/x-www-formuläret-urlencoded");
Skicka ett datum tidsstämpel förhindrar iOS6 cachelagring frågan. Om du ställer in cache-control-huvudet
för denna begäran fungerar det inte. Udda eftersom det fungerar för COSM frågan
XMLHTTP.send ("värde =" + button.id + datum());
För att få status av dörren sensorer, skickas ett query-meddelande till Imp Agent. Du kan kontrollera status genom att trycka på knappen eller dra skärmen ner.
Och som tar hand om HTML App. Nästa steg kommer att diskutera lastning HTML App och vilket gör det verkar vara en native iOS App.