Lüfter: 2-Punkt-Regelung
Szenario
Ein IOZER basic liest die Temperatur eines 1-Wire-Sensors und schaltet einen Lüfter über den digitalen Ausgang 1. Eine Freigabe aktiviert die Regelung. Solltemperatur und Hysterese werden als eigene Datenpunkte angelegt und können optional über Home Assistant verändert werden.
Die Regelung läuft lokal im IOZER. Home Assistant dient zur Anzeige und Bedienung.
Ziel
Die 2-Punkt-Regelung besitzt zwei Ausgangszustände: Lüfter ein und Lüfter aus. Die Hysterese trennt die Ein- und Ausschaltschwelle, damit kleine Temperaturschwankungen nicht ständig zu Schaltvorgängen führen.
Für dieses Beispiel gelten eine Solltemperatur von 25 °C und eine Hysterese von 0,5 K:
| Bedingung | Aktion |
|---|---|
| Freigabe aus | Lüfter ausschalten |
Freigabe ein und Temperatur > Solltemperatur + Hysterese, hier > 25,5 °C |
Lüfter einschalten |
Freigabe ein und Temperatur < Solltemperatur − Hysterese, hier < 24,5 °C |
Lüfter ausschalten |
| Freigabe ein und Temperatur zwischen den Schwellen, einschließlich der Grenzen | Aktuellen Lüfterzustand beibehalten |
Die Hysterese wird hier als Abstand zur Solltemperatur verwendet. Mit 0,5 K liegen die beiden Schaltschwellen insgesamt 1 K auseinander. Bei genau 24,5 °C oder 25,5 °C erfolgt noch keine Umschaltung.
Eingesetzte Hardware
- IOZER basic (IOZ-B-10) mit geeigneter Spannungsversorgung
- 1-Wire-Temperatursensor DS18B20
- Lüfter mit einer für den Ausgang geeigneten Ansteuerung
- Rechner mit Zugriff auf die Weboberfläche
- optional: Home Assistant mit MQTT-Broker
Voraussetzungen
- IOZER, Sensor und Lüfter sind gemäß den Sicherheitshinweisen und dem elektrischen Anschluss installiert.
- I/O & Schnittstellen sind aktiviert.
- Für die lokale Regelung läuft das gespeicherte Programm.
- Für die optionale Home-Assistant-Anbindung sind IOZER und Home Assistant mit demselben MQTT-Broker verbunden.
Umsetzung
1. Ausgang und Lüfter-Datenpunkt konfigurieren
Öffnen Sie I/O & Schnittstellen → Digitale Ausgänge und bearbeiten Sie Ausgang 1.

| Einstellung | Wert |
|---|---|
| Bezeichnung | Lüfter |
| Aktiviert | Ein |
| Name | luefter |
| Invertiert | Aus |
| Anfangszustand | Aus |
| Stopp-Zustand | Aus |
| Auto-Aus | Deaktiviert |
| Blinken | Deaktiviert |
Speichern und übernehmen Sie die Ausgangskonfiguration. Legen Sie anschließend unter Datenpunkte oder über das Plus-Symbol in der Ausgangszeile den zugehörigen Datenpunkt an:
| Einstellung | Wert |
|---|---|
| Bezeichnung | Lüfter |
| Name | luefter |
| Datentyp | Boolean (Bool) |
| Datenquelle | Digitaler Ausgang → Lüfter → Zustand |
| Datenziel | Digitaler Ausgang → Lüfter → Zustand |
Die Datenquelle liefert die Rückmeldung des Ausgangs. Die Logik steuert das Datenziel mit dp.set("luefter", true) oder dp.set("luefter", false) an. Eine automatische Weiterleitung von Quellwerten an das Ziel wird dafür nicht benötigt.
Weitere Einstellungen sind unter Digitale Ausgänge beschrieben.
2. Temperatursensor und Datenpunkt konfigurieren
Wechseln Sie zu I/O & Schnittstellen → 1-Wire. Starten Sie bei Bedarf die Sensorentdeckung und übernehmen Sie den DS18B20 in die Konfiguration.
| Einstellung | Wert |
|---|---|
| Leseintervall | 5 Sekunden |
| Sensortyp | DS18B20 |
| Sensorbezeichnung | Temperatur |
| Aktiviert | Ein |
| Temperaturwert | Aktiviert, Faktor 1, Offset 0, Einheit °C |
Verwenden Sie die Hardwareadresse des tatsächlich angeschlossenen Sensors. Die Adresse im Screenshot gehört zum Beispielaufbau.

Legen Sie über das Plus-Symbol in der Sensorzeile oder unter Datenpunkte den Temperaturdatenpunkt an:
| Einstellung | Wert |
|---|---|
| Bezeichnung | Temperatur |
| Name | temperatur |
| Datentyp | Float |
| Einheit | °C |
| Klasse | Temperatur |
| Nur lesen | Ein |
| Datenquelle | 1-Wire → Temperatur → Temperaturwert |
| Datenziel | keines |
Speichern und übernehmen Sie die Konfiguration. Der Datenpunkt muss einen plausiblen Messwert mit Status OK anzeigen und regelmäßig aktualisiert werden. Details finden Sie unter 1-Wire.
3. Freigabe, Hysterese und Solltemperatur anlegen
Erstellen Sie unter Datenpunkte drei weitere Datenpunkte ohne Datenquelle und ohne Datenziel. Diese Werte werden vom Programm beziehungsweise von der Bedienung gesetzt.
| Bezeichnung | Technischer Name | Datentyp | Einheit | Startwert im Beispiel |
|---|---|---|---|---|
Lüfter Freigabe |
luefter_freigabe |
Boolean (Bool) |
keine | false |
Hysterese |
hysterese |
Float |
K |
0,5 |
Solltemperatur |
solltemperatur |
Float |
°C |
25 |
Aktivieren Sie die Datenpunkte und lassen Sie Nur lesen ausgeschaltet. Verwenden Sie für die Hysterese einen positiven Wert. Die Startwerte werden in Schritt 4.1 durch ein Programmstart-Ereignis gesetzt.

Der Screenshot zeigt einen Zwischenstand: Freigabe und Hysterese besitzen noch den Status Unbekannt, die Hysterese zeigt 0. Nach dem Programmstart müssen die drei Einstellwerte gültig sein. Die Datenpunkt-IDs können abweichen; die folgenden Programme verwenden technische Namen.
4. Ereignisse und Regelungslogik erstellen
Öffnen Sie Programm. Für die Umsetzung können Sie je Ereignis Blockly oder alternativ JavaScript verwenden.
4.1 Startwerte setzen
Legen Sie ein aktiviertes Ereignis Programm → Start an. Setzen Sie in Blockly mit vier Blöcken Datenpunkt auf Wert setzen die Freigabe auf falsch, den Lüfter auf falsch, die Hysterese auf 0,5 und die Solltemperatur auf 25.
Alternativ hinterlegen Sie diesen JavaScript-Code:
dp.set("luefter_freigabe", false);
dp.set("luefter", false);
dp.set("hysterese", 0.5);
dp.set("solltemperatur", 25);
Dieses Beispiel setzt die Werte bei jedem Programmstart neu. Nach dem Start muss die Freigabe bewusst eingeschaltet werden. Sollen Einstellwerte später über Neustarts erhalten bleiben, verwenden Sie Datenpunkt-Persistenz und initialisieren Sie nur noch Werte, für die dp.get keinen gültigen Wert liefert.
4.2 Regelung bei Temperaturaktualisierung ausführen
Legen Sie ein aktiviertes Ereignis Datenpunkt → Wert aktualisiert mit dem Datenpunkt Temperatur als Quelle an. Dadurch wird die Regelung bei jeder erfolgreichen Messwertaktualisierung ausgeführt, auch wenn die Temperatur unverändert bleibt.
Erstellen Sie in Blockly die folgende Logik:
- Prüfen Sie in einem falls/sonst-Block, ob der Datenpunkt Lüfter Freigabe den Wert
wahrbesitzt. - Vergleichen Sie im mache-Bereich Temperatur > Solltemperatur + Hysterese. Setzen Sie bei erfüllter Bedingung den Datenpunkt Lüfter auf
wahr. - Fügen Sie darunter einen zweiten falls-Block für Temperatur < Solltemperatur − Hysterese ein. Setzen Sie bei erfüllter Bedingung Lüfter auf
falsch. - Setzen Sie im äußeren sonst-Bereich Lüfter auf
falsch.
Die inneren Vergleiche erhalten keinen sonst-Zweig. Dadurch bleibt der Ausgang innerhalb des Hysteresebands in seinem bisherigen Zustand. Verwenden Sie Wert setzen, damit eine gleichbleibende Temperatur den Lüfter nicht bei jeder Messung umschaltet.

Die JavaScript-Alternative ergänzt vor den Temperaturvergleichen eine Prüfung auf gültige Zahlen und eine positive Hysterese:
if (dp.get("luefter_freigabe", false)) {
const temperatur = dp.get("temperatur");
const solltemperatur = dp.get("solltemperatur");
const hysterese = dp.get("hysterese");
if (typeof temperatur = "number" &&
typeof solltemperatur = "number" &&
typeof hysterese === "number" && hysterese > 0) {
if (temperatur > solltemperatur + hysterese) {
dp.set("luefter", true);
}
if (temperatur < solltemperatur - hysterese) {
dp.set("luefter", false);
}
}
} else {
dp.set("luefter", false);
}
Bei fehlenden Zahlenwerten wird in dieser JavaScript-Variante keine neue Temperaturentscheidung getroffen. Bei fehlender Freigabe wird der Lüfter ausgeschaltet.
4.3 Auf Bedienänderungen reagieren
Erstellen Sie drei weitere aktivierte Ereignisse mit derselben Regelungslogik aus Schritt 4.2:
| Auslöser | Datenpunkt | Zweck |
|---|---|---|
Wert geändert |
Lüfter Freigabe |
Freigabeänderung direkt auswerten |
Wert geändert |
Hysterese |
Neue Schaltschwellen direkt berücksichtigen |
Wert geändert |
Solltemperatur |
Neuen Sollwert direkt berücksichtigen |
Diese Ereignisse reagieren beispielsweise auf Änderungen aus Home Assistant. Die Logik verwendet jeweils die aktuellen Datenpunktwerte und benötigt keine eigene Dauerschleife oder Wartezeit.
Speichern und übernehmen Sie das Programm. Starten Sie es bei aktiven I/O & Schnittstellen und kontrollieren Sie die initialisierten Werte sowie den Ausführungsstatus der Ereignisse. Hinweise zu Auslösern und Gerätefunktionen finden Sie unter Ereignisse und JavaScript.
5. Optional: Bedienung über Home Assistant
Konfigurieren und aktivieren Sie unter I/O & Schnittstellen → MQTT die Verbindung zum gemeinsamen Broker. Öffnen Sie anschließend Datenpunkte → ⋮ → Home Assistant AutoDiscovery.
Wählen Sie die fünf Datenpunkte aus und verwenden Sie die Zuordnung aus dem Screenshot:
| Datenpunkt | Home-Assistant-Typ | Minimum | Maximum | Schrittweite |
|---|---|---|---|---|
Lüfter |
Automatisch (Schalter) |
— | — | — |
Temperatur |
Automatisch (Sensor), nur lesen |
— | — | — |
Lüfter Freigabe |
Schalter |
— | — | — |
Hysterese |
Zahlen-Eingabe |
0,5 |
5 |
0,5 |
Solltemperatur |
Zahlen-Eingabe |
20 |
30 |
0,5 |

Lassen Sie den Discovery-Präfix auf homeassistant, sofern Ihre Installation diesen verwendet. Aktivieren Sie Benötigte MQTT-Einstellungen automatisch aktivieren, prüfen Sie die Änderungen und wählen Sie Speichern, anwenden & veröffentlichen. Die Aktion übernimmt auch weitere noch offene Konfigurationsänderungen.
Nach der Veröffentlichung können Sie die Temperatur anzeigen, die Regelung über Lüfter Freigabe aktivieren und Solltemperatur sowie Hysterese verändern. Direktes Schalten von Lüfter setzt den Ausgang; die lokale Regelung kann diesen Zustand bei der nächsten Auswertung wieder ändern. Verwenden Sie für die normale Bedienung die Freigabe.
Die Einrichtung ist unter Home Assistant und MQTT ausführlich beschrieben.
Funktion prüfen
Verwenden Sie 25 °C Solltemperatur und 0,5 K Hysterese. Aktivieren Sie die Freigabe nach dem Programmstart, beispielsweise über Home Assistant. Für einen Test ohne Home Assistant legen Sie ein benutzerdefiniertes Ereignis mit folgendem JavaScript-Code an und führen es einmal über Ausführen aus:
dp.set("luefter_freigabe", true);
Zum Ausschalten setzen Sie den Wert auf false. Das Anlegen solcher Ereignisse ist unter Ereignisse beschrieben.
| Prüfung | Erwartetes Ergebnis |
|---|---|
| Freigabe aus, beliebige gültige Temperatur | Lüfter aus |
Freigabe ein, Temperatur auf etwa 26 °C erhöhen |
Lüfter ein |
Temperatur danach auf 25 °C absenken |
Lüfter bleibt ein |
Temperatur weiter auf etwa 24 °C absenken |
Lüfter aus |
Temperatur danach wieder auf 25 °C erhöhen |
Lüfter bleibt aus |
| Freigabe bei laufendem Lüfter ausschalten | Lüfter wird durch das Freigabe-Ereignis ausgeschaltet |
| Solltemperatur oder Hysterese verändern | Regelung verwendet die neuen Schwellen |
Warten Sie bei Temperaturänderungen auf die nächste Sensoraktualisierung. Mit dem eingestellten Leseintervall wird der Sensor alle fünf Sekunden abgefragt. Kontrollieren Sie die Rückmeldung des Ausgangs und die Ausführungsstatus der Ereignisse.
Fehlerbehebung
| Fehlerbild | Mögliche Ursache und Prüfung |
|---|---|
| Temperatur fehlt oder ist ungültig | Aktives I/O, 1-Wire-Verdrahtung, Sensoradresse und Temperaturdatenpunkt prüfen. |
Freigabe oder Hysterese ist Unbekannt |
Programmstart-Ereignis anlegen, speichern, übernehmen und Programm neu starten. |
| Lüfter bleibt trotz hoher Temperatur aus | Freigabe, laufendes Programm und obere Schaltschwelle prüfen. Im Beispiel muss die Temperatur größer als 25,5 °C sein. |
Lüfter bleibt bei 25 °C eingeschaltet |
Das liegt innerhalb des Hysteresebands; ausgeschaltet wird erst unterhalb 24,5 °C. |
| Lüfter schaltet bei jeder Messung um | In der Regelung Werte mit dp.set setzen; einen versehentlich verwendeten Umschaltblock ersetzen. |
| Bedienänderungen werden erst später wirksam | Die drei Ereignisse aus Schritt 4.3 ergänzen oder ihre Datenpunktzuordnung prüfen. |
| Datenpunktbefehl schaltet den Ausgang nicht | Datenziel Digitaler Ausgang → Lüfter → Zustand, Ausgangsaktivierung und I/O prüfen. |
| Home-Assistant-Einträge fehlen oder sind nicht verfügbar | MQTT-Verbindung, Discovery-Auswahl und gültige Datenpunktwerte prüfen. |
Ergebnis und Erweiterung
Der IOZER steuert den Lüfter anhand zweier Temperaturschwellen. Die Freigabe erlaubt das Ein- und Ausschalten der Regelung, während Solltemperatur und Hysterese als veränderbare Datenpunkte verfügbar bleiben. Home Assistant ergänzt die lokale Steuerung um Anzeige und Bedienung.