Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Steuerung Heizung nach Schichtplan

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Steuerung Heizung nach Schichtplan

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

      @rudiraz:

      Wenn ich nun zwei Thermostate zur Frühschicht schalten will, wie sieht das dann aus?

      Eine zweite Variable anlegen für das Thermostat ist ja nicht das Problem.

      Aber das Delay funktioniert dann doch nicht so oder? `
      Du kannst einfach alles mit "tempdatenpunkt" und "tempbevor" auf eine Variable "tempdatenpunkt2" und "tempbevor2" kopieren..

      Man könnte auch den Weg über eine Aufzählung gehen oder die Datenpunkte in ein Objekt/Array schreiben..

      Hier der Weg über "tempdatenpunkt2"..

      `var kalenderinhalt = getState('ical.0.data.table').val;                 // Kalender.data.table Datenpunkt Value
      var tempdatenpunkt = 'hm-rpc.0.OEQ0XXXXXXX.2.SET_TEMPERATURE';          // Datenpunt für die Temperatur
      var tempdatenpunkt2 = 'hm-rpc.0.OEQ0XXXXXXX.2.SET_TEMPERATURE';         // Zweiter Datenpunt für die Temperatur
      var temperatur = 22;                                                    // Gewünschte Temperatur um 04:45
      var logging = true;                                                     // Logging. (Auf false setzen um Logausgaben zu deaktivieren.)
      
      var schedfs = null;
      var morgenfs = null;
      var tempbevor = null;
      var tempbevor2 = null;
      
      function icalheating(obj){
                  var datestring="date";
                  var eventstring="event";
                  morgenfs = false;
                  for(var i = 0; i < obj.length; i++) {
                      if (obj[i][datestring].indexOf('Morgen') === 0 && obj[i][eventstring].indexOf('Frühschicht') === 0) {
                          if(logging) log('Für Morgen (' + obj[i][datestring] + ') steht ein passendes Event (' + obj[i][eventstring] + ') im Kalender!');
                          morgenfs = true;
                      } else { 
                          if(logging) log('Event im Kalender (' + obj[i][datestring] + ' ' + obj[i][eventstring] + ') passt nicht - wird ignoriert!'); }
                  }
                  if (morgenfs) {
                      if(logging) log('Morgen steht Frühschicht im Kalender.. Erstelle Schedule für 04:45.');
                      if(schedfs) clearSchedule(schedfs);                
                      schedfs = schedule('0 45 4 * * *', cb(function(){
                      // Hier beginnt der Abschnitt für das erste Thermostat					
                          tempbevor = getState(tempdatenpunkt).val;
                          setState(tempdatenpunkt,temperatur);
                          clearStateDelayed(tempdatenpunkt);
                          setStateDelayed(tempdatenpunkt, tempbevor,  2700000);
                      // Hier beginnt der Abschnitt für das zweite Thermostat.
                          tempbevor2 = getState(tempdatenpunkt2).val;
                          setState(tempdatenpunkt2,temperatur);
                          clearStateDelayed(tempdatenpunkt2);
                          setStateDelayed(tempdatenpunkt2, tempbevor2,  2700000);
                      }));
                  } else {
                      if(logging) log('Morgen keine Frühschicht! Eventuell vorhandener Schedule wird gelöscht.');
                      if(schedfs) clearSchedule(schedfs);
                  }
              }
      
      schedule("0 0 22 * * *", function () { icalheating(kalenderinhalt); });
      icalheating(kalenderinhalt);`
      
      Gruß[/i][/i][/i][/i][/i][/i]
      
      1 Reply Last reply Reply Quote 0
      • R
        rudiraz last edited by

        Dankeschön 🙂

        werde ich einbauen

        Grüße

        1 Reply Last reply Reply Quote 0
        • T
          Torsten_MG last edited by

          Ich muß mich hier auch mal anhängen, obwohl der Beitrag schon Staub ansetzt 😄

          JavaScript ist für mich auch noch komplettes neuland und ich verstehe jetzt gar nicht was ich damit anfangen kann.

          @BuZZy:

          @tempestas:

          Das ical.0.data.table ein Array ist, kann ich bei mir eben nicht sehen. Das hat schon sehr geholfen 🙂 Überall wo "object Object" auftaucht kannst du mit…

          Wo genau muß ich das einsetzen, damit ich das wo in Klarschrift sehe?

          ` > ````

          JSON.stringify(.....)
          also für ical.0.data.table:
          JSON.stringify(getState('ical.0.data.table').val)
          ````in Klartext darstellen was sich hinter "object Object" verbirgt. 🙂 `

          Danke schonmal!!

          1 Reply Last reply Reply Quote 0
          • BuZZy
            BuZZy last edited by

            Hi,

            wie weit bist du denn jetzt?

            Was genau möchtest du erreichen?

            Wie sieht dein Script bis jetzt aus?

            Gruß

            1 Reply Last reply Reply Quote 0
            • T
              Torsten_MG last edited by

              @BuZZy:

              Hi,

              wie weit bist du denn jetzt?

              Was genau möchtest du erreichen?

              Wie sieht dein Script bis jetzt aus?

              Gruß ` Das Sript selber kann ich noch nicht gebrauchen. Noch kein Thermostat. Ich möchte aber schon mal lernen das zu verstehen, darum die vorige Frage

              Gesendet von Unterwegs mit Tapatalk

              1 Reply Last reply Reply Quote 0
              • T
                Torsten_MG last edited by

                Du hattest mal geschrieben, dass man mit````
                JSON.stringify(getState('ical.0.data.table').val)

                
                Ich gehe jetzt mal davon aus, dass das in ein JavaScript eintragen werden muß. Wo wird mir aber das dann in Klartext angezeigt?
                1 Reply Last reply Reply Quote 0
                • BuZZy
                  BuZZy last edited by

                  JSON.stringify(getState('ical.0.data.table').val)
                  

                  Wandelt nur ein Object in ein String um.

                  Du musst mit diesem String dann natürlich "weiter Arbeiten"..

                  So pauschal kann ich dir da jetzt keine Antwort geben wenn ich nicht weiß was du überhaupt vor hast. :lol: 😄

                  Gruß

                  1 Reply Last reply Reply Quote 0
                  • T
                    Torsten_MG last edited by

                    Du warst jetzt schneller als ich, der Groschen war in der zwischenzeit gefallen :roll:

                    Ich wollte mir eigentlich nur den String anzeigen lassen um das zu verstehen, wie das geht habe ich jetzt verstanden

                    1 Reply Last reply Reply Quote 0
                    • T
                      Torsten_MG last edited by

                      Ich habe jetzt mal Testweise dein Script vom 17.01.2018, 13:57 geladen und gestartet. Ich habe für morgen einen Termin mit dem Text Frühschicht in den Kalender geschrieben, aber aus irgendeinem Grund erkennt er es anscheinend nicht.
                      9214_heizungssteuerung.jpg

                      1 Reply Last reply Reply Quote 0
                      • BuZZy
                        BuZZy last edited by

                        Aktivier mal in den Einstellungen vom iCal adapter die option "Ersetze Datum mit Worten" danach das Script nochmal starten, dann sollte es funktionieren..

                        Das Script sucht nach dem Wort "Morgen" und "Frühschicht".. Das Wort "Morgen" taucht aber nur mit der oben genannten Einstellung im iCal Adapter auf..

                        Gruß

                        1 Reply Last reply Reply Quote 0
                        • T
                          Torsten_MG last edited by

                          @BuZZy:

                          Aktivier mal in den Einstellungen vom iCal adapter die option "Ersetze Datum mit Worten" danach das Script nochmal starten, dann sollte es funktionieren..

                          Das Script sucht nach dem Wort "Morgen" und "Frühschicht".. Das Wort "Morgen" taucht aber nur mit der oben genannten Einstellung im iCal Adapter auf..

                          Gruß `

                          OK funktioniert. Nur steht jetzt im vis auch morgen, übermorgen, in 2 Tagen … im Plan, Das wollte ich ja eigentlich nicht

                          1 Reply Last reply Reply Quote 0
                          • BuZZy
                            BuZZy last edited by

                            Dann musst du das Script abändern - so dass statt nach "Morgen" + "Frühschicht" nach "Datum heute + 1 Tag" also nach "11.11.2018" + "Frühschicht" gesucht wird..

                            Gruß

                            1 Reply Last reply Reply Quote 0
                            • T
                              Torsten_MG last edited by

                              ich habe es jetzt anders gelöst bekommen.

                              Statt nach date schaue ich jetzt nach _class

                              Hier die geänderten Zeilen:

                              function icalheating(obj){
                              var datestring="_class";
                              
                              
                              `if (obj[i][datestring].indexOf('ical_Schicht Torsten ical_tomorrow') === 0 && obj[i][eventstring].indexOf('Frühschicht') === 0) {` [/i][/i]
                              
                              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

                              666
                              Online

                              32.0k
                              Users

                              80.5k
                              Topics

                              1.3m
                              Posts

                              5
                              34
                              4611
                              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