Installation - GollmerSt/SolvisSmartHomeServer GitHub Wiki
Der SolvisSmartHome-Server benötigt die Laufzeitumgebung von Java (JRE). Auf Windows-Systemen stehen Installtionsdateien unter folgendem Link zur Verfügung: https://www.java.com/en/download/
Unter Linux gibt es ebenfalls Oracle-JRE. Ich habe OpenJDK verwendet, es soll zwar weniger performant sein, wegen der neuen Lizenz-Politik von Oracle verwende ich OpenJDK, das wie folgt installiert werden kann (unter Raspbian Stretch, sollte bei anderen Distributionen ähnlich sein):
Mit
apt search openjdk-.*-jre*
kann man sich die aktuellen JRE-Versionen für das aktuell installierte Betriebssystem ansehen.
Die aktuell stabile Version 9 für Raspbian (hier Stretch) wird dann wie folgt installiert:
apt install openjdk-9-jre
Die installierte Version kann dann über
java -version
angezeigt werden.
Getestet wurde es auf Windows mit der Oracle-JRE-Version jre1.8.0_261, auf der Linux-Seite (Raspbian) mittels OpenJDK 8 .. 11.
Das Installationspaket beinhaltet folgende Dateien:
Datei | Bedeutung |
---|---|
Makefile | Zur Installation |
SolvisSmartHomeServer.jar | Das eigentliche Programm |
SolvisSmartHomeServer.pdf | Ein älterer Stand dieser Dokumentation |
base.xml.new | Steuerdatei mit den Basis-Daten |
base.xsd | XML Schema hierzu |
SolvisSmartHomeServer.service | SystemD-Datei für die Service-Einrichtung |
DebugSolvisSmartHomeServer.service | SystemD-Datei für die Service-Einrichtung im Debug-Mode (Remote-Debugging) |
CHANGES.txt | Datei mit den Änderungen |
73_SolvisClient.pm | FHEM-Modul |
Bis zur Version V01.05.00 lief der SolvisSmartHomeServer unter der User-Kennung fhem. Damit auch User ohne FHEM das Makefile so verwenden können, wie es ist, läuft ab V01.05.01 der Server unter dem User solvis.
Dieser User solvis legt das Makefile bei der Installation an. Es ist ein User, für den kein Login möglich ist. Sein Home-Directory liegt unter /opt/solvis und wird ebenfalls vom Makefile angelegt.
Wie später bei den Änderungen der Anpassung der base.xml beschrieben, benötigt der SolvisSmartHomeServer ein beschreibaren Ordner. Default-mäßig ist in der base.xml seit der V01.05.01 dort der Pfad /opt/solvis definiert. Vor dieser Version war es /opt/fhem. Das war jedoch ungünstig, wenn man es auf einem System installieren wollte, wo kein FHEM vorliegt.
Wenn man das Verzeichnis /opt/solvis nutzt, erzeugt das Makefile dieses Verzeichnis (falls nicht vorhanden) und setzt die notwendigen Rechte. Wenn der Anwender ein anderes Verzeichnis wählt, muss er selber dafür sorgen, dass dieses Verzeichnis existiert und vom User solvis beschrieben werden kann entweder in dem dieser Owner dem User solvis gehört, der User solvis der Gruppe des Orners zugehörig ist oder (weniger zu empfehlen) für alle schreibberechtigt ist.
Nur der Make-Aufruf sudo make uninstallAll
löscht sowohl das angelegte Verzeichnis /opt/solvis zusammen mit dem User solvis. Das erfogt nur dann, wenn im Verzeichnnis /opt/solvis und dessen Unterverzeichnisse keine zusätzlichen Dateien hinzugekommen sind, die weder vom Makefile noch vom SolvisSmartHomeServer angelegt wurden.
Im Paket liegt die Datei base.xml.new. Diese ist in base.xml umzubenennen und dann entsprechend anzupassen. Die Anpassungsmöglichkeiten sind auf der Seite Anpassung der base.xml beschrieben.
Zur Installation dient das beiliegende Makefile.
Es wird wie folgt aufgerufen:
sudo make <Installationsart>
Die Aufrufmöglichkeiten werden im Anhang unter Makefile-Aufrufsarten näher aufgeführt, hier werden nur die wichtigsten genannt, welche zur Erstinstallation und später zum Update notwendig sind.
Bei der Erstinstallation ist das Makefile wie folgt starten:
sudo make install
Nur wenn der SolvisSmartHome-Server nicht auf dem gleichen System wie Fhem läuft oder ein anderes Smart-Home-System verwendet werden soll, sind die anderen Installationsarten interessant.
sudo make installSolvis
installiert nur den SolvisSmartHomeServer.
Ab Version 1.00.02 sind die Passworte AES-256-Verschlüsselt in die base.xml einzutragen. Nur das Passwort der Solvis-Anlage kann – wegen der Abwärtskompatibilität - NOCH im Klartext eingetragen werden. Auf längere Sicht sollte jedoch auch bei der Solvis-Anlage auf das verschlüsselte Password übergegangen werden. Um die verschlüsselten Passworte zu erhalten, ist das Makefile wie folgt aufzurufen:
sudo make crypt
Es wird dann anschließend nach dem zu verschlüsselnden Wort gefragt. Danach erfolgt die Ausgabe des verschlüsselnden Wertes. Diesen Befehl kann man auch schon aufrufen, bevor man die base.xml fertig bearbeitet hat.
Um die Funktionalität der Mail zu testen, kann das Makefile wie folgt gestartet werden:
sudo make testmail
Anschließend wird mit den Daten der base.xml-Datei eine Testmail verschickt. Diese Make-Funktion arbeitet lokal in dem Verzeichnis, in dem das Makefile liegt und berücksichtigt die dort liegende base.xml.
Sollte man beim Austesten des Mail-Versands die base.xml geändert haben, ist anschließend noch ein sudo make update
notwendig.
Nach sudo make install
oder sudo make installSolvis
kann der Server auf dem System ausgeführt werden.
Wie hier erwähnt wird, muss als Erstes der Server die Grafiken der Solvis-Anlage lernen.
Nun kann der Learn-Modus mittels des Makefiles wie folgt gestartet werden:
sudo make learn
Nun beginnt das Lernen der Grafiken. Dieses Anlernen ist etwas kritisch. Man sollte dabei die Terminal-Ausgaben als auch den Solvis-Bildschirm im Auge behalten. Da die SolvisControl leider manchmal Touchs verschluckt, kann der Learn-Vorgang fehlerhaft sein. Ich habe sehr viel Aufwand dazu verwendet, dass dies erkannt wird und in den meisten Fällen wird auch richtig darauf reagiert und der fehlgelaufene Lern-Vorgang wird wiederholt. 100%ig ist es noch nicht, ganz selten muss man den Lernvorgang wiederholen.
Sollte er nicht durchlaufen, bitte nochmal versuchen, wenn kein prinzipielles Problem (z.B. mit der speziellen Anlagenkonfiguration) vorliegt, sollte er dann fehlerfrei durchkommen.
Während des Anlernens sollte niemand unter der Dusche stehen, da kurz die Warmwasser-Pumpe ein- /ausgeschaltet wird um die Grafik einer eingeschalteten Pumpe zu lernen (ca. 4s). Je nach Kesseltemperatur kann das zu Überraschungen führen.
Der Lernvorgang wird seit der Version 1.2.1 automatisch angestoßen, wenn er erforderlich ist.
sudo make learn
ist daher nur noch dann auszuführen, wenn der Server ein ungewohntes Verhalten zeigt. Das zeigt sich dadurch, dass im Log Fehlermeldungen erscheinen, dass bestimmte Fenster nicht gefunden werden konnten und es dabei zu endgültigen Abbrüchen gekommen ist. Der Anlernvorgang kann nicht 100%ig sicher sein, da die Solvis-Anlage manchmal Touchs nicht registriert, was der Anlernvorgang meist berücksichtigt. Der Anlernvorgangist ist mittlerweile so ausgereift, dass ich seit der Version 1.2.1 keine Anlern-Probleme beobachtet habe, so dass ein manuell angestoßender Anlernvorgang meistens nicht mehr notwendig ist.
Will man die Meldungen des Servers direkt sehen, kann man den Server auch in der Console mittels folgenden Make-Aufrufs starten:
sudo make foreground
Das empfiehlt sich auch für die ersten Beobachtungen nach einer Neuinstallation oder Updates.
Ab Version 1.2.1 kann man dabei auch den Anlernvorgang verfolgen, wenn sich die Steuerdatei geändert hat. Die beim Anlernvorgang ausgewerteten Scrweenshots werden in den Ordner LearnedImages abgelegt.
Ist der Lernvorgang erfolgreich, ist der Server als Service einzurichten. Das erfolgt mit folgendem Makefile-Aufruf:
make installService
Hierbei werden die Datei SolvisSmartHomeServer.service bzw. DebugSolvisSmartHomeServer.service in das Verzeichnis /etc/systemd/system
abgelegt, anschließend der Service enabled und gestartet.
Man kann auch dem Server im Debug-Mode starten. Diese Art ermöglicht es, den Server Remote zu debuggen. Näheres im Anhang unter den Make-Aufrufen zu finden.
Der Server sollte nicht gleichzeitig im debug und normalem Mode gestartet sein. Nur der zuerst gestartete würde dann laufen.
U.a. stehen folgende Befehle zur Verfügung, hierbei ist <server> im normalen mode SolvisSmartHomeServer, im Debug-Mode DebugSolvisSmartHomeServer:
Make-Befehl | Bedeutung |
---|---|
sudo systemctl status <server> |
Liefert den aktuellen Status des Servers |
sudo systemctl start <server> |
Startet den Server |
sudo systemctl stop <server> |
Stoppt den Service |
sudo systemctl restart <server> |
Beendet den Server und startet ihn wieder neu |
sudo systemctl disable <server> |
Disabled den Dienst, der Server wird nach dem nächsten Boot-Vorgang nicht mehr automatisch gestartet |
sudo systemctl enable <server> |
Enabled den Dienst, der Server wird nach dem nächsten Boot-Vorgang wieder automatisch gestartet. |
Der Server sollte nun bei jedem Bootvorgang gestartet werden.
Die Datei „73_SolvisClient.pm“ wurde durch das Makefile in das FHEM-Verzeichnis kopiert.
Läuft FHEM auf einem anderen System kann das durch
sudo make installFHEM
erfolgen.
Nach einem FHEM-Neustart kann das Modul mittels folgender Define-Anweisung in FHEM eingebunden werden:
define <Anlagen-Id wie in base.xml> SolvisClient <tcp-ip-Adresse des Servers>:10735
Meistens wird der Server auf dem System des SmartHome-Systems laufen. Dann reicht folgende Anweisung:
define <Anlagen-Id wie in base.xml> SolvisClient localhost:10735
Zum ersten Einrichten reicht das schon. Die Readings der Solvis-Anlage sollten jetzt schon erscheinen. Auch die entsprechenden Pull-Down-Menüs für die möglichen SET/GET-Befehle sollten jetzt auswählbar sein.
Die Dokumentation des FHEM-Moduls ist wie üblich über das Web-Interface von FHEM ereichtbar und ist daher nicht Bestandteil dieser Dokumentation.
Solange der Server noch nicht als Service in das System eingebunden ist (mittels sudo make installService) reicht es, einfach sudo make install aufzurufen.
Ist der Service integriert, sollte folgender Make-Aufruf genutzt werden:
sudo make update
Der bewirkt, dass zuerst der Service gestoppt wird, dann die Dateien ausgetauscht werden und zum Schluss der Service wieder gestartet wird. Dabei wird auch der FHEM-Client mit aktualisiert.
Bei einem System ohne FHEM ist stattdessen folgender Make-Aufruf zu verwenden:
sudo make updateSolvis
Falls der Fhem-Client „73_SolvisClient.pm“ upgedatet worden sein sollte, sicherheitshalber Fhem (unter Fhem selber) mittels
shutdown restart
neu starten. Alternativ kann natürlich der Fhem-Service direkt unter Linux mit folgendem Befehl neu gestartet werden:
sudo systemctl restart fhem
Sollten sich die Grafik-Definitionen im neuen Programmpaket geändert haben, wird beim Starten des Servers (ab Version 1.2.1) automatisch ein Learning gestartet. Erst nach dem Learning werden die Client-/MQTT-Schnittstellen geöffnet. In diesem Fall kann es ca. 5-10 Minuten (Je nach Anlagen-Konfiguration) dauern, bis der Zugriff des Smart-Home-Systems möglich ist. Bei späteren Serverstarts erfolgt dieser Lernvorgang nicht mehr.
Sollte jemand die control.xml an seine eigenen Wünschen anpassen oder enthält das Update-Paket ein aktualisierte control.xml-Datei ist immer ein neuer Lern-Vorgang auszuführen. Der erfolgt ab Version 1.2.1 mit dem Serverstart automatisch.
Wer ihn von Hand anstoßen und beobachten will kann folgenden Make-Aufruf nutzen:
sudo make learn
Dieser Aufruf bewirkt bei einem installierten Server ein Stoppen des Servers, (nach einem Update) ein Austausch der geänderten Dateien und anschließend wird der Lernvorgang gestartet. Am Ende (bei fehlerfreiem Durchlauf) wird dann der Server wieder im Hintergrund gestartet.
Das Programmpaket kann mit folgendem Make-Befehl deinstalliert werden:
sudo make uninstall
Dieser Befehl löscht die vom Makefile angelegten Dateien. Auch der Dienst wird abgemeldet.
Will man wirklich alles löschen, auch die vom SmartHomeServer angelegten Log-Dateien, Steuerfiles, Sicherungadateien sowie den angelegten User solvis mit dessen Userverzeichnis (siehe auch hier), so sollte man folgenden Make-Befehl nutzen:
sudo make uninstallAll
- Die Datei 73_SolvisClient.pm wird in den Ordner /opt/fhem/FHEM kopiert
- Es wird ein User solvis mit dem Home-Verzeichnis /opt/solvis angelegt.
- Es wird ein Ordner /opt/solvis/SolvisSmartHomeServer angelegt
- In diesen werden die Dateien base.xml, base.xsd und SolvisSmartHomeServer.jar kopiert und mit entsprechenden Rechten versehen
- In den Ordner /etc/systemd/system wird die Datei SolvisSmartHomeServer.service sowie DebugSolvisSmartHomeServer.service kopiert
- Durch den Befehl
systemctl enable SolvisSmartHomeServer
erstellt das System einen Link zur Datei /etc/systemd/system/SolvisSmartHomeServer.service im Ordner /etc/systemd/system/multi-user.target.wants. - Durch den Befehl
systemctl enable DebugSolvisSmartHomeServer
erstellt das System einen Link zur Datei etc/systemd/system/DebugSolvisSmartHomeServer.service im Ordner /etc/systemd/system/multi-user.target.wants
Das Programm selber legt in das Verzeichnis <writablePathLinux>/SolvisServerData folgende Dateien an (Default: /opt/solvis/SolvisServerData):
- control.xml, control.xsd, graficData.xml, graficData.xsd, log4j2.xml, tinylog.properties, measurements.xml und measurements.xsd
- Die Log-Dateien solvis.log, solvis-tiny.log.*, solvis-error.log
- Zusätzlich wird in diesem Orner die Ordner LearnedImages und SolvisErrorImages vorhanden, in welche die Screenschots des Lernvorganges und Fehlerscreens der Solvis-Anlage abgelegt werden.
Das Installationspaket beinhaltet folgende Dateien:
Datei | Bedeutung |
---|---|
SolvisSmartHomeServer setup.exe | Installationsprogramm |
SolvisSmartHomeServer.pdf | Ein älterer Stand dieser Dokumentation |
73_SolvisClient.pm | FHEM-Modul |
Durch Aufruf des Programmes SolvisSmartHomeServer setup.exe erfolgt die Vorinstallation des Servers. Das Installationsprogramm fragt folgendes ab:
- Das Installationsverzeichnis (Default: C:\JavaPgms\SolvisSmartHomeServer)
- Der Pfad im Startmenü
- Abfrage, ob der Server mit Windows oder bei Benutzeranmeldung gestartet werden soll
Dabei werden folgende Dateien im dabei auszuwählenden Installationsverzeichnisses angelegt:
Datei | Bedeutung |
---|---|
SolvisSmartHomeServer.jar | Das eigentliche Programm |
base.xml.new | Steuerdatei mit den Basis-Daten |
base.xsd | XML Schema hierzu |
CHANGES.txt | Datei mit den Änderungen |
Startup.bat | Batch-Datei für die Aufrufsvarianten |
Task.xml | XML-Datei welche in die Aufgabenplanung importiert wird |
unins000.dat | Datei zur Deinstallation |
unins000.exe | Deinstallationsprogramm |
Die Installation hat noch folgende Einträge im Startmenü bereitgestellt:
Die Einträge im Start-Menü haben folgende Bedeutung:
Eintrag | Bedeutung |
---|---|
CreateCsv | Erstellt im Userverzeichnis eine CSV-formatierte Dokumentationsdatei mit den Kanälen der aktuellen Dokumentation. Zu beachten: Vorher muss ein Learning-Vorgang fehklerfrei ausgeführt worden sein. |
Crypt | Aufruf zum Verschlüsseln der Passwörter |
Learn | Aufruf zum Anlernen der Solvis-Grafik |
Send testmail | Sendet eine Testmail |
SolvisSmartHomeServer | Manueller Start des SolvisSmartHomeServer |
SolvisSmartHomeServer in DOS window | Server im DOS-Fenster starten |
Terminate | SolvisSmartHomeServer kontrolliert beenden |
Uninstall SolvisSmartHomeServer | Server-Paket deinstallieren |
Im Installationsverzeichnis liegt die Datei base.xml.new. Diese ist in base.xml umzubenennen und dann entsprechend anzupassen. Die Anpassungsmöglichkeiten sind auf der Page Anpassung der base.xml beschrieben.
Nachdem die base.xml angepasst wurde, muss der Server die Grafiken der Solvis-Anlage anlernen, wie hier erwähnt wird. Dazu ist er erst mal mittels des Startmenü-Eintrages Learn zu starten.
Nun beginnt das Lernen der Grafiken. Dieses Anlernen ist etwas kritisch. Man sollte dabei die Terminal-Ausgaben als auch den Solvis-Bildschirm im Auge behalten. Da die SolvisControl leider manchmal Touchs verschluckt, kann der Learn-Vorgang fehlerhaft sein. Ich habe sehr viel Aufwand dazu verwendet, dass dies erkannt wird und in den meisten Fällen wird auch richtig darauf reagiert und der fehlgelaufene Lern-Vorgang wird wiederholt. 100%ig ist es noch nicht, ganz selten muss man den Lernvorgang wiederholen.
Sollte er nicht durchlaufen, bitte nochmal versuchen, wenn kein prinzipielles Problem (z.B. mit der speziellen Anlagenkonfiguration) vorliegt, sollte er dann fehlerfrei durchkommen.
Während des Anlernens sollte niemand unter der Dusche stehen, da kurz die Warmwasser-Pumpe ein- /ausgeschaltet wird um die Grafik einer eingeschalteten Pumpe zu lernen (ca. 4s). Je nach Kesseltemperatur kann das zu Überraschungen führen.
Will man die Meldungen des Servers direkt sehen, kann man den Server auch mittels des Start-Menüs SolvisSmartHomeServer im DOS-Fenster ausführen. Dann werden mögliche Fehlermeldungen direkt angezeigt und man kann das base.xml-File entsprechend korrigieren. Evtl. kommt beim Start auch einen Meldung der Firewall. Der lokale Netztwerkzugriff muss für den SolvisSmartHomeServer erlaubt werden.
Bei einer neuen Version oder Anlagen-Konfiguration empfiehlt es sich immer erstmal diesen Weg zu gehen, da man Probleme direkt erkennen kann, ohne erst in die Logfiles zu shenen.
Nach der Installation und falls die Checkbox selektiert wurde, dass der Server mit Windows oder mit dem Anwender-Login gestartet werden soll, ist in der Aufgabenplanung der Task SolvisSmartHomeServerTask automatisch angelegt worden. Die Start-Optionen können nachträglich über die Aufgabenplanung geändert werden.
Der Task muss über die Aufgabenplanung einmal manuell gestartet werden, um die Firewall-Einstellung richtig setzen zu können.
Um den Server zu aktualisieren, ist es erforderlich ihn zuerst zu beenden. Das erfolgt über das Startmenü Terminate. Anschließend reicht es das Installationsprogramm SolvisSmartHomeServer setup.exe der neuen Version aufzurufen.
Möglicherweise ist das base.xml noch an die neue Version anzupassen.
Es empfiehlt sich den Server über den Startmenüeintrag SolvisSmartHomeServer im DOS-Fenster zu starten, damit man mögliche Fehlermeldungen direkt erkennen kann und evtl. die base.xml entsprechend zu erweitertn/ändern.
Sollten sich die Grafik-Definitionen im neuen Programmpaket geändert haben, wird beim Programmsart automatisch der Lern-Vorgang gestartet. In dieser Zeit sind die MQTT- und Client-Schnittstelle noch nicht offen. Das Learning dauert ca. 5 Minuten!
Sollte jemand die control.xml an seine eigenen Wünschen anpassen oder enthält das Update-Paket ein aktualisierte control.xml-Datei ist immer ein neuer Lern-Vorgang auszuführen. Der erfolgt ab Version 1.2.1 mit dem Serverstart automatisch.
Wer ihn von Hand anstoßen und beobachten will, kann über das Menü Learn den Vorgang von Hand anstoßen. Dabei öffnet sich ein DOS-Fenster, in dem man dann die einzelenn Schritte des Vorganges sieht.
Um den Server zu deinstallieren, ist es erforderlich ihn zuerst zu beenden. Das erfolgt über das Startmenü Terminate.
Das Programmpaket kann danach mit den üblichen Windows-Bordmitteln wieder deinstalliert werden. Dabei bleibt das Installationsverzeichnis bestehen, da dort noch die manuell erstellte Datei base.xml liegt. Wenn man wirklich auch später den Server nicht mehr benötigt, kann man den kompletten Installationspfad manuell löschen.
- Im Installationsverzeichnis werden die Dateien base.xml, base.xsd und SolvisSmartHomeServer.jar kopiert.
- Hat man bei der Installation angegeben, dass der Server automatisch gestartet werden soll, wurde in der Aufgabenplanung der Task SolvisSmartHomeServerTask erstellt.
Das Programm selber legt in das Verzeichnis <writablePathWindows>/SolvisServerData folgende Dateien an:
- control.xml, control.xsd, graficData.xml, graficData.xsd, log4j2.xml, tinylog.properties, measurements.xml und measurements.xsd
- Die Log-Dateien
solvis.log
,solvis-tiny.log.*
,solvis-error.log
- Zusätzlich wird in diesem Orner die Orner LearnedImages und SolvisErrorImages vorhanden, in welche die Screenschots des Lernvorganges und Fehlerscreens der Solvis-Anlage abgelegt werden.