Funktionsumfang der Software

Was die Software leisten soll …

Generell gesprochen soll die Software die Steuerung aller Schnittstellen-Karten übernehmen, namentlich das USB-PC-Interface-Board sowie die FS20-PC-Adapter übernehmen.

Für die Beschreibung der Software unterscheide ich nicht nur zwischen GUI (Grafical User Interface) und eigentlichem Steuerungscode, sondern auch in das Steuerprogramm unter WinXP und Win7.

Es ist nämlich leider so, dass das USB-PC-Interface-Board nur unter WinXP angesteuert werden kann, da es nach Abkündigung durch die Herstellerfirma keine aktualisierten Treiber mehr gegeben hat. Und die FS20-PC-Adapter laufen stabil unter Win7, so dass nicht nur ein Split der Steuerung nötig war, sondern auf demselben Computer auch zwei Betriebssystem installiert werden mussten – mit entsprechender Betriebssystem-übergreifender Kommunikation der beiden separaten Steuerungsprogramme. Im Kapitel Win7 und WinXP beschreibe ich das im Detail.

Das USB-PC-Interface-Board besteht im wesentlichen aus 32 Eingängen und 32 Ausgängen sowie einer Überwachungsfunktion (Watch Dog). Wie in der Beschreibung der Hardware dargelegt, funktionieren die Relais-Schaltkanäle mit und ohne PC, z.B per Taster gesteuert. Damit steht der Zweck der Software im Grundsatz fest:

  • Steuerung von total 26 Ausgängen des USB-PC-Interfaces, um Schaltimpulse an Interconnection-Boards zu liefern und so beispielsweise Relais zu schalten. Die Ansteuerung ist ein nicht zeitkritischer Impuls von einigen hundert Millisekunden Dauer.
  • Steuerung von 10 Ausgängen des Interfaces, um LEDs in der Frontplatte der Schalttafel zu schalten. Diese signalisieren Zustände, wie im Kapitel Szenarien beschrieben. Die Ansteuerung der LEDs ist dauerhaft, solange das jeweilige Szenario Gültigkeit hat.
  • Auslesen von 32 Eingangszuständen des Interfaces, um z.B. Schaltzustände auf dem Interconnection-Board, von den FS20-Schaltelementen oder von Fronttastern auszulesen. Dieses Auslesen ist ziemlich zeitkritisch, weil die Software möglichst in Echtzeit die externen Schaltvorgänge ermitteln und auf dem Monitor ausgeben soll.
  • Auswerten des entsprechend per Taster oder per Touchscreen gewünschten Szenarios und Setzen oder Löschen der Ausgänge, die eine Gruppe von Relais über das Interconnection-Board schalten.
  • Szenarien-Konfigurations-Tool, um diejenigen Relais zu bestimmen, die zu einer Schaltgruppe bzw. zu einem speziellen Szenario gehören sollen, sowie diejenigen Relais, die bei Auswahl des Szenarios ihren Zustand nicht ändern (Tristate).

Über diesen grundsätzlichen Zweck der Software hinaus gibt es noch einige eingebaute Funktionen mehr:

  • Timerfunktionen: wird per Szenario das Hauptlicht ausgeschaltet, soll eine Lampe für eine wählbare Dauer eingeschaltet werden, um den Weg aus dem Büro zu beleuchten.
  • Bewegungsmelder: Bewegt sich eine Person bei bestimmten Szenarien im Büro, so soll ebenso die Leuchte eingeschaltet werden. Dies z.B. im Szenario Pause, bei dem sonst alle Lampen aus sind. Nach einiger Zeit soll die Orientierungsleuchte in jedem Fall ausschalten.
  • Abschalten von über die Szenarien wählbaren Geräte im Büro, wenn sich nach voreingestellter Zeit nichts mehr bewegt (Standby-Schaltung).
  • Abschalten aller Geräte zur vorgegebener Uhrzeit (Nacht-Abschaltung)
  • Anzeige von Datum und Uhrzeit
  • Anzeigen der aktuellen Raum- und Aussentemperatur
  • Konfigurationsmenü für Farben und Fonds (Setup-Menü)
  • Anzeigen von System-internen Zuständen und Flags sowie des Energieverbrauchs der über die Software gesteuerten Geräte
  • Anzeigen von Kamerabildern der eingebauten Cam

Damit stehen die Funktionen fest. Im Laufe der Zeit ist die Steuerung so komplex und umfangreich geworden, weil immer mehr Geräte dazu kamen, dass es eine Herausforderung war, alles Steuerelemente auf einem 10-Zoll-Monitor in lesbarer Grösse anzuzeigen. Hier musste ein Software-Trick her, den ich ebenso im folgenden Kapitel beschreibe.

Das ganze Kapitel muss nochmal überarbeitet werden mit all dem, was die Schnittstellenkarte heute steuert und tut. Ausserdem braucht es eine Trennung zwischen dem GUI und der eigentlichen Steuerung.