JerryWho

Die Tage stolperte ich über fowsr. Dabei handelt es sich über eine kleine Programmsammlung zum Auslesen und Verteilen der Daten aus verschiedenen Wetterstationen. Zu den unterstützten Stationen gehört neben meiner PCE FWS 20 auch folgende Typen:

Da ich mir gerade ein Laptop mit Ubuntu 12.04 LTS (beta) Precise Pangolin fertig gemacht hatte, war das doch der ideale Rechner, um fowsr auszuprobieren.

Doch nach einem einfachen make gab’s folgende Fehlermeldungen:

gcc    -c -o fowsr.o fowsr.c
fowsr.c: In function ‘CWS_print_decoded_data’:
fowsr.c:279:3: warning: format not a string literal and no format arguments [-Wformat-security]
fowsr.c: In function ‘CWS_decode’:
fowsr.c:477:4: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘double’ [-Wformat]
fowsr.c: In function ‘CWF_Write’:
fowsr.c:602:6: warning: field width used with ‘%A’ gnu_strftime format [-Wformat]
fowsr.c:602:6: warning: field width used with ‘%A’ gnu_strftime format [-Wformat]
gcc -lusb -lm -o fowsr  fowsr.o
fowsr.o: In function `list_devices':
fowsr.c:(.text+0x11d): undefined reference to `usb_get_busses'
fowsr.o: In function `find_device':
fowsr.c:(.text+0x188): undefined reference to `usb_get_busses'
fowsr.o: In function `CUSB_Open':
fowsr.c:(.text+0x200): undefined reference to `usb_init'
fowsr.c:(.text+0x20c): undefined reference to `usb_set_debug'
fowsr.c:(.text+0x211): undefined reference to `usb_find_busses'
fowsr.c:(.text+0x216): undefined reference to `usb_find_devices'
fowsr.c:(.text+0x267): undefined reference to `usb_open'
fowsr.c:(.text+0x2d5): undefined reference to `usb_get_driver_np'
fowsr.c:(.text+0x327): undefined reference to `usb_detach_kernel_driver_np'
fowsr.c:(.text+0x359): undefined reference to `usb_claim_interface'
fowsr.c:(.text+0x3a0): undefined reference to `usb_set_altinterface'
fowsr.c:(.text+0x402): undefined reference to `usb_get_descriptor'
fowsr.c:(.text+0x437): undefined reference to `usb_get_descriptor'
fowsr.c:(.text+0x46c): undefined reference to `usb_get_descriptor'
fowsr.c:(.text+0x487): undefined reference to `usb_release_interface'
fowsr.c:(.text+0x4c2): undefined reference to `usb_set_configuration'
fowsr.c:(.text+0x4dd): undefined reference to `usb_claim_interface'
fowsr.c:(.text+0x518): undefined reference to `usb_set_altinterface'
fowsr.c:(.text+0x565): undefined reference to `usb_control_msg'
fowsr.c:(.text+0x59a): undefined reference to `usb_get_descriptor'
fowsr.o: In function `CUSB_Close':
fowsr.c:(.text+0x5d4): undefined reference to `usb_release_interface'
fowsr.c:(.text+0x628): undefined reference to `usb_close'
fowsr.o: In function `CUSB_read_block':
fowsr.c:(.text+0x708): undefined reference to `usb_control_msg'
fowsr.c:(.text+0x737): undefined reference to `usb_interrupt_read'
fowsr.o: In function `CUSB_write_byte':
fowsr.c:(.text+0x7ef): undefined reference to `usb_control_msg'
fowsr.c:(.text+0x81e): undefined reference to `usb_interrupt_write'
fowsr.c:(.text+0x84d): undefined reference to `usb_interrupt_read'
fowsr.o: In function `CUSB_write_block':
fowsr.c:(.text+0x900): undefined reference to `usb_control_msg'
fowsr.c:(.text+0x92f): undefined reference to `usb_interrupt_write'
fowsr.c:(.text+0x95e): undefined reference to `usb_interrupt_read'
fowsr.o: In function `CWS_dew_point':
fowsr.c:(.text+0x10e7): undefined reference to `log'
collect2: ld returned 1 exit status
make: *** [fowsr] Error 1

Das sah gar nicht gut aus. Irgendetwas passte beim Linken nicht. Also habe ich erstmal ein wenig gegoogelt. Angeblich setzt fowsr libusb in der Version 0.1 voraus. Ich hatte sowohl die Pakete libusb-0.1-4 wie auch libusb-1.0-0 installiert. Für letzteres auch das Developer Paket.

Nun gut, da das nicht zum Erfolg führte, habe ich mir die libusb in der Version 0.1 unter /opt installiert.

Auch dann funktionierte das Kompilieren und Linken in einem Schritt nicht. Daher habe ich es manuell gebaut:

gcc -I/opt/include -L/opt/lib -lm -lusb fowsr.c -c -o fowsr.o
gcc -o fowsr ./fowsr.o -lusb -lm

Nachher fiel mir dann auf, dass es auch in einem Rutsch geht, wenn man die Optionen in der richtigen Reihenfolge setzt:

> gcc -o fowsr -I/opt/include -L/opt/lib  fowsr.c  -lm -lusb
fowsr.c: In function ‘CWS_print_decoded_data’:
fowsr.c:279:3: warning: format not a string literal and no format arguments [-Wformat-security]
fowsr.c: In function ‘CWS_decode’:
fowsr.c:477:4: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘double’ [-Wformat]
fowsr.c: In function ‘CWF_Write’:
fowsr.c:602:6: warning: field width used with ‘%A’ gnu_strftime format [-Wformat]
fowsr.c:602:6: warning: field width used with ‘%A’ gnu_strftime format [-Wformat]

Der erste Schritt war also getan. Nun ging es ans Auslesen.

Wichtig hierfür ist, dass das Programm nach /var schreiben kann. Dort wird das Ausgabe-File angelegt. Man kann dies nur im Quellcode überschreiben, wenn man will. Per Option geht das zur Laufzeit nicht mehr.

Wenn die Daten nun ausgelesen werden können, steht nun an, die Daten auch zu veröffentlichen. Dazu werden bei fowsr zwei Skripte mitgeliefert, die die Daten zum einen zu Weatherunderground, zum anderen zu PWSWeather schicken, sofern man dort jeweils einen Account hat.

Ich habe mich zunächst für Weatherunderground entschieden. Dort werden zum Beispiel diese Grafiken dann bereitgestellt:

Zur Zeit wird über das Geheimgeschehen für Pokemon Schwarz und Weiß mal wieder ein Victini verteilt. Nachdem im letzten Jahr man sich das Victini dadurch sichern konnte, dass man den Gartenpass heruntergeladen hat, erhält man nun das Victini direkt.

Es ist im Level 50 und besitzt vier sehr schöne Attacken: V-Generator, Flammenball, Kreuzdonner und Kreuzflamme

In Vorbereitung auf die im Herbst erhältlichen neuen Pokemon-Versionen Schwarz 2 und Weiß 2 macht das auf jeden Fall schon mal Lust auf mehr.

Gran Turismo 5

Nun ist es mir tatsächlich gelungen, die Jeff Gordon Nascar School in Daytona in Bronze zu schaffen. Dazu muss man fünfter werden. Ich hatte ja früher meine Zweifel, ob das nach dem Schießen der Lücke mit dem Deaktivieren der Traktionskontrolle überhaupt ohne Lenkrad möglich ist. Doch nun habe ich den Dreh raus.

Zum einen habe ich folgende Einstellungen vorgenommen:

Einstellungen

Dann besteht der Trick darin, in den Kurven immer ungefähr in Höhe der gestrichelten Linie zu bleiben und bloß nicht zu stark zu lenken. Auf keinen Fall sollte man auch gegen die Bande kommen. Das kostet zu viel Geschwindigkeit.

Kann man auf der ersten Geraden nach dem Überholen des ersten Wagens den Rückstand von weniger als 1,9 Sekunden auf 1,6 Sekunden verringern, hat man gute Karten. Doch seht selbst:

Gran Turismo 5

Wie ich ja bereits schrieb, lasse ich nun meine Fahrer im B-Spec Modus Runden drehen. Dabei hatte ich eben ein seltsames Erlebnis: Meine Fahrer hatte ich auf die 1000km von Suzuka geschickt. Als ich nun nach ca. 5 Stunden mal wieder reinschaute, stellte ich fest, dass die aktuellen Rundenzeiten statt bei gut zwei Minuten bei 4 Minuten lagen.

Was war geschehen? Es fing an zu regnen, und anstatt dass die Comuptergegner dies schamlos ausnutzten, blieben sie ebenso wie meine Fahrer munter auf Slicks. Bei jeder Kurve rutschen die Wagen von der Straße.

Also wechselte ich auf Regenreifen. Daraufhin fuhren auch die Computergegner an die Box, wechselten aber auf Intermediates, obwohl die Anzeige 100% Feuchtigkeit auf der Strecke signalisierte.

Mein Fahrer wollte daraufhin nach jeder Runde an die Box. Als ich ihn dann an die Box ließ und auch Intermediates aufzog, fuhr er ohne akuten Boxenstopp-Wunsch weiter.

Als ich später reinschaute, waren plötzlich alle auf Regenreifen unterwegs.

Es ist zwar nett, dass der Computer meine Abwesendheit nicht ausnutzte. Realistisch ist’s aber nicht.

Im Google Analytics Blog kann man heute lesen, dass Google an einem neuen Report arbeitet. So soll die Quelle des Zugriffs zukünftig weiter ausgewertet werden können. Zugriffe sollen dann als Quelle nicht mehr nur von der Erde kommen können, sondern vielmehr auch von anderen Planeten, wenn der Mensch diese denn besiedelt.

Geplant ist diese Einführung für 2030. Man überlegt auch, die Zugriffe nach Spezies unterscheiden zu können, wenn man denn noch andere Lebensformen entdeckt.

Ich finde es sehr positiv, dass Google sein Produkt Google Analytics immer weiter ausbaut. — Allen Lesern noch einen schönen ersten April ;-)

Nachdem am letzten Wochenende die Uhren wieder umgestellt wurden, zeigte sich ein erneutes Problem des iOS Kalenders.

Termine, die auf dem Exchange über die Zeitumstellung hinweg liefen und tagesweise eingestellt wurden (also z.B. von 0:00 Uhr am 24.3. bis 00:00 Uhr am 26.3.) wurden auf dem iPhone nicht mehr oben als Tagestermin angezeigt sondern bedeckten den gesamten Tag, da der Endtermin nun nicht mehr bei 0:00 Uhr MESZ lag sondern noch bei 0:00 Uhr MEZ.

Gran Turismo 5

Ich habe in den letzten Wochen, die PlayStation 3 ein wenig gequält, um meinen B-Spec Level ein wenig anzuheben. Nun ist es mir gelungen die Suzuka 1000km zu gewinnen, nachdem ich Level 30 erreicht habe. Mit diesem Level 30 wurde nun auch bei den Special-Missionen die Sebastian Vettel Challenge freigeschaltet.

Das ist etwas ganz verrücktes. Zunächst wird das Auto X2010 vorgestellt. Danach muss man damit ein Zeitrennen fahren. Der erste Teil wird auf der GP Strecke am Nürburgring gefahren. Beim ersten Versuch dachte ich, dass ich vielleicht sogar die Gold-Zeit schaffe. Doch dann merkte ich, dass ich in dieser Zeit zwei Runden statt einer fahren muss. Ich war also Meilenweit selbst von Bronze entfernt. Dann habe ich mir mal angeschaut, wie man denn fahren sollte. Ich glaube, das ist mir Controller unmöglich. Continue reading »

Wirft man einen Blick auf die Seiten der Telekom oder von Vodafone, auf denen sie die aktuelle Netzabdeckung von LTE darstellen, so drängt sich der Gedanke aus, dass vor allem deutsche Kühe die Hauptnutzer von LTE werden:

Auf den Felder findet sich ausgezeichnete LTE Versorgung. Doch kommt man einer Gemeinde nahe, so ist die Versorgung urplötzlich vorbei.

Das scheint darauf hinzudeuten, dass die Karten negativ erstellt werden: Nur wo nachgewiesener Maßen kein LTE Empfang vorhanden ist, wird dies gekennzeichnet. Das macht die Nützlichkeit natürlich ziemlich zunichte, da man nie weiss, ob es tatsächlich Empfang gibt oder ob bisher einfach dort noch nicht geprüft wurde.

Bildschirmfoto 2011-07-21 um 14.15.33

Eine lustige Erkenntnis hatte ich die Tage, als ich auf dem iPad via iMExchange 2 eine Erinnerung eingeben wollte.

Hierbei erhält man das iOS-typische “Zahlenschloss”. Doch sind hier nun die Minuten und Stunden vertauscht – analog zur Datumseingabe im Englischen ;-)

Uhrzeit Eingabe in iMExchange 2 auf dem iPad

Mit iOS 5 kamen die ortsgebundenen Erinnerungen auf das iPhone 4 und das iPhone 4S. Doch ist es nicht so einfach, diese auch einzusetzen. Dies gilt vor allem für Nutzer, die ihr iPhone an einen Exchange Server gekoppelt haben.

Hat man nämlich auch die Aufgaben des Exchange Servers auf das iPhone synchroniert, so sieht die Erinnerungs-Seite einer neuen Erinnerung auf dem iPhone wie so aus:

Continue reading »

© 2012 JerryWho Suffusion theme by Sayontan Sinha