RSS Feed Symbol

How to add images to your WordPress RSS Feed

Wordpress does not add images to your RSS feed. There are plugins to do the job but here is an alternative by adding some lines of code to functions.php.

I accidentically stumbled upon this unexpected WordPress behaviour. Looking for a solution I came across this post Beitragsbilder im WordPress RSS-Feed einbinden by Tobias Rieder. He explained how to add a few lines of code to the functions.php file to add a post’s featured image to the RSS feed.

Of course, you could install a plugin like “Featured Images in RSS w/ Size and Position” to have the same result. But that would be yet another plugin. And every plugin uses some processing time on your server. Moreover, tinkering the functions.php is how real men do stuff like that. 😉 Add the following lines to your theme’s functions.php. It is advised to use a child theme for modifications like this.

function post_thumbnail_in_rss( $content ) {
  global $post;
  if ( has_post_thumbnail( $post->ID ) )
    $content = get_the_post_thumbnail( $post->ID, 'medium', array( 'style' => '' ) ) . $content;
  return $content;
add_filter( 'the_excerpt_rss',  'post_thumbnail_in_rss', 1000, 1 );
add_filter( 'the_content_feed', 'post_thumbnail_in_rss', 1000, 1 );

You can choose the picture’s size to be either full, medium, or thumbnail. Using style in the array you can inject CSS styles, e.g. add a margin or a border to your picture.

Have at it!

RIBB@TACKING Bruce Lee – a C64 game tribute and homage

Bruce Lee homage and art project: A 3D rendered picture from the C64 Game "Bruce Lee" in an Ikea Ribba frame with Arduino magic for a cookoo's clock effect.

One day end of 2015 I stumbled upon some pretty kewl voxel art by Metin Sevin. Amongst many others like Mario Bros, Pacman, or Donkey Kong, I was immediately fascinated by the 3D rendered Bruce Lee Commodore 64 game tribute picture. I contacted Metin and asked him if his work is for sale and he kindly pointed me to society6 where a lot of his art is available in various formats. If you are interested in Metin and his work you can find out more in this interview at the end of this blog post. Due to some other planned projects based on Ikea Ribba frames I had one 23x23cm frame on stock so the 8″x8″ Bruce Lee art print would fit just fine. Shipment from Illinois/USA took about two weeks and I was ready to go for my art project!

tl;dr Watch the video to see what this project is about. Making of with gory details below video.

Project Description

Take the 8″x8″ Bruce Lee art print and put it in a 23x23cm Ikea Ribba frame. Use an Arduino to play the C64 Bruce Lee game title music at 12am and 7pm. Announce every hour starting with the first 3secs of Carl Douglas’ Kung Fu Fighting song and indicate the current hour by an according number of Yamo’s calls (the green Sumo in the game). Announce a quarter past, half past, and a quarter to with the Ninja’s stick strike sound ringing out once, twice, or thrice, respectively. Finally, add a capacative touch sensor to cycle through all Bruce Lee game sounds by touching one corner of the Ribba frame.


1 x 8″x8″ Bruce Lee art print from society6.
1 x RIBBA frame from Ikea seems no longer to be available. You could use a 25×25 cm Sannahed frame as a replacement.
1 x Visaton K28.40 8Ω, Price comparison idealo
1 x Arduino Nano e.g. from eBay
1 x LM386 Audio Amplifier Module e.g. from eBay
1 x DS3231 Real Time Clock (RTC) e.g. from eBay
1 x CR2032 battery for DS3231 RTC
1 x SD Card Module e.g. from eBay
1 x SD Card 1GB is sufficient
1 x 5V 1A power supply

Cables, solder and iron, hot-melt gun, screws, (cordless) screwdriver, drill, side cutter, etc.

A 1GB SD would have been sufficient since the WAVE files are very small. Unfortunately, I threw away old small capacity SD cards years ago “…when should I ever need a one or two GB SD card again?” Well, now I know the answer. Thus, I had to use an 8 GB SD card.

Audacity will be helpful to recode the Bruce Lee tunes to the required format.


Order the Bruce Lee voxel from society6. Wait approximately two weeks until it arrives; might heavily depend on where the item is shipped to. 😉 While waiting: a] Buy a 23x23cm RIBBA frame at your local Ikea. b] Prepare the necessary electronics and code to get the thing up and running.


For the hardware part: Glue the required components, i.e. Arduino Nano, amplifier, SD card module, DS3231 RTC w/ CR2032 battery to the back of the RIBBA frame. It might look like this.

RIBBA frame with electronics

NB: This was my first shot with the loudspeaker directly glued to the backside as can be seen in the photo. My assumption that the – sort of abyssal – RIBBA frame will act as a good resonator
WAS WRONG. When I hung up the picture on the wall for the first time you could barely hear anything. The loudspeaker radiating directly to the wall was nearly completely muted since the sound waves cannot escape the frame.

Bruce Lee project Visaton SpeakeNew solution: Drill a plethora of holes into the bottom part of the frame and attach a (smaller) loudspeaker so that its sound waves can go through the holes. There are roughly 3 cm space between the backside (with the components) and the wall-facing side of the frame. Thus, I needed a speaker with a radius of max(3cm). I found an fairly good sounding 2,8x4cm rectangular-shaped speaker from Visaton that would fit snuggly into the available space (cf. picture).

Speaker drilling templateI created a drill template with the speaker’s exact dimensions by laying a piece of paper on top of it and tracing its contours with a pencil. Old school but works! After that I drew a mesh pattern with a lot of drill holes. That could have been the maiden trip for my drill press…but I went with the cordless screwdriver that did a nice job on drilling the 90+ holes. The template was fixed with sticky tape to the frame before drilling. I covered the whole template with tape to avoid frayed drill holes. This worked pretty good on the template Speaker drill holes burring done side but not on the inside of the frame. The RIBBA frame is made of chipboard so I lost quiet some material while drilling. You can see in the picture that the inside is not flat anymore but sort of curved due to the lost material. Next time I would apply sticky tape to the inside too.

After drillingThe holes needed some afterwork, i.e., burring and removing frayed pieces. The pictures do not show the final stage of afterwork so you will have to trust me that the result was ok. Especially, since the holes are on the bottom side that will, most likely, hardly been seen or looked at when the frame is hanging on the wall. I was happy with the result and moved on to screw the Visaton speaker into the frame with four black and tiny flat-head screws that were giving me a hard screwing time.

This is how the final setup looks like.

Visaton speaker attached

Note the blue cable going to the upper left corner?

This is the capacitive touch sensor wire. Capacitive touch sensor wire It is basically a piece of zinc coated copper wire bent to a 90° angle and sticked exactly to the corner of the frame using super glue. It was then painted black and soldered to the blue cable to have it connected to the Arduino. With this switch I would later be able to play all Bruce Lee game tunes one after another by repeatedly touching the bottom left corner of the frame. Actually, the ADCTouch-Library used is doing such a great job that the Arduino can react to a finger (or a hand, or some other body part) just coming near to the wire. You can measure changes in the wire’s capacity without even touching it. Awesome!

What’s missing? Yes, details on the wiring. The correct wiring might be hard to find out by just looking at the pictures, not least since my wire color scheme is a bit, eh, inconsistent. So here’s a Fritzing breadboard view of the wiring.

Bruce Lee RIBBA frame hanging on wall

That should cover the most important aspects of the hardware. But all this hardware is nothing without software. Let’s move into the matrix.


Code is poetry

There are more lines of code in the Arduino sketch (GitHub) than needed to implement the behaviour as described in the Project Description. Nonetheless, some of the code is helpful for debugging purposes and some other for fiddling with the TMRpcm Library.

This library is used “for asynchronous playback of PCM/WAV files direct (sic!) from SD card”. The WAVE files must be in a specific format, i.e., 8-bit, 8-32khz Sample Rate, mono. Thus, do not expect Hifi quality! I wrote a separate article WAV-Dateien von SD-Karte mit Arduino abspiele where you will find the gory details about the required file format, how to convert, e.g., an mp3-file using Audacity into this specific WAV-format, how to format the SD card – if required, how the WAV-files have to be named on the SD card (8.3. SFN – short file name from the good ol’ MS-DOS times), and a short Arduino sketch to test the TMRpcm lib.

The ADCTouch library is required for utilizing capacitive touch sensors without any additional hardware.

Debugging with “Serial.print()” is not that funny so we’re using the Streaming library to provide a C++ like << operator that allows constructs like Serial << F( "Current volume is " ) << gVolume << "." << endl; which is very convenient. NB: With the macro F() you put strings in an Arduino's flash memory instead of the sparse static RAM (SRAM) leaving more space for variables and such. The ATmega328 chip found on the Uno has the following memory:

Flash  32k bytes (of which .5k is used for the bootloader)
SRAM   2k bytes
EEPROM 1k byte

Flash is plenty but SRAM isn't - so there is reason to always save SRAM!

Finally, we need the DS3232RTC and Time library to handle the real time clock. Europe will not let go of the daylight saving time (DST) idiocy. Summer time is switched on at the last Sunday in March where 2 o'clock becomes 3 o'clock. Vice versae at the last Sunday in October where 3 o'clock becomes 2 o'clock. We have to recognize the DST so the Bruce Lee cookoo works both in summer and winter. 😉 Thanks to user "jurs" from the German Arduino Forum we have a great European daylight savings time calculation function fIsSummertime() that returns "true" when we're in summer time and false if not.

The Arduino sketch

Sketch also available on GitHub in the RIBBAttacking-Bruce-Lee repository.

Interview with the artist

Metin and I had a nice e-mail-chat while the project was ongoing. There are quiet some analogies in our CVs like being born in the 1970s, growing up with 8-bit computers, adjusting the datassette's azimuth with a screwdriver, hanging out at arcade halls, and - of course - liking minimalistic pixel graphics. Here is short interview with Metin to get you in touch with him as a digital artist and his voxel creations.

Metin, who are you?
My name is Metin Seven, I was born in the 1970s, and grew up in the 1980s with the first 8-bit and 16-bit generations of game consoles and 'home computers', particularly the Atari 2600, CBS ColecoVision, Commodore 64 and Commodore Amiga.

What is your artistic spectrum, i.e., what kind of art do you make/prefer?
I'm a die-hard digital artist. I used to draw on paper as well, but I prefer the flexibility of the digital screen. I started creating pixel art for Amiga demos in the late 1980s. That soon evolved into creating pixel graphics for commercial games, television commercials and children's animation series in the 1990s, all done using software like Deluxe Paint and Personal Paint on an Amiga. Since the late 1990s I've shifted towards 3D graphics creation, but pixel art will always keep a special place in my heart.

Why retro games and what is your reference to this genre?
Ever since I was a little kid I was enchanted by the magic glow of the digital screen. I used to hang out at arcade halls, playing the first 8-bit games, such as Donkey Kong, Lady Bug, Pac-Man and Pengo. When I was not playing them myself, I could stare at people playing the games for hours. The first pixel graphics had this pure, iconic quality because of the low resolution restrictions for sprites and such. It's great to see that atmosphere return in the current wave of minimalistic pixel art games for mobile devices.

Did you have decent experiences with the C64?
Definitely. During my school days I spent just about every afternoon and evening playing Commodore 64 games, first loading them using the Datassette tape recorder, adjusting the azimuth when necessary. After a while I bought a floppy disk drive. LOAD "*",8,1 😀

How did you come to create voxel pictures? Where does the idea come from?
During the 2000s I created a lot of stylized 3D illustrations for printed magazines and newspapers. My use of shapes and colors reflected my game pixel art background, and gradually my illustration style became more elementary, until I arrived at a point that fully made sense — a blend between pixel art and 3D artwork: voxels. It was then that I decided to start paying tributes to my childhood love: 8-bit and 16-bit games.

Can you tell us something about the voxel creation process?
My first voxel images were created in 3ds Max in the mid-2000s, extruding blocks of quadrangular polygons. That was quite a hassle, and I was eager to find a dedicated voxel editor. I found that in the shape of Paint3D for Windows. I got in touch with the coder and suggested a number of features, which he kindly implemented.

When I switched to Mac OS X in 2014, I started using Qubicle, also a versatile voxel editor. I guess MagicaVoxel would be the tool of my choice today, but to be honest I've become a bit saturated when it comes to voxel creation, although there’s a good chance I'll return to it some day.

Where should we go if we'd be interested in more from you?
The best starting place is my portfolio site, there you will find links to my online shops, offering 3D prints, 2D art prints, stock 3D models and stock illustrations.

Many thanks for this interview, and my sincere compliments to you regarding your clock creation based on my voxel tribute to the classic 8-bit Bruce Lee game.

The pleasure was all mine! Keep on the good work!

Bruce Lee RIBBA frame hanging on wall



WAV-Dateien von SD-Karte mit Arduino abspielen

Musik und Geräusche mit einem Arduino abspielen? Kein Problem mit dem guten alten WAVE-Format, einem SD-Kartenleser und der TMRpcm Library.

Arduino WAV Musik SD-Karte Eins gleich vorweg: Hifi-Qualität darf man von der hier beschriebenen Lösung nicht erwarten. Aber als Low-Budget-Player für einfache Zwecke reicht es auf jeden Fall. Habe ich beispielsweise hier im Kunstprojekt RIBB@TACKING Bruce Lee – a C64 game tribute and homage verwendet.

Was man braucht

Natürlich einen Arduino; der hier beschriebene Aufbau wurde mit einem Uno getestet. Alle 328er basierten, also auch Nano, LilyPad, Pro etc. sollten gleichermaßen funktionieren.

Da die WAVE-Dateien irgendwo abgespeichert sein müssen, bietet sich ein SD Kartenleser an. Es gibt Breakout Boards mit Micro-SD-Karten Slot oder andere Shields, auf denen solch ein Slot bereits integriert ist, bspw. das Ethernet-Shield. Hier kommt ein sehr einfacher 1 EUR SD-Kartenleser von eBay zum Einsatz. Dazu eine (alte) SD Karte.

Damit man etwas hört, braucht es einen Verstärker. Bryan beschreibt in diesem Blog-Artikel, wie man mit einem einzigen Transistor nebst Widerstand (4,7 kOhm) einen simplen Verstärker zusammenschustert. Der BC548B hat nicht ausreichend verstärkt. Mit dem 2N3904 (eBay) macht es mehr Spaß.

Dazu natürlich ein Lautsprecher, da hatte ich noch einen mit 0,25 Watt 4 Ohm auf Halde liegen.

Verkabelung / Aufbau

Die Anbindung des SD-Kartenlesers erfolgt über die Hardware SPI Pins des Arduino. Welche Pins das genau sind, hängt vom Arduino-Typ ab. Die hier gezeigte Verkabelung sollte für alle 328er Typen (Nano, Uno, etc.) funktionieren. Chip Select ist frei wählbar; vgl. auch der weiter unten stehende Arduino Sketch. Die Schaltung auf dem Breadboard ist der erwähnte Ein-Transistor-Verstärker. Wenn man hier den Widerstand zwischen Arduino-Ausgang (Pin 9) und der Transistorbasis zu klein wählt, kann man nach kurzer Zeit auf dem Transistor Eier braten, da zu viel Strom durch die Collector-Emitter-Strecke fliesst.


Wagemutige können den Widerstand einfach mal ganz weglassen und sich an einer, dann, recht ordentlichen Beschallung nebst Transistorheizung erfreuen. Das sei hiermit also ausdrücklich nicht empfohlen.

Kartenleser PIN Arduino PIN Was ist das?
GND GND Ground
+5V 5V Volle Power! 🙂
MISO 12 MISO, Hardware MISO
CLK 13 CLK, SCL, Hardware SCK
CS 4 CS, Chip Select
GND GND Ground

In der Tabelle ist die PIN-Verkabelung noch einmal aufgeführt. Der verwendete SD-Kartenleser hat zwei GND-Anschlüsse und funktioniert auch nur zuverlässig, wenn tatsächlich beide mit Masse verbunden werden. Der Lautsprecherausgang ist, ebenso wie Chip Select, über den Arduino Sketch frei wählbar (hier PIN 9).

Zwei Blog Posts haben bei Verkabelung und Inbetriebnahme gut geholfen. Zum einen dieser Beitrag bei sowie insbesondere diese Anleitung auf

Format der SD Karte

Die verwendete SD-Library unterstützt prinzipiell die Dateisysteme FAT16 und FAT32. Es wird jedoch empfohlen, wenn möglich, FAT16 einzusetzen. Bei mir hat’s mit einer FAT32-formatierten SD-Karte nicht funktioniert, daher wollte ich sie “mal eben” auf FAT16 formatieren. Das geht auch mit MacOS Bordmitteln, ist aber etwas komplizierter, als erwartet. Dieser Post im Adafruit-Forum beschreibt den Weg in Englisch; hier in knappem Deutsch:

  1. SD-Karte in den Mac stecken.
  2. Terminal-Fenster öffnen. Bspw. mit CMD+Space, dort “terminal” tippen und Return.
  3. Geräte-ID finden. Dazu im Terminal df gefolgt von Return eingeben. Es erscheint eine Filesystem-Übersicht, die unter anderem die folgenden Informationen enthält. Ganz unten ist die SD-Karte “NO NAME” zu sehen. Wer auf Nummer sicher gehen will, gibt seiner Karte einen eindeutigen Namen. Dann kann man sie in dieser Übersicht schneller finden. Die in den folgenden Schritten benötigte Geräte-ID lautet /dev/disk3s1.
    Filesystem        Used Available Capacity   iused   ifree %iused  Mounted on
    /dev/disk1   909007896  65197032    94% 113689985 8149629   93%   /
    devfs              371         0   100%       642       0  100%   /dev
    map -hosts           0         0   100%         0       0  100%   /net
    map auto_home        0         0   100%         0       0  100%   /home
    /dev/disk3s1     20928   4172608     1%       512       0  100%   /Volumes/NO NAME
  4. SD-Karte unmounten (nicht auswerfen!). Im Terminal diskutil unmount /dev/disk3s1 gefolgt von Return eingeben. Dabei disk3s1 natürlich durch die eigene Geräte-ID ersetzen. Erfolgreiches unmounten wird bspw. mit Volume NO NAME on disk3s1 unmounted quittiert.
  5. FAT16 Filesystem auf SD-Karte schreiben. ACHTUNG! Der folgende Befehl löscht alle Daten auf dem Gerät. Wenn die Geräte-ID nicht die von der eingesteckten SD-Karte ist, sondern bspw. aus Versehen die der eingebauten Festplatte, dann wird diese gelöscht. U have been warned.
    Folgendes Kommando im Terminal eingeben und nicht vergessen die Geräte-ID anzupassen. newfs_msdos -F 16 /dev/disk3s1
    Ich habe alle Warnmeldungen, die der Befehl produziert hat, konsequent ignoriert und als Lohn der Mühe im Anschluß eine lauffähige FAT16-formatierte SD-Karte gehabt.

Format der WAVE Dateien

Die Library TMRpcm benötigt zum Abspielen die WAVE-Dateien im Format acht Bit, acht bis 32 kHz Sample Rate, mono. Im WIKI zur Library werden zwei Wege beschrieben, wie man iTunes oder Audacity verwenden kann, um aus dem musikalischen Quellmaterial das Zielformat zu generieren. Audacity ist prima, und so geht’s damit:

  1. Hauptmenü “Tracks”, dort “Stereo Track to Mono” wählen.
  2. Unten links die “Project Rate (Hz)” mit dem Popup auf 8000, 11025, 16000, 22050 oder 32000 setzen. Je niedriger die Sampling Rate, desto schlechter die Qualität.
  3. Hauptmenü “File”, dort “Export Audio…” und im File Selection Dialog unten als Format “Other uncompressed files” wählen. Dann “Options…” klicken und als Header “WAV (Microsoft)” sowie bei Encoding “Unsigned 8-bit PCM” wählen. OK.
  4. Datei mit “Save” speichern.


Dateinamen müssen zwingend dem – aus alten MS-DOS Zeiten bekannten – 8.3-Format folgen, also maximal acht Zeichen für den Dateinamen gefolgt von Punkt und einer Endung mit drei Zeichen beispielsweise “NAME0001.EXT”. Der Dateiname kann kürzer als acht Zeichen sein, in keinem Fall aber länger. Die Wikipedia widmet dem 8.3 short filename (SFN) tatsächlich einen eigenen Artikel.

Arduino Sketch

Der folgende Sketch bindet zunächst die benötigten Libraries ein, definiert Chip Select- und Lautsprecherausgangs-PIN, initialisiert die SD-Karte mit SD.begin() und spielt im Erfolgsfall die Wave-Datei snakec16.wav direkt von der SD-Karte ab. Im Fehlerfall wird eine kurze Meldung über den seriellen Monitor ausgegeben.

#define CHIP_SELECT_PIN  4
#define SPEAKER_PIN      9
TMRpcm tmrpcm;

void setup( ) {
  tmrpcm.speakerPin = SPEAKER_PIN;
  Serial.begin( 9600 );
  while ( !Serial ) /*mt*/ ;
  if ( !SD.begin( CHIP_SELECT_PIN ) )
    Serial.println( "SD fail" );
  else { "snakec16.wav" );
    delay( 5 );

void loop( ) {

Wenn alles läuft…

…dann sollte das in etwa so aussehen, wie in dem Video.

Musik © Snake Charmer (Synapsis) / CC BY-ND 4.0

OLED 0,96″ Zoll Display an den Arduino anschließen

OLED Displays für den Arduino sind beliebt. Ein kurzer Wegweiser durch Anschluß-Pins, Protokolle und Libraries, damit das Mini-Display auch etwas anzeigt.

Bei eBay, Aliexpress & Co. gibt es zahnlose Mini-OLED-Displays, beispielsweise für den Betrieb an einem Arduino. Dabei sind die gängigen Größen 0,96 Zoll und 1,3 Zoll mit Auflösungen von 128 x 64 oder 128 x 32 Pixeln. Die Displays sind selbstleuchtend und werden in weiß, blau, gelb, Kombinationen davon oder auch “full color” angeboten. Die Full Color Displays stellen dann üblicherweise 65K Farben dar.

Es werden unterschiedliche Kommunikationsprotokolle unterstützt, in der Regel entweder I2C oder SPI oder beides. Dazu kommen unterschiedliche Driver Chips, für die die richtige Library benötigt wird, um das OLED ansteuern zu können. Gängig und gut unterstützt ist der Driver Chip SSD1306, der u.a. mit den folgenden beiden Libraries angesteuert werden kann: Adafruit_SSD1306 (github) oder U8glib (github). Wer ein OLED mit SS1106 Driver Chip erwischt hat, kann es mit der SH1106_SPI Library (github) versuchen.

Dieser Post zeigt den Anschluß und Betrieb eines einfachen, weißen 0,96″ Zoll OLED Displays (eBay) mit SSD1306 Driver Chip und sieben Anschluss-Pins an einen Arduino Uno. Nano, und alle weiteren Modelle mit ATmega328 Pinout, dürften auf dieselbe Weise angesteuert werden können. Im Zweifel das Datenblatt des Arduinos zu Rate ziehen.

Im folgenden Video ist das OLED im Einsatz zu sehen. Die Chord-Animation ist von Hari Wiguna, sein Kode steht auf GitHub bereit.

Um ein OLED erfolgreich ansteuern zu können, ist die richtige Verdrahtung zwischen Arduino und Display wichtig. Dabei wird es durch die Tatsache, dass die Displays mit unterschiedlicher Anzahl und Beschriftung der Pins geliefert werden nicht einfacher. Die Libraries erlauben üblicherweise die Verwendung von Software oder Hardware SPI, wobei letztere Variante deutlich schneller ist. Hardware SPI erfordert mehr Anschluss-Pins als Software SPI.

OLED Anschluss Arduino PIN Was ist das?
GND GND Ground
VCC 5V Volle Power! 🙂
D0 13 CLK, SCL, Hardware SCK
DC 6 Data/Command
DS 7 CS, Chip Select
RES 8 Reset

Das im Video gezeigte 0,96″ Display ist zur Ansteuerung durch Hardware SPI entsprechend der Tabelle mit dem Arduino zu verbinden. Bitte unbedingt prüfen, ob das eigene Display für 5V ausgelegt ist! Im Zweifel am 3,3V Pin anschließen und erst einmal damit versuchen. Die “Was ist das?”-Spalte in der Tabelle zeigt die ausgeschriebenen, gängigen oder alternativen Bezeichnungen der Anschlüsse; vielleicht hilft es dem einen oder anderen bei der Verkabelung. Ich fand diesen Beitrag von paulwb im Adafruit-Forum sehr hilfreich, um das Display nach einigen erfolglosen Versuchen endlich zum Laufen zu bringen.

Hier noch der Arduino-Sketch zur Darstellung der Animation wie im Video.


/* Wiring for Hardware SPI
    GND ------- ground
    VCC ------- 5V
    D0 -------- 13 hardware SCK
    D1 -------- 11 to hardware MOSI
    DC -------- 6 (user choice, defined below)
    DS -------- 7 (user choice, defined below)
    RST ------- 8 (user choice, defined below)
  Hardware MISO (12) unused */

#define OLED_DC     6
#define OLED_CS     7
#define OLED_RESET  8
Adafruit_SSD1306 display( OLED_DC, OLED_RESET, OLED_CS );

void setup( ) {
  display.begin( );
  display.clearDisplay( );
  display.display( );

int nFrames = 36;
void loop() {
  for ( int frame = 0; frame < nFrames; frame++ )
    HariChord( frame );
  for ( int frame = ( nFrames - 1 ); frame >= 0; frame-- )
    HariChord( frame );

void HariChord( int frame ) {
  display.clearDisplay( );
  int   n   = 7;
  int   r   = frame * 64 / nFrames;
  float rot = frame * 2 * PI / nFrames;
  for ( int i = 0; i < ( n - 1 ); i++ ) {
    float a  = rot + i * 2 * PI / n;
    int   x1 = 64 + cos( a ) * r;
    int   y1 = 32 + sin( a ) * r;
    for ( int j = i + 1; j < n; j++ ) {
      a  = rot + j * 2 * PI / n;
      int x2 = 64 + cos( a ) * r;
      int y2 = 32 + sin( a ) * r;
      display.drawLine( x1, y1, x2, y2, WHITE );
  display.display( );

Schwergängige Schubladen beim Helmer Schrank von Ikea

Der weiße Ikea Helmer Schubladenschrank ist mit einem Lack überzogen, der die Schubladen schlecht gleiten lässt. Hier eine Lösung zum gefügig machen.

Aktuell ist das HELMER Schubladenelement in weiß, grau, grün und rot erhältlich. Das gab es auch mal in orange und beige, but times change. Die beige-farbene bzw. weiße Variante ist mit einem Lack überzogen, der – im Gegensatz zu den anderen Farben – etwas rauh wirkt. Dadurch gleiten die Schubladen auf ihren Schienen deutlich schlechter, als dies bei der orange-farbenen, grünen und roten Version der Fall ist. Schubladen und Führungsschienen scheinen aufgrund der Lack-Struktur aneinander “hängen” zu bleiben. Das nervt schon gewaltig, da das Schubladenelement auf Rollen steht und so beim Öffenen und Schließen der Schubladen der ganze Schrank mit verschoben wird.

But fear you not, for thy emperor is here! Es gibt eine geradezu genial einfache Lösung und die heißt Silikon-Öl. Nicht Spray, sondern Öl. Warnung an dieser Stelle: Auf keinen Fall Silikon-Spray in der Wohnung verwenden – das landet überall und macht insbesondere den Boden zu einer sehr, sehr gefährlichen Rutschfalle! Zurück zum Öl. Das gibt es in den unterschiedlichsten Viskositäten und nach kurzer Recherche habe ich zumindest so viel verstanden, dass – mit meinen Worten gesagt – die Größe der Viskositätszähl die “Zähflüssigkeit” des Öls beschreibt. Daraufhin habe ich mich für dieses WS Silikonöl mit einer Viskosität von V=12500 entschieden. Das ist sehr dickflüssig und lässt sich daher sehr einfach mit einem Finger auftragen.

Das Vorgehen: Schublade raus, linke und rechte Führungsschiene mit dem Silikonöl einschmieren, Schublade wieder rein. Back’n’forth, back’n’forth. Gleitet, wie auf Kugellagern!

Schubladenmatte VARIERA in Schrank Helmer

Günstiger Schubladeneinsatz mit Ikea Teppichgleitschutz STOPP

Ikea bietet im Küchenbedarf die Schubladenmatte VARIERA an. Damit nichts verrutscht, geht es aber auch günstiger: Mit dem Teppichgleitschutz STOPP.

Schubladenmatte VARIERA in Schrank HelmerDie Ikea Schubladen-Matte VARIERA, Artikelnummer 800.128.53, ist robust und leistet mit ihrer leicht genoppten Oberfläche, was sie soll: Den Schubladeninhalt davon abhalten in der Schublade hin- und herzufliegen. Die Matte ist 150 x 50 cm groß und kostet 3,99 EUR. Ich habe die Matte für die etwa 37,5 x 23,4 cm (Innenmaß) Fächer eines Helmer-Schranks verwendet. Eine Matte sollte für alle sechs Fächer reichen, nur das Zuschneiden ist etwas mühselig, da die Matte recht dick ist. Dadurch ist Variera wiederum sehr robust, geradezu unkaputtbar. Was also könnte gegen die Matte sprechen?

Teppichgleitschutz STOPP von IkeaKurze Antwort: Wenig! Aber wenn man nichts suchend – ausser natürlich Servietten – durch Ikea streift, dann kann man in der Teppichabteilung den Teppichgleitschutz STOPP finden. Und damit einen Ikea-Hack aus der Kategorie “Sparfuchs” landen, denn mit kleinen Abstrichen bei der Optik lässt sich STOPP auch als Schubladengleitschutz einsetzen. Besagter Teppichgleitschutz STOPP, Artikelnummer 802.278.77, kostet ebenfalls 3,99 EUR ist aber satte 200 x 67,5 cm groß. Damit lassen sich gleich 13 Fächereinlagen in Helmer-Größe herstellen; reicht also für zwei Helmer-Schubladenelemente mit á sechs Schubladen plus Reserveeinlage. Der Hammer!

Und wem die Schubladen des weißen Helmer-Schranks zu hakelig sind, der findet im Artikel Schwergängige Schubladen beim Ikea Helmer Schrank eine Lösung, um diese mal so richtig schön gleiten zu lassen.

Schutzgitter aufgeschraubt

Selbstbauschrank für die Heimtechnik mit Schloß und Lüfter

WLAN Router & Co. sind Geräte, die wegen ihres WAF von Null aus dem direkten Sichtfeld getilgt gehören. Also bauen wir einen Schrank für die Heimtechnik.

Auf die übliche Heimtechnik mag kaum ein Haushalt verzichten. Aber wenn sich erst einmal WLAN Router, DECT Basisstation, Hue Bridge, Ethernet Switch und weitere Geräte zusammen mit Netzteilen, Cat5- und USB-Kabeln sowie den unvermeidlichen Mehrfachsteckdosen an einem Ort knubbeln, dann gibt es in der Regel Kräfte, die aktiv gegen derlei Elektronik- und Kabelhaufen arbeiten; vgl. hierzu die Ausführungen zum Wife Acceptance Factor (WAF) in der Wikipedia. Der Gerätepark muß also weg und als einfachste Lösung bietet sich ein Schränkchen an, dass unter einer bereits vorhandenen Tischplatte montiert wird.

Ecke unter Tisch Der designierte Montageort für den Schrank macht klare Vorgaben zu Breite, Höhe und Tiefe, um möglichst dezent in der Ecke zu verschwinden; vgl. Bild. Das Schränkchen soll in der Höhe vom Boden bis zur Tischplatte reichen, nicht tiefer als 30cm sein und in der Breite die Steck- und Ethernetdosen vollständig abdecken. Ein (fast) exakt passendes Schränkchen war weder im stationären Handel noch Online erhältlich. Maßschreinerei kam angesichts des eher niedrigen Anspruchs an Güte und Verarbeitungsqualität aus Kostengründen nicht in Frage. Fazit: Dann wird das Schränk’sche halt selber gebaut!

Los geht’s mit einer Bierdeckel-Skizze. Der Schrank soll aus 1 cm dicken, weiß laminierten Spanplatten aufgebaut werden. Dazu werden zwei Seitenteile, eine Bodenplatte, eine Leiste und eine Frontplatte für die innenliegende Tür benötigt. Mangels Erfahrung mit Holzarbeiten, wird alles zig Mal durchgemessen, nachgerechnet und kontrolliert.

Steckbrief “Schrank für Heimtechnik”
Zeitaufwand 08h 22min 14sek
Material Holz, Umleimer, Schrauben, Kleber, Aufschraubscharniere, Sparrenpfettenanker Baumarkt
Aufschraubsschloß Amazon
Temperaturschalter eBay
Lego Baustein Sohn 🙂
Noiseblocker XL2 Rev3 Google Shopping
Lautsprecherabdeckung Conrad
Skills Holzarbeiten, Elektronik
Werkzeug jap. Zugsäge, Schraubendreher,
Akkuschrauber, Dremel,
Bügeleisen, Cutter Messer,

Im Baumarkt. Vor Ort stelle ich fest, dass 1 cm dicke Spanplatten gar nicht dick, sondern eher dünn sind. Also spontan vor Ort für 1,6 cm dicke Platten entschieden. Dann stimmen aber meine Berechnungen nicht mehr! Also kurz am Tresen des Holzzuschnitts die Maße nachkalkuliert und die Platten in Auftrag gegeben. Als die Platten fertig sind, stelle ich fest, dass – natürlich – einige Seiten nicht laminiert sind. Brauche ich also noch Umleimer zum Aufbügeln. Den gibt’s aber nicht in 16mm Breite, sondern nur 20mm. Ob sich das später mit dem Cutter-Messer sauber abtrennen lässt…?

Zuhause alle Platten grob aneinander angehalten und festgestellt, dass die “mal eben Nachkalkulation” am Tresen fehlgeschlagen ist: Die Bodenplatte ist um einige Millimeter zu lang. Umpf. Die Platte muß auf jeden Fall gekürzt werden, und zwar ohne passendes Werkzeug. Ich murkse mit der japanischen Zugsäge rum, bis die Platte die richtige Länge hat. Eine gerade Schnittkante sieht allerdings anders aus.

Der Zusammenbau beginnt mit dem linken Seitenteil. Da der Schrank bündig mit der Wand abschließen soll, wird mit der Zugsäge ein rechtwinkliger Teil ausgespart, damit sich das Seitenteil über die Sockelleiste schieben lässt (Pfeil unten rechts). Für das starre Koaxialkabel, oben links im Bild, muss am Seitenteil ein Kanal geschaffen werden, der vorne gerade eben das Kabel durchlässt und weiter hinten etwas mehr Raum bietet. Auch das erledigt die Zugsäge.

linkes Seitenteil besägt

Im Anschluß wird die Vorderkante laminiert, was laut Anleitung recht einfach aussieht, sich dann bei der konkreten Umsetzung aber schwerer als erwartet herausstellt. Das Laminierband wird auf die Spanplattenkante aufgelegt und dann mit einem zwischengelegten Handtuch aufgebügelt. Danach schneidet man mit einem Cutter Messer oder passendem Spezialwerkzeug das überstehende Laminatband ab. Wer das kann, ist jetzt wahrscheinlich fertig. Ich musste noch munter mit Schmirgelpapier nacharbeiten, damit eine saubere Kante entsteht. Am Ende sieht’s aber gut aus und das Seitenteil wird mit einem zweckentfremdeten Sparrenverbinder, genauer, einem Sparrenpfettenanker, befestigt.

linkes Seitenteil mit Laminierung und verschraubt

Analog wird mit dem rechten Seitenteil verfahren. Im folgenden Bild ist es bereits “free floating” an der Tischplatte verschraubt; die Fixierung erfolgt im nächsten Schritt beim Einbau der Bodenplatte.

rechtes Seitenteil laminiert und verschraubt

Die Kante der Bodenplatte wird laminiert und im Anschluß der kleine Sockel vorne mit einem Abstand von 8mm zur Kante angeklebt. Weil sich die Bodenplatte am linken Seitenteil nicht mehr festschrauben lässt, wird sie kurzerhand auch hier festgeklebt. Sekundenkleber ist dein bester Freund! 🙂 Hinten liegt die Bodenplatte auf der wandseitigen Sockelleiste auf und wird nicht verklebt. Der Schrank soll sich ja später noch weitestgehend rückstandsfrei entfernen lassen. Abschließend verbinden zwei Schrauben das rechte Seitenteil mit der Bodenplatte. Damit bekommt die Konstruktion bereits eine passable Stabilität.

Bodenplatte mit Sockel montiert

Die Stabilität reicht aber noch nicht, da die Konstruktion in der vertikalen Richtung – also von der Wand Richtung Vorderseite – beweglich ist. Mit einem kleinen Winkel wird die Bodenplatte mit der Wand verschraubt. Das hält.

Bodenplatte mit Wand verschraubt

Nun zur Tür. Um mich nicht mit Topfbohrungen und der Anschaffung guter, und damit kostspieliger, Forstnerbohrer rumärgern zu müssen, soll es eine innenliegende Tür werden, die mit zwei 90° Feder-Aufschraubscharnieren befestigt wird. Dazu gibt es, bspw. bei Hettich, eine Montageanleitung, die vom ungeübten Holzwurm aber erst einmal verstanden werden will. Und dann basiert diese auf der (Standard?)Dicke von 19mm Möbelbrettern, so daß hier auch noch auf 16 mm umgedacht werden muß.

Vor Befestigung der Tür schien es sinnvoll, zunächst das Zylinderschloß zu montieren. Dazu Abstände vermessen, dann ein Loch mit passendem Durchmesser bohren und das Schloss durchstecken und mit einigen Abstandsscheiben an der Tür festschrauben. Im Bild ist die fertig montierte Tür mit Aufschraubscharnieren und Schloss zu sehen.

Schloss eingebaut und Tür angeschraubt

Auf zum nächsten, lustigen Teil. Das Schloss hat einen Bolzen, der durch Drehen des Schlüssels ein- und ausgefahren wird. Der ausgefahrene Bolzen benötigt im rechten Seitenteil eine
Vertiefung, in die er einfahren kann, da kommt der Bolzen rein damit die Tür auch tatsächlich verschlossen ist. Ich bohre mehrere kleine Löcher neben- und untereinander in das Seitenteil, um eine Nut zu erzeugen. Dann wird mit dem Cutter Messer grobschlächtig nachgearbeitet bis ein entkernter kleiner Lego-Baustein (ein “Zweier”) in die Vertiefung passt. Theoretisch hätte es auch beim Bolzen-direkt-in-Spanplatte bleiben können; die Spanplatte schien einen ausreichenden Halt zu gewährleisten. Aber bei dem Schränkchen wurde schon genug gestümpert, dann soll der Bolzen wenigstens ein stabiles Gegenstück erhalten! Nachdem der Lego-Baustein mit Heißkleber (könnte auch Holzleim gewesen sein) in der Vertiefung fixiert wurde, korrigiere ich farbliche Aberrationen zwischen Schrank, Kleber und Lego-Baustein mit einem Emaille-Reparaturstift. Hauptsache weiß. Und ja, schön ist anders.

Tada! Der Schrank mit geschlossener Tür. Etwaige Kommentare zu Spaltmaßen & Co. bitte direkt nach /dev/null.

geschlossener Schrank mit Schlüssel

Jetzt wird die ganze Haustechnik verstaut: WLAN Router, Ethernet Switch, TimeCapsule, DECT Basisstation, Kabelmodem und – nicht sichtbar – die Basisstation des Little Printers (leider End-of-Life), USB Festplatte und zwei Mehrfachsteckdosen nebst fünf Netzteilen. FTW!

Schrank wird wg. Überfüllung geschlossen

Der Schrank wird wegen Überfüllung geschlossen und ich zitiere Schiller: Von der Stirne heiss, rinnen muß der Schweiß, soll das Werk den Meister loben, doch der Segen kommt von oben. Der Schrank ist fertig. ipse fecit.

Aber so endet die Geschichte nicht.

Nach einigen Verkabelungsoptimierungen fällt mir auf, dass die Gerätschaften im Schrank eines ganz besonders gut können: Strom in Wärme umwandeln. Im Schrank wird es so warm, dass ich mir über Energy Harvesting Gedanken mache. Da habe ich jetzt einen tollen Schrank, aber was, wenn die Elektronik wegen Überhitzung frühzeitig den Geist aufgibt? Kreisch! Ein Kühlsystem muß her. Wasserkühlung nein. Thermoelektrische Kühlung nein. Also Luftkühlung. Neuer Payload: [a] Ein leiser Lüfter, [b] ein Temperaturschalter und [c] eine Lüfterabdeckung.

noiseblocker[a] Beim Luftquirl fällt meine Wahl auf den 120x120mm PC-Lüfter Noiseblocker BlackSilent XL2 Rev3 (Link zu Google Shopping). Der soll 80.000 Stunden halten, lässt sich auf leise 1500 Umdrehungen/Minute runterregeln und benötigt nur eine geringe Startspannung von sechs Volt.

Temperaturschalter[b] Der Temperatur-Schalter kommt via eBay innerhalb einiger Wochen direkt aus China. Die Funktionsweise ist simpel: Ein Temperaturfühler misst die Umgebungstemperatur und schaltet bei Über-/Unterschreiten einer zuvor definierten Schwelltemperatur ein Relais ein oder aus. Der Preis ist mit unter vier Euro unschlagbar. Aber es gibt auch eine Downside: Die Anleitung ist, sagen wir mal, ein wenig kryptisch. Hier ist sie, alles klar?!

lautsprechergitter[c] Die gängigen PC-Lüfter-Abdeckungen sagen mir nicht zu, also schaue ich mal bei Conrad vorbei. Und siehe da! Im Lautsprecherbereich gibt’s genau das Richtige, und zwar ein recht ansehnliches 105 mm Lautsprecher Schutzgitter. Weiß wäre mir lieber gewesen, aber die Auswahl an weißen Schutzgittern ist überschaubar. Quasi null. Vielleicht sprühe ich das Teil später noch weiß an, aber jetzt geht es erst einmal an den Einbau der Komponenten Ahh und Beh sowie Zeh.

Die mühselig angeschraubte Tür wieder abzumontieren, um dann vernünftig ein Loch für den Lüfter auszusägen, kommt nicht in Frage. Und wo wir gerade beim Thema sind: Ich habe gar keine Stichsäge! Mit dem Fuchsschwanz oder der Zugsäge werde ich hier auch nicht weiterkommen. Aber ich habe einen Dremel Micro 8050 mit allerhand Trennscheiben – das könnte doch klappen, wenn ich statt eines Kreises eine Oktagonform aus der Tür rausfräse. Ich klebe den mit Elektronik gefüllten Innenraum mit Frischhaltefolie ab, um ein Säge-Spän-O-Geddon zu vermeiden und lege los. Allerdings ist nach wenigen Sekunden klar, dass ich mit den mitgelieferten Trennscheiben nicht einmal eine Seite des Oktagons in die 16 mm dicke Tür gefräst bekommen werde. Shoot! Der Payload steigt weiter, denn ich benötige offensichtlich eine Holztrennscheibe. Da gibt es ein passendes Modell Dremel Holztrennscheibe SC544 von Dremel mit Karbid-Beschichtung, Modell SC544, ist aber HÖLLE teuer! Geizhals, idealo, günstiger, dann! yeehaa!, für einen akzeptablen Preis bei eBay gefunden. Die Trennscheibe kommt an und ich fräse los. Mein Gott, macht das Handwerken mit vernünftigem Werkzeug SPAß! Geht durch, wie durch Butter. Zumindest die ersten 8-10 mm. Dann wird’s aber doch schwierig, weil der Fräswinkel schräg und damit natürlich nicht optimal ist. Ist quasi unmöglich mit zunehmend spitzer werdendem Winkel komplett durch die 16 mm durchzukommen. Zumal der Dremel Micro zwar ordentlich Gas gibt, aber mangels Drehmoment bei höherem Druck in die Knie geht, um dann letztendlich immer wieder steckenzubleiben. Soviel zu “vernünftigem Werkzeug”. Eine gute Trennscheibe macht aus einem Micro eben keinen Trennjäger. Ok, again what learned. Ich murkse mich von beiden Seiten der Tür in Richtung eines Oktagon-Ausschnitts, was einiges an Geduld erfordert, am Ende aber zum Erfolg führt.

IMG_3689_b IMG_3690 IMG_3687

Kanten, Grate und allem, was den Oktagon-Ausschnitt noch hässlicher macht, als es auf den kleinen Bildern zu erahnen ist, rücke ich mit dem Cutter Messer zuleibe. Glücklicherweise wird von den Schnittkanten später (von vorne) nichts zu sehen sein. Der Lüfter wird eingeschraubt, der Temperaturschalter eingeklebt. Anfangs noch mit doppelseitig klebenden PowerStripe-Nachbauten von Aldi (wie im folgenden Bild zu sehen), später dann professionell mit einem dicken Kleks Heißkleber.

Lüfter und Temperaturschalter eingebaut

Die Verkabelung des Lüfters mit dem Temperaturschalter sieht wilder aus, als sie ist. Das folgende Schaltbild zeigt, wie die Komponenten miteinander verbunden werden müssen. Der Temperaturschalter ist so konfiguriert, dass er bei 30° Grad Celsius das Relais durchschaltet und damit den Lüfter in Betrieb setzt. Bei Erreichen von 28° Grad wird der Lüfter wieder ausgeschaltet.


Vorne wird noch das Lautsprecher Schutzgitter aufgeschraubt und das Schränkchen ist fertig.

Schutzgitter aufgeschraubt

Ahh, doch noch nicht ganz. Nach einigen Tagen Betrieb zeigt sich, dass der “Silent”-Lüfter nicht Silent genug zu Werke geht. Als hoffentlich finaler Schritt muß jetzt noch die Drehzahl runtergeregelt werden. Jetzt darf ich mein Grundlagenwissen der Physik aus der Klamottenkiste holen, um den benötigten Widerstandsbereich eines Potentiometers und dessen nötige Verlustleistung zu berechnen. Ich wackel zum Conrad, um nach sehr, sehr, sehr vielen Jahren mal wieder an der berühmten Bauteiletheke zu stehen. Das Glück ist mir hold, denn ich erwische einen sehr freundlichen Berater, der mich auf den rechten Widerstandspfad führt und mir anschaulich erklärt, dass ein Poti mit 1 Watt Verlustleistung eine kostspielige Angelegenheit werden würde. Stattdessen lautet seine Empfehlung, einige 1 Watt 10 Ohm-Widerstände zu nehmen und diese so lange in Reihe zu schalten, bis die gewünschte Lüfterdrehzahl erreicht ist. Ein axellenter Tip und das Ergebnis der Lüsterklemmenreihenschaltung ist im linken Bild gefolgt vom Schaltplan zu sehen.

Reihenschaltung mit Lüsterklemmen drawit-diagram

Ich habe fertig.

Lego Todesstern Aufbau 5

Möter – halb Mensch, halb Löter und der Lego Todesstern

Am Anfang war ... ja, das Wort. Geschenkt. Aber hier stand am Anfang der Maker-Aktivitäten eine zeitintensive Bastelei nach Anleitung: Der Lego Todesstern.

Die Worte mir fehlten und sprachlos ich war: Den Lego Todesstern sie mir schenkten! Die Macht von Castle Grayskull Star Wars, immer noch stark sie ist. Und jeder Einzelne der auf 50 Tüten verteilten 3803 Steine – eine Freude er war.

Projektsteckbrief “Todesstern”
Zeitaufwand ca. 25-30 h
Material Lego Todesstern
Skills Feinmotorik, Klötze stecken
Werkzeug Augen, Hände

Der Todesstern ist in einer imposanten Big-Badda-Boom-Kartonkiste verpackt. Neben einer großen Menge an Tüten mit den 3803 Lego-Steinen befindet sich auch ein DIN A3 (sic!) Aufbauhandbuch in der Packung. Die Bebilderung ist vorbildlich, wenngleich an manchen Stellen genaues Hinschauen zu empfehlen ist, um die not(false) Steine an die ~1==-2 Stellen zu setzen.

Mit den Lego-Männchen ging es los. Luke Skywalker, R2D2, Darth Vader, Prinzessin Lea, der Imperator etc. pp. – all die guten alten Freunde sind vertreten. Die erste, frühe Erkenntnis: Man verbringt mehr Zeit mit dem Suchen von (Klein-)Teilen, als mit dem eigentlichen Aufbau.

Lego Todesstern Aufbau 1
The beginning

Der Aufbau erfolgt natürlich von unten nach oben. Die Grundplatte steht, die erste Ebene ist noch im Rohbau.

Lego Todesstern Aufbau 2
Erste Ebene im Rohbau

Erste Ebene abgeschlossen, zweite Ebene im Aufbau. Die Schrottpresse vorne links im Bild ist schon gut zu erkennen.

Lego Todesstern Aufbau 3
Zweite Ebene mit Schrottpresse

Laserkanone ist auf der zweiten Ebene montiert. Dritte Ebene im Aufbau.

Lego Todesstern Aufbau 4
Eine stattliche Laserkanone

Und nach einer ganzen Menge Baustunden ist das Werk vollbracht. Der Todesstern ist fertig. Und er sieht gut aus!

Lego Todesstern Aufbau 5

An dieser Stelle noch einmal mein herzlicher Dank allen Schenkenden! Joy and happiness! 🙂 Kommen wir noch zu der Frage, was der Lego Todesstern mit Mötern und Makern zu tun hat? Nichts! Denn das buchstabentreue Zusammenstecken von Lego-Steinchen nach einer bebilderten Anleitung … hat nur bedingt etwas mit DIY und selber bauen zu tun.

Dennoch markiert der Todesstern irgendwie mein Entrée in die glückliche Gemeinschaft Blei- und Flußmitteldämpfe schnüffelnder Löter, Bauer und Programmierer. Auch wenn beim ersten richtigen Make-Projekt gar nicht gelötet wurde: Da ging es um den Bau eines Unterschranks, der die Hauselektronik als da wären Router, Kabelmodem, DECT Basisstation & Co. aus dem sichtbaren Bereich verbannen sollte.

Zugriff auf Photo Stream Bilder auf dem Mac ohne Photos App

Man kann auf dem Mac auf die Bilder des Photo Streams auch OHNE Photos App zugreifen. Hier wird der zugehörige Lösungsweg beschrieben.

Der Use Case: Mit dem iPhone, iPad oder iPod geknipste Bilder können über die sog. “My Photo Stream”-Funktionalität automatisch auf die jeweils anderen, verbundenen Geräte übertragen werden. Das ist praktisch. Es wäre aber noch praktischer, wenn diese Bilder ebenso automatisch auf den Mac synchronisiert würden. Das ist möglich, erfordert aber ein paar Handgriffe. Insbesondere, wenn man eine Lösung sucht, bei der man nicht die Photos App verwenden möchte und die Bilder in einem beliebigen Zielordner landen sollen. Hier das Vorgehen, inspiriert durch einen Artikel auf, den es dort allerdings nicht mehr gibt.

Wie funktioniert’s?

Wir schalten sowohl auf dem gewünschten mobilen Gerät, also iPhone, iPad oder iPod, als auch auf dem Mac die “My Photo Stream”-Funktion ein. Danach landen alle mit dem mobilen Gerät aufgenommenen Bilder sowohl (und wie bisher) im “Camera Roll”-Ordner und (neu) zusätzlich in einem Ordner mit dem Namen “My Photo Stream”. Zeitgleich werden die Bilder auf alle verbundenen Geräte in deren “My Photo Stream” Ordner gespiegelt. Beim Mac gibt es aber einen solchen Ordner nicht. Stattdessen werden die Photo Stream Bilder in einen Unterordner des Photos App Packages gelegt. Die hier beschriebene Lösung greift auf diesen Ordner zu und verschiebt die Bilder in einen Wunsch-Zielordner.

My Photo Stream auf dem Mac

Eine kurze Schritt-für-Schritt-Anleitung, um einen “My Photo Stream”-Ordner auf dem Mac zu emulieren.

  1. Photo Stream einschalten. Das ist an vielen anderen Stellen im Netz schon detailliert beschrieben, bspw. hier. Die Kurzversion für’s iPhone: Settings → iCloud → Photos → “My Photo Stream” einschalten. Und für den Mac: System Preferences → iCloud → dort rechts bei Photos den Options-Button klick → “My Photo Stream” einschalten. Kann man alternativ auch über die Settings der Photos App einschalten, aber viele Weg, Rom, etc. pp. NB: Weder “iCloud Photo Library” noch “iCloud Photo Sharing” müssen eingeschaltet sein, damitdie hier beschriebene Lösung funktioniert.
  2. exiv2 installieren, falls noch nicht vorhanden. Die Lösung setzt zum Umbenennen der jpeg-Dateien auf Basis der im jpeg-Header (hoffentlich) vorhandenen EXIF-Informationen auf exiv2. Das Tool lässt sich einfach via (home)homebrew installieren, und zwar so:
    $ brew install exiv2
    Wenn der Packet-Manager brew noch nicht vorhanden ist, dann natürlich erst einmal homebrew installieren…
  3. Shell Datei anlegen. Das folgende Shell-Skript den eigenen Bedürfnissen anpassen und dann in einem Verzeichnis bspw. als speichern.
    # Alle Photo Stream Bilder in den Ordner ~/Downloads/MyPhotoStream/_tmp kopieren
    find ~/Pictures/Photos\ Library.photoslibrary/Masters/ -type f -exec cp "{}" ~/Downloads/MyPhotoStream/_tmp/ \;
    # in das _tmp Verzeichnis wechseln
    cd ~/Downloads/MyPhotoStream/_tmp
    # Mit dem Programm exiv2 das Aufnahmedatum aus den EXIF-Daten jeder jpg-Datei auslesen.
    # Der Parameter -t setzt das modification date der Dateien auf ihr Aufnahmedatum.
    # Der Parameter -r benennt die Dateien um: Es wird dem Dateinamen das Aufnahmedatum im ISO8601-Format vorangestellt.
    /usr/local/bin/exiv2 -t -r'%Y%m%d_ :basename:' rename $(ls)
    # Die Bilder aus dem aktuellen _tmp Verzeichnis in das darüberliegende "MyPhotoStream" Verzeichnis verschieben
    find . -type f -exec mv "{}" .. \;
    # Abschließend die Bilder aus dem Photostream-Ordner löschen
    rm -r ~/Pictures/Photos\ Library.photoslibrary/Masters/*
    rm -r ~/Pictures/Photos\ Library.photoslibrary/Thumbnails/*
  4. Rechte setzen. Mit
    $ chmod 700
    die Rechte der Shell-Datei auf “ausführbar” setzen.
  5. Automatisieren. Wir richten einen Daemon ein, der einmal pro Minute unser Skript aufruft. Auf diese Weise werden Bilder-Neuankömmlinge aus dem Photo Stream regelmässig und zeitnah aus dem Photos App Unterordner in unseren Zielordner überführt. Dazu wird eine Datei mit folgendem Inhalt an einem beliebigen Ort mit dem Namen com.NAME.photostream.plist angelegt. NAME kann frei gewählt werden.
           /Volumes/Macintosh HD/Users/USER/
    In der Datei ist NAME in <string>com.NAME.photostream</string> entsprechend des beim Anlegen der Datei gewählten Dateinamens zu ändern. Auch der Pfad /Volumes/Macintosh HD/Users/USER/ muß so angepasst werden, dass er korrekt auf die Shell-Datei zeigt. Das StartInterval von 60 entspricht 60 Sekunden, d.h. das Skript wird einmal pro Minute aufgerufen. Wer weniger häufig nach neuen Bildern im Photo Stream nachschauen möchte, kann den Wert einfach nach oben setzen.
  6. Daemon aktivieren. Wir müssen dem Daemon/Agent manager launchd noch mitteilen, dass es einen neuen Daemon gibt, um den er sich kümmern soll. Das geschieht auf der Kommandozeile mit dem folgenden Befehl:
    $ launchctl load com.NAME.photostream.plist
    Auch hier ist NAME entsprechend zu ersetzen.

Fertig! Wenn’s erstmal läuft, läuft’s wie geschnitten Brot. Auch mit El Capitan und ohne AirDrop. 😉

Chrome Shortcut oder Tastenkombination um aktuelles Tab zu duplizieren

Zwei Lösungen, um ein Chrome-Tab per Tastenkombination zu Duplizieren. Schnell, sauber, effizient und ein Video gibt's auch noch.

Der übliche Weg, um ein Tab in Chrome zu duplizieren führt über einen Rechts-Klick auf das Tab und Auswahl des Popup-Menüpunktes “Duplicate”.

Wer als Tastatur-Universalhackspecht seine Finger aber lieber auf dem Keyboard belassen möchte, findet jeden Griff zur Maus nervig. Leider gibt es in Chrome keine eingebaute Tastenkombination, um das aktuelle Tab zu duplizieren.

Eine schnelle Variante, die allerdings kein 100%iges Duplikat erzeugt: CMD+L (aktiviert die URL-Zeile), dann CMD+Return. Zack! Schon wird das Tab geklont. Aber nur geklont, nicht echt dupliziert. Die Seite wird neu geladen, was beim Duplizieren nicht der Fall sein sollte. Weder die Position im Dokument noch die History (Back-Button) wird übertragen. Wer damit leben kann, ist mit dieser Lösung axellent bedient. Weitere Lösungsvorschläge im Geek TV Style liefert dieser Stackoverflow-Post.

Zweite Variante, ohne Hacken: Die Chrome Extension Duplicate Tab Shortcut Key installieren. So muß ‘ne Extension aussehen, dann klappt’s auch mit dem Nachbarn Duplizieren.