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. Steuerung Heizung nach Schichtplan

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    10
    1
    106

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

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

Steuerung Heizung nach Schichtplan

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
34 Beiträge 5 Kommentatoren 5.4k 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.
  • BuZZyB Offline
    BuZZyB Offline
    BuZZy
    schrieb am zuletzt editiert von
    #17

    @tempestas:

    Diesen Teil````
    var datestring="date";
    var eventstring="event";

    
    Grds verstehe ich, dass du im "Datumbereich" nach dem Wort morgen suchst und nach Frühschicht im Event Bereich. Allerdings ist mir eben diese Unterscheidung nicht bekannt aus dem iCal. Und wird nicht mit dem o.g. Code einfach der Variablen ein String mit dem Inhalt "Date" zugewiesen? wie funktioniert dann dieser Teil:```
    `obj[i][datestring]` 
    
    Guten Morgen,
    
    der Datenpunkt ical.0.data.table enthält ein Array in welchem sich wiederum Objekte befinden.
    
    Die Variablen datestring und eventstring habe ich nur definiert damit man "an einer Stelle schnell was ändern kann"..
    
    Man kann statt die Variablen zu benutzen auch einfach mit "obj_~~[i]~~.date" und "obj_~~[i]~~.event" die entsprechenden Werte abrufen.
    
    Arrays sind getrennte Werte die man einzeln abrufen kann sozusagen ..__ `~~[code]~~// Hier ist ein Array
    var beispiel = ["Wert0", "Wert1", "Wert2"];[/code]`Objekte wiederum beinhalten Werte mit dazugehörigen Namen. `~~[code]~~// Hier ist ein Objekt
    var beispiel2 = {name:"Peter", alter:"29"};[/code]`
    
    Hab dir schnell mal ein kleines Script zusammengekloppt welches dir mit Logausgaben zeigt was Sache ist..`~~[code]~~// Hier ist der ical.0.data.table Datenpunkt in Klartext
    log(JSON.stringify(getState('ical.0.data.table').val));
    
    // Hier bauen wir ein Array mit 3 Werten.
    var beispiel = ["Test1", "Test2", "Test3"];
    // Und geben dann Wert 1, 2 und 3 im Log aus.
    log(beispiel[0] + ' ' + beispiel[1] + ' ' + beispiel[2]);
    // Hier prüfen wir, wie viele Werte überhaupt im Array stehen?
    log('Es stehen --' + beispiel.length + '-- Werte im Array!');
    log('----------------------------------------------------');
    
    // Hier bauen wir ein Objekt mit 2 Werten
    var beispiel2 = {name:"Peter", alter:"29"};
    // Hier prüfen wir welchen Wert alter hat
    log('Alter hat im Objekt beispiel2 den Wert ---' + beispiel2.alter + '---!');
    
    // Hier bauen wir ein Array mit 2 Objekten als Inhalt (genau wie der iCal Adapter sie erzeugt)
    var icalbeispiel = [{"name":"TestName0","event":"TestEvent0"},{"name":"TestName1","event":"TestEvent1"}];
    // Und die ausgabe von den Events
    log('Event an Position 0: ' + icalbeispiel[0].event);
    log('Event an Position 1: ' + icalbeispiel[1].event);[/code]`
    
    Schau dir mal die Logausgabe an wie das [object Object] vom Kalender wirklich aussieht..
    
    Es ist ein Array [] in dem Objekte {} untergebracht sind.. 
    
    "[{"date":"Morgen","event":"Restmüll"},{"date":"In einer Woche ","event":"Gelber Sack"}]"
    
    Hoffe das ist verständlich genug. Bin selber erst seit 6 Monaten mit JavaScript unterwegs.  :lol: 
    
    Falls du noch Fragen hast, gerne her damit. :)
    
    Gruß[/i][/i][/i]
    ``` ` 
    1 Antwort Letzte Antwort
    0
    • T Offline
      T Offline
      tempestas
      schrieb am zuletzt editiert von
      #18

      Danke.

      Du lernst aber viel schneller als ich, wie es scheint. :idea: :D

      Das ical.0.data.table ein Array ist, kann ich bei mir eben nicht sehen. Das hat schon sehr geholfen :-)

      <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

      1 Antwort Letzte Antwort
      0
      • BuZZyB Offline
        BuZZyB Offline
        BuZZy
        schrieb am zuletzt editiert von
        #19

        @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

        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. :)
        
        Gruß
        1 Antwort Letzte Antwort
        0
        • T Offline
          T Offline
          tempestas
          schrieb am zuletzt editiert von
          #20

          Danke für den Hinweis. Werde ich mal testen.

          <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

          1 Antwort Letzte Antwort
          0
          • R Offline
            R Offline
            rudiraz
            schrieb am zuletzt editiert von
            #21

            @BuZZy

            Kannst du mir nochmal behilflich sein?

            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?

            Grüße

            1 Antwort Letzte Antwort
            0
            • BuZZyB Offline
              BuZZyB Offline
              BuZZy
              schrieb am zuletzt editiert von
              #22

              @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 Antwort Letzte Antwort
              0
              • R Offline
                R Offline
                rudiraz
                schrieb am zuletzt editiert von
                #23

                Dankeschön :-)

                werde ich einbauen

                Grüße

                1 Antwort Letzte Antwort
                0
                • T Offline
                  T Offline
                  Torsten_MG
                  schrieb am zuletzt editiert von
                  #24

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

                  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 Antwort Letzte Antwort
                  0
                  • BuZZyB Offline
                    BuZZyB Offline
                    BuZZy
                    schrieb am zuletzt editiert von
                    #25

                    Hi,

                    wie weit bist du denn jetzt?

                    Was genau möchtest du erreichen?

                    Wie sieht dein Script bis jetzt aus?

                    Gruß

                    1 Antwort Letzte Antwort
                    0
                    • T Offline
                      T Offline
                      Torsten_MG
                      schrieb am zuletzt editiert von
                      #26

                      @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 Antwort Letzte Antwort
                      0
                      • T Offline
                        T Offline
                        Torsten_MG
                        schrieb am zuletzt editiert von
                        #27

                        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 Antwort Letzte Antwort
                        0
                        • BuZZyB Offline
                          BuZZyB Offline
                          BuZZy
                          schrieb am zuletzt editiert von
                          #28
                          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: :D

                          Gruß

                          1 Antwort Letzte Antwort
                          0
                          • T Offline
                            T Offline
                            Torsten_MG
                            schrieb am zuletzt editiert von
                            #29

                            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 Antwort Letzte Antwort
                            0
                            • T Offline
                              T Offline
                              Torsten_MG
                              schrieb am zuletzt editiert von
                              #30

                              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 Antwort Letzte Antwort
                              0
                              • BuZZyB Offline
                                BuZZyB Offline
                                BuZZy
                                schrieb am zuletzt editiert von
                                #31

                                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 Antwort Letzte Antwort
                                0
                                • T Offline
                                  T Offline
                                  Torsten_MG
                                  schrieb am zuletzt editiert von
                                  #32

                                  @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 Antwort Letzte Antwort
                                  0
                                  • BuZZyB Offline
                                    BuZZyB Offline
                                    BuZZy
                                    schrieb am zuletzt editiert von
                                    #33

                                    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 Antwort Letzte Antwort
                                    0
                                    • T Offline
                                      T Offline
                                      Torsten_MG
                                      schrieb am zuletzt editiert von
                                      #34

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

                                      290

                                      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