Barometrische Höhenformel

Weatherdude wächst weiter. Zunächst aber erstmal nur theoretisch. Keine Sorge, sind keine leeren Versprechungen, doch befor die nächste Implementierung erfolgt benötige ich ein paar physikalische Klimmzüge.

Heute geht es um die theoretische Grundlage der barometrischen Höhenformel.

Sofort-Links

 

Die barometrische Höhenformel

Die barometrische Höhenformel dient dazu, den Höhenverlauf des Luftdrucks der Erde (oder genauer: eines Planeten mit dichter Atmosphäre) zu modellieren. In diesem PDF habe ich die Herleitung durchexerziert. Die Herleitung folgt in groben Zügen jener der Wikipedia (Stand: 30 September 2012) mit einigen Modifikationen.

Die Herleitung erfolgt aus der statistischen Physik. Begriffe wie Boltzmann-Verteilung, Hamilton Operator und ideales Gasgesetz werden daher vorausgesetzt!

 

Bei dieser Gelegenheit möchte ich auch gleich nochmals auf CODATA hinweisen. Hier findet ihr eine praktische Suchmaschine, um die aktuellen Werte von so ziemlich allen physikalischen Konstanten nachzuschlagen. Zum Beispiel:

 

Angewandte barometrische Höhenformel bei einer Temperatur von 273.15 K zwischen 0m und 8.000 m

Ein kleines Sage Worksheet steht auch bereit 🙂

 In a nutshell

Wür alle Ungedultigen hier eine voll-funktionsfähige Version der barometrischen Höhenformel:


h ist die Höhe in Metern,

T die absolute Temperatur (in Kelvin)

Für die Umrechung von eurem Druck p in den Druck auf Normal-Null (bzw. Meereshöhe) verwendet ihr

Testimplementierung

Eine Erstimplementierung in Weatherdude findet ihr auf GitHub [Direktlink zum org.feldspaten.weatherdude.physics-Packet]

 

... und eine Demo-Servlet ...

... ist online und findet ihr hier. 🙂

 

Thunderbird now with CHAT support

Seit dem letzten Update ist in Thunderbird plötzlich ein unscheinbarer neuer Toolbar-Button aufgetaucht ...

Als Menschen sind wir Gewohnheitstiere, und so wurde auch dieser Butto erstmal komplett ignoriert.
Übrigens ein interessantes Phänomen, das ich auch bei meiner Katze beobachten kann. Sobald etwas neues in ihre Lebensumgebung kommt, wird es zunächst beinhart ignoriert, und erst nach einiger Zeit starten die ersten Annäherungsversuche - ist aber eine andere Geschichte 🙂

Was sich hinter dem Button verbirgt: Eine integrierte Chat-Funktion (Nomen est omen) -

Thunderbird öffnet ein neues Tab und lässt den Benutzer einen oder mehrere Chat-Accounts konfigurieren.

Thunderbirds neue Chat-Funktion.

 

Momentan werden bei mir folgende Protokolle unterstützt:

  • Facebook Chat
  • Google Talk
  • IRC
  • Twitter
  • Und das Extensable Messaging and Presence Protocol (XMPP), der Nachfolger von Jabber

 

Facebook und IRC laufen wunderbar! Damit hat Thunderbird nun Empathy von meinem System gekickt. Die neue Chat-Funktion ist echt eine Bereicherung!

 

 

Grüße,
Flex 🙂

Ubuntu: GPG-Fehler: NO_PUBKEY

Heute zeige ich euch, wie ihr von öffentlichen Quellen die Keys importiert.

CAVE:
Packetfremdquellen können euren Rechner mit mangelhafter/fehlerhafter Software und möglicherweise mit Schadsoftware
"infizieren". Bevor ihr fortfährt, solltet ihr euch über die Risiken im klaren sein!!
Wie immer: Ich übernehme keine Haftung, es ist euer System, damit auch euer Risiko!
Fremdquellen können euer System schrotten. Also: VORSICHT!!!
Quelle: wiki.ubuntuusers.de

Wenn ihr die folgende Fehlermeldung erhaltet, müsst ihr noch den Public Key importieren, damit der Packetquelle vertraut wird.

 

Wobei das XXXXXXXXXXXXXXXX natürlich für euren Pubkey steht.

 

Folgende Zeile importiert den Public key vom keyserver keyserver.ubuntu.com

Das war's schon!

PS. Der erste Blogeintrag, der mittels Blogilo erstellt wurde 🙂

Hello World Kernel Module

Heute geht's um Linux Kernel Module.

Ich zeige euch, wie ihr ein ganz simples "Hello World!" Modul erstellen könnt.

Ich benutze die Shell und einen Texteditor. Mehr brauchst du nicht für dein erstes Kernel-Modul!

 

Benötigte Vorkenntnisse

  • Linux - sudo und Root-Rechte
  • Texteditor
  • gcc
  • Makefile
  • C

Los geht's!

Und wir legen los. Am besten erstellst du ein neues Verzeichnis (ich arbeite im temp/hello_kernel Ordner) für das ganze

Und genau hier wird nun die datei module.c mit dem folgenden Inhalt erstellt. Die Datei könnt ihr hier downloaden.

Damit öffnet ihr vi als Texteditor und schreibt nun folgenden Inhalt in die Datei (i eingeben, um in den INSERT-Mode zu kommen).
(Randbemerkung: Hier gibt die Vi-Cheat Sheats. Ausdrucken und an die Wand nageln!!)
#include <linux/module.h>
MODULE_AUTHOR("Flex");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_DESCRIPTION("Hello World module");
static int start__module(void) {
/* Use printk for debug prints of a kernel module */
printk(KERN_INFO " *** Hello linux! *** \n");
/* There are eight Loglevel-Strings, defined in <linux/kernel.h> */
/* (More precise: /linux/printk.h) */
/*
* #define KERN_EMERG
* #define KERN_ALERT
* #define KERN_CRIT
* #define KERN_ERR
* #define KERN_WARNING
* #define KERN_NOTICE
* #define KERN_INFO
* #define KERN_DEBUG
*
*/
/* Always use return 0 instant of EXIT_SUCCESS. On the
* kernel level, we return with 0 on success!
*/
return 0;
}
static void end__module(void) {
printk(KERN_INFO " *** Hello module exit *** \n");
}
/* This pointers design the entrance end exit functions of the module */
module_init(start__module);
module_exit(end__module);

Die Kommentare sollten für sich sprechen. mit STRG+C wechselt ihr in den Kommando-Modus von vi, und mit

Wird die Datei geschrieben und vi geschlossen.

Nur brauchen wir noch eine Makefile. Die Datei könnt ihr hier downloaden. Los gehts:

mit dem folgenden Inhalt

obj-m := module.o
PWD := $(shell pwd)
all:
make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean

 

Auf den genauen Inhalt will ich jetzt hier nicht eingehen. Betrachtet es einfach mal als von Gott gegeben, und benutzt die File. 😉

OK, nun wird das Modul kompiliert:

Fertig! Die Modul-Datei ist die module.ko, die brauchen wir nun.

 

Modul einbinden

Wir benutzen insmod mit Superuser-Rechten. Unter Ubuntu läuft mit sudo alles wunderbar

Und überprüft, ob das Modul geladen wurde

Sollte euch euer geladenes Modul anzeigen.

 

Nun wollen wir aber noch den Output vom printk anschauen. Das tool dazu ist dmesg. Wir pipen dmesg an tail, damit wir nur die letzten Zeilen erhalten.

gibt euch hoffentlich soetwas ähnliches wie die folgende Zeile aus:

Say hello to your little friend 🙂

 

Modul entfernen

Fertig. Wir pipen wieder dmesg an tail (Aber mit zwei Zeilen, damit wir sehen, wie lange das Modul gelaufen ist)

das Resultat schaut (hoffentlich) ungefähr so aus

Und so schaut das ganze am Bildschirm aus

Viel Spass beim Kernel-Hacking 🙂

Weatherdude: Erstes Release

Weatherdude: Release One

Weatherdude in action

Das erste ALPHA-release ist online 🙂

Screenshots

 

Set up instructions

Der Server benötigt eine fertig konfigurierte MySQL Datenbank, um daraus Daten zu fetchen. Ihr könnt gerne diese hier benutzen. Ist meine exportierte Datenbank mit den Daten von seit letzter Woche.

Den Server startet ihr am besten folgendermaßen

 

Host, user, password und db entsprechend mit Host der Datenbank, Benutzernamen, Passwort und Datenbank versehen und fertig! Euer Weatherdude Server läuft und wartet auf Requests.

Den Client könnt ihr einfach wie er kommt starten. Er wird euch nach dem Host und den Port fragen.

 

 Weatherbuddy

Zusammen mit dem ersten Release habe ich nun auch Weatherbuddy (also das Web-Interface zum Weatherdude) aktualisiert. Die aktuelle Version findet ihr hier online (highly experimental!)

Weatherdude ALPHA 1

Good news everbody!

Seit zwei Tagen läuft Weatherbuddy mit Weatherdude im ALPHA Release 🙂
Von nun können erste Daten über dieses Webinterface abgerufen werden.

Tagesplot von Sonntag, 16. September 2012

 

Weatherbuddy ist ein (primitives, experimentelles) Webinterfaces, mit dem die Daten von Weatherdude abgerufen und dargestellt werden können.

Hier seht ihr einen einfachen Datenplot eines Tagesverlaufs. Das ganze passt noch nicht ganz, was man z.B. bei der Temperatur gut sehen kann. Auch fehlen noch Achsen und deren Beschriftungen sowie eine halbwegs brauchbare Darstellung.

Keine Sorge, ein Rudel trainierter Affen kümmert sich darum 😉

 

Weatherdude und Weatherbuddy findet ihr übrigens auf GitHub. Details zum Fortschritt auf der Weatherdude-Seite meines Blogs.

Weatherdude - Der Stein rollt

Nach einer Coding Session die ihresgleichen erst sucht, steht nun die erste halbwegs lauffähige Version online. Im GitHub. Und mit lauffähige Version meine ich die Java-Programme.

Soweit laufen jetzt

  • Arduino Mikrokontroller läuft stabil seit 3 Tagen
  • Datensammler ("Collector") läuft seit heute Nachmittag in der Version 1.1
  • Ein primitiver Datenserver läuft bereits im Testbetrieb
  • Erste Client-API steht vor dem erste Alpha-Release

Der aktulle SourceCode steht im GitHub unter der folgenden Adresse zur verfügung

Und jetzt reicht's erstmal für heute. In den nächsten Tagen habe ich fast keine Zeit für Basteleien, den Collector lasse ich trotzdem laufen.

Weatherdude - Update

OK, das Update im Arduino hat Weatherdude gut getan. Der Datenlogger läuft nun seit etwa 18h und versorgt die provisorische Datenbank mit einem 24h Datenset.

Zur Zeit sind in der Tabelle um die 7.485 Datensätze, dich vorerst bei mir bleiben. Eine Möglichkeit die Datensätze abzurufen werde ich euch in den nächsten Tagen bereit stellen. Bis dahin müssen jedoch erst ein paar Analysen und Kalibrationen vorgenommen werden 😉

Hardware update

Übrigens: Das Board hat ein kleines Hardware-Update erhalten: Zwei LEDs. Die "BOAH, welche Leistung"-Banausen lassen wir mal links liegen, denn die LEDS haben ihren verdammten Sinn:

Am Sonntag ist beim ersten Probebetrieb aus irgendwelchen nicht ersichtlichen Gründen mehrmals die WLAN-Verbindung zusammengebrochen. Ursache unbekannt. Eine LED leuchtet nunr Grün, sofern alles in Ordnung ist, die zweite LED während eines READOUTS. Dazu ein paar Worte später.

Da ich etwa alle 10 Sekunden einen Readout mache, kann ich mit einem kurzen Blick auf den Prototyp feststellen, ob denn noch alles läuft, oder ob schon wieder ein Problem festliegt. Vor dem LED-Update musste ich dazu den Data Collector am Server benachrichtigen.

 

Eigene Seite

Mit diesem Projekt habe ich eine neue Spielwiese entdeckt. Daher widme ich dem ganzen eine eigene Seite (oder hier mit https). Schaut mal rein, vielleicht findet der eine oder andere etwas interessantes 🙂

Weatherdude - Die eigene Wetterstation

Weatherdude mein Name. Angenehm Ihre Bekanntschaft zu machen!

Der Prototyp in einem schlag, jedoch nicht ganz so wasserfesten "Gehäuse"

So schaut mein aktuelles Arduino-Projekt aus. Stattlich ausgestattet mit einem WiFi-Shield, einem TSL2561 Helligkeitsmesser und einem Bosh BMP085 Luftdruck/Temperatur/Höhenmesser wird dieses Teil in der nächsten Zeit seine Dienste aufnehmen.

Was kann das nun?

Momentan befindet sich as ganze im Alpha-Prototyping Stadium. Ich habe die Chips fertig zusammengelötet und erstmal provisorisch mit dem Arduino verbunden. Eine definitive Platine kommt später ... 😉

Das fertige Projekt gibt mir zum gegenwärtigen Zeitpunkt die Möglichkeit, über einen HTTP-Request die aktuellen Wetterdaten* ausgegeben zu bekommen.

* Luftruck, Temperatur, Höhe (warum auch immer) und dei Helligkeit (IR- und Sichtbares Lichtspektrum)

Die Website schaut so aus:

WeatherDude im Firefox (Ausschnitt)

Ist nicht schön, muss es aber auch nicht sein 😉
Immehin dient das ganze einfach nur als primitive Schnittstelle zur Station.

Und weiter?

Zur Zeit lasse ich die Station mal laufen und von einem einfachen Client erstmal über 24h ein paar Kalibrationsdaten sammeln.

Sobald ich weiss, dass alles halbwegs funktioniert stelle ich den Source online. Bis dahin, müsst ihr euch erstmal gedulden 😉

Ankündigung: Wetterstation

Der heutige Tag stand im Stern des Arduinos. Nach einem Maraton in Datenblätter durchstöbern und ein paar kleinen Lötklimmzügen ist nun endlich meine experimentelle Wetterstation online! 🙂

Details, Fotos und Source code folgen demnächst. Zeit für etwas Sport, ich bin heute schon viel zu lange vor dem Bildschirm gesessen.