Stap 10: Firmware - elektrische Imp Agent en apparaat
Excuses voor de volgende hergebruik van tekst uit mijn vorige elektrische instructable imp - de eisen zijn hetzelfde. Alleen maar om u van het navigeren van een andere link te slaan!
Om uw imp te werken, moet het aansluiten op uw draadloze netwerk. Elektrische Imp biedt een instrument dat de configuratie optisch doet. Het proces heet BlinkUp en is gedetailleerd hier https://electricimp.com/docs/gettingstarted/1-blinkup/ Zodra de BlinkUp voltooid is, verschijnt uw imp op uw IDE onder nieuwe apparaten. Als u een elektrische Imp voordat niet hebt gebruikt, stel ik dat u eerst proberen de Hello World voorbeeld op de site van de elektrische Imp te krijgen de knie van het GMB. Er is ook een geweldige gids voor het GMB op instructables geschreven door
De firmware voor het GMB is gekoppeld aan deze stap als RewardSystemDeviceCode.nut
De code voor de expediteur is gekoppeld als RewardSystemAgentCode.nut
Firmware en Agent code interactie
Uw Agent heeft een specifieke URL. Wanneer een HTTP-bericht wordt verzonden naar deze URL, uw Agent-code die wordt uitgevoerd in de wolk Imp controleert de geldigheid van het verzoek door het vergelijken van de binnenkomende API-sleutel (een sleutel die je make-up - meer bits maken het moeilijker te raden) met de API-sleutel opgeslagen in het geheugen van de Agent (het idee van de API-sleutel van http://forums.electricimp.com/discussion/comment/8281#Comment_8281). Als wedstrijd van de sleutel, het bericht wordt gecontroleerd om te bepalen of het verzoek in de API voor dit systeem.
Gebeurtenissen die door de Agent krijgen doorgegeven aan de firmware van het apparaat Imp, worden doorgegeven via de elektrische imp beveiligde communicatie kanaal tussen het GMB en de server gebaseerde Agent. Het Imp ontvangt"" dit evenement door de functies van de agent.on die zijn gedefinieerd in de firmware van het apparaat
- agent.on ("addGoalStep", functie (waarde) {});
- agent.on ("buttonPressed", functie (waarde) {});
De API voor deze app:
{verzoek: buttonPressed} - gebruikt voor diagnostiek en om uit te rusten van doel niveaus
{verzoek: persistValues} - waarden voor SendHub communicatie gedefinieerd door de client App worden opgeslagen
{verzoek: addGoalStep} - verhogen van het huidige niveau naar het doel afhankelijk van de waarde van de input. In geval wij de stappen volgens de volgende weging beheren (waar super A is 100%):
Als (waarde == "superA")
goalLevel += 2;
anders als (waarde == "A")
goalLevel += 1;
anders als (waarde == "B")
goalLevel += 0,5;
anders als (waarde == "C")
goalLevel += 0,25;
anders als (waarde == "restartGoal")