Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Vorlage] Ventilsteuerung PWM-Ansatz für FBH/IR-Panele o.ä.

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.4k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.5k

[Vorlage] Ventilsteuerung PWM-Ansatz für FBH/IR-Panele o.ä.

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
83 Beiträge 22 Kommentatoren 19.2k Aufrufe 9 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • apollon77A apollon77

    Hi,

    ich habe vor kurzem die Ventilsteuerung meiner Fussbodenheizungssteuerung auf ioBroker umgestellt. Nachdem ich einige ANsätze, auch hier aus dem Forum nicht kapiert habe, bin ich im Homematic-Forum fündig geworden.

    Basierend auf dem Skript "Fußbodenheizung - Steuerung/IR-Heizung-Steuerung" von twoxx aus dem Homematic-Forum (https://homematic-forum.de/forum/viewto … 31&t=24890) habe ich das nach ioBroker JavaScript portiert und etwas verschlankt.

    Das interessante an dem Skriptansatz ist, dass es die Raumtemperatur "überwacht" und versucht die Ventile früh genug auszuschalten das die Temperatur nicht übersteuert, aber auch früh genug wieder einzuschalten. Das ganze folgt einem PWM-Ansatz im Default auf das 20 Minuten Skriptintervall und schaltet daher auch teilweise nur für ein paar Minuten ein.

    Details zur Funktionsweise und der wichtigen Konfigurationsparameter am besten im Original-Thread im Homematic-Forum informieren. Die Parameternamen sind weiterstgehend die gleichen. Ich habe nur ein paar Dinge (Sicherheitsheizen bei bestimmten Außentemperaturen) weggenommen und einige Dinge so umgebaut das die Entwicklung der letzten 3 Skriptläufe (=60Min) "rollierend" betrachtet werden können.

    In den Räumen an sich habe ich überall Homematic-Wandthermostate angebracht und die Ventile werden über Homematic-Schaltaktoren gesteuert. Die Skripte sind aber grundsätzlich so flexibel das problemlos auch andere Hersteller eingesetzt werden können. Keins davon steuert irgendwas an den Ventilen direkt, das macht alles dieses Skript!

    Das Skript hier ist aber unabhängig von der Art wie die Thermostate und Programme ablaufen, es nimmt die Ist- und Solltemperarturen und steuert dann die Ventil-Aktoren.

    Die Konfiguration besteht aus drei Teilen:

    1.) Die Raum-Objekte am Anfang haben einen Eintrag pro Raum mit State-ID Definitionen. Die Namen der Räume können frei gewählt werden und sind primär für das Logging interessant. Die State-IDs wie bei "OG-Bad" zu sehen sind Pflicht. Bei EG-Wohnzimmer habe ich noch einen zweiten Heizkreis den ich nur zum hochheizen als "Unterstützung" nutze, der bleibt zum halten der Temperatur aber aus. Darüber könnte man auch ein IR-Panel oder einen Heizlüfter mit nutzen.

    2.) Die 4 Werte danach definieren die Rahmenbedingungen für die Steuerung. Details siehe Homematic Forum, da ist auch eine Grafik :-)

    Weiterhin kann man ausführliches Logging aktivieren.

    3.) In der Funktion "initialize" werden noch einige Grundwerte eingetragen, die eher statisch sind.

    In "Schaltschwelleniedertemp" und "Schaltschwellehochtemp" stehen an sich die Laufzeiten der Ventile (Auf-Zu) drin. Sind bei mir etwas mehr als 3 Minuten, sollte jeder selbst ermitteln.

    In "heizunterstuetzungKelvin" ist drin ab wieviel Kelvin (=Grad) Temperaturunterschied ein pot. angegebener Unterstützungsaktor genutzt wird

    Man kann all diese Object-Keys, wenn man Sie pro Raum anders braucht, auch direkt im rooms-Objekt beim Raum setzen, dann wird das genutzt.

    Hier das Skript (20180101)

    // Thread im ioBroker-Forum: http://forum.iobroker.net/viewtopic.php?f=21&t=10111
    
    var rooms= {
        'DG-Luca': {
            stateIdHeizungAktor: "hm-rpc.0.LEQ0282183.3.STATE",
            stateIdHeizungAktorOnTime: "hm-rpc.0.LEQ0282183.3.ON_TIME",
            stateIdSollTemperatur: "hm-rpc.0.NEQ0072178.2.SET_TEMPERATURE",
            stateIdIstTemperatur: "hm-rpc.0.NEQ0072178.1.TEMPERATURE"
        },
        'DG-Jana': {
            stateIdHeizungAktor: "hm-rpc.0.LEQ0282183.2.STATE",
            stateIdHeizungAktorOnTime: "hm-rpc.0.LEQ0282183.2.ON_TIME",
            stateIdSollTemperatur: "hm-rpc.0.NEQ0072437.2.SET_TEMPERATURE",
            stateIdIstTemperatur: "hm-rpc.0.NEQ0072437.1.TEMPERATURE"
        },
        'DG-Duschbad': {
            stateIdHeizungAktor: "hm-rpc.0.LEQ0282183.1.STATE",
            stateIdHeizungAktorOnTime: "hm-rpc.0.LEQ0282183.1.ON_TIME",
            stateIdSollTemperatur: "hm-rpc.0.NEQ0071913.2.SET_TEMPERATURE",
            stateIdIstTemperatur: "hm-rpc.0.NEQ0071913.1.TEMPERATURE"
        },
        'OG-Bad': {
            stateIdHeizungAktor: "hm-rpc.0.NEQ1503796.1.STATE",
            stateIdHeizungAktorOnTime: "hm-rpc.0.NEQ1503796.1.ON_TIME",
            stateIdSollTemperatur: "hm-rpc.0.NEQ0124378.2.SET_TEMPERATURE",
            stateIdIstTemperatur: "hm-rpc.0.NEQ0071913.1.TEMPERATURE"
        },
        'EG-Wohnzimmer': {
            stateIdHeizungAktor: "hm-rpc.0.OEQ0653582.1.STATE",
            stateIdHeizungAktorOnTime: "hm-rpc.0.OEQ0653582.1.ON_TIME",
            stateIdHeizungUnterstuetzungAktor: "hm-rpc.0.MEQ0361527.1.STATE",
            stateIdHeizungUnterstuetzungAktorOnTime: "hm-rpc.0.MEQ0361527.1.ON_TIME",
            stateIdSollTemperatur: "hm-rpc.0.OEQ0987006.2.SET_TEMPERATURE",
            stateIdIstTemperatur: "hm-rpc.0.JEQ0122620.1.TEMPERATURE"
        }
    };
    var hochtempAufschlag = 0.5; // hochtemp = solltemperatur + hochtempAufschlag
    var niedertempAbschlag = 1; // niedertemp = solltemperatur - niedertempAbschlag
    var hochstillAufschlag = 0.1; // hochstill = solltemperatur + hochstillAufschlag
    var niederstillAbschlag = 0.2; // niederstill = solltemperatur - niederstillAbschlag
    
    var debug = true;
    
    initialize();
    
    function initialize() {
        for (var room in rooms) {
            if (!rooms[room].Sicherheitsheizzeit) rooms[room].Sicherheitsheizzeit = 240; // Heizzeit, falls errechnete Heizzeit im Minus
            if (!rooms[room].Schaltschwelleniedertemp) rooms[room].Schaltschwelleniedertemp = 190; // Sofern errechnete Schaltzeit kleiner, dann nicht einschalten
            if (!rooms[room].Schaltschwellehochtemp) rooms[room].Schaltschwellehochtemp = 190; // Sofern errechnete Schaltzeit kleiner, dann nicht einschalten
            if (!rooms[room].skriptZyklus) rooms[room].skriptZyklus = 20;
            if (!rooms[room].heizunterstuetzungKelvin) rooms[room].heizunterstuetzungKelvin = 1;  // Wenn Temperaturunterschied größer als diese ANzahl Kelvon dann wird Unterstützung verwendet
    
            if (!rooms[room].FBStartTemperatur) rooms[room].FBStartTemperatur = [];
            if (!rooms[room].StartHeizzeit) rooms[room].StartHeizzeit = [new Date().getTime()-1000*60];
            if (!rooms[room].FBVergleichTemp) rooms[room].FBVergleichTemp = 0;
    
            if (rooms[room].hochtempAufschlag === undefined) rooms[room].hochtempAufschlag = hochtempAufschlag;
            if (rooms[room].niedertempAbschlag === undefined) rooms[room].niedertempAbschlag = niedertempAbschlag;
            if (rooms[room].hochstillAufschlag === undefined) rooms[room].hochstillAufschlag = hochstillAufschlag;
            if (rooms[room].niederstillAbschlag === undefined) rooms[room].niederstillAbschlag = niederstillAbschlag;
    
            rooms[room].letztesEIN = 0;
            rooms[room].skriptTimeout = null;
    
            if (getState(rooms[room].stateIdHeizungAktor).val) {
                if (debug) {console.log('    ' + room + ': Aktor eingeschaltet');}
                rooms[room].letztesEIN = new Date().getTime();
            }
    
            initializeSubscribes(room);
    
            if (debug) {console.log('Ventillogik für Raum ' + room + ' initialisiert');}
            ventilLogik(room);
        }
    }
    
    function initializeSubscribes(room) {
        on({id: rooms[room].stateIdHeizungAktor, change: 'any'}, function(state) {
            if (debug) {console.log('Änderung Status Aktor FBH ' + room + ': ' + state.oldState.val + '--> ' + state.state.val + ' (ack=' + state.state.ack + ', from=' + state.state.from + ')');}
            if (state.state.ack && state.state.val) {
                rooms[room].letztesEIN = new Date().getTime();
            }
        });
    
        on({id: rooms[room].stateIdSollTemperatur, change: 'ne'}, function(state) {
            if (debug) {console.log('Änderung Solltemperatur ' + room + ': --> ' + state.state.val + ' (ack=' + state.state.ack + ', from=' + state.state.from + ')');}
            ventilLogik(room);
        });
    }
    
    onStop(function (callback) {
        for (var room in rooms) {
            if (getState(rooms[room].stateIdHeizungAktor).val) {
                controlFBHAktor(room, false); // Alle ausschalten wenn Skript aus geht
                if (rooms[room].skriptTimeout) {
                    clearTimeout(rooms[room].skriptTimeout);
                    rooms[room].skriptTimeout = null;
                }
            }
        }
        setTimeout(callback, 1000);
    }, 3000);
    
    function ventilLogik(roomName) {
        if (rooms[roomName].skriptTimeout) {
            clearTimeout(rooms[roomName].skriptTimeout);
            rooms[roomName].skriptTimeout = null;
        }
        // Temperaturen feststellen
        var isttemperatur = getState(rooms[roomName].stateIdIstTemperatur).val;
        var solltemperatur = getState(rooms[roomName].stateIdSollTemperatur).val;
        var schaltzustand = getState(rooms[roomName].stateIdHeizungAktor).val;
        var aktivSeit = 0;
        if (schaltzustand && rooms[roomName].letztesEIN) aktivSeit = (new Date().getTime() - rooms[roomName].letztesEIN) / 1000 / 60;
        if (debug) {console.log('Start Ventillogik ' + roomName + ': IstTemp=' + isttemperatur + ', VergleichTemp=' + rooms[roomName].FBVergleichTemp + ', SollTemp=' + solltemperatur + ', Aktor=' + schaltzustand + ' (seit ' + aktivSeit + 'm)');}
    
        // GrenzTemperaturen berechnen
        var hochtemp = solltemperatur + rooms[roomName].hochtempAufschlag;
        var niedertemp = solltemperatur - rooms[roomName].niedertempAbschlag;
        var hochstill = solltemperatur + rooms[roomName].hochstillAufschlag;
        var niederstill = solltemperatur - rooms[roomName].niederstillAbschlag;
        var toleranz = hochtemp - niedertemp;
    
        // rooms[roomName].StartHeizzeit in Systemvariable schreiben
        rooms[roomName].FBStartTemperatur.push(isttemperatur);
        if (rooms[roomName].FBStartTemperatur.length > 3) rooms[roomName].FBStartTemperatur.shift();
        if (debug) {console.log("    Start FBStartTemp=" + rooms[roomName].FBStartTemperatur[0]);}
    
        // Differenz Starttemperatur und Endtemperatur ausrechnen
        var FBTempDiff = isttemperatur - rooms[roomName].FBStartTemperatur[0];
        if (FBTempDiff <= 0) {
            if (debug) {console.log("    TempDiff <= 0: " + FBTempDiff + " --> 0.01");}
            FBTempDiff = 0.01;
        }
        else {
            if (debug) {console.log("    TempfDiff > 0: " + FBTempDiff);}
        }
    
        // Endheizzeit in Systemvariable, Isttemperatur in Systemvariable schreiben, Differenz heizzeit u Temp errechnen
        var EndHeizzeit = new Date().getTime();
    
        // Heizzeit Differenz für Tempvorausrechnung errechnen
        var DiffStartEndHeizzeit = (EndHeizzeit - rooms[roomName].StartHeizzeit[0]) / 1000 / 60;
    
        // Heizzeit Differenz für automatische Errechnung Scriptintervall errechnen
        var Scriptintervall = rooms[roomName].skriptZyklus;
    
        // Steuerung Fussbodenheizung
        var heizleistung;
        var heizzeit;
        var heizzeit1;
        var einschaltzeitvergleichtemp;
        var tempdifferenzkalkreal;
        var reduzierungszeit;
        var neueheizzeit;
        // Einschaltzeit berechnen -----------------
        if (isttemperatur <= solltemperatur) {
            if (debug) {console.log("    Isttemperatur <= Solltemperatur");}
            heizleistung = ((solltemperatur + 0.2 - isttemperatur) / toleranz) * 100;
            heizzeit1 = (Scriptintervall * heizleistung) / 100;
            einschaltzeitvergleichtemp = (FBTempDiff * heizzeit1) / DiffStartEndHeizzeit;
            if (((toleranz * heizleistung) / 100) >= einschaltzeitvergleichtemp) {
                if (debug) {console.log("        heizzeit im original übernommen (heizleistung=" + heizleistung + ", Scriptintervall=" + Scriptintervall + ")");}
                heizzeit = heizzeit1 * 60;
            }
            else {
                if (debug) {console.log("        reduzierte heizzeit übernommen");}
                tempdifferenzkalkreal = einschaltzeitvergleichtemp - ((toleranz * heizleistung) / 100);
                reduzierungszeit = (tempdifferenzkalkreal * Scriptintervall) / FBTempDiff;
                neueheizzeit = heizzeit1 - reduzierungszeit;
                if (neueheizzeit <= 0) {
                    heizzeit = rooms[roomName].Sicherheitsheizzeit;
                    if (debug) {console.log("        sicherheitshalber 4 Minuten heizen");}
                }
                else {
                    heizzeit = neueheizzeit * 60;
                    if (debug) {console.log("        neueheizzeit übernommen");}
                }
            }
        }
        else {
            if (debug) {console.log("    Isttemperatur > solltemperatur");}
            heizleistung = ((hochtemp - isttemperatur) / toleranz) * 100;
            heizzeit1 = (Scriptintervall * heizleistung) / 100;
            einschaltzeitvergleichtemp = FBTempDiff * heizzeit1 / DiffStartEndHeizzeit;
            if (((toleranz * heizleistung) / 100) >= einschaltzeitvergleichtemp) {
                if (debug) {console.log("        heizzeit im original übernommen (heizleistung=" + heizleistung + ", Scriptintervall=" + Scriptintervall + ")");}
                heizzeit = heizzeit1 * 60;
            }
            else {
                if (debug) {console.log("        reduzierte heizzeit übernommen");}
                tempdifferenzkalkreal = einschaltzeitvergleichtemp - ((toleranz * heizleistung) / 100);
                reduzierungszeit = (tempdifferenzkalkreal * Scriptintervall) / FBTempDiff;
                neueheizzeit = heizzeit1 - reduzierungszeit;
                if (neueheizzeit <= 0) {
                    heizzeit = rooms[roomName].Sicherheitsheizzeit;
                    if (debug) {console.log("        sicherheitshalber 4 Minuten heizen??");}
                }
                else {
                    heizzeit = neueheizzeit * 60;
                    if (debug) {console.log("        neueheizzeit übernommen");}
                }
            }
        }
    
        // Künftige Temperatur bei doppelter Schaltzeit vorausrechnen
        var tempvorausrechnung = FBTempDiff * (Scriptintervall * 2) / DiffStartEndHeizzeit;
        var Neueisttemperatur = isttemperatur + tempvorausrechnung;
    
        if (debug) {console.log('    Errechnete Heizzeit=' + heizzeit + ' --> Neue-Ist-Temp=' + Neueisttemperatur + ' (+' + tempvorausrechnung + ')');}
    
        // Schaltungen ausführen
        if ((isttemperatur < hochtemp) && (isttemperatur > niedertemp)) {
            if ((rooms[roomName].FBVergleichTemp === isttemperatur) && (isttemperatur > solltemperatur)) {
                if (debug) {console.log("    Ist = Vergleichstemperatur");}
                if (schaltzustand) {
                    if (debug) {console.log("        ist eingeschaltet und soll ausgeschaltet sein");}
                    controlFBHAktor(roomName, false);
                }
                else {
                    if (debug) {console.log("        ist ausgeschaltet und soll ausgeschaltet sein");}
                }
            }
            else {
                if (debug) {console.log("    innerhalb toleranz");}
                if ((isttemperatur <= hochstill) && (isttemperatur >= niederstill)) {
                    if (debug) {console.log("    innerhalb stille");}
                    if (schaltzustand) {
                        if (debug) {console.log("        ist eingeschaltet und soll ausgeschaltet sein");}
                        controlFBHAktor(roomName, false);
                    }
                    else {
                        if (debug) {console.log("        ist ausgeschaltet und soll ausgeschaltet sein");}
                    }
                }
                else {
                    if (debug) {console.log("    ausserhalb stille");}
                    if (isttemperatur < niederstill) {
                        if (heizzeit < rooms[roomName].Schaltschwelleniedertemp) {
                            if (debug) {console.log("    Schaltzeit zu klein");}
                            if (schaltzustand) {
                                if (debug) {console.log("        ist eingeschaltet und soll ausgeschaltet sein");}
                                controlFBHAktor(roomName, false);
                            }
                            else {
                                if (debug) {console.log("        ist ausgeschaltet und soll ausgeschaltet sein");}
                            }
                        }
                        else {
                            if (debug) {console.log("    kleiner niederstill");}
                            controlFBHAktor(roomName, true, heizzeit);
                        }
                    }
                    else {
                        if (rooms[roomName].FBVergleichTemp < isttemperatur) {
                            if (debug) {console.log("    über hochstill gestiegen");}
                            if (schaltzustand) {
                                if (debug) {console.log("        ist eingeschaltet und soll ausgeschaltet sein");}
                                controlFBHAktor(roomName, false);
                            }
                            else {
                                if (debug) {console.log("        ist ausgeschaltet und soll ausgeschaltet sein");}
                            }
                        }
                        else {
                            if (heizzeit < rooms[roomName].Schaltschwellehochtemp) {
                                if (debug) {console.log("    Schaltzeit zu klein");}
                                if (schaltzustand) {
                                    if (debug) {console.log("        ist eingeschaltet und soll ausgeschaltet sein");}
                                    controlFBHAktor(roomName, false);
                                }
                                else {
                                    if (debug) {console.log("        ist ausgeschaltet und soll ausgeschaltet sein");}
                                }
                            }
                            else {
                                if (debug) {console.log("    größer als hochstill");}
                                controlFBHAktor(roomName, true, heizzeit);
                            }
                        }
                    }
                }
            }
        }
        else {
            if (isttemperatur >= hochtemp) {
                if (debug) {console.log("    Isttemperatur größer als hochtemp");}
                if (schaltzustand) {
                    if (Neueisttemperatur <= solltemperatur) {
                        if (debug) {console.log("        Neue Isttemp kleiner gleich Solltemperatur");}
                        if (debug) {console.log("        ist eingeschaltet und soll eingeschaltet sein");}
                    }
                    else {
                        if (debug) {console.log("        Neue Isttemp grösser Solltemperatur");}
                        if (debug) {console.log("        ist eingeschaltet und soll ausgeschaltet sein");}
                        controlFBHAktor(roomName, false);
                    }
                }
                else {
                    if (Neueisttemperatur <= solltemperatur) {
                        if (debug) {console.log("        Neue Isttemp kleiner gleich Solltemperatur");}
                        if (debug) {console.log("        ist ausgeschaltet und soll eingeschaltet sein");}
                        controlFBHAktor(roomName, true, 36000);
                    }
                    else {
                        if (debug) {console.log("        Neue Isttemp grösser Solltemperatur");}
                        if (debug) {console.log("        ist ausgeschaltet und soll ausgeschaltet sein");}
                    }
                }
            }
            else {
                if (isttemperatur == niedertemp) {
                    if (schaltzustand) {
                        if (Neueisttemperatur >= niederstill) {
                            if (debug) {console.log("        Neue Isttemp größer gleich Niederstill");}
                            if (debug) {console.log("        ist eingeschaltet und soll ausgeschaltet sein");}
                            controlFBHAktor(roomName, false);
                        }
                        else {
                            if (debug) {console.log("        Neue Isttemp kleiner Niederstill");}
                            if (debug) {console.log("        ist eingeschaltet und soll eingeschaltet sein");}
                        }
                    }
                    else {
                        if (Neueisttemperatur >= niederstill) {
                            if (debug) {console.log("        Neue Isttemp größer gleich Niederstill");}
                            if (debug) {console.log("        ist ausgeschaltet und soll eingeschaltet sein");}
                        }
                        else {
                            if (debug) {console.log("        Neue Isttemp kleiner Niederstill");}
                            if (debug) {console.log("        ist ausgeschaltet und soll eingeschaltet sein");}
                            controlFBHAktor(roomName, true, 36000);
                        }
                    }
                }
                else {
                    if (debug) {console.log("    Isttemperatur ist kleiner als niedertemp");}
                    if (schaltzustand) {
                        if (Neueisttemperatur >= niederstill) {
                            if (debug) {console.log("        Neue Isttemp größer gleich Niederstill");}
                            if (debug) {console.log("        ist eingeschaltet und soll ausgeschaltet sein");}
                            controlFBHAktor(roomName, false);
                        }
                        else {
                            if (debug) {console.log("        Neue Isttemp kleiner Niederstill");}
                            if (debug) {console.log("        ist eingeschaltet und soll eingeschaltet sein");}
                        }
                    }
                    else {
                        if (Neueisttemperatur >= niederstill) {
                            if (debug) {console.log("        Neue Isttemp größer gleich Niederstill");}
                            if (debug) {console.log("        ist ausgeschaltet und soll eingeschaltet sein");}
                        }
                        else {
                            if (debug) {console.log("        Neue Isttemp kleiner Niederstill");}
                            if (debug) {console.log("        ist ausgeschaltet und soll eingeschaltet sein");}
                            controlFBHAktor(roomName, true, 36000);
                        }
                    }
                }
            }
        }
        rooms[roomName].FBVergleichTemp = isttemperatur;
    
        rooms[roomName].StartHeizzeit.push(new Date().getTime());
        if (rooms[roomName].StartHeizzeit.length > 3) rooms[roomName].StartHeizzeit.shift();
    
        rooms[roomName].skriptTimeout = setTimeout(function() {
            //if (debug) {console.log('Timeout ausgelöst ' + roomName);}
            rooms[roomName].skriptTimeout = null;
            ventilLogik(roomName);
        }, rooms[roomName].skriptZyklus*60*1000);
        if (debug) {console.log("Ende " + roomName + ', Nächster Lauf in ' + (rooms[roomName].skriptZyklus) + 'm');}
    }
    
    function controlFBHAktor(roomName, enabled, time) {
        var useSupport = false;
        if (rooms[roomName].stateIdHeizungUnterstuetzungAktor) {
            var isttemperatur = getState(rooms[roomName].stateIdIstTemperatur).val;
            var solltemperatur = getState(rooms[roomName].stateIdSollTemperatur).val;
            if (enabled && solltemperatur - isttemperatur > rooms[roomName].heizunterstuetzungKelvin) {
                if (debug) {console.log('    Steuern UnterstützungsAktor FBH ' + roomName + ' --> ' + enabled + ' (time=' + time + ')');}
                useSupport = true;
            }
            else if (!enabled || getState(rooms[roomName].stateIdHeizungUnterstuetzungAktor).val) useSupport = true;
        }
    
        if (enabled && time) {
            time = Math.round(time);
            setState(rooms[roomName].stateIdHeizungAktorOnTime, time, false, function() {
                if (debug) {console.log('    Steuern Aktor FBH ' + roomName + ' --> ' + enabled + ' (time=' + time + ')');}
                setState(rooms[roomName].stateIdHeizungAktor, true, false);
                if (useSupport) {
                    setState(rooms[roomName].stateIdHeizungUnterstuetzungAktorOnTime, time, false, function() {
                        if (debug) {console.log('    Steuern UnterstützungsAktor FBH ' + roomName + ' --> ' + enabled + ' (time=' + time + ', tempDiff=' + (solltemperatur - isttemperatur) + ')');}
                        setState(rooms[roomName].stateIdHeizungUnterstuetzungAktor, true, false);
                    });
                }
            });
        }
        else {
            if (debug) {console.log('    Steuern Aktor FBH ' + roomName + '--> ' + enabled);}
            setState(rooms[roomName].stateIdHeizungAktor, enabled, false);
            if (useSupport) {
                if (debug) {console.log('    Steuern UnterstützungsAktor FBH ' + roomName + '--> ' + enabled);}
                setState(rooms[roomName].stateIdHeizungUnterstuetzungAktor, enabled, false);
            }
        }
    }
    
    

    Viel Spass bei der Nutzung. Klappt bei mir recht gut und die Räume übersteuern fast nicht …

    Eine weitere Funktionalität zur Voraussteuerung und Aufheizzeitmessung gibt es unter http://forum.iobroker.net/viewtopic.php ... 89#p107689

    Ingo

    U Offline
    U Offline
    Unterstedter
    schrieb am zuletzt editiert von
    #56

    @apollon77

    Ich glaube ich habe noch einen kleinen Fehler im Skript gefunden. Müsste es nicht in der onstop Funktion in der if-Funktion

    statt:
    if (rooms[roomname].skriptTimeout) {

    So lauten:
    if (rooms[room].skriptTimeout) {

    Danke und Grüße!

    apollon77A 1 Antwort Letzte Antwort
    0
    • U Unterstedter

      @apollon77

      Ich glaube ich habe noch einen kleinen Fehler im Skript gefunden. Müsste es nicht in der onstop Funktion in der if-Funktion

      statt:
      if (rooms[roomname].skriptTimeout) {

      So lauten:
      if (rooms[room].skriptTimeout) {

      Danke und Grüße!

      apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #57

      @unterstedter Hast Recht!

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      M 1 Antwort Letzte Antwort
      0
      • apollon77A apollon77

        @unterstedter Hast Recht!

        M Offline
        M Offline
        Morgennebel
        schrieb am zuletzt editiert von
        #58

        Moin,

        ich habe den Verdacht, daß das Script mit der aktuellen JS-Engine nicht richtig zusammenspielt.

        Das Script lief mehrere Monate fehlerfrei mit Homematic-230V DIN-Schienen 4fach Aktoren und 230V-Fußbodenreglern über ein Raspberrymatic mit Charly-Funkmodul.

        Seit 1-2 Wochen (in etwa, seit ein Update der JS-Engine kam) werden rein über die Fußbodenheizung beheizte Räume nicht mehr warm. In FLOT-Diagrammen zeigt sich, daß die Aktoren nur ganz kurz oder gar nicht angehen:

        Gästezimmer.PNG

        Oder nur viel zu spät und zögerlich angehen:

        Gästezimmer 2.PNG

        Ich bin ehrlich gesagt etwas ratlos, was sonst nicht funktionieren könnte.

        Hat jemand ähnliche Probleme?

        Danke, -MN

        --
        IOBroker nach 5.5 Jahren FHEM.
        Docker: IOB+redis+InfluxDB mit Devuan 6.0 (Linux).
        OPNSense, Ruckus, Homematic, HeatingControl, Hue, InfluxDB, Kodi, LinkedDevices, LGTV, LGTV11, Luftdaten, MQTT, MiHome-Vaccum, Pi-Hole, Pollenflug, Shelly, Telegram, Vis, Wolf,

        apollon77A 1 Antwort Letzte Antwort
        0
        • M Morgennebel

          Moin,

          ich habe den Verdacht, daß das Script mit der aktuellen JS-Engine nicht richtig zusammenspielt.

          Das Script lief mehrere Monate fehlerfrei mit Homematic-230V DIN-Schienen 4fach Aktoren und 230V-Fußbodenreglern über ein Raspberrymatic mit Charly-Funkmodul.

          Seit 1-2 Wochen (in etwa, seit ein Update der JS-Engine kam) werden rein über die Fußbodenheizung beheizte Räume nicht mehr warm. In FLOT-Diagrammen zeigt sich, daß die Aktoren nur ganz kurz oder gar nicht angehen:

          Gästezimmer.PNG

          Oder nur viel zu spät und zögerlich angehen:

          Gästezimmer 2.PNG

          Ich bin ehrlich gesagt etwas ratlos, was sonst nicht funktionieren könnte.

          Hat jemand ähnliche Probleme?

          Danke, -MN

          apollon77A Offline
          apollon77A Offline
          apollon77
          schrieb am zuletzt editiert von
          #59

          @morgennebel Hast du im Skript mal "debug" eingeschaltet, dann solltest Du sehen was er wann tut und wann/warum nicht

          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
          M 2 Antworten Letzte Antwort
          0
          • apollon77A apollon77

            @morgennebel Hast du im Skript mal "debug" eingeschaltet, dann solltest Du sehen was er wann tut und wann/warum nicht

            M Offline
            M Offline
            Morgennebel
            schrieb am zuletzt editiert von
            #60

            @apollon77
            Gerade aktiviert. Bei 24 Kreisen ist das recht umfangreich. Lässt sich das auf 2 Kreise irgendwie reduzieren?

            Danke für die schnelle Hilfe,

            Ciao, -MN

            --
            IOBroker nach 5.5 Jahren FHEM.
            Docker: IOB+redis+InfluxDB mit Devuan 6.0 (Linux).
            OPNSense, Ruckus, Homematic, HeatingControl, Hue, InfluxDB, Kodi, LinkedDevices, LGTV, LGTV11, Luftdaten, MQTT, MiHome-Vaccum, Pi-Hole, Pollenflug, Shelly, Telegram, Vis, Wolf,

            apollon77A 1 Antwort Letzte Antwort
            0
            • M Morgennebel

              @apollon77
              Gerade aktiviert. Bei 24 Kreisen ist das recht umfangreich. Lässt sich das auf 2 Kreise irgendwie reduzieren?

              Danke für die schnelle Hilfe,

              Ciao, -MN

              apollon77A Offline
              apollon77A Offline
              apollon77
              schrieb am zuletzt editiert von
              #61

              @morgennebel Nicht ohne das Skript anzupassen ... debug mode geht nur alles oder nicht

              Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

              • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
              • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
              1 Antwort Letzte Antwort
              1
              • apollon77A apollon77

                @morgennebel Hast du im Skript mal "debug" eingeschaltet, dann solltest Du sehen was er wann tut und wann/warum nicht

                M Offline
                M Offline
                Morgennebel
                schrieb am zuletzt editiert von
                #62

                @apollon77 Danke für den Hinweis.

                Nach dem Logfile zu schließen, ist der Homematic 4fach-Aktor defekt:

                2021-03-24 05:01:51.890 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: ist ausgeschaltet und soll eingeschaltet sein
                2021-03-24 05:01:51.890 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Ende Gaestezimmer-Rechts, Nächster Lauf in 20m
                2021-03-24 05:01:51.892 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Steuern Aktor FBH Gaestezimmer-Links --> true (time=36000)
                2021-03-24 05:01:51.892 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Steuern Aktor FBH Gaestezimmer-Rechts --> true (time=36000)
                2021-03-24 05:01:51.895 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Gaestezimmer-Links: false--> true (ack=false, from=system.adapter.javascript.0)
                2021-03-24 05:01:51.895 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Gaestezimmer-Rechts: false--> true (ack=false, from=system.adapter.javascript.0)
                2021-03-24 05:01:52.077 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Gaestezimmer-Links: true--> true (ack=true, from=system.adapter.linkeddevices.0)
                2021-03-24 05:01:52.236 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Gaestezimmer-Rechts: true--> true (ack=true, from=system.adapter.linkeddevices.0)
                2021-03-24 05:01:53.383 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Gaestezimmer-Links: true--> false (ack=true, from=system.adapter.linkeddevices.0)
                2021-03-24 05:01:54.051 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Ineke-Schlaf: false--> false (ack=true, from=system.adapter.linkeddevices.0)
                2021-03-24 05:01:54.518 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Gaestezimmer-Rechts: true--> false (ack=true, from=system.adapter.linkeddevices.0)
                

                Das ist dann kein Script- sondern ein Homematic-Fehler...

                Es sei denn, die ON_TIME-Befehle sind zeitlich zu nah beim SET ON-Befehl?

                Danke, -MN

                --
                IOBroker nach 5.5 Jahren FHEM.
                Docker: IOB+redis+InfluxDB mit Devuan 6.0 (Linux).
                OPNSense, Ruckus, Homematic, HeatingControl, Hue, InfluxDB, Kodi, LinkedDevices, LGTV, LGTV11, Luftdaten, MQTT, MiHome-Vaccum, Pi-Hole, Pollenflug, Shelly, Telegram, Vis, Wolf,

                H 1 Antwort Letzte Antwort
                0
                • M Morgennebel

                  @apollon77 Danke für den Hinweis.

                  Nach dem Logfile zu schließen, ist der Homematic 4fach-Aktor defekt:

                  2021-03-24 05:01:51.890 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: ist ausgeschaltet und soll eingeschaltet sein
                  2021-03-24 05:01:51.890 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Ende Gaestezimmer-Rechts, Nächster Lauf in 20m
                  2021-03-24 05:01:51.892 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Steuern Aktor FBH Gaestezimmer-Links --> true (time=36000)
                  2021-03-24 05:01:51.892 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Steuern Aktor FBH Gaestezimmer-Rechts --> true (time=36000)
                  2021-03-24 05:01:51.895 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Gaestezimmer-Links: false--> true (ack=false, from=system.adapter.javascript.0)
                  2021-03-24 05:01:51.895 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Gaestezimmer-Rechts: false--> true (ack=false, from=system.adapter.javascript.0)
                  2021-03-24 05:01:52.077 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Gaestezimmer-Links: true--> true (ack=true, from=system.adapter.linkeddevices.0)
                  2021-03-24 05:01:52.236 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Gaestezimmer-Rechts: true--> true (ack=true, from=system.adapter.linkeddevices.0)
                  2021-03-24 05:01:53.383 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Gaestezimmer-Links: true--> false (ack=true, from=system.adapter.linkeddevices.0)
                  2021-03-24 05:01:54.051 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Ineke-Schlaf: false--> false (ack=true, from=system.adapter.linkeddevices.0)
                  2021-03-24 05:01:54.518 - info: javascript.0 (32697) script.js.Heizung.Fussboden_PWM-Steuerung: Änderung Status Aktor FBH Gaestezimmer-Rechts: true--> false (ack=true, from=system.adapter.linkeddevices.0)
                  

                  Das ist dann kein Script- sondern ein Homematic-Fehler...

                  Es sei denn, die ON_TIME-Befehle sind zeitlich zu nah beim SET ON-Befehl?

                  Danke, -MN

                  H Offline
                  H Offline
                  homecineplexx
                  schrieb am zuletzt editiert von
                  #63

                  @apollon77 cooles script, aber wie könnte ich das für IR-Paneel nutzen?
                  ich hab natürlich einen aktor (ein/aus) einen Tempfühler für. benötige ich noch etwas?

                  apollon77A 1 Antwort Letzte Antwort
                  0
                  • H homecineplexx

                    @apollon77 cooles script, aber wie könnte ich das für IR-Paneel nutzen?
                    ich hab natürlich einen aktor (ein/aus) einen Tempfühler für. benötige ich noch etwas?

                    apollon77A Offline
                    apollon77A Offline
                    apollon77
                    schrieb am zuletzt editiert von
                    #64

                    @homecineplexx Ich verstehe die Frage nicht?! Du brauchst einen Aktor der das IR Panel ein bzw aus schaltet ... rest siehe oben

                    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                    H 1 Antwort Letzte Antwort
                    0
                    • apollon77A apollon77

                      @homecineplexx Ich verstehe die Frage nicht?! Du brauchst einen Aktor der das IR Panel ein bzw aus schaltet ... rest siehe oben

                      H Offline
                      H Offline
                      homecineplexx
                      schrieb am zuletzt editiert von
                      #65

                      @apollon77 said in [Vorlage] Ventilsteuerung PWM-Ansatz für FBH/IR-Panele o.ä.:

                      @homecineplexx Ich verstehe die Frage nicht?! Du brauchst einen Aktor der das IR Panel ein bzw aus schaltet ... rest siehe oben

                      Und wie ist das mit dem On_Time, was ich nicht habe?

                      HomoranH apollon77A 2 Antworten Letzte Antwort
                      0
                      • H homecineplexx

                        @apollon77 said in [Vorlage] Ventilsteuerung PWM-Ansatz für FBH/IR-Panele o.ä.:

                        @homecineplexx Ich verstehe die Frage nicht?! Du brauchst einen Aktor der das IR Panel ein bzw aus schaltet ... rest siehe oben

                        Und wie ist das mit dem On_Time, was ich nicht habe?

                        HomoranH Nicht stören
                        HomoranH Nicht stören
                        Homoran
                        Global Moderator Administrators
                        schrieb am zuletzt editiert von Homoran
                        #66

                        @homecineplexx sagte in [Vorlage] Ventilsteuerung PWM-Ansatz für FBH/IR-Panele o.ä.:

                        Und wie ist das mit dem On_Time, was ich nicht habe?

                        der Datenpunkt On_time speichert den Ausschaltezeitpunkt direkt im Aktor.
                        Wenn deine Aktor das nicht kann musst du nach dieser Zeit selber wieder ausschalten.

                        Die zusätzliche Sicherheit, dass der Aktor auch ausschaltet, wenn in der Zwischenzeit deine Logik abraucht, hast du dann allerdings nicht

                        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                        1 Antwort Letzte Antwort
                        1
                        • H homecineplexx

                          @apollon77 said in [Vorlage] Ventilsteuerung PWM-Ansatz für FBH/IR-Panele o.ä.:

                          @homecineplexx Ich verstehe die Frage nicht?! Du brauchst einen Aktor der das IR Panel ein bzw aus schaltet ... rest siehe oben

                          Und wie ist das mit dem On_Time, was ich nicht habe?

                          apollon77A Offline
                          apollon77A Offline
                          apollon77
                          schrieb am zuletzt editiert von
                          #67

                          @homecineplexx Dann entweder einen Aktor nehmen der es kann oder du musst einen javascript state nehmen mit nem Skript der das dann simuliert. Kann der das wirklich nicht ?

                          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                          H 1 Antwort Letzte Antwort
                          1
                          • apollon77A apollon77

                            @homecineplexx Dann entweder einen Aktor nehmen der es kann oder du musst einen javascript state nehmen mit nem Skript der das dann simuliert. Kann der das wirklich nicht ?

                            H Offline
                            H Offline
                            homecineplexx
                            schrieb am zuletzt editiert von
                            #68

                            @apollon77 said in [Vorlage] Ventilsteuerung PWM-Ansatz für FBH/IR-Panele o.ä.:

                            @homecineplexx Dann entweder einen Aktor nehmen der es kann oder du musst einen javascript state nehmen mit nem Skript der das dann simuliert. Kann der das wirklich nicht ?

                            also nein...ich würde dann einfach den Aktor nehmen, an dem mein IR-Paneel bis dato hing. das ist ein Tasmota-Device
                            f65f7e5c-5482-4036-bdd7-bc0f654f5008-image.png

                            Du meinst ich müßte mir für diesen ON-TIME ein eigenes Skript bauen, der mir den aktor nach den eingetragen Zeit (Sekunden) ausschaltet?

                            @Homoran wir gehen doch davon aus, dass die Logik nicht abraucht :-)

                            HomoranH 1 Antwort Letzte Antwort
                            0
                            • H homecineplexx

                              @apollon77 said in [Vorlage] Ventilsteuerung PWM-Ansatz für FBH/IR-Panele o.ä.:

                              @homecineplexx Dann entweder einen Aktor nehmen der es kann oder du musst einen javascript state nehmen mit nem Skript der das dann simuliert. Kann der das wirklich nicht ?

                              also nein...ich würde dann einfach den Aktor nehmen, an dem mein IR-Paneel bis dato hing. das ist ein Tasmota-Device
                              f65f7e5c-5482-4036-bdd7-bc0f654f5008-image.png

                              Du meinst ich müßte mir für diesen ON-TIME ein eigenes Skript bauen, der mir den aktor nach den eingetragen Zeit (Sekunden) ausschaltet?

                              @Homoran wir gehen doch davon aus, dass die Logik nicht abraucht :-)

                              HomoranH Nicht stören
                              HomoranH Nicht stören
                              Homoran
                              Global Moderator Administrators
                              schrieb am zuletzt editiert von
                              #69

                              @homecineplexx sagte in [Vorlage] Ventilsteuerung PWM-Ansatz für FBH/IR-Panele o.ä.:

                              Du meinst ich müßte mir für diesen ON-TIME ein eigenes Skript bauen

                              ich habe mir das skript nicht angeshene, aber das müsstest du wahrscheinlich in dem gleichen skript mit/nach dem anschalten, verzögert um... (on_time) ausschalten

                              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                              H 1 Antwort Letzte Antwort
                              0
                              • HomoranH Homoran

                                @homecineplexx sagte in [Vorlage] Ventilsteuerung PWM-Ansatz für FBH/IR-Panele o.ä.:

                                Du meinst ich müßte mir für diesen ON-TIME ein eigenes Skript bauen

                                ich habe mir das skript nicht angeshene, aber das müsstest du wahrscheinlich in dem gleichen skript mit/nach dem anschalten, verzögert um... (on_time) ausschalten

                                H Offline
                                H Offline
                                homecineplexx
                                schrieb am zuletzt editiert von
                                #70

                                also der console.log funktioniert nicht wirklich, obwohls auf debug steht. da kommt einfach nichts in der console :-( aber das ist wahrscheinlich ein allgemeines problem

                                H 1 Antwort Letzte Antwort
                                0
                                • H homecineplexx

                                  also der console.log funktioniert nicht wirklich, obwohls auf debug steht. da kommt einfach nichts in der console :-( aber das ist wahrscheinlich ein allgemeines problem

                                  H Offline
                                  H Offline
                                  homecineplexx
                                  schrieb am zuletzt editiert von
                                  #71

                                  @apollon77 sorry das ich nerve, aber.....diese ON_TIME sind das Sekunden?

                                  apollon77A 1 Antwort Letzte Antwort
                                  0
                                  • H homecineplexx

                                    @apollon77 sorry das ich nerve, aber.....diese ON_TIME sind das Sekunden?

                                    apollon77A Offline
                                    apollon77A Offline
                                    apollon77
                                    schrieb am zuletzt editiert von
                                    #72

                                    @homecineplexx ja

                                    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                    1 Antwort Letzte Antwort
                                    1
                                    • M Offline
                                      M Offline
                                      Marc12345
                                      schrieb am zuletzt editiert von
                                      #73

                                      Vielen Dank Apollon77 für die tolle iobroker-Integration. Ich hatte bisher die ursprünglichen Scripte von Twoxx genutzt und war total zufrieden mit der exakten Temperatursteuerung.

                                      Da jetzt (hoffentlich) der Sommer kommt und unsere Fussbodenheizung i.V.m. einer Luft-Wasser-Wärmepumpe auch kühlen kann, würde ich das gerne auch dafür nutzen. Hat dies evtl. schon jemand umgesetzt oder kann mir einen Tipp geben, an welchen Punkten ich hier eine Anpassung vornehmen sollte?

                                      Ich frage bewusst hier, da im anderen Forum bei sowas oftmals nur Grundsatzdiskussionen über den Sinn einer PWM entstehen. :disappointed:

                                      Vielen Dank für eine Hilfe!
                                      Marc

                                      1 Antwort Letzte Antwort
                                      0
                                      • M Offline
                                        M Offline
                                        Matt77CHE
                                        schrieb am zuletzt editiert von
                                        #74

                                        Guten Tag zusammen
                                        Hallo @apollon77
                                        Auf der Suche nach einem Script für meine Fussbodenheizung bin ich hier gelandet - ist zwar schon etwas älter, macht aber nichts - hoffe ich zumindest :blush:

                                        Ich möchte meine Fussbodenheizung mit dem HM IP Fußbodenheizungsaktor 12fach motorisch und dem Homematic IP Stellantrieb - motorisch steuern.

                                        So wie ich dein Script verstanden habe, schaltet es die Stellantriebe "einfach" aus- und ein....
                                        Der HM IP Stellantrieb motorisch kann jedoch verschiedene Stufen - Passt das auch mit dem Script, oder müsste man da das ganze umbauen um die Stufen der Stellantriebe regeln zu können?

                                        Ich habe mit der Suche nur noch einen alten Adapter gefunden, welcher etwas ähnliches wie hier macht - der macht aber so wie es aussieht auch nur on/off...

                                        Vielen Dank im Voraus & Beste Grüsse

                                        apollon77A HomoranH 2 Antworten Letzte Antwort
                                        0
                                        • M Matt77CHE

                                          Guten Tag zusammen
                                          Hallo @apollon77
                                          Auf der Suche nach einem Script für meine Fussbodenheizung bin ich hier gelandet - ist zwar schon etwas älter, macht aber nichts - hoffe ich zumindest :blush:

                                          Ich möchte meine Fussbodenheizung mit dem HM IP Fußbodenheizungsaktor 12fach motorisch und dem Homematic IP Stellantrieb - motorisch steuern.

                                          So wie ich dein Script verstanden habe, schaltet es die Stellantriebe "einfach" aus- und ein....
                                          Der HM IP Stellantrieb motorisch kann jedoch verschiedene Stufen - Passt das auch mit dem Script, oder müsste man da das ganze umbauen um die Stufen der Stellantriebe regeln zu können?

                                          Ich habe mit der Suche nur noch einen alten Adapter gefunden, welcher etwas ähnliches wie hier macht - der macht aber so wie es aussieht auch nur on/off...

                                          Vielen Dank im Voraus & Beste Grüsse

                                          apollon77A Offline
                                          apollon77A Offline
                                          apollon77
                                          schrieb am zuletzt editiert von
                                          #75

                                          @matt77che sagte in [Vorlage] Ventilsteuerung PWM-Ansatz für FBH/IR-Panele o.ä.:

                                          Der HM IP Stellantrieb motorisch kann jedoch verschiedene Stufen - Passt das auch mit dem Script, oder müsste man da das ganze umbauen um die Stufen der Stellantriebe regeln zu können?

                                          Das Skript arbeitet nach einem PWM ansatz und das ist primär auf und zu ... Am Ende korreliert die "Zeit" ja aber mit der menge an Energie die man haben will im (ich glaube) 20 Minuten Intervall ... das müsste sich also easy in einen % Wert umrechnen lassen und dann so setzen lassen?

                                          Aber ja das müsstest Du anpassen.

                                          Kannst die Angepasste Version ja dann gern hier bereitstellen.

                                          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          856

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe