Tag Archive: IT


Jakob hat sich letztens mal mit asymmetrischer Kryptographie am Beispiel von RSA beschäftigt und dies zusammengefasst. Hier ist seine Zusammenfassung: thesenpapier-rsa.odt, thesenpapier-rsa.pdf

Er ist Vertreter der Gemeinfreiheit, unter der auch dieses Dokument steht. Konkret wird CC0 1.0 verwendet.

Das stand schon länger auf meiner Liste und das wird es wohl auch noch eine längere Zeit tun … Das Nachfolgende ist ein Erfahrungsbericht von einem Projekt, das ich allerdings für die nächste Zeit wieder auf Eis gelegt habe. Nachdem ich schon ein paar 1-Wire Temperatursensoren installiert habe und mit meinem Server und volkszaehler.org überwache, wurde es Zeit das volkszaehler.org-Projekt dafür einzusetzen, wozu es ursprünglich gedacht war, nämlich als „intelligenten Stromzähler“. Da bei mir aber kein Zähler mit S0 Ausgang rumhängt, sondern ein klassischer Ferraris-Zähler, habe ich dafür eine Lösung gesucht und auch gefunden. Meine Lösung besteht aus einem Foto-Reflex-Optokoppler, dem CNY 70 (Details) der die rote Markierung der Scheibe des Ferraris-Zählers erkennen soll. Diese dreht sich meistens 75 oder 96 Mal pro „verbrauchter“ Kilowattstunde.

Wer noch mehr Einleitung in das Thema möchte, den verweise ich auf diesen Blogartikel und natürlich auf volkszaehler.org.

Ich begann indem ich die Schaltung, wie hier beschrieben, aufbaute. Ich verzichtete also komplett auf analoge Aufbereitung des Signals und leitete das Signal direkt an einen AD-Wandler (10 Bit Auflösung) eines Mikrocontrollers weiter. Nach etwas probieren stellte sich heraus, dass sich die besten Messwerte erreichen lassen, wenn man die zwei Linsen des CNY 70 quer zur Ferrarisscheibe montiert (die Scheibe und die gedachte Linie durch die zwei Linsen bilden ein Kreuz). Die Ergebnisse waren überraschend gut. Ich dachte anfangs, das würde schwieriger werden, da ich mehrere Erfahrungsbereiche gelesen habe, aber so wie es aussieht, lässt sich die rote Markierung gut erkenne (siehe Punktdiagramm der Probemessung).

Um die Reflexkoppler vernünftig in den Zählerschrank einbauen zu können, steckte ich ein 6 poliges Flachbandkabel zusammen, über das zwei CNY 70 angesteuert werden können. Das Entwerfen hat mich ein bisschen Zeit gekostet und war auch nicht ganz einfach, daher dokumentiere ich das hier mit. Eine Bedingung war, dass die Anoden der IR-LED einzeln ansteuerbar sind. Außerdem natürlich die Emitter der Fototransitorten. Weiterhin liegen bei dem Kabel jeweils Kathoden und Kollektoren auf einer eigenen Leitung. Das sind meine Notizen dazu:

Leitungsbelegung:
1: A1:	180 Ohm -- +5V 
2: E1:	Pulldown (10k Ohm) -- ADC 
3: K:	GND 
4: C:	+5V 
5: A2:	180 Ohm -- +5V 
6: E2:	Pulldown (10k Ohm) -- ADC 

1. Stecker/Sensor: 
2 4	## Kabel  (Layer 1) 
1 3	## Kabel  (Layer 1) 

----- beschriftete Seite 
E C	## CNY 70 (Layer 2) 
A K	## CNY 70 (Layer 2) 


2. Stecker/Sensor: 
1 3 5	## Kabel  (Layer 1) 
2 4 6	## Kabel  (Layer 1) 

  K A	## CNY 70 (Layer 2) 
  C E	## CNY 70 (Layer 2) 
----- beschriftete Seite

Es gibt mehrere Varianten des CNY 70 (bei denen C und E vertauscht sind!). 

Ein CNY 70 (IR-LED): 14 mA

Und so sieht das dann in Real aus. Die Pfeile zeigen jeweils in die Richtung, auf der die Sensoren beschriftetet sind.
.

Da der Zählerschrank nicht direkt neben einer Ethernetdose ist, überlegte ich mir auch eine Möglichkeit, die Daten ins Netzwerk beziehungsweise in eine Datenbank zu bekommen. Da ich bei dem Projekt Temperaturerfassung bereits Leitungen (eine davon war noch unbenutzt) verlegt hatte, plante ich, diese für die Stromerfassung zu benutzen. Hierfür wollte ich einen kleinen Mikrocontroller einsetzen, der nur die Auswertung der analogen Signale durchführt und einmal pro Umdrehung ein Signal raus gibt. Die Kommunikation sollte auf einem Draht (unidirektionale TTL-Kommunikation) ablaufen. Das heißt, dass der Mikrocontroller nur senden kann, es war kein Rückkanal geplant.

So weit, so gut. An dieser Stelle steht das Projekt jetzt und wird es wohl auch für die nächsten Jahre tun.

Siehe auch:

Kein Plan wie ich mal auf die Idee gekommen bin, aber zurzeit habe ich circa 20 Temperatursensoren im Haus verteilt^^ Ich will hier mal kurz dokumentieren wie man das am Kostengünstigsten und am besten umsetzen kann.

Temperaturmessung

Als Temperatursensor kommt der Dallas DS18B20 zum Einsatz. Der Sensor ist bereits sehr hoch integriert und benötigt keine externe Beschaltung. Alle Sensoren werden einfach mit GND, +5V und einem „Eindraht-Bus“ (beziehungsweise One-Wire-Bus) verbunden. Man kann sogar den VDD Pin (an dem im normalen Modus +5 Volt anliegen) auf GND legen. Indem Fall (parasitäre Spannungsversorgung) läuft die Kommunikation über einen internen Kondensator, der über den „Eindraht-Bus“ geladen wird.

Um die Sensoren im Haus zu verteilen, braucht man ein paar Meter Kabel. Zur maximalen Leitungslänge und empfohlenen Topologie gibt’s hier Informationen. Da meine Installation aber nicht so groß ist, war das nicht so kritisch. Ich habe teilweise auch eine Sterntopologie im Einsatz. An Kabel habe ich alles genommen, was ich gerade da hatte. Aus Gründen der Erweiterbarkeit für spätere Projekte habe ich auch, wo es möglich war, noch eine vierte Leitung mit verlegt.
Um keine Löcher bohren zu müssen, habe ich auch ein bisschen getrickst und alle Sensoren im Keller über ein unbenutztes Koaxialkabel angeschlossen …
Als Stecker für die Sensoren oder Verteiler für Kabel (Sterntopologie) habe ich Präzisions-Buchsenleiste benutzt.
Die ganzen Leitungen kommen bei mir in einem Raum (ich habe die Sensoren auf drei getrennte „Eindraht-Busse“ gelegt). Die „Eindraht-Busse“ sind mit einem AVR Net-IO verbunden. Den Aufbau und meine Veränderungen/Verbesserungen am AVR Net-IO beschreibe ich in einem späteren Blogbeitrag. Auf dem AVR Net-IO läuft Ethersex. Die Ethersex Firmware holt wirklich alles raus, was die leistungsschwachen AVRs so können. Die Firmware, die auf fd0 zurückgeht, implementiert heute sehr viele Protokolle und Funktionen. Beim Konfigurieren der Firmware kann man Auswählen was man an Funktionen so haben möchte. Das bisschen IPv4 und „Eindraht-Bus“ Unterstützung passt locker auf den 32 KB Flash Speicher des Atmega 32 … Es werden zwar ein paar RFCs verletzt (zum Beispiel auf TCP Ebene), aber es funktioniert. In den 32 KB ist übrigens auch ein HTTP Server mit drin. Und nein, das KB ist kein Schreibfehler.

Auswerten

Um die Sensordaten vernünftig auswerten zu können, benötigt man noch eine Möglichkeit die Daten über einen längeren Zeitraum speichern und analysieren zu können. Hierfür kenne ich zwei geeignete Möglichkeiten:

  1. RRDtool
  2. Volkszaehler.org

Das RRDtool ist das klassische Werkzeug für solche Aufgaben, welches ich auch bereits im Zusammenhang mit Munin im Einsatz habe. Allerdings ist RRDtool nicht so schön in der Auswertung. Üblicherweise werden die Messwerte als PNG-Bild vorberechnet beziehungsweise bei Bedarf berechnet und dann dargestellt. Wenn man allerdings nur einzelne Sensorwerte über einen bestimmten Zeitraum vergleichen möchte, ist das ohne Frage möglich, aber dafür müsste man wohl auf die Kommandozeile. Deshalb habe ich mich für Möglichkeit zwei entschieden. Volkszaehler.org bietet auch noch den Vorteil, dass eine Datenbank die Messwerte speichert und keine Round-Robin-Database, bei der alte Messwerte mit der Zeit verworfen werden.

Die Installation und Einrichtung von Volkszaehler.org ist nicht ganz einfach aber durchaus machbar. Kenntnisse von SQL und anderen Sprachen sind hilfreich …
Als Datenbank benutze ich zurzeit MySQL. Ich würde aber heute eigentlich mehr zu PostgreSQL tendieren.

Um nun die Messwerte der Temperatursensoren in die Datenbank zu bekommen, benutze ich ein Perl-Skript vom Volkszaehler.org-Projekt. Dieses Skript wird regelmäßig per cron ausgeführt. Das Skript veranlasst alle am AVR Net-IO angeschlossenen „Eindraht“-Temperatursensoren einzeln ihre Temperatur zu messen. Danach werden die Temperaturen abgefragt. Anschließend wird die Temperatur über die API vom Volkszaehler.org-Projekt in der Datenbank gespeichert.

Das ist alles. Die Auswertung gestaltet sich nun sehr elegant über die Weboberfläche.

Änderungen 2015: Anstelle des AVR Net-IO Board benutze ich aktuell firmata auf einem Arduino als Onewire Busmaster.

Ich versuche, wann immer möglich, meinen Quellcode von den hier veröffentlichten Dokumenten bereitzustellen. Dazu habe ich mir überlegt, dass ich einfach die Quelldateien mit in das erzeugte PDF einbauen könnte. Hierfür nutze ich das Paket attachfile. Auf diese Weise sind keine größeren Änderungen in meinen Arbeitsabläufen nötig. Ich muss nur einmal definieren, welche Quelldateien ich anhängen möchte. Die Dateien lassen sich dann beispielsweise mit pdftk $file.pdf unpack_files oder mit Programmen wie Adobe Reader extrahieren.

Ob Quelldateien eingebunden sind, steht in einer Tabelle (Informationen zu den Quelldateien) im Anhang.

Älterer Quellcode ist natürlich nicht meinem aktuellen Programmierstil angepasst. Das würde ich heute alles etwas anders machen (was ich wahrscheinlich in einem Jahr auch über meinen jetzigen Quellcode sagen würde).

Den Quellcode, den ich in allen Dokumenten verwende, also meine Pakete, werde ich später noch veröffentlichen.
Damit sollte klar sein, dass sich aus dem bislang eingebeteten Quellcode nicht einfach ein PDF erzeugen lässt, das genau gleich aussieht, wie meines. Ich integriere zurzeit nur den Quellcode zu den Inhalten. Dinge wie die Präambel sind in der Regel nicht eingebunden.

Ein Grund für mich meinen LaTeX-Quellcode freizugeben, ist die einfache Weiterverwendung und Abwandlung der mit TikZ erstellten Grafiken (bitte nach Möglichkeiten meine verwendete Lizenz beachten). Außerdem möchte ich das Nachschauen von Implementierungen vereinfachen. (Aus leidvoller Erfahrung: Man findet in irgendwelchen LaTeX-Dokumenten schöne Lösungen für Probleme, kann aber nicht nachschauen, wie diese umgesetzt wurden.)

An fast jeder Schule in Deutschland ist die Benutzung von Computern stark beschränkt. Meiner Meinung nach ist dies nicht mehr zeitgemäß. Es gibt viele Gründe, warum ich diese Meinung vertrete. Erstens ist eine steigende Zahl an Hausaufgaben besser mit dem Computer umsetzbar. Die Macht von Textverarbeitung oder Textsatz mit einem Computer ist unübertroffen. Man kann einfach einen Text schreiben und bekommt eine direkte Rückmeldung, wenn man ein Wort falsch geschrieben hat. Danach kann man den Text erneut lesen, leicht abschließende Korrekturen einpflegen und diesen dann versenden oder ausdrucken. Zudem ist das Ergebnis perfekt lesbar. Ein weiterer Vorteil, zumindest für mich, ist, dass ich viel schneller mit einer Tastatur als mit einem Stift schreiben kann. Viele Lehrer haben diese Tatschen auch schon bemerkt. Es gibt sogar Aufgaben, die mit dem Computer gemacht werden müssen. Diese zwei Tatsachen stehen im Widerspruch. Mir ist es nicht erlaubt, meine Arbeit effektiv in der Schule mit einem Computer zu erledigen. Das ist unlogisch. Computer werden heutzutage in so vielen Bereichen eingesetzt, und die Benutzung von Computern ist Grundvoraussetzung für viele Berufe.

Es ist klar, dass die Benutzung von Universalrechnern einen gewissen Grad an Verantwortung und Medienkompetenz benötigt. Deshalb denke ich nicht, dass die Benutzung von Computern an Schulen komplett erlaubt werden sollte. Aber es sollte für alle Schüler ab einer gewissen Klassestufe gestattet sein. Momentan würde ich vorschlagen, dass die Benutzung von Computern außerhalb des Unterrichts für Schüler ab der zehnten Klasse vertretbar sein sollte. Diese gewisse Klasse wird aber wahrscheinlich über die nächsten Jahre heruntergesetzt werden müssen, da Computer immer wichtiger werden und da es einige Projekte mit dem Ziel gibt, unterrichten und lernen mit Computern zu unterstützen.

Ein anderer schöner Anwendungsfall ist es, Vokabeln oder genauer gesagt Relationen an einem Computer zu lernen. Dies ist sehr viel effektiver für mich, da ich nicht viel lerne, wenn ich Vokabeln nur lese. Es ist also eine schöne Sache für mich, diese zu schreiben und eine sofortige Rückmeldung zu bekommen. Es gibt noch mehr Vorteile zum Beispiel das Lernen mit dem Lernkartei-Prinzip. Diese Funktionen sind alle durch das quelloffene Programm Parley implementiert, das ich für diese Aufgabe empfehlen kann.

Sie denken vielleicht, dass sich all diese Aufgaben auch im Computerraum der Schule erledigen lassen. Nun ja, theoretisch schon, aber es gibt ein paar Probleme. Eine Sache ist, dass zumindest an meiner Schule der Computerraum fast immer abgeschlossen ist und wenn man einen Lehrer fragt, ob er diesen aufschließen könnte, wird man vermutlich eine Antwort bekommt wie „ist nicht meine Baustelle“ oder „Ich habe nicht die Berechtigung um ihn aufzuschließen“. Ein weiterer Punkt ist, dass diese Lösung nicht so gut skaliert wie, wenn Schüler ihre eigenen Computer benutzen dürften, da zumindest an meiner Schule nur circa 15 Computer zur Verfügung stehen. Ich würde es also bevorzugen, wenn ich meinen eigenen Computer benutzen könnte. Und viellicht gibt es ja in ein paar Jahren auch einen drahtlosen Internetzugang an Schulen.

Ich beende diesen Artikel mit einem kurzen Blick auf Universitäten. Soweit ich weiß, gibt es dort überhaupt keine Beschränkungen, was die Nutzung von Computern angeht. Selbst in Vorlesungen kann man einen Laptop benutzen, um sich die Hauptpunkte oder anderes aufzuschreiben. Ich denke, diese Tatsache dürfte meine Meinung ebenfalls unterstützen.

Eine englische Übersetzung ist hier abrufbar.