Download (11Mb)
Download (11Mb)
Download (11Mb)
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
FireTablet<br />
Mobiles Service Interface zu<br />
Siemens Brandmeldeanlagen<br />
Semesterarbeit FS 2011<br />
Samuel Hüppi<br />
(in Zusammenarbeit mit Daniel Bobst)<br />
IFS<br />
INSTITUTE FOR<br />
SOFTWARE
FireTablet<br />
Erklärung der Selbstständigkeit<br />
Hiermit versichere ich, die vorliegende Arbeit selbstständig verfasst und keine anderen<br />
als die angegebenen Quellen und Hilfsmittel benutzt sowie die Zitate deutlich kenntlich<br />
gemacht zu haben.<br />
Rapperswil, den 03.06.2011<br />
Samuel Hüppi<br />
Page 2 of 98
FireTablet<br />
Aufgabenstellung<br />
Moderne Brandmeldezentralen schützen Personen und Gebäude mit Hilfe modernster<br />
Technik. Hochoptimierte Rauchmelder unterscheiden zuverlässig Störgrössen von Bränden<br />
und alarmieren die Bewohner und die Feuerwehr oft bevor es überhaupt zu einem nennenswerten<br />
Schaden kommt. Siemens ist ein weltweit führender Hersteller solcher Anlagen und<br />
bietet in vielen Ländern sowohl die Produkte als auch entsprechende Serviceleistungen an.<br />
Ein wichtiger Teil der Serviceleistungen ist die periodisch Wartung installierter Anlagen<br />
um sicherzustellen, dass diese stets zuverlässig funktionieren. Im Rahmen dieser Wartung<br />
werden die Rauchmelder auf korrekte Funktion geprüft und die Installation der Anlage<br />
kontrolliert.<br />
Unser Ziel ist es immer die besten Produkte und Serviceleistungen anzubieten. Dazu gehört<br />
auch eine entsprechende Toolunterstützung für den Servicetechniker. Anhand eines portablen<br />
Gerätes mit Touchscreen, Kamera, Audiorekorder und Internetzugang (z.B. iPhone,<br />
iPad, Android Handy, etc.) sollen im Rahmen der Studie Benutzeroberflächen und<br />
Workflow-Konzepte erarbeitet werden mit denen der Service schneller und zuverlässiger<br />
erfolgen kann. Der Servicetechniker soll mit der geplanten Applikation in der Lage sein<br />
sowohl direkt mit der Brandmeldeanlage zu interagieren (aktuelle Statusinformationen,<br />
Bedienung, etc.) als auch seine Tätigkeit lückenlos zu dokumentieren (Fotos, Sprachkommentare).<br />
Nach Abschluss seiner Tätigkeit soll der Report direkt in interaktiver Form<br />
verfügbar sein.<br />
Das Ziel ist es zum Abschluss der Studie eine lauffähige Applikation zu haben mit denen<br />
die wichtigsten Aspekte in Bezug auf UI und Workflow demonstriert werden können. Die<br />
Einbindung in bestehende Infrastruktur (Brandmeldesystem, IT Landschaft) spielt eine<br />
untergeordnete Rolle und kann auch simuliert werden.<br />
Voraussetzungen:<br />
Android, ggf. iPhone/iPad Entwicklung<br />
Java, resp. Objective-C<br />
Eclipse resp. XCode<br />
Testautomation, Build-Server, etc., wie in SE Modulen gelernt<br />
Netzprotokolle (HTTP, REST, etc)<br />
Vorrang liegt bei Android (einfachere Umgebung, leichter Code auf Endgerät einspielbar)<br />
iPhone/iPad nur auf Wunsch d. Studenten.<br />
Page 3 of 98
FireTablet<br />
Abstract<br />
Siemens Brandmeldeanlagen sind komplexe Systeme, die nicht nur bei der Installation<br />
einen sehr hohen Arbeitsaufwand benötigen, sondern auch bei der Instandhaltung und<br />
bei jährlichen Revisionen viel Zeit in Anspruch nehmen. Aus diesem Grund versucht Siemens<br />
die dazu nötigen Arbeitsabläufe zu generalisieren und durch technische Hilfsmittel<br />
zu unterstützen. Eine komfortable Lösung zur Unterstützung eines Servicetechnikers bei<br />
der Anlagenrevision wäre ein mobiler Tablet-Computer mit Funkverbindung zur Brandmeldeanlage.<br />
Die Arbeit soll eine getreue Abbildung der Anlagenstruktur auf dem Tablet umfassen, sowie<br />
eine stets präsente Kommunikationsmöglichkeit mit einer Brandmeldezentrale der Anlage<br />
darstellen. Um die Zentrale über HTTP zu erreichen steht ein Gateway zur Verfügung,<br />
das den Zugang zu dem BACnet-Protokoll (Building Automation and Control Networks)<br />
basierenden Anlagennetz gewährt. Funktionen wie das Auffangen und Weiterverarbeiten<br />
von Alarmereignissen, welche durch den Gateway nicht unterstützt werden, wurden für<br />
die Arbeit zu Demonstrationszwecken simuliert.<br />
FireTablet ist eine auf Android basierende Applikation, die für das Samsung Galaxy Tab<br />
P1000 entwickelt wurde. FireTablet ermöglicht es, die Struktur einer Brandmeldeanlage<br />
über das Gateway zu laden und dazugehörige Jahresrevisionen zu verwalten. Einzelne<br />
Geräte oder ganze Meldezonen können zur Funktionsprüfung in einen Testmodus versetzt<br />
werden und von dem Techniker ausgelöste Testalarme durch FireTablet protokolliert werden.<br />
Wird an einem Gerät ein Mangel festgestellt, so kann dieser in Form von Bild, Ton<br />
und Text festgehalten werden. Tablet-unterstützt kann der Servicetechniker mit weniger<br />
Aufwand Anlagentests protokollieren und multimedial anreichern, was die Wartung von<br />
Siemens Brandmeldeanlagen sicherer, effizienter und strukturierter macht.<br />
Systemübersicht der beteiligten Geräte<br />
Page I
FireTablet<br />
Inhaltsverzeichnis<br />
Inhaltsverzeichnis<br />
1 Einführung (Autor: Samuel Hüppi) 1<br />
1.1 Ausgangslage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />
1.2 Heutiger Arbeitsablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />
1.3 Problemstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />
1.4 Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
1.5 Vorhandenes Umfeld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />
1.6 Verwendungszweck der Software . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
1.7 Artefakte der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
1.8 Aufbau der Dokumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
1.9 Erläuterung zur Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
1.10 Betreuung und Partner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
2 Technische Rahmenbedingungen 10<br />
2.1 Analyse BACnet Protokoll (Autor: Daniel Bobst) . . . . . . . . . . . . . . . 10<br />
2.1.1 Was ist BACnet? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />
2.1.2 Struktur Brandmeldeanlage . . . . . . . . . . . . . . . . . . . . . . . 10<br />
2.1.3 BACnet Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />
2.2 Analyse Gateway (Autor: Samuel Hüppi) . . . . . . . . . . . . . . . . . . . 14<br />
2.2.1 Ziel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />
2.2.2 Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
2.2.3 Aufbau Testumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
2.2.4 Möglicher Aufbau Realität . . . . . . . . . . . . . . . . . . . . . . . 15<br />
2.2.5 Installation des Gateway . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
2.2.6 Wichtige Funktionen und Werte . . . . . . . . . . . . . . . . . . . . 17<br />
2.2.7 Event Simulationsserver (Autor: Daniel Bobst) . . . . . . . . . . . . 19<br />
2.3 Android (Autor: Samuel Hüppi) . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
2.3.1 Mobile Plattform Android . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
2.3.2 Activities und Intents . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
2.3.3 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />
2.3.4 AsyncTasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />
2.3.5 Parcelable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />
3 Anforderungen 25<br />
3.1 Anforderungen Siemens (Autor: Daniel Bobst) . . . . . . . . . . . . . . . . 25<br />
3.1.1 Ideen für Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />
3.2 Anforderungen durch Servicetechniker (Autor: Daniel Bobst) . . . . . . . . 27<br />
3.2.1 Testablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />
3.3 Use Cases (Autor: Samuel Hüppi) . . . . . . . . . . . . . . . . . . . . . . . . 28<br />
3.3.1 Brief Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />
3.3.2 Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />
Page II
FireTablet<br />
Inhaltsverzeichnis<br />
3.3.3 Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
3.3.4 Ausführliche Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
4 Interface Design (Autor: Daniel Bobst) 33<br />
4.1 Erster Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />
4.1.1 Übersicht Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />
4.2 Zweiter Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />
4.2.1 Neuer Use Case: Zentrale Funktionsprüfung . . . . . . . . . . . . . . 46<br />
4.2.2 Erweiterter Use Case: Wartung abschliessen . . . . . . . . . . . . . . 46<br />
4.2.3 Dokumentgenerierung . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />
4.2.4 Aktualisierte Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />
4.2.5 Testablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />
4.2.6 Mangelerfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />
4.3 Finaler Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />
4.3.1 Anlage betrachten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />
4.3.2 Gerätezustände . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />
4.3.3 Testen von Geräten . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />
4.3.4 Mangel erfassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />
4.3.5 Implementation - Differenzen gegenüber Entwurf . . . . . . . . . . . 68<br />
5 Software Entwicklung (Autor: Samuel Hüppi) 70<br />
5.1 Design & Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />
5.1.1 Domainmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />
5.1.2 Architekturübersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . 71<br />
5.1.3 Klassendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />
5.1.4 Sequenzdiagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />
5.2 Unit Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />
5.2.1 Android Test Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />
5.2.2 Robotium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />
5.2.3 Anwendung und Beispiele . . . . . . . . . . . . . . . . . . . . . . . . 82<br />
6 Zusammenfassung (Autor: Samuel Hüppi) 86<br />
6.1 Resultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />
6.1.1 Sortiert nach Zielen . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />
6.1.2 Sortiert nach Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />
6.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />
7 Projektmanagement 89<br />
7.1 Zeitplan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />
7.1.1 Projektplan Version 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 90<br />
7.1.2 Projektplan Version 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />
7.2 Stundenübersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />
7.3 Infrastruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />
7.4 Erfahrungsbericht Samuel Hüppi . . . . . . . . . . . . . . . . . . . . . . . . 93<br />
Glossar 98<br />
Page III
FireTablet<br />
1 Einführung (Autor: Samuel Hüppi)<br />
1 Einführung<br />
Autor: Samuel Hüppi<br />
1.1 Ausgangslage<br />
Bei Siemens Brandmeldeanlagen handelt es sich um automatische Systeme, welche Brände<br />
automatisch erkennen, sowie alle nötigen Aktionen einleiten. Solche Aktionen könnten<br />
z.B. alle Lüftungen auszuschalten, Brandschutzklappen zuschliessen oder Lifte zu zu deaktivieren<br />
beinhalten. Brandmeldeanlagen sind also komplizierte Anlagen, die über ganze<br />
Gebäudekomplexe installiert und zentral verwaltet werden.<br />
Sowohl Inbetriebnahme, als auch Wartung solcher Anlagen sind aufwändige Prozesse und<br />
erfordern von den Servicetechnikern viel Konzentration und Zeit.<br />
Viele Anforderungen an solche Brandmeldesysteme werden nicht direkt von Siemens erlassen,<br />
sondern sind von den jeweiligen Staaten und Normen vorgeschrieben. Die jährliche<br />
Überprüfung sämtlicher Richtlinien muss sehr gründlich vorgenommen werden, um erstens<br />
sicher zu stellen, dass die Anlage ordnungsgemäss funktioniert, und zweitens zur Absicherung<br />
falls es zu Unfällen kommt. Der Ersteller solcher Anlagen ist somit sehr daran interessiert<br />
eine gute Dokumentation der Wartungs- und Inbetriebnahmearbeiten vorweisen zu<br />
können.<br />
Um die Probleme und den bestehenden Arbeitsprozess zu verdeutlichen wird im folgenden<br />
der Status quo genauer beschrieben.<br />
Abbildung 1.1: Hierarchische Struktur von Brandmeldeanalgen.<br />
Die Anlagen können über mehrere Gebäude verteilt sein.<br />
Page 1 of 98
FireTablet<br />
1 Einführung (Autor: Samuel Hüppi)<br />
1.2 Heutiger Arbeitsablauf<br />
Die heutige Arbeitsweise sieht zwei verschiedene Prozesse vor: Kommissionierung und Wartung<br />
einer Anlage. Die Kommisionierung ist die Inbetriebnahme einer Brandmeldeanlage,<br />
und die Wartung ist eine Kontrolle, die jedes Jahr durch einen Siemens Servicetechniker<br />
durchgeführt wird. In beiden Fällen stehen dem Servicetechniker folgende Hilfsmittel zur<br />
Verfügung:<br />
• Panel<br />
Eine Bedienschnittstelle, welche sich entweder direkt an der Zentrale oder an einer<br />
abgesetzten Bedieneinheit befindet. Ein Panel besitzt ein monochromes Display und<br />
ist mit diversen Tasten zu bedienen.<br />
Abbildung 1.2: Bedieneinheit einer FS20 Brandmeldezentrale<br />
• Prüfplücker<br />
Mit diesem Testgerät können Testalarme auf dem Brandmelder ausgelöst werden.<br />
Der spezielle Name kommt von der Art der Tätigkeit, wenn der Kontrolleur die<br />
Brandmelder, die normalerweise an der Decke hängen mit einer langen Stange prüft.<br />
Bei jedem Prüfvorgang wird der Pflücker an den Melder angedockt und löst automatisch<br />
den Test aus. Über drei Leuchtdioden wird dem Techniker angezeigt, ob der<br />
Test erfolgreich war oder nicht.<br />
Abbildung 1.3: Prüfplücker um Brandmelder auf korrekte Funktion zu testen.<br />
Page 2 of 98
FireTablet<br />
1 Einführung (Autor: Samuel Hüppi)<br />
• Checklisten<br />
Damit der Arbeitsablauf die nötige Struktur hat und Resultate richtig notiert werden,<br />
bekommt der Servicetechniker eine ganze Auswahl an Listen, die im Verlauf einer<br />
Wartung oder Kommissionierung auszufüllen sind. Mit diesen Listen werden am<br />
Schluss die Prüfdokumente erstellt, sowie Rechnungen an den Kunden geschrieben.<br />
Werden Mängel festgestellt, muss der Monteur zusätzlich zu ersetzendes Material<br />
bestellen. Das Bild zeigt eine Liste, die bei Brandmeldertests zum Einsatz kommt.<br />
Wie unschwer zu erkennen ist, reicht der Platz für mehr Informationen als ”ok” /<br />
”fehlerhaft” nicht aus.<br />
Abbildung 1.4: Altes listenbasierendes Prüfprotokoll. Quelle: [Prüfprotokoll]<br />
Bei Kommissionierung und Wartung sind folgende Arbeiten zu erledigen (Quelle: [Prüfprotokoll]):<br />
• Sichtprüfung<br />
– Dokumentation und Betriebsbuch<br />
– Kontakte und Material in der Zentrale<br />
– Verschmutzung<br />
– Mindestabstand bei Melder<br />
– Akku Beschädigung<br />
– ...<br />
• Funktionsprüfung<br />
– Meldergruppen<br />
– Steuerungen der Anlage<br />
– Meldungen<br />
• Messung<br />
– Akkuleistung<br />
Page 3 of 98
FireTablet<br />
1 Einführung (Autor: Samuel Hüppi)<br />
– Netzversorgung<br />
– Spannung auf Meldergruppe<br />
Im Unterschied zur Kommissionierung sind bei der Wartung nicht alle Brandmelder mit<br />
dem Prüfpflücker zu testen, sondern nur jeweils ein automatischer Melder pro Melderlinie.<br />
Handtaster müssen allerdings alle mit einem speziellen Schlüssel betätigt werden, damit<br />
nicht jedes mal die Scheibe eingedrückt wird, nur um einen Test durchzuführen.<br />
Bei beiden Testarten ist der Kundentext der am Panel angezeigt wird sehr wichtig. Dieser<br />
Text zeigt der Feuerwehr an, an welchem Ort ein Melder ausgelöst wurde. Darum muss<br />
mindestens bei der Komissonierung überprüft werden, ob auch der richtige Kundentext<br />
zum richtigen Alarm angezeigt wird. Auf dem Bild sieht man, wie eine Alarmmeldung bei<br />
der Zentrale eintrifft. Hierbei wird der Melder, der einen Alarm ausgelöst hat, sowie die<br />
gesamte Hierarchie der Anlage, in welcher sich der Melder befindet, angezeigt.<br />
Abbildung 1.5: Anzeige eines Alarms auf dem Panel einer FC2020 Brandmeldeanlage.<br />
1.3 Problemstellung<br />
Die Wartung und Inbetriebnahme von Brandmeldeanlagen ist ein aufwändiger Prozess<br />
und muss sicherstellen, dass wirklich alles so funktioniert wie es der Test ergeben hat. Folgende<br />
Probleme oder Verbesserungen können durch neue Methoden und Geräte in Angriff<br />
genommen werden, damit die Überprüfung von Brandmeldeanlagen auch in Zukunft auf<br />
dem aktuellen Stand der Technik abläuft:<br />
1. Alle Mängel werden in Listen auf Papier eingetragen. Die Listen müssen<br />
nach dem Test von Hand in Exceltabellen übertragen werden. Dieses System ist<br />
fehleranfällig, die Listen sind unübersichtlich, falls mehr Details eingetragen werden<br />
müssen und es entsteht unnötiger Zeitaufwand beim Übertragen der Resultate.<br />
2. Das Panel ist nicht sichtbar, wenn ein Test ausgelöst wird. Es kann nicht<br />
sofort überprüft werden, ob Testalarme, die an Brandmeldern oder Handtastern<br />
ausgelöst werden, wirklich in der Zentrale mit korrektem Kundentext eintreffen, da<br />
Page 4 of 98
FireTablet<br />
1 Einführung (Autor: Samuel Hüppi)<br />
man keine Verbindung zur Zentrale hat während man einen Testalarm auslöst. Erst<br />
wenn der Servicetechniker das Eventlog auf der Zentrale betrachtet, weiss er, ob die<br />
korrekten Sensoren mit der korrekten Standortbeschreibung ausgelöst wurden.<br />
3. Wenig Platz zur Mangelerfassung auf Papier. Mängel können auf Excellisten<br />
nur sehr einfach erfasst werden oder es ist schwierig einen Mangel zu erfassen, wenn<br />
der Sensor an schlecht zugänglichen Stellen montiert ist.<br />
4. Keine zeitgemässen Schnittstellen für die Weiterverarbeitung. Die Weiterverarbeitung<br />
von erfassten Tests ist zur Zeit sehr schwierig, da sie nicht elektronisch<br />
erfasst werden. Die Person, die einen Auftrag z.B. für eine Reparatur oder Erweiterung<br />
einer Anlage kalkuliert, kann sich kaum ein Bild der vorhandenen Lage machen.<br />
5. Unhandliches Arbeitsgerät Laptop. Der zur Zeit verfügbare Laptop, den Servicemonteure<br />
bei sich haben, ist zu wenig mobil um ihn immer mit sich zu tragen und<br />
alle Testergebnisse direkt einzutragen. Gleichzeitig entsteht ein Diebstahlproblem,<br />
wenn der Laptop bei der Zentrale stehen gelassen wird, da sich Kommissionierungen<br />
oft noch auf der Baustelle abspielen.<br />
1.4 Ziele<br />
Um Verbesserungen in die Kontrollprozesse von Brandmeldeanlagen zu bringen, möchte<br />
Siemens Building Technologies Schweiz einen computergestützten Arbeitsablauf etablieren,<br />
der auch einen international Standard bietet. Zum Einsatz soll ein Tabletcomputer<br />
kommen, welcher die Mobilität besitzt, ihn stets mit sich zu tragen, aber trotzdem eine<br />
komfortable Bedienung mit grossem Bildschirm ermöglicht. Sowohl in normalen als auch<br />
in speziellen Situationen, der Servicetechniker steht z.B. auf einer Leiter und hat nur eine<br />
Hand frei, ist eine gute Bedienung möglich. Auf dem Tablet soll eine Android Applikation<br />
laufen, die den Servicetechniker bei den Wartungsarbeiten unterstützt.<br />
Damit die Brandmeldezentrale mit dem Tablet kommunizieren kann, stellt Siemens ein<br />
Gateway zur Verfügung. Das Gateway und das Tablet sind über WLAN miteinander verbunden<br />
und kommunizieren über HTTP. Das Gateway tauscht über Ethernet mit der<br />
Brandmeldezentrale Daten aus und kommuniziert über das Gebäudeautomatisierungsprotokoll<br />
BACnet. Beim Design der Anwendung soll darauf geachtet werden die Bedienbarkeit<br />
auch in schwierigem Umfeld zu ermöglichen, indem z.B. grosse Buttons verwendet<br />
werden oder Fehler auch in Form von Voicememos gespeichert werden können.<br />
1. Zu allen Meldern oder Zonen Fehler erfassen. Dies soll in Form von Bildern,<br />
Voicememo und Text möglich sein. Die Fehlerliste soll in digitaler Form verfügbar<br />
sein, damit sie bereit ist für die weitere elektronische Verarbeitung, Archivierung oder<br />
Protokollgenerierung. Bei allen Geräten kann nachgeschaut werden, welche Fehler<br />
dafür erfasst wurden und es ist ersichtlich, in welcher Zone wie viele Fehler vorhanden<br />
sind.<br />
2. Das Tablet empfängt Testalarme der Zentrale. Das Gateway ermöglicht das<br />
Eintreffen von Testalarmen, die bei der Zentrale registriert werden. Dadurch wird<br />
es für den Servicetechniker möglich, gleich nach dem Auslösen eines Testalarms zu<br />
erfahren, ob der Kundentext korrekt ist, und ob die Brandmeldezentrale den Alarm<br />
Page 5 of 98
FireTablet<br />
1 Einführung (Autor: Samuel Hüppi)<br />
mitgeschnitten hat. Sollte ein ausgelöster Testalarm nicht in der Brandmeldezentrale<br />
eintreffen, wird automatisch ein entsprechender Fehler für das Gerät erfasst.<br />
3. Konzept ermöglicht ständige Verfügbarkeit des Tablets. Damit der Servicemonteur<br />
sein Tablet möglichst ohne Aufwand immer bei sich tragen kann, soll das<br />
Userinterface im Querformat erstellt werden, damit das Tablet an den Arm des<br />
Servicetechnikers montiert werden kann, um möglichst hohe Bewegungsfreiheit und<br />
Verfügbarkeit zu gewährleisten. Eventuell kann auch eine Halterung für das Tablet<br />
am Arm des Technikers befestigt werden.<br />
4. Der Tablet führt den Techniker durch den Test. Das Tablet unterstützt den<br />
den Servicetechniker und hilft ihm dabei, die Tests Schritt für Schritt durchzuführen.<br />
Dies wäre dann ein Ersatz für die in der heutigen Zeit eingesetzten Checklisten.<br />
1.5 Vorhandenes Umfeld<br />
• Samsung Galaxy Tab P1000, Android 2.2, API Level 8<br />
• REST BACnet Gateway 1.0<br />
Nicht alle nötigen Funktionen implementiert.<br />
• FireTablet EventSimulator Server<br />
• Brandmeldezentrale FS2020<br />
Abbildung 1.6: Architekturübersicht<br />
Page 6 of 98
FireTablet<br />
1 Einführung (Autor: Samuel Hüppi)<br />
Da das Gateway sich noch nicht bei einer Brandmeldezentrale für Events, über die es gerne<br />
informiert werden würde, registrieren kann, wird das BACnet Gateway nur verwendet<br />
um die Anlagestruktur von der Brandmeldezentrale zu laden. Events werden über den<br />
FireTablet EventSimulator Server simuliert, indem man sich mit dem Tablet beim Event-<br />
Simulator für Events von bestimmten Meldern registrieren kann. Dies hat den Nachteil,<br />
dass nicht direkt am Brandmelder mit dem Prüfpflücker Events ausgelöst werden können.<br />
1.6 Verwendungszweck der Software<br />
Die oben beschriebenen Ziele der Software sollen erreicht werden und sind für die Entwicklung<br />
der Software sehr wichtig. Allerdings muss man vor Augen haben, dass es nicht<br />
möglich ist eine Software, die in den produktiven Einsatz kommt, innerhalb von 16 Wochen<br />
mit zwei Entwicklern zu erstellen. Dazu bräucht es wahrscheinlich mehrere Entwickler<br />
und mindestens ein Jahr Entwicklungszeit, je nachdem welche Qualitätsansprüche gestellt<br />
werden.<br />
Unser Programm soll aber aufzeigen, was auf der Androidplatform möglich ist und könnte<br />
ein Grundstein sein für eine künftige Entwicklung. Weiter soll die Software auch zeigen,<br />
was Siemens Brandmeldeanlagen alles können und in welche Richtung die Entwicklung<br />
getrieben wird.<br />
Page 7 of 98
FireTablet<br />
1 Einführung (Autor: Samuel Hüppi)<br />
1.7 Artefakte der Arbeit<br />
• Analyse der UseCases.<br />
• Technischer Bericht.<br />
• Design und Erstellung der Androidapplikation FireTablet.<br />
• FireTablet EventSimulator Server<br />
1.8 Aufbau der Dokumentation<br />
Im folgenden wird der Aufbau dieser Dokumentation erklärt. Die Struktur der Dokumentation<br />
kann in vier Bereiche aufgeteilt werden, die hier kurz erläutert und kommentiert<br />
werden.<br />
• Einführung<br />
Im Bereich 1 Einführung wird eine kurze Übersicht zum Thema vermittelt und die<br />
Probleme, Ziele und Voraussetzungen werden erläutert.<br />
• Analyse<br />
In diesen Kapitel befinden sich 2 Technische Rahmenbedingungen und 3 Anforderungen.<br />
Technische Rahmenbedingungen beschäftigt sich mit dem Aufbau der eingesetzten<br />
Infrastruktur und den Erkenntnissen, welche durch die Analyse für die<br />
Software gewonnen wurden. Da physikalisch gesehen alles schon vorgegeben war,<br />
beschränkt sich die physikalische Architektur auf den Bereich Analyse. Beim Kapitel<br />
Anforderungen wird analysiert welche Anforderungen von Kundenseite an die<br />
Applikation gestellt werden. Daraus resultierten anschliessend die Use Cases, nach<br />
denen FireTablet entwickelt wurde.<br />
• Design & Architektur<br />
Nachdem die Rahmenbedingungen klar abgesteckt wurden, wird in den nächsten<br />
zwei Kapiteln 4 Interface Design und 5 Software Entwicklung nur noch auf die Architektur<br />
und das Design der FireTablet Software eingegangen. Sämtliche durch den<br />
Analysebereich abgedeckte Erkenntnisse werden als gegeben betrachtet.<br />
• Schluss<br />
Zu guter Letzt wird im Kapitel 6 Zusammenfassung noch einmal ein Blick zurück<br />
gewagt und das Resultat kritisch mit den Anforderungen verglichen. Welche Ziele<br />
konnten erreicht werden und mit welcher Qualität wurden sie erreicht? Allerdings<br />
wollen wir an dieser Stelle nicht nur zurück, sondern auch nach Vorne blicken und<br />
uns fragen, was man alles noch implementieren könnte.<br />
1.9 Erläuterung zur Arbeit<br />
Die beiden Studenten Daniel Bobst und Samuel Hüppi arbeiten gemeinsam an dieser Arbeit.<br />
Allerdings soll die Abgabe nicht gemeinsam erfolgen, sondern getrennt. Der Grund<br />
für diesen Umstand ist der unterschiedliche Kontext der Arbeiten. Daniel Bobst arbeitet<br />
im Rahmen seiner Bachelor-Arbeit(BA) an diesem Projekt mit und Samuel Hüppi absolviert<br />
seine Semester-Arbeit(SA). Dadurch entsteht ein unterschiedlicher wöchentlicher<br />
Page 8 of 98
FireTablet<br />
1 Einführung (Autor: Samuel Hüppi)<br />
Zeitaufwand für jeden Student und die Bedingungen sind nicht die gleichen, wie in folgender<br />
Tabelle zu entnehmen ist. Trotzdem wird im Folgenden von den zwei Arbeiten in<br />
Einzahl gesprochen.<br />
ECTS Punkte Stunden/Punkt Dauer Stunden/Woche<br />
SA 8 30h 14 Wochen ca. 18h<br />
BA 12 30h 16 Wochen ca. 23h<br />
Tabelle 1.1: Übersicht Arbeitsaufwand und Punkte<br />
1.10 Betreuung und Partner<br />
Die Arbeit wird von Herrn Prof. Peter Sommerlad, Partner am Institut für Software IFS an<br />
der Hochschule Rapperswil, betreut. Auf der Seite von Siemens stehen folgende Personen<br />
für Fragen und Informationen zur Verfügung:<br />
Person<br />
Martin Botzler<br />
Dirk Stockmann<br />
Volker Redwitz<br />
Philippe Götz<br />
Reinhard Bauer<br />
Bereich<br />
Architecture & Platforms<br />
Entwicklung und Projektleitung Sinteso Brandmeldeanalgen<br />
Innovation Manager Fire Safety Systems & Products<br />
Fire Safety & Security Products, Entwicklung Gateway<br />
Entwicklung und Integration BACnet<br />
Tabelle 1.2: Ansprechpersonen für Fragen betreffend der Brandmeldeanlagen<br />
von Siemens Schweiz<br />
Page 9 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
2 Technische Rahmenbedingungen<br />
2.1 Analyse BACnet Protokoll<br />
Autor: Daniel Bobst<br />
Um die vom Gateway angebotenen Informationen zu verstehen, analysieren wir in diesem<br />
Kapitel den Aufbau einer FS20 Brandmeldeanlage und welche Nachrichten durch<br />
verschiedene BACnet-Objekte verschickt und empfangen werden.<br />
2.1.1 Was ist BACnet?<br />
BACnet (Building Automation and Control Network) ist ein in der Gebäudeautomation<br />
weit verbreiteter Kommunikationsprotokoll-Standard. Es wird zur Überwachung und Kontrolle<br />
in diversen Bereichen angewendet, zum Beispiel Heizung, Lüftung, Klimaanlagen,<br />
Licht, Zugangskontrolle und Brandmeldesysteme. Der BACnet Standard definiert die Kommunikation<br />
zwischen beliebigen BACnet-kompatiblen Geräten. Als physisches Übertragungsmedium<br />
werden eine Reihe von Trägern unterstützt, unter anderem Ethernet.<br />
2.1.2 Struktur Brandmeldeanlage<br />
Eine Brandmeldeanlage wird als Domänen mit verschiedenen Wissensständen und Verantwortlichkeiten<br />
modelliert. Jede Domäne ist hierarchisch aufgebaut. Die drei Domänen<br />
sind Detection, Control und Physical. [FS20 BACnet Spec, S.15]<br />
Domäne<br />
Detection<br />
Control<br />
Physical<br />
Aufgabe<br />
Geographische und logische Struktur, Alarmauswertung<br />
Alarmierungs- und Evakuierungsausrüstung, andere Kontrollfunktionen<br />
Hardwarekomponenten, physische Struktur<br />
Tabelle 2.1: Domänen einer Siemens Brandmeldeanlage<br />
Die Detection Domain umfasst Geräte wie Rauchmelder und Handtaster. In der Control<br />
Domain befinden sich Geräte wie Alarmsirenen, Evakuierungssignalisationen, Benachrichtigungseinheiten<br />
sowie weitere Gebäudefunktionen, die in einem Brandfall aktiviert werden<br />
müssen. Durch eine Benachrichtigungseinheit wird falls nötig zum Beispiel die Feuerwehr<br />
aufgeboten. Weitere Gebäudefunktionen kann beispielsweise bedeuten, dass Brandschutztüren<br />
geschlossen, Lüftungen ausgeschaltet und Aufzüge ins Erdgeschoss gefahren<br />
werden.<br />
Page 10 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
Abbildung 2.1: Grafik der Domänen einer Siemens Brandmeldeanlage<br />
Eine Anlage (oder ”Site”) besteht aus einer oder mehreren miteinander verbundenen Zentralen<br />
(”Panels”). Jede Zentrale ist in der Physical Domain vertreten und hat Zugriff auf<br />
die Detection und Control Domains, die aus den an ihr angehängten Geräten gebildet<br />
werden.<br />
Abbildung 2.2: Logischer Aufbau einer Siemens Brandmeldeanlage.<br />
Quelle: [FS20 BACnet Spec]<br />
Betrachten wir die für uns am relevantesten Domäne, die Detection Domain, etwas genauer.<br />
Page 11 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
2.1.2.1 Detection Domain<br />
Die Detection Domain beinhaltet alle Objekte, die Alarme auslösen und auswerten können.<br />
Die Domäne kann hierarchisch weiter aufgeteilt werden in Panel, Area, Section, Zone und<br />
Channels<br />
Abbildung 2.3: Baum der Detection Domain einer Siemens Brandmeldeanlage.<br />
Quelle: [FS20 BACnet Spec]<br />
• Panel: Ein Panel entspricht einer Zentrale oder einem Terminal. Ein Terminal ist<br />
eine einfache Bedieneinheit mit einem Bildschirm und wenigen Knöpfen, mit dem<br />
eine Zentrale von einem entfernten Ort bedient werden kann.<br />
Abbildung 2.4: Ein Bedien-Terminal einer Brandmeldeanlage<br />
Page 12 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
• Area: Die Area entspricht üblicherweise einem Gebäude oder einem Gebäudeteil.<br />
Einstellungen, die auf eine Area angewendet werden, gelten auch für die untergeordneten<br />
Einheiten. So können allgemein gültige Parameter an einem einzigen Ort<br />
gesetzt werden, statt dass bei jedem Objekt der Area eine Eigenschaft geändert<br />
werden muss.<br />
• Section: Eine optionale Einheit, mit der beliebige Zonen zusammengefasst werden<br />
können. So können zum Beispiel komfortabel mehrere Zonen miteinander ein- oder<br />
ausgeschaltet werden. Eine Sektion umfasst typischerweise ein ganzes Geschoss oder<br />
ein Treppenhaus.<br />
• Zone: Typischerweise bildet ein Raum eine Zone. Eine Zone fasst die Meldungen der<br />
in ihr enthaltenen Brandmelder zusammen und analysiert sie gemäss ihreer Einstellungen,<br />
ob ein Alarm ausgelöst werden muss. Eine Zone kann in verschiedenen Modi<br />
betrieben werden: Ein, Aus, Renovation, Detektortest, Installationstest.<br />
• Channel: Repräsentiert einzelne Geräte wie automatische Melder, Handtaster oder<br />
andere Geräte als logische Kanäle. Diese logische Kanäle sind intern mit den entsprechenden<br />
physischen Kanälen verbunden. Bei automatischen Meldern ist immer<br />
auch ein logischer Kanal angehängt, der den eingebauten Signalgeber darstellt.<br />
In der Grafik sind ausserdem die Elemente Intervention und Alarm Verification sichtbar.<br />
• Intervention Verification: behandelt die Eskalation und Verzögerung von Fehlermeldungen<br />
und anderen Systemzuständen<br />
• Alarm Verification: behandelt die Eskalation und Verzögerung von Alarmen<br />
2.1.3 BACnet Objekte<br />
BACnet unterstützt eine Vielzahl von Objekten, um eine beliebige Gebäudeanlage zu<br />
modellieren. Bei der FS20 Brandmeldeanlage werden die Objekte ”Device”, ”Notification<br />
Class” sowie ”Life Safety Zone” benutzt.<br />
Page 13 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
BACnet Property Nr. BACnet Property Type<br />
Impl Default values<br />
Identifier<br />
Object Identifier 75 BACnetObjectIdentifier RO <br />
Object Name 77 CharacterString RO <br />
Object Type 79 BACnetObjectType RO NOTIFICATION-<br />
CLASS<br />
Description 28 CharacterString RO <br />
Notification Class 17 Unsigned RO <br />
Priority 86 BACnetARRAY[3] of RO [3, 3, 10]<br />
Unsigned<br />
Ack Required 1 BACnetEventTransitionBits RO TRUE, TRUE, FALSE<br />
Recipient List 102 List of BACnetDestination<br />
RW <br />
Profile Name 168 CharacterString RO 7-FI-FS20-<br />
NotificationClass-1<br />
Tabelle 2.2: BACnet Notification Class Object<br />
(RO: ReadOnly, RW: Read/Write), Quelle:[FS20 BACnet Spec]<br />
2.2 Analyse Gateway<br />
Autor: Samuel Hüppi<br />
2.2.1 Ziel<br />
Der Gateway für die Siemens FS20 stellt die Verbindung zwischen FS20 und dem normalen<br />
IP-Netz her. Dies ist nötig, weil die Kommunikation der FS20 über BACnet läuft. BACnet<br />
wäre zwar IP fähig, aber es benötigt zusätzliche Komponenten (Broadcast BACnet Management<br />
Devices) für die Kommunikation über zwei IP-Subnetze. Diese Komponenten<br />
leiten die Broadcastmeldungen der BACnet-Geräte ins nächste Subnet weiter, damit sich<br />
die BACnet-Teilnehmer gegenseitig auch in verschiedenen Subnetzen finden. Aus diesem<br />
Grund kann BACnet nicht über ein LAN verwendet werden und es wird ein Gateway zwischengeschaltet.<br />
Dieser wandelt die in HTTP ankommenden Befehle in BACnet-Befehle<br />
und umgekehrt von BACnet in HTTP um. Zusätzlich vereinfacht er die Komplexität von<br />
BACnet.<br />
Der Gateway ist eine in C geschriebene Applikation, die von Siemens entwickelt wurde und<br />
zur Verfügung gestellt wird. In diesem Abschnitt werden auf die technischen Eigenschaften,<br />
sowie die Installation des Gateways eingegangen. Während der Analyse des Gateways<br />
hat sich zusätzlich gezeigt, dass wichtige Funktionen, um sich für Events zu registrieren,<br />
noch nicht auf dem Gateway implementiert sind. Als Ersatz kommt ein Event Simulationsserver<br />
zum Einsatz. Am Ende des Abschnitts Analyse Gateway wird auf die Technik<br />
des Simulationsservers eingegangen.<br />
Page 14 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
2.2.2 Schnittstelle<br />
Verbindungen<br />
Gateway zu FS20<br />
Gateway zu Tablet<br />
Protokolle<br />
Ethernet / IP / BACnet<br />
Ethernet / IP / TCP / HTTP / XML<br />
Tabelle 2.3: Schnittstellen zwischen FS20 - Gateway - Tablet<br />
2.2.3 Aufbau Testumgebung<br />
Der Testaufbau im Labor wurde gemäss Bild erstellt. Dabei ist es wichtig zu beachten,<br />
dass zwischen dem Gateway und der FS20 keine aktiven Komponenten sind, da das IP<br />
Protokoll, auf welchem BACnet läuft, nicht kompatibel mit Routern ist. Das kommt daher,<br />
weil alle BACnet Geräte sich über Broadcast kennenlernen. Die Broadcast Pakete<br />
würden also ein Subnetz nie verlassen und zwei BACnet-Geräte in verschiedenen Subnetzen,<br />
würden sich nie kennen lernen. Die FS20 sowie der Gateway haben statische IP<br />
Adressen. Sie können so einfacher erreicht werden. Über WLAN werden dem Tablet dynamisch<br />
IP-Adressen verteilt.<br />
Abbildung 2.5: Testumgebung Verbindung zum Gateway<br />
2.2.4 Möglicher Aufbau Realität<br />
In der Realität gibt es verschiedene Möglichkeiten, wie man das Tablet mit der FS20<br />
verbinden könnte. Am sinnvollsten scheint es das Gateway beim Kunden zu platzieren<br />
und das Gateway über Internet anzusprechen. Der Vorteil dieser Lösung wäre die grosse<br />
Verfügbarkeit von GSM. Man hätte in fast jedem Gebäude Empfang und ist nicht auf ein<br />
vorhandenes WLAN angewiesen. Der Nachteil ist ein sehr langer Weg von der Zentrale<br />
zum Rechenzentrum und wieder zurück zum Tablet. Zudem könnte ein Sicherheitsproblem<br />
entstehen, wenn der Gateway vom Internet her erreichbar sein soll.<br />
2.2.5 Installation des Gateway<br />
Im folgenden wird die Installation des Gateways beschrieben damit das vorhandene System<br />
jederzeit nachgebaut werden kann.<br />
Page 15 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
BACnet Stack<br />
Als erstes muss auf dem Rechner, auf dem das Gateway laufen soll, der BACnet Stack<br />
installiert werden. Der BACnet Stack umfasst den Application Layer, Network Layer,<br />
sowie den Media Access Layer (MAC) und ermöglicht BACnet Kommunikation über ein<br />
normales Ethernet. Der BACnet Stack ist eine Open Source Library und unter Linux,<br />
Windows und anderen Betriebsystemen verfügbar. [BACnet Stack] Bei der Installation<br />
sollte beachtet werden, dass das richtige Netzwerkinterface ausgewählt wird, welches mit<br />
der FS20 kommuniziert.<br />
Abbildung 2.6: Dialog während der Installation, um die<br />
Konfiguration zu ändern. Den Eintrag Default auswählen und danach<br />
auf Edit klicken. Im Kontextmenü ”Configuration” auswählen.<br />
Abbildung 2.7: Port zur FS20 konfigurieren.<br />
Wichtig ist das richtige Netzwerkinterface, sowie IP-Adresse.<br />
Der UDP Port kann auf dem Standartwert belassen werden.<br />
Gateway<br />
Die Konfiguration des Gateways geschieht mittels der apphttp.txt Datei. Folgende Parameter<br />
müssen dabei definiert werden.<br />
Page 16 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
Parameter<br />
BBSConnectionString<br />
PortID<br />
DeviceID<br />
DeviceName<br />
WebBinding<br />
Beschreibung<br />
Der Name der Verbindung<br />
BACnet ID der FS20. Muss mit Konfiguration auf FS20<br />
übereinstimmen<br />
BACnet ID des Gateway. Muss mit Konfiguration auf FS20<br />
übereinstimmen<br />
Der Name des Gateway, unter dem er in BACnet sichtbar ist.<br />
IP-Adresse auf die der Gateway hört. Am besten die Wildcard<br />
0.0.0.0:80 verwenden.<br />
Tabelle 2.4: Tabelle mit den Parametern zum BACnet Gateway<br />
# Parameters<br />
$( BBSConnectionString )?= " \\.\ pipe \ BACstacDefault "<br />
# Used for BBS Multicore 2.1. X on the core " Default "<br />
$( PortID )?=1 # Used PortID in the previous core<br />
$( DeviceID )?=2 # BACnet Device ID of the BFC REST Gateway<br />
$( DeviceName )?= " BFC REST Gateway "<br />
$( WebBinding )?= " 127.0.0.1:80 " #<br />
VERSION END$<br />
Listing 2.1: Attribute der Konfigurationsdatei für den BACnet Gateway<br />
Das Gateway wird mittels apphttp.bat gestartet. Die Batchdatei konfiguriert den BACnet<br />
Stack damit das Gateway darauf arbeiten kann. Sobald das Gateway sich im Infinite Loop<br />
befindet, können Befehle zum Gateway abgesetzt werden.<br />
2.2.6 Wichtige Funktionen und Werte<br />
Die Funktionen sind als Http-Befehle nach folgendem Schema zu verstehen:<br />
[ Protokoll ]: //[IP - Adresse Gateway ]:[ UDP Port ]/[ PortID ]/[ Befehl ]<br />
Listing 2.2: Schema der Http-Befehle<br />
In unserem Fall bezeichnet man mit der PortID 1 die FS20, da sie im BACnet die ID 1<br />
besitzt, welche durch die Gateway-Konfigurationsdatei zugewiesen wurde.<br />
Funktion<br />
http://Address/1/.search<br />
http://Address/1/life-safety-zone,X<br />
Beschreibung<br />
Alle Elemente von Device 1 werden in einer Liste<br />
zurück geschickt.<br />
Alle Elemente der Life-Safety-Zone X werden angezeigt<br />
Tabelle 2.5: Wichtige Http-Befehle für den BACnet Gateway<br />
Page 17 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
Die Antwort des Gateways ist in XML formatiert und kann vom Empfänger geparsed werden.<br />
Alle Objekte auf dem Gateway sind in sogenannten Life-Safety-Zones gespeichert.<br />
Mit dem .search Befehl werden zuerst alle vorhandenen Life-Safety-Zones abgerufen. Danach<br />
wird jede Life-Safety-Zone einzeln geparsed und als Device weiter im Programm<br />
verwendet.<br />
<br />
< ObjectIdentifier name =" object - identifier "<br />
value ="life - safety -zone ,16 "/><br />
<br />
< Enumerated name =" object - type " value ="life - safety - zone "/><br />
< Enumerated name =" present - value " value =" quiet "/><br />
< BitString name =" status - flags "><br />
<br />
<br />
< Enumerated name =" event - state " value =" normal "/><br />
< Enumerated name =" reliability " value ="no - fault - detected "/><br />
< Boolean name ="out -of - service " value =" false "/><br />
< Enumerated name =" mode " value =" unmanned "/><br />
<br />
Listing 2.3: Ausschnitt<br />
einer XML Antwort des Gateways auf den Befehl /life-safety-zone.16<br />
Die folgende Tabelle zeigt alle verwendeten Objekte und erklärt ihre Bedeutung:<br />
Name<br />
object-identifier<br />
object-name<br />
description<br />
device-type<br />
notification-class<br />
notify-type<br />
maintenance-required<br />
isa-event-message-texts<br />
profile-name<br />
member-of<br />
zone-members<br />
Beschreibung<br />
Einmalige Identifikation jeder Life-Safety-Zone.<br />
Name der Life-Safety-Zone.<br />
Kundentext einer Zone, in welcher z.B. beschrieben wird, in<br />
welchem Raum sich ein Gerät befindet.<br />
Zonentyp. In FireTablet werden AreaElem, ZoneElem, SectionElem<br />
und SensorElemente verwendet.<br />
Meldungsklasse bei welcher sich die Zonen melden. Gleichzeitig<br />
kann sich ein Observer bei einer Meldungsklasse registrieren<br />
um die Events aus dieser Klasse zu empfangen<br />
Die Art des Events der ausgelöst werden kann.<br />
Dieser Wert wird zu ”true”wenn die Life-Safety-Zone gewartet<br />
werden sollte.<br />
Letzte geloggte Aktion die auf der Zone ausgeführt wurde.<br />
Profilname der Zone<br />
Liste von Object Identifiers die zur aktuellen Zone Elternelemente<br />
sind.<br />
Liste von Object Identifiers die Kindelemente der aktuellen<br />
Zone sind.<br />
Tabelle 2.6: Bedeutung der Attribute einer Life-Safety-Zone<br />
Page 18 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
2.2.7 Event Simulationsserver<br />
Autor: Daniel Bobst<br />
Wie bereits erwähnt fehlen auf dem Gateway gewisse Funktionen um alle Use Cases nur<br />
über das Gateway abzuwickeln. Man kann sich auf dem Gateway nicht für Events auf<br />
den Notification Classes (s. Kap. 2.1.3) registrieren. Daher ist es unmöglich über Testalarme,<br />
die bei der Zentrale eintreffen, informiert zu werden. Eine Lösung wäre gewesen, das<br />
Gateway um Funktionen zu erweitern, so dass es auf Events hört und diese dem Tablet<br />
weiterleitet. Allerdings reichte die Zeit nicht für die nötige Analyse des Quellcodes und<br />
entsprechende Implementation der neuen Funktionalität. Aus diesem Grund haben wir<br />
uns für die Simulation dieser Events entschieden.<br />
Abbildung 2.8: Event Simulationsserver in Verbindung mit dem Tablet.<br />
Dazu wurde ein simpler Server in Java realisiert, der parallel zum Siemens-Gateway läuft<br />
und stets auf Verbindungen wartet.<br />
Wird vom Benutzer der Testmodus gestartet, öffnet das Tablet (Client) öffnet einen Socket<br />
zum Server und schickt ihm einen String der Form<br />
SUB ;; < object - identifier1 >; < object - identifier2 >;...<br />
Listing 2.4: Subscription von Objekten für Eventgenerierung auf dem Server<br />
Danach öffnet der Client auf dem genannten Port einen ServerSocket, um auf ankommende<br />
Nachrichten zu hören.<br />
Der Server kann entweder in zufälligen Abständen einen der mitgegebenen Object-identifier<br />
auswählen und für diesen ein Ereignis zurückschicken oder auf einen Knopfdruck warten,<br />
um dies zu tun. Pro angemeldetem Object-identifier wird nur eine Nachricht zurückgeschickt.<br />
Die Nachricht besteht nur aus dem Object-identifier, was in unserem Prototyp ausreicht,<br />
um einen Event zu symbolisieren. Ein echtes BACnet Ereignis würde in Form einer Notification<br />
Class in XML zurückgeschickt werden. Der Server öffnet seinerseits einen Socket<br />
zum Client und schickt auf diesem die Nachricht.<br />
Empfängt der Client auf seinem ServerSocket eine Nachricht, parst er diese als Objectidentifier<br />
und löst für diesen einen Warndialog aus (s.Kap. 4.3.3).<br />
Stoppt der Benutzer den Testmodus, schliesst der Client seinen ServerSocket und sendet<br />
den String UNSUB an den Server. Empfängt dieser solch einen String, löscht er alle noch<br />
nicht gemeldeten Object-identifier und macht sich wieder bereit, um auf den nächsten<br />
Page 19 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
Subscribe-Befehl zu warten.<br />
Für ein Sequenzdiagramm siehe Abb. 5.8 im Kap. 5.1.4.2<br />
2.3 Android<br />
Autor: Samuel Hüppi<br />
Da Android als Basis für die FireTablet Applikation dient, wird in diesem Bereich kurz<br />
auf Android eingegangen. Der Schwerpunkt liegt auf ein paar ausgewählten Androidmechanismen,<br />
die über die gesamte Applikation immer wieder vorkommen und es werden<br />
häufig gebrauchte Begriffe erörtert.<br />
2.3.1 Mobile Plattform Android<br />
Abbildung 2.9: Android Maskottchen<br />
Android ist ursprünglich ein Betriebssystem für mobile Telefone. [Wikipedia Android] Im<br />
Verlauf der Zeit wurde Android aber für weiter Geräte portiert, wie zum Beispiel Tabletcomputer<br />
oder Fernseher. Android basiert auf dem Linux Kernel 2.6 und verwendet<br />
die Speicherverwaltung, Prozessverwaltung und die Netzwerkkommunikation von Linux.<br />
Gleichzeitig dient der Kernel auch als Hardwareabstraktionsschicht.<br />
Applikationen, die für Android geschrieben werden, laufen im Normalfall auf einer Virtuelle<br />
Maschine (VM) namens Dalvik. Das bringt den Vorteil, dass jedes Programm in<br />
einer eigenen Instanz dieser VM ablaufen kann, und somit eine hohe Sicherheit und Stabilität<br />
entsteht. Dies nennt man das Sandboxprinzip.[Android 2, S. 27] Die Architektur von<br />
Android ist im Bild unten dargestellt.<br />
Page 20 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
Abbildung 2.10: Aufbau von Android<br />
Die folgenden Abschnitte befassen sich mit wichtigen Mechanismen von Android.<br />
2.3.2 Activities und Intents<br />
Jede Androidapplikation besteht aus einer beliebigen Menge von Activities.<br />
[Activity Reference] Unter einer Activity versteht man in den meisten Fällen einen Bildschirm<br />
auf dem Display. Die Activity ist verantwortlich für die Darstellung der einzelnen<br />
Gui-Komponenten, aber auch für die Entgegennahme von Benutzereingaben. Aus diesem<br />
Grund hat eine Activity meistens einiges mehr an Verantwortung als reine Gui-Klassen.<br />
So muss zum Beispiel jede Activity ihren Lebenszyklus selber verwalten, wozu es aber<br />
geeignete Hookmethoden gibt. Im folgenden Bild wird der Lebenszyklus von Activities<br />
gezeigt. Am interessantesten sind die Methoden onCreate() und onPause(). Mit onCreate()<br />
wird die Activity initialisiert, da diese Methode bei jedem Start aufgerufen wird und<br />
eigentlich als Konstruktor gilt. OnPause() wird genau im umgekehrten Fall aufgerufen.<br />
Nämlich dann, wenn eine Activity in den Hintergrund tritt, sei es weil sie beendet wurde,<br />
oder weil eine neue Activity gestartet wird.<br />
Page 21 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
Abbildung 2.11: Lebenszyklus einer Activity. Quelle: [Activity Reference]<br />
Um von einer Activity zur nächsten zu kommen, werden Intents eingesetzt. Dadurch<br />
können Activity sehr lose verknüpft werden und das Betriebssystem hat immer die Kontrolle<br />
darüber, welche Activities gestartet werden. Mit einem Intent übergibt man eigentlich<br />
dem Betriebssystem den Klassennamen der Activity, die gestartet werden soll. Das<br />
Betriebssystem startet diese anschliessend. Intents bieten auch die Möglichkeit primitive<br />
Datentypen mitzuschicken, um diese zwischen Activities Daten auszutauschen. Intents<br />
werden, wie im Listing unten, erstellt und dem Betriebssystem übergeben. [Android 2, S.<br />
137]<br />
Intent faciltiyTree = new Intent (this , LoadFacilityTree . class );<br />
startActivity ( faciltiyTree );<br />
Page 22 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
Listing 2.5: Intent erstellen und abschicken<br />
2.3.3 Contexte<br />
Die Contextklasse ist eine dauerhaft präsente Klasse innerhalb des Androidframeworks.<br />
Jede Activity leitet vom Context ab, denn mit einem Context wird der Bezug der Applikation<br />
zum Androidsystem hergestellt. Folgende wichtigste Zugriffe stellt ein Context<br />
gemäss Android 2 zur Verfügung: [Android 2, S. 26]<br />
• Classloader<br />
• Dateisystem<br />
• Berechtigungen der Andwendung<br />
• Datenbanken<br />
• Anwendungseigene Resourcen<br />
• etc.<br />
Der ApplicationContext ist eine Spezialform von Context. Dieser Context wird einmalig<br />
pro Applikation von Android gestartet und während der ganzen Laufzeit des Programms<br />
am Leben gehalten. Dadurch können in den ApplicationContext Dinge gespeichert werden,<br />
die man während der gesamten Laufzeit immer wieder benötigt. Es ist möglich einen<br />
eigenen ApplicationContext zu erstellen, indem von der Application Klasse abgeleitet wird<br />
und diese Klasse im Android Manifest vermerkt wird. [Android Manifest Reference] Das<br />
Android Manifest ist im Rootverzeichnis jedes Androidprojekts und beinhaltet alle nötigen<br />
Informationen, die eine Applikation benötigt. Dazu gehören Berechtigungen für Systemresourcen<br />
sowie die Definitionen aller Activities.<br />
<br />
< application android : icon =" @drawable / icon "<br />
android : label =" @string / app_name "<br />
android : name =". domain . FireTabletApplication "><br />
< activity android : name =". gui . VoiceMemo " ><br />
< activity android : name =". gui . Camera " ><br />
Listing 2.6: Ausschnitt aus dem Android Manifest. Der ApplicationContext<br />
wird bestimmt.<br />
Page 23 of 98
FireTablet<br />
2 Technische Rahmenbedingungen<br />
2.3.4 AsyncTasks<br />
AsyncTask ist eine Hilfsklasse des Androidframeworks, die das Zusammenspiel von Activities<br />
und Threads vereinfachen. [Painless Threading] Man verwendet Threads um das<br />
Userinterface ansprechbar zu halten, während länger dauernde Aktionen in Bearbeitung<br />
sind. Dies können Datenbankzugriffe oder Abfragen über das Netzwerk sein. Würden diese<br />
Aktionen im gleichen Thread ablaufen wie das Gui, würde dieses in der Zeit, in der z.B<br />
eine Netzwerkabfrage stattfindet, nicht reagieren. Darum lagert man grössere Aktionen in<br />
eigene Threads aus, die dann parallel zum Userinterface ablaufen.<br />
AsyncTasks kapseln den eben beschriebenen Vorgang, indem sie verschiedene Hilfsmethoden<br />
zur Verfügung stellen. Die Wichtigste ist doInBackground(). Diese Methode wird<br />
überschrieben mit dem Code, der in einem separaten Thread ausgeführt werden soll. Alle<br />
anderen Funktionen werden wieder im gleichen Thread der Activity ausgeführt. Die<br />
Methoden sind:<br />
• onCancelled()<br />
• onPostExecute(Result result)<br />
• onPreExecute()<br />
• onProgressUpdate(Progress... values)<br />
Je nach Methode wird der Code vor, nach oder zwischen der doInBackground() Methode<br />
ausgeführt.<br />
Beim Erstellen eines AsyncTask können drei Generics bestimmt werden. Ein Übergabeparameter<br />
für die doInBackground(), ein Parameter für onProgressUpdate() und einer für<br />
onPostExecute(). So kann ein AsyncTask optimal an die aktuellen Bedürfnisse angepasst<br />
werden und ist somit sehr generisch.<br />
AsyncTasks werden zum Beispiel dafür verwendet, um Fortschrittsanzeigen zu aktualisieren.<br />
Dabei läuft ein Prozess ab, der immer an einer gewissen Stelle die Methode onProgressUpdate()<br />
aufruft, die dann im Gui-Thread die Fortschrittsanzeige aktualisiert.<br />
2.3.5 Parcelable<br />
Objekte, die Parcelable implementieren, können mit Intents verschickt werden. Diese Objekte<br />
werden von Android serialisiert und müssen dazu ein paar Funktionen besitzen, die<br />
beim Serialisieren und Deserialisieren helfen. [Parcelable Reference]<br />
Page 24 of 98
FireTablet<br />
3 Anforderungen<br />
3 Anforderungen<br />
3.1 Anforderungen Siemens<br />
Autor: Daniel Bobst<br />
Nach dem Entwurf der Brief Use Cases (Kap. 3.3.1, S. 28) fand das erste Treffen mit Siemens<br />
statt. Anwesend war V.Redwitz in Vertretung von D.Stockmann. Bei diesem Treffen<br />
ging es darum, den bestehenden Arbeitsprozess einer Anlagenrevision zu analysieren sowie<br />
den Umfang der Arbeit festzulegen.<br />
Um den Prozess einer Anlagenrevision zu beobachten, konnten wir über den Hausdienst<br />
der HSR einen Termin mit dem für die HSR zuständigen Techniker abmachen. Siehe dazu<br />
Kap. 3.2.<br />
Die Applikation soll den Servicetechniker nicht nur beim Meldertest unterstützen, sondern<br />
den gesamten Arbeitsprozess beim Kunden vor Ort vereinfachen. Einerseits heisst<br />
das, ihm das sofortige Ablesen von Zentraleninformationen und das Absetzen von Befehlen<br />
an die Zentrale zu ermöglichen. Andererseits soll auch die elektronische Protokollierung<br />
ermöglicht werden, so dass weniger Schreibarbeit anfällt und die Weiterverarbeitung der<br />
Testergebnisse effizienter gestaltet wird. Ausserdem bearbeitet der Servicetechniker vor<br />
und nach dem Brandmeldertest Checklisten, welche beim Kunden auf Papier vorhanden<br />
sind. [Checkliste] Diese zu elektronisieren und auf dem Tablet bearbeitbar zu machen wäre<br />
ebenfalls eine Erleichterung für den Techniker. Diese Checklisten sollen nicht nur dazu dienen,<br />
die geleistete Arbeit zu dokumentieren, sondern auch als Gedankenstütze dienen, ob<br />
alle Arbeitsschritte erledigt wurden.<br />
Zur Hardware gab uns Hr. Redwitz neben Dokumentation auch noch einige interessante<br />
Fakten mit. Geräte wie Detektoren, Meldetaster und Signalhörner werden heutzutage<br />
mittels Ringleitungen an eine Zentrale angeschlossen. Das bedeutet, dass bei einem Unterbruch<br />
der Leitung immer noch alle Geräte mit der Zentrale verbunden sind. Allerdings<br />
untersucht die von uns betrachtete Anlagenwartung nicht solche Leitungsunterbrüche. Dies<br />
ist unnötig, da ein Unterbruch sofort von der Zentrale bemerkt wird. An einer Ringleitung<br />
können verschiedene Gerätetypen in zufälliger Reihenfolge angehängt sein, das heisst es<br />
liegt an uns, jene Geräte aus der Anlagenhierarchie herauszufiltern, welche wir benötigen.<br />
Pro Ring können maximal 128 Geräte angeschlossen werden.<br />
Die Testauslösung von Meldern mittels Prüfpflücker wurde früher mittels einem Prüfgas<br />
durchgeführt. Die moderneren Prüfpflücker verbinden sich mittels Induktion mit dem zu<br />
prüfenden Gerät und instruieren es, einen Testalarm abzusetzen. Somit wird nicht die<br />
eigentliche Funktion des Sensors im Brandmelder getestet, sondern die Verbindung zur<br />
Zentrale und deren korrekte Konfiguration. Die Überprüfung des Sensors auf Funktionstüchtigkeit<br />
wird periodisch vom Melder selbst erledigt. Ist der Verschmutzungsgrad<br />
des Sensors zu hoch, um zuverlässig messen zu können, wird dies der Zentrale berichtet.<br />
Page 25 of 98
FireTablet<br />
3 Anforderungen<br />
Was die Protokollierung von Mängeln betrifft, so war ein weiterer wichtiger Hinweis, den<br />
Servicetechniker nicht darauf zu beschränken, einen Mangel an einem Melder zu erfassen.<br />
Es kann auch sein, dass dem Techniker zum Beispiel ein Defekt an einem Signalhorn<br />
auffällt und er dies entsprechend festhalten möchte. Ein weiteres Beispiel wäre, dass der<br />
vorgeschriebene Mindestabstand von jeglichem Material zum Brandmelder nicht eingehalten<br />
wird.<br />
3.1.1 Ideen für Features<br />
Hr. Redwitz brachte ebenfalls weitere Ideen mit, welche Features die Applikation anbieten<br />
könnte.<br />
In keiner bestimmten Reihenfolge waren das:<br />
• Tablet am Arm des Servicetechnikers befestigen<br />
• CAD Grundriss der Anlage auf Tablet laden und Geräte darauf selektierbar machen<br />
• Dimensionen eines Tests kreisförmig als sog. Spider-Chart(Abb. 3.1) darstellen<br />
• Tabletbedienung über Sprachsteuerung und Bluetooth-Headset<br />
• Stundenerfassung für den Servicetechniker integrieren<br />
• Anzeige der Zentrale 1:1 abbilden, um dem Techniker einen vertrauten Anblick zu<br />
bieten<br />
Abbildung 3.1: Beispiel eines Spider-Charts. [Quelle]<br />
Wir entschieden, dass solche Features zwar interessant wären, aber nicht implementiert<br />
werden, bevor die Grundfunktionalität gewährleistet ist. Eines der Hauptziele der Arbeit<br />
soll sein, die Bedienung der Zentrale über ein mobiles Gerät zu ermöglichen. Bevor dies<br />
nicht gelöst ist, wird auf verschönernde Features wie Spider-Charts und Gebäudegrundrisse<br />
verzichtet. Allerdings wären solche Features für eine aufbauende Folgearbeit ideal, um zum<br />
Beispiel die Benutzeroberfläche auszubauen oder eine alternative Form der Bedienung zu<br />
bieten.<br />
Page 26 of 98
FireTablet<br />
3 Anforderungen<br />
3.2 Anforderungen durch Servicetechniker<br />
Autor: Daniel Bobst<br />
Zufällig fand gerade zum Zeitpunkt unserer Analysephase die jährliche Revision der Brandmeldeanlage<br />
an der Hochschule für Technik Rapperswil (HSR) statt. Somit konnten wir<br />
einige Stunden lang einem Servicetechniker über die Schulter schauen und offene Fragen<br />
klären. Zwar handelte es sich bei der betrachteten Anlage nicht um eine FS20, vom Testablauf<br />
her ist sie allerdings vergleichbar.<br />
Die Brandmeldeanlage der HSR besteht aus je einer Zentrale pro Gebäude. Für jede Zentrale<br />
existiert ein separates Logbuch, welches bei der Zentrale selbst untergebracht ist.<br />
Für jede Zentrale werden Testergebnisse und festgestellte Mängel im Logbuch eingetragen<br />
sowie auf dem Laptop des Servicetechnikers protokolliert. So bleibt eine Version des<br />
Protokolls beim Kunden und eine wird durch den Techniker an seine Siemens-Vertretung<br />
zurückgeschickt.<br />
Die Haupterkenntnis des Treffens ist, dass in einer jährlichen Revision nicht etwa alle<br />
Brandmelder getestet werden, sondern nur ein Melder pro Ringleitung. Ausserdem stellte<br />
sich heraus, dass verschiedene Aspekte einer Brandmeldeanlage mit unterschiedlicher Periodizität<br />
getestet werden. Dies ist auch dokumentiert in [FS20 Maintenance, S.135].<br />
Ebenfalls ist auf der Checkliste links von jedem Eintrag der Revisionszyklus in Jahren<br />
angegeben.[Checkliste]<br />
3.2.1 Testablauf<br />
Der Servicetechniker folgt im Prinzip der Checkliste in [Checkliste]. Zuerst wird Administratives<br />
erledigt: Sind die Angaben im Logbuch wie verantwortliche Personen oder<br />
Feuerwehrpläne noch korrekt? Im nächsten Schritt wird die Funktionstüchtigkeit der Anlage<br />
unter verschiedenen Stromversorgungssituationen getestet. Jede Anlage verfügt über<br />
Batterien, welche die Anlage für eine gewisse Zeit mit Notstrom versorgen können müssen.<br />
Nach den Messungen wird der physische Zustand der Zentrale geprüft. Es wird auch untersucht,<br />
ob die Melderlinien Kurzschlüsse und Unterbrüche korrekt mit einer Störungsanzeige<br />
melden.<br />
Danach wird pro Melderlinie ein automatischer Brandmelder ausgelöst , um das korrekte<br />
Funktionieren des Ereignisspeichers auf der Zentrale zu testen. Im Gegensatz dazu werden<br />
alle Handtaster der Zentrale überprüft. Die Testergebnisse werden im Prüfprotokoll<br />
festgehalten.[Prüfprotokoll]<br />
Da der Techniker den Laptop bei der Zentrale lässt, während er die Brandmelder testen<br />
geht, muss er bei seiner Rückkehr das Prüfprotokoll anhand der Ereignisanzeige an der<br />
Zentrale nachträglich ausfüllen. Dabei muss er sich auf sein Erinnerungsvermögen verlassen,<br />
ob das Ereignisprotokoll mit den getätigten Auslösungen übereinstimmt.<br />
Page 27 of 98
FireTablet<br />
3 Anforderungen<br />
Abbildung 3.2: Ausschnitt aus der Checkliste für Revision FS20.<br />
Nach dem Test der Brandmelder werden unter anderem die Alarmeinstellungen überprüft<br />
und ob im Ernstfall ein Alarm korrekt weitergeleitet würde. Nach einigen abschliessenden<br />
Einstellungen an der Zentrale wird diese wieder in den Normalzustand versetzt.<br />
3.3 Use Cases<br />
Autor: Samuel Hüppi<br />
Im Kapitel Use Cases wollen wir die Entstehung der verschiedenen Einsatzmöglichkeiten<br />
und Anwendungsbereiche untersuchen. In einem ersten Teil sind die ”Brief Use Cases” zu<br />
sehen. Diese Use Cases sind kurz nach Projektstart entstanden und basieren auf geringem<br />
Wissen über die technischen Details. Im weiteren Projektverlauf konnte die Sichtweise<br />
auf die Probleme durch viele Gespräche und Spezifikationen anschliessend verdeutlicht<br />
werden, was wiederum in angepassten Use Cases resultierte. Am Schluss des Abschnitts<br />
werden drei zentrale Use Cases detailliert beschrieben.<br />
3.3.1 Brief Use Cases<br />
• Priorität 1: Routinetest durchführen<br />
– Tablet mit Brandmeldezentrale verbinden<br />
– Brandmeldertest durchführen<br />
∗ Test erfolgreich: Zeit, MelderID und Raum in Protokoll eintragen.<br />
Page 28 of 98
FireTablet<br />
3 Anforderungen<br />
∗ Test nicht erfolgreich: Fehler protokollieren, möglicherweise mit VoiceMemo,<br />
Bild, Text kommentieren<br />
– Externe Alarme konfigurieren damit keine Alarmierung erfolgt (Alarm an Feuerwehr<br />
etc.)<br />
– Angebundene Aktionen unterdrücken (Brandschutztüren, Rauchabzugklappen<br />
etc.)<br />
– Testdokumente generieren und ausdrucken (Logeintrag, Übersicht Wartungsbedarf?)<br />
• Priorität 2: Commissioning<br />
– Überprüfen ob Location und ID von Gerät korrekt erfasst ist (Mapping von<br />
Geräten zu Location anzeigen)<br />
– Commissioning Dokumente generieren und ausdrucken.<br />
• Priorität 3: Zusätzliche Funktionen und Ideen<br />
– Brandmeldezentrale mittels Tablet konfigurieren<br />
– Leuchtdiode am Tablet als Taschenlampe für Monteur benutzen<br />
– Barcodeerkennung/Texterkennung um weitere Informationen zu einem Gerät<br />
abzurufen<br />
3.3.2 Use Cases<br />
Das Design und die Ideen der Use Cases basieren auf verschiedenen Einflüssen. Als erstes<br />
konnten wir die schriftlichen Informationen von Siemens auswerten, um zu verstehen, was<br />
genau mit dem Programm erreicht werden soll. Weiter haben Meetings mit Servicetechnikern<br />
und Ingenieuren von Siemens weitere wertvolle Informationen für das Design der<br />
Use Cases geliefert.<br />
Bei den Use Cases spielen folgende Akteure eine Rolle:<br />
• Der Benutzer der Anwendung. Meistens ein Servicetechniker von Siemens, der gerne<br />
Informationen über die Anlage hätte oder einen Routinetest durchführen will.<br />
• Das Tablet mit der FireTablet Applikation.<br />
• Das Gateway, welches das Tablet mit der Brandmeldezentrale (BMZ) verbindet und<br />
HTTP-Befehle in BACnet-Befehle umwandelt.<br />
Abbildung 3.3: Beteiligte Akteure der FireTablet Applikation<br />
Page 29 of 98
FireTablet<br />
3 Anforderungen<br />
3.3.3 Use Cases<br />
Use Case<br />
Beschreibung<br />
01 Mit Gateway verbinden Tablet mit dem Gateway verbinden. Dazu wird die IP-<br />
Adresse, sowie einige Angaben, zur Anlage beim Benutzer<br />
abgefragt. Die Angaben werden anschliessend<br />
abgerufen und auf dem Tablet persistiert.<br />
02 Sensortest durchführen Es können Zonen, Sektionen, Areale oder Panels in den<br />
Sensortestmodus versetzt werden. Dabei hört das Tablet<br />
auf Testalarme der in diesen Regionen vorhandenen<br />
Sensoren.<br />
03 Anlage betrachten Gesamte Struktur der Anlage wird in Form von Listen<br />
dargestellt. Es kann durch den Objektbaum der Anlage<br />
navigieren und nach Geräten gesucht werden.<br />
04 Zentrale Funktionsprüfung Funktionen auf der Zentrale gemäss einer Checkliste<br />
prüfen. Falls Mängel fest gestellt werden können diese<br />
erfasst werden.<br />
05 Mangel erfassen Mängel an einem Gerät können in Form von Text, Bild<br />
und Ton erfasst werden.<br />
06 Prüfdokumente generieren Nachdem die gesamte Anlage kontrolliert wurde, kann<br />
das Prüfdokument generiert werden. Das Dokument<br />
enthält alle vorhandenen Geräte mit den Mängel, welche<br />
dafür erfasst wurden. Der Zeitpunkt, wann der<br />
Tests durchgeführt wurde ist klar ersichtlich.<br />
07 Bild aufnehmen Ein Teil des UseCase ”05 Mangel erfassen”. Einem<br />
Mangel können Bilder, die mit der Kamera des Tablets<br />
erstellt wurden, hinzugefügt werden.<br />
08 Voicememo aufnehmen Ein Teil des UseCase ”05 Mangel erfassen”. Einem<br />
Mangel können Voicememos die mit dem Mikrophon<br />
des Tablets erstellt wurden, hinzugefügt werden.<br />
09 Licht an Falls der Servicetechniker in einem Schacht, einer Hohldecke<br />
oder sonst einer dunklen Umgebung testen muss,<br />
kann er die eingebaute LED zur Hilfe nehmen.<br />
3.3.4 Ausführliche Use Cases<br />
Tabelle 3.1: Auflistung aller geplanten Use Cases<br />
3.3.4.1 Use Case 01: Mit dem Gateway verbinden<br />
Ziel<br />
Nach dem Starten der Applikation soll das Tablet mit dem Gateway verbunden werden,<br />
damit alle Daten zur Anlage geladen werden können.<br />
Ausgangslage<br />
• Der User befindet sich nach dem Start der Applikation im Hauptmenü.<br />
Page 30 of 98
FireTablet<br />
3 Anforderungen<br />
• Es ist noch keine Verbindung mit der BMZ hergestellt worden.<br />
Vorgehen<br />
1. Der Benutzer gibt im Hauptmenü an, dass er ein neuer Zentralentest erstellen will.<br />
2. Ein Dialog zur Eingabe von Anlagename, IP-Adresse und weiteren technischen Details<br />
erscheint. Der Benutzer gibt die IP-Adresse und den Namen ein und bestätigt<br />
den Dialog. Das Tablet versucht, mit dem Gateway zu verbinden.<br />
• Das Tablet konnte sich erfolgreich mit dem Gateway verbinden. Die gesammte<br />
Anlagenstruktur wird vom Gateway abgerufen. Anschliessend befindet der<br />
Benutzer in der Zentralenübersicht.<br />
• Es konnte keine Verbindung hergestellt werden. Dem Benutzer wird dies via<br />
Toast mitgeteilt.<br />
3.3.4.2 Use Case 02: Sensortest durchführen<br />
Ziel<br />
Der User möchte testen ob alle Geräte einer Zone, Sektion oder einem Areal richtig funktionieren.<br />
Bisher wurde nach den durchgeführten Tests das Eventlog am Anlagenterminal mit<br />
den Tests verglichen und der Testerfolg protokolliert. Das Ziel ist, dem Servicetechniker sofortige<br />
Rückmeldung über den Test zu geben, sowie die Protokollierung zu automatisieren,<br />
was beides zu einem effizienteren Testablauf beiträgt.<br />
Ausgangslage<br />
• Das Tablet ist mit dem Gateway verbunden, die Anlagenstruktur wurde von der<br />
BMZ geladen.<br />
• Der Benutzer befindet sich auf dem Übersichtsbildschirm einer Zentrale und möchte<br />
eine Zone testen.<br />
Vorgehen<br />
1. Der Benutzer navigiert mit der Zentralenübersicht zum gewünschten Objekt (Panel<br />
Areal, Section, Zone).<br />
2. Als Nächstes startet er einen Testlauf für das Objekt, welches gerade angezeigt wird.<br />
3. Das Tablet beginnt auf ankommende Testmeldungen zu warten.<br />
• Das Tablet besitzt eine Verbindung zum Gateway und wird von diesem informiert,<br />
welcher Sensor Alarm ausgelöst hat. Dem Benutzer wird eine Meldung<br />
mit der ID des Melders und seinem Standort angezeigt. Sind die angezeigten<br />
Informationen korrekt, kann der Techniker dies bestätigen. Falls nicht kann ein<br />
Mangel erfasst werden.<br />
• Das Tablet ist nicht mit dem Gateway verbunden. Es kommen keine Events<br />
vom Gateway an. Der Testmodus wird sofort wieder unterbrochen.<br />
Page 31 of 98
FireTablet<br />
3 Anforderungen<br />
4. Sobald der Servicetechniker auf allen Sensoren, die er in den Testmodus versetzt hat<br />
ein Testalarm auslöst, beendet er auf dem Tablet den Testmodus. Dabei wird für alle<br />
Sensoren, die keinen Testalarm empfangen haben, ein Mangel erstellt und es werden<br />
alle Geräte als getestet markiert.<br />
3.3.4.3 Use Case 03: Anlage betrachten<br />
Ziel<br />
Der Benutzer möchte wissen wie die Hierarchie der Brandmeldeanlage aussieht, oder zu<br />
einem bestimmten Objekt navigieren um den Sensortest zu starten. Sein Ziel könnte aber<br />
auch sein abzuklären, ob auf einem Gerät oder Objekt Mängel erfasst sind.<br />
Ausgangslage<br />
• Das Tablet ist mit dem Gateway verbunden. Die Anlagenstruktur wurde vom Gateway<br />
geladen.<br />
• Der Benutzer befindet sich auf dem Bildschirm ”Übersicht Zentrale”.<br />
Vorgehen<br />
1. Auf diesem Bildschirm wird das Rootelement der Anlage dargestellt. Dies ist normalerweise<br />
das Panelobjekt.<br />
2. Jeder Bildschirm besitzt ein Tab, auf welchem die Kindelemente des jeweiligen Objekts<br />
angezeigt werden. Wenn der Benutzer ein Kindelement auswählt, wechselt die<br />
Sicht zu diesem Objekt.<br />
3. Mit diesem System kann durch die Zentrale navigiert werden, mit dem Backbutton<br />
geht es wieder ein Level höher.<br />
Page 32 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
4 Interface Design<br />
Autor: Daniel Bobst<br />
Im Kapitel 4.1 wird der erste Entwurf der Benutzeroberfläche beschrieben. Dieser Entwurf<br />
wurde aufgrund der Brief Use Cases erstellt. Das bedeutet auch, dass diese Variante der<br />
Oberfläche vor dem ersten Meeting mit Siemens und daher auch vor der Finalisierung der<br />
Use Cases entworfen wurde. Nach dem Meeting wurde der Entwurf entsprechend der Anforderungen<br />
von Siemens überarbeitet. Ausserdem wurde die Menuführung vereinfacht,<br />
wie im Kapitel 4.2 zu sehen ist. Schliesslich erkannten wir während der Implementation,<br />
dass der vorgesehene Arbeitsfluss noch weiter verschlankt werden konnte, besonders<br />
die Integration des Testmodus. Dies ergab den finalen Entwurf und die implementierte<br />
Oberfläche, wie sie im Kapitel 4.3 zu sehen ist.<br />
4.1 Erster Entwurf<br />
Beim ersten Entwurf des GUI wurden sämtliche Bildschirme im Hochformat konzeptioniert.<br />
Für einzelne Bildschirme wurden zur Erforschung des Konzepts alternative Layouts<br />
im Querformat skizziert (vgl. als Beispiel Abb. 4.1 mit Abb. 4.5), aber hauptsächlich gingen<br />
wir davon aus, dass das Tablet in einer Hand gehalten wird. Ausserdem deuten die<br />
Orientierung der Logos und der Knöpfe an der Vorderseite des Gehäuses darauf hin, dass<br />
das Hochformat als Standardausrichtung angesehen wird. Daraus ergab sich die Entscheidung,<br />
das Layout vorerst auf dieses Format auszulegen.<br />
Abbildung 4.1: Alternatives Layout des Bildschirms ”BMZ Übersicht”<br />
Page 33 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
4.1.1 Übersicht Navigation<br />
Abbildung 4.2: Navigationsbaum des ersten GUI-Entwurfs<br />
Page 34 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Im obenstehenden Diagramm sind alle Bildschirme und Dialoge sowie die möglichen Navigationspfade<br />
zwischen ihnen dargestellt.<br />
Die Bildschirme können entsprechend der durch die Brief Use Cases (Kap.3.3) definierten<br />
Tätigkeiten gruppiert werden:<br />
Use Case<br />
Tablet verbinden<br />
Anlage betrachten<br />
Melderlinientest<br />
durchführen<br />
Mangel erfassen<br />
Wartung abschliessen<br />
Abbildende Bildschirme und Dialoge<br />
Hauptmenu, BMZ laden, BMZ erfassen/bearbeiten<br />
BMZ Übersicht, Testübersicht, Gerätedetail<br />
Testview, Alarm konfigurieren, Alarm Popup, Popup Test<br />
löschen<br />
Mangel erfassen/bearbeiten, Kontextmenu Mangel, Voice<br />
Recorder, Kamera<br />
Testübersicht<br />
Tabelle 4.1: Relation der Use Cases zu den entworfenen Bildschirmen<br />
Im Folgenden werden die zusammengehörenden Bildschirme, ihre Funktion und wie sie<br />
zusammenhängen erläutert.<br />
4.1.1.1 Tablet verbinden<br />
Beim Start der Anwendung wird das<br />
Hauptmenu (Abbildung 4.3) angezeigt.<br />
Dessen Funktion besteht hauptsächlich<br />
darin, den aktuellen Benutzer zu wechseln,<br />
bevor mit dem Laden einer Anlage fortgefahren<br />
wird. Der Benutzername wird zur<br />
Protokollierung und Generierung der Enddokumente<br />
benutzt.<br />
Über den Knopf ”BMZ laden” erreicht der<br />
Benutzer den Bildschirm mit dem selben<br />
Titel (Abbildung 4.4). Auf diesem wird eine<br />
Liste aller auf dem Gerät gespeicherten<br />
BMZs angezeigt. Zu jeder Anlage sollen<br />
Angaben wie ihr Name, eine Kontaktperson<br />
und die Verbindungsinformationen<br />
für den lokalen Gateway zur Anlage erfasst<br />
sein. Ein Suchfeld soll bei einer grossen<br />
Menge an erfassten Anlagen helfen, die<br />
richtige zu finden. Wählt der Benutzer eine<br />
BMZ aus der Liste aus, verbindet sich<br />
Abbildung 4.3: Hauptmenu<br />
das Tablet mit dem konfigurierten Gateway,<br />
lädt die Struktur sowie neue Daten<br />
zur Anlage herunter und startet den Bildschirm ”BMZ Übersicht” (Abbildung 4.5).Sollte<br />
die gewünschte Anlage noch nicht erfasst sein, kann dies mittels des Knopfs ”Neue BMZ<br />
erstellen” erledigt werden.<br />
Page 35 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Der dazugehörende Bildschirm ”BMZ erfassen/bearbeiten” wurde nicht skizziert. Allerdings<br />
würden darin Informationen zur BMZ erfasst, die von allgemeinem Interesse oder<br />
für die Funktion des Tablets notwendig sind. Einerseits wären das Angaben wie der Anlagenname,<br />
Eigentümer und Kontaktinformationen, andererseits technische Angaben wie<br />
IP-Adresse und Port des Gateways, um mit der Zentrale zu verbinden.<br />
Abbildung 4.4: BMZ laden<br />
Page 36 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
4.1.1.2 Anlage betrachten<br />
Auf dem Bildschirm ”BMZ Übersicht”<br />
(Abbildung 4.5) werden die wichtigsten<br />
Informationen zur Anlage angezeigt. Im<br />
oberen Teil stehen Informationen wie der<br />
Standort, die Kontaktperson und die IP-<br />
Adresse des Gateways. Der Knopf ”Mehr<br />
Details” führt zu einem Dialog, der als<br />
zusätzlicher Platz für ähnliche Informationen<br />
zur Anlage dient.<br />
Der grösste Teil des Bildschirms wird von<br />
einer Liste eingenommen, die eine Historie<br />
der zuletzt durchgeführten Revisionen<br />
darstellt. Neben dem Prüfungsdatum und<br />
dem Namen des durchführenden Technikers<br />
wird der Status des Tests angezeigt.<br />
Ein Test kann abgeschlossen (grün), abgeschlossen<br />
mit behobenen Mängeln (ebenfalls<br />
grün), mit offenen Mängeln abgeschlossen<br />
(gelb) oder nicht abgeschlossen<br />
(rot) sein. Ein Klick auf einen<br />
Test auf der Liste führt zum Bildschirm<br />
”Testübersicht” (Abbildung 4.6) des entsprechenden<br />
Tests. Ein Klick auf den<br />
Knopf ”Neuer Test” startet einen neuen<br />
Test und wechselt zum selben Bildschirm.<br />
Der Knopf ”BMZ bearbeiten” führt zu<br />
einem ähnlichen Dialog wie der Knopf<br />
Abbildung 4.5: BMZ Übersicht ”Neue BMZ erstellen” auf dem Bildschirm<br />
”Hauptmenu”. Darin können die zur Anlage<br />
erfassten Daten mutiert werden.<br />
Man beachte die Titelleiste in diesem Bildschirm. Eine Idee war, den Zustand der Verbindung<br />
zum Gateway mittels der Titelleiste auf jedem Bildschirm sichtbar zu machen und<br />
den Benutzer auf irgend eine Art zu warnen, sollte die Verbindung unterbrochen werden.<br />
Page 37 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.6: Testübersicht<br />
Der Bildschirm ”Testübersicht” (Abbildung 4.6) stellt den Start- und Endpunkt einer Wartung<br />
dar. Neben Angaben wie dem Namen der Anlage, dem Startdatum der Wartung und<br />
dem durchführenden Servicetechniker wird zusammenfassend eine Liste mit allen beim<br />
Testen von Geräten gefundenen Mängeln angezeigt sowie ein Fortschrittsbalken, welcher<br />
Prozentsatz der Melder bereits getestet wurde. Durch Klick auf einen der Listeneinträge<br />
werden die Details zu jenem Mangel aufgeführt (s.Kap. 4.1.1.5)<br />
Mit dem Knopf ”Test fortsetzen” wird das Tablet in den Testmodus versetzt. Dabei wird<br />
der Bildschirm ”Testview” (s.Kap. 4.1.1.4 Abbildung 4.9) aufgerufen und das Tablet beginnt,<br />
auf vom Gateway kommende Ereignisse zu horchen.<br />
Wird ein Test beendet oder unterbrochen, kehrt der Benutzer zu diesem Bildschirm zurück.<br />
Zu den Knöpfen ”Protokoll PDF generieren” bzw. ”Mängelliste PDF generieren” siehe<br />
Kap. 4.1.1.3.<br />
Page 38 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.7: Detailansicht eines Geräts<br />
Der Bildschirm ”Gerätedetails” (Abbildung 4.7) kann zwar nur aus einem laufenden Test<br />
heraus betrachtet werden, gehört aber logisch gesehen zu diesem Use Case.<br />
Neben Informationen zum Gerät wie Id, Standort und Meldertyp ist vermerkt, ob das<br />
Gerät im Laufe der aktiven Wartung bereits getestet wurde und falls ja, zu welchem<br />
Zeitpunkt. Ein Grossteil des Bildschirms wird von einer Liste belegt, die alle zu diesem<br />
Gerät während dieser Wartung erfassten Mängel auflistet. Ein Listeneintrag beinhaltet<br />
einen Auszug der Mangelbeschreibung, das Erfassungsdatum sowie Icons, ob zum Mangel<br />
Voicememos oder Fotos aufgenommen wurden. Durch Klicken auf einen Eintrag in der<br />
Liste wird ein Kontextmenu mit möglichen Handlungen geöffnet (s.Abb. 4.8). Am unteren<br />
Rand des Bildschirms kann über den Knopf ”Test löschen” gewählt werden, ob dieser<br />
Testeintrag gelöscht werden soll, als ob das Gerät noch nicht getestet wurde. Dies kann<br />
nützlich sein, falls zum Beispiel im Testmodus (s.Kap. 4.1.1.4) eine Ereignismeldung falsch<br />
quittiert wurde. Zur Sicherheit erscheint ein Bestätigungsdialog. Wird bei diesem ”Ja”<br />
gewählt, wird der Testeintrag gelöscht und der Techniker gelangt zurück zum Bildschirm<br />
”Testview” (Abb. 4.9). Wählt der Techniker ”Nein”, bleibt die Anwendung im Bildschirm<br />
”Gerätedetails”.<br />
Page 39 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.8: Kontextmenu bei<br />
der Auswahl eines Mangels im Bildschirm ”Gerätedetails” (Abbildung 4.7)<br />
Nach der Auswahl eines Mangels im Bildschirm ”Gerätedetails” öffnet sich ein Kontextmenu<br />
mit weiteren Optionen. Es können die Details zum gewählten Mangel angezeigt werden,<br />
eine Voicememo erfasst oder ein Foto aufgenommen werden. Soll eine VoiceMemo erfasst<br />
werden, startet ein Tonaufnahmeprogramm. Ebenso wird das im Tablet eingebaute Kameraprogramm<br />
gestartet, falls ein Foto geschossen werden soll. Wird der Punkt ”Details<br />
öffnen” gewählt, gelangt der Benutzer zur Detailansicht des gewählten Mangels (s.Kap.<br />
4.1.1.5).<br />
4.1.1.3 Wartung abschliessen<br />
Ist die Wartung abgeschlossen, können vom Bildschirm ”Testübersicht” aus (Abbildung<br />
4.6) mittels der Knöpfe ”Protokoll PDF generieren” und ”Mängelliste PDF generieren” die<br />
entsprechenden Dokumente erzeugt werden. Diese werden dann auf dem Tablet gespeichert<br />
und können beliebig weiterverarbeitet werden.<br />
Page 40 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
4.1.1.4 Melderlinientest durchführen<br />
Abbildung 4.9: Testansicht<br />
Bevor ein Testlauf gestartet wird, muss der Benutzer auswählen, welche Geräte in den<br />
Testmodus versetzt werden sollen. Dazu drückt er den Knopf ”Externe Alarme konfigurieren”.<br />
Es wird ein Dialog mit allen Areas, Sektionen und Zonen angezeigt, von denen<br />
der Benutzer beliebig viele auswählen kann. Nach Bestätigung des Dialogs werden die ausgewählten<br />
Objekte auf der Zentrale in den Modus ”Detector test” versetzt. (Bem.: Zum<br />
Zeitpunkt dieses Entwurfs wurde davon ausgegangen, dass es möglich ist, die an der Zentrale<br />
angeschlossenen Geräte entsprechend ihrer physischen Melderlinienringe, an denen<br />
sie angeschlossen sind, zusammenzufassen. Wie sich in der Analyse herausstellte, werden<br />
die Melderringe in der Detection Domain (s. Kap. 2.1.2) und somit in der Anlagenstruktur<br />
auf der Zentrale nicht abgebildet.<br />
Nachdem der Benutzer die zu testenden Geräte ausgewählt hat, verbindet sich das Tablet<br />
mit dem Gateway und wartet auf Ereignisse. Im unteren Teil des Bildschirms ist eine Liste<br />
der zuletzt in diesem Testdurchlauf getesteten Geräte zu sehen. Bei jedem Listeneintrag<br />
ist vermerkt, wann das Gerät getestet wurde und was das Testergebnis war. Wurde beim<br />
Auslösen des Melders ein korrekter Testalarm vermerkt, wird der Status ”OK” (grün)<br />
angezeigt. Trat ein Fehler irgend einer Form auf, wurde ein Mangel erfasst und der Melder<br />
Page 41 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
bekommt den Status ”FAIL” (rot).<br />
Abbildung 4.10: Popup bei einem eintreffenden Alarmereignis<br />
Wird von der Zentrale für eines der sich im Testmodus befindenden Geräte ein Alarmereignis<br />
verschickt, erscheint ein Popup mit Informationen zum Alarm (s. Abb. 4.10). Im<br />
Popup ist ersichtlich, welcher Melder laut Zentrale ausgelöst hat. Entspricht dies dem Melder,<br />
der vom Benutzer mittels Prüfpflücker ausgelöst wurde, bestätigt der Benutzer den<br />
Alarm als ”Korrekt”. Im Bildschirm ”Testview” wird der Melder als ”OK” protokolliert.<br />
Wird der falsche Melder angezeigt, kann sogleich ein neuer Mangel erfasst werden. Siehe<br />
dazu Kap. 4.1.1.5.<br />
Wurde mittels Prüfpflücker ein Testalarm ausgelöst, der nach einer gewissen Zeit offensichtlich<br />
nicht von der Zentrale bemerkt wurde, kann der Benutzer vom Bildschirm ”Testview”<br />
aus mittels des entsprechenden Knopfs einen Mangel erfassen.<br />
Möchte der Benutzer einen laufenden Test beenden, kann er über den Knopf ”Externe Alarme<br />
konfigurieren” die unter Test stehenden Geräte zurück in den Normalzustand versetzen.<br />
Nach Drücken des Knopfs ”Zurück” werden nach einem Bestätigungsdialog die Ergebnisse<br />
des Tests gespeichert und der Benutzer gerät zurück zum Bildschirm ”Testübersicht”<br />
(Abb. 4.6). Falls beim Betätigen des ”Zurück”-Knopfs der Testmodus noch aktiv ist, werden<br />
die entsprechenden Geräte in den Normalzustand versetzt und das Tablet meldet sich<br />
bei der Zentrale ab.<br />
Page 42 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
4.1.1.5 Mangel erfassen<br />
Abbildung 4.11: Detailansicht eines Mangels<br />
Wie in den vorherigen Kapiteln ersichtlich ist, kann aus dem Bildschirm ”Testview” (Abb.<br />
4.9) heraus ein neuer Mangel zu einem Gerät erfasst werden. Ebenso kann im Falle eines<br />
fehlerhaften Alarmereignisses ein neuer Mangel erstellt werden (Abb. 4.10). Soll ein bestehender<br />
Mangel bearbeitet werden, ist dies über den Bildschirm ”Gerätedetails” möglich<br />
(Abb. 4.7). In jedem Fall gelangt der Benutzer nach dem Neuerfassen oder Bearbeiten<br />
eines Mangels mittels des Knopfs ”Speichern” zurück zum Bildschirm ”Gerätedetails”,<br />
wo er noch einmal die getätigten Eingaben überprüfen und dann zurück zum Bildschirm<br />
”Testview” fortfahren kann.<br />
Wie in der Abbildung 4.11 zu sehen ist, zeigt der Bildschirm neben dem Erfassungsdatum<br />
alle vom Benutzer erfasste Informationen an. Im Textfeld im oberen Teil des Bildschirms<br />
kann mittels Bildschirmtastatur eine Beschreibung des Mangels eingegeben werden. In den<br />
Listen darunter werden erfasste Voicememos bzw. aufgenommene Fotos aufgelistet. Durch<br />
einen Klick auf einen Listeneintrag kann dieser abgespielt bzw. angezeigt werden.<br />
Page 43 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
4.2 Zweiter Entwurf<br />
Nach der Formulierung des ersten Entwurfs anhand der Brief Use Cases (Kap. 3.3.1) wurden<br />
die Anforderungen an die Anwendung in Meetings mit unserem Betreuer sowie Fachverantwortlichen<br />
von Siemens präzisiert. Daraus ergaben sich eine Reihe von Änderungen<br />
am Entwurf der Oberfläche sowie an der Featureliste. In diesem Abschnitt werden die<br />
neuen Anforderungen dargelegt sowie die daraus resultierenden Designänderungen dokumentiert.<br />
Abbildung 4.12: Navigationsbaum des zweiten GUI-Entwurfs<br />
Im Vergleich zur Abb. 4.2 (S. 34) wurden an einigen Stellen zusätzliche Features eingefügt.<br />
Andere wurden weggelassen, wiederum andere verschoben.<br />
Page 44 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Grundsätzlich wurde von Siemens die Idee aufgeworfen, dass das Tablet im Querformat<br />
benutzt wird. Eine Anwendungsmöglichkeit wäre, das Tablet am Unterarm zu befestigen<br />
und so beide Hände freizuhalten, eine andere, das Tablet an der Stange des Prüfpflückers<br />
zu befestigen. Auf jeden Fall wäre bei dieser Anwendungsart ein Quer- praktischer als<br />
Hochformat. Ausserdem wäre Platz für grössere Knöpfe und mehr Zusatzinformationen<br />
auf dem Bildschirm, ohne dass die sichtbare Grösse von angezeigten Listen wesentlich beeinträchtigt<br />
wird. Daher entschieden wir uns, ab dem zweiten Entwurf exklusiv im Querformat<br />
zu arbeiten.<br />
Beim ersten Entwurf wurde davon ausgegangen, dass Zentralen als höchstes abzubildendes<br />
Element verwendet werden. Zentralen können separat erfasst und geprüft werden. Dies<br />
entspricht dem bisherigen Konzept der jährlichen Wartung, die für jede Zentrale getrennt<br />
protokolliert wird, wie in [Checkliste] ersichtlich ist. In dieser Entwurfsiteration wurde<br />
die Modellierung der Anlage eingeführt. Dank einem zusätzlichen Bildschirm (Abb. 4.13)<br />
werden Zentralen gruppiert, wie es der realen Situation entspricht.<br />
Die erste Neuerung, die sogleich beim Betrachten des obigen Diagramms auffällt, ist,<br />
dass im Hauptmenu keine Benutzer mehr unterschieden werden. Die einzige Funktion,<br />
bei der aus Sicht der Applikation der Benutzer entscheidend ist, ist beim Export der<br />
Prüfdokumente, um den durchführenden Techniker zu vermerken. Dies ist einfacher zu<br />
lösen, indem beim Dokumentexport der Benutzer nach seiner Personalnummer o.Ä. gefragt<br />
wird.<br />
Statt erst im Bildschirm ”BMZ laden” (Kap. 4.1, Abb. 4.4) die Möglichkeit zu geben, eine<br />
neue Anlage zu erfassen, werden beide Funktionen (Neue Anlage laden & Gespeicherte<br />
Anlage laden) bereits im Hauptmenu angeboten.<br />
• Wird ”Neue Anlage” gewählt, erscheint ein Dialogfeld, in dem Verbindungsparameter<br />
für den Gateway eingegeben werden können. Beim anschliessenden Laden der<br />
Anlagenstruktur werden die eingegebenen Parameter mitgespeichert.<br />
• Soll eine gespeicherte Anlage geladen werden, erscheint eine Liste mit allen auf dem<br />
Gerät gespeicherten jährlichen Wartungen aller Anlagen. Das heisst, wurde eine Anlage<br />
mehrmals mit diesem Tablet geprüft, erscheint für jede Wartung ein datierter<br />
Eintrag in der Liste. Das bedeutet, dass der Benutzer nach der Auswahl einer Anlageninstanz<br />
aus der Liste sich bereits in einem bestimmten Test der Anlage befindet.<br />
Alle Angaben im darauf angezeigten Bildschirm ”Anlage Details” (Abb. 4.13) sowie<br />
allen folgenden Bildschirmen beziehen sich auf die Struktur und den Zustand der<br />
Anlage zum Zeitpunkt jenes Tests.<br />
Der Vorteil dieser Abbildung ist, dass der Bildschirm ”BMZ Übersicht” (Kap. 4.1,<br />
Abb. 4.5) des ersten Entwurfs überflüssig wurde. Statt dass die verschiedenen Tests<br />
auf der Ebene der Zentralen verwaltet werden, wird der gesamte Anlagenzustand für<br />
jede Jahreswartung separat festgehalten. Das ist auch sinnvoll, weil zwar wie oben<br />
erwähnt jede Zentrale isoliert getestet wird, aber bei der Revision doch alle Zentralen<br />
einer Anlage geprüft werden. Als Nebeneffekt werden so auch Änderungen an der<br />
Anlage wie das Hinzufügen von Brandmeldern festgehalten.<br />
Page 45 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.13: Anlage Details<br />
4.2.1 Neuer Use Case: Zentrale Funktionsprüfung<br />
Ein weiteres von Siemens vorgeschlagenes Feature ist, den Servicetechniker nicht nur beim<br />
Testen der Brandmelder, sondern bei der gesamten Revision zu unterstützen. (s. Kap. 3)<br />
Das bedeutet, dass nicht nur das Prüfdokument für Brandmeldertests abgebildet werden<br />
soll, sondern auch Checklisten und Dokumente zur Zentralenprüfung wie [Checkliste]<br />
In der Funktionsprüfung sind Aufgaben enthalten wie die Kontrolle der Batteriespannung,<br />
der Alarmeinstellungen, etc.<br />
4.2.2 Erweiterter Use Case: Wartung abschliessen<br />
Da wir uns im Bildschirm ”Anlage Details” (Abb. 4.13) bereits im Abbild einer jährlichen<br />
Wartung befinden, macht es auch Sinn, diesen als Endpunkt einer Wartung zu benutzen.<br />
Nachdem der Benutzer alle gewünschten Meldertests durchgeführt und allfällige Mängel<br />
dokumentiert hat, klickt er auf den Knopf ”Wartung abschliessen”. Darauf wird ihm zur<br />
Erinnerung eine Checkliste angezeigt, die alle nötigen Schritte auflistet, um die Zentrale<br />
wieder vollständig in den Normalzustand zu versetzen. Erst nachdem alle Schritte abgehakt<br />
worden sind, lässt sich der Test endgültig abschliessen und die Prüfdokumente können<br />
mittels des Knopfs ”Dokumente generieren” erstellt werden.<br />
4.2.3 Dokumentgenerierung<br />
Nachdem der Benutzer die abschliessende Checkliste durchgegangen ist, kann er vom Bildschirm<br />
”Anlage Details” aus den Knopf ”Dokumente generieren” betätigen. Die Dokumente<br />
belegen analog zu ihren Papiervorlagen das Datum der Revision, Informationen zur Anlage,<br />
den durchführenden Servicetechniker, welche Melder getestet wurden, wo Mängel auftraten<br />
sowie die Ergebnisse der Zentralen-Funktionsprüfung. [Checkliste], [Prüfprotokoll]<br />
Der Benutzer hat die Wahl, die Prüfdokumente für eine einzelne Zentrale oder für die<br />
komplette Anlage zu generieren. Der Export könnte in Form eines Pdf-Formulars geschehen<br />
oder in einem einfach weiterverarbeitbaren Format wie Comma Separated Value (csv).<br />
Page 46 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Ein mögliches Feature für eine Fortsetzungsarbeit wäre, das Dokument nach der Generierung<br />
per Email oder FTP-Upload zu versenden anstatt es lokal zu speichern. So könnte<br />
das Ergebnis der Revision sofort weiterverarbeitet werden.<br />
4.2.4 Aktualisierte Views<br />
Die Aufteilung der Bildschirme orientiert sich an der physischen Hierarchie der Geräte.<br />
Für Anlagen, Zentralen und Geräte gibt es separate Bildschirme. Die Zentralenansicht<br />
wurde oben bereits beschrieben (Kap. 4.2). Die Geräteansicht ist funktional identisch mit<br />
der in Kap. 4.1.1.2 beschriebenen und wird hier nicht noch einmal erläutert.<br />
Die wichtigste Änderung im Use Case ”Anlage betrachten” ist jedoch, dass der Bildschirm<br />
”Gerätedetails” nicht nur nach der Erfassung eines Mangels oder über die Testview, d.h.<br />
während der Testmodus aktiv ist, aufgerufen werden kann, sondern jederzeit.<br />
Abbildung 4.14: Zentrale Details<br />
Page 47 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.15: Mangel Tab in Zentrale Details<br />
Beim Entwurf des Zentralenbildschirms (Abb. 4.14) wurde davon ausgegangen, dass die<br />
an der Zentrale angehängten Geräte am besten nach Ringlinien getrennt in verschiedenen<br />
Laschen angezeigt werden. Von BACnet spezifizierte Einteilungen wie Area, Section<br />
und Zone seien irrelevant. Wie sich herausstellen wird (s. dazu Kap. 4.3) verhält es sich<br />
genau anders herum. Als Ausweichmöglichkeit, falls sich Ringe nicht so einfach abbilden<br />
lassen, wurde angedacht, die nächsthöhere Hierarchiestufe über den einzelnen Meldern als<br />
Sortierkriterium zu verwenden, analog dazu, wie physische Melder durch die Zuteilung zu<br />
Ringen gruppiert werden.<br />
In den Laschen für die verschiedenen Ringe werden alle Melder mit ihrem Teststatus<br />
angezeigt. Neben diesen gibt es eine einzelne Lasche für die auf dieser Zentrale erfassten<br />
Mängel (Abb. 4.15). Ansonsten ist der Bildschirm mit drei Knöpfen ausgestattet.<br />
Mangel erfassen Eröffnet einen neuen Mangel für diese Zentrale.<br />
Zentrale testen Führt den Use Case ”Zentrale Funktionsprüfung” aus (s.a. Kap. 4.2.1).<br />
Ringtest starten Versetzt alle Geräte in der gerade aktiven Ringlasche in den Testmodus<br />
und wechselt zum Bildschirm ”Testview”, um auf Ereignisse vom Gateway zu warten.<br />
4.2.5 Testablauf<br />
Beim Entwurf der Testprozedur wurde davon ausgegangen, dass die Zentrale ringweise<br />
in den Testmodus versetzt werden kann. Nachdem auf dem Bildschirm ”Zentrale Details”<br />
(Abb. 4.14) der Benutzer den Knopf ”Ringtest starten” gedrückt hat, werden die Melder in<br />
der aktuell angezeigten Lasche in den Testmodus gesetzt und zum Bildschirm ”Testview”<br />
gewechselt.<br />
Beim ersten Entwurf der Navigation (Abb. 4.2, S. 34) wurde angenommen, dass ein Ereignis<br />
früher oder später in der Testview eintritt. Es wurde nicht berücksichtigt was passiert,<br />
falls der Benutzer einen Testalarm mittels Prüfpflücker auslöst, dieser aber nicht beim<br />
Tablet ankommt. Gründe für eine Zeitüberschreitung gibt es diverse, wesentlich ist aber<br />
Page 48 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
für diesen Fall, dass ein erwartetes Ereignis nicht angezeigt wird.<br />
Wie in Abb. 4.12 zu sehen ist, wurde das Testverfahren wie folgt erweitert:<br />
• Falls ein ausgelöstes Ereignis auch auf dem Tablet eintrifft und ein Alarmpopup<br />
(Abb. 4.10) ausgelöst wird: Überprüfe Korrektheit der Angaben<br />
– Angaben sind korrekt: Alarm durch Drücken von ”OK” bestätigen. Der Ringtest<br />
wird mittels Bildschirm ”Testview” fortgesetzt<br />
– Angaben nicht korrekt: Zu diesem Gerät einen Mangel erfassen. Es wird in die<br />
Ansicht ”Mangel Details” gewechselt. Nach dem Abschluss der Mangelerfassung<br />
kehrt der Benutzer auf den Bildschirm ”Testview” zurück<br />
• Kommt es zu einem Timeout der Verbindung mit dem Gateway:<br />
– Id des geprüften Geräts manuell eingeben. Es erscheint das gewohnte Alarmpopup<br />
für dieses Gerät.<br />
– Mittels Prüfpflücker testen, ob der Melder eine Verbindung zur Zentrale hat<br />
∗ Verbindung ok: Bestätige manuelles Ereignis durch Drücken von ”OK”.<br />
∗ Verbindung nicht ok: Zu diesem Gerät einen Mangel erfassen.<br />
Da im Fall eines Netzwerkausfalls auf die Informationen des Prüfpflückers zurückgegriffen<br />
werden muss, wäre der nächste logische Schritt für ein Folgeprodukt, den Prüfpflücker mit<br />
z.B. Bluetooth zu versehen, so dass das Tablet direkt auf dessen Informationen zugreifen<br />
kann.<br />
4.2.6 Mangelerfassung<br />
Beim ersten Entwurf wurde davon ausgegangen, dass sich der Umfang der Applikation auf<br />
das Durchführen der Brandmeldertests beschränkt. Daher wurde das GUI und auch dessen<br />
Navigation darauf ausgelegt, dass ein Mangel nur für einen Brandmelder erfasst wird.<br />
Da jedoch laut Siemens wie in Kap. 4.2.1 erwähnt der Servicetechniker bei der gesamten<br />
Revision unterstützt werden soll, muss es auch möglich sein, bei anderen Elementen wie<br />
z.B. einer Zentrale oder sogar einer Anlage einen Mangel zu erfassen. Da die Zentrale<br />
und direkt an sie angehängte Geräte wie Signalhörner oder Batterien im Rahmen des Use<br />
Cases ”Zentrale Funktionsprüfung” auf ihre Funktionstüchtigkeit überprüft wird, kann es<br />
sein, dass ein Mangel für die Zentrale zu erfassen ist.<br />
Page 49 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.16: Mangel Details<br />
VoiceMemos und Fotos werden nicht mehr über ein umständliches Kontextmenu aufgenommen,<br />
sondern direkt durch Drücken der Knöpfe ”Memo aufnehmen” bzw. ”Bild aufnehmen”<br />
auf dem Bildschirm ”Mangel Details” (Abb. 4.16). Der rechte Teil des Bildschirms<br />
besteht aus drei Laschen, in denen die Textbeschreibung des Mangels angezeigt<br />
und verändert werden kann sowie die erfassten Voice Memos und Fotos in Listen dargestellt<br />
werden (s. Abb. 4.17). Durch Klick auf ein Listenelement wird es abgespielt bzw.<br />
angezeigt, durch einen langen Klick wird es nach einem Bestätigungsdialog gelöscht.<br />
Abbildung 4.17: Mangel Details - Voice Memo Lasche<br />
Es kann sein, dass der Brandmelder selbst funktionstüchtig ist, aber ein Problem in der<br />
unmittelbaren Nähe des Melders behoben werden muss. Beispielsweise könnte der vorgeschriebene<br />
Mindestabstand zum Brandmelder durch abgestelltes Material verletzt sein.<br />
[VdS Richtlinien, Kap.9.3, S.61] In solch einem Fall erfasst der Servicetechniker einen Man-<br />
Page 50 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
gel mit entsprechender Textbeschreibung für den betroffenen Brandmelder.<br />
Als erleichterndes Feature wäre denkbar, dass je nach betroffenem Gerät ein unterschiedlicher<br />
Standardtext für die Beschreibung des Mangels verwendet werden könnte. Beispielsweise<br />
würde sich ein Text je für Geräte-, Zentralen- und Anlagenmangel anbieten.<br />
Page 51 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Page 52 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
4.3 Finaler Entwurf<br />
Page 53 of 98<br />
Abbildung 4.18: Flussdiagramm der GUI-Navigation
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Betrachten wir zuerst die grössten Änderungen im Bereich der Applikation, der die Anzeige<br />
der Zentrale sowie das Testen von Melderlinien betrifft. Der ”obere” Teil der Navigation<br />
vom Hauptmenu aus ist prinzipiell der selbe wie im zweiten Entwurf. Wo sich aus Zeitgründen<br />
Unterschiede ergeben haben ist in der Umsetzung der entworfenen Features (siehe<br />
Kap. 4.3.5).<br />
Während der Implementation erkannten wir, dass besonders die Umsetzung des Testmodus<br />
sowie die Darstellung der Zentrale noch effizienter gestaltet werden kann. Im Vergleich<br />
zum zweiten Entwurf wird die Struktur in einem einzigen Bildschirm namens ”FacilityInfo”<br />
dargestellt, und nicht in getrennten Ansichten wie in Kap. 4.2.4 beschrieben. Wird von<br />
einem Gerät zu einem untergeordneten Gerät navigiert, so werden die Angaben auf dem<br />
selben Bildschirm ersetzt. Der Vorteil ist, dass unabhängig vom Gerätetyp ein einheitliches<br />
Bildschirmlayout verwendet wird.<br />
Die zweite grosse Änderung ist, dass der Testmodus nicht einen separaten Bildschirm<br />
benötigt, sondern ebenfalls in die Ansicht ”FacilityInfo” integriert wird. Dies vereinfacht<br />
die Visualisierung von Gerätezuständen enorm. Es ist keine separate Liste in einer ”Testview”<br />
mehr nötig, und es ist, sowohl in- als auch ausserhalb des Testmodus, direkt in der<br />
”FacilityInfo” ersichtlich, ob ein Gerät schon getestet wurde und falls ja, ob der Test erfolgreich<br />
war oder ob Mängel vorliegen. Die Konzentration auf einen einzigen Bildschirm,<br />
wenn auch mit mehreren Laschen, macht die Applikation einheitlicher, übersichtlicher und<br />
einfacher bedienbar.<br />
Eine Wartung wird nun wieder, wie im ersten Entwurf (Kap. 4.1), von der ”Testübersicht”<br />
und nicht der ”Anlagenübersicht” heraus abgeschlossen. Die Testübersicht stellt alle Testreihen<br />
zu einer gewissen Zentrale einer Anlage dar. Das heisst allerdings auch, dass im Gegensatz<br />
zum zweiten Entwurf (Kap. 4.2) nicht mehr alle Prüfdokumente einer Anlage auf<br />
einmal generiert werden können.<br />
Page 54 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
4.3.1 Anlage betrachten<br />
Abbildung 4.19: Hauptbildschirm mit untergeordneten Geräten<br />
Wie in der Abbildung 4.19 zu sehen ist, werden Geräte nicht mehr nach Melderlinienring<br />
getrennt angezeigt. Stattdessen betrachtet der Benutzer eines der Geräte in der Zentralenstruktur<br />
und bekommt in der Lasche ”Elemente” dessen direkt untergeordnete Elemente<br />
angezeigt. Das oberste Element in der Hierarchie ist entsprechend der BACnet Spezifikation<br />
der Detection Domain (Kap. 2.1.2, S. 10) die Zentrale (”Panel”) selbst. Gruppierungen<br />
der physischen Geräte in Areale, Sektionen und Zonen werden analog zu den Geräten<br />
behandelt. Wie auf dem Bild zu sehen ist, handelt es sich beim Objekt ”Erdgeschoss”<br />
um eine Sektion und bei den untergeordneten Objekten ”Raum 1.206 BM” und ”Raum<br />
1.206 HT” um Zonen in dieser Sektion. Wird eine der Zonen ausgewählt, wird zu dieser<br />
gewechselt. Mit dem ”Zurück”-Knopf am Tablet kann dann wieder eine Ebene höher zum<br />
abgebildeten Bildschirm gewechselt werden.<br />
Über den Knopf ”Fehler für . . . erfassen” kann ein Mangel für das aktuell betrachtete Gerät<br />
erfasst werden. Aus Zweckmässigkeit kann durch langen Klick auf ein Kindelement über<br />
ein Kontextmenu für dieses Kind ein Mangel erfasst werden. Dies erspart dem Benutzer,<br />
dass er, nur um einen Fehler zu erfassen, zum Kind wechseln, den entsprechenden Knopf<br />
drücken, und wieder hoch wechseln muss (Abb. 4.20).<br />
Page 55 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.20: Kontextmenu für ein Kindelement<br />
Durch Drücken des Knopfs ”Start Testmodus” wird offensichtlich der Testmodus gestartet.<br />
Im Test inbegriffen sind das aktuell betrachtete Element sowie alle Kindelemente. Siehe<br />
Kap. 4.3.3 für eine Beschreibung des Testablaufs.<br />
Mit dem Knopf links unten namens ”Zurück zum Panel” kann zur Wurzel des Baums,<br />
der Zentrale, gewechselt werden. Für die Zentrale wird der Knopf durch ”Speichern und<br />
verlassen” ersetzt (Abb. 4.21). Wird dieser betätigt, gelangt der Benutzer nach einem<br />
Bestätigungsdialog, ob er den Test verlassen möchte, zurück zum Bildschirm ”Testübersicht”<br />
(Abb. 4.22.<br />
Abbildung 4.21: Ansicht der Zentrale im Hauptbildschirm<br />
Page 56 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.22: Bestätigungsdialog zum Verlassen der Zentralenansicht<br />
In der Lasche ”Informationen” werden alle Angaben zum betrachteten Objekt angezeigt,<br />
die von der Zentrale geladen wurden. (Abb. 4.23)<br />
Abbildung 4.23: Alle Informationen zu einem Objekt<br />
Schliesslich werden in der Lasche ”Mängel” alle für dieses Objekt erfassten Mängel angezeigt.<br />
(Abb. 4.24) Durch einen Klick auf einen Mangel wird dieser zum Bearbeiten geöffnet<br />
(s.a. Abb. 4.34). Durch einen langen Klick lässt sich ein erfasster Mangel löschen (Abb.<br />
4.25). Ist die Mangelliste leer, sieht die Lasche wie in Abbildung 4.26 aus.<br />
Page 57 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.24: Mängelliste für ein Objekt<br />
Abbildung 4.25: Bestätigung für Löschen eines Mangels<br />
Page 58 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.26: Leere Mangelliste im Hauptbildschirm<br />
4.3.2 Gerätezustände<br />
Ein Gerät kann mit einer Menge von Icons versehen werden, um dessen Zustand betreffend<br />
der aktuell betrachteten Wartung zu bezeichnen.<br />
Vor einem Test besitzt ein Gerät allgemein den Zustand ”unknown”. Während einem laufenden<br />
Test wird der temporäre Status ”testing” angezeigt. Nach einem Ereignis befindet<br />
sich das Gerät entweder im Zustand ”testedok” oder ”failed”, je nachdem, ob nach der<br />
Testauslösung ein korrektes Ereignis gemeldet wurde oder nicht.<br />
Abbildung 4.27: Mögliche Zustände eines Geräts<br />
Page 59 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
In der untenstehenden Tabelle sind alle möglichen Zustände aufgelistet, in denen sich ein<br />
Gerät befinden kann.<br />
Mangel<br />
❵❵❵❵❵❵❵❵❵❵❵❵❵❵<br />
Gerätestatus<br />
ja<br />
nein<br />
unknown<br />
unknownfaulty<br />
unknown<br />
testing<br />
testing<br />
ok<br />
n/a<br />
testedok<br />
failed<br />
failed<br />
n/a<br />
Tabelle 4.2: Visuelle Repräsentation des Gerätestatus<br />
Es ist offensichtlich, dass es den Zustand ”failed ohne Mangel” nicht gibt. Wir definieren<br />
ausserdem, dass der Status ”ok mit Mangel” nicht existiert. Wir unterscheiden nicht,<br />
ob der Mangel vom Testen des Melders kommt oder ob sonst etwas in der Umgebung<br />
mangelhaft ist. Ist einem Gerät ein Mangel angefügt, so hat es den Test nicht bestanden.<br />
Oder anders gesagt: Will bei der Auswertung unterschieden werden, ob der Mangel durch<br />
den Test mit dem Prüfpflücker oder andersweitig entstanden ist, so kann die Beschreibung<br />
des Mangels betrachtet werden.<br />
Der Status ”testing” ist ein Übergangszustand, der gültig ist, während ein Gerät sich unter<br />
Test befindet. Bevor ein Gerät in den Testmodus versetzt wird, besitzt es den Status<br />
”unknown”. Nachdem der Testmodus gestoppt wird, ist das Gerät entweder in Ordnung<br />
(”testedok”) oder nicht (’failed”). Daher werden auf einem Gerät nur die Zustände ”unknown”,<br />
”testedok” oder ”failed” gespeichert.<br />
Als Präzisierung der in 4.27 definierten allgemeinen Zustände zeigt das folgende Flussdiagramm<br />
(Abb. 4.28) alle gültigen Zustandsübergänge, die vor, während und nach einem<br />
Test auftreten können.<br />
Bevor ein Test auf einem Gerät gestartet wird, befindet es sich entweder im Zustand<br />
”unknown” oder ”unknownfaulty”, je nachdem, ob vom Benutzer bereits abgesehen vom<br />
Test mittels Prüfpflücker ein Mangel erfasst wurde. Wird der Test gestartet, bekommt das<br />
Gerät den Status ”testing”. Tritt im Testmodus ein Ereignis auf, ist dieses korrekt und ist<br />
das Gerät andersweitig mangelfrei, wird ihm der Zustand ”testedok” vergeben. In allen<br />
anderen Fällen wird das Gerät in den Zustand ”failed” überführt. Dieser Zustand kann<br />
Page 60 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
bedeuten, dass ein fehlerhaftes Ereignis auftrat, ein erwartetes Ereignis nicht auftrat oder<br />
der Test erfolgreich war, das Gerät aber sonstige Mängel aufweist. Zu beachten ist, dass sowohl<br />
beim Übergang ”Erwartetes Ereignis tritt nicht auf” als auch bei ”Stop Testmodus”<br />
für dieses Gerät kein Ereignis eintraf. Der Unterschied ist, dass bei ”Stop Testmodus” ein<br />
Mangel automatisch erfasst wird, während bei ersterem der Benutzer selbst diesen erfasst.<br />
Abbildung 4.28: Angezeigte Zustände eines Geräts während eines Tests<br />
4.3.3 Testen von Geräten<br />
Befindet sich das Tablet im Testmodus, d.h. hört es auf vom Gateway kommende Ereignisse<br />
für die unter Test stehenden Melder, wird dies wie in Abb. 4.29 angezeigt. Die animierten<br />
Icons (in Tabelle ?? ”testing” genannt) in der Liste der Kindelemente signalisieren, dass<br />
sie auf ein Ereignis warten. Ausserdem wird mit einer roten Box und entsprechendem Text<br />
angezeigt, dass der Testmodus aktiv ist.<br />
Page 61 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.29: Zentralenansicht im Testmodus<br />
Empfängt das Tablet ein Ereignis für einen der unter Test stehenden Melder, wird dies<br />
in einem Popup angezeigt (Abb. 4.30). Der Benutzer kann aufgrund der Information im<br />
Popup entscheiden, ob der korrekte Melder ausgelöst hat. Ist dies der Fall, bestätigt der<br />
Benutzer den Dialog mittels des Knopfs ”Bestätigen”. Darauf wird das Gerät mit dem in<br />
Tabelle ?? aufgeführten Icon ”testedok” versehen (Abb. 4.31).<br />
Abbildung 4.30: Eintreffen eines Ereignisses<br />
Page 62 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.31: Zustand eines Objekts nach Bestätigung eines korrekten Ereignisses<br />
Wie in dieser Abbildung ebenfalls zu sehen ist, wird ein nicht-physisches Element wie ein<br />
Areal, eine Sektion oder eine Zone ebenfalls mit dem Status ”testedok” versehen, wenn<br />
alle untergeordneten Melder den Status ”testedok” besitzen.<br />
Ist mit dem eintreffenden Ereignis etwas nicht in Ordnung, kann der Benutzer im Popup<br />
durch Klicken auf ”Fehler erfassen” sogleich einen neuen Mangel eröffnen. Kehrt er danach<br />
aus der Mangelerfassung zum Bildschirm ”FacilityInfo” zurück, ist der Melder und somit<br />
die Zone, in der sich der Melder befindet, mit dem Icon für den Status ”failed” versehen<br />
(Abb. 4.32).<br />
Abbildung 4.32: Zustand eines Objekts nach einem fehlerhaften Ereignis<br />
Page 63 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Was passiert, wenn ein Ereignis mittels Prüfpflücker ausgelöst wurde, aber nicht eintritt?<br />
Wir entschieden uns dagegen, nach einer gewissen Wartezeit ein Timeout auftreten zu<br />
lassen. Stattdessen wartet das Tablet auf unbestimmte Zeit auf das nächste Ereignis,<br />
solange es sich im Testmodus befindet. Dem Benutzer stehen zwei Handlungsmöglichkeiten<br />
offen:<br />
• Der Benutzer kann zum betroffenen Gerät navigieren und für dieses einen Mangel<br />
erfassen.<br />
• Er kann mit dem Testen des nächsten Melders fortfahren. Beendet der Benutzer den<br />
Testmodus, werden für alle Geräte, die sich noch im Zustand ”testing” befinden,<br />
automatisch ein Mangel mit einem Standardtext erfasst (”Keine Antwort beim Sensortest<br />
empfangen.”) und somit das Gerät in den Zustand ”failed” versetzt (s. Abb.<br />
4.33).<br />
Abbildung 4.33: Automatisch erfasster Mangel für einen nicht getesteten Melder<br />
Page 64 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
4.3.4 Mangel erfassen<br />
Abbildung 4.34: Mangelerfassung mit Lasche ”Beschreibung”<br />
Der Bildschirm ”Mangelerfassung” besteht hauptsächlich aus den drei Laschen ”Beschreibung”,<br />
”VoiceMemos” und ”Bilder”, in denen entsprechende Inhalte erfasst werden können<br />
(Abb. 4.34). Die Lasche ”Beschreibung” besteht aus einem Textfeld, in dem eine beliebig<br />
lange Beschreibung des Mangels eingetippt werden kann.<br />
In der Lasche ”VoiceMemos” (Abb. 4.35) kann durch Drücken des Knopfs ”VoiceMemo<br />
aufnehmen” das im Tablet eingebaute Mikrofon aktiviert und eine Aufnahme gestartet<br />
werden. Soll die Aufnahme gestoppt werden, kann dies durch Betätigen des gleichen Knopfs<br />
(nun genannt ”Stop”) bewirkt werden (Abb. 4.36). Danach wird die Datei auf den Datenträger<br />
gespeichert und der Speicherort in unserer Datenbank zu diesem Fehler zugeordnet<br />
(Abb. 4.37).<br />
Page 65 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.35: Leere Liste in der Lasche ”VoiceMemo”<br />
Abbildung 4.36: Während laufender Aufnahme<br />
Page 66 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.37: Lasche ”VoiceMemo” mit Aufnahme als Listenelement<br />
Analog verhält sich die Erfassung von Bildern, nur dass dabei statt einem Aufnahmegerät<br />
die als Standard eingestellte Kamera des tablets gestartet wird (Abb. 4.38, 4.39).<br />
Soll eine Ton- oder Bildaufnahme gelöscht werden, kann dies durch einen langen Klick auf<br />
ein Listenelement veranlasst werden. Nach einem Bestätigungsdialog (Abb. 4.40) wird der<br />
Verweis aus der Datenbank sowie die Datei vom Datenträger entfernt.<br />
Abbildung 4.38: Leere Liste in der Lasche ”Bilder”<br />
Page 67 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
Abbildung 4.39: Lasche ”Bilder” mit Aufnahme als Listenelement<br />
Abbildung 4.40: Bestätigungsdialog zum Löschen einer Ton- oder Bildaufnahme<br />
4.3.5 Implementation - Differenzen gegenüber Entwurf<br />
Aufgrund des Treffens mit einem Servicetechniker (siehe Kapitel 3.2) stellte sich heraus,<br />
dass bei einer Anlagenrevision jede Zentrale separat getestet wird. Dies spiegelt sich auch<br />
darin, dass die Dokumentation sowohl vor Ort als auch für Siemens für jede Zentrale getrennt<br />
geführt wird. Und nicht zuletzt befassten wir uns aufgrund unseres Testaufbaus<br />
vor allem mit einer einzelnen Zentrale und ihren untergeordneten Elementen. Aus diesen<br />
Gründen haben wir auch entschieden, dass für Demonstrationszwecke unsere Implemen-<br />
Page 68 of 98
FireTablet<br />
4 Interface Design (Autor: Daniel Bobst)<br />
tation keine Anlagen abbildet, sondern einzelne Zentralen.<br />
Abbildung 4.41: Flussdiagramm der im Prototyp implementierten GUI-Navigation<br />
Wie in der obigen Abbildung zu sehen ist, unterscheidet sich die implementierte Variante<br />
dadurch von der entworfenen Lösung, dass zwischen dem Hauptmenu und der Zentralenansicht<br />
(”FacilityInfo”) nicht eine komplette Anlage geladen wird. Wird aus dem Hauptmenu<br />
ausgewählt, eine Anlagenstruktur vom Gateway zu laden, so muss neben dem zu<br />
speichernden Anlagennamen, der IP- und Port-Adresse des Gateways auch die BACnet-<br />
Id der zu ladenden Zentrale angegeben werden. Ist eine gespeicherte Zentrale zu laden,<br />
erscheint sogleich eine Auswahlliste. Wird eine Zentrale ausgewählt oder vom Gateway geladen,<br />
erscheint die im Kapitel 4.3.1 bereits beschriebene Zentralenübersicht. Der weitere<br />
Arbeitsablauf ab diesem Bildschirm ist identisch mit dem dort beschriebenen.<br />
Weitere Features, die aus Zeitgründen weggelassen wurden:<br />
• Use Case Zentrale Funktionsprüfung<br />
• Wartung abschliessen: Sowohl die Checkliste für den Servicetechniker als auch der<br />
Dokumentenexport<br />
• Bildschirm Testübersicht<br />
Page 69 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
5 Software Entwicklung<br />
Autor: Samuel Hüppi<br />
In diesem Kapitel wird aufgezeigt, wie die Applikation softwaretechnisch funktioniert. Es<br />
wird beleuchtet, welche Klassen wozu miteinander zusammen spielen, und welche Designentscheide<br />
dahinter standen. Weiter wird hier auf die genauen Abläufe der einzelnen Use<br />
Cases eingegangen und diese vom technischen Standpunkt aus beschrieben. Da auf die<br />
physische Architektur und das Zusammenspiel der verschiedenen Geräte schon im Kapitel<br />
2 Technische Rahmenbedingungen eingegangen wurde, beschäftigt sich dieses Kapitel nur<br />
noch mit der Software, welche auf dem Tablet abläuft.<br />
5.1 Design & Architektur<br />
Das Design und die Architektur der Software haben sich vor allem aus der Struktur der<br />
Brandmeldezentrale ergeben. Es musste ein Konzept sein, mit dem man die Baumstruktur<br />
der Zentrale abbilden, sowie Fehler zu jedem Gerät erfassen konnte. Im Folgenden<br />
wird erklärt welche Objekte zu welchem Zweck eingeführt wurden, und wie die Software<br />
modular aufgebaut ist. Das Domainmodel dient dazu, die Objekte, mit denen im Programm<br />
gearbeitet wird, in sinnvolle Zusammenhänge zu setzen. Anschliessend kann ein<br />
Klassendiagramm erstellt werden.<br />
5.1.1 Domainmodel<br />
Abbildung 5.1: Das Domainmodel zeigt die grundlegende Struktur der Software<br />
Page 70 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
5.1.1.1 Objekte<br />
• FacilityTest stellt einen Testdurchgang für die gesammte Zentrale dar. Es könnte<br />
z.B. eine jährliche Wartung oder eine Inbetriebnahme sein.<br />
• Panel bildet die gesamte Baumstruktur einer Brandmeldezentrale ab und kennt die<br />
einzelnen Devices. Allerdings weiss das Panel nicht, welches Device welche Kindoder<br />
Elternelemente hat. Für jeden neuen Test wird die gesamte Anlagestruktur<br />
vom Gateway geladen. Dies bedeutet, dass jedes Panel auch einen Zentralen-Test<br />
darstellt, der mit einem Erstellungsdatum unterschieden wird. Für das Domainmodel<br />
ist die Trennung von Panel und FacilityTest aber relevant, da hier die Realität<br />
abgebildet wird.<br />
• Device repräsentiert ein Objekt in der Baumstruktur einer Zentrale, sogenannte<br />
Life-Safety-Zones. Jedes Gerät, jede Zone, oder sonst ein Objekt in einer Brandmeldezentrale<br />
wird auf einer Life-Safety-Zone abgebildet. Die für FireTablet relevanten<br />
Life-Safety-Zones sind:<br />
– PanelFc2020Elem<br />
– AreaElem<br />
– SectionElem<br />
– ZoneAutomationElem, ZoneManualElem<br />
– Alle SensorElemente<br />
Jedes Device weiss, ob es fehlerhaft ist oder bereits getestet wurde.<br />
• Fault speichert alle möglichen Arten der Fehlererfassung. Es können Voicememos,<br />
Bilder und Textbeschreibungen hinzugefügt werden.<br />
5.1.2 Architekturübersicht<br />
Dieser Abschnitt erklärt die Verwendungszwecke der verschiedenen Pakete und zeigt die<br />
Abhängigkeiten auf. Jeder Paketname beginnt eigentlich mit hsr.ifs.firetablet. Die Einteilung<br />
in die einzelnen Pakete wurde nicht von Anfang an fixiert, sondern entstand erst<br />
durch den Entwicklungsprozess. Gewisse Klassen wurden erst am Schluss bei der Analyse<br />
mit Structure 101 in das definitive Paket eingeteilt. Structure 101 ist eine Codeanalyse<br />
Software, die z.B. zirkuläre Abhängigkeiten von Paketen aufzeichnet.[Structure101] Wie<br />
unten im Bild gezeigt wird, waren zu viele Abhängigkeiten ein Problem. Durch das Analysewerkzeug<br />
wurden wir auf die Klasse GatewayConnection aufmerksam, die im Paket<br />
Network war. Rein von der Logik her würde die Klasse aber ins Domainpackage gehören,<br />
weil es eigentlich eine reine Datenklasse ist. Als positiver Nebeneffekt hat das Verschieben<br />
geholfen, die Struktur der Paketverknüpfungen zu entflechten.<br />
Page 71 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
Abbildung 5.2: Optimierung durch Structure101<br />
Im Bild unten ist die finale Struktur mit den Abhängigkeiten unter den Paketen gezeigt.<br />
• Gui<br />
Abbildung 5.3: Paketübersicht mit eingezeichneten Abhängigkeiten<br />
Page 72 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
Das Paket beinhaltet vor allem Activities und jene Klassen, die zur Unterstützung<br />
benötigt werden. Weil Activities viel mehr als reine Gui-Klassen sind, und z.B. in der<br />
onPause() Methode eigenständig Daten persistieren müssen, haben die Activities mit<br />
allen Paketen Abhängigkeiten. Im Paket sind drei weitere Pakete enthalten. Jedes<br />
Paket stellt einen Bildschirm mit allen Klassen, die von ihm benötigt werden dar.<br />
• Domain<br />
Die Brandmeldezentrale wird mit den Klassen in diesem Paket abgebildet.<br />
• Network<br />
Das Paket Network enthält die Netzwerkschicht. Da alle Klassen in diesem Paket<br />
AsyncTasks sind, besteht eine Abhängikeit mit dem Gui-Paket über Domain hinweg.<br />
AsyncTasks führen viel Funktionalität direkt auf der Activity aus, beziehungsweise<br />
im gleichen Thread wie die Activity läuft. Damit greift jeder AsyncTasks auch wieder<br />
auf die Activity zu, die ihn gestartet hat. Das Paket Parser beinhaltet alle für das<br />
Parsen von XML nötigen Teile.<br />
• Db Dieses Paket stellt die Verbindung zur Datenbank her.<br />
5.1.3 Klassendiagramm<br />
In diesem Abschnitt erhält der Leser einen Überblick über die verwendeten Klassen. Auf<br />
die wichtigsten Klassen wird speziell eingegangen und ihre Spezialität erklärt. Alle grünen<br />
Klassen sind Activities, die einen Bildschirm darstellen, wie sie im Abschnitt 4.3 Finaler<br />
Entwurf mit Screenshots definiert werden. Weisse Klassen im selben Paket werden von<br />
den grünen verwendet. Da die grün markierten Klassen schon beim Thema 4 Design Gui<br />
eingehend erklärt werden, wird an dieser Stelle auf detaillierte Erklärung verzichtet. Unten<br />
abgebildet ist aber ein Mapping der Activityklassen zu den entsprechenden Bildschirmen.<br />
Für die restlichen Klassen gibt es unterhalb der Übersicht detaillierte Beschriebe.<br />
Bildschirm<br />
Hauptmenu<br />
Gateway-Dialog<br />
Anlagenauswahl<br />
FacilityInfo<br />
Eventbehandlung<br />
Mangelerfassung<br />
Activity<br />
MainMenu<br />
IpInputDialog<br />
LoadFacilityFromDB<br />
FacilityInfo<br />
GatewayEvent<br />
FaultDetails<br />
Tabelle 5.1: Mapping der Activities auf die verschiedenen Bildschirme<br />
Page 73 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
Abbildung 5.4: Klassendiagramm ohne Klassenabhängigkeiten<br />
• FireTabletApplication<br />
Diese Klasse stellt den Application- Context für FireTablet dar. Die Klasse wird<br />
von Android bei jedem Start des Programms instantiiert und verwaltet. Sie dient als<br />
eine Art Singleton und kann von jeder Activity mit getApplicationContext() bezogen<br />
werden. Beim Application Context können folgende Artefakte abgerufen werden:<br />
– Datenbank<br />
Die Datenbankverbindung wird beim Erstellen des ApplicationContext erstellt<br />
und kann mit public DbAccessDb4o getDb() vom Context bezogen werden.<br />
Page 74 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
– Panel<br />
Das Panel muss manuell beim Context gesetzt werden, sobald ein Panel verfügbar<br />
ist. Dazu gibt es zwei Anlässe. Entweder wird ein Panel von der Datenbank geholt<br />
oder das Panel wird neu vom Gateway geladen.<br />
• Panel<br />
Ein Panel ist das Rootelement der gesammten Zentralenhierarchie und speichert alle<br />
Objekte in Form von Devices in eine HashMap, mit welcher auf alle Objekte der<br />
Zentrale zugegriffen werden kann. Als Keys dienen die OBJECT IDENTIFIER jedes<br />
Objektes in der Zentrale. Weiter verwaltet das Panel die Verbindungsinformationen<br />
zum Gateway und besitzt einige Operationen um Devices zu verwalten.<br />
Wie man im Domainmodel erkennt, ist vor dem Panel ein FacilityTest vorgeschaltet.<br />
Dieses Objekt hat in der Klassenstruktur keine Realisierung bekommen, weil ein<br />
Facilitytest mittels eines createDate im Panel abstrahiert wurde. Demzufolge muss<br />
bei jedem Facilitytest ein neues Panel erstellt und vom Gateway geladen werden.<br />
Verschiedene Panels werden durch ihr createDate unterschieden und repräsentieren<br />
auch unterschiedliche Tests. Der Vorteil neben dem einfacheren Klassendiagramm<br />
hat auch noch eine praktische Natur. Es ist nicht möglich auf veralteten Informationen<br />
einen Test durchzuführen, sondern die Zentrale muss immer neu geladen werden.<br />
• Device<br />
Wie bereits in Abschnitt 5.1.1 Domainmodel beschrieben ist, stellt ein Device ein<br />
Objekt im Baum der Zentrale dar. Jedes Device besitzt ein Bundle mit den im<br />
Listing ersichtlichen Keys. Ein Bundle ist eine Art HashMap, mit dem Vorteil, dass<br />
man ein Bundle mit einem Intent von einer zur nächsten Activity schicken kann.<br />
Bundles sind also serialisierbar.<br />
Genauere Informationen zur Bedeutung dieser Schlüssel können dem Teil 2.2 Analyse<br />
Gateway entnommen werden.<br />
private Bundle attributes ;<br />
String OBJECT_IDENTIFIER = " object - identifier ";<br />
String OBJECT_NAME = " object - name ";<br />
String DESCRIPTION = " description ";<br />
String DEVICE_TYPE = " device - type ";<br />
String PROFILE_NAME = " profile - name ";<br />
String MAINTENANCE_RQIRED = " maintenance - required ";<br />
String NOTIFICATION_CLASS = " notification - class ";<br />
String NOTIFY_TYPE = " notify - type ";<br />
String EVENT_MESSAGE_TEXT = "isa - event - message - texts ";<br />
Listing 5.1: Keys für Attribute von Device. Alle Key Strings sind public static final.<br />
Ein Device ist aber keine reine Datenklasse, sondern kann seinen Zustand intern<br />
mit der Enumartion status verwalten. Wenn zum Beispiel ein Fehler erfasst werden<br />
soll, kann mittels public void registerFault(Fault fault) ein Fault übergeben werden.<br />
Device passt anschliessend seinen internen Status entsprechend dem jetzigen Status<br />
an und schreibt den Fault auf die Datenbank. Weitere Details zu den verschiedenen<br />
Status befinden sich im Abschnitt 4.3 Gui Design.<br />
Page 75 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
Diese Architektur wurde nötig, weil Faults nicht in Devices gespeichert werden, wie<br />
das Domainmodel vermuten lässt, sondern nur in der Datenbank. Von dort können<br />
Fehler mittels OBJECT IDENTIFIER und createDate gesucht werden. Um viele<br />
Devices in einer scrollbaren Liste anzuzeigen braucht es aber sehr schnelle Abfragen<br />
auf die Devices. Dies ist aber nicht möglich wenn für jedes Device mindestens ein<br />
Datenbankzugriff ausgeführt werden muss, um abzuklären welcher Status ein Device<br />
besitzt. [Turbo-charge your UI] Somit verwaltet ein Device seinen Status selber und<br />
ist gleichzeitig auch verantwortlich, die Faults auf der Datenbank zu erstellen oder<br />
zu löschen. Damit entsteht der Vorteil diese Funktionalität zu kapseln. Man muss<br />
nicht immer daran denken, wenn man den Status eines Devices ändert, auch die<br />
Datenbank zu informieren oder umgekehrt.<br />
Abbildung 5.5: Die Klasse Device mit den wichtigen Methoden<br />
Device implementiert das Interface Parcelable, damit ein Device serialisierbar wird<br />
und mit Intents verschickt werden kann.<br />
• Fault<br />
Diese Klasse ist eine reine Datenklasse, die die verschiedenen Attribute eines Fehlers<br />
speichern kann. Faults können anschliessend auf der Datenbank persistiert werden.<br />
• DbAccessDb4o<br />
Wie es der Name schon sagt, wird mit der DBAccessDb4o auf die Datenbank zugegriffen.<br />
Dazu stehen einige Methoden zur Verfügung, um zum Beispiel ein Panel,<br />
Faults, oder VoiceMemos abzulegen und wieder zu finden. Als Datenbank wird Db4o<br />
verwendet. [Db4o]<br />
• AsyncTask<br />
Die blau markierten Klassen mit dem Stereotyp AsyncTask im Package ”network”<br />
sind die drei Threads die FireTablet benötigt, um das Benutzerinterface ansprechbar<br />
zu halten, während länger dauernde Aktionen ausgeführt werden. Dies ist der Fall,<br />
Page 76 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
wenn die Zentralenstruktur vom Gateway abgerufen wird oder falls das Tablet auf<br />
ankommende Events vom Simulationserver wartet. AsyncTasks sind sehr eng mit<br />
den Activities gekoppelt. Es wird nur die doInBackground() Methode in einem seperaten<br />
Thread ausgeführt. Alle anderen Methoden laufen im gleichen Thread wie<br />
das Benutzerinterface. Weitere Informationen zu AsyncTasks können dem Artikel<br />
Painless Threading entnommen werden. [Painless Threading]<br />
5.1.4 Sequenzdiagramme<br />
Nachdem ein Überblick über die Klassen von FireTablet vermittelt wurde, wird anschliessend<br />
auf ausgewählte Abläufe innerhalb der Applikation eingegangen. Auch dabei werden<br />
die Acivities verwendet, dessen Funktionalität und Zweck im Abschnitt 4.3 Design Gui<br />
erklärt wurde.<br />
5.1.4.1 Use Case 01 Gateway verbinden<br />
Ein Panel kann aus zwei Quellen erstellt werden. Entweder es wird aus der Datenbank<br />
wieder erstellt oder FireTablet lädt die Anlagestruktur neu vom Gateway und erstellt<br />
einen neuen Test. Auf den nächsten zwei Bildern sind diese beiden Abläufe dargestellt.<br />
Abbildung 5.6: Zentralenstruktur wird vom Gateway<br />
abgerufen, geparsed und als Panel im ApplicationContext gespeichert.<br />
Page 77 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
Abbildung 5.7: Zentralenstruktur wird von<br />
der Datenbank geholt und als Panel im ApplicationContext gespeichert.<br />
Wenn man diese beiden Sequenzdiagramme betrachtet, stellt sich die Frage, warum das<br />
Panel im ApplicationContext gespeichert wird und nicht bei der Erstellung als Parameter<br />
an die neuen Activities übergeben wird. Der Kritikpunkt dieser Lösung ist die Klasse<br />
FireTabletApplication, die ein Singleton mit all seinen Nachteilen ist. [APF Foliensatz 14,<br />
S. 17] Tatsächlich gibt es wegen dem ApplicationContext auch Probleme, zum Beispiel<br />
beim Erstellen von UnitTests, siehe Abschnitt 5.2.3 Unit Testing. Folgende Gründe haben<br />
aber trotzdem zur Verwendung des Singleton geführt:<br />
1. Bei Android wird der Singleton ApplicationContext genannt und vom Android System<br />
verwaltet.<br />
2. Man hat nicht von überall Zugriff auf diesen Context, sondern nur aus Activities<br />
heraus.<br />
3. Eine Applikation ist eine Gruppe von Activities, die nur lose miteinander verbunden<br />
sind. Will man Daten von einer Activity zur anderen schicken, wird dies mit Intents<br />
getan. Intents erlauben aber nur primitive Datentypen oder jene die das Interface<br />
Parcelable implementieren.<br />
5.1.4.2 Use Case 02 Sensortest durchführen<br />
Das nächste Sequenzdiagramm beschreibt den Vorgang nachdem in FacilityInfo der Testmodus<br />
gestartet wurde. Zuerst wird ein AsyncTask erstellt, der wiederum einen Thread<br />
startet, der anschliessend auf eingehende Events vom Event Simulationsserver hört. Falls<br />
der Server ein Event schickt, wird dies mit publishProgress() dem AsyncTask mitgeteilt,<br />
der danach wieder im Userinterfacethread die GatewayEvent Activity aufruft.<br />
Page 78 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
Abbildung 5.8: Prozess, nachdem ”Start Testmodus” geklickt wurde.<br />
5.2 Unit Testing<br />
In der heutigen Zeit gehört Test Driven Development (TDD) nicht mehr nur zum guten<br />
Ton bei einem Softwareprojekt, sondern ist absolute Pflicht, wenn man qualitativ hochstehende<br />
Software entwickeln will. Aus diesem Grund stellt auch das Android Framework<br />
eine vollständige Testumgebung basierend auf JUnit bereit. [JUnit] Wie sich aber im Verlauf<br />
der Arbeit gezeigt hat, sind die Testklassen von Android noch nicht über alle Zweifel<br />
erhaben (Siehe Teil 5.2.3 Anwendungen und Beispiele Seite 82). Dafür gibt es einige Hilfsframeworks,<br />
die zum Teil Abhilfe schaffen, wie z.B. RoboGuice und Robotium. Auf diese<br />
Frameworks wird weiter unten nochmals eingegangen. Am Anfang dieses Kapitels geht es<br />
darum, einen Überblick zu den verschieden Android Testklassen,welche eingesetzt wurden,<br />
zu erhalten. Im Teil 5.2.3 Anwendungen und Beispiele werden anschliessend ein paar<br />
Beispiele von Tests erklärt, die für das Projekt geschrieben wurden.<br />
5.2.1 Android Test Klassen<br />
Android stellt eine Auswahl von verschiedenen Testsuperklassen zur Verfügung. Je nachdem<br />
was genau getestet werden soll und wie stark die Tests mit androidspezifischen Komponenten<br />
interagieren, eignet sich eine Testsuperklasse besser als die andere. Im Buch<br />
Android 2 werden drei verschiedene Arten beschrieben um eine Applikation zu testen.<br />
[Android 2, S.373]<br />
• Test der Gesamtanwendung<br />
Page 79 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
Um komplexe Vorgänge, bei denen mehrere Activities zusammen spielen, zu testen,<br />
verwendet man häufig keine automatischen Tests, sondern Menschen. Der Aufwand<br />
wäre zu gross um Applikationen gesamtheitlich zu testen, denn die Tests müssten einerseits<br />
auf wichtige Systemereignisse oder Multitasking reagieren, andrerseits trotzdem<br />
so flexibel sein, dass man die Tests nicht bei jeder Änderung der Zielanwendung<br />
anpassen muss. Falls man doch mehrere Actitivities zusammen testen will, sollte man<br />
ActivityInstrumentationTestCase2 verwenden.<br />
• Oberflächentests<br />
Diese Tests überprüfen einen Vorgang oder Ablauf auf dem Bildschirm. Meistens<br />
beschränkt sich ein Vorgang auf eine Activity so dass man auch Activity-Test sagen<br />
könnte. Beispiele für einen Vorgang wären zum Beispiel ”UseCase 01 Mit Gateway<br />
verbinden”. Für Oberflächentests eignet sich ActivityUnitTestCase am besten.<br />
• Modultest<br />
Modultests sind von der Granularität her die feinsten Tests. Bei diesen Tests geht<br />
man nicht auf den Lebenszyklus von Androidkomponenten ein sondern testet normale<br />
Javaklassen, die zum Beispiel von Activities gebraucht werden. Für Modultests<br />
verwendet man vor allem ActivityUnitTestCase und AndroidTestCase<br />
Die folgenden Testklassen sind im Androidframework vorhanden. Je nach dem was man<br />
testen will, haben die Klassen ihre Vor- und Nachteile. Am Schluss dieses Teils wird Robotium<br />
genauer vorgestellt, da dieses Framework eine grosse Vereinfachung für Oberflächentests<br />
darstellt.<br />
5.2.1.1 AndroidTestCase<br />
AndroidTestCase ist die einfachste Form eines Tests. Die Klasse eignet sich um Zugriff<br />
auf die Attribute und Funktionen einer Activity zu bekommen. Obwohl diese Klasse keine<br />
Androidkomponente ist, benötigt sie doch einen Context, damit sie auf Informationen des<br />
Systems und der Applikation zugreifen kann.<br />
5.2.1.2 InstrumentationTestCase<br />
Wie in der Android Referenz im Developer Guide unter Activity Testing beschrieben wird,<br />
ist InstrumentationTestCase die Grundklasse um auf Activities während einem Tests Einfluss<br />
zu nehmen und stellt drei grundsätzliche Funktionen zur Verfügung [Activity Testing].<br />
• Es kann auf den Lebenszyklus von Aktivities Einfluss genommen werden. Activities<br />
können gestartet, pausiert oder zerstört werden.<br />
• Mit Dependency Injection ist es möglich Mockobjekte wie z.B. Contexts oder Application<br />
zu injizieren.<br />
• Benutzeraktionen können simuliert werden. Z.B. können Tastatureingaben gesendet<br />
oder direkt das User Interface verwendet werden. Im Vergleich zu Robotium ist die<br />
Kontrolle des User Interface aber weniger benutzerfreundlich. Instrumentation ist<br />
die zentrale Klasse welche die Fernbedienung einer Activity kapselt.<br />
Page 80 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
5.2.1.3 ActivityUnitTestCase<br />
Mit dieser Klasse ist es möglich eine Activity isoliert zu testen ohne viele Verbindungen<br />
zum Androidsystem zu haben. Durch die Isolation gibt es viele Methoden einer Activity,<br />
die nicht in einer Testumgebung aufgerufen werden sollten da diese sonst Exceptions<br />
werfen. Genauere Details können der Android Reference entnommen werden. ActivityUnit-<br />
TestCase bietet zudem die Möglichkeit einfache Mocks einzuführen. [Android Reference]<br />
5.2.1.4 ActivityInstrumentationTestCase2<br />
Falls mehrere Activities und das gegenseitige Zusammenspiel getestet werden wollen, eignet<br />
sich diese Testklasse. Genau wie InstrumentationTestCase stellt sie sämtliche Möglichkeiten<br />
um auf eine Activity Einfluss zu nehmen, zur Verfügung. ActivityInstrumentation-<br />
TestCase2 erlaubt es aber nicht Mocks einzuführen. Die Tests können also nicht von einem<br />
produktiven System getrennt werden.<br />
5.2.1.5 Klassenübersicht<br />
5.2.2 Robotium<br />
Abbildung 5.9: Klassendiagramm der Android Testklassen.<br />
Die Robotium Libraries stellen eine einfache Möglichkeit dar um Oberflächentests oder<br />
Tests der Gesamtanwendung durchzuführen. [Robotium] Dabei bietet Robotium im wesentlichen<br />
einen Simulator an, der Eingaben eines Benutzers simuliert, zugleich aber sehr<br />
einfach zu verwenden ist. Es können beispielsweise Buttons geklickt, werden indem der<br />
Textinhalt des Buttons der entsprechenden Simulatorfunktion übergeben wird. Weiter<br />
kann Robotium auch dazu eingesetzt werden um Oberflächentests über mehrere Activities<br />
zu starten, was ein einfaches Testen der Gesamtanwendung ermöglicht.<br />
Um mit Robotium zu arbeiten wird immer ein Simulator, meistens solo genannt, instantiiert<br />
indem man dem Konstruktor die Activity und die Instrumentation übergibt. Danach<br />
kann beispielsweise mit solo.clickButton(0); der erste Button im Layout geklickt werden<br />
oder mit solo.enterText(0, ”Text”); ein Text in ein Textfeld eingegeben werden. Diese einfache<br />
Handhabung stellt eine enorme Vereinfachung im Vergleich zum Androidframework<br />
dar.<br />
Page 81 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
public void setUp () throws Exception {<br />
}<br />
}<br />
activity = getActivity ();<br />
solo = new Solo ( getInstrumentation () , activity );<br />
Listing 5.2: Erstellung von solo dem Simulator. Erst durch die getActivity()<br />
Methode startet die Activity, falls sie nicht schon gestartet wurde.<br />
5.2.3 Anwendung und Beispiele<br />
In der Praxis stellt sich das Unittesting für Android dann aber als wesentlich unkomfortabler<br />
heraus, als die Tutorials und Dev Guides von Google meinen. [Testing Tutorial]<br />
Im wesentlichen wird das Thema durch Activities erschwert, die nicht einfach als normale<br />
Klassen instantiiert, sondern von Android aufgerufen werden. Wirklich schwierig<br />
wird es, falls man Objekte vom Application Context benötigt, welche zuerst erstellt werden<br />
müssen. So haben wir es nicht geschafft zuerst den Context aufzusetzen und erst<br />
danach die onCreate() Methode auszuführen. Es scheint als wäre die Activity mit ihrer<br />
onCreate() Methode, durch parallele Ausführung ständig schneller, was in NullPointerExceptions<br />
endet. Oft wird folgende Situationen angetroffen: Die Tests schlagen bei normaler<br />
Ausführung fehl, laufen aber im Debugging Modus erfolgreich ab. Aus diesem Grund und<br />
dem, dass Activity-Tests sehr viel Zeit benötigen, haben wir uns vor allem auf Modultests<br />
konzentriert, bei dem Funktionalität losgelöst von Activities getestet wird.<br />
Im Folgenden werden Beispiele aus dem Testprojekt vorgestellt, die wichtige Teile des<br />
Projekts abdecken oder wo spezielle Methoden zum Einsatz kamen.<br />
5.2.3.1 XML Handler Test<br />
Das korrekte Verhalten der beiden SAX-Parser Handler DeviceHandler und DeviceSearchHandler,<br />
wird mit den Testklassen DeviceHandlerTest und SearchDeviceHandlerTest<br />
sicher gestellt. Es wird als erstes eine SAX-Parserinstanz erstellt und mittels der parse()<br />
Methode ein InputStream der XML enthält dem entsprechende Handler übergeben. Anschliessend<br />
kann das Resultat bei den Handlern abgeholt werden.<br />
Das Testen der XML Handler ist sehr wichtig, weil die Übersicht in den Handlerklassen<br />
schnell verloren geht. Man will aber bei Änderungen am Handler garantieren können, dass<br />
sich der Handler noch gleich verhält.<br />
Page 82 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
Abbildung 5.10: Testcase Übersicht von DeviceHandlerTest. Der SearchDevice-<br />
HandlerTest funktioniert analog. Device wird dabei durch Panel ersetzt.<br />
5.2.3.2 Load Facility Test<br />
Die Schwierigkeit beim Testen der LoadFacilityTree Klasse liegt bei den zwei AsyncTasks<br />
welche gestartet werden. Die beiden Tasks werden eingesetzt um die Kommunikation mit<br />
dem Gateway in separate Threads auszulagern und das GUI dadurch flüssig zu halten.<br />
Beim Testen entsteht dabei aber die Schwierigkeit, dass die Tests nicht auf die Threads<br />
warten und schon getestet wird bevor sie ihre Arbeit verrichtet haben. Das Resultat sind<br />
NullPointerExceptions, da das Panel noch initialisiert ist.<br />
Wir haben während der Entwicklung versucht mit Roboguice das Problem zu beheben.[roboguice]<br />
Roboguice ist ein Framework das viele Dinge von Android vereinfachen will. Unter anderem<br />
soll es auch eine Möglichkeit geben AsyncTasks richtig zu testen. In der Praxis war dann<br />
aber der zusätzliche Aufwand und die Einarbeitungszeit zu gross um nur zwei AsyncTasks<br />
zu testen. Hinzu kam, dass wir eine andere Lösung gefunden haben auf die anschliessend<br />
eingegangen wird.<br />
Der Lösungsansatz ist die doInBackground() Methode selber aufzurufen und nicht wie<br />
üblich den AsyncTask mit execute() zu starten. Somit wird kein zweiter Thread gestartet<br />
und die Tests werden mit dem richtig initialisiertem Panel ausgeführt. Damit dies<br />
möglich ist, muss von LoadFacilityThread und SearchDevicesThread abgeleitet werden<br />
um das Überschreiben von gewissen Methoden zu ermöglichen. Speziell bei dieser Lösung<br />
ist auch die ThreadXmlParser2 Klasse. Sie imitiert einen Parser, der je nachdem welche<br />
URL übergeben wird, eine andere InputSource der parse() Funktion übergibt ohne eine<br />
Netzwerkabfrage auszulösen. Somit kann man den Parser einfach seinen Bedürfnissen<br />
anpassen und mehrere verschiedene Devices parsen. Mehr zum Aufbau kann aus dem<br />
Klassendiagramm entnommen werden.<br />
Page 83 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
Abbildung 5.11: Testcase Übersicht<br />
von LoadFacilityTreeTest. Die Thread Mocks werden in der Testklasse instanziert<br />
und manuell gestartet durch den Aufruf von doInBackGround()<br />
5.2.3.3 Oberflächentests mit Robotium<br />
Robotium wurde nur für wenige Activityklassen verwendet, obwohl Robotium in der Tat<br />
die Handhabung von Oberflächentests sehr vereinfacht. Probleme traten auch hier beim<br />
Laden des Application Context auf, da dieser nicht richtig initialisiert werden konnte bevor<br />
die Activity durch den Aufruf von onCreate() ins Leben gerufen wird. Oberflächentests<br />
mit Robotium sind aber auch vom Microtestingstandpunkt aus sehr kritisch zu betrachten.<br />
[Microtesting] Denn mit Laufzeiten von mehreren Sekunden pro Test kann kaum mehr von<br />
”Micro” gesprochen werden. Diese Art von Test eignet sich aber gut zur Sicherstellung eines<br />
Oberflächentests der ganzen Applikation in Bezug der Lauffähigkeit aller Funktionen.<br />
Das wäre aber ein Vorgang der nicht so häufig ausgeführt wird wie normale feingranulare<br />
Unittests. Mit Robotium wurden die Activities MainMenu und FaultDetails getestet.<br />
Anschliessend befindet sich ein Beispiel eines Robotiumtests von MainMenu. Solo ist der<br />
Simulator von Robotium und wird in der setUp() Methode erstellt.<br />
public void testInputIp () throws Exception {<br />
solo . clickOnButton (0);<br />
solo . assertCurrentActivity (" IpInputDialog<br />
Activity erwartet ", IpInputDialog . class );<br />
solo . enterText (1 , " 192.168.1.300 ");<br />
assertTrue ( solo . getButton (0). isEnabled ());<br />
Page 84 of 98
FireTablet<br />
5 Software Entwicklung (Autor: Samuel Hüppi)<br />
solo . clickOnButton (0);<br />
solo . assertCurrentActivity (" IpInputDialog<br />
Activity erwartet ", IpInputDialog . class );<br />
assertTrue ( solo . searchText ( activity . getString (<br />
R. string . inputIp_dialog_wrong_ip_toast )));<br />
solo . clearEditText (1);<br />
}<br />
solo . enterText (1 , " 192.168.1.1 ");<br />
solo . clickOnButton (0);<br />
solo . assertCurrentActivity (" LoadFacilityTree<br />
Activity erwartet ", LoadFacilityTree . class );<br />
Listing 5.3: Auszug aus einen Robotiumtest für MainMenu<br />
Die Simulatorfunktion assertCurrentActivity() überprüft, ob die derzeit aktive Activity<br />
dieselbe ist, wie ihr über den zweiten Parameter angegeben wird. So kann sichergestellt<br />
werden, dass nach gewissen Aktivitäten die richtigen Activities gestartet werden.<br />
5.2.3.4 Datenbank Tests<br />
Als Datenbank kommt Db4o zum Einsatz, was einen sehr einfachen Umgang mit dem<br />
Thema Persistenz ermöglicht. [Db4o] Um die Datenbank zu kapseln wird die Klasse DbAccessDb4o<br />
verwendet. Sie besitzt einige Methoden, um einfach auf bestimmte Objekte, wie<br />
z.B. Fault oder Panel, Zugriff zu haben. Da die Klasse unabhängig von Android ist, kann<br />
sie gut getestet werden. Die Tests brauchen lediglich die Möglichkeit auf das Dateisystem<br />
von Android zu schreiben, um eine Testdatenbank anzulegen, weshalb die Testklasse InstrumentationTestCase<br />
zum Einsatz kam. Die Testdatenbank wird für jeden Testcase in<br />
setUp() neu erstellt, damit alle Tests unabhängig ablaufen.<br />
protected void setUp () throws Exception {<br />
super . setUp ();<br />
filesdir = getInstrumentation ()<br />
. getTargetContext (). getFilesDir ();<br />
dbpath = filesdir + "/ testdb .db";<br />
}<br />
dbaccess = new DbAccessDb4o ( dbpath );<br />
Listing 5.4: Erstellen<br />
einer Testdatenbank mithilfe der Testklasse InstrumentationTestCase<br />
Page 85 of 98
FireTablet<br />
6 Zusammenfassung (Autor: Samuel Hüppi)<br />
6 Zusammenfassung<br />
Autor: Samuel Hüppi<br />
In diesem Kapitel wird auf die erreichten Ziele eingegangen, und gleichzeitig werden<br />
zukünftige Implementierungen und Ideen vorgestellt.<br />
6.1 Resultat<br />
Wenn man FireTablet mit den Zielen in Abschnitt 1.4 vergleicht, können folgende Aussagen<br />
gemacht werden:<br />
6.1.1 Sortiert nach Zielen<br />
1. Es können zu den Objekten der Zentralenstruktur Fehler erfasst werden. Allerdings<br />
nicht auf sämtlichen Objekten, sondern nur auf jenen, die angezeigt werden. Angezeigte<br />
Elemente sind:<br />
• Areal<br />
• Sektion<br />
• Zone<br />
• Panel<br />
Fehler können in Form von Text, Bild und Ton erfasst werden. Fehler können<br />
aber noch nicht elektronisch weiterverwendet werden, da es zur Zeit noch keine<br />
Möglichkeit gibt die Fehler aus FireTablet zu exportieren.<br />
2. FireTablet kann Testalarme empfangen. Allerdings kommen diese nicht direkt von<br />
der Zentrale, sondern von einem Simulationsserver, der auf dem gleichen Computer<br />
läuft wie das Gateway. Geräte können in den Testmodus versetzt werden. Für Geräte<br />
im Testmodus generiert der Simulationsserver anschliessend automatisch oder auf<br />
Knopfdruck Testalarme.<br />
3. Das Tablet ist selbstverständlich portabel und kann überall hin mitgenommen werden.<br />
Das gesamte Userinterface wurde im Querformat erstellt, so dass es an den Arm<br />
des Monteurs befestigt werden könnte. Es wurde ein Augenmerk auf grosse Buttons<br />
für gute Bedienbarkeit gelegt.<br />
4. Die Führung des Servicetechnikers durch den Test ist nur bedingt vorhanden. Es<br />
fehlen z.B. Checklisten die beim Testen von Zentralen helfen.<br />
Folgende Use Cases konnten im Rahmen der SA Arbeit realisiert werden:<br />
Page 86 of 98
FireTablet<br />
6 Zusammenfassung (Autor: Samuel Hüppi)<br />
6.1.2 Sortiert nach Use Cases<br />
Use Case<br />
Implementations-Status<br />
01 Mit Gateway verbinden Erfüllt<br />
02 Sensortest durchführen Erfüllt<br />
03 Anlage betrachten Erfüllt<br />
04 Zentrale Funktionsprüfung Funktion wurde aus Zeitgründen weggelassen<br />
05 Mangel erfassen Erfüllt<br />
06 Prüfdokumente generieren Funktion nicht in Semester-Arbeit vorhanden. Wird in<br />
der Bachelor Arbeit implementiert<br />
07 Bild aufnehmen Erfüllt<br />
08 Voicememo aufnehmen Erfüllt<br />
09 Licht an Funktion nicht vorhanden. Es wurde keine Möglichkeit<br />
gefunden die LED des Samsung Tablets anzusteuern.<br />
[Flashlight Stackoverflow]<br />
6.2 Ausblick<br />
Tabelle 6.1: Implementations-Status der geplanten Use Cases<br />
FireTablet muss noch an sehr vielen Stellen verbessert werden um es produktiv einsetzbar<br />
zu machen. So muss sicher am Userinterface noch viel verfeinert werden und die angezeigten<br />
Daten müssen besser mit Siemens abgestimmt sein. Zur Zeit basieren die angezeigten<br />
Daten auf Informationen der verschiedenen Dokumentationen. Viel Funktionalität hängt<br />
aber direkt mit den Funktionen des Gateways zusammen, weshalb auch diese Entwicklung<br />
vorangetrieben werden sollte.<br />
Im Verlauf der Arbeit konnten folgende Ideen dokumentiert werden:<br />
• Gebäudeplan integrieren Auf dem Tablet könnte der gesamte Gebäudeplan gespeichert<br />
sein, mit den Standorten aller Geräte. Eventuell könnte sogar Indoornavigation<br />
miteinbezogen werden, ähnlich dem Indoor WPS Projekt. [Indoor WPS Projekt]<br />
• Testartefakte zentral auf einem Server speichern Die Testresultate befinden<br />
sich nach abgeschlossenem Test auf dem Tablet. Dort nützen sie allerdings nicht<br />
viel da die Resultate nur vom Servicetechniker betrachtet werden können. Es wäre<br />
nützlich, wenn bei einem Abschluss des Tests die Resultate umgehend auf einen<br />
zentralen Server der Siemens geladen würden, inklusive eine Benachrichtigung an<br />
die nach bearbeitende Stelle.<br />
• Synchronisation der Daten mit Gateway. Daten wie Gebäudepläne, Zentralen<br />
und Testlogs sollten direkt auf der Zentrale oder einem zentralen Server der Siemens<br />
abgerufen werden können. Auf dem Tablet könnten auch die Manuals zu den Anlagen<br />
von Siemens angezeigt werden.<br />
• Sprachsteuerung FireTablet sollte mit Sprachbefehlen bedient werden können um<br />
möglichst hohe Bewegungsfreiheit zu garantieren und den Bedienkomfort zu erhöhen.<br />
• Prüfpflücker mit Bluetooth Um jeder Zeit Informationen über erfolgreiche Tests<br />
zu erhalten ist es unumgänglich, dass das Tablet mit dem Prüfpflücker kommunizie-<br />
Page 87 of 98
FireTablet<br />
6 Zusammenfassung (Autor: Samuel Hüppi)<br />
ren kann. Es ist unmöglich zu garantieren, dass das Tablet jederzeit Verbindung mit<br />
dem Gateway hat. Darum sollte direkt mit dem Prüfpflücker interagiert werden.<br />
Page 88 of 98
FireTablet<br />
7 Projektmanagement<br />
7 Projektmanagement<br />
Dieses Kapitel befasst sich mit der Planung des Projektes sowie der eingesetzten Software.<br />
Die Planung wird anhand des ursprünglichen und überarbeiteten Projektplans und der<br />
Übersicht zu den aufgewendeten Stunden pro Use Case dargestellt. Am Schluss befindet<br />
sich der Erfahrungsbericht.<br />
7.1 Zeitplan<br />
Im Verlauf des Projekts wurden zwei Projektpläne erstellt. Version 1 wurde ganz am<br />
Anfang erstellt anhand von Schätzungen wie viel Zeit wohl für die einzelnen Use Cases<br />
benötigt werden würde. Im Verlauf der Zeit geriet die Entwicklung ins Hintertreffen und<br />
es musste für die letzten fünf Wochen eine Version 2 des Projektplans erstellt werden. Bei<br />
diesem Vorgang wurde auch entschieden die Use Cases 05 Wartung abschliessen und 07<br />
Zentrale testen nicht zu realisieren damit man sich auf die anderen Use Cases konzentrieren<br />
konnte. Anschliessend sind beide Projektpläne abgedruckt.<br />
Page 89 of 98
FireTablet<br />
7 Projektmanagement<br />
7.1.1 Projektplan Version 1<br />
Abbildung 7.1: Gantt-Chart generiert von Redmine<br />
Page 90 of 98
FireTablet<br />
7 Projektmanagement<br />
7.1.2 Projektplan Version 2<br />
Abbildung 7.2: Überarbeiteter Projektplan für die letzten fünf Wochen<br />
Page 91 of 98
FireTablet<br />
7 Projektmanagement<br />
7.2 Stundenübersicht<br />
Die Grafik zeigt die eingesetzten Stunden aller Mitarbeiter. Es sind 15 Wochen obwohl das<br />
Semester nur 14 Wochen dauert. Dies liegt an einer Woche Ferien während dem Semester.<br />
Abbildung 7.3: Aufgewendete Zeit in Stunden verteilt über die 15 Wochen Projektdauer<br />
7.3 Infrastruktur<br />
In der nächsten Liste sind alle verwendeten Programme mit Versionsnummer aufgelistet.<br />
Software<br />
Eclipse Helios 3.6<br />
Android Development Toolkit 10.0.1<br />
GIT<br />
Hudson 1.396<br />
Texmaker 2.0<br />
Dia 0.97.1<br />
Gimp 2.6.10<br />
Inkscape 0.48<br />
Ubuntu 10.10<br />
Redmine<br />
Einsatzbereich<br />
Integrated Development Environment (IDE)<br />
Eclipse Plugin für Android Entwicklung<br />
Version Controll Tool<br />
Continuous Integration Server<br />
L A TEX Editor für die Dokumentation<br />
Grafikwerkzeug zur Erstellung von Diagrammen<br />
Bildbearbeitung<br />
Vektorbasierte Bildbearbeitung<br />
Betriebssystem Arbeitsrechner<br />
Projektmanagement Server<br />
Tabelle 7.1: Ansprechpersonen für Fragen betreffend<br />
der Brandmeldeanlagen von Siemens Schweiz<br />
Page 92 of 98
FireTablet<br />
7 Projektmanagement<br />
7.4 Erfahrungsbericht Samuel Hüppi<br />
Wie immer am Anfang eines Projekts ist der Rahmen sehr undefiniert und es scheint als<br />
könnte man sich in hundert Richtungen verrennen. Was mir in dieser Situation jedoch sehr<br />
geholfen hat, war die Anweisung des Dozenten, einfach einmal Dinge zu definieren und<br />
Annahmen zu treffen. Bei diesem Prozess setzt man sich viel intensiver mit der Materie<br />
auseinander und stösst schnell auf Punkte, die man nochmals überdenken muss. Nach und<br />
nach kommen weitere Inputs zum Gesamtbild dazu und es zeichnen sich langsam konkrete<br />
Umrisse ab, die man wiederum festhält.<br />
Beim praktischen Teil der Arbeit hatten wir anfangs vor allem mit dem Android-Framework<br />
zu kämpfen. Viele der Konzepte waren neu und es ging nur langsam aber stetig vorwärts.<br />
Mit der Zeit war dann vieles bekannter und die Entwicklungsgeschwindigkeit nahm etwas<br />
an Fahrt auf.<br />
Die Zusammenarbeit im Team empfand ich als sehr angenehm. Wir konnten uns gut<br />
ergänzen, da Daniel Bobst sehr genau arbeitet und ich eher auf ein Resultat zu renne. So<br />
konnte ich viel von seiner exakten Arbeitsweise profitieren und er vielleicht auch etwas<br />
von meinen raschen Lösungen. Die Situation mit den verschiedenen Arbeiten (SA/BA)<br />
empfand ich in keiner Hinsicht negativ. Natürlich entsteht minimal mehr Arbeit, dies ist<br />
aber eigentlich vernachlässigbar.<br />
Während der Arbeit hatte ich die Möglichkeit, mein Informatikwissen in sehr viele Bereiche<br />
auszudehnen. Sowohl was das Android-Framework betrifft als auch betreffend Dokumentation<br />
und Projektarbeit. Abschliessend kann man sagen, dass die Arbeit mit den vielen<br />
Open Source Tools absolut Freude macht und sich meine Einstellung gegenüber Open<br />
Source auch durch viel Praxiserfahrung nicht ins Negative gewandelt hat.<br />
Page 93 of 98
FireTablet<br />
Literaturverzeichnis<br />
Literaturverzeichnis<br />
[Hello, Android]<br />
[Android 2]<br />
[FS20 BACnet Spec]<br />
[FS20 Maintenance]<br />
[Prüfprotokoll]<br />
[Checkliste]<br />
Introducing Google’s Mobile Development Platform<br />
Third Edition<br />
Ed Burnette<br />
The Pragmatic Bookshelf<br />
http://www.pragprog.com/titles/eband/hello-android<br />
2010<br />
Grundlagen und Programmierung<br />
Arno Becker, Marcus Pant<br />
dpunkt.verlag<br />
http://www.dpunkt.de/buecher/3319.html<br />
2010<br />
FS20 Sinteso Fire Detection System MP3.0<br />
BACnet Interface Description Specification<br />
Siemens Building Technologies / Fire Safety & Security Products<br />
2010<br />
FS20 Fire Detection System<br />
Commissioning, Maintenance, Troubleshooting<br />
Siemens Building Technologies / Fire Safety & Security Products<br />
MP3.0<br />
2010<br />
PruefprotokollFuerBMA1.xls<br />
Prüfprotokoll<br />
Siemens Building Technologies<br />
25.05.2010<br />
Checkliste ”Revision FS20”<br />
Siemens Building Technologies / Fire Safety<br />
2010<br />
[APF Foliensatz 14] Foliensatz Modul Advanced Patterns and Frameworks 2010<br />
Prof. Peter Sommerlad<br />
referenzdokumente/14 boxing killing.pdf<br />
[Android Reference]<br />
Referenz für das Androidframework<br />
Google<br />
http://developer.android.com/reference/packages.html<br />
Abgerufen am: 23.5.2011<br />
[Android Manifest Reference] Android Manifest in der Reference.<br />
Google<br />
Page 94 of 98
FireTablet<br />
Literaturverzeichnis<br />
http://developer.android.com/guide/topics/manifest/<br />
manifest-intro.html<br />
Abgerufen am: 23.5.2011<br />
[Parcelable Reference]<br />
[Activity Testing]<br />
[Testing Tutorial]<br />
[Painless Threading]<br />
Android Manifest in der Reference.<br />
Google<br />
http://developer.android.com/reference/android/os/<br />
Parcelable.html<br />
Abgerufen am: 23.5.2011<br />
Activities testen mit den verschiedenen Testklassen<br />
Google<br />
http://developer.android.com/guide/topics/testing/<br />
activity_testing.html<br />
Abgerufen am: 25.5.2011<br />
Ein Testprojekt um das Testing von Androidklassen zu lernen<br />
Google<br />
http://developer.android.com/resources/tutorials/<br />
testing/helloandroid_test.html<br />
Abgerufen am: 30.5.2011<br />
Verwendung von Threads zusammen mit Activities<br />
Google<br />
http://developer.android.com/resources/articles/<br />
painless-threading.html<br />
Abgerufen am: 30.5.2011<br />
[Turbo-charge your UI] Wie man Listadapter effizient programmiert<br />
Google<br />
http://www.google.com/events/io/2009/sessions/<br />
TurboChargeUiAndroidFast.html<br />
Abgerufen am: 30.5.2011<br />
[Activity Reference]<br />
[Robotium]<br />
[roboguice]<br />
[Db4o]<br />
Activity auf der Android Reference<br />
Google<br />
http://developer.android.com/reference/android/app/<br />
Activity.html<br />
Abgerufen am: 30.5.2011<br />
Testframework für Android<br />
Jayway<br />
http://code.google.com/p/robotium/<br />
Abgerufen am: 23.5.2011<br />
Framework zur Vereinfachung des Android Framework<br />
http://code.google.com/p/roboguice/<br />
Abgerufen am: 24.5.2011<br />
Datenbank für Objekte<br />
Versant<br />
Page 95 of 98
FireTablet<br />
Literaturverzeichnis<br />
http://www.db4o.com/<br />
Abgerufen am: 25.5.2011<br />
[JUnit]<br />
Testing Framework für Java<br />
Open Source Project<br />
http://www.junit.org/home<br />
Abgerufen am: 30.5.2011<br />
[Dependency Injection] Wikieintrag zu Dependency Injection<br />
Wikipedia<br />
http://de.wikipedia.org/wiki/Dependency_Injection<br />
Abgerufen am: 30.5.2011<br />
[Microtesting]<br />
[Structure101]<br />
[BACnet Stack]<br />
[VdS Richtlinien]<br />
[Quelle]<br />
[Wikipedia Android]<br />
Microtesting ist ein Begriff von Joshua Kerievsky, Gründer von<br />
Industriallogic.<br />
IndustrialLogic<br />
https://elearning.industriallogic.com/gh/<br />
submit?Action=AlbumContentsAction&album=<br />
theBasics&devLanguage=Java<br />
Abgerufen am: 30.5.2011<br />
Codeanalyse Software<br />
headwaysoftware<br />
http://www.headwaysoftware.com/products/structure101/<br />
index.php<br />
Abgerufen am: 30.5.2011<br />
Homepage des BACnet Stack.<br />
http://bacnet.sourceforge.net/<br />
Abgerufen am: 1.6.2011<br />
VdS-Richtlinien für automatische Brandmeldeanlagen - Planung<br />
und Einbau<br />
VdS Schadenverhütung GmbH<br />
2010<br />
Beispiel eines Spider-Charts.<br />
http://en.wikipedia.org/wiki/File:Spider_Chart.jpg<br />
Abgerufen am: 2.6.2011<br />
Wikipediaeintrag zum Thema Android.<br />
http://de.wikipedia.org/wiki/Android_(Betriebssystem)<br />
Abgerufen am: 2.6.2011<br />
[Flashlight Stackoverflow] Hilfe Thread auf Stackoverflow betreffend dem Samsung<br />
Galaxy Tab und Flashlight<br />
http://stackoverflow.com/questions/5017455/<br />
how-to-use-camera-flash-led-as-torch-on-a-samsung-galaxy-tab<br />
Abgerufen am: 2.6.2011<br />
Page 96 of 98
FireTablet<br />
Literaturverzeichnis<br />
[Indoor WPS Projekt]<br />
Projekt um Positionsbestimmung in einem Gebäude zu haben.<br />
http://gis.hsr.ch/wiki/IndoorWPS<br />
Abgerufen am: 2.6.2011<br />
Page 97 of 98
FireTablet<br />
Glossary<br />
Glossar<br />
Activity Activities sind die Grundbausteine woraus ein Android Userinterface besteht. Sie<br />
stellen eigentlich eine Bildschirmseite dar welche auf Aktionen des Benutzers oder<br />
des System reagieren kann. Zudem ist sie verantwortlich für die Darstellung des<br />
Inhalts. 55, 56<br />
BMZ Brandmeldezentrale. 19–21, 32<br />
Context Der Context bietet Zugang zu globalen Informationen über eine Applikation. Es<br />
gibt verschiedene Klassen die von Context direkt oder indirekt ableiten zB Activity<br />
oder Application. Contexte werden an vielen Stellen verwendet um Activities zu<br />
starten oder Intents abzusetzen. 28, 56<br />
csv Comma Separated Value. 44<br />
Dependency Injection ”Dependency Injection ist ein Entwurfsmuster und dient in einem<br />
objektorientierten System dazu, die Abhängigkeiten zwischen Komponenten oder<br />
Objekten zu minimieren.”<br />
Zitat: http://de.wikipedia.org/wiki/Dependency Injection 30.5.2011. 56<br />
Exception Exceptions sind Ausnahmesituationen in einem Programmablauf. Tritt also eine<br />
ungewollte Situation auf haben Programme die Möglichkeit Exceptions zu werfen<br />
um ihre Unzufriedenheit mit Parameter oder Instanzen kund zu tun. 56<br />
Mock Mocks sind abgeleitete Klassen die so tun als wären sie die abgeleitete Klasse aber<br />
viele Funktionen vereinfachen. Ein Mock wird vor allem bei UnitTests eingesetzt um<br />
zeitaufwändige Klassen zu entschärfen. 56<br />
Prüfpflücker Der Prüfpflücker ist ein Gerät welches an Brandmelder angedockt werden<br />
kann um die Brandmelder auf korrekte Funktionalität zu prüfen. Sobald der Prüfpflücker<br />
angedockt ist kann ein Testalarm ausgelöst werden. Er erinnert von seiner Bauweise<br />
und Handhabung her etwas an ein Gerät mit welchem man z.B. Birnen pflücken<br />
geht. 6<br />
Page 98 of 98