<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>McSeven - primus esse delectat &#187; Projekte</title> <atom:link href="http://www.mcseven.me/category/projects/feed/" rel="self" type="application/rss+xml" /><link>http://www.mcseven.me</link> <description>ey Mac, working hardly or hardly working?</description> <lastBuildDate>Mon, 19 Dec 2011 15:19:37 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>Roots, roots, roots: Die CCU1</title><link>http://www.mcseven.me/2011/12/roots-roots-roots-die-ccu1/</link> <comments>http://www.mcseven.me/2011/12/roots-roots-roots-die-ccu1/#comments</comments> <pubDate>Fri, 16 Dec 2011 19:46:20 +0000</pubDate> <dc:creator>McSeven</dc:creator> <category><![CDATA[Heim-Automatisierung]]></category> <category><![CDATA[Testberichte]]></category><guid
isPermaLink="false">http://www.mcseven.me/?p=1343</guid> <description><![CDATA[Vorwort In diesem Artikel möchten wir der CCU1 des Systems &#8220;HomeMatic&#8221; einmal auf den Zahn fühlen. Und nachdem das der erste Artikel seiner Bauart werden wird, eine Anmerkung zum Aufbau der HomeMatic-Testberichte: Nach der Einleitung wird stets eine kleine allgemeine Beschreibung des Bauteils erfolgen, dann die Installation beschrieben, persönliche Erfahrungen hinzugefügt und zuletzt -sofern vorhanden- [...]]]></description> <content:encoded><![CDATA[<h1>Vorwort</h1><p>In diesem Artikel möchten wir der CCU1 des Systems &#8220;HomeMatic&#8221; einmal auf den Zahn fühlen. Und nachdem das der erste Artikel seiner Bauart werden wird, eine Anmerkung zum Aufbau der HomeMatic-Testberichte: Nach der Einleitung wird stets eine kleine allgemeine Beschreibung des Bauteils erfolgen, dann die Installation beschrieben, persönliche Erfahrungen hinzugefügt und zuletzt -sofern vorhanden- mir aufgefallene Bugs angegeben.</p><h1>Beschreibung</h1><p><a
href="http://www.mcseven.me/wp-content/uploads/2011/12/HM-68-833-55.jpg" rel="lightbox[1343]"><img
class="size-thumbnail wp-image-1345 alignright" title="CCU1 in Schwarz" src="http://www.mcseven.me/wp-content/uploads/2011/12/HM-68-833-55-100x100.jpg" alt="" width="100" height="100" /></a></p><p>Die CCU1 ist ein ARM7-Mehrplatinen-Embedded-System (<a
href="http://www.homematic-inside.de/hardware.html?view=item&amp;item_id=48" target="_blank">Fotos</a>) und dient als zentraler Baustein des HomeMatic-Systems. Sie besteht aus drei Platinen (Power, embedded-Teil und Funkadapter) und läuft unter einem abgespeckten Linux-Betriebssystem. GPL-Konform sind Betriebssystem und Tool-Chain auf der Webseite des Herstellers frei zum Download verfügbar, außer die Quelltexte der entsprechenden Daemons für Funk, RS485 und zentrale Schnittstelle (&#8220;virtuelle Kanäle&#8221;).</p><p>Die CCU erfüllt im Wesentlichen drei Aufgaben:</p><ul><li><strong>Anlernen </strong>der Funk- und bedrahteten Komponenten (z.B. zum Verteilen der System-Keys)</li><li><strong>Konfigurieren</strong> ihrer unterschiedlichsten Parameter</li><li><strong>Bereitstellen</strong> einer http-Schnittstelle zum Bedienen des Gesamtsystems, sowohl für Maschinen (<a
href="http://de.wikipedia.org/wiki/XMLRPC" target="_blank">XMLRPC</a>) wie auch für Menschen (<a
href="http://de.wikipedia.org/wiki/Webinterface" target="_blank">Web-Interface</a>)</li></ul><p>Eine gut strukturierte Seite mit manchen Zusatzinformationen findet man <a
href="http://www.homematic-inside.de/" target="_blank">hier</a>.</p><h1>Struktur der Software</h1><p><a
href="http://www.mcseven.me/wp-content/uploads/2011/12/ccu_sw_architektur.png" rel="lightbox[1343]"><img
class="alignleft size-medium wp-image-1364" title="CCU Software-Architektur" src="http://www.mcseven.me/wp-content/uploads/2011/12/ccu_sw_architektur-300x214.png" alt="" width="300" height="214" /></a>Wie links abgebildet laufen von Haus aus auf der CCU unterschiedliche Softwarekomponenten parallel und können über TCP/IP miteinander und mit externen Teilnehmern kommunizieren.</p><p>Die Dokumentation des HomeMatic-Systems trennt besagte Komponenten in Kommunikations- und Logikschicht, so einfach ist das aber nicht. Im Prinzip ist das Ziel ja, mit unterschiedlichen Sensoren und Aktoren (Funk- und drahtgebunden) zu kommunizieren, und die CCU bringt dafür zwei Interfaces mit; zum einen eine CC1100-Funkplatine, zum anderen die RS485-Schnittstelle.</p><p>Leider gibt es keine so komplett vollständige Beschreibung des Zusammenspiels zwischen der Hardware und den links abgebildeten Softwareteilen, deswegen soll das an dieser Stelle nachgeholt werden.</p><h2>Betriebssystem</h2><p>Wie erwähnt sitzt als Grundlage ein embedded-Linux auf der Plattform, kleiner 2.6er Kernel, vermutlich nur das nötigste drin, und minimaler Footprint (~8MB für alles).  Das System ist komplett offen, kein <em>root</em>-Kennwort vergeben und kann von jedem nach Gusto verändert oder erweitert werden; nötig sollte es nicht sein. Ansonsten beschreiben einige Artikel, die später genannt werden, wie man das System um Standardfunktionen (<em>ssh</em>, <em>telnet</em>, <em>ftp</em>, &#8230;) ergänzt, die von Seiten des Herstellers nicht installiert oder aktiviert sind.</p><p>Wer sich unter Linux auskennt, kann sich z.B. eigene Shellscripte oder startup-Scripte erstellen und einrichten. Vielleicht sollte etwa bei jedem Start ein bestimmtes Script gestartet werden, oder man möchte seine syslog-Meldungen per netcat weitergeben, oder hätte gerne ein NAGIOS Monitoring aktiviert, oder, oder, oder&#8230;.</p><h2>Hardwarekommunikation</h2><p>Um mit den Aktoren zu kommunizieren existieren drei binäre Programme (<em>daemons</em>), die auf unterschiedlichen TCP-Ports auf Nachrichten warten. Es findet keine Berechtigungsprüfung mittels Credentials statt, lediglich eine IP-Adress-basierte Firewall läßt sich aktivieren und würde Pakete schon vor dem Eintreffen im System ausfiltern. Wie performant sie ist, oder welche Softwarelösung eingesetzt wird (eventuell in jedem daemon selbst implementiert anstatt im Betriebssystem), weiß ich nicht.</p><p>Jeder der drei daemons unterstützt zwei Protokolle. Zum einen das bekannte textbasierte XML-RPC, die hiermit von einem daemon unterstützten Methoden sind gut dokumentiert. Zum anderen ein binäres Protokoll, das nicht dokumentiert ist, wohl aber ähnliche Funktionen bietet wie sein XML-RPC-Pendant.</p><h3>Ziele</h3><p>Aufgabe der drei Programme ist es, die physischen Gegebenheiten durch Entgegennehmen und Anbieten von Daten möglichst genau abzubilden, und zwar nicht nur Kanalwerte. Es lassen sich eine ganze Reihe mehr Daten verarbeiten:</p><ul><li>Kanalwerte (lesen/schreiben)</li><li>Verknüpfungen zwischen Aktoren und Sensoren (&#8220;Direktverknüpfung&#8221;, &#8220;Link&#8221;)</li><li>Fehlerzustände</li><li>Logische Zusammenhänge zwischen Gerät, Kanal und Datenpunkt</li><li>etc.</li></ul><h3>Einschränkungen</h3><p>Wie bereits im Bild zu erkennen ist, besitzen die daemons <em>keine Information</em> über Daten der Web-UI, wie etwa:</p><ul><li>Räume</li><li>Gewerke</li><li>Namen von Geräten und Datenpunkten</li><li>Systemvariablen</li><li>Zeitprogramme (sind nicht <em>cron</em>-basiert)</li></ul><p>Es ist deswegen <em>nicht möglich</em>, per (mitgeliefertem) XML-RPC Programme zu starten oder Systemvariablen zu ändern. Dafür muß man sich selbst ein TCL-Script schreiben und dieses in das WWW-Verzeichnis des Webservers kopieren. Ein weiterer Artikel wird sich damit beschäftigen.</p><h3>Weitere Features</h3><p>Auf der anderen Seite ist die Software recht gut programmiert. Ein wesentliches Feature ist das Event-System der daemons. Damit kann sich ein beliebiger Client von den  Diensten benachrichtigen lassen, sobald an einem der dort registrierten Aktoren eine Änderung eines Datenpunktes auftritt. Nachdem die CCU selbst nur geringfügige Logging-Möglichkeiten bietet (und vor allem die geloggten Daten nicht weiterverarbeitet), lassen sich so ideale Datensenken programmieren. Es muss die Senke einfach selbst einen XMLRPC-Dienst anbieten und sich einmalig (bei jedem Neustart der CCU) bei allen drei Diensten registrieren. Damit wird sie dann stets bei Änderung eines Datenpunktes von einem der drei daemons benachrichtigt. Es stört die CCU auch nicht, wenn besagte Senke einmal offline ist; die Daten werden einfach weiter geschickt.</p><h2>Web-UI</h2><p>Die mitgelieferte Weboberfläche der CCU ist das zentrale Bedien- und Anzeigeelement des Gerätes. Nach dem Aufruf wird zunächst ein großes JavaScript von der CCU geladen, dass danach on-the-fly die Oberfläche im Browser zusammenbaut. Ein großer Teil Zeit geht dabei drauf, die einzelnen Aktoren initial von den drei daemons zu ziehen und diese dann mit der eigenen (Web-UI internen) Datenbank abzugleichen.</p><p>Im Prinzip also speichern daemon und Web-UI die gleichen Informationen, im Web-UI gibt&#8217;s allerdings Zusätze (Räume, Gewerke, Systemvariablen, &#8230;), die nur für die Darstellung dort interessant sind.</p><p>Leider beinhaltet das Webinterface selbst noch ein bißchen mehr Logik, auch auf binärer Linux-Ebene, an die man eben über die regulären XML-RPC-Mechanismen nicht herankommt. Ein Artikel wird sich eben damit beschäftigen, wie XML-RPC- und Web-UI-Inhalte unter einen Hut gebracht werden können.</p><h2>TCL-Interpreter</h2><p>Die vorrangige Scriptsprache auf der CCU ist <a
href="http://de.wikipedia.org/wiki/Tcl" target="_blank">TCL</a>. Schon etwas betagter bietet die Sprache eine weitere Möglichkeit, auf die Zustände und Variablen des Web-UI zuzugreifen, indem am Anfang eines Scripts die Erweiterung &#8220;rega.so&#8221; geladen wird. Damit ist es möglich, HomeMatic-Script -Befehle direkt in TCL auszuführen und ohne Web-UI Programme, Zustände und Funktionen zu ändern.</p><p>TCL ruft dabei über das &#8220;rega.so&#8221;-Modul Methoden aus der Logik des Web-UI auf und kann so z.B. Kanäle setzen oder Systemvariablen auslesen. Nachdem der Kommunikationsweg aber immer über TCL geht, das dann XMLRPC generieren muss und dann erst einen der drei daemons benachrichtigt, und dieser danach den Aktor steuert, ist der Weg meßbar langsamer (im Sekundenbereich auf meiner Instanz) als die direkte XML-RPC-Kommunikation mit den drei daemons. Alleine das Laden des &#8220;rega.so&#8221;-Moduls dauert bei mir 0,9 Sekunden, und da ist noch kein Code interpretiert.</p><p>Wozu ist der dann gut? Nun, zum einen muss ich Scripte nicht auf der CCU ablegen. Ich kann sie per http/POST an den Interpreter auf Port 8181 schicken und erhalte eventuelle Ausgaben als Text zurück. Der <a
href="http://www.homematic-inside.de/software/java/ccuhistorian.html" target="_blank">CCU-Historian</a> etwa benutzt ein kleines Script, das er zur Laufzeit immer an die CCU schickt, um von dort die im Web-UI vergebenen Namen für Kanäle auszulesen. Er kommuniziert zum Auslesen der Werte der Kanäle ansonsten nur mit den XML-RPC-Schnittstellen (Event-Mechanismus).</p><p>Zum anderen scheint der TCL Interpreter einen ziemlich geringen Foot-Print zu besitzen und damit optimal für die geringe Image-Größe der CCU geeignet zu sein.</p><p>Daß TCL nun nicht mehr so ganz die Scriptsprache der Wahl ist, Python, Ruby oder Perl können ja auch einiges, halte ich nicht für tragisch; die Lernkurve ist recht steil dabei.</p><h1>Installation</h1><p>Kurz sei noch auf die Installation der Hardware eingegangen, bei der zwei Möglichkeiten bestehen. Ohne eigenes Kabelnetzwerk zuhause würde man per USB-Kabel installieren, nennt man schon ein Kabelnetz sein Eigen, so genügt ein Anschluß an selbiges, die CCU ist dann direkt ansprechbar. Dazu kann mittels Tasten und Display eine IP-Adresse vergeben oder DHCP ausgewählt werden; nach einem Neustart genügt ein Aufruf der IP-Adresse und man gelangt zur Weboberfläche der CCU.</p><h2>Webinterface (Web-UI)</h2><p>Das gesamte System läßt sich plattform- und betriebssystemunabhängig über eine Weboberfläche einrichten und fernbedienen. Zwar habe ich keinen Assistenten oder &#8220;Wizard&#8221; gefunden, der die wichtigsten Daten abfragen würde, allerdings läßt sich alles über einen zentralen Punkt einstellen. Das ganze Einrichten scheint erfreulich gut zu funktionieren.</p><h2>USB-Kabel</h2><p>Für den Anschluß über USB ist leider wie bei USB gängig eine eigene Software auf dem entsprechenden Rechner nötig. Mitgeliefert wird lediglich die Windows-Variante, ob MAC OS und Linux unterstützt werden werden, weiß ich nicht. Die Software besteht einfach aus einem Windows-Dienst, der die USB-Schnittstelle auf der einen Seite bedient und zum Endanwender hin ein eigenes Netzwerkinterface mit eigener IP-Adresse bereitstellt.</p><p>Die eigentliche Installation geschieht dann genau wie im vorigen Absatz über den Webbrowser und das CCU-interne Webinterface, mit dem Unterschied, dass die Daten nicht über Ethernet übertragen werden.</p><h1>Persönliche Erfahrung</h1><p>In jedem guten Testbericht darf auch die persönliche (selbstverständlich subjektive) Meinung des Testers nicht fehlen.</p><h2>Installation</h2><p>Nun, den designierten Heimanwender mit ein bisserl Netzwerkkenntnissen sollte die Installation nicht vor große Hürden stellen. Es gibt nur wenige Teile, die Schnellstartanleitung ist leicht verständlich und drei Löcher in die Wand zu bohren dürfte auch ohne Hilti-Hammer machbar sein.</p><p>So in der Theorie. Bei meiner ersten CCU schien allerdings ein Defekt vorzuliegen; nach dem ersten Booten weigerte sich das Display standhaft zu leuchten und zeigte auch keinen Text an. Ein Update der Zentrale schlug gefühlte zwanzig mal fehl. Das Problem scheint bekannt und kein Einzelfall zu sein, in <a
href="http://www.fhz-forum.de/viewtopic.php?f=26&amp;t=5275&amp;start=0" target="_blank">diesem Beitrag</a> versuchte man sich durch Löten selbst zu behelfen.</p><p>Kurz und gut, der Laden bei dem ich bestellte, erklärte sich &#8220;kulanterweise&#8221; bereit, meine augenscheinlich defekte Kiste vorab zu tauschen; kurz vor Einsendung hab ich sie dann doch aufgeschraubt, um zumindest diesen Fehler ausschließen zu können. Und richtig, die Leiterbahn sah etwas angekratzt aus, wie auch die meisten manuell montierten Bestandteile dadrin (mal ordentliche Portionen Heißkleber verteilt, eine Schraube einfach vergessen, also Made-in-Germany sähe anders aus); aber sie hatte Kontakt. Daran lag&#8217;s also nicht.</p><p>Was letztlich den Ausschlag gab, weiß ich nicht, ich hab den <a
href="http://www.homematic-inside.de/index.php/software/item/addons/ftp.html" target="_blank">FTP-Daemon</a>, <a
href="http://www.homematic-inside.de/software/addons/item/addons/telnet.html" target="_blank">Telnet</a> und <a
href="http://www.homematic-inside.de/software.html?view=item&amp;item_id=347" target="_blank">SSH-Client</a> installiert, neu gebootet, und auf einmal ging&#8217;s Display wieder. Auch ein Update von der ausgelieferten Firmware-Version 1.404 auf 1.504beta5 lief jetzt durch und die vorab zugesandte Ersatz-CCU konnte unbehelligt wieder retourniert werden.</p><p>Daß das ein sporadischer und Software-Fehler zu sein scheint, gibt mir immer noch ein bißchen zu denken.</p><h2>Performanz</h2><p>Das ist ein heikles Thema, umfasst es doch mehrere Bereiche an einem Rechensystem. Zwar stand ich stets mit der Stoppuhr bereit, möchte aber auch aufgrund von Zuschriften anmerken, dass die gemessenen Zeiten wohl von Gerät zu Gerät und von Konfiguration zu Konfiguration unterschiedlich sind.</p><h3>Startvorgang</h3><p>Zunächst können wir uns mit der Bootzeit beschäftigen; in der jetzigen Konfiguration fährt das Maschinchen in knapp einer Minute so hoch, dass ich sie anpingen kann. Nach zwei Minuten mehr stehen auch die XML-Dienste auf Port 2000 bis 2002 zur Verfügung; bis allerdings das Webinterface bereitsteht, vergehen insgesamt mehr als 5 Minuten mit meinen 50 Aktoren.</p><p><strong>Fazit:</strong> Nun so oft bootet man nicht, man kann&#8217;s also lassen.</p><h3>Webinterface</h3><p>Sofern die CCU bereit ist, wird das gesamte Webinterface inkl. Oberfläche und Logik teilweise mittels AJAX vollständig in den Browser geladen. Es existieren nur wenige statische Inhalte (z.B. Bilder), im Prinzip rendert ein JavaScript die gesamte Oberfläche zur Laufzeit. Das erforder einen etwas längeren Start des Webinterface (etwa 1:30), sorgt aber dann für eine flüssige Bedienung.</p><p>Ungefähr 2:30 werden noch einmal fällig, wenn man Konfigurationen vornehmen möchte. Sodann müssen die vollständigen Gerätebeschreibungen nachgeladen werden, stehen dann aber für die Browsersitzung zur Verfügung.</p><p>Die Bedienung der einzelnen Geräte geschieht über selbst erzeugte HTML-Komponenten (Slider, Buttons, etc.) und leider muß sich feststellen, dass sporadisch über das Webinterface eine gewisse Verzögerung zwischen Tastendruck dort und Aktor-Reaktion besteht. Ich kreide es dem WebUI an, denn rufe ich einen Webservice direkt auf, so ist die Reaktionszeit gefühlt &#8220;0&#8243;.</p><p>Dass das Webinterface vom Umfang her nicht für Mobilbildschirme geeignet ist, ist leider auch nicht schön; versteht mich richtig, es läuft. Aber nicht wirklich bedienbar.</p><p><strong>Fazit:</strong> Laden=Lahm, Bedienung von der Performanz her knapp noch ok.</p><h3>Webservices</h3><p>Auch sollten wir angeben, wie schnell die XML-RPC-Webservices auf Kommandos reagieren. WGET-Tests bestätigten eine Reaktionszeit von 50-100ms, je nachdem, welcher Aktor gesteuert wurde. Das heißt nicht, dass der Aktor dann diesen Wert unverzüglich bekommen hat (Thermostate brauchen unter Umständen zwei Minuten und länger), sondern nur, dass der Daemon den Befehl bestätigt hat.</p><p><strong>Fazit:</strong> Im Allgemeinen liegt allerdings die Schaltzeit von Jalousie-, Schalt- und Dimm-Aktoren nicht wesentlich über den 100ms des Dienstes, es geht also schnell.</p><h1>IT-Sicherheit</h1><p>Wie ist&#8217;s nun um die IT-Sicherheit bestellt. Zum einen ist da einmal sehr positiv hervorzuheben, dass das System nicht irgendwie abgesichert ist. Ist noch nicht mal ein root-Paßwort gesetzt. Warum positiv? Damit können sich die fähigen Menschen unter uns selbst um die Sicherheit kümmern, eben je nach Bedarf, und müssen sich nicht darauf verlassen, daß der Hersteller keinen Mist gebaut hat bei der Absicherung.</p><p>Weiters ist dort ein 2.6er Kernel drauf auf dem System, allerdings auch schon etwas älter, neue Sicherheits-Patches sind wahrscheinlich nicht integriert. Ob das überhaupt sinnvoll wäre, wage ich einmal dahinzustellen. Die Rechenleistung des Kastens reicht so gerade aus, um das System flüssig und reaktiv zu halten, da noch <em>iptables</em> oder gar <em>stateful inspection</em> zu aktivieren, halte ich für utopisch.</p><p>Das Teil ist eben hauptsächlich ein LAN-Gateway mit programmierbarem Scheduler drauf.</p><p><strong>Empfehlungen:</strong></p><ul><li>Unter gar keinen Umständen darf die CCU, etwa per <a
href="http://de.wikipedia.org/wiki/Port_Address_Translation" target="_blank">PAT</a>, ins Internet exponiert werden. Jedes Script-Kiddie schießt die in vernachlässigbar geringer Zeit über eine Standard-DSL-Leitung dreimal um den Mond.</li><li>Zur Fernbedienung von unterwegs aus benutze man einen eigenen Rechner mit Webinterface, das nur die XML-RPC-Schnittstellen der CCU bedient, gerne auch über DynDNS. Eine leistungsfähige AVM-Fritzbox mit PHP drauf leistet hier hervorragende Dienste, oder man hat gleich seinen eigenen 24/7 Rechner am Laufen.</li><li>Wenn machbar, und der Switch das hergibt, baue man sie abgeschottet in ein eigenes VLAN ein zum Schutz im LAN.</li><li>Wenn ein Exponieren unbedingt erforderlich ist, ausschließlich mit Application-Level-Gateway! Die Verbindung muß getrennt sein, oder zumindest durch eine <a
href="http://de.wikipedia.org/wiki/Stateful_inspection" target="_blank">SPI-Firewall</a> laufen.</li></ul><h1><span
style="color: #f00;">Bugs</span></h1><h2>Software</h2><p>Es läuft die Firmware-Version 1.504beta5. Wochenlang schon läuft die Maschine zuverlässig; bis auf einen Absturz des BidCos-Daemons habe ich in der Software bislang keine Fehler gefunden. Angelernt sind etwa 30 Sensoren (Taster, Fenster, etc.) und 20 Aktoren (Schalter, Dimmer).</p><h2>Hardware</h2><ul><li>LCD: Hintergrundbeleuchtung flackert reproduzierbar. Schaut ziemlich unschön aus; und damit eignet sich die  CCU nicht mehr als Anzeigeelement.</li><li>LCD: Einzelne Pixel unterschiedlich schwarz</li></ul> ]]></content:encoded> <wfw:commentRss>http://www.mcseven.me/2011/12/roots-roots-roots-die-ccu1/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Heimautomatisierung im Low-Cost-Bereich</title><link>http://www.mcseven.me/2011/12/heimautomatisierung-im-low-cost-bereich/</link> <comments>http://www.mcseven.me/2011/12/heimautomatisierung-im-low-cost-bereich/#comments</comments> <pubDate>Wed, 07 Dec 2011 19:39:56 +0000</pubDate> <dc:creator>McSeven</dc:creator> <category><![CDATA[Heim-Automatisierung]]></category> <category><![CDATA[FS20]]></category> <category><![CDATA[Heimautomatisierung]]></category> <category><![CDATA[Home-Automation]]></category> <category><![CDATA[HomeMatic]]></category><guid
isPermaLink="false">http://www.mcseven.me/?p=1332</guid> <description><![CDATA[Vorwort Nach einem kurzen generellen Überblick zum Thema möchte ich Ihnen in diesem Artikel nun ein paar der verfügbaren Systeme vorstellen, und sofern möglich ein bißchen auf Vorzüge und Nachteile eingehen. Im Prinzip gibt es Lösungen in jedem Preisbereich; angefangen von den billigen Baumarkt-Funksteckdosen bis hin zu den mehrere zehntausend Teuro teuren speicherprogrammierbaren Steuerungen (SPS) [...]]]></description> <content:encoded><![CDATA[<h1>Vorwort</h1><p>Nach einem kurzen generellen Überblick zum Thema möchte ich Ihnen in diesem Artikel nun ein paar der verfügbaren Systeme vorstellen, und sofern möglich ein bißchen auf Vorzüge und Nachteile eingehen.</p><p>Im Prinzip gibt es Lösungen in jedem Preisbereich; angefangen von den billigen Baumarkt-Funksteckdosen bis hin zu den mehrere zehntausend Teuro teuren speicherprogrammierbaren Steuerungen (<a
title="Speicherprogrammierbare Steuerung" href="http://de.wikipedia.org/wiki/Speicherprogrammierbare_Steuerung" target="_blank">SPS</a>) namhafter Hersteller wie <a
title="Siematic SPS" href="http://www.automation.siemens.com/mcms/programmable-logic-controller/de/simatic-s7-controller/s7-200/seiten/default.aspx" target="_blank">Siemens</a> oder <a
title="Wago SPS" href="http://www.wago.de/catalogue/catalogue.do?favOid=000000070003acc400020023&amp;act=showIO&amp;lang=de" target="_blank">Wago</a>.</p><p>Konzentrieren möchte ich mich hier allerdings auf Systeme, die bis zur Größe eines Einfamilienhauses ausgelegt sind, und so um die 100 bis 150 Komponenten unterstützen. Professionelle Systeme, die als Steuerung eine SPS mit einer Vielzahl an Kanälen sowie eine Sternverkabelung aller Verbraucher zu einem zentralen Punkt im Gebäude voraussetzen und dort in einem großen Schaltschrank enden, scheiden somit aus.</p><p>Allerdings bieten nahezu alle Hersteller von Schalterprogrammen (Berker, Merten, Gira, Busch-Jäger, etc.) eigene Lösungen –teils auf Basis des KNX/EIB Standard- an für ihre Produkte. Der Vorteil liegt klar im angepaßten Design: ein Berker Funkschalter fügt sich natürlich zum einen nahtlos in die Optik des Systems (Schalter, Steckdosen, etc.) ein und lässt sich zum anderen über die Hersteller-eigenen Konfigurationswerkzeuge oder auch Standardwerkzeuge (für KNX) einrichten.</p><p>Aber auch Hersteller wie <a
title="SyncoLiving" href="http://w1.siemens.ch/web/bt_ch/de/products_systems/building_comfort_hvac/home_and_building_automation/home_automation_system/Pages/home_automation_system.aspx" target="_blank">Siemens</a> oder <a
title="Eltako Wireless System" href="http://www.eltako.com/en/products/product-overview/the-eltako-wireless-system.html" target="_blank">Eltako</a> bieten inzwischen Lösungen im Bereich Heimautomatisierung an, wobei eine Integration in das Schalterprogramm durch Einbindung lediglich der Aktoren im Unterputz oder versteckt z.B. in Zwischendecken stattfindet.</p><p>Die Hersteller verfolgen insgesamt sehr modulare Konzepte, im Wesentlichen decken sie alle die im vorigen Artikel genannten Bereiche an Sensorik und Aktorik ab, zu vergleichbaren Preisen.</p><h2>Kurzes Preis-Beispiel</h2><p>Schauen wir uns ein Beispiel der Firma ELTAKO an, bei dem wir ein Zimmer mit einem Heizkörper mit Automatisierung ausstatten möchten, so müssen wir für den Ventilantrieb „FKS“ 145 EUR, und für den Raumregler „FTR55D“ knapp 145 EUR berappen; netto natürlich. Weiters wird eine Funk-AccessPoint „BSC-BAP“ erforderlich, der die Steuerung der Wohnung übernimmt, ohne Software versteht sich. Da sind wir mit 298 EUR dabei. Möchten wir eine Software („FVS-Professional-Lizenz“) bekommen, dann kostet das weitere 540 EUR. Zwingend benötigen wir einen PC für diese Variante, oder wir kaufen uns einen kleinen Rechner der Firma Eltako für schlappe 888 EUR.</p><p>Ohne weiter ins Detail gehen zu wollen, ist glaube ich klar ersichtlich, dass diese Preispolitik nicht für den Massenmarkt gedacht ist. Kein Objektbesitzer möchte fünf- bis sechstausend EUR ausgeben, nur um seine Lichtlein ein- und auszuschalten.</p><p>Vielleicht geht es im Niedrig-Preis-Segment ja auch anders; ich lege den Fokus also eher auf den ambitionierten Heimanwender, der ein kleines Spielzeug sucht, denn mal ganz ehrlich: brauchen tut das Zeugs kein Mensch, wir haben auch vor 100 Jahren schon unsere Buden warmbekommen, ohne daß die Fenster elektrisch überwacht wurden. Und daß wir mal zwei Meter zum Lichtschalter laufen müssen, fördert eher die Durchblutung; ich möchte mich deswegen nur mit zwei Systemen beschäftigen, die eher im unteren Preissegment angesiedelt sind.</p><h2>Ansprüche</h2><p>Die folgenden Ansprüche möchte ich an das System stellen:</p><ul><li><strong>Preiswert:</strong> Irgendwo muß ja mal Schluß sein mit dem Ausnehmen.</li><li><strong>Integrierbar</strong> in vorhandene Schalterprogramme, möglichst ohne Neukauf von Teilen</li><li><strong>Zuverlässigkeit:</strong> Entweder über <a
title="Forward Error Correction" href="http://de.wikipedia.org/wiki/Vorw%C3%A4rtsfehlerkorrektur" target="_blank">FEC</a> oder bidirektionale Kommunikation mit Bestätigung der Befehle</li><li><strong>Sicherheit:</strong> Während es mir noch wurscht ist, ob jemand meine Schalterbetätigungen mitbekommt, möchte ich auf keinen Fall, dass besagter Jemand auf einmal auch mein Licht schalten kann.</li><li><strong>Funkbasiert:</strong> Kein Bock, überall Kabel durch die Wand zu ziehen.</li></ul><p>Also, Deutschland ist eh zu fett, deswegen here goes…</p><h1>System „FS 20“</h1><p>Beim FS20 handelt es sich um ein von [[eQ3]] entwickeltes Steuerungs- und Regelungssystem, das hauptsächlich funkbasiert arbeitet und es dank langjähriger Marktpräsenz mittlerweile zu einer stattlichen Anzahl an Sensoren und Aktoren gebracht hat.</p><p>Das System unterstützt die Kommunikation der Komponenten untereinander oder direkt über ein PC-Interface. Der hybride Modus ist ab Werk nicht verfügbar, mit genug Aufwand lässt er sich mit entsprechender –teilweise kostenfreier- PC-Software und einer Funkschnittstelle (USB, WLAN, z.B. busware’s CUL) nachrüsten.</p><h2>Technik</h2><p>Hier einmal die Eckdaten der Funkschnittstelle:</p><ul><li>Frequenz: ~868 MHz</li><li>Impulsformung: Keine Ahnung</li><li>Modulation: Amplitudenmodulation (AM)</li><li>Codierung: On-Off-Keying (OOK), erweitert (ähnlich DCF77), feste Bit-Länge, Codierung von 0 und 1 durch unterschiedlich lange Sendeimpulse pro Bit</li><li>Fehlerkorrektur: Keine</li><li>Fehlererkennung: Einfache Parität</li><li>Bidirektional: Nein</li><li>Sicherheit: Keine</li><li>Zuverlässigkeit: Mehrfache Übertragung des Telegramms ohne Rücksicht auf Verluste</li></ul><p>Das geübte Ingenieursauge erkennt recht schnell, dass diese Spezifikation vor allem eines ist: ziemlich preiswert. Und so kann man es dann auch im Laden oder Onlinehandel bestätigt finden, ein Wandtaster etwa kostet den Endkunden knapp 20 €, damit ist’s in Fernost für möglicherweise nicht mehr als 5 EUR im Tausenderpacken eingekauft worden und besitzt eine entsprechende Qualität.</p><p>Der Fairness halber muß ich allerdings gestehen, dass die nicht so schlecht ist, zumindest von der Verarbeitung her; funktechnisch gesehen ist es eine andere Geschichte.</p><h2>Test, Fazit</h2><p>Ich habe mir das System mit einem Dimmer und einem kleinen Taster selbst einmal kurz angeschaut (siehe entsprechender Artikel: [[HomeMatic heiratet FS20]]), bin aber schnell zu dem Schluß gekommen, dass das wirklich keinen gehobenen Ansprüchen genügen kann.</p><p>In Kürze: Von 10 gesendeten Tastendrücken kommen 7 an. Das nervt einfach. Vielleicht geht’s ja besser auch&#8230;</p><h1>System HomeMatic</h1><p>Ohne schon zu viel vorwegnehmen zu wollen, eine kurze Einschätzung: ja, es geht. Hat ja auch lange genug gedauert. In diesem Teil des Artikels beschäftigen wir uns deswegen mit dem System „HomeMatic“, zumindest in Deutschland auch aus dem Hause eQ3.</p><p>Uns soll an dieser Stelle weniger die Entwicklungs- und Preishistorie des Systems interessieren, wir wollen uns eher mit den technischen Details beschäftigen und einmal genauer hinter die Kulissen blicken. Auch sei gleich eine weitere Sache vorweggenommen. Das Konzept ist gut, aber alles andere als vollständig. Wie traumhaft, dass es findige und motivierte Programmierer gibt, die hier Abhilfe schaffen.</p><h2>Überblick</h2><p>Ohne ein allzu großes Loblied anstimmen zu wollen, muß ich doch sagen, dass das HomeMatic-System nicht schlecht durchdacht ist. Da sei zunächst der Aspekt der Zentrale genannt: Im Prinzip braucht man erst einmal keine. Die Fernbedienungen für’s Licht oder die Jalousien können direkt an den jeweiligen Stellgliedern angelernt werden und bei den Heizungen erlauben die Raumregler eine direkte Bedienung mittels Stellrädchen.</p><p>Der ganze Anlernvorgang geschieht ähnlich einfach wie bei FS20: Bei beiden Geräten drücke man einen Knopf ziemlich lange, warte ein bißchen und gut ist. Auch kann eine Fernbedienung an mehrere Lampen angelernt werden (oder andersrum) und damit mehrere Birnchen steuern. Funktionierte in der Praxis einigermaßen zuverlässig, ich werde in separaten Artikeln aber noch auf jeden Aktor einzeln eingehen; Pro &amp; Contra gehen so übersichtlich Hand in Hand.</p><p>Steigen irgendwann die Ansprüche in Richtung „Fernbedienung aus dem Internet“, damit man etwa beim Schlußapplaus im Theater bereits die Heizung daheim einschalten kann, oder vor dem Verlassen der Bude mal kurz gucken kann, ob auch alle Fenster zu sind, wird ein bißchen mehr Hardware fällig, nämlich eine der drei zentralen Steuerungsmöglichkeiten.</p><h2>Technik</h2><p>Hier einmal die Eckdaten der Funkschnittstelle, basierend auf <a
title="µC.net: BidCos entwurmt..." href="http://www.mikrocontroller.net/topic/160474#1605728" target="_blank">diesem Artikel</a>:</p><ul><li>Frequenz: ~868 MHz</li><li>Impulsformung: Der <a
href="http://www.mcseven.me/wp-content/uploads/2011/12/cc1100.pdf">Texas-Instruments CC1100 [PDF]</a> kann optional einen Gaußfilter aktivieren zur Impulsformung, ob aktiviert, weiß ich nicht.</li><li>Modulation/Codierung: 2-Frequenzmodulation (2-FSK)</li><li>Fehlerkorrektur: Der CC1100 kann FEC aktivieren, ob sie aktiv ist, weiß ich nicht.</li><li>Fehlererkennung: unbekannt</li><li>Bidirektional: Ja</li><li>Sicherheit: AES (128) Challenge-Response zuschaltbar bei Funk-Komponenten</li><li>Zuverlässigkeit: Einstellbare Wiederholung, wenn keine Bestätigung seitens des Empfängers erfolgt.</li></ul><p>Alles in allem macht diese Spezifikation einen wesentlich besseren Eindruck. Ob es mit der Sicherheit wirklich so weit her ist, kann ich nicht einschätzen. Mal ehrlich: Wenn einer in Eure Bude will, hat er ein Brecheisen mit. Dagegen hilft euch das beste AES-CR-Verfahren nichts. Trotzdem würde ich mir gut überlegen, den Fenstermotor oder das elektrische Haustürschloß, so denn bereits vorhanden, gegen die HomeMatic-Produkte auszutauschen. Der Komfortgewinn erscheint mir ziemlich gering in Anbetracht des Risikos; und Brecheisen machen Krach. Elektronische Einbrüche im Allgemeinen nicht.</p><h2>Zentrale Steuerungsmöglichkeiten</h2><p>Auch wenn kein Muß, bieten die folgenden drei Geräte ein kleines Plus an Komfort.</p><h3>USB-Konfigurationsadapter</h3><p><a
href="http://www.mcseven.me/wp-content/uploads/2011/12/hm_usb_adaptor.jpg" rel="lightbox[1332]"><img
class="alignleft size-thumbnail wp-image-1335" title="HomeMatic: USB-Konfigurations-Adapter" src="http://www.mcseven.me/wp-content/uploads/2011/12/hm_usb_adaptor-100x100.jpg" alt="" width="100" height="100" /></a>Zunächst kann man sich in der Lowest-Cost-Variante für den USB-Konfigurations-Adapter entscheiden. Mit einem Windowstreiber ausgeliefert bietet er die Möglichkeit, in den HomeMatic-Geräten Parameter zu ändern oder schon angesprochene direkte Verknüpfungen zwischen zwei Geräten herzustellen. Weitergehende Funktionen, insbesondere das Erstellen von Zeitprogrammen, gibt es nicht. Wenn ihr allerdings eure eigene Software einsetzen wollt und sowieso ein Rechner schon 24/7 läuft, so ist der Adapter Erste Sahne.</p><h3>LAN-Konfigurationsadapter</h3><p><a
href="http://www.mcseven.me/wp-content/uploads/2011/12/hm_lan_adaptor.jpg" rel="lightbox[1332]"><img
class="alignleft size-thumbnail wp-image-1336" title="HomeMatic: LAN-Konfigurations-Adapter" src="http://www.mcseven.me/wp-content/uploads/2011/12/hm_lan_adaptor-100x100.jpg" alt="" width="100" height="100" /></a>Das Ganze gibt es auch in etwas schicker, nämlich als LAN-Version. Der LAN-Adapter hat schon ein kleines Webinterface eingebaut, mit dem man HomeMatic-Geräte einstellen kann. Möchte man XML-RPC benutzen, wird allerdings wieder ein Dauerläufer-PC fällig: Und richtig, mit Windows-Betriebssystem. Dort wird ein Windows-Service installiert, der übersetzt das binäre Protokoll des LAN-Adapters in Text-XML-RPC. Der Vorteil dieses Apparates liegt wohl im Webinterface: Wer kein XML-RPC braucht, und kein Windows hat, ist hiermit sicher besser bedient als mit dem USB-Dingen.</p><h3>Zentrale Steuerung (CCU)</h3><p><a
href="http://www.mcseven.me/wp-content/uploads/2011/12/hm_ccu.png" rel="lightbox[1332]"><img
class="alignleft size-thumbnail wp-image-1337" title="HomeMatic: Zentrale Steuerung CCU1" src="http://www.mcseven.me/wp-content/uploads/2011/12/hm_ccu-100x100.png" alt="" width="100" height="100" /></a>Nun, und dann gibt’s da noch die Luxus-Variante, die Zentrale CCU1. Neben einem kleinen vollwertigen Linux-Embedded-System, das schickerweise auch komplett offen ist, bietet sie im Wesentlichen den Vorteil der Hardware-RS485-Feldbus-Schnittstelle gegenüber dem LAN-Adapter sowie der Erstellung von Programmen zur Steuerung von Komponenten (&#8220;Wenn Knopf1 gedrückt, schalte Licht im Badezimmer an und stelle Radiokanal <em>Bayern 3</em> ein.&#8221;).</p><p>Auch bringt sie ein umfangreicheres Webinterface als das des LAN-Adapters mit; es ist vollständig HTML/AJAX-basiert und läuft in den meisten modernen Browsern. Opera 10 hatte nicht funktioniert, aber wer hat den schon.</p><h2>Fazit</h2><p>Kurzer Rede langer Sinn: Es ist dann dieses System geworden. Nach und nach werde ich in dieser Kategorie jede einzelne Komponente beschreiben und auch die Selbstbaulösungen nicht vorenthalten. Denn auch, wenn es von Haus aus schon ziemlich viel kann, gibt es leider keine schicke Oberfläche. Auch auf die IT-Sicherheit müssen wir etwas genauer schauen; es kann keine Lösung sein, eine kleine ARM7-Kiste mit <em>lighttpd</em> über DSL direkt ins Internet zu exponieren. Jedes Skriptkiddie schießt die in Sekunden dreimal in den Orkus und retour.</p> ]]></content:encoded> <wfw:commentRss>http://www.mcseven.me/2011/12/heimautomatisierung-im-low-cost-bereich/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Home-Automation: Ein Exkurs&#8230;</title><link>http://www.mcseven.me/2011/12/home-automation-ein-exkurs/</link> <comments>http://www.mcseven.me/2011/12/home-automation-ein-exkurs/#comments</comments> <pubDate>Fri, 02 Dec 2011 20:06:38 +0000</pubDate> <dc:creator>McSeven</dc:creator> <category><![CDATA[Heim-Automatisierung]]></category><guid
isPermaLink="false">http://www.mcseven.me/?p=1320</guid> <description><![CDATA[Vorwort Ein Traum, was dieser Planet alles für Spielzeug anzubieten hat. Sogar so traumhaft, dass damit gleich eine ganze neue Kategorie geboren wird, die der „Heim-Automatisierung“. Doch halt, worum geht es? Unter der Home-Automation (neudeutsch) oder auch Gebäudeautomatisierung (für die konventionell  orientierten LeserInnen) verstehe ich zunächst einmal alle technischen Hilfsmittel zur Steuerung elektrischer Geräte in [...]]]></description> <content:encoded><![CDATA[<h1>Vorwort</h1><p>Ein Traum, was dieser Planet alles für Spielzeug anzubieten hat. Sogar so traumhaft, dass damit gleich eine ganze neue Kategorie geboren wird, die der „Heim-Automatisierung“. Doch halt, worum geht es?</p><p>Unter der Home-Automation (neudeutsch) oder auch Gebäudeautomatisierung (für die konventionell  orientierten LeserInnen) verstehe ich zunächst einmal alle technischen Hilfsmittel zur Steuerung elektrischer Geräte in einem Gebäude. Plakativ gesprochen ist das nichts anderes als ein Lichtschalter mit Fernbedienung.</p><p>Wurden bislang die Bedienelemente (Schalter, Dimmer, etc.) direkt per Leitung mit den Verbrauchern (Lampen, Jalousien, etc.) verbunden und existierte dadurch eine strenge Zuordnung von Schalter zu Verbraucher, so geht man in der Gebäude-Automatisierung dazu über, diese starre Verbindung zu lösen.</p><p><a
href="http://www.mcseven.me/wp-content/uploads/2011/12/heim_automatisierung.gif" rel="lightbox[1320]"><img
class="alignleft size-medium wp-image-1321" title="Heim-Automatisierung" src="http://www.mcseven.me/wp-content/uploads/2011/12/heim_automatisierung-300x195.gif" alt="" width="300" height="195" /></a>Ein Schalter, nennen wir solche Bedienelemente allgemein einmal „Sensoren“, aktiviert nun nicht mehr direkt einen Verbraucher, sondern zeigt seine Bedienung („Umschalten“, „Tastendruck“, „Langer Tastendruck“) zunächst einmal unverbindlich als Nachricht („Telegramm“) an. Die Übertragung Letzterer kann dabei drahtgebunden oder auch auf dem Funkweg erfolgen; verschiedene Systeme und Protokolle existieren, allen voran der selbsternannte Industriestandard <a
href="http://de.wikipedia.org/wiki/KNX-Standard" target="_blank">KNX</a>/<a
href="http://de.wikipedia.org/wiki/Europ%C3%A4ischer_Installationsbus" target="_blank">EIB</a>.</p><p>Um nun einen Knopfdruck auch verarbeiten zu können, benötigt es mindestens einen Empfänger, in der Regel wird ein solcher dann die Steuerung des Verbrauchers übernehmen. Man nennt diese Komponente „Aktor“. Auch sie gibt es in den unterschiedlichsten Ausführungen an den jeweiligen Einsatzzweck angepasst (Schalter, Dimmer, Heizungsventilantriebe, etc.).</p><h1>Verknüpfungen zwischen Sensor und Aktor</h1><p>Eingangs erwähnt habe ich bereits, dass die starre Verknüpfung zwischen Bedienelement (Sensor) und Aktor nun gelöst werden soll, und wir können das auf drei Arten durchführen.</p><h2>Direktverknüpfung</h2><p><a
href="http://www.mcseven.me/wp-content/uploads/2011/12/direktverknuepfung.png" rel="lightbox[1320]"><img
class="alignleft size-medium wp-image-1326" title="Direktverknüpfung" src="http://www.mcseven.me/wp-content/uploads/2011/12/direktverknuepfung-300x86.png" alt="" width="300" height="86" /></a>Zum einen könnte ein Sensor seinen Bedienzustand direkt an einen oder mehrere Aktoren senden. Dieses Prinzip kennen wir von preiswerteren Baumarkt-Funksteckdosen; die Fernbedienung sendet einen Knopfdruck nur an die mitgelieferten und „angelernten“ Steckdosen. Aber auch professionelle Systeme unterstützen diese Art des Betriebes, wenn etwa nur wenige Komponenten innerhalb eines Bereiches zu verschalten und komplexe programmgesteuerte Abläufe nicht vorgesehen sind.</p><p>Nachdem nun kein zentraler Anlaufpunkt existiert, ist diese Art der Steuerung für den Funkkanal prädestiniert. Ein Sensor „bläst“ seinen Wert einfach auf den Funkkanal in den Äther und programmierte Aktoren, natürlich nicht notwendigerweise alle, reagieren entsprechend, z.B. mit Einschalten einer Lampe.</p><p>Auf einfache Art und Weise lassen sich so schon eine Reihe Funktionalitäten realisieren, der Eye-Catcher ist in diesem Falle das Herabregeln der Heizung, wenn ein Fenster geöffnet ist. Das Heizungsventil besitzt einen kleinen Motor als Aktor und am Fenster befindet sich ein Kontakt, der das Öffnen meldet.</p><p>Nachteilig ist hierbei natürlich, dass das System keine komplexeren Aufgaben zuläßt. Um ein an den Haaren herbeigezogenes Beispiel zu geben, könnte man sich so überlegen, die Heizung nur herabzuregeln, wenn das Fenster offen ist und die Außentemperatur unter 10°C liegt. Das wäre nicht mehr so einfach möglich, nun müßte der Motor schon zwei Signale verarbeiten können, einmal den Fenstersensor und einmal einen Temperaturfühler.</p><h2>Zentrale Steuerung</h2><p><a
href="http://www.mcseven.me/wp-content/uploads/2011/12/zentralenverknuepfung.png" rel="lightbox[1320]"><img
class="size-medium wp-image-1327 alignright" title="Zentralenverknüpfung" src="http://www.mcseven.me/wp-content/uploads/2011/12/zentralenverknuepfung-300x171.png" alt="" width="300" height="171" /></a>Abhilfe lässt sich schaffen, wenn man eine zentrale Steuerung (nennen wir sie „Zentrale“) hinzunimmt. Nun werden sowohl Sensoren wie auch Aktoren direkt an die Zentrale verbunden und interagieren nur mit ihr.</p><p>Der Taster in der Wand meldet seine Bedienung somit als Nachricht an die Zentrale; dieser wurde programmiert, welche Aktoren anzusteuern sind, und sie sendet entsprechende Steuerbefehle aus.</p><p>Klar erkennen können wir den Vorteil der schier unbegrenzten Möglichkeiten. Beliebige Eingangskanäle lassen sich sogar zeitgesteuert auf beliebige Ausgangskanäle umsetzen, der Kreativität sind die Grenzen nur durch die Rechen- und Speicherkapazität der Steuerung und der Kanalkapazität des Übertragungskanals gesetzt.</p><p>Wer einmal einen Windowsrechner sein Eigen nannte, wird auch schnell den wesentlichen Nachteil dieser Lösung erkennen. Fällt die Zentrale einmal aus, verbleibt das schöne gute Haus im Status Quo.</p><h2>Ingenieure sind doch nicht doof™ &#8211; Hybride Lösung</h2><p><a
href="http://www.mcseven.me/wp-content/uploads/2011/12/isdndtm.png" rel="lightbox[1320]"><img
class="alignleft size-medium wp-image-1328" title="Ingenieure sind doch nicht doof (tm)" src="http://www.mcseven.me/wp-content/uploads/2011/12/isdndtm-300x171.png" alt="" width="300" height="171" /></a>Um dem Dilemma zu entkommen, haben sich die Entwickler nun in einem schieren Kraftakt eine Vereinigung der Vorteile aus beiden Konzepten erdacht. In manchen Systemen ist es möglich, einen Sensor sowohl mit einer Zentrale wie auch direkt mit einem Aktor zu verknüpfen.</p><p>Damit kann bei Ausfall der Zentrale der Betrieb zumindest rudimentär aufrechterhalten werden. Zwar sind Programmabläufe nicht mehr verfügbar, aber autark laufende Verknüpfungen funktionieren weiterhin. Wir müssen also beim Absturz von Linux nicht mehr im Dunkeln sitzen bleiben.</p><h1>Sensoren</h1><p>Weiters soll nun kurz beschrieben werden, welche Sensor-Komponenten überhaupt denk- und kaufbar sind im Bereich der Home-Automation; die folgende Liste erhebt natürlich keinen Anspruch auf Vollständigkeit. Auch muß nicht in jedem System jeder der unten genannten Sensoren vorhanden sein; darauf sollte man vor dem Kauf achten, die Systeme sind in der Regel nicht kompatibel.</p><ul><li><strong>Schalter:</strong> Melden <em>Ein</em>/<em>Aus</em></li><li><strong>Taster:</strong> Melden <em>Ein</em>, solange sie gedrückt werden</li><li><strong>Türkontakt:</strong> Melden Unterbrechung, solange der Magnetkontakt nicht geschlossen ist</li><li><strong>Fensterkontakt:</strong> Bessere Sensoren können <em>offen</em>, <em>gekippt</em> und <em>geschlossen</em> melden, z.B. anhand der Stellung des Fensterdrehgriffes</li><li><strong>Klima:</strong> Melden <em>Temperatur</em> und <em>Luftfeuchte</em></li><li><strong>Wetterstation:</strong> Vollständige Wetterdaten, wie <em>Licht</em>, <em>Regenmenge</em>, <em>Windrichtung</em>, etc.</li><li><strong>Sicherheit:</strong> Alle erdenklichen Meßgrößen, wie <em>Erschütterung</em>, <em>Wasserkontakt</em>, <em>Rauch</em>, etc.</li><li><strong>Handfernbedienung:</strong> Genau wie <em>Taster</em></li></ul><p>Um möglichst flexibel in der Anbringung zu bleiben, sind die meisten der Sensoren batteriebetrieben, was insbesondere mit einer Funkschnittstelle eine große Herausforderung darstellt. Zum einen müssen Meßwerte möglichst aktuell und zeitnah übertragen werden, zum anderen soll die Batterie möglichst lange halten.</p><p>Wir lösen das, indem wir die Steuerung des Sensors komplett abschalten, wenn nichts zu tun ist. Im Prinzip läuft nur noch ein Zeitmodul, das den Sensor nach einer bestimmten Zeitspanne (z.B. zehn Minuten) aufweckt, dieser dann sein Soll erfüllt und absendet und sich danach wieder vollständig schlafen legt. Das Zeitmodul an sich verbraucht nur einen Bruchteil dessen, was der Sensor im Betrieb verbraucht; die Batterielebensdauer kann so erheblich verlängert werden.</p><p>Bei Tastsensoren ist es sogar noch einfacher: diese verbrauchen nichts, wenn keine Taste gedrückt ist.</p><h2>Aktoren</h2><p>Auch auf der Aktorseite erleben wir keine großen Überraschungen. Für die vielen Anwendungsfälle gibt es in gängigen Systemen entsprechende Schalt- und Stellglieder:</p><ul><li><strong>Schalter:</strong> Schalten Verbraucher <em>Ein</em> / <em>Aus</em></li><li><strong>Dimmer:</strong> Können Lampen in der <em>Helligkeit</em> steuern</li><li><strong>Jalousie:</strong> Fahren <em>Lamellenstellung</em> und <em>Abschattung</em></li><li><strong>Rolladen:</strong> <em>Abschattung</em></li><li><strong>Ventilantriebe:</strong> Stellen <em>Heizungsventile</em> auf eine Prozentsatz</li><li><strong>Fenstermotoren:</strong> <em>Öffnen</em> und <em>Schließen</em> von Fenstern</li><li><strong>Fußbodenheizung:</strong> Steuern <em>Wärmeabgabe</em></li></ul><p>Bei Aktoren gestaltet sich der Stromsparbedarf nicht ganz so kritisch. Die meisten Aktoren sollen große Lasten bedienen und besitzen deswegen einen Anschluß an das 230V Stromnetz. Daraus kann z.B. mit einem kapazitiven Netzteil der geringe Strombedarf für die Elektronik des Aktors bezogen werden.</p><p>Eine Ausnahme ist mir allerdings bekannt: Die Ventilantriebe bei Heizungen. Niemand möchte quer durch den Raum Kabel zu seinen Heizkörpern legen; die einzige Lösung ist hier der Batteriebetrieb. Nun verbraucht erstaunlicherweise der Motor an sich mit seinem stark untersetzenden Getriebe nur wenig Strom. Der größte Bedarf entsteht beim Empfangen von Nachrichten für die Stellung des Ventilantriebes.</p><p>Deswegen wird in der Regel der Empfänger in den Stellgliedern nur für eine ganz kurze Zeitspanne aktiviert, innerhalb welcher die Steuerung dem Antrieb einen Stellbefehl übermitteln kann. Außerhalb der Zeitspanne liegt der Aktor im Schlafmodus und kann keine Befehle empfangen. Typischerweise liegen die Intervalle bei wenigen Millisekunden Empfangszeit zu mehreren Minuten vollständigem Schlafmodus.</p><p>Natürlich erfordert das Vorgehen eine genaue Synchronisation der Zeitintervalle zwischen Sender und Empfänger. Der interessierte Leser kann sich unter dem Stichwort <a
href="http://de.wikipedia.org/wiki/IEEE_802.15.4#Slotted_Mode_.28beacon-enabled.29" target="_blank">Slotted Mode (beacon-enabled)</a> über die Mechanismen genauer informieren; damit ist eine Synchronisation nach längerer (~Wochen) Inaktivität wieder möglich.</p><h1>Anwendungen</h1><p>Nun, vielleicht macht es ja doch etwas Sinn, wenn man seine Gedanken in Richtung &#8220;Anwesenheit&#8221; schweifen läßt. Gesetzt den Fall, es gäbe einen Zustand &#8220;Anwesenheit&#8221;, der entweder per Knopfdruck beim Verlassen des Hauses oder auch beim Abschließen des Haustürschloßes geändert wird auf meinetwegen &#8220;nicht anwesend&#8221;, so könnte man nun automatisieren:</p><ul><li>Alle Lichter oder anderweitigen Verbraucher abschalten</li><li>Die Heizungen herunterregeln</li><li>Mittels elektrischen Fenstermotoren diese schließen, aber nur, wenn die Luftfeuchte paßt</li></ul><p>Ein weiterer lustiger Fall wäre eine Art &#8220;Coming-Home&#8221; Funktion: Ist z.B. das Handy, das seine Position über GSM ermittelt hat, in der Nähe des Anwesens und die Helligkeit geringer als Wert X, so könnte man schon einmal Flur- und Garagenlicht einschalten.</p><p>Und mein persönlicher Favourit: Beim Stellen des Weckers am Handy wird ein Programm auf der Steuerung angelegt, das zur Weckzeit + 5 Minuten im Schlafzimmer alle Lampen voll andreht und alle Schalter für 10 Minuten sperrt. Die bleiben also an. Wirkt besser als zwei Eimer kaltes Wasser.</p><h1>Fazit</h1><p>Wir haben gesehen, es lässt sich einiges an &#8220;Nice-To-Have&#8221; erdenken, wie das technisch ausschaut, und was wir für Mittel und Wege zum Ziel einschlagen, werden die Artikel in dieser Rubrik so nach und nach preisgeben.</p> ]]></content:encoded> <wfw:commentRss>http://www.mcseven.me/2011/12/home-automation-ein-exkurs/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Geizhals Shopping-Cart</title><link>http://www.mcseven.me/2011/02/geizhals-shopping-cart/</link> <comments>http://www.mcseven.me/2011/02/geizhals-shopping-cart/#comments</comments> <pubDate>Fri, 18 Feb 2011 15:33:29 +0000</pubDate> <dc:creator>McSeven</dc:creator> <category><![CDATA[Projekte]]></category><guid
isPermaLink="false">http://www.mcseven.me/?p=1177</guid> <description><![CDATA[Vorwort Manchmal wundert man sich. Da gibt&#8217;s so einfache und nützliche Webseiten im Internet, die uns das tägliche Leben erleichtern. Viele kleine Helferlein, die uns in der digitalen und auch realen Welt den Weg weisen. In der heutigen Ausgabe spreche ich von Preisvergleichsseiten im Internet. Eingetippt wird ein Produktname und nach kurzer Zeit erscheint eine [...]]]></description> <content:encoded><![CDATA[<h1>Vorwort</h1><p>Manchmal wundert man sich. Da gibt&#8217;s so einfache und nützliche Webseiten im Internet, die uns das tägliche Leben erleichtern. Viele kleine Helferlein, die uns in der digitalen und auch realen Welt den Weg weisen.</p><p>In der heutigen Ausgabe spreche ich von Preisvergleichsseiten im Internet. Eingetippt wird ein Produktname und nach kurzer Zeit erscheint eine Liste aller anbietenden Händler, mit Versandkosten und Gebühren und allem drum und dran gleich mit dabei. Die Liste läßt sich nach Preisen aufsteigend sortieren und fertig ist im Prinzip meine Bestellung; ich nehme natürlich den obersten.</p><h1>A small bump in the road&#8230;</h1><p>Winziges Manko: Was denn, wenn ich aus einer Sparte mehrere verschiedene Produkte bestellen möchte? Vielleicht, um einen ganzen PC selbst zusammenzustellen oder mein nächstes Bike für den Sommer? Fazit heute, das schon Stefan Raab  mit seinen Tele-Tubbie-Figuren herausfand: ooooch, göht nicht.</p><p>Welch geniale Funktion wäre denn diese: Ich rüste in den Preisvergleich einen Warenkorb nach. Die Artikel, die ich bestellen möchte, kommen dort hinein, und das System ermittelt mir den aktuellen Gesamtpreis aller Anbieter, die die Artikel liefern oder zumindest im Angebot haben. Idealerweise werden die Versandkosten auch gleich verglichen.</p><p>Das wäre mal&#8217;n Dingen: eine nützliche Seite, die noch nützlicher wird.</p><p>Nun gut, Geizhals kann das nicht, wir legen wie gewöhnlich selbst Hand an.</p><h1>&#8230;well, let&#8217;s get to work!</h1><p>Besagte Schwierigkeit läßt sich einfach mit etwas programmatischem Geschick lösen. Wir konzentrieren uns auf die Plattform Geizhals.at, die mit zu den am einfasten zu bedienenden gehört. Es ist zwar kein Eye-Candy, aber hey, unserem Programm wird das wurscht sein. Außerdem läßt sich der HTML-Code so besser parsen.</p><h2>Aufgabenstellung</h2><p>Womit wir beim nächsten Punkt, nämlich dem Konzeptionellen, angelangt sind. Unser Programm muß folgende Aufgaben erfüllen:</p><ol><li>Entgegennehmen der fraglichen Produkte von Geizhals</li><li>Abfragen der Händler und Preise für die Produkte</li><li>Herausfiltern der Händler, die alle Produkte liefern</li><li>Addieren zu Gesamtpreis pro Händler</li><li>Ausgeben der sortierten Händlerliste, der billigste zuerst.</li></ol><h2>Technisch gesehen</h2><p><a
href="http://www.mcseven.me/wp-content/uploads/2011/02/1.png" rel="lightbox[1177]"><img
class="alignleft size-thumbnail wp-image-1180" style="margin: 4px 4px 0px 0px;" title="Screenshot Geizhals Shopper" src="http://www.mcseven.me/wp-content/uploads/2011/02/1-100x100.png" alt="" width="100" height="100" /></a>Lösen werden wir das Ganze mit einem kleinen Script in der Programmiersprache Python (Version 2.7.1, nicht mehr die aktuelle), da diese einen extrem guten SGML-Parser besitzt, der mit der Erweiterung BeautifulSoup wunderbar einfach angesprochen werden kann und auch dreckigen HTML-Code noch relativ robust verarbeitet. Wir parsen also die Webseite von Geizhals und fischen und die gewünschten Info&#8217;s, indem wir einen Webseitenbesuch simulieren.</p><h1>And done.</h1><p>Das folgende Listing zeigt das fertige Python-Script. Zur Ausführung sind ein paar Schritte erforderlich:</p><ol><li>Man lade sich <a
href="http://www.python.org/download/releases/2.7.1/" target="_blank">Python 2.7.1</a> herunter und installiere es in ein beliebiges Verzeichnis auf dem Computer.</li><li>Man erstelle auf seinem Desktop oder /home ein Unterverzeichnis.</li><li>Dort hinein kopiere man das Script von unten in eine neue Date, z.B. &#8220;gh.py&#8221;.</li><li>Man lade sich <a
href="http://www.crummy.com/software/BeautifulSoup/#Download" target="_blank">BeautifulSoup</a>, neueste Version, herunter und kopiere es ebenfalls dorthinein.</li><li>Dann bearbeite man die Textdatei und trage die URLs der Artikel auf Geizhals oben in das Listing ein. Möchte man nur Händler, die den Artikel auch vorrätig (&#8220;grünes Versandkostenfeld&#8221;) haben, kann man das mit dem Zusatz &#8220;?v=l&#8221; bewerkstelligen, die komplette URL lautet dann etwa &#8220;http://geizhals.at/deutschland/a591090.html?v=l&#8221;.</li><li>Abschließend rufe man das bearbeitete Script mit Python auf, z.B. durch Eingeben &#8220;C:\Program Files\Python\python.exe gh.py&#8221; auf der Kommandozeile.</li></ol><div
class="python geshi python" style="font-family:monospace;"><div
class="head">Fertiges Python Script</div><ol><li
class="li1"><div
class="de1"><span
class="co1"># -*- coding: utf-8 -*-</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li1"><div
class="de1"><span
class="co1"># Imports</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">from</span> BeautifulSoup <span
class="kw1">import</span> BeautifulSoup<span
class="sy0">;</span></div></li><li
class="li2"><div
class="de2"><span
class="kw1">import</span> <span
class="kw3">urllib2</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li1"><div
class="de1"><span
class="co1"># URLs zu den Artikeln</span></div></li><li
class="li1"><div
class="de1">artikelUrls = <span
class="br0">&#91;</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="st0">&#39;http://geizhals.at/deutschland/a591090.html&#39;</span>, <span
class="co1">#MB</span></div></li><li
class="li2"><div
class="de2">&nbsp;<span
class="st0">&#39;http://geizhals.at/deutschland/a586747.html&#39;</span>, <span
class="co1">#GRAKA</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="st0">&#39;http://geizhals.at/deutschland/a580331.html&#39;</span>, <span
class="co1">#CPU</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="st0">&#39;http://geizhals.at/deutschland/a572113.html&#39;</span>, <span
class="co1">#RAM</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="co1">#&#39;http://geizhals.at/deutschland/a586960.html&#39;, #HD</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="co1">#&#39;http://geizhals.at/deutschland/a569031.html&#39; &nbsp;#NT</span></div></li><li
class="li2"><div
class="de2"><span
class="br0">&#93;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li1"><div
class="de1">merchantOffers &nbsp; = <span
class="br0">&#123;</span><span
class="br0">&#125;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">merchantArticles = <span
class="br0">&#123;</span><span
class="br0">&#125;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">merchantTotals &nbsp; = <span
class="br0">&#123;</span><span
class="br0">&#125;</span><span
class="sy0">;</span></div></li><li
class="li2"><div
class="de2">&nbsp;</div></li><li
class="li1"><div
class="de1"><span
class="co1"># Geizhals Shopping Cart&#8230;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span> <span
class="st0">&quot;&quot;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span><span
class="br0">&#40;</span><span
class="st0">&quot;****************&quot;</span><span
class="br0">&#41;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span><span
class="br0">&#40;</span><span
class="st0">&quot;Geizhals Shooper&quot;</span><span
class="br0">&#41;</span><span
class="sy0">;</span></div></li><li
class="li2"><div
class="de2"><span
class="kw1">print</span><span
class="br0">&#40;</span><span
class="st0">&quot;****************&quot;</span><span
class="br0">&#41;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span> <span
class="st0">&quot;&quot;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li1"><div
class="de1"><span
class="kw1">for</span> artikelUrl <span
class="kw1">in</span> artikelUrls:</div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="kw1">try</span>:</div></li><li
class="li2"><div
class="de2">&nbsp; opener = <span
class="kw3">urllib2</span>.<span
class="me1">build_opener</span><span
class="br0">&#40;</span><span
class="br0">&#41;</span></div></li><li
class="li1"><div
class="de1">&nbsp; opener.<span
class="me1">addheaders</span> = <span
class="br0">&#91;</span><span
class="br0">&#40;</span><span
class="st0">&#39;User-agent&#39;</span>, <span
class="st0">&#39;Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11&#39;</span><span
class="br0">&#41;</span><span
class="br0">&#93;</span></div></li><li
class="li1"><div
class="de1">&nbsp; response = opener.<span
class="kw2">open</span><span
class="br0">&#40;</span>artikelUrl<span
class="br0">&#41;</span></div></li><li
class="li1"><div
class="de1">&nbsp; page = response.<span
class="me1">read</span><span
class="br0">&#40;</span><span
class="br0">&#41;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="kw1">except</span>:</div></li><li
class="li2"><div
class="de2">&nbsp; <span
class="kw1">print</span> <span
class="st0">&quot;Sorry, URL: &quot;</span>+ artikelUrl +<span
class="st0">&quot; could not be opened.&quot;</span></div></li><li
class="li1"><div
class="de1">&nbsp; <span
class="kw1">continue</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li1"><div
class="de1">&nbsp;soup = BeautifulSoup<span
class="br0">&#40;</span>page<span
class="br0">&#41;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li2"><div
class="de2">&nbsp;<span
class="co1"># Artikelid parsen</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="kw2">id</span> = artikelUrl.<span
class="me1">split</span><span
class="br0">&#40;</span><span
class="st0">&#39;/&#39;</span><span
class="br0">&#41;</span><span
class="br0">&#91;</span><span
class="nu0">4</span><span
class="br0">&#93;</span>.<span
class="me1">split</span><span
class="br0">&#40;</span><span
class="st0">&#39;.&#39;</span><span
class="br0">&#41;</span><span
class="br0">&#91;</span><span
class="nu0">0</span><span
class="br0">&#93;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="co1"># Artikelnamen parsen</span></div></li><li
class="li1"><div
class="de1">&nbsp;h1 &nbsp; = soup.<span
class="me1">h1</span><span
class="sy0">;</span></div></li><li
class="li2"><div
class="de2">&nbsp;artikelName = h1.<span
class="me1">span</span>.<span
class="me1">text</span><span
class="br0">&#91;</span><span
class="nu0">0</span>:<span
class="nu0">40</span><span
class="br0">&#93;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;merchantArticles<span
class="br0">&#91;</span><span
class="kw2">id</span><span
class="br0">&#93;</span> = artikelName<span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="kw1">print</span> <span
class="kw2">id</span> + <span
class="st0">&#39;: &#39;</span>+ artikelName<span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="kw1">print</span> <span
class="st0">&quot;*****************&quot;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li2"><div
class="de2">&nbsp;<span
class="co1"># Händler und Preis suchen</span></div></li><li
class="li1"><div
class="de1">&nbsp;merchants = soup.<span
class="me1">findAll</span><span
class="br0">&#40;</span><span
class="st0">&#39;tr&#39;</span>, <span
class="br0">&#123;</span> <span
class="st0">&quot;class&quot;</span>:<span
class="br0">&#91;</span><span
class="st0">&quot;t1&quot;</span>, <span
class="st0">&quot;t2&quot;</span><span
class="br0">&#93;</span> <span
class="br0">&#125;</span> <span
class="br0">&#41;</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="kw1">for</span> merchant <span
class="kw1">in</span> merchants:</div></li><li
class="li1"><div
class="de1">&nbsp; <span
class="kw1">if</span> merchant.<span
class="me1">get</span><span
class="br0">&#40;</span><span
class="st0">&quot;class&quot;</span><span
class="br0">&#41;</span> <span
class="sy0">!</span>= <span
class="st0">&#39;t1&#39;</span> <span
class="kw1">and</span> merchant.<span
class="me1">get</span><span
class="br0">&#40;</span><span
class="st0">&quot;class&quot;</span><span
class="br0">&#41;</span> <span
class="sy0">!</span>= <span
class="st0">&#39;t2&#39;</span>: <span
class="kw1">continue</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li2"><div
class="de2">&nbsp; <span
class="co1"># Preis bestimmen</span></div></li><li
class="li1"><div
class="de1">&nbsp; mPreis = <span
class="kw2">float</span><span
class="br0">&#40;</span>merchant.<span
class="me1">td</span>.<span
class="me1">span</span>.<span
class="me1">text</span>.<span
class="me1">replace</span><span
class="br0">&#40;</span><span
class="st0">&#39;,&#39;</span>,<span
class="st0">&#39;.&#39;</span><span
class="br0">&#41;</span>.<span
class="me1">replace</span><span
class="br0">&#40;</span><span
class="st0">&#39;-&#39;</span>,<span
class="st0">&#39;0&#39;</span><span
class="br0">&#41;</span><span
class="br0">&#41;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li1"><div
class="de1">&nbsp; <span
class="co1"># Händlernamen bestimmen</span></div></li><li
class="li1"><div
class="de1">&nbsp; tmp &nbsp; &nbsp;= merchant.<span
class="me1">findAll</span><span
class="br0">&#40;</span><span
class="st0">&#39;a&#39;</span><span
class="br0">&#41;</span></div></li><li
class="li2"><div
class="de2">&nbsp; <span
class="kw1">if</span> tmp<span
class="br0">&#91;</span><span
class="nu0">0</span><span
class="br0">&#93;</span>.<span
class="me1">img</span>:</div></li><li
class="li1"><div
class="de1">&nbsp; &nbsp;<span
class="co1"># Aha, großes Bild. Händlername aus Titel laden</span></div></li><li
class="li1"><div
class="de1">&nbsp; &nbsp;mName = tmp<span
class="br0">&#91;</span><span
class="nu0">0</span><span
class="br0">&#93;</span>.<span
class="me1">img</span><span
class="br0">&#91;</span><span
class="st0">&#39;title&#39;</span><span
class="br0">&#93;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp; <span
class="kw1">else</span>:</div></li><li
class="li1"><div
class="de1">&nbsp; &nbsp;mName = tmp<span
class="br0">&#91;</span><span
class="nu0">0</span><span
class="br0">&#93;</span>.<span
class="me1">text</span><span
class="sy0">;</span></div></li><li
class="li2"><div
class="de2">&nbsp;</div></li><li
class="li1"><div
class="de1">&nbsp; <span
class="co1"># Händlerkey bestimmen</span></div></li><li
class="li1"><div
class="de1">&nbsp; tmp &nbsp; &nbsp;= merchant.<span
class="me1">findAll</span><span
class="br0">&#40;</span><span
class="st0">&#39;div&#39;</span>, <span
class="br0">&#123;</span><span
class="st0">&quot;class&quot;</span>:<span
class="st0">&quot;gh_hl1&quot;</span><span
class="br0">&#125;</span><span
class="br0">&#41;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp; mKey &nbsp; = tmp<span
class="br0">&#91;</span><span
class="nu0">0</span><span
class="br0">&#93;</span>.<span
class="me1">a</span><span
class="br0">&#91;</span><span
class="st0">&quot;href&quot;</span><span
class="br0">&#93;</span>.<span
class="me1">split</span><span
class="br0">&#40;</span><span
class="st0">&quot;=&quot;</span><span
class="br0">&#41;</span><span
class="br0">&#91;</span><span
class="nu0">1</span><span
class="br0">&#93;</span>.<span
class="me1">split</span><span
class="br0">&#40;</span><span
class="st0">&quot;&amp;&quot;</span><span
class="br0">&#41;</span><span
class="br0">&#91;</span><span
class="nu0">0</span><span
class="br0">&#93;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li2"><div
class="de2">&nbsp; <span
class="kw1">print</span> mName.<span
class="me1">ljust</span><span
class="br0">&#40;</span><span
class="nu0">25</span><span
class="br0">&#41;</span> +<span
class="st0">&quot;: &quot;</span>,</div></li><li
class="li1"><div
class="de1">&nbsp; <span
class="kw1">print</span> mPreis</div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li1"><div
class="de1">&nbsp; <span
class="kw1">if</span> <span
class="kw1">not</span> mName <span
class="kw1">in</span> merchantOffers:</div></li><li
class="li1"><div
class="de1">&nbsp; &nbsp;merchantOffers<span
class="br0">&#91;</span>mName<span
class="br0">&#93;</span> = <span
class="br0">&#123;</span><span
class="br0">&#125;</span><span
class="sy0">;</span></div></li><li
class="li2"><div
class="de2">&nbsp; merchantOffers<span
class="br0">&#91;</span>mName<span
class="br0">&#93;</span><span
class="br0">&#91;</span><span
class="kw2">id</span><span
class="br0">&#93;</span> = mPreis<span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="kw1">print</span> <span
class="st0">&quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&quot;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="kw1">print</span> <span
class="st0">&quot;&quot;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li1"><div
class="de1"><span
class="co1"># Ok, Grabbing finished. Jetzt Preisberechnung&#8230;</span></div></li><li
class="li2"><div
class="de2"><span
class="co1"># Wir schmeissen alle weg, die nicht alles liefern können</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">for</span> merchant <span
class="kw1">in</span> merchantOffers.<span
class="me1">keys</span><span
class="br0">&#40;</span><span
class="br0">&#41;</span>:</div></li><li
class="li1"><div
class="de1">&nbsp;total = <span
class="nu0">0.0</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="kw1">if</span> <span
class="kw2">len</span><span
class="br0">&#40;</span>merchantOffers<span
class="br0">&#91;</span>merchant<span
class="br0">&#93;</span><span
class="br0">&#41;</span> <span
class="sy0">&lt;</span> <span
class="kw2">len</span><span
class="br0">&#40;</span>artikelUrls<span
class="br0">&#41;</span>:</div></li><li
class="li1"><div
class="de1">&nbsp; <span
class="co1">#print merchant, &quot;: kann nicht alles liefern.&quot;</span></div></li><li
class="li2"><div
class="de2">&nbsp; <span
class="kw1">continue</span></div></li><li
class="li1"><div
class="de1">&nbsp;preisDict = merchantOffers<span
class="br0">&#91;</span>merchant<span
class="br0">&#93;</span><span
class="sy0">;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="kw1">for</span> artikel <span
class="kw1">in</span> merchantArticles.<span
class="me1">keys</span><span
class="br0">&#40;</span><span
class="br0">&#41;</span>:</div></li><li
class="li1"><div
class="de1">&nbsp; total = total + preisDict.<span
class="me1">get</span><span
class="br0">&#40;</span>artikel<span
class="br0">&#41;</span><span
class="sy0">;</span></div></li><li
class="li2"><div
class="de2">&nbsp;total = <span
class="kw2">round</span> <span
class="br0">&#40;</span>total<span
class="sy0">*</span><span
class="nu0">100</span><span
class="br0">&#41;</span></div></li><li
class="li1"><div
class="de1">&nbsp;merchantTotals<span
class="br0">&#91;</span>total<span
class="br0">&#93;</span> = merchant</div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li1"><div
class="de1"><span
class="co1"># und sortieren</span></div></li><li
class="li1"><div
class="de1">sortdict = merchantTotals.<span
class="me1">keys</span><span
class="br0">&#40;</span><span
class="br0">&#41;</span></div></li><li
class="li2"><div
class="de2">sortdict.<span
class="me1">sort</span><span
class="br0">&#40;</span><span
class="br0">&#41;</span></div></li><li
class="li1"><div
class="de1">&nbsp;</div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span> <span
class="st0">&quot;&quot;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span> <span
class="st0">&quot;##############################&quot;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span> <span
class="st0">&quot;### Ausgabe&quot;</span></div></li><li
class="li2"><div
class="de2"><span
class="kw1">print</span> <span
class="st0">&quot;##############################&quot;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span> <span
class="st0">&quot;&quot;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span> <span
class="st0">&quot;Artikel&quot;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span> <span
class="st0">&quot;&#8212;&#8212;-&quot;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">for</span> artikel <span
class="kw1">in</span> merchantArticles.<span
class="me1">keys</span><span
class="br0">&#40;</span><span
class="br0">&#41;</span>:</div></li><li
class="li2"><div
class="de2">&nbsp;<span
class="kw1">print</span> <span
class="st0">&quot; &#8211; &quot;</span>+artikel+<span
class="st0">&quot;: &quot;</span>+ merchantArticles<span
class="br0">&#91;</span>artikel<span
class="br0">&#93;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span> <span
class="st0">&quot;&quot;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span> <span
class="st0">&quot;Anbieter&quot;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">print</span> <span
class="st0">&quot;&#8212;&#8212;&#8211;&quot;</span></div></li><li
class="li1"><div
class="de1"><span
class="kw1">for</span> total <span
class="kw1">in</span> sortdict:</div></li><li
class="li2"><div
class="de2">&nbsp;merchant = merchantTotals<span
class="br0">&#91;</span>total<span
class="br0">&#93;</span></div></li><li
class="li1"><div
class="de1">&nbsp;<span
class="kw1">print</span> <span
class="st0">&quot; * &quot;</span>+ merchant.<span
class="me1">ljust</span><span
class="br0">&#40;</span><span
class="nu0">25</span><span
class="br0">&#41;</span> + <span
class="st0">&quot;%5.2f&quot;</span> <span
class="sy0">%</span> <span
class="br0">&#40;</span>total/<span
class="nu0">100</span><span
class="br0">&#41;</span></div></li></ol></div> ]]></content:encoded> <wfw:commentRss>http://www.mcseven.me/2011/02/geizhals-shopping-cart/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Ixon IQ Speed: Akkupack im Eigenbau</title><link>http://www.mcseven.me/2010/09/ixon-iq-speed-akkupack-im-eigenbau/</link> <comments>http://www.mcseven.me/2010/09/ixon-iq-speed-akkupack-im-eigenbau/#comments</comments> <pubDate>Wed, 01 Sep 2010 14:43:00 +0000</pubDate> <dc:creator>McSeven</dc:creator> <category><![CDATA[Projekte]]></category> <category><![CDATA[Akkupack]]></category> <category><![CDATA[Eigenbau]]></category> <category><![CDATA[IQ]]></category> <category><![CDATA[Ixon]]></category> <category><![CDATA[Speed]]></category><guid
isPermaLink="false">http://www.mcseven.me/?p=1052</guid> <description><![CDATA[Vorwort Der Winter naht, und des Bikers liebstes Wetter (Sonne und traumhafte leichte Brise) neigt sich eher dem Ende zu. Auch Tage werden kürzer, die Nächte brechen früher herein. Über kurz oder lang wird man deswegen um eine vernünftige Beleuchtung nicht herumkommen. Für wahre Puristen sind Gymmicks wie der Nabendynamo oder die Handkurbel tabu. Auch [...]]]></description> <content:encoded><![CDATA[<h1>Vorwort</h1><p>Der Winter naht, und des Bikers liebstes Wetter (Sonne und traumhafte leichte Brise) neigt sich eher dem Ende zu. Auch Tage werden kürzer, die Nächte brechen früher herein. Über kurz oder lang wird man deswegen um eine vernünftige Beleuchtung nicht herumkommen.</p><p>Für wahre Puristen sind Gymmicks wie der Nabendynamo oder die Handkurbel tabu. Auch bleut einem der Gewichtsparzwang ein, nur ja nur das absolut nötigste in Gramm ausgedrückt mitzuschleppen. Die Beleuchtung muß deswegen abnehmbar sein.</p><p>Der Artikel beschreibt kurz einen Self-Made-Akkupack für die Ixon-IQ-Speed Vorderlampe, der Preis von derzeit ~64 EUR für den Scheinwerfer und knapp 120 EUR für Akku und Ladegerät noch mit bei ist einfach nicht gerechtfertigt.</p><h1>Zutaten</h1><p>Werfen wir einen Blick auf die zu beschaffenden Teile. Bitte beachtet, dass ein bißchen bastlerisches Geschick notwendig ist; Montagezeit beträgt etwa 20-30 Minuten.</p><h2>Werkzeug und Kabel</h2><ul><li>Lötkolben</li><li>Lötzinn (bleifrei bevorzugt)</li><li>Multimeter (Durchgangsprüfer) zum Feststellen der Polarität des Kabels</li><li>Seitenschneider</li><li>Etwas Litze (0,75mm<sup>2</sup> oder stärker)</li><li>Draht 0,75mm<sup>2</sup></li></ul><h2>Teile für den Scheinwerfer</h2><p>Für den Scheinwerfer benötigen wir neben der LED-Lampe an sich etwas Gemüse.</p><ul><li>Kleine Neopren-Tasche (z.B. suche man in der Bucht nach &#8220;author fahrradtasche&#8221;), ca. 3,50 EUR</li><li>Halterung für 6 Mignon-Akkus und 9V Clip-Anschluß, z.B. vom großen C, 0,50 EUR</li><li>5 Mignon-Akkus NiMH, 2800 mAh, 1.2V, ca. 25 EUR</li><li>Passendes Ladegerät, z.B. 4 Zellen, ca. 7 EUR</li><li>Ixon IQ Speed Zusatzscheinwerfer, bei Geizhals den günstigsten herausfinden, ca. 64 EUR</li></ul><p>Macht summa summarum knapp 90 EUR, wenn man alles neu kaufen muss. Hat man noch Akkus und ein passendes Ladegerät, verringert sich der auszugebende Betrag beträchtlich, mich hat es knapp 70 EUR gekostet, da ich nur Tasche und Batteriehalter selbst beschaffen mußte.</p><h1>Montage</h1><p>Die einzige Schwierigkeit besteht in der belastbaren Verbindung zwischen Kabel und Batteriehalter. Folgt einfach der Anleitung.</p><ol><li>Zunächst knipst man den Stecker am geraden Ende, nicht am gewinkelten (!), ab und isoliert die Enden mit einem scharfen Messer auf 0,5cm ab. Vorsicht, nicht schneiden.</li><li>Die Enden werden nun verzinnt.</li><li>Die Halterung wird ebenfalls am Clip-Anschluß verzinnt.</li><li>Überbrückt nun mit der Litze eine Batterieposition, z.B. die direkt am Anschluß, sodaß insgesamt nur 5 Zellen eingesetzt werden müssen. Auch der Originalakku hat nur 5 Zellen. Beide Seiten gut verlöten.</li><li>Lötet nun das abisolierte und verzinnte Kabel an den Batteriehalter an. Achtet unbedingt auf die Polung, leider wurden offenbar keine einheitlichen Kabel verbaut, ich kann deswegen nichts zu Kabelfarben aussagen.</li><li>Das Lampenkabel muss gut am Batteriehalter gegen Zugbelastung gesichert befestigt werden. Ich habe dafür ein kleines Loch in den Halter geschmolzen, es mit dem Draht (siehe Zutaten) mehrfach am Halter befestigt und diesen dann mit der Hand verdreht.</li><li>Bestückt den Halter mit den 5 geladenen Batterien und steckt den gewinkelten Stecker in die Lampe.</li><li>Testet die Lampe: Langer Druck muss sie einschalten, es sollte die LED oben abwechselnd rot und grün blinken. Kurzer Druck auf den Knopf sollte zwischen Heller und Dunkler umschalten.</li></ol><p>Voila, das war&#8217;s schon.</p><h1>Pro und Contra</h1><p>Sehr für die IQ Speed spricht natürlich die helle Lichtausbeute und der extrem gut gefertigte Reflektor. Sie macht ein schönes helles Viereck auf die Straße und sorgt in der Dämmerung für eine brilliante Sichtbarkeit. Auch die Akkulaufzeit ist mit 10 Stunden (getestet mit 2800 mAh Akkus) durchaus brauchbar.</p><p>Getestet habe ich sie auch bei Neumond im stockfinsteren Wald auf Teerstraße, ist einwandfrei machbar, Sichtweite etwa 30m. Über Wurzelwege würde ich sie dagegen nicht emfehlen. Zumindest nicht alleine.</p><p>Außerdem kann man sich in den Mignon-Batteriehalter zur Not auch ganz normale Batterien von der Tankstelle einbauen, sofern den Akkus unterwegs die Puste ausgeht.</p><p>Allerdings hat die Lampe zwei große Mankos. Zum einen ist sie laut der StVZO nicht im Bereich des Straßenverkehrs zugelassen. Schlecht gelaunte Beamte und es genaunehmende Versicherungen können euch im Prinzip etwas anhängen. Ist kein Witz, wenn es in der Dunkelheit kracht, bekommt ihr zumindest Teilschuld, weil der Unfallgegner sich immer auf unzureichende Beleuchtung, so schizophren das auch sein mag, berufen kann.</p><p>Zum anderen stört sie Funktachometer gewaltig. Egal ob hell oder dunkel eingestellt, ich habe noch keinen Funktacho gefunden (analog oder digital), der bei gleichzeitigem Betrieb mit der Lampe (oder einer anderen Ixon IQ) noch funktioniert hätte. Kabelgebundene dagegen haben kein Problem. Das muß man einfach wissen.</p> ]]></content:encoded> <wfw:commentRss>http://www.mcseven.me/2010/09/ixon-iq-speed-akkupack-im-eigenbau/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Pimp-My-Kicker a.k.a. Wham-O-Meter</title><link>http://www.mcseven.me/2010/08/pimp-my-kicker-a-k-a-wham-o-meter/</link> <comments>http://www.mcseven.me/2010/08/pimp-my-kicker-a-k-a-wham-o-meter/#comments</comments> <pubDate>Tue, 24 Aug 2010 13:00:52 +0000</pubDate> <dc:creator>McSeven</dc:creator> <category><![CDATA[Projekte]]></category> <category><![CDATA[Geschwindigkeitsmessung]]></category> <category><![CDATA[Kicker]]></category> <category><![CDATA[Lichtschranke]]></category> <category><![CDATA[Tischkicker]]></category> <category><![CDATA[tor]]></category> <category><![CDATA[Torzähler]]></category><guid
isPermaLink="false">http://www.mcseven.me/?p=821</guid> <description><![CDATA[Dieser Artikel beschreibt eine komfortable Tor-Erfassungs-Anlage für mittlere bis große Tischkicker. Besonderes Highlight hierbei ist die Geschwindigkeitsmessung des Kickerballes, zwei grafische LCDs und verschiedene pro Seite separat einstellbare Spielmodi und Handicaps (z.B. Minimale und maximale Geschwindigkeit, Torvorsprung, doppelt gewählte Eigentore, ...).]]></description> <content:encoded><![CDATA[<h1>Vorwort</h1><p>Aller Anfang ist schwer, vor allem, wenn es darum geht, eine im wesentlichen einfache Sache zu beschreiben. Kurz: Zur sportlichen und geistigen Betätigung und Erfrischung haben wir am Lehrstuhl dank tatkräftiger Mithilfe und Überzeugzeugskraft aller einen schönen made-in-china Tischkicker bekommen.</p><p>War doch anfangs die Freude über die neue Erheiterung recht groß, so stellte sich bald eine gewisse Ernüchterung ein, war doch das ganze Äußere nicht allzu ansprechend gestaltet. Klar, grüner Tisch, Torzähler und die Männeken, aber eben nur &#8220;ok&#8221;, nicht &#8220;very ok&#8221;.</p><p>Ein Mißstand, dem abgeholfen werden muss; auch mit Ideen der anderen Kollegen war schnell das Projekt &#8220;Pimp My Kicker&#8221; geboren, und welches Gebiet würde sich besser dafür eignen als das Tor an sich. Selbstspielende Kickerautomaten gibt&#8217;s schon, elektrische Torzähler sind seltener.</p><p>Und nachdem der verkappte E-Techniker noch abgehalten wurde, &#8220;es knacken zu lassen&#8221;, war aus &#8220;Pimp My Kicker&#8221; schnell das Projekt &#8220;Wham-O-Meter&#8221; mutiert, wie der Name schon sagt, sollte es eine Messung des &#8220;Whams&#8221;, sprich der Eintrittsgeschwindigkeit des Kickerballs, durchführen.</p><p>Weitergesponnen ergab sich dann die folgende Liste der Ideen-Sammlung wünschenswerter Features:</p><ul><li>Ballgeschwindigkeit, und zwar unabhängig vom Einfallwinkel</li><li>Spielstandsanzeige</li><li>Highscore-Liste (&#8220;TOP10&#8243;) der jeweils schnellsten Schüsse in einem Tor</li><li>Handicap: Ballgeschwindigkeit minimal und maximal pro Seite</li><li>Handicap: Siegbedingungen (Toranzahl) pro Seite einstellbar</li><li>Handicap: Führende Tore eines Teams pro Seite einstellbar</li><li>2 synchrone LCDs</li><li>Einfacher Tor-Storno</li><li>Einfacher Spiel-Reset</li></ul><p>Der vorliegende Artikel wird die gesamte Meßanlage ausführlich in Theorie und Praxis beschreiben.</p><p>Wir werden uns zunächst der Geschwindigkeitsmessung in der Theorie mit ein wenig Physik widmen, danach eine passende Hardware entwerfen und die Software und ihre Ansteuer-Routinen für ein Grafik-LCD beschreiben. Es folgt die Beschreibung der Montage und der Inbetriebnahme, danach eine Art Handbuch der Software in der MCU. Abschließen werde ich mit einigen Demonstrationsvideos.</p><p>Alle in diesem Artikel veröffentlichten Inhalte (Platinen, PCB-Designs, Fotos, Texte, Software, etc.) sind unter der deutschen Creative-Commons-Lizenz 3.0 by-nc-sa (kurz: Namensnennung, Nicht-Kommerziell, Weitergabe zu gleichen Bedingungen gestattet) verfügbar.</p><h1>Danksagung</h1><p>Zunächst aber möchte ich mich an dieser Stelle bei zwei Personen besonders bedanken, die durch ihre Tatkraft und Mithilfe dieses Projekt erst ermöglicht haben.</p><ul><li><a
href="http://www.chrschn.de/" target="_blank">Christian Schneider</a>: Unermüdliches Schaffen bei der Montage, obwohl er auch anderes zu tun gehabt hat&#8230;</li><li><a
href="http://www.sec.in.tum.de/thomas-stibor" target="_blank">Thomas Stibor</a>: Hat den genialen Einfall mit der Verbesserung der Hardware gehabt und besonders intensives Beta-Testing betrieben&#8230;</li></ul> ]]></content:encoded> <wfw:commentRss>http://www.mcseven.me/2010/08/pimp-my-kicker-a-k-a-wham-o-meter/feed/</wfw:commentRss> <slash:comments>1</slash:comments> <enclosure
url="http://www.mcseven.me/wp-content/uploads/2010/08/test.flv" length="4175334" type="video/x-flv" /> </item> <item><title>Getränkeabrechnung mittels PHP</title><link>http://www.mcseven.me/2010/07/getrankeabrechnung-mittels-php/</link> <comments>http://www.mcseven.me/2010/07/getrankeabrechnung-mittels-php/#comments</comments> <pubDate>Mon, 12 Jul 2010 17:33:06 +0000</pubDate> <dc:creator>McSeven</dc:creator> <category><![CDATA[Projekte]]></category> <category><![CDATA[Abrechnung]]></category> <category><![CDATA[Barcode]]></category> <category><![CDATA[EAN]]></category> <category><![CDATA[EAN13]]></category> <category><![CDATA[EAN8]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Scanner]]></category> <category><![CDATA[Warenwirtschaft]]></category><guid
isPermaLink="false">http://www.mcseven.me/?p=825</guid> <description><![CDATA[Strichlisten gehören in Zukunft der Vergangenheit an. Mit diesem System erfolgt die Buchung, Abrechnung, und Preiskalkulation von Bar-Artikeln in eurer Einrichtung (Lehrstuhl, Abteilung, etc.) sehr einfach, übersichtlich und bequem.]]></description> <content:encoded><![CDATA[<h1>Vorwort</h1><p>Eigentlich ist es ja trivial &#8211; an unserem Lehrstuhl gibt&#8217;s einen Kühlschrank, der dankenswerterweise von der Sekretärin mit Leben (Waren) befüllt wird. Insbesondere im Sommer weiß der durstige Assistent die kühlen Cola&#8217;s zum Fast-EK gegenüber der überteuerten Cafeteria sehr zu schätzen. Wäre da nicht&#8230;&#8230; ja, wäre da nicht das lästige Zahlen.</p><p>Das bisherige System ist denkbar einfach: Für jeden Artikel hängt eine Strichliste mit Namen aus, man kreuzt an, wieviel man wovon konsumiert hat. Einmal in zwei Monaten wird zusammengerechnet und beglichen; dann gibt&#8217;s auch neue Lieferungen.</p><p>Leider ergeben sich, trotz des Vorteils der einfachen &#8220;Bedienung&#8221;, ein paar Nachteile:</p><ul><li>Kein Kontostand: Selbst wenn ich eingezahlt habe, kenne ich mein Guthaben nicht.</li><li>Abrechnung nur alle paar Wochen: ich falle regelmäßig aus allen Wolken, ein bißchen Kontrolle und Übersicht wären chic.</li><li>Zusammenzählen per Hand: Bei 20 Assistenten ist die Sekretärin mal ordentlich beschäftigt.</li><li>Sicherheit: Theoretisch könnte mir jemand ein Kreuzchen machen, und ich würde das wohl nicht bemerken.</li></ul><p>Irgendwann war ich das Gehampel satt, Zeit würde es für eine vollelektronische Variante, die all die obigen Schwächen beseitigt. Auch eine schöne Weboberfläche sollte nicht fehlen.</p> ]]></content:encoded> <wfw:commentRss>http://www.mcseven.me/2010/07/getrankeabrechnung-mittels-php/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Ambi-Light 2: 16bit PWM, 5 RGB-Kanäle</title><link>http://www.mcseven.me/2009/12/ambilight-2-16bit-pwm-5-rgbkanale/</link> <comments>http://www.mcseven.me/2009/12/ambilight-2-16bit-pwm-5-rgbkanale/#comments</comments> <pubDate>Mon, 28 Dec 2009 14:50:38 +0000</pubDate> <dc:creator>McSeven</dc:creator> <category><![CDATA[DIY Ambient-Light]]></category> <category><![CDATA[Ambient Light]]></category> <category><![CDATA[Ambilight]]></category> <category><![CDATA[ATxMega16A5]]></category> <category><![CDATA[Heimkino]]></category> <category><![CDATA[XMega]]></category><guid
isPermaLink="false">http://www.mcseven.me/?p=661</guid> <description><![CDATA[Nachdem nun vereinzelt auch Chips der ATxMega-Reihe verfügbar sind, wurde es Zeit für ein Redesign des Ambi-Light Controllers. Die wichtigste Neuerung ist die Hardware-PWM, mit der die CPU gravierend entlastet wird. Die zweite Neuerung ist die Erhöhung der Auflösung von 10 auf 16 bit. Beschreibung und Dokumentation finden sich im Artikel.]]></description> <content:encoded><![CDATA[<h1>Vorwort</h1><p>Wie bereits am Ende der Beschreibung zum ersten Controller angekündigt, ist das System nicht optimal. Gelegentliche Farbblitzer und zu geringe Auflösung in dunklen Bereichen bei 10 Bit hinterlassen einen nicht ganz so positiven Eindruck. Zwar könnte man mit Diffusionsfolie noch ein Stück weit kommen, eines Ingenieurs ist das aber nicht würdig <img
src='http://www.mcseven.me/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Es gilt daher, die vorhandenen Schwächen mittels neuer Hardware zu beseitigen. Im Wesentlichen sind das:</p><ul><li>Software-PWM</li><li>Nur 10 bit Auflösung bei 75 Hertz PWM-Grundfrequenz</li><li>Insgesamt drei RGB-Kanäle, sprich 9 PWM-Kanäle</li></ul><p>Die theoretischen Kapitel über Ambilight, Biologie (Gammakorrektur) und PWM aus dem Artikel <a
title="Ambient Light im Eigenbau (Seite 5)" href="/2008/10/diy-ambilight/" target="_blank">Ambient Light im Eigenbau</a> gelten auch für diesen Controller, es macht daher Sinn, den Artikel zuerst zu lesen, so noch nicht geschehen.</p><h1>Atmels XMega-AVR Baureihe</h1><p>Wie schon in <a
title="Ambient Light im Eigenbau (Seite 5)" href="/2008/10/diy-ambilight/5/" target="_blank">Ambient Light im Eigenbau (Seite 5)</a> im Unterkapitel &#8220;MCU al­lei­ne oder mit de­di­zier­tem LED-?Trei­ber?&#8221; beschrieben existierte bis dato keine vernüftige Hardware-Lösung, wenn mann einmal von FPGA-Programmierung absieht. Mittlerweile aber sind von Atmel Chips der Baureihe ATxMega lieferbar (waren seit Mitte 2008 angekündigt!). Sie zeichnen sich durch geringeren Stromverbrauch, einheitlicheres Hardware-Design und höhere Taktfrequenz aus.</p><p>Ich habe mich für einen ATxMega16A4 entschieden, da das TQFP44-Gehäuse noch einigermaßen im Eigenbau behandelbar ist, sowohl mit Ätzen wieauch zum Löten an sich. Außerdem bietet der Chip bereits alle Voraussetzungen, die wir für die neue Hardware brauchen:</p><ul><li>16 PWM-Kanäle mit je 16 Bit Auflösung</li><li>5 USARTS (wir benötigen nur einen)</li><li>Taktfrequenz bis 32 Mhz</li><li>AES/DES-Crypto-Engine (die wir aber nicht brauchen)</li><li>3,3V Betriebsspannung</li><li>16 KByte Flash-ROM, optionaler Bootloader</li></ul><p>Mit Mustern schauts relativ mau aus, ich hatte aber das Glück, bei Farnell welche zu bekommen. Leider gibt&#8217;s Stand heute (12/2009) bei Digikey nur die großen TQFP100 oder BGA-Gehäuse, offenbar dürfen sie wegen der AES-Crypto-Engine nicht exportiert werden, in den USA wären sie nämlich lieferbar. Das soll einer verstehen, vor allem, weil die großen die Crypto-Funktionen ebenfalls besitzen.</p><h1>Schnittstelle am PC</h1><p>Etwas länger habe ich überlegt, ob Version 2 für die Datenübertragung wieder eine USB-Schnittstelle bekommen soll. Der FTDI-Chip hätte nämlich einige Vorteile. Nicht nur, dass er fast ohne externe Bauteile auskommt und sich vollständig um die Kommunikation mit dem PC kümmert, er hätte auch einen 3,3V Ausgang, um den Atmel mit Strom zu versorgen.</p><p>Ich habe mich dann aber dagegen entschieden, im Wesentlichen aus zwei Gründen:</p><ol><li>Das Teil ist schweineteuer. Fünf EUR beim Reichelt sind mir einfach zu viel, v.a. wenn es ein ganzes Kabel bei eBay für knapp 4 € gibt.</li><li>Aus Erfahrung mit dem ersten Controller weiß ich, dass das System einen Standby mit geöffnetem COM-Port nicht überlebt, sprich man mußte den Controller nach jedem Aufwachen des Rechners erst einmal wieder abstecken und wieder hinstecken, damit der COM-Port wieder existierte. Die Software Boblight erkennt einen Standby aber nicht und läßt den COM-Port ständig offen. Das funktioniert unter Windows XP aber nur mit einer Hardware-Schnittstelle zuverlässig.</li></ol><p>Der neue Controller wird deswegen keinen USB-Anschluss bieten. Wer möchte, kann sich einen mittels USB2Serial-Kabel selbst konstruieren, sei aber darauf hingewiesen, dass das bei mir nicht richtig funktionierte.</p><p><strong><span
style="color: #ff0000;">Hinweis</span>:</strong> Auf der Platine sind die RX-/TX-Leitungen der seriellen Buchse vertauscht. Man kann den Controller daher nur mit einem Nullmodem-Kabel betreiben. Wenn ihr einen USB2Serial-Adapter benutzt, wird der nicht direkt an der Buchse funktionieren. Entweder ihr zieht die Leiterbahnen neu, oder schaltet noch ein Nullmodem-Kabel zwischen Controller und Adapter.</p> ]]></content:encoded> <wfw:commentRss>http://www.mcseven.me/2009/12/ambilight-2-16bit-pwm-5-rgbkanale/feed/</wfw:commentRss> <slash:comments>12</slash:comments> <enclosure
url="http://www.mcseven.me/wp-content/uploads/2010/01/al2_demo.flv" length="9365946" type="video/x-flv" /> </item> <item><title>Ticket-System für Help-Desks in PHP</title><link>http://www.mcseven.me/2009/09/ticket-system-fur-help-desks-in-php/</link> <comments>http://www.mcseven.me/2009/09/ticket-system-fur-help-desks-in-php/#comments</comments> <pubDate>Sat, 19 Sep 2009 15:01:28 +0000</pubDate> <dc:creator>McSeven</dc:creator> <category><![CDATA[Ticket-System]]></category> <category><![CDATA[Help-Desk]]></category> <category><![CDATA[Helpdesk]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Ticketsystem]]></category><guid
isPermaLink="false">http://www.mcseven.me/?p=526</guid> <description><![CDATA[Beschreibung eines Support- und kundenfreundlichen Ticket-Systems auf Basis von PHP5 und MySQL. Bildergalerien mit Screenshots befinden sich im Artikel; eine Demo-Instanz kann bei Interesse eingerichtet werden.]]></description> <content:encoded><![CDATA[<h1>Vorwort</h1><p>Wikipdia listet als ersten Absatz im Artikel &#8220;<a
href="http://de.wikipedia.org/wiki/Issue-Tracking-System" target="_blank">Ticketsystem</a>&#8220;:</p><blockquote><p>Ein Issue-Tracking-System (TTS; Synonyme: Help-Desk-System, Serviceticket-System, Ticketing-System, Task-Tracking-System, Support-Ticketing-System, Trouble-Ticket-System, teilweise auch Fallbearbeitungssystem) ist eine Art von Software, um Empfang, Bestätigung, Klassifizierung und Bearbeitung von Kundenanfragen (Tickets bzw. Fälle) zu handhaben. Als Anfragen werden eingehende Kundenanrufe, E-Mails, Faxe und ähnliches betrachtet.</p></blockquote><p>Wichtigstes Feature hierbei ist der zentrale Anlaufpunkt für eingehende Anfragen; ein Kunde oder ein firmeninterner Mitarbeiter bei größeren Firmen weiß im Allgemeinen nicht, welche Einzelperson sein Anliegen am ehesten bearbeiten kann. Mit Hilfe eines Ticketsystems können die Anfragen kanalisiert den richtigen Personen im Unternehmen zugeleitet werden; außerdem speichert das System im Allgemeinen zu jeder Anfrage Historie und Eingaben aller Beteiligten. Es ist so wegen der durchgeführten &#8220;Visualisierung&#8221; von Arbeitsabläufen sehr einfach möglich, bestehende Strukturen zu prüfen und zu überarbeiten.</p><h1>Wünschenswerte Features</h1><p>In diesem Kapitel möchte ich Ihnen Features vorstellen, die ein einfacher gestricktes Ticketsystem mindestens besitzen sollte. Es muss sowohl für den Helpdesk-Mitarbeiter (&#8220;Agenten&#8221;) wie auch für den Anfragenden (&#8220;Kunden&#8221;) sehr einfach und übersichtlich zu bedienen sein.</p><h2>Plattform</h2><p>An den Rechner von Kunde und Agent dürfen keine großen Erwartungen gestellt werden, Betriebssystem und Benutzerrechte können beliebig breit gestreut sein. Es ist daher sicherzustellen, dass das System ohne Installation auskommt und auf möglichst vielen Plattformen läuft. Eine webbrowserbasierte Oberfläche für den Benutzer / Administrator erscheint zweckmäßig, auf der Serverseite sollte eine SQL-Datenbank die Speicherung der Inhalte übernehmen.</p><p>Die größte Entwicklergemeinde hat derzeit wahrscheinlich PHP, an Open-Source-Datenbanken erscheint MySQL mit seiner InnoDB-Storage-Engine sehr ausgereift und für die Zwecke optimal geeignet.</p><h2>Benutzer-Schnittstelle</h2><p>Wie eingangs bereits erwähnt, sollte die GUI für Agenten webbasiert sein und auf allen modernen Browsern ungefähr gleich aussehen, zumindest aber die gleichen Funktionalitäten anbieten. Kunden oder reguläre Mitarbeiter der Firma sollten sich per Mail an eine zentrale eMail-Adresse an den Helpdesk wenden können, es bietet für den Kunden drei Vorteile:</p><ul><li>Dokumentation: Im eMail-Ausgang des eMail-Programms des Kunden liegt die gesendete Mail zur Dokumentation und Nachvollziehbarkeit bereit.</li><li>Spam-Bekämpfung: Mail-Filter zum Blockieren von unerwünschten Nachrichten sind relativ ausgereift; andere Schnittstellen wären gegen unerwünschte Kontaktaufnahme möglicherweise nicht so robust.</li><li>Einfachheit: Der Kunde muss nicht die Bedienung einer neuen grafischen Oberfläche erlernen, sondern kann sein gewohntes eMail-Programm benutzen.</li></ul><p>Das System wird deswegen ein oder mehrere eMail-Postfächer benötigen. Optimal wäre es, wenn einzelne Abteilungen jeweils auch eigene Adressen bzw. Postfächer eingerichtet bekommen könnten, sodass z.B. Mails an die Systemadministratoren an &#8220;sysadmin@domain.tld&#8221; und Fragen an Redakteure an &#8220;redaktion@domain.tld&#8221; geschickt werden können; trotzdem sollten beide Postfächer in einem System zusammen laufen, damit gegebenenfalls Anfragen aus anderen Bereichen bzw. Abteilungen innerhalb des selben Tickets beantwortet werden können, ohne dass erneut eMails versendet werden müssen.</p><p>Antworten an den Kunden sollten dann von der gewohnten Adresse (&#8220;sysadmin@&#8221; und &#8220;redaktion@&#8221;) abgeschickt werden können, wobei im Namensfeld (RFC2822) der Sachbearbeiter genannt werden kann, oder -sofern gewünscht- die Mail im Auftrag geschickt werden kann.</p><h2>Automatische Antworten.</h2><p>Für Kunden wäre es unter Umständen wünschenswert, über die Bearbeitungsschritte seines Tickets informiert zu werden. Zumindest aber der Erhalt der Anfrage sollte dem Kunden bestätigt werden; einen Statusübergang bei Rückfragen in andere Abteilungen oder 2nd-Level-Support kann für den Kunden Klarheit schaffen und Last vom 1st-Level-Support nehmen (&#8220;Was ist mit meiner Anfrage XYZ geschehen?&#8221;).</p><h2>Standardantworten für Agenten</h2><p>Für häufig wiederkehrende Anfragen sollten Agenten in der Lage sein, vordefinierte Texte möglicherweise mit Datei-Anhängen (z.b. Bedienungsanleitungen) auszuwählen und dem Kunden als Antwort zu schicken. Es läßt sich so Arbeitszeit einsparen. Die Standardantworten sollten selbstverständlich vor dem Absenden noch bearbeitet werden können.</p><p>Auch wäre es gut, für verschiedene Support-Levels jeweils gleiche Standardantworten definieren zu können bzw. Letztere in mehreren Queues anbieten zu können.</p><h2>Status und Prioritäten</h2><p>Selbstverständlich muss ein Ticket verschiedene Status (u-Deklination, deswegen lautet der Plural &#8220;Status&#8221; mit langem &#8220;u&#8221;) zulassen, die unterschiedlich zu visualisieren sind:</p><ul><li>Der erste Status eines Tickets wird wohl &#8220;offen&#8221; oder ähnlich sein, eben genau dann, wenn die Anfrage neu erstellt wurde. Zusätzlich kann, wie bei Mails üblich, noch ein Zusatzflag definiert werden, das das Vorhandensein neuer (=ungelesener) Texte innerhalb des Tickets anzeigt.</li><li>Sofern nach Beantwortung eines Tickets die Schwierigkeit aus Sicht des Agenten gelöst ist, sollte das Ticket geschlossen werden. Es ist somit ein Status &#8220;geschlossen&#8221; zu definieren.</li><li>Sollte der Kunde noch eine Antwort nachliefern müssen, könnte man, anstatt das Ticket zu schließen, einen Zwischenstatus (&#8220;warten&#8221;) definieren, welcher anders gekennzeichnet wird, damit der Agent weiß, dass hier auf eine Antwort vom Kunden gewartet wird.</li><li>Zu guter Letzt muss ein Ticket auch gesperrt werden können, damit Agenten besonders bei mehreren Agenten pro Queue nicht zwei das gleiche Ticket bearbeiten. Gesperrte Tickets können außer vom &#8220;Sperrer&#8221; nur gelesen werden.</li></ul><p>Jeder Agent sollte selbst aussuchen können, welche Status er bei Tickets sehen möchte. Der 1st-Level-Support etwa würde wohl nur die &#8220;offenen&#8221; Tickets sehen wollen; Mitarbeiter einer Fachabteilung aber haben möglicherweise so wenig Tickets, dass sie auch die geschlossenen aufgelistet bekommen möchten.</p><p>Eine wichtige Frage ist die der Prioritäten. Das vorliegende Ticketsystem verzichtet bewußt auf Prioritäten für Tickets, da:</p><ul><li>zu klären wäre, wer die Prioritäten setzen darf.</li><li>sich das System von einem Bugtracker unterscheiden soll.</li><li>es im Gegensatz zum Status keine handfesten Kriterien für die Einordnung in eine bestimmte Prioritätsstufe gibt.</li><li>Möglicherweise vom Datum her &#8220;hinten liegende&#8221; oder neuere Tickets mit ähnlichem Inhalt eine höhere Priorität bekommen müßten. Mit anderen Worten: Um die Priorität richtig zuweisen zu können, müßten immer alle neuen offenen Tickets inhaltlich durchsucht werden.</li><li>Die Anzahl von Stufen wohl nicht ganz klar sein würde. Sind es 3 (eMail) oder 5 (OTRS Standard)?</li></ul><p>Es erscheint mir daher zweckmäßig, von Anfang an auf Prioritäten zu verzichten.</p><h2>Persönliche  Queues</h2><p>Im Konkurrenzprodukt OTRS kann jedem Agenten ein Ticket zugewiesen werden; die Bearbeitung ist dann nur noch durch diesen Mitarbeiter möglich. Die Tickets bleiben aber in der entsprechenden Queue liegen. Ich finde das unübersichtlich und verfolge den Ansatz, dass auch Agenten eine eigene persönliche Queue haben können; prinzipiell unterscheidet sich diese nicht von anderen Queues, kann aber nur von dem einen Agenten bearbeitet werden.</p><p>Persönliche Queues sollten per Standard grundsätzlich flach  im Queue-Baum liegen; jeder Agent kann aus Gründen der Übersicht aber einzelne persönliche Queues ausblenden. Es werden also nur die persönlichen Queues der engeren &#8220;Mit-Agenten&#8221; oder bekannter Mitarbeiter aus anderen Abteilungen angezeigt statt alle Mitarbeiter des Systems.</p><h2>Anbindung für Kundendaten</h2><p>Eine sehr wichtige Frage ist die der Integration von Kunden der Firma. Es gilt folgende Fragen zu klären:</p><ul><li>Sollten Kunden eine Oberfläche bekommen mit allen ihren bisherigen Anfragen?</li><li>Wie würden sie sich registrieren?</li><li>Können / Sollen / Dürfen wir als Firma Daten aus dem CRM importieren oder Anfragen in dieses überspielen?</li><li>Was geschieht bei unvollständigen Kundendaten oder nicht im CRM vorhandenen Fragestellern?</li></ul><p>Nach viel Diskussion in größeren Runden und Gesprächen mit Firmen, die bereits solche Lösungen einsetzen, erscheint es sinnvoll, auf eine Anbindung an einen Firmen-LDAP-Server oder das CRM zu verzichten. Einerseits sind rechtliche Fragen zum Datenschutz nicht einfach zu beantworten, wenn Daten ohne Einwilligung in mehrere Systeme überspielt werden sollen. Andererseits besteht immer die Schwierigkeit der Verfügbarkeit, wenn das angebundene System ausgefallen ist und z.B. Kundendaten nicht gelesen werden können.</p><p>Es sollte daher von vorneherein möglichst auf eine saubere Implementierung mit unbekannten Kundendaten (Name, Vorname, usw.) geachtet werden; optional könnte versucht werden, aus dem Mailtext bestimmte Informationen zu extrahieren.</p><p>Das System an sich sollte aber Stand-Alone laufen können, da im Zweifelsfalle genau ein angebundenes System das ist, das ausgefallen ist und für das die Support-Anfrage gilt.</p><h2>Bemerkungen zur Oberfläche</h2><p>Die Benutzeroberfläche muss sehr einfach und intuitiv bedienbar sein. Insbesondere 2nd- und 3rd-Level Support hat möglicherweise nicht die Erfahrung oder Zeit, Fehler und Imperformanzen des Systems durch manuelle Arbeit auszugleichen.</p><p>Es empfiehlt sich daher, sich möglichst an &#8220;Industriestandards&#8221; zu orientieren. Einen guten Ansatz dafür bietet die Oberfläche von Outlook, sie ist mit der gut verständlichen Anordnung der einzelnen Bereiche (Ordner, Ordnerinhalt, Mailtext) und ihrer Symbolik auch für Laien gut verständlich.</p><p>Weiters sollte die Oberfläche ein optisches Feedbeck bieten, sofern der Benutzer eine Aktion auslöst oder mit der Maus über Bedienelemente fährt.</p><p>Besonderes Augenmerk ist auf die Mailfunktionen zu legen. Insbesondere müssen:</p><ul><li>Verschiedene Zeichensätze (Unicode, ISO9660, Latin, usw.) einwandfrei erkannt werden.</li><li>HTML-Mails als solche erkennbar, in Nur-Text umgewandelt und mit entsprechenden Anhängen versehen werden.</li><li>Anhänge korrekt dekodiert und mit richtigen Dateinamen versehen werden.</li><li>bei Antworten die Benutzer unbedingt zur Vermeidung von TOFU animiert werden.</li><li>mehrere unterschiedliche Bildschirmauflösungen und Webbrowser unterstützt werden.</li></ul> ]]></content:encoded> <wfw:commentRss>http://www.mcseven.me/2009/09/ticket-system-fur-help-desks-in-php/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>eMail-Überwachung: Jedem das Seine&#8230;</title><link>http://www.mcseven.me/2009/05/email-uberwachung-jedem-das-seine/</link> <comments>http://www.mcseven.me/2009/05/email-uberwachung-jedem-das-seine/#comments</comments> <pubDate>Sun, 10 May 2009 08:56:02 +0000</pubDate> <dc:creator>McSeven</dc:creator> <category><![CDATA[Homeserver]]></category> <category><![CDATA[Cisco]]></category> <category><![CDATA[DNS]]></category> <category><![CDATA[DynDNS]]></category> <category><![CDATA[Firewall]]></category> <category><![CDATA[Windows Server 2003]]></category><guid
isPermaLink="false">http://www.mcseven.me/?p=439</guid> <description><![CDATA[Vorwort Wie erst heute auf Heise Online zu lesen ist, hat der Bundesgrichtshof (BGH) bereits Ende März einen äußerst fragwürdigen Beschluß in Bezug auf die providerseitig gelagerten eMails ausgesprochen (PDF, AZ &#8220;1 StR 76/09&#8243;). Zusammengefaßt läßt sich schreiben, der BGH mißt eMails in Providerpostfächern keine relevante Bedeutung bei, der 1. Strafsenat erkennt keinen &#8220;Telekommunikationsvorgang&#8221; beim [...]]]></description> <content:encoded><![CDATA[<h1>Vorwort</h1><p>Wie erst heute auf Heise Online <a
title="BGH setzt niedrige Hürden zur E-Mail-Überwachung" href="http://www.heise.de/newsticker/BGH-setzt-niedrige-Huerden-zur-E-Mail-Ueberwachung--/meldung/137582" target="_blank">zu lesen</a> ist, hat der Bundesgrichtshof (BGH) bereits Ende März einen äußerst fragwürdigen Beschluß  in Bezug auf die providerseitig gelagerten eMails ausgesprochen (<a
title="Beschluss des BGH" href="http://juris.bundesgerichtshof.de/cgi-bin/rechtsprechung/document.py?Gericht=bgh&amp;Art=en&amp;Datum=2009-3&amp;nr=47839&amp;pos=0&amp;anz=304&amp;Blank=1.pdf">PDF</a>, AZ &#8220;1 StR 76/09&#8243;).</p><p>Zusammengefaßt läßt sich schreiben, der BGH mißt eMails in Providerpostfächern keine relevante Bedeutung bei, der 1. Strafsenat erkennt keinen &#8220;Telekommunikationsvorgang&#8221; beim Speichern der Mails in DV-Systemen. Das bedeutet, dass Strafverfolgungsbehörden nun relativ einfach an providerseitige eMails gelangen können; zwar ist nach wie vor ein Richtervorbehalt (lach!) gegeben, der Richter hat nun aber die Möglichkeit, nach §99 (Beschlagnahmung von <em>Post</em>-Sendungen) zu begründen und muss nicht mehr §98 (insbesondere Buchstabe b) oder §100 der Strafprozessordnung (StPO) heranziehen, die beide wesentlich strengere Auflagen erfordern.</p><h1>Ziel dieses Dokuments</h1><p>Nachdem es mit dem Verschlüsseln von eMails noch immer an allen Ecken und Enden hapert und Letzteres nur innerhalb von Organisationen bei entsprechend guten Administratoren und Prozessen (PKI, Zertifikatsverwaltung, etc.) einigermaßen akzeptabel funktioniert, möchte ich im Folgenden ein Systemkonzept vorstellen, mit dem auch Privatleute ihre eMails besser vor ungerechtfertigten Zugriffen schützen können.</p><p>Das Konzept ist mehrfach im Einsatz und hat sich bereits jahrelang bewährt. Ich möchte Ihnen im Folgenden die einzelnen Bestandteile erklären; detaillierte Erklärungen und Installationsanleitungen folgen, sobald ich Zeit habe. Sie sollten von Internettechniken und Betriebssystemen etwas Ahnung haben.</p><h1>Gesamtkonzept</h1><p>Die Lösung basiert auf der simplen Annahme, dass Ihre Mails bei irgendeinem Provider (auch ausländischen!) im Internet nicht mehr sicher sind. Staatliche Stellen bekommen, wie oben aufgezeigt, leicht Zugriff, und gegen Hacker-Angriffe (Phishing, Man-In-The-Middle, usw.) haben Sie noch weniger Chancen; allen Beteuerungen und Produkten (&#8220;Sicherheitspakete&#8221;) zum Trotz.</p><p>Die Lösung ist nun, die Mails bei Ihnen zuhause in Ihrer eigenen Wohnung zu speichern und einen Provider gar nicht mehr in den Genuß Ihrer Mails kommen zu lassen. Was er nicht hat, kann er nicht herausgeben. Und die Mails dann von Ihrem eigenen Rechner abzuziehen, wird einerseits gar nicht so einfach werden und kommt andererseits rechtlich einer Hausdurchsuchung gleich.</p><h1>Liste der Komponenten</h1><ol><li>DSL mit 24/7 Flatrate bei einem beliebigen Provider</li><li>Eigene Internetdomain (&#8220;www.meinname.de&#8221;), am besten bei einem persönlich bekannten Provider</li><li>Rechner, der 24/7 eingeschaltet ist (kann ein Nettop sein), &#8220;Server&#8221;</li><li>Sehr gute Firewall/Router</li><li>Registrierter Name bei DynDNS oder einem vergleichbaren Provider</li></ol><h1>Funktionsweise</h1><div
id="attachment_441" class="wp-caption alignleft" style="width: 110px"><a
href="http://www.mcseven.me/wp-content/uploads/2009/05/mailversand_herkoemmlich.png" target="_blank" rel="lightbox[439]"><img
class="size-thumbnail wp-image-441" title="Mailversand mit Providerspeicherung" src="http://www.mcseven.me/wp-content/uploads/2009/05/mailversand_herkoemmlich-100x100.png" alt="Mailversand mit Providerspeicherung" width="100" height="100" /></a><p
class="wp-caption-text">Mailsystem mit Speicherung beim Provider</p></div><p>Normalerweise würde der Provider Ihrer Domain Ihnen auch einige, z.B. 10, eMail-Postfächer zur Verfügung stellen. Wenn eine Mail für Ihre Domäne ankommt (&#8220;ich@ich.de&#8221;), so speichert der Provider die Mail zwischen und wartet darauf, dass Sie sie abholen.</p><p>Hier setzen wir an: Die Mail wird am Provider vorbeigeleitet, direkt zu Ihnen nach Hause auf Ihren heimischen Rechner. Zwar könnte der Administrator Ihres DSL die Mail unter Umständen mitlesen, aber ein Richter kann nicht mehr, wie oben, nach Postbeschlagnahmung argumentieren. Und das ist ja die Hauptsache.</p><p>Der Trick ist ganz einfach. Um die Mail direkt zu Ihnen zu leiten, muss Ihr Domain-Provider den MX-Record (Mail-Exchanger) auf Ihren DynDNS-<em>Hostnamen</em> (eben <em>nicht </em>die IP-Adresse, welche sich im Allgemeinen alle 24h Stunden ändert) setzen.</p><div
id="attachment_442" class="wp-caption alignleft" style="width: 110px"><a
href="http://www.mcseven.me/wp-content/uploads/2009/05/mailversand_eigenerserver.png" target="_blank" rel="lightbox[439]"><img
class="size-thumbnail wp-image-442" title="Mailversand mit eigener Speicherung" src="http://www.mcseven.me/wp-content/uploads/2009/05/mailversand_eigenerserver-100x100.png" alt="Mailversand mit eigener Speicherung" width="100" height="100" /></a><p
class="wp-caption-text">Mailsystem mit eigener Speicherung</p></div><p>Schreibt Ihnen nun jemand eine Mail, so löst das Mailsystem Ihre Domain auf, findet den MX-Record, der auf &#8220;ihrhost.dyndns.org&#8221; zeigt, löst die IP-Adresse auf Ihre aktuelle IP-Adresse auf und sendet Ihrem Rechner direkt die Mail. Kein Provider involviert.</p><p>Und beim Versenden? Normalerweise bekommen Sie von Ihrem Domain-Provider noch einen sogeannten &#8220;smarthost&#8221; zur Verfügung gestellt. Das ist einfach ein Mailversandrechner, an dem Sie sich mit Ihren Zugangdaten anmelden und dann beliebig Mails verschicken dürfen. Der smarthost kann im Allgemeinen verschlüsselt erreicht werden (&#8220;STARTTLS&#8221; Mailkommando) und speichert keine Mails.  Der &#8220;Versendet&#8221; Ordner befindet sich ausschließlich auf Ihrem Server zuhause.</p> ]]></content:encoded> <wfw:commentRss>http://www.mcseven.me/2009/05/email-uberwachung-jedem-das-seine/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: basic
Database Caching 79/203 queries in 0.108 seconds using disk: basic
Object Caching 786/1167 objects using disk: basic

Served from: www.mcseven.me @ 2012-02-08 04:01:26 -->
