Energy Control 3000 und Windows Vista 64bit

ec3000

Voltcraft Energy Control 3000 USB

Das Energiekosten-Messgerät “Energy Control 3000” von Voltcraft ist eigentlich kein schlechtes Gerät. Die Verbrauchsmessung erfolgt von mehreren Funk-Sensoren. Diese sind als Hutschienengerät, Zwischenstecker oder Zähler-Sensor erhältlich. Zudem gibt es noch Gaszähler. Also, dachte ich mir, ersetze ich meine beiden “Energy Logger 3500” durch dieses Gerät mit einigen Sensoren. Gesagt – Bestellt. Ich habe das “ENERGY CONTROL 3000 USB + SENSOR SET1” bei Conrad in den Warenkorb gelegt, dazu noch 2 weitere Sensoren und das ganze Bestellt. Die Lieferung erfolgte 3 Tage nach Zahlung. Die Einrichtung des Gerätes ist auch einfach. Sensoren auspacken, einstecken, Kanäle einstellen und weiter an der Basis. Auspacken, Batterien einlegen, Datum/Uhrzeit einstellen und die automatische Erkennung der Sensoren abwarten. Nach etwa 15 Minuten ist das Gerät bereit (weitere Details siehe Anleitung). Als nächstes habe ich meinen PC unter Windows Vista 64 gestartet und wollte die Software auf der beigelegten CD installieren. Leider erschien bei meinem ersten Versuch die Meldung “Betriebssystem nicht unterstützt”. OK, Conrad hat leider im Shop nur “Mindestens Windows 2000 oder höher erforderlich” geschrieben. Aber halb so wild, im Conrad-Shop liegt eine neuere Version bereit. Diese ließ sich problemlos installieren. Als nächstes habe ich das Gerät angeschlossen (USB) und prompt meldet Vista “Treiber nicht gefunden”. Auch eine manuelle Suche im Ordner “Treiber” brachte keinen Erfolg. Nach einem genauerem Blick auf diesen Ordner fand ich heraus, das im Energy Control 3000 ein USB/Serial Wandler von FTDI als Schnittstelle zum PC verwendet wird. Also habe ich mir für den verwendeten Chip aktuelle Vista64 Treiber heruntergeladen. Leider funktionierte auch dieser Treiber nicht. Ein Blick in die INF Dateien und ein Vergleich mit dem alten Treiber ergab, dass jediglich die Hardwarekennungen “VID_18EF&PID_E006″ des Gerätes hinzugefügt wurden. Nach einigen Änderungen am neuerem Originaltreiber für Vista 64 ließ sich der Treiber (mit einer WHQL Warnung) installieren und das Gerät konnte von der Software “Energy Professional” problemlos angesteuert werden. Darauf hin habe ich die INF komplett für Vista64 überarbeitet. Das Ergebniss sind 2 Treiber, der erste für den USB-Wandler “FTDIBUS” und einen zweiten für die eigentliche Serielle Schnitstelle, welche nach der Installation des Bustreibers im Gerätemanager auftaucht. Leider ist die WHQL Zertifizierung nach dieser Anpassung nicht mehr gültig, wesshalb ich diese aus dem Treiber entfernt habe.

Das fertige Paket mit beiden Treibern für Vista 64 könnt ihr nun hier herunterladen. Viel Spaß beim Messen :-)

Download Energy Control 3000 Vista64 Treiber

Einsatz eines IMAP-Proxys zur Beschleunigung und entlastung des IMAP Servers bei Webmail

Gerade neuere PHP basierende (IMAP) Webmailer haben das Problem, das jede Aktion in der Oberfläche einen erneuten Login am verursacht. Um dies zu verhindern, kann ein Cache auf dem Webserver eingerichtet werden. Dieser verbindet den jeweiligen Benutzer dem Server und hält die Verbindung noch einige Zeit offen. Löst der Benutzer anschließend im Webmailer eine erneute Verbindung aus, wird diese vom Cache abgefangen und die bereits offene zwischengespeicherte Verbindung weiterhin genutzt. Der IMAP-Server  muss so nicht bei jeder Aktion im Webmailer erneut die Zugangsdaten des Benutzers prüfen, was bei einem komplexeren Anmelde Backend zu einer massiven Leistungssteigerung führt.  Nach einigen Tests habe ich mich für http://www.imapproxy.org entschieden. Dieser überzeugt durch einfache Konfiguration und hohe Leistung. Leider fehlt ein passendes init-script für Gentoo-Linux. Dies lässt sich aber problemlos nachholen.

Installation unter Gentoo

Kopieren des Download-Links von http://www.imapproxy.org/download.html in die Zwischenablage

cd /usr/src
wget http://www.imapproxy.org/downloads/up-imapproxy-VERSION.tar.gz (vorher kopiert :- )
tar xfz up-imapproxy-1.2.6.tar.gz

Gentoo sollte als Meta-Distribution alle Abhängigkeiten zum Kompilieren erfüllen. Für andere Distributionen sollten die entsprechenden Pakete (GCC, MAKE, usw.) installiert werden.

Konfigurieren und Kompilieren:

./configure --prefix=/usr --sysconfdir=/etc/imapproxy  --localstatedir=/var
make

Installieren:
Ein Blick ins Makefile verrät das von „make install“ nur 2 Dateien nach /usr/sbin kopiert werden.  „make install-init“ sollte man unter Gentoo nicht ausführen, da die scripte unter /etc/init.d abgelegt werden.  Die Konfiguration kann auch per Hand kopiert werden.

make install
mkdir /etc/imapproxy
cp scripts/imapproxy.conf /etc/imapproxy

Nun schnell noch ein für gentoo passendes init-script schreiben und unter /etc/init.d ablegen …

#!/sbin/runscript
#Runscript for imap-proxy under Gentoo Linux
#
opts="checkconfig reload"
depend() {
need net hostname localmount
}
checkconfig() {
if [ ! -e /etc/imapproxy/imapproxy.conf ]; then
eerror "Please create /etc/imapproxy/imapproxy.conf first!"
return 1
fi
}
start() {
checkconfig || return 1
ebegin "Starting imap proxy"
start-stop-daemon --start --quiet --exec /usr/sbin/in.imapproxyd -- -p /var/run/imapproxy.pid -f /etc/imapproxy/imapproxy.conf
eend $? "Failed to start imap proxy"
}
stop() {
ebegin "Stopping imap proxy"
start-stop-daemon --stop --quiet --pidfile /var/run/imapproxy.pid
}
Die Konfiguration erfolgt in der Datei /etc/imapproxy/imapproxy.conf. Die Kommentare sind mehr als ausreichend. Ich empfehle aus sicherheitsgründen den Proxy ausschließlich an das  loopback Interface (127.0.0.1)  zu binden. Sollte sich der IMAP-Server im gleichem Netz (z.B. DMZ) oder gar auf dem gleichem Host befinden, kann auf SSL verzichtet werden.

Nun kann der Proxy gestartet werden.

/etc/init.d/imapproxy start

“tail /var/log/messages /var/log/mail.log” sollten nun folgende Zeilen zeigen:

in.imapproxyd: main(): Using pidfile '/var/run/imapproxy.pid'
in.imapproxyd: main(): Using configuration file '/etc/imapproxy/imapproxy.conf'
in.imapproxyd: Using syslog facility 'LOG_MAIL' for logging.
in.imapproxyd[1957]: Masking syslog priority up to LOG_INFO.
in.imapproxyd[1957]: main(): SELECT caching is disabled
in.imapproxyd[1957]: main(): Internal admin commands are disabled
in.imapproxyd[1957]: main(): Allocating 3072 IMAP connection structures.
in.imapproxyd[1957]: ServerInit(): Using '/var/log/imapproxy_protocol.log' for global protocol logging file.
in.imapproxyd[1957]: ServerInit(): proxying to IMAP server '**********'.
in.imapproxyd[1957]: ServerInit(): Proxying to IMAP port 143
in.imapproxyd[1957]: main(): Binding to tcp 127.0.0.1:1430
in.imapproxyd[1957]: main(): Using global statistics file '/var/run/pimpstats'
in.imapproxyd[1957]: Daemonize(): Configured to run in background mode.
in.imapproxyd[1959]: BecomeNonRoot(): Process will run as uid 65534 (nobody) and gid 65534 (nobody).
in.imapproxyd[1959]: main(): Launched ICC recycle thread with id -1381332080
in.imapproxyd[1959]: main(): imapproxy version 1.2.6 normal server startup.

INIT, “netstat -nlp” und “ps -Al” sollten bestätigen das der Proxy läuft.

netstat -nlp | grep -i imapproxy
tcp        0      0 127.0.0.1:1430           0.0.0.0:*               LISTEN     1959/in.imapproxyd
ps -AlF
5 S nobody 1959 1 0 78 0 - 5067 415801 1176 0 16:37 ? 00:00:00 /usr/sbin/in.imapproxyd -p /var/run/imapproxy.pid -f /etc/imapproxy/imapproxy.conf
/etc/init.d/imapproxy status
* status: started

Abschließend wird der Webmailer zur Verwendung des IMAP-Proxys konfiguriert und fertig.
z.B. Roundcube:

$rcmail_config['default_host'] = 'localhost';
$rcmail_config['default_port'] = 1430;

Anfangs sollte man die “syslog_facility” mindestens auf “LOG_INFO”. Dies hilft bei der Fehlersuche.

loopback für alles – Partitionen direkt einbinden

Schon einmal eine Partition direkt eingebunden? Das klingt nun vieleicht etwas merkwürdig, der Kernel erkennt ja die Partitionen und udev legt die passenden nodes unter /dev an … aber, was, wenn die Partitionstabelle beschädigt wurde oder man aus versehen mit einer grub-installation diese zerstört hat? Kein Problem. Kennt man das offset der Partition, kann die Festplatte mit einem offset als neues Gerät bereitgestellt werden, was ausreicht, um Dateien noch kopieren zu können. Schreiben sollte man mit dieser Methode nicht.

Beispiel an meiner HDD


fdisk -ul /dev/sda

Platte /dev/sda: 250.0 GByte, 250059350016 Byte
255 Köpfe, 63 Sektoren/Spuren, 30401 Zylinder, zusammen 488397168 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Disk identifier: 0xc606c606
Gerät boot. Anfang Ende Blöcke Id System
/dev/sda1 * 63 146496734 73248336 7 HPFS/NTFS
/dev/sda2 146496735 193374404 23438835 83 Linux
/dev/sda3 193374405 486978344 146801970 b W95 FAT32
/dev/sda4 486978345 488392064 706860 82 Linux Swap / Solaris

Die erste Partition startet bei Sektor 63 und endet bei 146496734. Dabei ist zu beachten, das die Start/Endposition unbedingt in Sektoren, und nicht in Zylindern anzugeben ist. 146496735 Sektoren entsprechen 146496735*512/1024/1024/1024 Gigabyte. losetup benötigt das offset in bytes, so ist zb. 146496735*512=75006328320 für die 2. Partition zu übergeben. Andersherum kann man diese Rechnung auch nutzen, um bei zerstörten Partitionstabellen sich in etwa an den 1. Block heranzutasten. Dabei muss man in diesem Bereich nach einer gültigen Dateisystem-Signatur suchen und den 1. Sektor als offset nutzen. Das geht besonders gut mit einem hexeditor (zb. hexedit). Die größe der Partition in byte umrechnen, die HDD im hexeditor öffnen und nach einer Signatur suchen und per loopback als neues device bereitstellen. OK, zurück zur Aufgabe.

Um meine 1. Partition zu mounten, muss das Offset in byte angegeben werden, bei der diese Physisch auf der HDD startet. Also, 63sektoren a 512 Byte. Also, 63*512 = 32256. Dieses offset übergibt man zusammen mit dem zu verwendendem loop-device und der hdd an losetup. Anschließend kann das Device normal gemountet werden (wenn das offset stimmt und ein Dateisystem-header im loop-device gefunden wird)

~ # losetup -o 32256 /dev/loop4 /dev/sda
~ # losetup -a
/dev/loop/4: [000f]:1108 (/dev/sda) offset=32256
~ # mount /dev/loop4 tmp2
~ # mount
/dev/sda2 on / type ext3 (rw,noatime)
proc on /proc type proc (rw,nosuid,nodev,noexec)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec)
udev on /dev type tmpfs (rw,nosuid)
devpts on /dev/pts type devpts (rw,nosuid,noexec)
shm on /dev/shm type tmpfs (rw,noexec,nosuid,nodev)
usbfs on /proc/bus/usb type usbfs (rw,noexec,nosuid,devmode=0664,devgid=85)
svcdir on /var/lib/init.d type tmpfs (rw,mode=0755,size=2048k)
none on /sys/fs/fuse/connections type fusectl (rw)
/dev/loop/4 on /root/tmp2 type ntfs (rw)
~ # ls tmp2
AUTOEXEC.BAT ntldr
BOOT.BAK pagefile.sys
bootfont.bin Programme
boot.ini RECYCLER
Dokumente und Einstellungen hiberfil.sys
System Volume Information NTDETECT.COM
IO.SYS Update
MSDOS.SYS WINDOWS
mount | grep -i loop
/dev/loop/4 on /root/tmp2 type ntfs (rw)
df -h | grep -i loop
/dev/loop/4 70G 68G 2,1G 98% /root/tmp2

nagut, wie man sieht lassen sich die Dateisysteme problemlos mounten und lesen. Wurde die Partitionstabelle beschädigt, kann man in einer Region der HDD in der sich das Dateisystem befinden sollte nach der Signatur suchen und anschließend mit offset mounten.

loopback für alles – ISO-Images

Wer kennt nicht das Problem? Man hat ein DVD oder CD-Image und möchte ohne zu Brennen auf dieses zugreifen. Mit einem loop-device kein Problem. Einfach vor den jeweiligen Mount-Befehl ein -o loop anfügen und das Problem ist Vergangenheit.
Einen tmp-Ordner erstellen, ein paar Unterordner anlegen und ein dummy-Image erstellen

mkdir image
mkdir image/ordner1
mkdir image/ordner2
mkdir image/ordner3
dd if=/dev/zero of=image/afile.dat bs=1000 count=100000
mkisofs -R -J -o cdimage.iso image/
I: -input-charset not specified, using utf-8 (detected in locale settings)
9.70% done, estimate finish Tue Mar 18 21:11:38 2008
19.41% done, estimate finish Tue Mar 18 21:11:38 2008
29.09% done, estimate finish Tue Mar 18 21:11:38 2008
38.80% done, estimate finish Tue Mar 18 21:11:40 2008
48.48% done, estimate finish Tue Mar 18 21:11:40 2008
58.19% done, estimate finish Tue Mar 18 21:11:39 2008
67.87% done, estimate finish Tue Mar 18 21:11:40 2008
77.58% done, estimate finish Tue Mar 18 21:11:40 2008
87.26% done, estimate finish Tue Mar 18 21:11:40 2008
96.97% done, estimate finish Tue Mar 18 21:11:40 2008
Total translation table size: 0
Total rockridge attributes bytes: 1322
Total directory bytes: 10240
Path table size(bytes): 90
Max brk space used 0
51572 extents written (100 MB)
ls -l
-rw-r--r-- 1 root root 105619456 18. Mär 21:12 cdimage.iso

OK, nun kann das Image einfach mit der -o loop Option gemountet werden.

mkdir tmp
mount -o loop cdimage.iso tmp
ls tmp
ordner1 ordner2 ordner3 afile.dat

Wunderbar, das Image wurde gemountet. Ich hatte nur eben gerade keine iso zur hand ;-)

OpenVPN HowTO Teil2 auf administrator.de veröffentlicht

nach einiger Zeit habe ich den 2. Teil meines HowTo’s zu OpenVPN endlich veröffentlicht. Es geht diesmal um die erstellung einer grundlegenden Server/Clientkonfiguration inkl. Tests. Ich bin dabei nur auf die grundlegende Konfiguration die für einen Tunnel nötig ist eingegangen. In einem 3. Teil werde ich detailierter auf die Verteilung der Software auf mehrere Clients, GUI’s sowie die fehlerbehebung eingehen. Ich hoffe es gefällt. Ich freue ich mich über jedes feedback.

http://www.administrator.de/index.php?content=dedecc70209db85b6b33389a0fae1835Â