Ablauf des Programms - GollmerSt/SolvisSmartHomeServer GitHub Wiki
Das Programm durchläuft nach dem Start vier verschiedene Phasen. Erst in der dritten Phase sind sämtliche Messwerte eingelesen und das Modul ist zur Steuerung der Solvis-Anlage bereit.
Die Phasen 1 und 2 werden nur dann ausgeführt, wenn das Programm neu installiert wurde oder sich die Steuerdatei control.xml verändert hatte. Dies wird vom Server seit Version 1.2.1 selber erkannt. Wenn man diese Phasen gezielt manuell anstoßen will, kann man den Server mit dem Parameter
--server-learn
aufzurufen. In diesem Fall wird das Programm nach dem Lernvorgang (Phase 1 und 2) beendet.
Beim ersten Start des Programmes und nach Änderung des control.xml-Files müssen die Grafiken angelernt werden, die zur Identifikation der Screens benötigt werden. Das erfolgt vom Server (seit Version V1.2.1) normalerweise vollautomatisch, in dem es durch die verschiedenen Bildschirme der SolvisControl geht und sich dabei die zur Identifikation notwendigen Bildschirmbereiche merkt. Diese werden in die Datei graficData.xml gespeichert, so dass die Learning-Phase nur beim ersten Starten des Moduls durchlaufen wird.
Dieser Teil erzeugt auf der Console folgende Einträge (Stand 14.08.2020, bei einem Heizkreis):
08:09:25,989|LEARN|Learning started.
08:09:51,429|LEARN|Screen grafic <Home> learned.
08:09:55,580|LEARN|Screen grafic <Solar> learned.
08:10:00,270|LEARN|Configuration mask: 0x1000001
08:10:08,975|LEARN|Screen grafic <Nachttemperatur> learned.
08:10:08,977|LEARN|Screen grafic <NachttemperaturNotSelected> learned.
08:10:13,083|LEARN|Screen grafic <NachttemperaturSelected> learned.
08:10:20,808|LEARN|Screen grafic <Warmwasser> learned.
08:10:33,150|LEARN|Screen grafic <Tagestemperatur> learned.
08:10:33,152|LEARN|Screen grafic <TagestemperaturNotSelected> learned.
08:10:37,273|LEARN|Screen grafic <TagestemperaturSelected> learned.
08:11:00,887|LEARN|Screen grafic <Zirkulation> learned.
08:11:08,540|LEARN|Screen grafic <Sonstiges> learned.
08:11:08,542|LEARN|Screen grafic <Sonstiges 1> learned.
08:11:16,659|LEARN|Screen grafic <Heizkreis> learned.
08:11:27,964|LEARN|Screen grafic <Schornsteinfeger> learned.
08:11:35,606|LEARN|Screen grafic <Anlagenstatus WW> learned.
08:11:39,609|LEARN|Screen grafic <Anlagenstatus HK> learned.
08:11:51,463|LEARN|Screen grafic <Sonstiges 2> learned.
08:11:55,509|LEARN|Screen grafic <Sonstiges_Nutzerauswahl> learned.
08:11:59,536|LEARN|Screen grafic <Nutzerauswahl> learned.
08:12:10,849|LEARN|Screen grafic <Zaehlfunktion> learned.
08:12:18,532|LEARN|Screen grafic <Sonstiges 3> learned.
08:12:22,570|LEARN|Screen grafic <Uhrzeit/Datum> learned.
08:12:26,782|LEARN|Screen grafic <Zeiteinstellung> learned.
Die dabei ausgewerteten Bildschirme und Bildschirmteile werden im Ordner LearnedImages in dem beschreibbaren Pfad abgelegt, der in der base.xml unter dem Attribut writablePathLinux bzw. writeablePathWindows definiert ist. Dabei sind die Namen der Screenshots so gewählt, dass er den zu erwartenden Bildschirminhalt gut beschreiben sollte und Differenzen leicht erkennbar sind (wichtig beim Test neuer Konstellationen).
Beim ersten Start des Programmes und nach Änderung des control.xml-Files müssen die Grafiken angelernt werden, die zur Identifikation der Status benötigt werden. Das erfolgt vom Server (seit Version V1.2.1) normalerweise vollautomatisch, in dem es durch die verschiedenen Bildschirme der SolvisControl geht und sich dabei die zur Identifikation des Status notwendigen Symbole merkt. Diese werden in die Datei graficData.xml gespeichert, so dass die Learning-Phase nur beim ersten Starten des Moduls durchlaufen wird.
Bei diesem Vorgang werden temporär die Betriebszustände der Anlage verändert!
Der Server stellt nach dem Anlernen der Symbole des jeweiligen Betriebsmodus wieder auf den ursprünglichen zurück, kurzzeitig befindet sich die Anlage jedoch in einem anderen Zustand, das sollte beachtet werden um entsprechend vorher oder nachher (wenn in dieser einzugreifen. Dieser Teil erzeugt auf der Console folgende Einträge (Stand 14.08.2020):
08:12:30,816|LEARN|Screen grafic <Zeiteinstellung_YYYY> learned.
08:12:38,803|LEARN|Screen grafic <Zeiteinstellung_MM> learned.
08:12:46,840|LEARN|Screen grafic <Zeiteinstellung_DD> learned.
08:12:54,809|LEARN|Screen grafic <Zeiteinstellung_hh> learned.
08:13:02,863|LEARN|Screen grafic <Zeiteinstellung_min> learned.
08:13:20,134|LEARN|Screen grafic <ModeTag> learned.
08:13:22,785|LEARN|Screen grafic <ModeNacht> learned.
08:13:25,385|LEARN|Screen grafic <ModeStandby> learned.
08:13:27,952|LEARN|Screen grafic <ModeTimer> learned.
08:13:37,593|LEARN|Screen grafic <WWPumpeAus> learned.
08:13:40,679|LEARN|Screen grafic <WWPumpeAn> learned.
08:13:43,899|LEARN|Screen grafic <WWPumpeAuto> learned.
08:13:47,577|LEARN|Learning finished.
(Die Bildschirm-Ausschnitte der Uhreinstellung werden auch in dieser Phase erkannt. Das hat Programm-interne Gründe.)
Die Dabei ausgewerteten Bildschirme werden im Ordner LearnedImages in dem beschreibbaren Pfad abgelegt, der in der base.xml unter dem Attribut writablePathLinux bzw. writeablePathWindows definiert ist. Dabei sind die Namen der Screenshots so gewählt, dass er den zu erwartenden Bildschirminhalt gut beschreiben sollte und Differenzen leicht erkennbar sind (wichtig beim Test neuer Konstellationen).
Seit Version 1.2.1 liegen nach Ablauf der Phasen 1 und 2 in dem Pfad <beschreibbarer Pfad>/SolvisServerData/LearnedImages folgende Screenshots und Grafiken:
Die Namen der Screenshots haben folgende Syntax:
<Name der Anlage>__<Bildschirmname>__<Symbolname (optional)>__<Fortlaufende Nummer>.png
Grafiken, welche aus Teilen dieser Screenshots bestehen, haben folgende Namenskonvention:
<Name der Anlage>__graphic__<Symbolname>__<Fortlaufende Nummer>.png
Durch diese Namensgebung kann man seit der Version 1.2.1 den Learning-Vorgang deutlich besser analysiern, z.B. wenn der Server eine noch nicht getestete Konstellation der Solvis-Anlage unterstützen soll.
In dieser Phase beginnt das zyklische Auslesen der Messwerte. Der Client erhält entsprechend die Werte. Gleichzeitig erfolgt das Auslesen der Anlageparameter von der SolvisControl. Dies kann je nach Konfiguration einige Minuten in Anspruch nehmen.
In dieser Phase sind alle Anlagenparameter ausgelesen und die Messauswertung erfolgt zyklisch. Anlageparameter werden immer erst auf Anforderung gelesen/verändert. In dieser Phase wird auch analysiert, ob der Screen-Saver aktiv ist, ob ein Zugriff durch den Anwender selber erfolgt ist oder der Fehlerbildschirm angezeigt wird. Diese können entsprechende Events dann im SmartHome-System auslösen (außer Screen-Saver).
Wurde ein Eingriff durch ein Anwender direkt an der SolvisControl (oder über SolvisRemote) erkannt, werden alle Anlagenparameter erneut gelesen, wenn der Anwenderzugriff beendet ist.
Es gibt einige berechnete Werte, welche genauere Werte liefern, als die auf der SolvisControl angezeigten. Dazu gehören die Brennerlaufzeiten. Diese müssen regelmäßig mit den Werten abgeglichen werden, welche von der SolvisControl angezeigt werden, da diese andernfalls auseinanderlaufen. Dazu erfolgt entsprechenden dem Messwert eine Synchronisation. Diese bewirkt, dass in dieser Phase die SolvisControl innerhalb eines kurzen Zeitintervalls auf der Anzeige mit dem zu synchronisierenden Werte eingestellt bleibt. Werden die Werte das erste Mal synchronisiert, dauert dies solange, bis sich der Wert in der Solvis-Anzeige ändert.
Wird der Server das erste Mal genutzt, dauert diese Synchronisationsphase länger und bewirkt, dass solange der Brenner läuft die Zählfunktion-Anzeige auf dem Display der SolvisControl erscheint.
Da die Uhr der Solvis-Anlage nicht besonders genau ist (meine geht mehr als 1 Minute/Woche vor), wird diese vom Server ständig beobachtet. Weicht sie mehr als 30s von der Uhr des Systems ab, auf dem der Server läuft, wird sie automatisch korrigiert.
Daneben wird der Bildschirm der SolvisControl etwa alle 30s untersucht, ob ein Anwenderzugriff erfolgt ist.