Innovative Embedded Solutions for Home Automation by DOMOLOGIC
DOMOLOGIC, founded in 1999 as a spin-off of TU Braunschweig, specializes in home automation technologies. With over 25 years of experience, they focus on software development, hardware solutions, and consulting for embedded systems using Java on small Linux devices. Their expertise includes HMI design, device communication, and extensive support for network protocols. Located in the Braunschweig Technology Park, DOMOLOGIC aims to meet the growing demands for efficient, low-power, and compact home automation solutions.
Innovative Embedded Solutions for Home Automation by DOMOLOGIC
E N D
Presentation Transcript
auf kleinenLinux-Devices Gerrit Telkamp DOMOLOGIC Home Automation GmbH 38106 Braunschweig GERMANY
DOMOLOGIC • Gründung 1999 • „Spin-Off“ der TU Braunschweig • Seit 1995 aktiv im Bereich „Home Automation“ • Seit 2000 Mitglied der Konnex-Association • Sitz im Technologiepark Braunschweig • Z.Zt. 5 dauerhafte Mitarbeiter Java auf kleinen Linux-Devices
Unternehmensziele • Vorentwicklung: • Software-Module • Schaltungs-Konzepte • Auftragsentwicklung • Hardware • Software • Consulting Java auf kleinen Linux-Devices
Kernkompetenzen • Embedded Systems (8-32 Bit) • Embedded JAVA • Embedded Linux • HMI (Human-Machine-Interface) • frei konfigurierbar, z.B. Touch-Panel • Gerätekommunikation • Konnex PL132, EIB, LON, CAN • Ethernet, Web-basierte Dienste Java auf kleinen Linux-Devices
Referenzen • EU-Projekte: HOME-AOM, ASK-IT • Intelligentes Haus Gifhorn • Entwicklung von Soft- und Hardware für Tür-Kommunikationsanlage • Power-Line-Analyzer • Kommunikationslösungen für ANSI/EIA-709 • Grafische Benutzeroberflächen • ... Java auf kleinen Linux-Devices
Motivation • steigende Anforderungen an Embedded Systems • Integration in IP-Netze • Komfortable HMI (Human Machine Interfaces) • Hoher Kostendruck der Hardware bei Massenprodukten • Niedrige Leistungsaufnahme • Kleine Baugröße Java auf kleinen Linux-Devices
Anwendungsbeispiele • Gateways • Umfangreicher Support an Netzwerkprotokollen • diverse Bibliotheken (z.B. gsmlib) • verbreitete & gut dokumentierte API • Touch-Panels • Vielzahl an Gerätetreibern • verbreitete & gut dokumentierte API • eingeschränkte Unterstützung von einfachen GUIs Java auf kleinen Linux-Devices
JControl (I) • Lösung: Kombination • uCLinux als freies Betriebssystem: • kontinuierliche Weiterentwicklung • Quelltexte verfügbar • JAVA als objektorientierte Programmiersprache • Klassenbibliotheken stellen fertige Software-Komponenten zur Verfügung (z.B. GUI-Framework) • Garbage Collector • Plattformunabhängigkeit Java auf kleinen Linux-Devices
JControl (II) • JControlVM • skalierbar von 8 bis 32 Bit • Hier: Betriebssystem uClinux • ab 60kB Speicherbedarf • alle Peripheriekomponenten als Klassenbibliothekenlokal: I/O-Komponenten, Sensoren, Aktoren • remote: Komponenten anderer Geräte über Bussysteme • optimiertes Speichermanagement • JControl-Entwicklungsumgebung • Compiler, Projektmanagement, Simulator, Debugger Java auf kleinen Linux-Devices
JControl (III) JControl-Produkte • 60 x 42mm • Grafik-LCD mit128 x 64 Pixel • Diverse I/O Steuerleitungen • Analog-Eingänge • PWM-Ausgänge • Bus-Systeme etc. • 8-Bit Mikrocontroller-Kern • 2k Arbeitsspeicher • 64k-256k FLASH für Anwendungen • Stromaufnahme: ca. 10mA Java auf kleinen Linux-Devices
JControl (IV) • Tür-Sprechstelle • Video-Speicher • Touch-Panel • Frei konfigurierbare Benutzeroberfläche • Embedded Linux mit uClinux • Embedded JAVA mit JControl • Feld-Bus-Systeme • EIB, YR-Bus • Spezielles GUI-Design, spezielle Schriftsätze • Firmware-Update über serielle Schnittstelle • Umfangreiche Test- und Diagnose-Funktionen Java auf kleinen Linux-Devices
JControl (V) • SmartHome Terminal • Power-Line Kommunikation (PL132) • „Tür-Terminal“ für Signalisierung von Fehlerzuständen • Geräte werden beim Öffnen der Tür überprüft • Bedienung per Touch Java auf kleinen Linux-Devices
JControl (VI) • Ethernet-CAN-Gateway Java auf kleinen Linux-Devices
JControl (VII) Java auf kleinen Linux-Devices
Historie - uClinux • „Standard“-Linux setzt auf PC-Technologie auf • uClinux: Linux für MMU-lose Systeme (z.B. PALM-Devices) • uClinux = „you see Linux“ • Kenneth Albanowski und D. Jeff Dionne, 1998 • ColdFire-Port: Greg Ungerer, 1999 Java auf kleinen Linux-Devices
Plattformen für uClinux (1) • 32-Bit-Systeme ohne MMU (Memory Management Unit), z.B.: • „PALM-Size” • Motorola M68k • Motorola ColdFIRE • ARM7 • NEC V850 • Hitachi H8, SH4 • XILINX MicroBlaze • Leistung in etwa vergleichbar mit 486-66MHz Java auf kleinen Linux-Devices
Plattformen für uClinux (2) • Kompakte Hardware: ab 3-Chip-Lösung • Prozessor • RAM • ROM (FLASH) • Stromverbrauch: <1W • Speicherausstattung: • 1..16MB RAM • 0.5 ... 2MB FLASH Memory • Systemkosten: 30,00 Java auf kleinen Linux-Devices
JControl/IDE (I) • IDE für Kopplung zwischen Host und Target Java auf kleinen Linux-Devices
JControl/IDE (II) • Entwicklungsumgebung • Integrierte Entwicklungs-umgebung (IDE) • Editor • Compiler • Upload/Download • Bildbearbeitung • Schriftsatz • ... • Integrierte Simulation • Software-Entwicklung auf Geräte-Ebene, nicht aufProzessor-Ebene Java auf kleinen Linux-Devices
JControl/IDE (III) PictureEdit - Bildbearbeitung für LCDs Java auf kleinen Linux-Devices
JControl/IDE (IV) FontEdit - Schriftsatzerstellung Java auf kleinen Linux-Devices
JControl/IDE (V) MelodyEdit - Melodien Bearbeiten Java auf kleinen Linux-Devices
JControl/IDE (VI) Java auf kleinen Linux-Devices
JControl im Vergleich • JControl im Vergleich zu anderen Implementierungen: Java auf kleinen Linux-Devices
Aufbau der JControlVM • Mikrokernel: • Scheduling • Execution • Runtime-Environmentin Threads ausgelagert Java auf kleinen Linux-Devices
Komponentenbibliothek Schaltflächen: Text und Bilder: Messwert-Visualisierungen: Java auf kleinen Linux-Devices
Beispiel (I) /** * VoleButtonExample: Example using the three Vole button types */ publicclass VoleButtonExample extends Frame { public VoleButtonExample() { // create a simple button and add it to the frame Button simpleButton = new Button("Press me!", 30, 45, 65, 12); this.add(simpleButton); // create a Container with three RadioButtons and a Border around it Container c1 = new Container(); RadioButton rb1 = new RadioButton("Radio 1", 5, 8); RadioButton rb2 = new RadioButton("Radio 2", 5, 18); RadioButton rb3 = new RadioButton("Radio 3", 5, 28); // add the RadioButtons to the Container c1.add(rb1); c1.add(rb2); c1.add(rb3); // add a Border c1.add(new Border("RadioButtons", 0, 0, 60, 40)); // add the Container to the Frame this.add(c1); // create a Container with two CheckBoxes and a Border around it Container c2 = new Container(); CheckBox cb1 = new CheckBox("Check 1", 69, 10); CheckBox cb2 = new CheckBox("Check 2", 69, 23); // add the CheckBoxes to the Container c2.add(cb1); c2.add(cb2); // add a Border c2.add(new Border("CheckBoxes", 64, 0, 60, 40)); // add the second Container to the Frame this.add(c2); } /** * Instantiate and run the VoleButtonExample. */ publicstaticvoid main(String[] args) { VoleButtonExample vbe = new VoleButtonExample(); // make the Frame visible vbe.show(); } } Java auf kleinen Linux-Devices
Beispiel (II) • Hardware-Monitor • Überwachung von PC-Hardware über I²C/SMBus • Menü-Steuerung • Animierte Grafiken zur Visualisierung des Systemzustands • Implementierung mit Vole und JControl • 1 Tag Entwicklungsaufwand inkl. Validierung Java auf kleinen Linux-Devices
Fazit • Vorteile gegenüber rein C-basierten Lösungen: • Kürzere Entwicklungszeiten • Middleware-Aspekt • Alle Vorteile von JAVA enthalten (Garbage Collection, ...) • Effizienzsteigerung • Rapid-Prototyping-Entwicklungsumgebung • Echtes HW-SW-Codesign möglich • Code-Reuse durch Plattformunabhängigkeit Java auf kleinen Linux-Devices
Future Work • RAPS • XUI Java auf kleinen Linux-Devices