Vikings

Wow, eher zufällig drüber gestolpert, DIE Serie MUSS ich sehen!

Es gibt auch ein paar Videos davon:

 

 

 

Oh - und Gabriel Byrne spielt da mit!


20.02.2013 21:28 CC0 serie vikings Kino






Arduino Adè :-)

Meine bisherigen Controllerprojekte habe ich immer mit Arduino gemacht. Ich bin damit zwar zufrieden, aber es ist doch etwas teuer. Vor allem deshalb, weil man den Arduino nachher irgendwo verbaut hat und somit nicht mehr für Experimente benutzen kann. Sehr schlecht.

So bin ich irgendwann auf AVR Controller gekommen. Eine Weile hab ich mit einem Attiny85 rumgespielt. Um den zu programmieren, hab ich mir den Diamex-USB-ISP besorgt und mir eine kleine Adapterplatine gebastelt. Das war schon ganz gut ... Aber! Ein Attiny85 macht nicht viel her, nur ein paar Pins, kein UART usw. Ich wollte also was grösseres, ein Attiny2313 musste her und ein Atmega168. Aber die haben viel mehr Pins und passen logischerweise nicht in meine Platine. Schöner Mist. Nun hätte ich mir noch eine Platine basteln können, und noch eine usw. Alles Kacke.

Zufällig habe ich myAVR entdeckt und mir die universelle Platine myMultiProg MK2 und den myMultiProg MK2 bestellt.

Und was soll ich sagen? Ich bin SOWAS von happy damit! Atmega draufgesteckt, USB Kabel rein, Port rausgesucht und ins Makefile eingetragen. "make upload" - und fertig!

Seeeehr genial. Ich bin von den Socken. Und hiermit hat sich das Thema Arduino für mich im Grunde erledigt. Ich kann zukünftig direkt mit AVR arbeiten. Und auf den Komfort muss ich nicht verzichten, ino sei Dank!

Ich hab mal mein Makefile samt bisserl Beispielcode hochgeladen. Das Makefile ist für FreeBSD, den Port sucht ein Script raus (ist dabei): Blinktest-Mega8-myAVR.


19.02.2013 21:18 CC0 arduino avr myavr Elektronik






Ich bleibe bei Amazon Kunde, alles andere wäre Heuchelei

Amazon wird derzeit von allen Seiten heftig wegen der Arbeitsbedingungen in den Logistikzentren kritisiert. Während alle auf Amazon rumhacken, ist mir ein Detail aufgefallen, im oben verlinkten Artikel:

Rund 90 Prozent der Zeitarbeiter bei den Mitgliedsfirmen hätten einen unbefristeten Arbeitsvertrag, betonte Stolz. Der iGZ ist einer der Arbeitgeberverbände der Branche und vertritt nach eigenen Angaben rund 2.700 mittelständische Unternehmen.

Ist das so?

Die Wirklichkeit sieht anders aus. Mehrere Millionen Menschen in Deutschland arbeiten im Niedriglohnsektor zu ähnlichen oder schlechteren Bedingungen als die Leiharbeiter bei Amazon. Ein grosser Teil dieser Menschen verdient nicht genug Geld, um zu überleben und muss mit Hartz IV aufstocken.

Ein Bekannter von mir hat neulich so einen Job angenommen: befristet für 3 Monate bei einer Zeitfirma angestellt für 7,50 Euro die Stunde brutto. Die Zeitfirma verleiht ihn an einen Callcenterbetreiber, der widerum Callcenter für irgendwelche Unternehmen betreibt. Jetzt ist er krank geworden, der Vertrag wird nicht erneuert. Raus.

So oder ähnlich sieht der Alltag vieler Menschen in Deutschland heute aus. Die Kritik an Amazon an sich ist natürlich grundsätzlich nicht falsch. Der Fehler ist, dass Amazon aber lediglich die Möglichkeiten nutzt, die es in Deutschland hat. Gäbe es diese Möglichkeiten nicht, würden sie das auch nicht tun. Zu verdanken haben wir diesen Zustand unserer Regierung (und der davor), die den Arbeitsmarkt systematisch in Richtung chinesischer Verhältnisse umgebaut haben und damit 100 Jahre gewerkschaftliche Kämpfe zunichte gemacht haben.

Die Kritik hat der Regierung zu gelten und nicht einem einzelnen Unternehmen. Ein Unternehmen ist stets bestrebt die Kosten zu senken, und dabei reizt es die gesetzlichen Möglichkeiten aus soweit es geht. Nicht nur Amazon tut das. Auch die Telekom. Oder Zalando. Oder DHS. Oder Apple. Jedoch kommt niemand dieser Möchtegern-Protestler bei Facebook auf die Idee, bei denen auch zu kündigen. Ganz zu schweigen davon, ihre Kritik an die Regierung zu richten, die diesen unerträglichen Zustand überhaupt erst zugelassen hat. Oder an die Gewerkschaften, die sich haben korrumpieren und kaufen lassen.

Dieses ganze Gezeter gegen Amazon ist nichts weiter als stinkende, ignorante Heuchelei. Wollte irgendeiner von denen tatsächlich etwas ändern, würde er seinen Abgeordneten anschreiben, anders wählen und grundsätzlich sein Konsumverhalten ändern. Und das nervt mich schon ziemlich gewaltig.


19.02.2013 19:56 CC0 amazon idioten kritik Gesellschaft






Mal wieder die Endlers

Ja, die gibts auch noch :)

Bild: Endlers 1
Endlers 1 (Feb. 5, 2013, 9:03 p.m.)
[Tags: fische ] [Album: Aquarium ]
Bild: Endlers 2
Endlers 2 (Feb. 5, 2013, 9:03 p.m.)
[Tags: fische ] [Album: Aquarium ]

05.02.2013 21:02 CC0 aquarium endlers fische Aquarium






Quick monitoring script for commandline using google graph - Updated 18.10.2015 10:41

So, you need to setup a graph for something you maintain, for instance response time of a webserver, memory consumption of some process or open database handles. Fast.

You could use MRTG, if you've got it already running. But either way - to add a new graph there isn't really done fast. And what if you don't have MRTG? What about GNU Plot or Google Graph? Every tool like this needs handwork to be done before being able to produce usefull output. One needs more than the other.

Enter quickmon. This is a small script I wrote for the very purpose. It doesn't have any dependencies and therefore runs out-of-the-box. You supply it one or more shell commands and it generates a google graph page and a logfile where it maintains history. It is really not possible to create monitoring graphs any faster!

And as a plus, the tool itself doesn't require internet access. It can run anywhere, inside some protected DMZ or the like. Only the browser which is used to view the output page needs internet access to fetch the google graph JS-library. That's it.

So, first of all, grab a copy of the script from here.

Now, let's take a look at some examples:

quickmon.pl -n "google mx lookup responsetime" \
            -t "google millisecs" \
            -c "host -v -t MX google.com 8.8.8.8 | grep Received | awk '{print \$7}'" \
            -l

In this example we monitor the response time of googles nameserver (when asked for its mx-record) in milliseconds. As you can see, there's one -t and one matching -c parameter. -t tells us what we are actually monitoring and -c is the shell command to be executed. In this example we're using host -v which prints the responsetime of a query in milliseconds. We fetch this value using the grep + awk after the pipe. Here's the output:

Here's another example:

quickmon.pl -n "google webserver response" \
            -t "www.google.com" \
            -c "wget -4 -q -O /dev/null www.google.com" \
            -l

Note the difference to the previous one: we didn't put some grep + awk parser stuff into our shell command. If you do that, the script measures the time it takes to execute the command itself.

This is how it looks after some time:

How about having multiple items in a graph? No problem, you can pass multiple -t and -c parameters to the script. However, be careful to have always one -t for every -c. And: order matters.

quickmon.pl -n "webserver comparision" \
            -t "www.google.com"     -c "wget -4 -q -O /dev/null www.google.com" \
            -t "www.facebook.com"   -c "wget -4 -q -O /dev/null www.facebook.com" \
            -t "www.apple.com"      -c "wget -4 -q -O /dev/null www.apple.com" \
            -l

Ok, quite a long commandline. Watch the matching -t and -c parameters. And here's the output:

One last thing: You might have noticed the -l flag. If supplied, the script runs forever and executes the given commands once every second. That's enough for some quick graphing but sometimes you might need to create graphs for longer timescales, say some days or weeks. In such cases running once per second might be overkill. And executed this way, the script doesn't survive reboots. In such cases just add a cronjob, which executes the quickmon.pl script once every 5 minutes (or whatever you like) and leave the -l parameter. Example:

*/5 * * * * cd /home/user/tmp/ && /usr/local/bin/quickmon.pl -t "title" -c "command"

Beware the chdir call: quickmon.pl uses the current directory to write its logfile and the output page (index.html).

In case you want to take a look at a live sample, here you go: it is the webserver comparision described above, run every 5 minutes by cron.

Well. While this all might sound very cool, there's still one usecase where quickmon.pl could be too complicated. Let's recall: for every painted line in the output graph you have to provide a shell command which returns its value. What if you already have a source which returns such values all at once? Given the examples above it might look like we have to provide one -c parameter per value but each command has to split the same input source differently. That's odd. To say the least.

Take a look at this command output:

$ netstat -w 1 -I bge0 -q 1 
            input         (bge0)           output
   packets  errs idrops      bytes    packets  errs      bytes colls
         9     0     0        828          8     0       9108     0

We've entered the netstat command which printed some stats about a specific network interface. Wouldn't it be good to feed quickmon directly with that output? The good news is: it's possible! Here's a quickmon call which catches some of those values - in and out bytes - to generate a graph from it:

while :; do netstat -w 1 -I bge0 -q 1 | egrep -v "(input|packets)"; done \
     | quickmon.pl -t in-bytes -t out-bytes -p -n bge0 -f 3,6

There's a lot new stuff here, let's dig into it:

  • We're calling the netstat command inside an infinite while loop, because otherwise it doesn't print to stdout but to our controlling terminal (which quickmon doesn't catch). This is freebsd specific. Behavior maybe different on other OSes.
  • The egrep filters out the headings.
  • We provide only 2 titles using -t, because we catch only field #3 and #6 (count starts from 0) by using the -f option.
  • Option -p tells quickmon to watch a file. Since we didn't specify a filename, it uses STDIN, which is actually the output of our while loop.

And this is the output of the above after a while:

Nice, isn't it?

By default quickmon splits the input using whitespace. You might alter this behavior by supplying a different field-separator using the -F option.


Update 18.10.2015 10:41:

The script is now available on Github.

The switch -l now has an optional parameter, the time in seconds to wait between loops, a float (i.e. .1 or 2.5 would be legal)
Also, in pipe mode (-p) it's now possible to specify one title with a timestamp using format characters. So if your input file already contains a timestamp you can use that instead of generated ones.


04.02.2013 20:51 CC0 graph howto monitoring software Source






Der kleine Sexismus

Ist ja allerorten heuer viel zum Thema #aufschrei zu lesen. Eben im Mikrocontrollerforum fiel mir der Spruch hier auf:

Kommentare sind was für Mädchen

Auf den ersten Blick nur eine unbedeutende Kleinigkeit. Aber wenn man genauer drüber nachdenkt, insbesondere dass man selbst hier und da mal solche Sprüche gebracht hat.

Bild: was für Mädchen
was für Mädchen (Feb. 1, 2013, 9:44 p.m.)
[Tags: ] [Album: Screencaps ]

01.02.2013 21:41 CC0 aufschrei Gesellschaft






Modemtöne - jemand hat eine schöne Seite für die Geschichtsbücher hinzugefügt

Jeder, der schon in den 90ern online war, kennt diesen Sound, den das analoge Modem damals gemacht hat. Man wusste zwar, dass sich da die 2 Modems "unterhalten" über irgendwelche Verbindungsparameter, aber was genau die da reden - keine Ahnung.

Oona Räisänen hat sich der Aufgabe angenommen, das ganze mal zu visualisieren. Und WIE ihr das gelungen ist, ich bin völlig von den Socken.

Das waren noch Zeiten, hach! Was waren wir frei! Keine faschistischen Innenminister, keine Datensammler, keine Abmahner. Was ich nicht alles mit diesem Sound assoziiere :)

Sehr schön - dort in den Kommentaren gefunden - ist auch ein Chat-Transscript so einer Modemsession, auf modern gestylt:

Modem A: hey babe, you dtmf?
Modem B: u know it
Modem A: what u up 4 2nite? wanna v.8?
Modem B: i wanna ack u like my daddy net2phone use 2 ack me
Modem A: um ok... v.8 then
Modem B: lol jk, u comin?
Modem A: brt just gotta turn off echo suppressors n cancellers
Modem B: ok i wait
Modem B: my pcm is so modulated
Modem A: lol rly? u think u can handle V.90/V.92?
Modem B: D/A?
Modem A: ...D?
Modem B: wtf no, im not into that
Modem A: lol jk we can do V.42 LAPM if u want im down 4 nething
Modem A: up to 3429 o/c
Modem A: u know i give as good as i get, ne way u want it, loud or soft, high or low, fast or slow, i got all the time in the world 4 u babe, my clock source is internal
Modem B: of course no 3429. and same 4 me. except i might lose track of time, lol
Modem B: and honey if u with me we gon be makin sum NOISE
Modem B: 6db at LEAST u know how i like it
Modem A: lol i hear ya, 3200 all nite long, the way u get me goin maybe we even go 2 4800 lol
Modem A: set ur pre-emphasis filter params n put on that 1920 hz carrier frequency i got u
Modem A: im here baby
[SCRAMBLED]

Ich bin jedenfalls völlig begeistert!


01.02.2013 19:49 CC0 freiheit netz technik Gefunden






Unterschiedliche Django-Objekte nach gemeinsamen Kriterium sortieren

Dieses Blog läuft ja bekanntlich mit einer von mir selbst geschriebenen Django-App. Ich bin sehr zufrieden mit meinem Werk, aber eins hat mich immer gestört: wenn ich ein Update zu einem Posting geschrieben habe UND neue Bilder angehängt habe, wurden diese unzsammenhängend angezeigt (erst das Posting, dann alle Updates, dann alle Bilder). Wirklich doof.

Jetzt werden Bilder und Updates in zeitlicher Reihenfolge angezeigt, hier in Aktion zu bewundern.

Die Schwierigkeit dabei ist, dass es sich bei den Updates und Bildern um völlig verschiedene Objekte handelt, die - abgesehen davon, dass sie mit dem Posting verknüpft sind - nichts miteinander zu tun haben. Trotzdem kann ich beide nach einem gemeinsamen Kriterium, dem Erstellungsdatum, sortieren und in EINER for-Schleife anzeigen. Wie cool ist das denn?!

So guckt das im Django aus:

        def attachments(self):
                snippets = self.snippet_set.all()
                images   = self.image_set.all()
                both     = []
                both.extend(snippets)
                both.extend(images)
                both.sort(key=lambda x: x.date, reverse=False)
                return both

Der Trick dabei ist, sich eine Liste aus beiden Objektlisten zu erzeugen. Das muss man mit einer neuen Liste und extend() machen, weil das mit '+' nämlich nicht geht. Die Methode all() liefert nämlich keine Liste, sondern ein Queryset aus. Durch das both.extend() mache ich also aus 2 Querysets eines. Da beide Objekttypen das Attribute date haben, kann man dann danach sortieren.

Und so der entsprechende Teil im Template:

        {% for item in post.attachments %}
                {% if item.image %}
                        {% with image=item %}
                         ..
                        {% endwith %}
                {% else %}
                        {% with snippet=item %}
                        ..
                {% endif %}
         {% endfor %}

Um welche Art Objekt es sich jeweils handelt frage ich mit dem {% if item.image %} ab. Das geht, weil nur die Images bei mir das Attribut "image" haben und dieses ist immer befüllt (weil mandatory).

Hachmach...


01.02.2013 18:49 CC0 django python software Source






Wie richtiger Datenschutz vor Willkür schützt - Updated 21.03.2013 20:11

Die Augsburger Allgemeine betreibt ein Forum, in dem Menschen Zeitungsartikel diskutieren können. In einem dieser Artikel ging es um das politische Wirken von Ordnungsreferent Volker Ullrich, das einer der Benutzer wie folgt kommentiert hatte:

Dieser Ullrich verbietet sogar erwachsenen Männern ihr Feierabendbier ab 20.00 Uhr, indem er geltendes Recht beugt und Betreiber massiv bedroht!

Aufgrund dieses Kommentars fühlte sich Ullrich beleidigt und in seiner Ehre verletzt, was in Deutschland - so traurig das sein mag - rechtlich verfolgbar ist. Er erstattete Anzeige und das Amtsgericht Augsburg beauftragte die Polizei mit einer Durchsuchung der Redaktionsräume um an die Daten des Nutzers zu kommen, die nachher die Daten freiwillig herausgerückt hatten. So weit, so bekannt.

Nun wird vielerorts darauf hingewiesen, dass keineswegs der Politiker Ullrich einen Fehler gemacht hätte, indem er die Sache zur Anzeige gebracht hat, sondern das Amtsgericht Augsburg, das aufgrund dieser Anzeige eine Durchsuchung bei einem verfassungsrechtlich geschützen Organ in die Wege geleitet hatte.

Diese Ansicht ist in zweierlei Hinsicht falsch. Erstens ist es tatsächlich Ulrichs Anzeige, die den Stein ins Rollen brachte. Insofern ist er als der Verursacher einer Willkürjustiz zu betrachten. Er mag formaljuristisch im Recht gewesen sein (d.h. die Anzeige zu erstatten! Ob die Anzeige gerechtfertigt war, darf zu bezweifeln sein). Er hätte, als Person des öffentlichen Interesses, aber auch einfach auf eine Verfolgung verzichten können. Ein Schaden wäre ihm nicht entstanden. Niemand hätte von dem Forenbeitrag überhaupt Notiz genommen. Andererseits ist es auch nicht der Fehler des Amtsgerichts Augsburg, das den Durchsuchungsbeschluss ausgestellt hatte. Denn auch dies geschah im Rahmen geltenden Rechts. Hinzu kommt, dass wir in Deutschland bekanntermaßen keine unabhängige Justiz haben, sondern dass diese weisungsgebunden handelt. Diese Weisungen erhält die Justiz bei uns von der Exekutive, deren Mitglied Ullrich ist. Dieser Zustand ist für eine Demokratie zwar eine völlige Katastrophe, aber es ist eben so. Und insofern kann man einem Amtsgericht auch nicht dahingehend Vorwürfe machen.

Der eigentliche Adressat von Vorwürfen sollte die Augsburger Allgemeine sein. Der Fehler, den das Blatt gemacht hat, ist sehr einfach zu beschreiben: Verletzung des Datenschutzes. Wenn man als Presseorgan ein öffentliches Forum betreibt und den Benutzern nicht die Verwendung ihres Klarnamens vorschreibt, dann hat dieses Presseorgan auch dafür zu sorgen, dass das tatsächlich der Fall ist. Konkret heisst das, dass in einem solchen Setup keine IP-Adressen der Forenbenutzer geloggt werden dürfen, keine Emailadressen oder sonstige Daten, die ein Forenposting mit einer real existierenden Person in Verbindung bringen könnten. Davon abgesehen, ist es der Zeitung ohnehin verboten, solcherlei Daten aufzuzeichnen, da diese für die Zeitung nicht abrechnungsrelevant sind.

Hätte sich die Augsburger Allgemeine an diese einfachen Grundsätze gehalten, wäre sie gar nicht erst in die Lage geraten, die Daten eines Forennutzers an die Polizei herausgeben zu müssen, um eine Redaktionsdurchsuchung zu vermeiden.  Vielmehr hätte sie die Herausgabe der Daten weiter verweigern können unter Verweis auf die öffentlichen Datenschutzrichtlinien. Hätte das Amtsgericht dann trotzdem auf einer Durchsuchung bestanden, um Daten zu finden, die es gar nicht gibt, DANN wäre das nicht nur Rechtsbeugung, sondern Rechtsbruch gewesen und die Zeitung hätte in jedem Fall sämtliche nachfolgenden Prozesse gegen das AG Augsburg und Ullrich mit Pauken und Trompeten gewonnen. Sie hätte als leuchtendes Beispiel für die Verteidigung der Pressefreiheit und Meinungsfreiheit dastehen können.

Aber so? In meinen Augen ist die Augsburger Allgemeine ein nicht vertrauenswürdiges Presseorgan. Sie denunzieren Dritte ohne Not an den Staat. Mit "Ohne Not" meine ich, dass dem Vorgang ja keine gerichtliche Verurteilung vorausgegangen ist. Und nur dann ist ein Bürger eines Verbrechens/Vergehens schuldig, bis dahin hat er als unschuldig zu gelten und ein Presseorgan sollte das verteidigen, anstatt es ad absurdum zu führen.

Sagen wir, ich wäre ein potentieller Informant und würde ein Presseorgan suchen, dem ich brisante Informationen über einen gewissen Herrn Ullrich in Augsburg zuspielen will. Wem würde ich wohl diese Informationen anvertrauen? Der Augsburger Allgemeinen? Auf allergarkeinen Fall! Die würden meinen Namen, Adresse, Telefonnummer und Email in ihrer Datenbank speichern und jedem dahergelaufenen Staatsvertreter aushändigen, der sie nur laut genug bedroht.

Dieses Einknicken der deutschen Presse gegenüber dem deutschen Staat, dessen Kontrolleur sie eigentlich zu sein hat, ist der Grund für ihren Niedergang. Und nicht irgendwelche Raubkopierer oder Suchmaschinen, denen sie mit ihrem Leistungsschutzrecht zu leibe rücken wollen. Und wenn ich mir das Verhalten der Augsburger Allgemeinen anschaue, muss ich sagen: es ist gut, dass eine solche Presse den Bach runtergeht.


Update 13.02.2013 21:58:

Thomas Stadler kommt zum gleichen Ergebnis:

Wenn man dem Betreiber oder Mitarbeiter von Meinungsforen kein Zeugnisverweigerungsrecht zubilligen will, dann wird man ihnen künftig raten müssen, von der gesetzlichen Möglichkeit, Kommentare und Bewertungen anonym abgeben zu lassen, Gebrauch zu machen. Denn wer keine Informationen über die Person des Verfassers eines Kommentars hat, kann auch als Zeuge dazu keine Angaben machen.


Update 21.03.2013 20:11:

Und es kam, wie es kommen musste: Die Aktion war illegal, hat nun das Landgericht geurteilt. Die schlechte Nachricht: das Gericht hat sich nicht der Ansicht angeschlossen, ein Forenuser eines Presseorgans falle unter Zeugnisverweigerungsrecht. Das ist bitter und enttäuschend, aber ich habe nichts anderes erwartet in diesem Staat.








Sensorita - Hutschienen LCD Display für Sensoranzeige - Updated 21.03.2013 21:00

Heute wollte ich eigentlich meinen Sensorcontroller für das neue Terrarium zusammenbauen. Geplant war, in ein leeres Hutschienengehäuse den Arduino Micro, alle Steckeranschlüsse, das LCD-Display und 2 Buttons unterzubringen. Aber ich hab es einfach nicht hingekriegt, den ganzen Kram da so reinzukriegen, dass ich ihn im Fall der Fälle auch wieder herausbekomme. Tja. Somit habe ich umdisponiert und nur das LCD-Display und die beiden Buttons eingebaut. Auf die Leiterplatte habe ich auch die Pulldown-Widerstände für die Buttons und die Widerstände für den LCD-Anschluss drauf. Das Poti für die Kontrasteinstellung hab ich auch mit unterbringen können. Dann habe ich einen standardmässigen JST Stecker an 20cm Kabeln herausgeführt. Den Arduino mit den Sensoranschlüssen werde ich dann auf der Rückseite der Hutschienensteuerung unterbringen und mit dem o.g. Stecker verbinden.

Anbei Bilder vom LCD-Modul und von meiner Hutschienensteuerung. Auf der Vorderseite der Steuerung befindet sich eine Sicherung, die astronomische Jahresschaltuhr von Theben, das 4-Kanal-Erweiterungsmodul davon, ein Wechselschalter um zwischen Theben und Conrad-Uhr umzuschalten (der fehlt momentan, das ist die Lücke, Bestellung ist unterwegs), daneben eine einfache Conrad-Zeitschaltuhr, die für den Notfall gedacht ist, falls die Theben ausfällt (wobei die Conrad alle 8 Kanäle gleichzeitig schalten wird, während die Theben die Kanäle getrennt schaltet), daneben ein weiterer Wechselschalter, um zwischen Zeitschaltuhr oder manuellem Betrieb umzuschalten, daneben 8 Schalter für den manuellen Betrieb und letzlich die oben erwähnte Sensoranzeige.

Auf der Rückseite befinden sich links die Steckdosen für die 8 Schaltknäle, daneben ein paar Verteiler, dann eine Dauersteckdose (für den Worstcase, dass alle Steuerungsoptionen ausgefallen sind), ein 12V Netzteil, mit dem ich den Arduino (Sensorita) betreibe, und der u.U. auch einen Lüfter versorgen könnte.

Bild: LCD  auf Leiterplatte
LCD auf Leiterplatte (Jan. 25, 2013, 9:17 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]
Bild: LCD Platte von unten
LCD Platte von unten (Jan. 25, 2013, 9:17 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]
Bild: LCD im Gehäuse eingesetzt
LCD im Gehäuse eingesetzt (Jan. 25, 2013, 9:18 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]
Bild: Fertiges LCD-Sensor-Anzeige-Gehäuse
Fertiges LCD-Sensor-Anzeige-Gehäuse (Jan. 25, 2013, 9:18 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]
Bild: Steuerung von hinten
Steuerung von hinten (Jan. 25, 2013, 9:18 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]
Bild: Steuerung von vorn
Steuerung von vorn (Jan. 25, 2013, 9:18 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]


Update 26.01.2013 21:37:

Und hier noch ein Video von dem Teil in Aktion:

Man sieht, wie ich mit dem grünen Kopf durch die Untermenüs gehe. Und wenn ich eine Weile nix mache, geht es aus. Aktuell ist der Timeout natürlich noch recht kurz - zum Testen - später bleibt es eine Minute lang an.


Update 28.01.2013 21:47:

Heute habe ich 5 Sensoranschlüsse verlötet (4 x DS1820 Temperatursensor und 1 x LDR) und die entsprechenden Sensorkabel hergestellt. Leider ist einer der DS1820 kaputt (das herauszufinden, hat mich über 2 Stunden Debugging gekostet!). Anbei ein Video der Sensorita in Aktion:

Und ich hab noch 2 Fotos an das Posting gehängt. Auf dem Einen sieht man die komplette gerätschaft und auf dem anderen die Sensorkabel aus der Nähe (links der LDR, in der Mitte der Stecker und rechts der DS1820).

Bild: Sensoren angeschlossen und in Betrieb
Sensoren angeschlossen und in Betrieb (Jan. 28, 2013, 9:51 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]
Bild: Ein Sensorkabel (mit DS1820)
Ein Sensorkabel (mit DS1820) (Jan. 28, 2013, 9:51 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]


Update 29.01.2013 23:39:

Die Sensorita ist heute fertig geworden. War dann doch mehr Arbeit als erwartet. Aber lohnt sich. Anbei wie üblich das aktuelle Video der Endversion:

Die hohen Lux- und Watt-werte rühren daher, dass ich zum Testen einen 500 Watt Halegenstrahler angeschlossen habe. Die Hauptanzeige hab ich geändert, da werden jetzt alle Werte auf einmal dargestellt, bei der Temperatur der Durchschnitt. Mit dem grünen Knopf kommt man zu den Detailanzeigen. Dort werden dann jeweils noch Min- und Max-Werte hinzukommen.

Angeschlossene Sensoren: DHT22 (Temperatur und Luftfeuchtigkeit), Strom (Watt, Ampere, kwh), 4 x DS1820 (Temperatur) und eine Photodiode (Lux).

Ich habe auch mal den aktuellen Sourcecode hochgeladen. Ist noch nicht bei Github, kommt aber noch.


Update 10.02.2013 15:36:

Den Sourcecode habe ich nun endlich mal bei Github eingecheckt.


Update 10.02.2013 17:39:

Bei Github gibts jetzt ne neue Version, ich habe die Anzeige nochmal überarbeitet. Die Steuerung ist inzwischen auch im Terrarium eingebaut, siehe Foto. Ausserdem habe ich mal alle Anzeigemenüs fotografiert, damit man mal sieht, wie das ungefähr aussieht nachher. Der exorbitant hohe Stromverbrauch kommt von der angeschlossenen Testlampe (ein Halegenstrahler).

Bild: Eingebaut ins Terrarium
Eingebaut ins Terrarium (Feb. 10, 2013, 5:40 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]
Bild: Alle Anzeigemenüs im Überblick
Alle Anzeigemenüs im Überblick (Feb. 10, 2013, 5:40 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]


Update 01.03.2013 15:45:

Und hier die finale Ansicht, jetzt mit Beschriftung und Legende.

Bild: Steuerung fertiggestellt
Steuerung fertiggestellt (March 1, 2013, 3:45 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]


Update 11.03.2013 12:10:

So, das Logging hab ich jetzt auch fertiggestellt. Ich wollte dafür ursprünglich meine noch vorhandene und derzeit nicht genutzte NSLU2 benutzen. Ich hatte die deshalb geöffnet und den seriellen Port mit einem Stecker verbunden und herausgeführt. Von einem Arduino aus konnte ich dann auch tatsächlich serielle Daten (via TTL) dorthin schicken. Das Problem war nur, dass das Gerät zu unzuverlässig ist. Zum einen ist es nach diversen Reboots nicht mehr hochgekommen, da musste ich jedesmal mit Redboot rumfrickeln. Ein Scheiss. Und zum anderen läuft unter Linux der serielle Read-Buffer voll, wenn man da Daten hinschickt und die keiner abholt und das ist nur per Reboot abzustellen. Dazu kann ich nur sagen: what the bloody hell?!

Also in die Tonne damit. Mir geht Linux mittlerweile sowieso nur noch auf den Zeiger. Aber sowas? Verdammtes Amateurgeraffel. Also ich verwende jetzt einen zweiten Arduino, den ich eigentlich für Testzwecke da hatte. Ich hab dem Teil einfach den Ethernetshield aus meinem Terraduinoprojekt aufgesteckt. Das hat dort sowieso nie richtig funktioniert und ich benutze es auch nicht mehr. RX und TX verbinden (witzigerweise musste ich TX nach TX und RX nach RX stecken, damit es geht, die Beschriftung ist falsch herum auf dem Teil!) und per Ethernet raus damit.

Source von Sensorita und dem Loggingmodul wie üblich bei Github.

Die Logdaten schickt das Etherlogmodul dann zu meinem Djangoserver, der es in der Datenbank ablegt. Ich schicke mehr Daten als MRTG nutzt, d.h. die tatsächliche Auflösung beträgt etwa 1 Datensatz pro Minute. Für MRTG wird aus diesen Daten ein Durchschnitt ermittelt. In den angehängten Screenshots sieht man die MRTG Graphen und auf der rechten Seite die aktuellen Sensorwerte. Im zweiten Bild sieht man die Rohdaten in der Datenbank.

Weiters habe ich herausgefunden, dass man mit der Obelisksoftware von Theben, mit der ich die Programmierung für die astronomische Jahresschaltuhr einstelle, einen CSV Export machen kann. Das hab ich natürlich sogleich ins Django eingebaut und so kann ich nun sehen, wann die einzelnen Kanäle gemäß Programmierung angehen werden. Sehr feine Sache, das.

Bild: MRTG und Datenanzeige
MRTG und Datenanzeige (March 11, 2013, 12:10 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]
Bild: Sensorlogs in der Django DB
Sensorlogs in der Django DB (March 11, 2013, 12:10 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]
Bild: Schaltzeiten der Theben Schaltuhr
Schaltzeiten der Theben Schaltuhr (March 11, 2013, 12:10 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]


Update 12.03.2013 15:14:

Jetzt, wo ich die Sensordaten erstmal in der Datenbank habe, kann ich die natürlich auch überwachen. Da ich bereits Nagios einsetze, mach ich es damit.

Anbei zwei Screenshots aus meinem Nagios, einmal ohne und einmal mit (künstlichem) Alarm :) Und die SMS kann man auch bewundern :)

Bild: Nagios alles grün
Nagios alles grün (March 12, 2013, 3:15 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]
Bild: Nagios ein Ausfall
Nagios ein Ausfall (March 12, 2013, 3:15 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]
Bild: Nagios SMS bei Ausfall
Nagios SMS bei Ausfall (March 12, 2013, 3:44 p.m.)
[Tags: terra2013 ] [Album: Terrarium ]


Update 21.03.2013 21:00:

Nachdem das MRTG nun eine Weile läuft, habe ich inzwischen auch einen kombinierten Graphen, in dem alle Werte gleichzeitig angezeigt werden (im Bild links oben). Dadurch kann man sehr gut die Zusammenhänge zwischen verschiedenen Dingen erkennen.

Bild: DRRAW kombinierter MRTG Graph
DRRAW kombinierter MRTG Graph (March 21, 2013, 9 p.m.)
[Tags: terra2013 ] [Album: Screencaps ]

25.01.2013 20:49 CC0 Terrarium