<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[Script] Viessmann Heizungs‑Ein&#x2F;Aus‑Steuerung  Viessmann‑API]]></title><description><![CDATA[<p dir="auto">Das Script realisiert eine sichere, triggerbasierte Heizungssteuerung über den Viessmann‑API‑Adapter in ioBroker. Die beiden Funktionen können zeitgesteuert, ereignisgesteuert oder manuell über zwei boolesche Trigger gestartet werden.</p>
<p dir="auto">Beim Start legt das Script die beiden Steuer‑Datenpunkte 0_userdata.0.Heizung.Heizung_EIN und 0_userdata.0.Heizung.Heizung_AUS automatisch an, initialisiert sie sauber auf false und stellt damit sicher, dass die Trigger jederzeit definiert und einsatzbereit sind.</p>
<p dir="auto">Eine geprüfte Schreibfunktion (safeSet) verhindert Fehlzustände, indem sie vor jedem Setzen prüft, ob der Ziel‑State existiert und beschreibbar ist. Dadurch werden fehlerhafte API‑Aufrufe und unnötiger Log‑Spam zuverlässig vermieden.</p>
<p dir="auto">Die beiden Trigger steuern den Heizkreis direkt über die Viessmann‑API:</p>
<p dir="auto">Heizung EIN setzt den Betriebsmodus auf heating, aktiviert den Heizzeitplan und stellt die Vorlauftemperatur auf 35 °C.</p>
<p dir="auto">Heizung AUS setzt den Modus auf standby, deaktiviert den Zeitplan und setzt die Temperatur auf 0 °C.</p>
<p dir="auto">Nach jeder Ausführung setzt sich der jeweilige Trigger automatisch wieder auf false, sodass jede Aktion exakt einmal ausgeführt wird und keine Mehrfachauslösungen entstehen.</p>
<pre><code>// ===============================================================
//   Triggerbasierte Viessmann‑Heizungssteuerung (Ein/Aus)
//   Automatische DP‑Initialisierung + sichere Schreibfunktion
//   Steuerung über Viessmann‑API (heating / standby)
//   Version mit xxxxxx als Geräte-ID
// ===============================================================
// === Trigger-Datenpunkte beim Start anlegen und initialisieren ===
function ensureDP(id) {
    if (!existsState(id)) {
        createState(id, false, {
            type: "boolean",
            role: "switch",
            read: true,
            write: true
        }, () =&gt; {
            setState(id, false, true);
            console.info("ANGELEGT: " + id);
        });
    } else {
        setState(id, false, true);
    }
}

// Trigger anlegen
ensureDP("0_userdata.0.Heizung.Heizung_EIN");
ensureDP("0_userdata.0.Heizung.Heizung_AUS");


// === Hilfsfunktion zum sicheren Schreiben ===
function safeSet(id, value) {
    if (!existsState(id)) {
        console.info("FEHLT: " + id);
        return;
    }

    const obj = getObject(id);
    if (!obj || !obj.common || obj.common.write !== true) {
        console.info("NICHT SCHREIBBAR: " + id);
        return;
    }

    setState(id, value, false);
    console.info("SET: " + id + " -&gt; " + value);
}


// === TRIGGER: HEIZUNG EIN ===
on({ id: "0_userdata.0.Heizung.Heizung_EIN", val: true }, () =&gt; {
    console.info("TRIGGER: Heizung EIN gestartet");

    safeSet("viessmannapi.0.xxxxxx.0.features.heating.circuits.0.operating.modes.active.commands.setMode.setValue", "heating");
    safeSet("viessmannapi.0.xxxxxx.0.features.heating.circuits.0.heating.schedule.properties.active.value", true);
    safeSet("viessmannapi.0.xxxxxx.0.features.heating.circuits.0.temperature.properties.value.value", 35);

    console.info("Heizung EIN ausgefuehrt.");

    // Trigger zurücksetzen
    setState("0_userdata.0.Heizung.Heizung_EIN", false, false);
});


// === TRIGGER: HEIZUNG AUS ===
on({ id: "0_userdata.0.Heizung.Heizung_AUS", val: true }, () =&gt; {
    console.info("TRIGGER: Heizung AUS gestartet");

    safeSet("viessmannapi.0.xxxxxx.0.features.heating.circuits.0.operating.modes.active.commands.setMode.setValue", "standby");
    safeSet("viessmannapi.0.xxxxxx.0.features.heating.circuits.0.heating.schedule.properties.active.value", false);
    safeSet("viessmannapi.0.xxxxxx.0.features.heating.circuits.0.temperature.properties.value.value", 0);

    console.info("Heizung AUS ausgefuehrt.");

    // Trigger zurücksetzen
    setState("0_userdata.0.Heizung.Heizung_AUS", false, false);
});
</code></pre>
]]></description><link>https://forum.iobroker.net/topic/84290/script-viessmann-heizungs-ein-aus-steuerung-viessmann-api</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 02:25:37 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/84290.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Apr 2026 13:50:53 GMT</pubDate><ttl>60</ttl></channel></rss>