Skip to content

Neue Wetterstation

Motivation

Nach fast 10 Jahren ging meine alte Wetterstation ­ eine ELV USB-WDE01 mit Kombisensor KS200 ­ kaputt. Eigentlich ging sie noch, allerdings hat die Windmessung nicht mehr funktioniert und ich wüsste nicht wie ich das hätte reparieren können. Insofern habe ich mich nach einem Ersatz umgesehen und wurde bei Pearl fündig. Eine FreeTec PX1117 sollte es werden.

Ich verwende ja eine Seagate Dockstar um die Daten zu speichern und ins Internet zu übertragen. Zum Einsatz kommt eine selbst geschriebene Software Vetero. Dies sollte auch so bleiben, ich bin einfach flexibler wie mit „fertigen“ WLAN-Stationen mit Cloud-Anbindung, die doch sehr von der Unterstützung des Herstellers abhängig sind. Mal davon abgesehen läuft mein WLAN nachts nicht und das soll auch so bleiben.

Insofern kam es mir durchaus gelegen, dass diese FreeTec-Station eine ganz normale USB-Anbindung hat.

"Neue Wetterstation" vollständig lesen

OpenType Features in Libreoffice

Ich bin zwar Softwareentwickler eher im systemnahen Bereich, allerdings interessiere ich mich schon immer so nebenbei für das Thema Schriften und Textsatz.

Neulich bin ich auf ein für mich neues Thema aufmerksam geworden: OpenType Features. OpenType ist ein faszinierendes Schriftformat:

  • endlich ein Format für alle Plattformen (Linux, Windows, Mac OS) ­ wobei TrueType ja auch schon seit langem auf allen Plattformen unterstützt wird
  • vollständige Unicode-Unterstützung
  • eine Datei, keine zusätzlichen Dateien mit Metadaten (wie Type1)
  • erweiterte Möglichkeiten beim Textsatz wie automatische Ligaturen und Zeichendesigns in Abhängigkeit vom Kontext ­ als Beispiel sei die bei Mac OS mitgelieferte Schrift Zapfino genannt
"OpenType Features in Libreoffice" vollständig lesen

Bildlauftasten im Terminal von Mac OS vernünftig verwenden

Ich hatte früher unter Mac OS immer iTerm verwendet, da mir einige Funktionen im mitgelieferten Terminal gefehlt haben. Mittlerweile ist es aber eher anders herum ­ iTerm bekommt immer mehr Funktionalität, am besten soll man sich noch Erweiterungen für die Shell installieren (wenn man viel auf anderen Rechnern per SSH arbeitet eher unpraktikabel) und Terminal hat ein paar Funktionen spendiert bekommen, so dass ich jetzt auf die mitgelieferte Variante gewechselt habe.

Allerdings gefällt man das Verhalten der Bildlauftasten nicht, da diese direkt scrollen ohne an die Shell weitergegeben zu werden. Ich persönlich habe meine ZSH so konfiguriert dass in den Befehlen geblättert wird, so wie in der SUSE-Standardkonfiguration der Bash seit jeher vorkonfiguriert. Zum Scrollen verwende ich dann die Umschalttaste und die Bildlauftasten. Letztlich arbeite ich viel unter Linux und will dass die Bildlauftasten sowie Pos1/Ende genauso funktionieren wie am PC.

Man  kann man hierfür die Tastaturbefehle anpassen. Dazu wählt man TerminalEinstellungenProfileTastatur  und fügt die in der Tabelle dargestellten Einträge hinzu. Zu beachten: Die Sequenz \033 erzeugt man über die Escape-Taste.

Taste Sondertasten Aktion
↖ Start Ohne Text senden: \033[H
↘ Ende Ohne Text senden: \033[F
⇞ Seite nach oben Ohne Text senden: \033[5~
⇟ Seite nach unten Ohne Text senden: \033[6~
⇞ Seite nach oben ⇧ Umschalttaste Seite nach unten
⇟ Seite nach unten ⇧ Umschalttaste Seite nach unten

Dachfenstersteuerung für VELUX INTEGRA®

In einem Mehrfamilienhaus befindet sich im Treppenhaus ein unzugängliches Dachfenster, welches einen Motor mit Fernbedienung zum Öffnen und Schließen besitzt. Zwar schließt sich das Fenster automatisch bei Regen, jedoch wollte ich eine automatische Steuerung realisieren, die das Fenster zeitgesteuert Öffnet und schließt. Außerdem war die Idee, den bereits vorhandenen Windsensor meiner Wetterstation zu nutzen um auch bei Wind das Fenster zu schließen bzw. es erst gar nicht zu Öffnen.

Zwar bietet Velux selbst ein sog. VELUX INTEGRA Control Pad an (bei neueren Modellen werden wohl auch schon intelligentere Fernbedienungen mitgeliefert), allerdings schlägt sowas gleich mit knapp 200 Euro zu Buche, was mir doch etwas teuer erschien.

Leider gibt es im Internet kaum Informationen zum verwendeten Funkprotokoll bzw. Bauteile, mit denen man eigene Steuerungen integrieren kann. Zwar schreibt man groß, dass man einen Standard namens IO Homecontrol verwenden würde, tatsächlich handelt es sich aber um einen Zusammenschluss von mehr oder weniger unbekannten Herstellern (außer eben Velux), welche IO Homecontrol verwenden. Also letztlich ein proprietäres Protokoll. Auf Mikrocontroller.net hat jemand vergeblich versucht, das Ganze zu "knacken".

Somit war dann schließlich die Lösung, eine zweite Fernbedienung auf einer bekannten Auktionsplattform zu erstehen, diese zu zerlegen und dann damit das Fenster zu steuern. Eine solche Fernbedienung bekommt man für um die 15 €.

"Dachfenstersteuerung für VELUX INTEGRA®" vollständig lesen

Compiling vim with Ruby on Windows

My favorite text editor is Vim even on Microsoft Windows (which am I forced to use sometimes at work). I also like the Lusty plugin. This plugin is written in Ruby.

And that's the problem. Vim on Windows is compiled with dynamic Ruby support. Which means that Vim loads the Ruby library at runtime, if it's available. So Vim ships without Ruby and if you install it, it can use it. So the theory. In practice, that works well with other scripting languages like Python or Tcl. But Ruby seems to change its ABI very often. On Linux, everything is compiled by the distribution, so everything fits together.

At the result I was unable to find a suitable Ruby for the binary distribution of Vim. So I compiled my own Vim in MinGW. I tried Visual Studio, but that's much more complicated.

So here are the steps to compile Vim with proper Ruby support:

  1. Download and install MinGW with following packages:
    • mingw-base
    • developer-tools
    • msys-base
    • msys-gcc-c++
  2. Download and install Ruby. I'm using "2.0.0 p364 (x86)". The important thing is that it's the 32 bit version, not the 64 bit version.
  3. Download and install Mercurial.
  4. Add c:\mingw\bin to the %PATH%.
  5. Add c:\mingw\bin to the %PATH%.
  6. Now change into the vim directory you just cloned and execute in the src subdirectory
    the build commands
    c:\> make -f Make_ming.mak RUBY=c:\\ruby200 RUBY_VER=20 RUBY_VER_LONG=2.0.0 GUI=no
    c:\> make -f Make_ming.mak RUBY=c:\\ruby200 RUBY_VER=20 RUBY_VER_LONG=2.0.0
    This will produce a vim.exe and gvim.exe.
  7. Now just copy the executables in the already installed program files directory of vim and enjoy your vim with Ruby support!

Use an Apple keyboard on Linux

I have to admit that I use a Mac at home as my primary workstation. I also like the Apple keyboard (the one with a cable). That keyboard is hard-wired for Macs, which means that on a PC
  • one cannot use the function keys without pressing fn
  • the tilde (in the English/International layout) is not left of the 1 key but right of the left Shift key
  • Alt and Windows are swapped (if you type blindly and ignore the labels).
The good news is that Linux comes with a hid_apple kernel driver which can “fix” all that issues. By default, that driver doesn't change the behavior, you have to set some kernel parameters. On recent Linux distributions, all you have to do is to create a file /etc/modprobe.d/hid-apple.conf with following contents:
options hid_apple fnmode=2 iso_layout=0 swap_opt_cmd=1
I the driver is loaded in initramfs (e.g. you have an encrypted root partition, so you need to enter your password in the early boot phase), then you have to re-create the initramfs, e.g. by mkinitcpio -p linux on Arch Linux.

Mounting NFS shares on Mac OS

When trying to mount a NFS share that is exported by a Linux NFS server (the kernel implementation), I got a "Permission denied" error. There are lots of explanations around in the internet that recommend to use the resvport mount option like

$ sudo mount -t nfs -o resvport,rw kepler:/home/bwalle /Volumes/kepler

However, I didn't want to change the settings on the client but on the server. This has the advantage that I can still use Finder to mount NFS which isn't able to provide special mount options.

The solution was to use insecure in /etc/exports like

/home/bwalle *(rw,no_subtree_check,insecure)

What is insecure about that option? Well, the check comes from the early days of Unix where only the system administrator had the root password. So only applications running as root can open TCP connections with privileged source ports (below 1024). However, nowadays everybody knows that NFS in its versions 2 and 3 are insecure by design and removing the check for the source port doesn't make it more insecure.

Swap Alt and Windows key in Windows

I use VirtualBox on Mac OS. Windows guest, Mac OS host. On the Mac, the keyboard layout is a bit different: While on the PC the three first keys in the last row on the keyboard are Ctrl, Windows and Alt, the Mac has Ctrl, Alt and Command. From the key code perspective, Command and Windows are the same.

The problem is now that the Windows guest gets the key codes, i.e. Alt and Windows are swapped. Of course the label stays, the same, but if you type blind, this doesn't matter. So to use Alt+Tab (to switch between different windows) one needs to press the second key, not the third key. Maybe some people like that behavior, but I don't. There are feature requests, but VirtualBox developers don't want to implement it.

So I decided to look for a solution inside the VM. There are many tools in Windows to swap keys, but most of them are way too overloaded. Searching around in the web, I found a much simpler solution which consists only of adding a value in the registry.

There's a so-called Scan-code mapper for keyboards described in the MSDN documentation. All you need to do is to add a value called HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode Map with following value:

00 00 00 00  00 00 00 00 
03 00 00 00  38 00 5b e0
5b e0 38 00  00 00 00 00

After that, just reboot. No need to install tools, no autostart. If you want to get rid of the behavior, just delete the registry key and you're done.