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

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Zentrale Heizungssteuerung

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Zentrale Heizungssteuerung

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
5 Beiträge 3 Kommentatoren 2.7k Aufrufe
  • Ä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.
  • T Offline
    T Offline
    Trident
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    gibt es ein "best practice" zur Umsetzung einer Heizungssteuerung in ioBroker?

    Diese sollte Anwesenheit und Abwesenheit realisiert bekommen (über Variable bzw. Geofency) sowie einen Wochenzeitplan besitzen. (Dieser wird dann von der Anwesenheitssteuerung überschrieben.)

    Unter CCU.IO hatte ich mir eine Lösung über die ScriptGUI gebaut bei ioBroker bin ich noch unsicher was die beste Umsetzungsform ist.

    • Rein JS

    • Scenes?

    • NodeRED

    • Kalenderadapter?

    Vorallem sollte die Kombination mit Fenstersensoren funktionieren. Meine zentrale Steuerung überschrieb leider regelmäßig die Absenktemperatur bei (zu lange) geöffneten Fenstern :)

    Freue mich über Vorschläge und Tipps.

    Danke

    Beste Grüße

    Trident

    1 Antwort Letzte Antwort
    0
    • V Offline
      V Offline
      versteckt
      schrieb am zuletzt editiert von
      #2

      Hallo,

      die Wochenpläne (für Homematic) steuere ich mittels occ. Dort werden die Thermostaten

      aber immer auf "AUTO" gestellt.

      Mittels homekit steuere ich im Moment neue Temperaturen wenn ich zuhause bin und es mir nicht passt.

      Szenen / Geofency würde ich gerne testen, bin ich aber leider immer noch nicht dazu gekommen.

      LG Christian

      Raspi 1, Raspi 2, iobroker, Mac Mini: alles mit aktueller ioBroker Version

      homegear für Homematic und MAX!

      occ, zWave, rpi, hmm und homekit Entwickler

      1 Antwort Letzte Antwort
      0
      • V Offline
        V Offline
        vegetto
        schrieb am zuletzt editiert von
        #3

        Bei mir habe ich eine State Maschine implementiert: an definierte Zeitpunkte wird eine State Variable zwische awake, empty und sleeping gewechselt. Das Script dafür habe ich in Forum vor 2 Monaten gepostet.

        Danach habe ich eine Script, dass die Ziel temperature für jedes Zimmer setzt. Dieses Script erkennt automatisch, wenn eine Fenster in gleiche Zimmer aufgemacht wird und dann setzt eine niedrige Zieltemperature bis die Fenstern zugemacht wird. Damit vermeide ich eine direkte Verbindung zwischen Thermostat und Fenster Sensor, so das die Batterien in Thermostat länger halten.

        Hier ist meine Heizung script:

        `var TEMPERATURES_ID="javascript.0.roomTemperatures";
        var STATE_PREVIEW_ID="javascript.0.homeStatePreview"/*homeStatePreview*/;
        var DEFAULT_TEMP=21;
        var OPEN_WINDOW_TEMP=12;
        var ICON="../hm-rpc/icons/42_hm-cc-tc_thumb.png";
        
        //Register all rooms
        rooms = getEnums('rooms');
        for (var i in rooms){
            var roomName = rooms[i].name;
            log("ROOM: "+roomName);
            $('state[id=.SETPOINT](rooms='+roomName+')').each(function(id, i){
                //log(id);
                registerTermostat(roomName, id);
            });
        }
        
        function registerTermostat(roomName, termostatTempId){
            log("Registering termostat for room "+roomName);
            //Create grouping states
            createState(TEMPERATURES_ID, 0 ,true, {role:"roomTemperatures",icon:ICON});
            var roomTemperatures4Termostat = TEMPERATURES_ID+"."+roomName;
            createState(roomTemperatures4Termostat, 0, true, {role:"roomTemperatures",icon:ICON});
        
            //Get the state names from STATE_PREVIEW
            homeStates = getObject(STATE_PREVIEW_ID).common.states;
            for (var state in homeStates) {
                //Create variable to store temperature for this room and state
                var stateName=TEMPERATURES_ID+"."+roomName+"."+homeStates[state];
                createState(stateName,
                            DEFAULT_TEMP,
                            false,
                            {role:"roomTemperatures",
                             unit: "°C",
                             icon: ICON,
                             desc: "Temperature for room "+roomName+" and state "+homeStates[state]
                            });
                //log("VALUE: "+JSON.stringify(getState(stateName)));
                //Register for changes in this variable
                on(stateName, cb(setTemperature));
            }
        
            //Register window states
            var windowIDs = [];
            $('state[id=.STATE](rooms='+roomName+')').each(function(id, i){
                var object = getObject(id);
                if(object.native.CONTROL == "DOOR_SENSOR.STATE") {
                    log("Detected window ("+roomName+"):"+getObject(id).common.name+" - "+id);
                    windowIDs.push(id);
                    on(id, cb(setTemperature));
                }
            });
        
            //Register for changes in home state
            on(STATE_PREVIEW_ID, cb(setTemperature));
        
            //Set current temperature for this room
            setTemperature();
        
            //Function that sets the temperature for this room
            function setTemperature(){
                //Are windows open?
                var windowsOpen = false;
                for (var i in windowIDs){
                    windowsOpen |= getState(windowIDs[i]).val;
                }
        
                if ( windowsOpen) {
                    log ("Target temp for "+roomName+": "+OPEN_WINDOW_TEMP+" (OPEN WINDOW)");
                    setStateIfChanged(termostatTempId,OPEN_WINDOW_TEMP);
                } else {
                    //Retrieve target temperature for this state
                    var previewState = getState(STATE_PREVIEW_ID).val;
                    var previewStateName = homeStates[previewState];
                    var targetTemperateState = getState(roomTemperatures4Termostat+"."+previewStateName);
                    //If we just create the state, then it might still not be available -> use DEFAULT_TEMP
                    var targetTemperate = targetTemperateState ? targetTemperateState.val  : DEFAULT_TEMP ;
        
                    //Convert to float
                    targetTemperate = parseFloat(targetTemperate);
        
                    //Set temperature
                    log ("Target temperature for "+roomName+" and previewState "+previewStateName+" is "+targetTemperate);
                    setStateIfChanged(termostatTempId,targetTemperate);
                }
        
            }
        
        }`[/i][/i]
        
        1 Antwort Letzte Antwort
        0
        • T Offline
          T Offline
          Trident
          schrieb am zuletzt editiert von
          #4

          Danke für die Antworten und guten Ideen!

          Das Skript sieht interessant aus, wobei mich als einziges der Verzicht auf die Direktverknüpfung stört. Ich habe in zwei Räumen das Wandthermostat zusätzlich zu dem Thermostat an der Heizung, da die Räume sonst nicht vernünftig zu regeln sind. Diese Funktion würde ich ohne Gruppe verlieren. Aber ich werde mir auf jeden Fall ein paar Anregungen aus dem Skript holen!

          Danke!

          VG

          Trident

          1 Antwort Letzte Antwort
          0
          • V Offline
            V Offline
            vegetto
            schrieb am zuletzt editiert von
            #5

            @Trident:

            der Verzicht auf die Direktverknüpfung stört `

            Ich habe noch eine Direktverknüpfung zwischen Ventil und Termostat, da die alten Homemematic Ventile die ich zu Hause habe, nicht direkt gestört werden können. Das ist bei die neue Homematic Ventil anders in der "Theorie", da die Temperatur damit so sehr starkt abeicht, dass man auch eine Wandtehrmostat braucht.

            Wenn Du nur die Wandtermostat steuern willst, kannst Du die Ventile ausfiltern:

            $('channel{TYPE=THERMALCONTROL_TRANSMIT}[state.id=*.SET_TEMPERATURE](rooms='+roomName+')').each(function(id, i){
                    //log(id);
                    registerTermostat(roomName, id);
                });
            
            

            So muss braucht man keine zusätzliche Gruppen.

            Die Direktverknüpfung habe ich nur zwischen Ventil und Fensterkontekt vemiedet, weil damit die alte Wandtehrmostaten immer dann wach bleiben mussten und damit die Akkus jede weniger Monaten getauscht werden mussten. Ich weiss nicht, ob bei die neue Wandtehrmostaten das noch dem Fall ist.

            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
            FAQ Cloud / IOT
            HowTo: Node.js-Update
            HowTo: Backup/Restore
            Downloads
            BLOG

            611

            Online

            32.7k

            Benutzer

            82.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