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. Skripten / Logik
  4. Thermostate HM-CC-RT-DM in Party/Urlaubsmode setzen

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    5
    1
    32

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

Thermostate HM-CC-RT-DM in Party/Urlaubsmode setzen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 3 Kommentatoren 1.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.
  • E Offline
    E Offline
    ehome
    schrieb am zuletzt editiert von
    #1

    Hallo,

    um meine CCU zu entlasten versuche ich gerade die gesamte Logik von der CCU nach IO Broker zu schieben. Leider programmiere ich

    eigentlich nur Perl "einigermaßen" und tue mich mit Java Script etwas schwer. Man möge mir also bitte schlechten Programmierstiel und umständliche Syntax verzeihen :oops:

    Nun zum eigentlichen Problem:

    Abhängig von einer Variablen (hier "FreieTage.Urlaub") sollen alle Thermostate im Haus in den Partymodus gesetzt werden.

    Dafür benötige ich eine Funktion, die die Werte für das Thermostat setzt.

    Hier ein Entwurf:

    var urlaub=getState("javascript.0.FreieTage.Urlaub").val;
    log("**Urlaub="+urlaub+"**");
    
    // nur test, abhaengigkeite von variable urlaub + schleife ueber alle thermostate erst spaeter
    
    var id="hm-rpc.0.XXXXXXXXXXX.4";
    set_hv_partymode(id);  
    
    function set_hv_partymode(id) {
    
        log("**ID ist:** "+id);
    
        var PARTY_START_T=getState(id+".PARTY_START_TIME").val;
        log("**"+id+".PARTY_START_D:** "+PARTY_START_T);
    
         // start: 1.11.2016 um 2:00 Uhr
        var PARTY_START_DAY   = 1;
        var PARTY_START_MONTH = 11;
        var PARTY_START_YEAR  = 16;
        var PARTY_START_TIME  = 120;
    
        // ende: 5.11.2016 um 12:00 Uhr
        var PARTY_STOP_DAY   = 5;
        var PARTY_STOP_MONTH = 11;
        var PARTY_STOP_YEAR  = 16;
        var PARTY_STOP_TIME  = 720;
    
        var PARTY_TEMPERATURE = 14;
    
        setState(id+".PARTY_START_DAY", PARTY_START_DAY, true);
        setState(id+".PARTY_START_MONTH", PARTY_START_MONTH, true);
        setState(id+".PARTY_START_DAY", PARTY_START_DAY, true);
        setState(id+".PARTY_START_TIME", PARTY_START_DAY, true);
    
        setState(id+".PARTY_STOP_DAY", PARTY_STOP_DAY, true);
        setState(id+".PARTY_STOP_MONTH", PARTY_STOP_MONTH, true);
        setState(id+".PARTY_STOP_DAY", PARTY_STOP_DAY, true);
        setState(id+".PARTY_STOP_TIME", PARTY_STOP_DAY, true);
    
        setState(id+".PARTY_TEMPERATURE", PARTY_TEMPERATURE, true);
    }
    
    

    Leider werden die Daten für den Party/Urlaubsmode nicht übertragen bzw. nicht gesetzt. Im Event-Log sehe ich aber dass sie zumindest in IO broker gesetzt werden

    Jemand eine Idee ?

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      Zum Urlaubs-/Partymode findet man nicht einmal was Erhellendes im Homematic-Forum.

      Du solltest nicht Ack auf true setzen (am Ende von setState), denn das soll bei erfolgter Übertragung an das Gerät durch den hm-rpc-Adapter erfolgen.

      Einfacher wäre es sicherlich mit 2 * schedule zu arbeiten und bei Reisebeginn den HKT auf MANU_MODE mit 14 °C zu setzen und bei Rückkehr wieder zurück auf AUTO_MODE.

      // Urlaubsmodus steuern
      
      var id="hm-rpc.0.XXXXXXXXXXX.4";
      var start = "1.11\. 2:00";
      var stop = "5.11\. 12:00";
      var temp = 14;
      
      start = start.split(". ");
      var startd = start[0].split(".");
      var startt = start[1].split(":");
      
      stop = stop.split(". ");
      var stopd = stop[0].split(".");
      var stopt = stop[1].split(":");
      
      schedule(startt[1] + " " + startt[0] + " " + startd[0] + " " + startd[1] + " *", function() {
      	setState(id + ".MANU_MODE", temp);
      });
      
      schedule(stopt[1] + " " + stopt[0] + " " + stopd[0] + " " + stopd[1] + " *", function() {
      	setState(id + ".AUTO_MODE", true);
      });
      
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • E Offline
        E Offline
        ehome
        schrieb am zuletzt editiert von
        #3

        danke Paul - das war auch meine erste Idee, hatte es aber mit dem Parameter CONTROL_MODE. versucht (Auto/Manu/Party/boost),

        der ist in IO broker aber ro definiert. Wenn mann zu schnell hintereinander die Variable umschaltet, gibt es Fehler - "sending to Fast" oder so - da ist die ccu wohl nicht schnell genug..

        Ein einfaches sellep oder wait kennt java script nicht - oder ?

        Das Script sieht jetzt so aus - leider werden die 3 Heizgruppen, die ich habe nicht umgeschaltet. Bei Räumen ohne Heizgruppe geht es jetzt.

        // 
        // Schaltet abhaengig von der Variablen: Heizung.Heizung_aus alle Heizventile auf manuellen oder automtik Betrieb. 
        // 
        
        createState('Heizung.Heizung_aus',false, {type: 'boolean'});
        
        var idTrigger = "javascript.0.Heizung.Heizung_aus";
        var absenktemperatur = getState("hm-rega.0.5742"/*Absenktemperatur*/).val;
        
        on ({id: idTrigger, val: true}, function () { heizung_manuell() });
        on ({id: idTrigger, val: false}, function () { heizung_automatisch() });
        
        function heizung_manuell () {
        
            log('**START**');
            var schalter=getState("javascript.0.Heizung.Heizung_aus").val;
        
                $('channel[state.id=*.MANU_MODE](functions=Heizung)').each(function(id,i) {
                    log("**ID: "+id+" auf MANU_MODE "+absenktemperatur+" gesetzt**");
                    setState(id , absenktemperatur);
                });
                log('Alle Ventile auf manuell gestellt');
        
        }
        
        function heizung_automatisch () {
        
                $('channel[state.id=*.AUTO_MODE](functions=Heizung)').each(function(id,i) {
                    log("**ID: "+id+" auf AUTO_MODE true gesetzt**");
                    setState(id , true);
                });
                log('**Alle Ventile auf auto gestellt**');
        }
        
        

        Gru0

        Olli

        1 Antwort Letzte Antwort
        0
        • D Offline
          D Offline
          DeepCore
          schrieb am zuletzt editiert von
          #4

          Hi ehome,

          gegen das Problem mit dem zu schnell senden habe ich folgende Lösung mit setStateDelayed irgendwann mal hier im Forum gefunden. Ich benutze es zum Beispiel um alle Lichter auszuschalten …

          var idx = 0; /* Index-Zähler */
          var interval = 300; /* 300ms Abstand */
          
          $('channel[state.id=*.STATE](functions=Beleuchtung)').each(function (id, i) {                         
          
              var obj    = getObject(id);
          
              if (getState(id).val){
                  setStateDelayed(id, false, (idx++) * interval); /* Zähler erhöhen, mit Interval multipliziert */
                  log('switch off: ' + obj.common.name);
              } 
          
          });
          
          

          Habe noch etwas gefunden wegen dem Party-Mode im https://forum.homegear.eu/viewtopic.php?t=115#p736
          ` > Es macht gegenüber den einzelnen Party-Mode-Variablen auf jeden Fall Sinn, PARTY_MODE_SUBMIT zu verwenden, weil dann nur ein einziges Paket an den Stellantrieb gesendet werden muss.

          An PARTY_MODE_SUBMIT übergibst du einen String mit folgenden kommagetrennten Elementen:

          Partytemperatur (z. B. 21.5 - nicht mit Komma schreiben)

          Start-Uhrzeit in Minuten seit 0 Uhr mit einer Auflösung von 30 Minuten (also zum Beispiel 1020 für 17 Uhr)

          Starttag (z. B. 21)

          Startmonat (z. B. 5)

          Letzte zwei Ziffern des Startjahres (z. B. 14 für 2014)

          End-Uhrzeit in Minuten seit 0 Uhr wieder mit einer Auflösung von 30 Minuten (z. B. 1380 für 23 Uhr)

          Endtag

          Endmonat

          Letzte zwei Ziffern des Endjahres `

          Gruß

          Philippe

          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

          625

          Online

          32.5k

          Benutzer

          81.7k

          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