Raspberry Pi – Wordclock rebuild

Part 1: Back
Part 2: Middle
Part 3: Front
Part 4: Electronics & Buttons

Based on the idea from bk1285 (Youtube) a college and myself have rebuild the wordclock. Let’s get started…

wordclock-final

Part 1: Back

wordclock-01-back wordclock-02-back-with-stripes-and-copper

The back of the clock is made from  10mm MDF and has the total dimensions of 500×500 and painted white to enhance the diffusion of the light.
We countersinked grooves for the WS2812B LED with a depth of 1mm. On each end of the strip we made some copperplate adapters, to connect each strips.
The solder is placed on the copper plates. The adhesive back o the WS2812B stips is removed from the back and soldered from the front.
Additional we added a circumferential groove to be able to add buttons, hide cable or make any future modifications.
wordclock - copperplate

Part 2: Middle

wordclock-03-middle

The middle part is also made out of MDF, but this time out of 19mm.
Back and middle are attached via a four screw and a nut from the front.
wordclock - middlewordclock - nut

Part 3: Front

wordclock-04-paper wordclock-06-plexiglas wordclock-05-vinyl

The front is made out of grey Plexiglas (GS  7C83) with the dimension 520x520mm. This results in on 10mm overhang on each side.
On the back of the Plexiglas we attached black self adhesive vinyl foil.
The vinyl foil was cutted mirrored using a plotter and contains the letters.
With the black foil on the dark grey Plexiglas the letters are very hard to see if no light is illuminating the letter.

The vinyl covered plexiglas is attached the he middle part with some magnets normally used to hold closed doors.
wordclock - magnets
The small metal plate is glued with superglue to the vinyl foil.
This allow the front to be taken apart quickly and allows different styles of front covers (followup projects are coming).

To improve the diffusion of the LED light I added white 80gr/m2 Copypaper between the middle layer and the Plexiglas.

Part 4: Electronics & Buttons

3 buttons on the left side where added to control via GPIO the Python code.
Furthermore I added a Power switch at the bottom of the clock to disconnect the power or restart the PI.
wordclock - buttons wordclock-3-buttons

I used an Raspberry Pi2 with USB Wifi Dongle (needed to get current time).
The Pi  is place in a top groove and connected via breadboard connectors.
I had to adjust the wiring to fit my layout by defining a new class (wiring.py):

class michaels_wiring:
    '''
    michaels wiring
	'''

    def __init__(self, WCA_WIDTH, WCA_HEIGHT):
        self.WCA_WIDTH   = WCA_WIDTH
        self.WCA_HEIGHT  = WCA_HEIGHT

    def getStripIndexFrom2D(self, x, y):
        '''
        Mapping coordinates to the wordclocks display
        Needs hardware/wiring dependent implementation
        Final range:
             (0,0): top-left
             (self.WCA_WIDTH-1, self.WCA_HEIGHT-1): bottom-right
        '''
        if x%2 == 0:   # even columns 0,2,4,6,8,10
            pos = (x)*self.WCA_HEIGHT+y     # last +2 for the minute LEDs before the WCA        
        else:          # odd columns 1,3,5,7,9
            pos = (self.WCA_HEIGHT)+(self.WCA_HEIGHT*x)-y-1
        ''' print("DEBUG " + "X=" + str(x) + " ----  Y=" + str(y) + " ---- POS=" + str(pos) ) '''
        return pos
        
    def mapMinutes(self, min):
        '''
        Access minutes (1,2,3,4)
        This implementation assumes the minutes to be wired as last 4 of the ed-strip
        '''
        if min == 1:
            return 113
        elif min == 2:
            return 112
        elif min == 3:
            return 111
        elif min == 4:
            return 110
        else:
            print('WARNING: Out of range, when mapping minutes...')
            print(min)
            return 0

 

LLRB32 – Leinichs LochReihenBrett für System 32

Bisher habe ich immer Lochreihen mit einem improvisiertem OSB Reststück gebohrt, welches jedoch letztendlich nicht genau genug war und sich schnell abgenutzt hat.

Ursprünglich wollte ich dann die ImatiX MFS3201 von matthou kaufen, fand es jedoch sehr umständlich jedesmal die Oberfräse auszupacken und einzustellen.

Basierend auf der Idee von Wolfram mit dem HORST32 den 5mm Zentrierbohrer von Festool (ZB HS D5 EURO CE) für 32mm Lochreihen zu verwenden, habe ich seine Idee weiterentwickelt. Seinen Blog kann ich euch übrigens sehr empfehlen.

Die Lösung ist nun etwas deutlich komplexer und sicherlich nur noch schwer mit Handwerkzeugen herstellbar.

LLRB32_Version2

 

Download der Zeichnung als PDF: LLRB32 Version2 Drawing

  • Ich wollte das Brett auch dazu verwenden mittlere Lochreihen bohren zu können.  Hierzu werden einfach 5mm Fach-Stecker verwendet um eine Ausrichtung zu erhalten.  Die Ausrichtung ist sowohl Horizontal als auch vertikal möglich.
  • Das Brett sollte eine einfache Möglichkeit haben eine genaue Positionierung der ersten Löcher zu ermöglichen. Hierzu kann die Ausrichtung mit einem Meterstab oder Messschieber erfolgen.
    LLRB32-Meterstab
  • Durch die Erhöhung der Anzahl der Bohrlöcher von 6 auf 8 Löcher, geht das Bohren der Lochreihe etwas schneller. Das Brett ist m.E. allerdings immer noch klein und handlich genug.
  • Die 8,1mm Bohrlöcher habe ich zusätzlich noch von oben angefast um mit dem Zentrierbohrer leichter in Loch zu rutschen.

Gefertigt wurde der LLRB32 aus einem 12mm Reststück Siebdruckplatte und hat eine Breite von 352mm (11*32) und eine Tiefe von 192 (6*32)mm.

Vielen Dank an meinen Arbeitskollegen, der mir das Brett zwei mal fräsen musste, da bei der ersten Version die Maße nicht gestimmt haben (deshalb auch die Bezeichnung v2 😉 )…

Cable Clips for vacuum hose

I had several issues with the Festool PlugIt cable and the vacuum hose, as they get drilled up every time, especially with the router and sander. Festool has a nice hose combining hose an Plugit cable (Amazon). Unfortunately this hose is very expensive.

I started using zip ties to permanently attach the Plugit cable to the hose.
This solution was far from perfect.

So I came with the idea to create some cable clamps.
This is my current solution:

Festool_Cable_Clip_rendering

Festool_cable_clip_OFFestool_cable_clip_OF2

This is working very good. They are easy to attach, fast to remove and surdy enough to keep the cable at the desired position.

This solution also allows you to connect any not Festool power tool and securely attach the power cord.

Please feel free to create your own set of cable clips.

Free download of 3D Printer files (STL & DXF) Festool_Cable_Clip

CCU-historian Graphen zwischenspeichern

Je nach Komplexität der zu erstellenden Graphen über den CCU-historian vergeht einige Zeit.
Abhängig ist dies von der Auslastung des raspberry pi, der Datenbankgröße, etc.

In meiner Umgebung hat es bei komplexen Aufrufen bis zu 70 Sekunden gedauert.

Damit man nicht so lange warten muss, lasse ich alle 15min die Graphen zwischenspeichern.
Wenn der Graph aufgerufen wird ist dieser ohne Wartezeit angezeigt..

Hierzu habe ich eine CCU-cache Datei im Verzeichnis /opt/ccu-historian erstellt mit folgendem Inhalt:

#!/bin/sh
performcache(){
local url=$2
local name=$1
local now="$(date --rfc-3339=ns)"
echo $now - $name Starting
local start_time=`date +%s`
sudo wget -q -O "/opt/ccu-historian/webapp/cache/temp.png" "$url"
sudo mv /opt/ccu-historian/webapp/cache/temp.png /opt/ccu-historian/webapp/cache/${name}.png
local end_time=`date +%s` now=$(date --rfc-3339=ns)
echo $now - $name End with `expr $end_time - $start_time` sec 
echo "\"${now}\";\"${name}\";\"`expr $end_time - $start_time`\"" >> /opt/ccu-historian/webapp/cache/protokol.csv 
} 
echo Start caching CCU-historian images 
performcache temp_all_last_day "http://localhost/query/trend.gy?i=37&i=25&i=39&i=35&i=23&i=22&d=1D" 
performcache temp_all_last_week "http://localhost/query/trend.gy?i=37&i=25&i=39&i=35&i=23&i=22&d=1W" 
performcache temp_aussen_last_week "http://localhost/query/trend.gy?i=22&d=1W" exit

Anschließend muss das Verzeichnis cache unter /opt/ccu-historian/webapp angelegt werden.
Durch den Aufruf

performcache temp_all_last_day "http://localhost/query/trend.gy?i=37&i=25&i=39&i=35&i=23&i=22&d=1D"

wird der Graph von http://localhost/query/trend.gy?i=37&i=25&i=39&i=35&i=23&i=22&d=1D heruntergeladen und als temp_all_last_day.png unter /opt/ccu-historian/webapp/cache abgespeichert.
Die Grafik kann dann über http://$ccu-ip-adresse$/cache/temp_all_last_day.png abgerufen werden.
Der Eintrag lässt sich beliebig oft wiederholen.

Zusätzlich wir die Datei protokol.csv erstellt, die über http://$ccu-ip-adresse$/cache/protokol.csv abrufbar ist, welche mit Excel geöffnet werden kann. Diese beinhaltet, wann ein Graph erstellt wurde und wie lange die Erstellung gedauert hat.

Damit die Graphen nun z.B. alle 15min erstellt werden, muss der Aufruf über crontab eingefügt werden:

pi@raspberrypi:/$ sudo crontab -e
folgende Zeile einfügen:
15,30,45,0 * * * * sudo sh /opt/ccu-historian/ccu-cache

Fertig.

Update 2013-01-27:

Obiger Beitrag wurde angepasst. Die Bilder werden wären der Generierung als temp.png abgespeichert. Nachdem Sie geladen wurden, werden Sie umbenannt.

CCU-historian auf einem raspberry pi

Seit einiger Zeit war ich schon auf der Suche nach einer Möglichkeit die Temperaturverläufe der Homematic Sensoren zu protokollieren und grafisch aufzubereiten.

Bei meiner Suche bin ich auf das Projekt ccu-historian gestoßen http://www.ccu-historian.de/

Da als einzige Voraussetzung JAVA 6 benötigt wird, bietet sich der Raspberry pi dafür an:

Installation:

// Update
pi@raspberrypi:/$ sudo apt-get update
// Midnight commander zum Editieren installieren
pi@raspberrypi:/$ sudo apt-get install mc
// Java installieren
pi@raspberrypi:/$ sudo apt-get install openjdk-6-jdk
// Java Installation testen
pi@raspberrypi:/$ java -version
java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.13) (6b18-1.8.13-0+squeeze1)
OpenJDK Zero VM (build 14.0-b16, mixed mode)
// Aufräumen
pi@raspberrypi:/$ sudo apt-get clean

 CCU Historian runterladen:

pi@raspberrypi:/$ cd /opt
// Ordner anlegen und wechseln
pi@raspberrypi:/$ sudo mkdir ccu-historian
pi@raspberrypi:/$ cd ccu-historian
// Herunterladen
pi@raspberrypi:/$ sudo wget http://www.ccu-historian.de/uploads/CCU-Historian/ccu-historian-0.6.0-bin.zip
// Archiv auspacken
pi@raspberrypi:/$ sudo unzip ccu-historian-0.6.0-bin.zip

Konfigurieren und starten:

pi@raspberrypi:/$ sudo mv ccu-historian-sample.config ccu-historian.config
pi@raspberrypi:/$ sudo mc
// Zur Einstellungsdatei navigieren, das Sample wie in dem CCU-historian Handbuch umbenennen und an die Umgebung anpassen (mit F4).
Ich verwende immer absolute Pfade z.B. /opt/ccu-historian/data anstatt ./data
Den Dienst startet man erstmalig über:
pi@raspberrypi:/$ sudo java -jar /opt/ccu-historian/ccu-historian.jar

CCU Historian Konsole
CCU Historian Konsole

Nachdem der Start des CCU-historian geklappt hat, kann der Dienst über den angegebenen Port per Browser erreicht werden.
Damit beim raspberry pi reboot der Dienst mit gestartet wird, müssen noch folgende Änderungen gemacht werden.
Es muss eine Datei in /etc/init.d angelegt werden mit dem Namen „ccu-historian und folgendem Inhalt:

Download: ccu-historian

#!/bin/bash
### BEGIN INIT INFO
# Provides:          ccu-historian
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop::    $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts ccu-historian
# Description:       starts ccu-historian
### END INIT INFO
(( EUID )) && echo ‘You need to have root priviliges.’ && exit 1
PIDF=/opt/ccu-historian/ccu-historian.pid
CONFF=/opt/ccu-historian/ccu-historian.config
JAVACMD=/usr/bin/java
CCUCMD=/opt/ccu-historian/ccu-historian.jar
RETVAL=0

start() {
echo -n "Starting ccu-historian"
start-stop-daemon --start --pidfile $PIDF --make-pidfile --background  --exec $JAVACMD -- -jar $CCUCMD -config $CONFF
RETVAL=$?
}

stop() {
echo -n "Stopping ccu-historian"
start-stop-daemon --quiet --stop --pidfile $PIDF
RETVAL=$?
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: ccu-historian {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL

// Dateirechte anpassen und Skript zum Startup hinzufügen
pi@raspberrypi:/$ sudo chmod 755 /etc/init.d/ccu-historian
pi@raspberrypi:/$ sudo update-rc.d ccu-historian defaults
// Neustarten um die Einstellungen zu testen
pi@raspberrypi:/$ sudo reboot

Performance:

Damit die Graphen schneller erstellt werden, machen folgende Einstellungen Sinn:

// Durch mehr CPU Leistung werden die Graphen bis zu 30% schneller generiert. Den Wert daher am besten auf  Turbo einstellen (1000MHz)
pi@raspberrypi:/ sudo raspi-config 
// Logging deaktivieren. Durch weniger File IOs wird der CCU-historian ein bisschen schneller. Hierzu die Einstellungsdatei wie folgt editieren:
logSystem.consoleLevel=Level.OFF
logSystem.fileLevel=Level.OFF
webServer.logLevel=Level.OFF

 

 

Benutzerdefinierter Dynamic DNS Anbieter mit der Fritz!Box

Die Registrierung und Pflege eines Account bei einem DYNDNS Anbieter war mir zu umständlich.
Deshalb habe ich eine Quick’n’Dirty Lösung mit PHP erstellt.

update_dyndns.php

<?php
if($_GET['pwd']=="passwort") {
$htaccess = "home/.htaccess";
$handle=fopen($htaccess,"w+");
if ($handle == false) echo "ERROR file";
else {
if (!chmod($htaccess, 0644)) echo "ERROR chmod";
else {
fputs($handle,"RewriteEngine On \n RewriteRule (.*) https://".$_SERVER['REMOTE_ADDR']."/$1");
fclose($handle);
echo "UPDATE to IPADRESS: ".$_SERVER['REMOTE_ADDR']." done.";
}
}
}
?>

Bei dem Aufruf update_dyndns.php?pwd=passwort wird die IP Adresse des Aufrufers in eine .htaccess Datei geschrieben, welche sich im Verzeichnis home befindet (siehe $htaccess = „home/.htaccess“;).

Beim Aufruf des Verzeichnis /home, werdet Ihr dann automatisch weitergeleitet an die Fritz!Box.

Hinweis: update_dyndns.php und .htaccess dürfen nicht im gleichen Verzeichnis sein!

Die Einrichtung erfolgt also folgendermaßen:

  1. Obigen Sourcecode in eine update_dyndns.php Datei speichern
  2. Den Ordner in $htaccess anpassen und „passwort“ mit einem anderen Passwort ersetzen
  3. Den Ordner, wie in $htaccess angeben, auf deiner Webseite anlegen und update_dyndns.php hochladen
  4. FritzBox wir folgt einrichten:
  5. Den Ordner per Browser aufrufen.
    Nun solltet Ihr direkt auf die Fritz!Box Weitergeleitet werden!

PHP/JavaScript – Ort anhand Postleitzahl automatisch ausfüllen

Wer kennt das nicht: Bitte geben Sie Ihre Adresse ein.
Und immer wieder muss man zusätzlich zu der PLZ auch noch den Namen der Stadt eingeben.
Eigentlich unnötig, da die Information nur hinterlegt werden müsste.
Die Information gibt es kostenlos auf OpenGeoDB ( http://opengeodb.giswiki.org/wiki/OpenGeoDB_Downloads )

Und so geht es:

1. Datenbank Tabelle anlegen:

Mit folgendem kleinem PHP script kann man die Daten von OpenGeoDB in eine lokale MySQL Tabelle importieren.

import_plz.php

 
< ?php
/*
This small PHP script will create a zip/plz Table with the data from OpenGeoDB

Michael Leinich ( leinich.net ) 2011 May
Version 1.0.0

Instruction :
Go to http://opengeodb.giswiki.org/wiki/OpenGeoDB_Downloads
and download PLZ.tab
Copy PLZ.tab into the same folder as import_plz.php
Adjust MySQL 
open 
*/

// MySQL Connection Values
define("DB_HOST", "localhost");
define("DB_USER", "username");
define("DB_PASS", "passwort");
define("DB_NAME", "databasename");
define("DB_TABLE", "de_plz");


// where to find PLZ.tab from OpenGeoDB
$plz_tab_file = "./PLZ.tab";

// Connecting
$link = mysql_connect( DB_HOST, DB_USER, DB_PASS );
if (!$link) { die('DB Connect failed: ' . mysql_error()); }

// Select DB
$db_selected = mysql_select_db( DB_NAME, $link );
if (!$db_selected) {
	// Try to create DB
	echo '

DB Create with name ' . DB_NAME . ''; $sql = "CREATE DATABASE " . DB_NAME; $result = mysql_query( $sql ); echo 'MESSAGE: ' . mysql_error() . '\n'; $db_selected = mysql_select_db( DB_NAME, $link ); if (!$db_selected) { die( 'DB Create failed: ' . mysql_error() . '\n' ); } } // Creating Table if Table not exists $sql = "CREATE TABLE IF NOT EXISTS " . DB_NAME . "." . DB_TABLE . " ( loc_id INT( 5 ) NOT NULL , plz CHAR( 5 ) NOT NULL , lon FLOAT( 15, 13 ) NOT NULL , lat FLOAT( 15, 13 ) NOT NULL , ort VARCHAR( 30 ) NOT NULL , PRIMARY KEY ( plz ) , UNIQUE ( loc_id ) ) ENGINE = MYISAM COMMENT = 'German ZIP PLZ list'"; $result = mysql_query($sql); if ($result != 1) { die( 'Table Create failed: ' . mysql_error() . '\n' ); } // reading file PLZ.tab line by line echo "Reading file " . $plz_tab_file . "\n"; if ( $filehandle = fopen ( $plz_tab_file , "r" ) ) { $count = 0; while (!feof( $filehandle )) { $buffer = fgets( $filehandle ); // Split String on indicator TAB $values = explode( "\t" , $buffer ); // five values needed if (count( $values ) == 5) { $result = mysql_query( "INSERT INTO " . DB_NAME . "." . DB_TABLE . "(loc_id, plz, lon, lat, ort) VALUES ( '".$values[0]."', '".$values[1]."', '".$values[2]."', '".$values[3]."', '".$values[4]."')"); if ($result != 1) { die( 'Failed on ' . $count . 'th insert query: ' . mysql_error() . '\n' ); } $count++; } } fclose ( $filehandle ); } else { die( 'Failed to open ' . $plz_tab_file . '\n' ); } echo "Imported " . $count . " lines"; echo "FINISHED"; ?>

2. Datenabfrage

mit folgendem Script kann man die Daten aus der Datenbank abfragen:

getort.php

 
< ?php
/*
This small PHP script return the ort value of a plz

Michael Leinich ( leinich.net ) 2011 May
Version 1.0.0

Instruction :
1. Adjust MySQL connection values
2. Copy this php script (getort.php) on your webserver
3. Done
*/

// MySQL Connection Values
define("DB_HOST", "localhost");
define("DB_USER", "username");
define("DB_PASS", "passwort");
define("DB_NAME", "databasename");
define("DB_TABLE", "de_plz");

// Default value if 
$returnvalue = "ERROR";
$notvalid = "ungültige PLZ";

if (!isset($_GET['plz'])) { die('ERROR: Missing value'); }
// ToDo: if request outside domain, stop here

$plz = mysql_real_escape_string($_GET['plz']);

// query DB if a 5 char long is passed
if (strlen($plz) == 5){
	$link = mysql_connect( DB_HOST, DB_USER, DB_PASS );
		if (!$link) { die('ERROR: DB Connect failed: ' . mysql_error()); }
	$db_selected = mysql_select_db( DB_NAME, $link );
		if (!$db_selected) { die('ERROR: DB Select failed: ' . mysql_error()); }
	$sql = "SELECT ort FROM " . DB_NAME . "." . DB_TABLE . " WHERE plz = '" . $plz . "'";
	$result = mysql_query($sql);
	if ( mysql_num_rows($result) == 1) {
		$value = mysql_fetch_array($result);
		$returnvalue = $value['ort'];
	} else {
		$returnvalue = $notvalid;
	}
}
echo $returnvalue;
?>

3. Formular

Beim ausfüllen des Formularfeldes plz wird anschließend das Formularfeld ort befüllt

<html><head>	
<title>Sample Form</title>	
<script type="text/javascript">		
function getort(plz) {
			// check if ort is already filled
			if (document.getElementById("ort").value!="") { return false; }
			var xmlhttp = new XMLHttpRequest();
			xmlhttp.open("GET", "getort.php?plz=" + plz.value, true);
			xmlhttp.onreadystatechange=function() {	
			if (xmlhttp.readyState==4) {
					document.getElementById("ort").value=xmlhttp.responseText;
				}
			}
			xmlhttp.send(null);
		}	
</script>
</head>
<body>	
<p>Postleitzahl: <input type="text" maxlength="5" size="5" name="plz" id="plz" onblur="getort(this)"/></p>
<p>Ort: <input type="text" name="ort" id="ort" /></p>
</body>
</html>

Viel Spaß!

Designer Stehlampe aus Eisstielen


Fertige Eisstiellampe
Fertige Eisstiellampe

Wie alles begann:

Anstoß der Idee war ein Fernsehbericht über die Herstellung von Möbeln und Gegenständen aus „Müll“ (vgl. ecomoebel.de). Ich war einfach begeistert vom Design dieser Lampe. Leider hatte ich keine 920€ auf der hohen Kante, sodass ich mir die Lampe nicht leisten konnte. Also selber machen…

1. Planung der Lampe:

  • Durchmesser: ca. 22 cm
    • Anzahl Seiten: 8 (regelmäßiges Achteck)
  • Höhe ohne Fuß:  150 cm
  • Gesamthöhe:  170 cm
  • Benötigte Anzahl Eisstiele: ca. 3000 Stück (vgl. DaWanda Perlennest)
    ((1500mm / 2mm [Dicke Eisstiel] /2 [wechselseitig]) * 8 [Seiten] = 3100 Stück)
    Maße eines Eisstiels: 94mm lang, 14mm breit, 2mm dick

2. Lampenschirm zusammenbauen:

  • 6000 Löcher bohren (2mm) und auf 4×2 m (1mm) Drähte auffädeln (zu zweit etwa 3,5 Stunden)
  • Eisstiele abwechselnd auffädeln (etwa 10 Stunden)
  • Fast fertig (Hier zum Test mit einer alten Ikea Stehlampe und 3 Glühbirnen)

3. Stehlampe befestigen:

  • Als Standfuß dient eine alte Ikea Stehlampe. Der Schirm wird an einer Metallkonstruktion aufgehängt.
    Hierzu habe ich einen 12mm Gewindestab verwendet, der mit einer Mutter am Fuß befestigt ist
  • Ein Abschlussbrett hält den Lampenschirm und wird mit einer Schraube von oben am Gewindestab befestigt

4. Belechtung:

  • Zum Einsatz kommt eine 5 m lange LED Leiste mit RGB Leds
  • Zur Ansteuerung gibt es eine kleine Ferndebienung mit der An/Aus, Farbe, Helligkeit und auch einige Effekte gesteuert werden können
  • Die 5 m LED Leiste wurde um ein Metallrohr mit 12mm Innendurchmesser gewickelt und sorgen für eine gleichmäßige Ausleuchtung

5. Ergebnis:

Video: http://www.youtube.com/watch?v=oGk9u2b8_KE

6. Kosten:

  • Eisstielen: 26,00€
  • LED Technik und Fernbedienung: 90,00€
  • Metallstrange und Schrauben/Muttern: 15,00€

[UPDATE Bilder von Beschern..]

Vielen Dank für die Bilder Rike…

Gratuliere euch für diese wirklich gelungene Lampe, Fabian und Carmen …

Google Chrome Browser Tipps und Tricks

Seit einiger Zeit setze ich hauptsächlich den Google Chrome Browser ein und möchte ihn nicht mehr missen.

Hier eine Liste der besten Tipps und Tricks mit dem Google Chrome Browser

  1. Shortcuts
    1. Strg + Tab: Wechseln des Registers
    2. Strrg + T: Neuer Tab
    3. Strg + N: Neues Fenster
    4. Strg + H: Verlauf öffnen
    5. Strg + 1-8: Wechsel zum 1-8ten Tab
    6. Strg + 9: Wechsel zum letzten Tab
    7. Strg – Shift + B: Bookmarkleiste einblenden
    8. Suchbegriff direkt in die Browserleiste mit „Suchmaschinen“.
      Unter  Optionen –> Standardsuche kann über den Namen gesucht werden:
    9. Strg + Enter in der Adressleiste fügt www. und .com automatisch hinzu
    10. Die volle Liste findet ihr unter: http://www.google.com/support/chrome/bin/answer.py?hl=en&answer=95743
  2. Standardsuche ändern:
    1. Optionen –>Grundeinstellungen –> Standardsuche Verwalten
    2. Google SSL als Standardsuchmachine:
      Neuen Eintrag über Hinzufügen eintragen und bei URL „https://www.google.com/search?q=%s“ eingeben.
  3. Tabs verankern:
    hierzu einfach die gewünschte Seite aufrufen und mit Rechtsklick auf den Tab in der Leiste auf  „Tab verankern“
  4. Tabs per Drag and Drop in einem neuen Fenster öffnen.
  5. Links inkognito öffnen:
    Über den Rechtsklick (Kontextmenü) können Links auch inkognito geöffnet werden.
  6. Über den Rechtsklick auf den Zurück Button kann der Verlauf dieses Tabs aufgerufen werden:
  7. Element untersuchen:
    Mit einem Rechsklick auf den Inhalt einer Webseite kann im Kontextmenü auf „Element untersuchen“ geklickt werden. Hier verbigt sich ein sehr mächtiges Tool:

Single Sign On für den VMWare Infrastructure Client

Mit der Version 2.5 des VMware Infrastructur Client kam endlich die langerwartete Funktion des Weiterreichens der Berechtigungszuweisung/Einmalanmeldung, auch bekannt als Single Sign On.

Das ganze funktioniert nicht nur mit dem VirtualCenter sondern auch mit normalen VMware Server, wobei hier der Port (Standard 8333) mit angegeben werden muss.

Um das Feature zu aktivieren folgendes Durchführen:

VMWare VI Client

  1. Rechtsklick auf den leeren Desktop und im Kontextmenü auf  Neu –> Verknüpfung
  2. Im folgenden Dialog den VI Client Ordner auswählen (Normalerweise zu finden unter C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\), die Datei VpxClient.exe auswählen und mit OK bestätigen.
  3. Anschließende an die VpxClient.exe folgendes anhängen:
    -passthroughAuth -s <VirtualCenter Server hostname>
    wobei das <VirtualCenter Server hostname> durch den Hostname oder die IP Addresse des VirtualCenter bzw. VMware Server zu ersetzen ist.
  4. Auf Weiter klicken und einen Namen für die Verknüpfung angeben und mit Fertigstellen abschließen
  5. Nach einem Doppelklick auf die Verknüpfung wird am VirtualCenter bzw. VMWare Server automatisch mit der Windows Kennung angemeldet.

Weiterführende Links:

http://communities.vmware.com/thread/129937

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006611