Twitter nämna Mood Light (1 / 7 steg)
Steg 1: Koncept: Arduino {bearbetning / Python} Twitter
Den allmänna idén: har du en LED genererar en fredlig glöd, cykling genom en massa färger, och under tiden du har fått behandling eller Python lyssnar på Twitter för varje omnämnande av när den hittar en Twitter status med den skriver till Arduino över följetong och Arduino ändrar LED från fredliga glöd till alert.
Kretskort (steg 6) har två knappar: Återställ och skicka. Reset-knappen ändras LED från "alert" tillbaka till "fredlig glow." Knappen Skicka skickar en Twitter statusuppdatering till din bearbetning eller Python lager, och därifrån upp till Twitter. När du trycker på Skicka-knappen, håll ner tills du ser blixten av vitt ljus (ca 1 sekund.) Detta bekräftar den knapp push har lästs av Arduino.
Det finns viss förvirring om Twitter gränser . Den gräns är antalet gånger Twitter kommer att låta dig träffa sina servrar per timme, för närvarande 350 träffar per timme. Gå över den siffran och Twitter kommer att blockera dig. Jag gjorde samma bestämmelse för detta i både behandling och Python: vänta 15 sekunder mellan träffar. I bearbetning, i void draw() , se delay(15000); . I Python, i medan satsen, se time.sleep(15). Detta påverkar inte tidpunkten för någon knapp att trycka eller seriell samtal.
Arduino koden är densamma för både behandling och Python utom när Arduino lyssnar på följetong. Både behandling och Python passera ett heltalsvärde 1 (arduino.write(1) ) men Arduino får ett annat värde (numeriska / ascii), vilket är varför du kommer att se dessa två rader i Arduino kod:
om (serialMsg == 1) state = "nämner"; bearbetning
om (serialMsg == 49) state = "nämner"; python
Detta är eftersom jag inte är säker hur till passera strängvärdet "nämna " över följetong i Python. Det är inte kritiskt, så jag lämnar arbeta som ovan, men om någon har en lösning för att skicka en sträng (arduino.write("mention") ), särskilt i Python, posta i kommentarerna nedan.
Mitt i detta projekt är funktionen getMentions() . Det är intressant att jämföra hur de ser ut i bearbetning och i Python.
Bearbetning (java)
Sök efter varje omnämnande av
void getMention() {
Lista nämner = null;
försök {
nämner = twitter.getMentions();
}
fånga (TwitterException e) {
println ("undantag:" e + "; statusCode: "+ e.getStatusCode());
}
Status status = (Status)mentions.get(0);
Sträng newID = str(status.getId());
om (oldID.equals(newID) == false) {
oldID = newID;
println(status.gettext() + ", av
Arduino.write(1); Arduino blir 1
}
}
# Python
# Sök efter varje omnämnande av
def getMention():
status = api. GetReplies()
newID = str(status[0].id)
globala oldID
om (newID! = oldID):
oldID = newID
Skriv ut status [0] .text + ", av
Arduino.write(1) # arduino blir 49
I båda fallen är det ID-värdet fick i "lång" format. Genom att konvertera från "länge" till "sträng" med str() vi kunna jämföra värdet och agera därefter. Jag hade svårt att göra som i långt format.