Sociala medier hamster (4 / 5 steg)

Steg 4: Koden

Nu, koden. Den elektriska imp plattformen ger dig alla instrument att interagera med hela världen av API: er och webservices. I grund och botten koden är kluvna i två: en agent, som körs på de elektriska Imp Cloud servrarna, och en enhet, vilket är din elektriska Imp

[Kopiera & klistra in från den officiella elektriska Imp dokumentation]

Agent-objekt representerar de imp agent: SSI-ekorren, kör i den elektriska Imp cloud servrar, som handlar om Internet-begäranden och svar för den integrerade havspolitiken. Agent-objektet används för att medla mellan den integrerade havspolitiken och dess agent.

Enhetsobjektet representerar serverbaserade agentens syn på den integrerade havspolitiken och används för att medla mellan agenten och den integrerade havspolitiken.

[End kopiera & klistra]

Så här går vi med vår agent kod. Den är baserad på användbara twitter biblioteket ingår i elektriska Imp webservices referens. Jag lade också till denna del av koden generera händelsen tweet manuellt

testa funktionen för manuella hamster skakar
funktion requestHandler (begäran, svar) {
försök {
Kontrollera om användaren skickas ledde som en frågeparameter
om ("tweet" i request.query) {
Device.send ("tweet", null);
}
Skicka ett svar tillbaka säger allt var OK.
Response.send (200, "tweet test ok");
} fånga (ex) {
Response.send (500, "Internal Server Error:" + ex);
}
}
registrera HTTP-hanteraren
http.OnRequest(requestHandler);

Om du vill aktivera twitter ström realtid parsning, behövde jag bara konfigurera dessa twitter konstanter

Twitter nycklar
CONST API_KEY = "";
CONST API_SECRET = "";
CONST AUTH_TOKEN = "";
CONST TOKEN_SECRET = "";

och denna linje

Twitter.Stream ("onTweet);

som berättar i grunden till stream-objektet att fånga alla tweets som innehåller strängen"
Så är här den kompletta agent koden

Copyright (c) 2013 elektriska Imp
Denna fil är licensierad under MIT License
http://opensource.org/licenses/MIT
Twitter nycklar
CONST API_KEY = "";
CONST API_SECRET = "";
CONST AUTH_TOKEN = "";
CONST TOKEN_SECRET = "";
klass Twitter {
OAuth
_consumerKey = null;
_consumerSecret = null;
_accessToken = null;
_accessSecret = null;
URL: er
streamUrl = "https://stream.twitter.com/1.1/";
tweetUrl = "https://api.twitter.com/1.1/statuses/update.json";
Streaming
streamingRequest = null;
_reconnectTimeout = null;
_buffer = null;
konstruktören (consumerKey, consumerSecret, accessToken, accessSecret) {
Detta ._consumerKey = consumerKey;
Detta ._consumerSecret = consumerSecret;
Detta ._accessToken = accessToken;
Detta ._accessSecret = accessSecret;
Detta ._reconnectTimeout = 60.
Detta ._buffer = "";
}
/***************************************************************************
* funktion: Tweet
* Inlägg en tweet till användarens tidslinje
*
* Params:
* status - tweet
* cb - en valfri återuppringning
*
* Avkastning:
* bool som anger om tweet framgångsrika (om ingen cb var medföljer)
* nothing(if a callback was supplied)
**************************************************************************/
funktionen tweet (status, cb = null) {
lokala headers = {};
lokala begäran = _oAuth1Request (tweetUrl, headers, {"status": status});
om (cb == null) {
lokala svar = request.sendsync();
om (svar & & response.statuscode! = 200) {
Server.log (format ("fel updating_status tweet. HTTP-Status koden % i:\r\n%s", response.statuscode, response.body));
returnera false;
} annat {
return true;
}
} annat {
Request.sendasync(CB);
}
}
/***************************************************************************
* funktion: ström
* Öppnar en anslutning till twitter streaming API
*
* Params:
* searchTerms - vad vi söker efter
* onTweet - callback funktion som körs när det finns data
* VidFel - callback funktion som körs när det finns ett fel
**************************************************************************/
funktionen stream (searchTerms, onTweet, onError = null) {
Server.log ("öppna ström för:" + searchTerms);
Ange standardhanterare för fel
om (VidFel == null) VidFel = _defaultErrorHandler.bindenv(this);
lokala metod = "statuses/filter.json"
lokala headers = {};
lokala post = {spår = searchTerms};
lokala begäran = _oAuth1Request (streamUrl + metod, rubriker, skriva);
this.streamingRequest = request.sendasync ()
function(resp) {
tidsgräns för dataanslutning
Server.log ("Stream stängd (" + resp.statuscode + ":" + resp.body + "")"");
om vi har autoreconnect som
om (resp.statuscode == 28) {
Stream (searchTerms, onTweet, onError);
} else om (resp.statuscode == 420) {
IMP.wakeup (_reconnectTimeout, function() {stream (searchTerms, onTweet, onError);}. bindenv(this));
_reconnectTimeout * = 2;
}
} .bindenv(this),
function(Body) {
försök {
om (body.len() == 2) {
_reconnectTimeout = 60.
_buffer = "";
hemkomst.
}
lokala data = null;
försök {
data = http.jsondecode(body);
} catch(ex) {
_buffer += kropp;
försök {
data = http.jsondecode(_buffer);
} fånga (ex) {
hemkomst.
}
}
om (data == null) återvända;
om det är ett fel
om ("fel" i data) {
Server.log ("fick ett fel");
onError(data.errors);
hemkomst.
}
annat {
om (_looksLikeATweet(data)) {
onTweet(data);
hemkomst.
}
}
} catch(ex) {
om ett fel uppstått, åberopa fel hanterare
VidFel ([{meddelande = "Ekorre fel -" + ex, kod = -1}]);
}
} .bindenv(this)
);
}
/ *** Privata funktion - kallar inte *** /
funktion _encode(str) {
återvända http.urlencode({s = str}).slice(2);
}
funktion _oAuth1Request (postUrl, headers, data) {
lokal tid = time();
lokala nonce = tid;
lokala parm_string = http.urlencode ({oauth_consumer_key = _consumerKey});
parm_string += "&" + http.urlencode ({oauth_nonce = nonce});
parm_string += "&" + http.urlencode ({oauth_signature_method = "HMAC-SHA1"});
parm_string += "&" + http.urlencode ({oauth_timestamp = tid});
parm_string += "&" + http.urlencode ({oauth_token = _accessToken});
parm_string += "&" + http.urlencode ({oauth_version = "1.0"});
parm_string += "&" + http.urlencode(data);
lokala signature_string = "POST &" + _encode(postUrl) + "&" + _encode(parm_string);
lokala nyckel = format ("%s & %s", _encode(_consumerSecret), _encode(_accessSecret));
lokala sha1 = _encode (http.base64encode (http.hash.hmacsha1 (signature_string, nyckel)));
lokala auth_header = "oauth_consumer_key = \" "+ _consumerKey +"\",";
auth_header += "oauth_nonce = \" "+ nonce +"\",";
auth_header += "oauth_signature = \" "+ sha1 +"\",";
auth_header += "oauth_signature_method = \" "+"HMAC-SHA1"+"\",";
auth_header += "oauth_timestamp = \" "+ tid +"\",";
auth_header += "oauth_token = \" "+ _accessToken +"\",";
auth_header += "oauth_version=\"1.0\"";
lokala headers = {
"Tillstånd": "OAuth" + auth_header
};
lokala url = postUrl + "?" + http.urlencode(data);
lokala begäran = http.post (url, headers, "");
returnera begäran;
}
funktion _looksLikeATweet(data) {
tillbaka)
"created_at" i data & &
"id" i data & &
"text" i data & &
"användare" i data
);
}
funktion _defaultErrorHandler(errors) {
foreach (fel i fel) {
Server.log ("Fel" + error.code + ":" + error.message);
}
}
}
Twitter <-Twitter (API_KEY, API_SECRET, AUTH_TOKEN, TOKEN_SECRET);
funktion onTweet(tweetData) {
Logga tweet, och som twittrade det (det finns mycket mer information i tweetData)
Server.log (format ("%s - %s", tweetData.text, tweetData.user.screen_name));
Device.send ("tweet", null);
}
testa funktionen för manuella hamster skakar
funktion requestHandler (begäran, svar) {
försök {
Kontrollera om användaren skickas ledde som en frågeparameter
om ("tweet" i request.query) {
Device.send ("tweet", null);
}
Skicka ett svar tillbaka säger allt var OK.
Response.send (200, "tweet test ok");
} fånga (ex) {
Response.send (500, "Internal Server Error:" + ex);
}
}
Twitter.Stream ("yoursearchstring", onTweet);
registrera HTTP-hanteraren
http.OnRequest(requestHandler);

Så, här är den styrkod, baserad på den elektriska Imp PWM Servo exempel

Dessa värden kan vara olika för din servo
CONST SERVO_MIN = 0,03;
CONST SERVO_MAX = 0,1;
skapa global variabel för servo och konfigurera
servo <-hardware.pin7;
servo.configure (PWM_OUT, 0,02, SERVO_MIN);
tilldela en global variabel pin9
ledde <-hardware.pin9;
Konfigurera LED stift för DIGITAL_OUTPUT
LED.configure(DIGITAL_OUT);
global variabel att spåra aktuella status LED stift
statliga < - 0;
inställd initialvärde LED stift (0 = av, 1 = på)
LED.write(State);
förväntar sig ett värde mellan 0.0 och 1.0
funktion SetServo(value) {
lokala scaledValue = värde * (SERVO_MAX-SERVO_MIN) + SERVO_MIN;
servo.write(scaledValue);
}
förväntar sig ett värde mellan-80.0 och 80,0
funktion SetServoDegrees(value) {
lokala scaledValue = (värde + 81) / 161.0 * (SERVO_MAX-SERVO_MIN) + SERVO_MIN;
servo.write(scaledValue);
}
nuvarande position (vi ska knäppa mellan 0 och 1)
ståndpunkten < - 0;
funktion HamsterDance() {
SetServoDegrees(-10);
IMP.Sleep(0.5);
SetServoDegrees(0);
IMP.Sleep(0.2);
SetServoDegrees(-15);
IMP.Sleep(0.2);
SetServoDegrees(5);
IMP.Sleep(0.2);
SetServoDegrees(-20);
IMP.Sleep(0.2);
SetServoDegrees(0);
IMP.Sleep(0.2);
SetServoDegrees(-78);
}
funktion ShakeRattleAndRoll(ledState) {
Server.log ("Låt oss skaka hamster!");
slå på lysdioderna för visuell felsökning
LED.write(1);
//
HamsterDance();
IMP.Sleep(2);
stänga av led
LED.write(0);
}
initiera servo till startposition
SetServoDegrees(-78);
skaka hamstern när fick ett tweet meddelande från Agent
agent.on ("tweet", ShakeRattleAndRoll);

Se Steg
Relaterade Ämnen

April dårar dag upptåg, hur till-block sociala medier webbplatser

detta instructable visar hur blockera sociala medier eller någon hemsida som ett aprilskämt dag skämt, eller att hålla dina arbetare ärlig och produktiva medan på jobbet...

Vackra bilden citat för Social Media

Har du sett bilder med inspirerande citat cirkulerar runt Facebook, Twitter, Pinterest eller andra sociala medier webbplatser? Jag slår vad du har, och det är poängen. Dessa typer av bilder är populära eftersom de ger människor ett uppsving av inspir...

DIY sociala medier foto Prop

Min man och jag hade en ganska enkel, gör det själv/bröllopsfest. Tyvärr när vi gifte (2010) det var inte riktigt en Pinterest hjälpa oss med idéer. Om det hade varit, misstänker jag att vårt bröllop skulle ha sett lite annorlunda och med mycket mer...

Hur du lägger till sociala medier knappar du Blogger (Blogspot) blogg

Jag gick igenom blod, svett, tårar och en massa olika idéer tillSlutligen hitta rätt sätt att lägga till sociala medier knappar i min blogg. Eftersom det var så svårt för mig, beslöt jag att göra en tutorial för att hjälpa dig om du står inför samma...

Sociala Media 2016: Olika Live Streaming alternativ

Förstå de olika 2 live streaming applikationer tillgängliga som nu är integrerade i sociala media applikationer.Med bara telefonen kan du nu livestream en händelse, objekt eller person.Enligt idrottens sociala "6 i den sociala medier trender som komm...

Hur man skapar en WordPress blogg med en sociala medier funktion

Hej, heter jag Dan Lee, stolt Virginia Tech student och blogga hobby som har skapat blogg webbplatser det senaste året. Jag förstår att skapa en blogg kan vara frustrerande ibland. Så, jag delar en instruktion om hur man skapar en blogg i 12 viktiga...

Sociala medier Sandwich Boards

Dessa smörgås styrelser skapades för att bäras under parader.Steg 1: Samla materialKartongSaxLinjalenFärgMålarpenslarPennaSträng eller repTejpSteg 2: Mät och kapa kartong till önskad storlekSteg 3: Markera ut i området där din logotyp placerasAlla so...

Bästa sociala medier konsult och utbildare i Nigeria

Top sociala medier konsult i Nigeria hjälper dig att använda kraften av The Internet och sociala medier att växa ditt företag, rådgivning, kyrkan, departement och bok försäljning. Skapa kändis och myndigheten Status bli "Berömda namn" i din mark...

Tillgång till sociala medier och Internet under en katastrof

Information är maktOrkanen sandstranden som precis passerade oss har visat kraften i naturen inför tekniken. När strömmen går ut och är ute för ett par dagar vårt beroende på blir teknik en skriande öm tumme.Lyckligtvis min familj skonades de full wr...

GPS, filmer, sociala medier för din bil!

Inte har råd med en touchscreen DVD-spelare för bilen... Eller trött på att hålla telefonen under lång väg resor? Sägs om att skapa din egen multipurpose telefonen/tablett hållare med poster som har du redan!Obs: Använder ziploc © väska gör det känsl...

SUPER LÄTT SÄTT ATT HACKA SOCIALA MEDIER CAKE POPS!

Jag älskar dessa! så lätt att göra! Detta är verkligen en video för nybörjare experimentera med "caking" världen!Steg 1:...

Tweeting hamster bur

Har du någonsin undrat vad din hamster gör när du sover eller ut ur huset? Är han kasta vilda fester eller öva franska? Eller kanske bara kör i hans hjul?Vi ville ta reda på själva vad vår hamster, Martin, fick upp till bakom stängda dörrar och så by...

Spåra vänner och ämnen för sociala nätverk använder Intel Edison

Bygg din egen sociala medier assistent med en Intel Edison och några python skript! Detta ett ganska enkelt projekt som gör att du kan se din egen facebook/twitter nyhetsfeed filtrerade som du gillar det.Utforska kod och de biblioteken och du kommer...

Hur du lägger till flytande sociala Ad Bar på din Weebly webbplats.

Här guiden handlar om hur man skapar den flytande bar med sociala medier knappar på weebly webbplats. Weebly har ändra layouten på instrumentpanelen. Dess en ny video av nya layouten weebly dashboard. Jag har hittat många quesiton om 4 olika HTML-fil...

Zombie Apocalypse Quarantine Compound

Vi har haft några bra Halloween temafester genom åren, och vi beslutade att 2015 var året av Zombie apokalyps. Vi har satt ihop en enda Instructable visar den hela "forskning anläggning och karantän sammansatta":), som innehåller sex animerade d...

DIY manen Cave (för mitten/hög Schoolers)

Jag ska visa dig hur man bygger en enkel man grotta. Detta Instructable kommer att visa dig hur man bygger en AWESOME tillhåll som är lätt, relativt snabbt, och viktigast... KOSTNADSEFFEKTIVT. Denna handledning kommer att passa de flesta tonåringar b...

50-årsdagen Superbowl bröstet

Hej alla!Jag skulle vilja dela med er alla min processen att skapa laser graverad kistor! Denna särskilda bröst beställdes som en icke-vinstdrivande projekt av Fox NFL sport. Konceptet var att skapa en öga-tilltalande och kreativ lösning till byggand...

Hur man gör Mojitos - Super Bowl del recept

MOJITO RECEPTFÖLJ MIG PÅ SOCIALA MEDIER!YouTube: https://www.youtube.com/channel/UC6-aoDG0ePzoI_8M...Twitter: https://twitter.com/FactoryTreatInstagram: https://instagram.com/treat.factory/Tumblr: http://treatfactory.tumblr.com/Facebook: https://www....

Cherry Pie Cupcakes

KÖRSBÄRSPAJ CUPCAKESFÖLJ MIG PÅ SOCIALA MEDIER!YouTube: https://www.youtube.com/channel/UC6-aoDG0ePzoI_8M...Twitter: https://twitter.com/FactoryTreatInstagram: https://instagram.com/treat.factory/Tumblr: http://treatfactory.tumblr.com/Facebook: https...