Ethersex-Artikel
Ziel ist es einen Artikel für das Embedded Projects Journal zu schreiben. Um Mithilfe wird gebeten.
Inhaltsverzeichnis
Ethersex-Features
- universell konfigurierbar
- Free Software (GPLv3)
- Atmel AVR basierend
- IPv4, IPv6, UDP, TCP
- RFM12 Funk
- Entwicklung unter Linux
Einleitung
Ethersex beansprucht nun für sich eine der universellsten Softwareplattformen zu sein, wenn es darum geht das Steuern diverser Aufgaben im Haus, vom Treppenlicht über die Kaffemaschine bis hin zur Heizung, was eine relativ beliebte Aufgabe unter Hardwarebastlern ist, zu übernehmen. Jedoch wäre es oft wünschenswert, Daten über längere Zeit aufzuzeichnen und zu visualisieren, oder die Hardware von überall steuern zu können. Zum Beispiel ist das Anschalten der Warmwasserbereitung von der Arbeit eine sehr bequeme Sache.
'Hier ein bild mit http'
Die Lösung dieses Problems ist wohl dem Mikrocontroller ein IP Interface zu verpassen, dies baut ihn zu einem universellem (Inter-) Netzgerät aus. Ethersex ist nun also die AVR basierte Lösung, die Netzwerk und Low-Level Hardware zusammenbringt.
Kerntechnik - Der IP Router
Als erstes gab es die Etherrape Hardware von Alexander Neumann, was auch der Grundstein für Ethersex war. Der dort unterstützte Enc28j60 bietet ein 10 Mbit Ethernetinterface an und wird per SPI an den Mikrocontroller angeschlossen. Der Kern von Ethersex ist ein recht aufgebohrter uIP, der neben TCP, UDP und IPv4 auch die neuere Version des Internetprotokolls, IPv6, unterstützt. Dies gibt uns die Möglichkeit jeden Controller mit einer weltweit eindeutigen Adresse anzusprechen.
Jedoch unterstüzt Ethersex IP nicht nur über Ethernet, sondern auch über serielle Leitungen (RS485, ZBus), Funk in den ISM-Bändern (RFM12) und über USB (mit eigenem TUN Device Treiber). Um IP-Pakete über diese Wege zu transportieren, werden diese in das jeweilige Protokoll eingebettet und als ganzes übertragen. Es findet also kein Umschreiben der IP-Pakete statt. Dies mag anfänglich als riesiger Balast erscheinen, allerdings hat man so alle gut erprobten Netzwerktools, vom Sniffer bis zum universellen Netcat zur Hand und braucht nicht seine eigene Werkzeugkiste basteln. Um nun eine Brücke zu schlagen zwischen dem normalen Netzwerk und RFM12 oder ZBus, besitzt Ethersex die Möglichkeit Pakete zwischen diesen Schnittstellen hin und her zu routen. So kann man mit IPv6 selbst einem ATmega8 (8k Flash, 1k RAM) eine weltweit eindeutige IP-Adresse geben. Man verwendet also ein Ethersex, dass 2 oder mehr Schnittstellen hat (zum Beispiel Ethernet und RFM12) als Router. Legt man nun die Route für das RFM12 Netz auf das Router-Ethersex, so werden alle Packete automatisch nach RFM12 geroutet und die Antwortpackete zurück. Möchte man die Verbindung zum Ethersex noch absichern, kann man OpenVPN zum Mikrocontroller hin verwenden und hat mit ipchair ebenfalls einen Paketfilter zur Hand, der es einem erlaubt zur Kompilierzeit Paketfilterregeln anzulegen.
282 Optionen - Extrem konfigurierbar
Es gibt in der Konfiguration von Ethersex 282 verschiedene Optionen die man an- und abwählen kann. Daraus und aus der Beschränktheit der Plattform folgt, dass man das Meiste vor dem Kompilieren festlegen und konfigurieren muss. Man aktiviert einfach die Features, die man im aktuellen Fall braucht und lässt den Rest weg. Das kleinste konfigurierbare Ethersex benötigt 400 Bytes an Flashspeicher und besteht nur aus einem Timer, dem sogar jede Netzwerkfähigkeit fehlt. Das größte konfigurierbare Ethersex passt noch nicht einmal in einen ATmega128. Die Vielzahl an Optionen, die sich teilweise gegensetig ausschließen, werden über eine ncurses Oberfläche, dem sogenannten menuconfig (ja wir haben das menuconfig vom Linuxkernel geklaut) konfiguriert. Die meisten der eingebauten Features sind über das ECMD Interface erreichbar. ECMD ist ein text-basiertes Kommandointerface, das über verschiedene Frontends angesprochen werden kann (TCP, UDP, HTTP, Jabber, IRC, I2C, USART). Dadurch dass ECMD auch für HTTP zur Verfügung steht hat man leicht die Möglichkeit mit Hilfe von Javascript dynamische HTML Seiten zu erstellen, die dann den aktuellen Status visualisieren. Die HTML Seiten werden dann direkt in die Firmware eingebettet, automatisch. Eine Reihe solche dynamischer HTML Seiten stehen bereits für die meisten Features zur Verfügung.
Die Möglichkeiten in Ethersex erstrecken sich von seriellen Kommunikationsprotokollen, wie Modbus über die Ansteuerung bestimmter Webcams bis hin zu Netzwerkprotokollen wie HTTP, SNMP oder MYSQL. Eine vollständigere Liste findet sich auf der Ethersex Projektseite.
Control6 zum Erweitern
Da jede Aufgabe, die es zu bewältigen gibt, andere Anforderungen hat, gibt es mit Control6 eine Art Metasprache, mit der schnell und einfach C-Code entsteht, der neue Funktionen bietet. Der große Charme von Control6 ist die multi-threading Unterstützung und der hohe Abstraktionsgrad. Control6 ist so betrachtet nur ein M4 Makropaket, aber dennoch sehr flexibel und leistungsfähig, schließlich ersetzt es keine andere Sprache, sondern erweitert nur eine bestehende: C.
Verschiedenste Hardware
Wie bereits erwähnt, lässt sich Ethersex für verschiedene AVR Controller kompilieren (vom kleinen ATmega8 bis zum Flagschiff ATmega128). Zudem ist es durch eine Pinning-Metaschicht leicht auf neue Ethernet-Boards übertragbar. So werden neben dem Etherrape auch verschiedene Bausätze (u.a. AVR Net-IO und Radig AVR-Webmodul) und eigene Basteleien unterstützt. Eine Selbstbaulösung liegt bei ungefähr 20-25 Euro und ist damit nur eine geringe Einstiegshürde. Mit dem Firmware-Builder gibt es die Möglichkeit Ethersex auch ohne großen Aufwand - auf Fertighardware - auszuprobieren. Die Selbstbauvariante kommt mit 3-4 größeren Bauteilen und einer Hand voll Hühnerfutter aus. Das Ethersex-Projekt selbst bietet keine Hardware oder Schaltungen an, jedoch sehen die meisten Schaltungen mit dem Enc28j60 gleich aus und können von dort nachgebaut werden (Zu allen Fertiglösungen gibt es die Schaltpläne online ).
Entstandene Projekte
Mit Ethersex als Basis sind bereits einige Selbstbauprojekte entstanden. So wurde eine Heizungssteuerung, welche auch die Pumpen regelt, die drahtlose Steuerung einer Güllepumpe in einer Biogasanlage und die Ansteuerung diverser DMX-Fähiger Leuchtmittel realisiert. Das Auslesen und Visualisieren der Messwerte eines verbreiteten Blockheizkraftwerks gehört ebenso zu den Fähigkeiten wie das direkte Steuern von Funksteckdosen (mit dem RFM12 Modul).