<?xml version="1.0" encoding="utf-8" ?>

<?xml-stylesheet type="text/xsl" href="/templates/2k11/rss.xsl" media="screen" ?>
<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Hommel-Net Weblog (Artikel mit Tag raspberry pi)</title>
    <link>https://blog.hommel-net.de/</link>
    <description>Aus dem Leben eines Admins</description>
    <dc:language>de</dc:language>
    <generator>Serendipity 2.6.0 - http://www.s9y.org/</generator>
    <pubDate>Wed, 08 Jun 2016 20:06:05 GMT</pubDate>

    <image>
    <url>https://blog.hommel-net.de/templates/2k11/img/s9y_banner_small.png</url>
    <title>RSS: Hommel-Net Weblog - Aus dem Leben eines Admins</title>
    <link>https://blog.hommel-net.de/</link>
    <width>100</width>
    <height>21</height>
</image>

<item>
    <title>RPi-Projekt Twitternde Webcam: Wechsel der Wetter-API</title>
    <link>https://blog.hommel-net.de/archives/402-RPi-Projekt-Twitternde-Webcam-Wechsel-der-Wetter-API.html</link>
            <category>Linux</category>
    
    <comments>https://blog.hommel-net.de/archives/402-RPi-Projekt-Twitternde-Webcam-Wechsel-der-Wetter-API.html#comments</comments>
    <wfw:comment>https://blog.hommel-net.de/wfwcomment.php?cid=402</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://blog.hommel-net.de/rss.php?version=2.0&amp;type=comments&amp;cid=402</wfw:commentRss>
    

    <author>nospam@example.com (Mario Hommel)</author>
    <content:encoded>
    &lt;p&gt;Ich hab es irgendwie nicht mitgeschnitten, aber als ich damals im Projekt die Wetter-API von worldweatheronline.com implementiert habe, dachte ich noch, es gäbe eine kostenlose Variante der API. Komischerweise ist das auch immer noch auf der Webseite in den FAQs so zu lesen. Allerdings bemerkte ich jetzt nach dem Ablauf des Testzeitraums für den Premium-Zugriff, dass ich nirgends auf die freie Version der API wechseln konnte. Ein weinig Googlen brachte mich dann auf einen &lt;a href=&quot;https://www.facebook.com/notes/world-weather-online/announcement/988897417853614/&quot; target=&quot;_blank&quot;&gt;Facebook-Post von WorldWeatherOnline&lt;/a&gt;, in dem angekündigt wurde, dass es ab April keine neuen kostenlosen Accounts mehr gibt. Also kurz bevor ich meinen Account erstellt hatte. &lt;img src=&quot;https://blog.hommel-net.de/plugins/serendipity_event_emoticate/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Ok, also habe ich mich mal im Netz nach einer kostenlosen Alternative umgesehen und mit bei &lt;a href=&quot;http://openweathermap.org/&quot; target=&quot;_blank&quot;&gt;OpenWeatherMap&lt;/a&gt; hängen geblieben. Dort wird eine einfache kostenlose API angeboten, mit der ich die momentanen Wetterdaten und einige grundlegende Vorhersagen abrufen kann. Reicht mir völlig.&lt;/p&gt;

&lt;p&gt;Das momentane Wetter ruft man über die URL&lt;/p&gt;

&lt;pre&gt;
http://api.openweathermap.org/data/2.5/weather?id=2803564&amp;amp;units=metric&amp;amp;appid=[DeinApiKey]&lt;/pre&gt;

&lt;p&gt;auf.&lt;/p&gt;

&lt;p&gt;Die Antwort als JSON-Objekt ist recht simpel:&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-json&quot;&gt;{&quot;coord&quot;:
{&quot;lon&quot;:145.77,&quot;lat&quot;:-16.92},
&quot;weather&quot;:[{&quot;id&quot;:803,&quot;main&quot;:&quot;Clouds&quot;,&quot;description&quot;:&quot;broken clouds&quot;,&quot;icon&quot;:&quot;04n&quot;}],
&quot;base&quot;:&quot;cmc stations&quot;,
&quot;main&quot;:{&quot;temp&quot;:293.25,&quot;pressure&quot;:1019,&quot;humidity&quot;:83,&quot;temp_min&quot;:289.82,&quot;temp_max&quot;:295.37},
&quot;wind&quot;:{&quot;speed&quot;:5.1,&quot;deg&quot;:150},
&quot;clouds&quot;:{&quot;all&quot;:75},
&quot;rain&quot;:{&quot;3h&quot;:3},
&quot;dt&quot;:1435658272,
&quot;sys&quot;:{&quot;type&quot;:1,&quot;id&quot;:8166,&quot;message&quot;:0.0166,&quot;country&quot;:&quot;AU&quot;,&quot;sunrise&quot;:1435610796,&quot;sunset&quot;:1435650870},
&quot;id&quot;:2172797,
&quot;name&quot;:&quot;Cairns&quot;,
&quot;cod&quot;:200}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Also sieht der Teil meines Python-Skripts, dass die beiden Temperaturwerte ausgiebt, nun so aus:&lt;/p&gt;

&lt;pre&gt;
&lt;code class=&quot;language-python&quot;&gt;url = &quot;http://api.openweathermap.org/data/2.5/weather?id=2803564&amp;amp;units=metric&amp;amp;appid=xxxxxxxxxxxxxxxxx&quot;

try:
    response = urllib.urlopen(url)
except:
    print (&quot;Error getting foreign weather&quot;)

object = json.load(response)

cTemp = int(object[&quot;main&quot;][&quot;temp&quot;])
hTemp = int(object[&quot;main&quot;][&quot;temp_max&quot;])

# now we get the complete text for the tweet
ttext = &quot;Täglicher Blick über Bad Zwesten bei &quot; + str(cTemp) + &quot; Grad. Die erwartete Höchsttemperatur beträgt heute &quot; +str(hTemp) + &quot; Grad. #raspitweet&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So sollte das Ganze erstmal wieder funktionieren. Vielleicht mache ich noch mal ein paar andere Sachen mit der Wetter-API, mal schauen.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 08 Jun 2016 20:02:00 +0000</pubDate>
    <guid isPermaLink="false">https://blog.hommel-net.de/archives/402-guid.html</guid>
    <category>linux</category>
<category>raspberry pi</category>

</item>
<item>
    <title>RPi-Projekt Twitternde Webcam Teil 4: Aufbau und fertig</title>
    <link>https://blog.hommel-net.de/archives/390-RPi-Projekt-Twitternde-Webcam-Teil-4-Aufbau-und-fertig.html</link>
            <category>Linux</category>
    
    <comments>https://blog.hommel-net.de/archives/390-RPi-Projekt-Twitternde-Webcam-Teil-4-Aufbau-und-fertig.html#comments</comments>
    <wfw:comment>https://blog.hommel-net.de/wfwcomment.php?cid=390</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>https://blog.hommel-net.de/rss.php?version=2.0&amp;type=comments&amp;cid=390</wfw:commentRss>
    

    <author>nospam@example.com (Mario Hommel)</author>
    <content:encoded>
    &lt;p&gt;Nachdem ich jetzt alle Einzelkomponenten zusammen habe, wird die Webcam jetzt am vorgesehenen Ort positioniert und in Betrieb genommen.&lt;/p&gt;

&lt;h3&gt;Artikelübersicht&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.hommel-net.de/archives/387-RPi-Projekt-Twitternde-Webcam-Teil-1-Der-Raspi-macht-Bilder.html&quot;&gt;Teil 1: Der Raspi macht Bilder&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.hommel-net.de/archives/388-RPi-Projekt-Twitternde-Webcam-Teil-2-Hallo-Twitter.html&quot;&gt;Teil 2: Hallo Twitter&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.hommel-net.de/archives/389-RPi-Projekt-Twitternde-Webcam-Teil-3-Wie-ist-das-Wetter.html&quot;&gt;Teil 3: Wie ist das Wetter?&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Teil 4: Aufbau und fertig (Dieser Artikel)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Teil 4: Aufbau und fertig.&lt;/h3&gt;

&lt;p&gt;Zunächst habe ich in einem Python-Skript den Part für die Wetterabfrage und das Absetzen des Tweets zusammengeführt:&lt;/p&gt;

&lt;pre&gt;
#!/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 = &quot;http://api.worldweatheronline.com/premium/v1/weather.ashx?key=[DeinenKeyEinfuegen]&amp;amp;q=Zwesten, Germany&amp;amp;format=json&amp;amp;num_of_days=1&quot;

try:
    response = urllib.urlopen(url)
except:
    print (&quot;Error getting foreign weather&quot;)

object = json.load(response)

# putting temperature in cTemp
cTemp = int(object[&quot;data&quot;][&quot;current_condition&quot;][0][&quot;temp_C&quot;])
hTemp = int(object[&quot;data&quot;][&quot;weather&quot;][0][&quot;maxtempC&quot;])

# now we get the complete text for the tweet
ttext = &quot;Täglicher Blick über Bad Zwesten bei &quot; + str(cTemp) + &quot; Grad. Die erwartete Höchsttemperatur beträgt heute &quot; +str(hTemp) + &quot; Grad. #fb&quot;

# lets start with twitter
# first we define the api
CONSUMER_KEY = &#039;[Deine Daten]&#039;
CONSUMER_SECRET = &#039;[Deine Daten]&#039;
ACCESS_KEY = &#039;[Deine Daten]&#039;
ACCESS_SECRET = &#039;[Deine Daten]&#039;

api = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET)

# upload the last photo taken by fswebcam
photo = open(&#039;/home/pi/raspitweet/image.jpg&#039;, &#039;rb&#039;)
response = api.upload_media(media=photo)

# finally we send the tweet
api.update_status(status=ttext, media_ids=[response[&#039;media_id&#039;]])&lt;/pre&gt;

&lt;p&gt;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 &quot;image.jpg&quot; 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.&lt;/p&gt;

&lt;p&gt;Als nächstes schreibe ich ein kleines Bash-Skript &quot;webcam-tweet.sh&quot;, dass das Foto macht und das Python-Skript aufruft.&lt;/p&gt;

&lt;pre&gt;
#!/bin/bash

fswebcam -r &quot;800x600&quot; /home/pi/raspitweet/image.jpg

python /home/pi/raspitweet/rpit-bild.py&lt;/pre&gt;

&lt;p&gt;Das Skript wird natürlich mit&lt;/p&gt;

&lt;pre&gt;
chmod a+x webcam-tweet.sh&lt;/pre&gt;

&lt;p&gt;ausführbar gemacht. Danach gilt es noch, den richtigen Platz für die Webcam zu finden. Der Raspi hat im &quot;Echtbetrieb&quot; 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 &quot;montiert&quot; (man beachte die professionelle Ausführung der Montage &lt;img src=&quot;https://blog.hommel-net.de/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt; ).&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:199 --&gt;&lt;img alt=&quot;Webcam-Montage&quot; class=&quot;serendipity_image_center&quot; src=&quot;https://blog.hommel-net.de/uploads/images/webcam_fenster.jpg&quot; style=&quot;width:800px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Und ja, das Fenster muss dringend mal wieder gestrichen werden.&lt;/p&gt;

&lt;p&gt;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&lt;/p&gt;

&lt;pre&gt;
crontab -e&lt;/pre&gt;

&lt;p&gt;wird die Cron-Tabelle des aktuellen Users (pi) aufgerufen und kann bearbeitet werden.&lt;/p&gt;

&lt;pre&gt;
# m h  dom mon dow   command
15 13 &lt;strong&gt; &lt;/strong&gt; *     /home/pi/raspitweet/webcam-tweet.sh&lt;/pre&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;		&lt;div class=&quot;serendipity_oembed_rich&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-width=&quot;400&quot;&gt;&lt;p lang=&quot;de&quot; dir=&quot;ltr&quot;&gt;Täglicher Blick über Bad Zwesten bei 16 Grad. Die erwartete Höchsttemperatur beträgt heute 20 Grad. &lt;a href=&quot;https://twitter.com/hashtag/fb?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#fb&lt;/a&gt; &lt;a href=&quot;https://t.co/9UtmHToUXZ&quot;&gt;pic.twitter.com/9UtmHToUXZ&lt;/a&gt;&lt;/p&gt;&amp;mdash; Mario Hommel (@DerMario) &lt;a href=&quot;https://twitter.com/DerMario/status/716584819686313984?ref_src=twsrc%5Etfw&quot;&gt;April 3, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Mon, 04 Apr 2016 19:53:00 +0000</pubDate>
    <guid isPermaLink="false">https://blog.hommel-net.de/archives/390-guid.html</guid>
    <category>linux</category>
<category>projekt</category>
<category>raspberry pi</category>
<category>twitter</category>
<category>webcam</category>

</item>
<item>
    <title>RPi-Projekt Twitternde Webcam Teil 3: Wie ist das Wetter</title>
    <link>https://blog.hommel-net.de/archives/389-RPi-Projekt-Twitternde-Webcam-Teil-3-Wie-ist-das-Wetter.html</link>
            <category>Linux</category>
    
    <comments>https://blog.hommel-net.de/archives/389-RPi-Projekt-Twitternde-Webcam-Teil-3-Wie-ist-das-Wetter.html#comments</comments>
    <wfw:comment>https://blog.hommel-net.de/wfwcomment.php?cid=389</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://blog.hommel-net.de/rss.php?version=2.0&amp;type=comments&amp;cid=389</wfw:commentRss>
    

    <author>nospam@example.com (Mario Hommel)</author>
    <content:encoded>
    &lt;p&gt;Nachdem das mit dem Twittern des Webcambilds funktioniert, hatte ich noch die Idee, nicht immer nur einen statischen Text dazu zu twittern, sondern noch etwas individuelles wie zum Beispiel die aktuelle Temperatur hinzuzufügen. In diesem Teil des Artikels schreibe ich, wie ich das gemacht habe.&lt;/p&gt;

&lt;h3&gt;Artikelübersicht&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.hommel-net.de/archives/387-RPi-Projekt-Twitternde-Webcam-Teil-1-Der-Raspi-macht-Bilder.html&quot;&gt;Teil 1: Der Raspi macht Bilder&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.hommel-net.de/archives/388-RPi-Projekt-Twitternde-Webcam-Teil-2-Hallo-Twitter.html&quot;&gt;Teil 2: Hallo Twitter&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Teil 3: Wie ist das Wetter? (Dieser Artikel)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.hommel-net.de/archives/390-RPi-Projekt-Twitternde-Webcam-Teil-4-Aufbau-und-fertig.html&quot;&gt;Teil 4: Aufbau und fertig&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Teil 3: Wie ist das Wetter?&lt;/h3&gt;

&lt;p&gt;Ok, wo bekomme ich die aktuelle Temperatur her? Die eine Möglichkeit wäre, einen Temperaturfühler an den Raspi anzuschliessen. Oder ich könnte die Temperatur von einem Wetterdienst im Internet beziehen. Ich habe mich zunächst für die zweite Variante entschieden (aber was nicht ist, kann ja noch werden).&lt;/p&gt;

&lt;p&gt;Ich möchte die API von worldweatheronline.com nutzen. Sie bietet viele Wetterdaten und es gibt eine kostenlose Version. Nach der Anmeldung bei dem Dienst erhalte ich zunächst eine Trial-Version der Premium-API, die ich erstmal zwei Monate lang nutzen kann. Danach werde ich auf die freie Version umsteigen, die für meine Zwecke völlig ausreichend ist.&lt;/p&gt;

&lt;p&gt;Mit der Anmeldung erhält man einen API-Key, den man dann für Abfragen im XML- oder JSON-Format nutzen kann. Ich nutze das JSON-Format und frage das ganze über die entsprechenden Bibliotheken in Python ab. Das Skript dazu sieht folgerndermaßen aus:&lt;/p&gt;

&lt;pre&gt;
#!/usr/bin/env python
# -*- coding: utf8 -*-

# imports
import urllib
import json
import serial

# let&#039;s start by getting the current temperature in Bad Zwesten
# using the worldweatheronline.com api
url = &quot;http://api.worldweatheronline.com/premium/v1/weather.ashx?key=[DeinenKeyEinfuegen]&amp;amp;q=Zwesten, Germany&amp;amp;format=json&amp;amp;num_of_days=1&quot;

try:
    response = urllib.urlopen(url)
except:
    print (&quot;Error getting weather info.&quot;)

object = json.load(response)

cTemp = int(object[&quot;data&quot;][&quot;current_condition&quot;][0][&quot;temp_C&quot;])

ttext = &quot;Täglicher Blick über Bad Zwesten, heute bei &quot; + str(cTemp) + &quot; Grad.&quot;

print ttext&lt;/pre&gt;

&lt;p&gt;Ich frage erstmal aus dem ganzen JSON-Objekt nur den Wert der momentanen Temperatur in Celsius ab. Die Ausgabe des Skripts sieht so aus:&lt;/p&gt;

&lt;pre&gt;
Täglicher Blick über Bad Zwesten, heute bei 6 Grad.&lt;/pre&gt;

&lt;p&gt;Gern könnt ihr auch mal einen Blick in das &lt;a href=&quot;http://blog.hommel-net.de/uploads/images/weather-json.txt&quot;&gt;komplette JSON-Objekt&lt;/a&gt; werfen, hier seht ihr alle Werte, die man über die API erhält.&lt;/p&gt;

&lt;p&gt;Ich denke, jetzt habe ich alles zusammen, was ich für den Aufbau des Projekts brauche und im vorerst letzten Teil dieser Artikelserie werde ich dann beschreiben, wie ich alles zusammenfüge und fertigstelle.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sun, 03 Apr 2016 09:49:00 +0000</pubDate>
    <guid isPermaLink="false">https://blog.hommel-net.de/archives/389-guid.html</guid>
    <category>linux</category>
<category>projekt</category>
<category>raspberry pi</category>
<category>twitter</category>
<category>webcam</category>

</item>
<item>
    <title>RPi-Projekt Twitternde Webcam Teil 2: Hallo Twitter</title>
    <link>https://blog.hommel-net.de/archives/388-RPi-Projekt-Twitternde-Webcam-Teil-2-Hallo-Twitter.html</link>
            <category>Linux</category>
    
    <comments>https://blog.hommel-net.de/archives/388-RPi-Projekt-Twitternde-Webcam-Teil-2-Hallo-Twitter.html#comments</comments>
    <wfw:comment>https://blog.hommel-net.de/wfwcomment.php?cid=388</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://blog.hommel-net.de/rss.php?version=2.0&amp;type=comments&amp;cid=388</wfw:commentRss>
    

    <author>nospam@example.com (Mario Hommel)</author>
    <content:encoded>
    &lt;p&gt;Im zweiten Teil dieser Artikelserie werde ich dem Raspberry Pi das Twittern beibringen.&lt;/p&gt;

&lt;h3&gt;Artikelübersicht&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.hommel-net.de/archives/387-RPi-Projekt-Twitternde-Webcam-Teil-1-Der-Raspi-macht-Bilder.html&quot;&gt;Teil 1: Der Raspi macht Bilder&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Teil 2: Hallo Twitter (dieser Artikel)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.hommel-net.de/archives/389-RPi-Projekt-Twitternde-Webcam-Teil-3-Wie-ist-das-Wetter.html&quot;&gt;Teil 3: Wie ist das Wetter?&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.hommel-net.de/archives/390-RPi-Projekt-Twitternde-Webcam-Teil-4-Aufbau-und-fertig.html&quot;&gt;Teil 4: Aufbau und fertig&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Teil 2: Hallo Twitter&lt;/h3&gt;

&lt;p&gt;Damit der Raspberry automatisch Tweets verschicken kann, benötige ich eine Bibliothek für eine Skriptsprache, die eine Anbindung an den Kurznachrichtendienst bietet. Das von mir genutzte Raspbian hat von Hause aus die Skriptsprache Python an Bord, die mit dem Modul &lt;a href=&quot;https://github.com/ryanmcgrath/twython&quot; target=&quot;_blank&quot;&gt;Twython&lt;/a&gt; über eine entsprechende Schnittstelle verfügt. Um Twython zu installieren sind folgende Schritte notwendig. Vor der Installation mache ich vorsichtshalber noch ein Update, damit alle Pakete auf dem neuesten Stand sind.&lt;/p&gt;

&lt;pre class=&quot;language-bash&quot;&gt;
sudo apt&lt;span class=&quot;operator token&quot;&gt;-&lt;/span&gt;get update
sudo apt&lt;span class=&quot;operator token&quot;&gt;-&lt;/span&gt;get upgrade
sudo apt&lt;span class=&quot;operator token&quot;&gt;-&lt;/span&gt;get install python&lt;span class=&quot;operator token&quot;&gt;-&lt;/span&gt;setuptools
sudo easy_install pip
sudo pip install twython&lt;/pre&gt;

&lt;h4&gt;Eine Twitter App registrieren&lt;/h4&gt;

&lt;p&gt;Um die Bibliothek nutzen zu können, muss man zunächst bei Twitter eine eigene App anlegen, über die man Zugriff auf sein Twitter-Konto über die API bekommt. Über &lt;a href=&quot;https://apps.twitter.com/app/new&quot; target=&quot;_blank&quot;&gt;diesen Link&lt;/a&gt; komme ich auf die entsprechende Seite zur Neuanlage einer App.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:195 --&gt;&lt;img alt=&quot;Twitter-App anlegen&quot; class=&quot;serendipity_image_center&quot; src=&quot;https://blog.hommel-net.de/uploads/images/rpi-twitter1.jpg&quot; style=&quot;width:1000px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Die Pflichtfelder müssen ausgefüllt werden. Der Name der App muss twitterweit eindeutig sein, hier muss man sich also einen einmaligen Namen ausdenken. &lt;img src=&quot;https://blog.hommel-net.de/plugins/serendipity_event_emoticate/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; class=&quot;emoticon&quot; /&gt; Nachdem man die Bedingungen akzeptiert und den Neuanlage-Button geklickt hat, ist man schon in den Konfigurationsseiten der eigenen App.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:196 --&gt;&lt;img alt=&quot;Konfigseite Twitter App&quot; class=&quot;serendipity_image_center&quot; src=&quot;https://blog.hommel-net.de/uploads/images/rpi-twitter2.jpg&quot; style=&quot;width:848px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Hier ist es wichtig, dass bei &quot;Access-Level&quot; die Einstellung &quot;Read and Write&quot; gesetzt ist. Wenn nicht, kann man dass über den Reiter &quot;Permissions&quot; noch ändern. Im Reiter &quot;Keys und Access Tokens&quot; kann man sich nun über den entsprechenden Button sein persönliches Access Token erstellen.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:197 --&gt;&lt;img alt=&quot;Twitter App Access Tokens&quot; class=&quot;serendipity_image_center&quot; src=&quot;https://blog.hommel-net.de/uploads/images/rpi-twitter3.jpg&quot; style=&quot;width:754px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Diese Seite lasse ich geöffnet, da ich die Werte gleich beim erstellen meines Python-Skripts benötige.&lt;/p&gt;

&lt;h4&gt;Skript anlegen&lt;/h4&gt;

&lt;p&gt;Jetzt lege ich ein Verzeichnis an und erstelle dort ein Python-Skript.&lt;/p&gt;

&lt;pre&gt;
mkdir raspitweet
cd raspitweet
nano raspitweet.py&lt;/pre&gt;

&lt;p&gt;Das Skript sieht folgendermaßen aus:&lt;/p&gt;

&lt;pre class=&quot;language-python&quot;&gt;
#!/usr/bin/env python
import sys
from twython import Twython
CONSUMER_KEY &lt;span class=&quot;operator token&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string token&quot;&gt;&#039;***************Deine Daten*****************&#039;&lt;/span&gt;
CONSUMER_SECRET &lt;span class=&quot;operator token&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string token&quot;&gt;&#039;***************Deine Daten*****************&#039;&lt;/span&gt;
ACCESS_KEY &lt;span class=&quot;operator token&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string token&quot;&gt;&#039;***************Deine Daten*****************&#039;&lt;/span&gt;
ACCESS_SECRET &lt;span class=&quot;operator token&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string token&quot;&gt;&#039;***************Deine Daten*****************&#039;&lt;/span&gt;

api &lt;span class=&quot;operator token&quot;&gt;=&lt;/span&gt; Twython&lt;span class=&quot;punctuation token&quot;&gt;(&lt;/span&gt;CONSUMER_KEY&lt;span class=&quot;punctuation token&quot;&gt;,&lt;/span&gt;CONSUMER_SECRET&lt;span class=&quot;punctuation token&quot;&gt;,&lt;/span&gt;ACCESS_KEY&lt;span class=&quot;punctuation token&quot;&gt;,&lt;/span&gt;ACCESS_SECRET&lt;span class=&quot;punctuation token&quot;&gt;)&lt;/span&gt; 

api&lt;span class=&quot;punctuation token&quot;&gt;.&lt;/span&gt;update_status&lt;span class=&quot;punctuation token&quot;&gt;(&lt;/span&gt;status&lt;span class=&quot;operator token&quot;&gt;=&lt;/span&gt;sys&lt;span class=&quot;punctuation token&quot;&gt;.&lt;/span&gt;argv&lt;span class=&quot;punctuation token&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;number token&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;punctuation token&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;punctuation token&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Die Werte für die Keys und Secrets übernehme ich natürlich aus der oben geöffneten Webseite. Nach dem Speichern des Skripts mache ich es noch ausführbar:&lt;/p&gt;

&lt;pre&gt;
chmod a+x raspitweet.py&lt;/pre&gt;

&lt;p&gt;Jetzt erzeugt ein&lt;/p&gt;

&lt;pre&gt;
python raspitweet.py &#039;Basteln mit dem Rasperry Pi. :-)&#039;&lt;/pre&gt;

&lt;p&gt;den folgenden Tweet.&lt;/p&gt;

&lt;p&gt;		&lt;div class=&quot;serendipity_oembed_rich&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-width=&quot;400&quot;&gt;&lt;p lang=&quot;de&quot; dir=&quot;ltr&quot;&gt;Basteln mit dem Raspberry Pi. &lt;img src=&quot;https://blog.hommel-net.de/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&amp;mdash; Mario Hommel (@DerMario) &lt;a href=&quot;https://twitter.com/DerMario/status/714850996854341632?ref_src=twsrc%5Etfw&quot;&gt;March 29, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;Das klappt ja schon prima. &lt;img src=&quot;https://blog.hommel-net.de/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt; Da der Raspi ja auch Bilder twittern soll, muss das Skript noch etwas erweitert werden.&lt;/p&gt;

&lt;pre&gt;
#!/usr/bin/env python
import sys
from twython import Twython
CONSUMER_KEY &lt;span class=&quot;operator token&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string token&quot;&gt;&#039;***************Deine Daten*****************&#039;&lt;/span&gt;
CONSUMER_SECRET &lt;span class=&quot;operator token&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string token&quot;&gt;&#039;***************Deine Daten*****************&#039;&lt;/span&gt;
ACCESS_KEY &lt;span class=&quot;operator token&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string token&quot;&gt;&#039;***************Deine Daten*****************&#039;&lt;/span&gt;
ACCESS_SECRET &lt;span class=&quot;operator token&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string token&quot;&gt;&#039;***************Deine Daten*****************&#039;&lt;/span&gt;

api &lt;span class=&quot;operator token&quot;&gt;=&lt;/span&gt; Twython&lt;span class=&quot;punctuation token&quot;&gt;(&lt;/span&gt;CONSUMER_KEY&lt;span class=&quot;punctuation token&quot;&gt;,&lt;/span&gt;CONSUMER_SECRET&lt;span class=&quot;punctuation token&quot;&gt;,&lt;/span&gt;ACCESS_KEY&lt;span class=&quot;punctuation token&quot;&gt;,&lt;/span&gt;ACCESS_SECRET&lt;span class=&quot;punctuation token&quot;&gt;)&lt;/span&gt; 

# upload the last photo taken by fswebcam
photo = open(&#039;/home/pi/raspitweet/image.jpg&#039;, &#039;rb&#039;)
response = api.upload_media(media=photo)

# finally we send the tweet
api.update_status(status=&#039;Der Raspi twittert jetzt auch Bilder.&#039;, media_ids=[response[&#039;media_id&#039;]])&lt;/pre&gt;

&lt;p&gt;Das Skript nimmt also das Bild mit dem Dateinamen &quot;image.jpg&quot; in unserem Skriptverzeichnis und lädt es zusammen mit einem Text zu Twitter hoch. Ein Start des Skripts mit&lt;/p&gt;

&lt;pre&gt;
python raspitweet.py&lt;/pre&gt;

&lt;p&gt;hat nun diesen Tweet zur Folge.&lt;/p&gt;

&lt;p&gt;		&lt;div class=&quot;serendipity_oembed_rich&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-width=&quot;400&quot;&gt;&lt;p lang=&quot;de&quot; dir=&quot;ltr&quot;&gt;Der Raspi twittert jetzt auch Bilder. &lt;a href=&quot;https://t.co/DNYDFD7loB&quot;&gt;pic.twitter.com/DNYDFD7loB&lt;/a&gt;&lt;/p&gt;&amp;mdash; Mario Hommel (@DerMario) &lt;a href=&quot;https://twitter.com/DerMario/status/715074301016350720?ref_src=twsrc%5Etfw&quot;&gt;March 30, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;Jetzt habe ich alles, um erfolgreich das Bild der Webcam twittern zu können. Mittlerweile hatte ich noch überlegt, ob man vielleicht einige aktuelle Wetterdaten mit in den Tweet nehmen könnte. Also schaue ich in Teil 3 dieser Serie, ob und wie ich mit dem Raspi an Wetterdaten heran komme.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Fri, 01 Apr 2016 15:32:00 +0000</pubDate>
    <guid isPermaLink="false">https://blog.hommel-net.de/archives/388-guid.html</guid>
    <category>linux</category>
<category>projekt</category>
<category>raspberry pi</category>
<category>twitter</category>
<category>webcam</category>

</item>
<item>
    <title>RPi-Projekt Twitternde Webcam Teil 1: Der Raspi macht Bilder</title>
    <link>https://blog.hommel-net.de/archives/387-RPi-Projekt-Twitternde-Webcam-Teil-1-Der-Raspi-macht-Bilder.html</link>
            <category>Linux</category>
    
    <comments>https://blog.hommel-net.de/archives/387-RPi-Projekt-Twitternde-Webcam-Teil-1-Der-Raspi-macht-Bilder.html#comments</comments>
    <wfw:comment>https://blog.hommel-net.de/wfwcomment.php?cid=387</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>https://blog.hommel-net.de/rss.php?version=2.0&amp;type=comments&amp;cid=387</wfw:commentRss>
    

    <author>nospam@example.com (Mario Hommel)</author>
    <content:encoded>
    &lt;p&gt;Vor einiger Zeit habe ich mal einen Tweet gelesen, ich habe ihn auf die Schnelle nicht wieder gefunden. Er ging ungefähr so: &quot;Neue tolle Projektidee für den Raspberry Pi, Hardware bestellt, nie wieder angefasst.&quot; Auch bei mir liegen mittlerweile zwei Raspis herum, werden ab und an mal gestartet und mit einer anderen Distro bespielt, aber das wars dann auch schon.&lt;/p&gt;

&lt;p&gt;Jetzt hatte ich nach Ostern ein paar Tage Urlaub und war in Bastellaune. Da kam mir die Idee, mit dem etwas ältern RPi Modell B und einer hier ebenfalls schon etwas angestaubten Webcam von Logitech eine Webcam aufzubauen, die ihre Bilder dann auch twittern kann. Eigentlich kein großes Ding, also hab ich mich mal daran gesetzt und das Ergebnis dokumentiere ich hier in dieser kleinen Artikelreihe.&lt;/p&gt;

&lt;h3&gt;Artikelübersicht&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Teil 1: Der Raspi macht Bilder (dieser Artikel)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.hommel-net.de/archives/388-RPi-Projekt-Twitternde-Webcam-Teil-2-Hallo-Twitter.html&quot;&gt;Teil 2: Hallo Twitter&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.hommel-net.de/archives/389-RPi-Projekt-Twitternde-Webcam-Teil-3-Wie-ist-das-Wetter.html&quot;&gt;Teil 3: Wie ist das Wetter?&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.hommel-net.de/archives/390-RPi-Projekt-Twitternde-Webcam-Teil-4-Aufbau-und-fertig.html&quot;&gt;Teil 4: Aufbau und fertig&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Teil 1: Der Raspi macht Bilder&lt;/h3&gt;

&lt;p&gt;Wie gesagt nehme ich für das Projekt einen Raspberry Pi Modell B und eine Logitech Webcam.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:193 --&gt;&lt;img alt=&quot;Raspberry Pi und Webcam&quot; class=&quot;serendipity_image_center&quot; src=&quot;https://blog.hommel-net.de/uploads/images/rpi-projekt.jpg&quot; style=&quot;width:800px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Als Betriebssystem habe ich zunächst das akutelle Raspbian-Image auf &lt;a href=&quot;https://www.raspberrypi.org/downloads/&quot; target=&quot;_blank&quot;&gt;https://www.raspberrypi.org/downloads/&lt;/a&gt; gezogen und auf die obligatorische SD-Karte übertragen. Das neue Image bootet automatisch in den grafischen Modus. Das ist für den späteren Betrieb unnötig. Im Terminal habe ich also zunächst mit&lt;/p&gt;

&lt;pre&gt;
sudo raspi-config&lt;/pre&gt;

&lt;p&gt;die Konfiguration dahingehend geändert, dass der Raspi nur noch in den Textmodus startet. Bei dieser gelegenheit wurde gleich noch die Sprache, Tastaturlayout und Zeitzone auf deutsche Verhältinisse angepasst.&lt;/p&gt;

&lt;p&gt;Damit bin ich auch schon bereit, den ersten Schritt anzugehen, nämlich mit der Logitech Kamera Bilder auf dem Raspi zu produzieren. Die Kamera wurde dazu an einen der beiden USB-Ports angeschlossen. Eine Softwarepaket, dass einfach Bilder mit einer Webcam erzeugt, war mit &quot;fswebcam&quot; schnell gefunden. Das Paket wird einfach mit&lt;/p&gt;

&lt;pre&gt;
sudo apt-get install fswebcam&lt;/pre&gt;

&lt;p&gt;installiert. Die Nutzung ist denkbar einfach:&lt;/p&gt;

&lt;pre&gt;
fswebcam image.jpg&lt;/pre&gt;

&lt;p&gt;sucht nach der ersten angeschlossenen USB-Kamera und mach ein Bild, das unter dem angegebenen Dateinamen abgespeichert wird. Dabei wird eine Default-Auflösung von 384x288 genutzt. Die Auflösung kann man über den Parameter &quot;-r&quot; ändern, so erstellt&lt;/p&gt;

&lt;pre&gt;
fswebcam -r 800x600 image.jpg&lt;/pre&gt;

&lt;p&gt;ein solches Bild:&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:194 --&gt;&lt;img alt=&quot;Raspberry Testbild&quot; class=&quot;serendipity_image_center&quot; src=&quot;https://blog.hommel-net.de/uploads/images/rpi-test.jpg&quot; style=&quot;width:800px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Wie man sieht, fügt fswebcam dem Bild automatisch ein Banner mit dem aktuellen Datum und der Uhrzeit hinzu (wie bei Webcams durchaus üblich). Dies kann man über den Parameter &quot;--no-banner&quot; aber auch ausschalten. fswebcam hat noch einige Parameter mehr zu bieten, diese kann man sich über die Manpage des Pakets zu Gemüte führen. Ich benötige zunächst nur die oben angegebene Variante für meine Zwecke.&lt;/p&gt;

&lt;p&gt;Da das Aufnehmen von Bildern über die Webcam jetzt funktioniert, können wir uns im nächsten Teil der Artikelreihe damit befassen, dem Raspi das Twittern beizubringen.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Thu, 31 Mar 2016 14:08:00 +0000</pubDate>
    <guid isPermaLink="false">https://blog.hommel-net.de/archives/387-guid.html</guid>
    <category>linux</category>
<category>projekt</category>
<category>raspberry pi</category>
<category>twitter</category>
<category>webcam</category>

</item>

</channel>
</rss>
