Advertentie
Twitter is 's werelds grootste opslagplaats van korte berichten van mensen die niets te zeggen hebben - en nu kunt u dat ook draag bij aan dat epische project met een geautomatiseerde Twitter-bot, aangedreven door je Raspberry Pi. Ik maak natuurlijk een grapje – sommige mensen tweeten zelfs interessante dingen Hoe Twitter te gebruiken om te zoeken naar mentoren in uw interessegebiedIn de echte wereld is een mentor een wijze leraar die iemand ondersteunt en begeleidt, en hen helpt hun potentieel te maximaliseren. In de online wereld zou je heel veel geluk hebben als je iemand vindt die ... Lees verder . Ik ben er echter niet een van - ik gebruik mijn mijn voor schaamteloze productpromotie in ruil voor gratis spullen, wedstrijdinzendingen en het automatisch plaatsen van nieuwe afleveringen van onze eigen Technophilia Podcast. Wat dan ook - mijn volgers houden van mij!
@ w0lfiesmith Ik haat je Twitter-account. Zo veel.
- Justin Pot (@jhpot) 21 augustus 2013
Nu ga ik het nut van mijn persoonlijke Twitter-stream vergroten door een Raspberry Pi elk uur automatisch de huidige CPU-temperatuur te laten tweeten en een webcam-afbeelding!
Ermee beginnen
Dit project maakt gebruik van Python; een eenvoudige programmeertaal, ideaal voor doe-het-zelf-projecten. We beginnen met installeren Twython op de Pi - een Python-module voor interface met Twitter; het opzetten van een Twitter-applicatie om een API-sleutel te krijgen; ga dan namens ons de Pi tweeten. Het wordt zo leuk!
Ik doe dit op Raspian - maar het zou in theorie op elk moeten werken Linux-gebaseerd besturingssysteem dat je op de Pi hebt 11 besturingssystemen die op uw Raspberry Pi draaienWat uw Raspberry Pi-project ook is, er is een besturingssysteem voor. We helpen u het beste Raspberry Pi-besturingssysteem te vinden voor uw behoeften. Lees verder . Als je dat nog niet hebt gedaan, zorg er dan voor dat je SSH instelt zodat we op afstand kunnen inloggen en console-opdrachten kunnen uitvoeren.
Twython installeren
Het is een goed idee om eerst updates uit te voeren. Kopieer en plak de volgende opdrachten één voor één - de meeste vereisen bevestiging.
sudo apt-get update. sudo apt-get upgrade. sudo apt-get installeer python-setuptools. sudo easy_install pip. sudo pip installeer twython.
Een Twitter-app registreren
Om de Twitter-API te gebruiken, dat wil zeggen de REST-interface die we zullen gebruiken om nieuwe tweets te plaatsen en in het algemeen met Twitter te communiceren buiten de Twitter-website, moeten we een nieuwe app registreren. Doe dat via deze link - u hoeft geen callback-URL op te geven en u maakt gewoon een website als u dat wilt.
Zodra je klaar bent, zie je iets dat hierop lijkt: deze sleutels zijn uniek voor jou.
De app is standaard ingesteld op alleen-lezen, dus we kunnen geen tweets publiceren zonder dat te wijzigen in Lezen en schrijven. Ga naar het tabblad Instellingen en wijzig de Applicatie type.
Eenmaal opgeslagen, ga terug naar de Details tabblad en klik op de knop onderaan om maak een OAuth-toegangstoken - dit geeft uw applicatie toegang tot uw eigen Twitter-account. Vernieuw de pagina en laat de pagina open voor later. We moeten een paar van die sleutels binnen een minuut plakken.
Maak uw Python-project
Begin met het maken van een nieuwe map voor uw Tweet-project en maak vervolgens een nieuw bestand.
mkdir SillyTweeter. cd SillyTweeter. sudo nano SillyTweeter.py.
Je kunt het natuurlijk noemen hoe je maar wilt.
Kopieer en plak in de weergegeven teksteditor het volgende en vervang de consumentensleutel door de relevante sleutel van de Twitter-toepassingspagina die we eerder open lieten. Elke sleutel is omgeven door enkele aanhalingstekens, dus zorg ervoor dat u die niet mist. Let daar op TOEGANGSSLEUTEL wordt aangeduid als Toegangstoken op de Twitter-app-pagina.
#! / usr / bin / env python. import sys. van Twython importeer Twython. CONSUMER_KEY = '*************** UW GEGEVENS ******************' CONSUMER_SECRET = '*************** UW GEGEVENS ******************' ACCESS_KEY = '*************** UW GEGEVENS ******************' ACCESS_SECRET = '*************** UW GEGEVENS ******************' api = Twython (CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY, ACCESS_SECRET) api.update_status (status = sys.argv [1])
Druk op Ctrl-X en druk op Y om af te sluiten en het bestand op te slaan. Maak het uitvoerbaar met de volgende opdracht (uw Python-bestandsnaam vervangen als u iets anders hebt gekozen)
sudo chmod + x SillyTweeter.py.
Je zou nu in staat moeten zijn om je vermogen om tweets te posten te testen:
python SillyTweeter.py 'Hallo allemaal, dit is mijn Raspberry Pi die je meer onzin twittert'
Tweeten van uw CPU-temp
Nu je elke vorm van onzin kunt posten, kunnen we de app aanpassen om de huidige CPU-temperatuur te bepalen, want het zal me verdomd schelen als de wereld dat niet elk uur hoeft te weten.
Begin met het toevoegen van nog een import voor os-bibliotheek:
import os
Voeg vervolgens de volgende regels toe en vervang de vorige api.update_status uit het bovenstaande voorbeeld.
cmd = '/ opt / vc / bin / vcgencmd measure_temp' line = os.popen (cmd) .readline (). strip () temp = line.split ('=') [1] .split ("'") [0] api.update_status (status = 'Mijn huidige CPU-temperatuur is' + temp + 'C')
Ik zal deze code niet te veel uitleggen omdat het er niet echt toe doet - het voert een commando uit dat grijpt de temperatuur, verdeelt vervolgens de output om het aantal te extraheren, en tweets dat met een gewoonte bericht. U vindt het complete voorbeeld code hier.
Tweeten van webcamfoto's
Laten we nu iets heel nuttigs maken; we gaan webcamfoto's tweeten. Gelukkig ondersteunt Twython de API-functie update_status_with_media, wat de zaken vrij eenvoudig maakt.
Sluit een USB-webcam aan op uw apparaat en controleer of deze wordt herkend met de opdracht:
ls / dev / video *
als je het ziet video0, je hebt geluk. Ik gebruikte een Playstation 3 PSEye-camera en het werkte prima zonder extra beenwerk.
We gaan ook de gebruiken pygame bibliotheken om een foto te maken; voeg de volgende regels toe net na de bestaande importinstructies:
pygame importeren. pygame.camera importeren. van pygame.locals import * pygame.init () pygame.camera.init () cam = pygame.camera. Camera ("/ dev / video0", (640,480)) cam.start () afbeelding = cam.get_image () pygame.image.save (afbeelding, 'webcam.jpg')
Kortom, je hebt de webcam met een specifieke resolutie geïnitialiseerd (je moet dit misschien aanpassen omdat het een heel oude camera is), een foto gemaakt en opgeslagen als jpg. Elke keer dat de app wordt uitgevoerd, overschrijven we dezelfde webcam.jpg.
Pas ten slotte de regel update_status aan om te lezen:
photo = open ('webcam.jpg', 'rb') api.update_status_with_media (media = foto, status = 'Mijn RPi tweeten nu afbeeldingen =>')
Natuurlijk kunt u de statustekst desgewenst weer wijzigen in uw huidige CPU-temperatuur. De volledige code hiervoor voorbeeld is hier.
Kun je dat herhalen?
Een Twitter-bot is alleen nuttig als deze automatisch meerdere keren wordt uitgevoerd; je wilt niet dat je daar elk uur het commando uitvoert. Om dit te bereiken, gebruiken we de CRON-planningsfunctie van Pi (Wat is een CRON-baan? Automatiseer uw Wordpress-back-up met Simple Shell Scripting & CRONDe laatste keer dat we het hadden over Wordpress-back-ups, liet ik u zien hoe ongelooflijk eenvoudig het was om uw hele database en bestanden via SSH te back-uppen met slechts een paar opdrachten. Deze keer ga ik laten zien ... Lees verder )
sudo crontab -e
Plak in deze regel om elk uur te lopen.
* / 60 * * * * python /home/pi/SillyTweeter/SillyTweeter.py
Verander dat in * * * * * als je wilt dat het elke minuut draait, en wees bereid om volgers sneller te verliezen dan een Twitter-account dat volgers snel verliest.
Dat is voor vandaag. Ik ben blij dat ik meer dwaasheid heb bijgedragen aan de enorme rijkdom aan nutteloze bytes op internet, en ik hoop dat jij dat ook doet! Toon je waardering voor deze tutorial door tweeten, en laat ons dan weten waar je eigen Twitter-bot over gaat tweeten in de reacties.
Afbeelding tegoed: adafruit / flickr
James heeft een BSc in Artificial Intelligence en is CompTIA A + en Network + gecertificeerd. Hij is de hoofdontwikkelaar van MakeUseOf en brengt zijn vrije tijd door met het spelen van VR paintball en bordspellen. Hij bouwt al pc's sinds hij een kind was.