<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Thema "[Script] Viessmann Heizungs‑Ein/Aus‑Steuerung über Viessmann‑API mit Auto‑Trigger" in The Viessmann API</title>
    <link>https://community.viessmann.de/t5/The-Viessmann-API/Script-Viessmann-Heizungs-Ein-Aus-Steuerung-ueber-Viessmann-API/m-p/615253#M3440</link>
    <description>&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Das Script realisiert eine sichere, triggerbasierte Heizungssteuerung über den Viessmann‑API‑Adapter in ioBroker.&lt;/STRONG&gt; Die beiden Funktionen können zeitgesteuert, ereignisgesteuert oder manuell über zwei boolesche Trigger gestartet werden.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;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.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;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.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Die beiden Trigger steuern den Heizkreis direkt über die Viessmann‑API:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Heizung EIN&lt;/STRONG&gt; setzt den Betriebsmodus auf &lt;EM&gt;heating&lt;/EM&gt;, aktiviert den Heizzeitplan und stellt die Vorlauftemperatur auf 35 °C.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Heizung AUS&lt;/STRONG&gt; setzt den Modus auf &lt;EM&gt;standby&lt;/EM&gt;, deaktiviert den Zeitplan und setzt die Temperatur auf 0 °C.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;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.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;// ===============================================================
//   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
        }, () =&amp;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 + " -&amp;gt; " + value);
}


// === TRIGGER: HEIZUNG EIN ===
on({ id: "0_userdata.0.Heizung.Heizung_EIN", val: true }, () =&amp;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 }, () =&amp;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);
});&lt;/LI-CODE&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 13 Apr 2026 13:36:25 GMT</pubDate>
    <dc:creator>franzhau2022</dc:creator>
    <dc:date>2026-04-13T13:36:25Z</dc:date>
    <item>
      <title>[Script] Viessmann Heizungs‑Ein/Aus‑Steuerung über Viessmann‑API mit Auto‑Trigger</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Script-Viessmann-Heizungs-Ein-Aus-Steuerung-ueber-Viessmann-API/m-p/615253#M3440</link>
      <description>&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Das Script realisiert eine sichere, triggerbasierte Heizungssteuerung über den Viessmann‑API‑Adapter in ioBroker.&lt;/STRONG&gt; Die beiden Funktionen können zeitgesteuert, ereignisgesteuert oder manuell über zwei boolesche Trigger gestartet werden.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;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.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;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.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Die beiden Trigger steuern den Heizkreis direkt über die Viessmann‑API:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Heizung EIN&lt;/STRONG&gt; setzt den Betriebsmodus auf &lt;EM&gt;heating&lt;/EM&gt;, aktiviert den Heizzeitplan und stellt die Vorlauftemperatur auf 35 °C.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Heizung AUS&lt;/STRONG&gt; setzt den Modus auf &lt;EM&gt;standby&lt;/EM&gt;, deaktiviert den Zeitplan und setzt die Temperatur auf 0 °C.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;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.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;// ===============================================================
//   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
        }, () =&amp;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 + " -&amp;gt; " + value);
}


// === TRIGGER: HEIZUNG EIN ===
on({ id: "0_userdata.0.Heizung.Heizung_EIN", val: true }, () =&amp;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 }, () =&amp;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);
});&lt;/LI-CODE&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 13 Apr 2026 13:36:25 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Script-Viessmann-Heizungs-Ein-Aus-Steuerung-ueber-Viessmann-API/m-p/615253#M3440</guid>
      <dc:creator>franzhau2022</dc:creator>
      <dc:date>2026-04-13T13:36:25Z</dc:date>
    </item>
  </channel>
</rss>

