Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Zentrale Heizungssteuerung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Zentrale Heizungssteuerung

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      Trident last edited by

      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 Reply Last reply Reply Quote 0
      • V
        versteckt last edited by

        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

        1 Reply Last reply Reply Quote 0
        • V
          vegetto last edited by

          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 Reply Last reply Reply Quote 0
          • T
            Trident last edited by

            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 Reply Last reply Reply Quote 0
            • V
              vegetto last edited by

              @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 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate
              FAQ Cloud / IOT
              HowTo: Node.js-Update
              HowTo: Backup/Restore
              Downloads
              BLOG

              414
              Online

              31.9k
              Users

              80.2k
              Topics

              1.3m
              Posts

              3
              5
              2610
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo