29.11.2014 Aufrufe

Download (11Mb)

Download (11Mb)

Download (11Mb)

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!