# Voldeno Studio - Abstrakte Blöcke und Implementierungen
Manche Geräte erfüllen dieselbe Aufgabe und unterscheiden sich nur darin, wie man mit ihnen kommuniziert. Jedes Klimagerät hat eine Ein/Aus-Funktion, eine Betriebsart, eine Solltemperatur und eine Lüfterstufe, doch das eine nimmt Befehle per HTTP im lokalen Netzwerk entgegen, ein anderes per Modbus und ein drittes nur per Infrarot. Voldeno trennt diese beiden Aufgaben auf zwei Blöcke auf:
- Ein abstrakter Block enthält die Logik, die für alle Geräte einer Art gleich ist. Er hat Ein- und Ausgänge und wird wie jeder andere Baustein mit dem restlichen Programm verbunden.
- Ein Implementierungsblock kennt ein bestimmtes Gerät oder eine Gerätefamilie und weiß, wie man mit ihm kommuniziert. Er hat keine eigenen Ein- oder Ausgänge und arbeitet ausschließlich angeschlossen an einen abstrakten Block.
So bleibt das Automatisierungsprogramm unabhängig von der Gerätemarke. Wird ein Klimagerät durch ein anderes Modell ersetzt, tauschen Sie nur den Implementierungsblock aus, während Verbindungen, Zeitpläne und Widgets in der mobilen App unverändert bleiben.
# So funktioniert es
┌──────────────────────────────┐
Thermostat ───────▶│ Air conditioner │──────▶ Visualisierung
Zeitplan ───────▶│ (abstrakter Block) │──────▶ Störungsalarm
│ Ein-, Ausgänge, Logik │
└──────────────┬───────────────┘
Befehle │ ▲ Messwerte
▼ │
┌──────────────────────────────┐
│ Daikin BRP069 │◀─────▶ Klimagerät
│ (Implementierungsblock) │ LAN im lokalen Netzwerk
└──────────────────────────────┘
- Der abstrakte Block empfängt Signale an seinen Eingängen, setzt die konfigurierten Grenzen durch und entscheidet, wann ein Befehl an das Gerät gesendet und wann sein Zustand gelesen wird.
- Die Kommunikation selbst übergibt er dem angeschlossenen Implementierungsblock, der den Befehl in das Protokoll des Geräts übersetzt.
- Antwortet das Gerät, gibt die Implementierung die Messwerte zurück, und der abstrakte Block veröffentlicht sie an seinen Ausgängen.
Beide Blöcke laufen lokal auf dem Hub. Für die Kommunikation mit dem Gerät sind weder die Cloud des Herstellers noch ein Internetzugang nötig - der Hub muss das Gerät lediglich im lokalen Netzwerk erreichen.
# Implementierung in Voldeno Studio anschließen
- Fügen Sie den abstrakten Block im Logikeditor wie jeden anderen Baustein zum Programm hinzu, zum Beispiel Air conditioner. Abstrakte Blöcke erkennen Sie am violetten Abzeichen A in der Kopfzeile.
- Unter dem abstrakten Block erscheint ein Implementierungsanschluss mit dem Zeichen +. Klicken Sie darauf (Tooltip: „Implementierungsblock anschließen").
- Die Bausteinliste öffnet sich, eingeschränkt auf die Implementierungen, die zu diesem Block passen. Wählen Sie diejenige, die zu Ihrem Gerät passt.
- Der Implementierungsblock wird direkt unter dem abstrakten Block platziert und mit ihm verbunden, der Anschluss verschwindet. Wählen Sie den Implementierungsblock aus und füllen Sie im Seitenbereich unter Konfiguration seine Einstellungen aus, zum Beispiel das Feld Address mit der Netzwerkadresse des Geräts.
- Stellen Sie das Programm auf dem Hub bereit.
Einige Regeln, die Sie im Blick behalten sollten:
- Ein abstrakter Block nimmt eine Implementierung auf. Der Anschluss verschwindet, sobald eine Implementierung angeschlossen ist, und erscheint wieder, wenn Sie sie entfernen.
- Eine Implementierung existiert nicht ohne ihren abstrakten Block. Sie lässt sich nicht als eigenständiger Block auf der Arbeitsfläche platzieren - fügen Sie zuerst den abstrakten Block hinzu, den sie implementiert, und schließen Sie die Implementierung dann über dessen Anschluss an. In der Bausteinsuche wird die Implementierung angezeigt, kann von dort aber nicht direkt hinzugefügt werden.
- Eine Implementierung folgt ihrem Block. Sie bewegt sich mit ihm auf der Arbeitsfläche, und wenn Sie den abstrakten Block löschen, wird auch die angeschlossene Implementierung gelöscht.
- Ein anderes Gerät bedeutet eine andere Implementierung. Entfernen Sie den bisherigen Implementierungsblock und schließen Sie den neuen über den Anschluss an. Die Verbindungen des abstrakten Blocks zum restlichen Programm bleiben unberührt.
# Welche Konfiguration wohin gehört
Jeder der beiden Blöcke hat seine eigene Konfiguration und sieht die des anderen nicht.
| Block | Was Sie konfigurieren | Beispiel Klimagerät |
|---|---|---|
| Abstrakt | Verhalten, das nicht vom Gerät abhängt | Bereich der Solltemperatur, Aktualisierungsintervall des Zustands |
| Implementierung | wie das konkrete Gerät erreicht wird | Adresse des WLAN-Adapters im lokalen Netzwerk |
Wenn Sie nicht sicher sind, wo eine Einstellung zu finden ist, fragen Sie sich, ob sie sich nach dem Wechsel zu einer anderen Gerätemarke ändern würde. Wenn ja, gehört sie zur Implementierung.
# Was die mobile App anzeigt
Der abstrakte Block legt fest, wie das Gerät in der App Voldeno Mobile aussieht. Wenn Sie ihn in der App freigeben, werden seine Eingänge zu Bedienelementen - etwa Ein/Aus, Betriebsart oder Solltemperatur - und seine Ausgänge zu Anzeigen, etwa Raumtemperatur oder Störungsmeldung. Der Implementierungsblock hat keine Ein- oder Ausgänge und erscheint daher überhaupt nicht in der App.
Ein Beispiel ist der Block Klimagerät (vldn/air_conditioner). Die App erkennt ihn und zeigt dafür einen eigenen Bildschirm: oben die Raumtemperatur (Ausgang room_temp), darunter den Ein/Aus-Schalter (power) und die Solltemperatur (target_temp). Der Bereich, in dem der Nutzer die Temperatur einstellen kann, stammt aus der Konfiguration des abstrakten Blocks (min_target_temp und max_target_temp). Betriebsart (mode), Lüfterstufe (fan_speed) und Lamellenstellung (swing_v, swing_h) werden auf eigenen Bildschirmen gewählt, und die verfügbaren Optionen entsprechen den im Block beschriebenen Eingangswerten.
So sehen alle Geräte einer Art in der App unabhängig von der Marke gleich aus, und der Austausch der Implementierung ändert nichts daran, was der Nutzer sieht und bedient.
# Gerätezustand und Störungen
Der abstrakte Block veröffentlicht an seinen Ausgängen, was das Gerät tatsächlich meldet, sofern die Implementierung diesen Zustand zurücklesen kann. Eine Änderung über die Fernbedienung des Herstellers erscheint daher nach der nächsten Aktualisierung in Voldeno. Werte, die das Gerät nicht meldet, veröffentlicht der abstrakte Block so, wie er sie vorgegeben hat.
Kommunikationsprobleme landen am Störungsausgang des abstrakten Blocks, sodass Sie sie im Programm behandeln können, etwa mit einer Benachrichtigung. Die Bedeutung der Codes ist in der Dokumentation des jeweiligen Blocks und seiner Implementierung beschrieben.
Ein abstrakter Block ohne angeschlossene Implementierung lässt sich bereitstellen, sendet aber nichts an das Gerät - seine Ausgänge zeigen dann nur die an den Eingängen vorgegebenen Werte. Prüfen Sie vor der Bereitstellung, dass der Anschluss jedes abstrakten Blocks belegt ist.
Tipp: Netzwerkimplementierungen verbinden sich mit dem Gerät unter der konfigurierten Adresse. Reservieren Sie diese Adresse im Router für das Gerät (DHCP-Reservierung), damit sie sich nach einem Neustart nicht ändert.
# Verfügbare abstrakte Blöcke
Die aktuelle Liste der abstrakten Blöcke mit ihren Implementierungen finden Sie in der Übersicht der Logikbausteine, im Abschnitt Abstrakte Blöcke. Die Implementierungen eines Blocks sind außerdem in seiner Dokumentation im Abschnitt „Implementierende Bausteine" aufgeführt.
# Wie geht es weiter
- Logikbausteine - Übersicht - alle in Voldeno verfügbaren Bausteine
- Logik in Voldeno Studio von Grund auf definieren - die Grundlagen des Logikeditors