RPi-Projekt Twitternde Webcam Teil 4: Aufbau und fertig
Geschrieben von Mario Hommel amNachdem ich jetzt alle Einzelkomponenten zusammen habe, wird die Webcam jetzt am vorgesehenen Ort positioniert und in Betrieb genommen.
Artikelübersicht
- Teil 1: Der Raspi macht Bilder
- Teil 2: Hallo Twitter
- Teil 3: Wie ist das Wetter?
- Teil 4: Aufbau und fertig (Dieser Artikel)
Teil 4: Aufbau und fertig.
Zunächst habe ich in einem Python-Skript den Part für die Wetterabfrage und das Absetzen des Tweets zusammengeführt:
#!/usr/bin/env python # -*- coding: utf8 -*- # This script gets the current temperature from worldweatheronline.com # and send it to twitter with an aktual Webcam Picture. # written by Mario Hommel # Last Update: 31.03.2016 # imports import urllib import json import serial from time import sleep import sys from twython import Twython # First we get the current temperature in Bad Zwesten # using the worldweatheronline.com api url = "http://api.worldweatheronline.com/premium/v1/weather.ashx?key=[DeinenKeyEinfuegen]&q=Zwesten, Germany&format=json&num_of_days=1" try: response = urllib.urlopen(url) except: print ("Error getting foreign weather") object = json.load(response) # putting temperature in cTemp cTemp = int(object["data"]["current_condition"][0]["temp_C"]) hTemp = int(object["data"]["weather"][0]["maxtempC"]) # now we get the complete text for the tweet ttext = "Täglicher Blick über Bad Zwesten bei " + str(cTemp) + " Grad. Die erwartete Höchsttemperatur beträgt heute " +str(hTemp) + " Grad. #fb" # lets start with twitter # first we define the api CONSUMER_KEY = '[Deine Daten]' CONSUMER_SECRET = '[Deine Daten]' ACCESS_KEY = '[Deine Daten]' ACCESS_SECRET = '[Deine Daten]' api = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET) # upload the last photo taken by fswebcam photo = open('/home/pi/raspitweet/image.jpg', 'rb') response = api.upload_media(media=photo) # finally we send the tweet api.update_status(status=ttext, media_ids=[response['media_id']])
Wie man sieht, habe ich die Wetterdaten noch um die vorhergesagte Höchsttemperatur des aktuellen Tages erweitert. Das Skript ist weiterhin darauf ausgelegt, dass vor seinem Ablauf ein aktuelles Bild mit dem Namen "image.jpg" von der Webcam gespeichert wird. Man könnte das auch in diesem Python-Skript mit abhandeln, aber ich hatte mich ja für die Nutzung von fswebcam entschieden.
Als nächstes schreibe ich ein kleines Bash-Skript "webcam-tweet.sh", dass das Foto macht und das Python-Skript aufruft.
#!/bin/bash fswebcam -r "800x600" /home/pi/raspitweet/image.jpg python /home/pi/raspitweet/rpit-bild.py
Das Skript wird natürlich mit
chmod a+x webcam-tweet.sh
ausführbar gemacht. Danach gilt es noch, den richtigen Platz für die Webcam zu finden. Der Raspi hat im "Echtbetrieb" außer der Stromquelle nur noch die Webcam angeschlossen. Die weitere Steuerung erfolgt komplett über ssh. Als Standort habe ich mir ein Fenster ausgesucht, von dem ein recht netter Blick über meinen Wohnort möglich ist und die Webcam dort "montiert" (man beachte die professionelle Ausführung der Montage ).
Und ja, das Fenster muss dringend mal wieder gestrichen werden.
Zum Schluss muss ich nur noch dafür sorgen, das mein Skript automatisch - sagen wir einmal am Tag - ausgeführt wird. Das erledigt der Cron-Dämon für mich. Mit
crontab -e
wird die Cron-Tabelle des aktuellen Users (pi) aufgerufen und kann bearbeitet werden.
# m h dom mon dow command 15 13 * /home/pi/raspitweet/webcam-tweet.sh
Nach dem Speichern ist es dann soweit. Zur eingestellten Uhrzeit (in diesem Fall jeden Tag um 13.15 Uhr) macht die Webcam ein Bild und der Raspi twittert es artig mit den dazugehörigen Wetterdaten.
Das lasse ich jetzt mal ein paar Tage so laufen und schaue, ob es zuverlässig funktioniert. Ich würde mich freuen, in den Kommentaren Feedback zu bekommen und vielleicht auch den ein oder anderen Link auf eure eigenen Raspi-Projekte.