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. [Vorlage] Heizungsthermostatsteuerung 2.1 - Script

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.6k

[Vorlage] Heizungsthermostatsteuerung 2.1 - Script

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascripttemplateheatingclimate
1.1k Beiträge 115 Kommentatoren 397.1k Aufrufe 61 Watching
  • Ä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.
  • K Offline
    K Offline
    Kugelkopf
    schrieb am zuletzt editiert von
    #701

    Moin!!

    Erstmal großes Lob an die Macher des Scripts!

    Ich hätte da noch eine Frage:

    Wenn ich in VIS ein 2. Profil auswähle, dann Fehlen die Einstellmöglichkeiten der Uhrzeit und Temperatur im unteren Feld.

    Anscheinend ist es nicht vorgesehen, dass es diese so ohne weiteres gibt. Sehe ich das richtig?

    Ich habe mir nun so geholfen, dass ich Alle Knöpfe die mit dem Profil zu tun haben, Dupliziert habe und statt Profil_1 Profil_2 eingetragen habe. Diese übereinander gelegt und blende je nach Einstellung des Profils die einen oder die anderen Knöpfe und Auswahlmöglichkeiten aus.

    Das funktioniert soweit ganz gut. Wäre dennoch schön wenn es von vorne rein mit in dem VIS Script versehen wäre oder ist das irgendwie anders gedacht?

    Grüße

    1 Antwort Letzte Antwort
    0
    • AxelF1977A Offline
      AxelF1977A Offline
      AxelF1977
      schrieb am zuletzt editiert von
      #702

      @looxer01:

      @AxelF1977:

      Gab es denn eine Lösung für mein geschildertes Problem? `
      Hi Axel,

      hast du dein Problem gelöst ?

      Hab mir deine View angesehen - sieht super aus.

      Dort ist mir aufgefallen, dass du einen NaN Wert hast.

      Sieht so aus, dass da das mapping vom View zu den Datenpunkten nicht korrekt ist.

      vG Looxer `

      Hi Looxer,

      ich hatte nicht gesehen, dass Du schon geantwortet hattest. Sorry daher für den Doppelpost. Die NaN Werte habe ich mal durch die Checkbox als String dargestellt, damit sind sie weg. Wegen dem Problem mit 4.5°C ging mir auch ein Licht auf. Das lag an mir… Den manualen Modus erzwingen, ohne eine Temperatur eingetragen zu haben, gibt natürlich einen Fehler zurück.

      Aber im Moment nutzen die Heizungen die Werte der CCU. So richtig bin ich wohl noch nicht durchgestiegen. Eingestellt sind für den Zeitraum zwischen 18 und 21 Uhr 21°C, einstellen tut das Script 19°C. Anpassungen der FAQ habe ich schon vorgenommen.
      4249_002.jpg
      4249_001.jpg

      ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

      1 Antwort Letzte Antwort
      0
      • F Offline
        F Offline
        frostnatt
        schrieb am zuletzt editiert von
        #703

        @looxer01:

        @frostnatt:

        Globale Events wie Gäste, Party, Urlaub_Anwesend/Abwesend etc. werden vom Script korrekt verarbeitet. Wird im Kalender "Global_Profil_2" angelegt, erfolgt keine Triggerung wenn das Ereignis eintritt. `
        Hi kannst du mal bitte folgendes Coding austauschen

           // Globales Profil ist prio2
            if (UseEventsGlobalProfilSelect === true) {
              for (i = 1; i <= MaxProfile; i++) {
                ProfilName = UseEventG_Profil;
                ProfilName = UseEventG_Profil.replace("<profilnummer>", i);
                if (getState(ICALPath + "." + ProfilName).val) {
                    setOwnState(pathprofile+".AktivesEventProfil", i);
                    Source_Profil = i;
                    Source_ICALEvent = ProfilName;
                    return i;
                }
              } // ende for i
            } // ende if globalProfilSelect</profilnummer> 
        

        und zwar mit:

           // Globales Profil ist prio2
            if (UseEventsGlobalProfilSelect === true) {
              for (i = 1; i <= MaxProfile; i++) {
                ProfilName = UseEventG_Profil;
                ProfilName = UseEventG_Profil.replace("<profilnummer>", i);
                if (getState(ICALPath + "." + ProfilName).val) {
                    setState(pathprofile+".AktivesEventProfil", i);
                    Source_Profil = i;
                    Source_ICALEvent = ProfilName;
                    return i;
                }
              } // ende for i
            } // ende if globalProfilSelect</profilnummer> 
        

        das löst wahrscheinlich das Problem. Ist für mich aber eine Trockenübung, da ich kein System im Zugriff habe.

        Sollte das die Lösung sein muss das gleiche für die Raumprofile gemacht werden.

        Mache ich am WE.

        vG Looxer `

        Hi Looxer,

        vielen Dank für deine Rückmeldung. Ich habe es gerade ausprobiert und kann leider keine Änderung zum bereits geschilderten Verhalten feststellen…

        Grüße,

        Max

        1 Antwort Letzte Antwort
        0
        • L Offline
          L Offline
          looxer01
          schrieb am zuletzt editiert von
          #704

          @Kugelkopf:

          Ich hätte da noch eine Frage:

          Wenn ich in VIS ein 2. Profil auswähle, dann Fehlen die Einstellmöglichkeiten der Uhrzeit und Temperatur im unteren Feld.

          Anscheinend ist es nicht vorgesehen, dass es diese so ohne weiteres gibt. Sehe ich das richtig? `
          Hi,

          die Datenpunkte aus Profil-1 müssen im View angeplasst werden.

          Das kann mit Hilfe eines geeigneten Editors gemacht werden (ich empfehle immer notepad++) und durch suchen und Ersetzen

          • Suche Profil-1

          • Ersetze mit: Profil-2

          Das heisst auch, dass du dazu eine zweite View brauchst.

          Werde ich in die FAQs aufnehmen.

          vG Looxer

          1 Antwort Letzte Antwort
          0
          • L Offline
            L Offline
            looxer01
            schrieb am zuletzt editiert von
            #705

            @AxelF1977:

            Die NaN Werte habe ich mal durch die Checkbox als String dargestellt, damit sind sie weg. Wegen dem Problem mit 4.5°C ging mir auch ein Licht auf. Das lag an mir… Den manualen Modus erzwingen, ohne eine Temperatur eingetragen zu haben, gibt natürlich einen Fehler zurück.

            Aber im Moment nutzen die Heizungen die Werte der CCU. So richtig bin ich wohl noch nicht durchgestiegen. Eingestellt sind für den Zeitraum zwischen 18 und 21 Uhr 21°C, einstellen tut das Script 19°C. Anpassungen der FAQ habe ich schon vorgenommen. `

            Hi,

            siehe PN in deiner Inbox.

            vG Looxer

            1 Antwort Letzte Antwort
            0
            • L Offline
              L Offline
              looxer01
              schrieb am zuletzt editiert von
              #706

              @frostnatt:

              vielen Dank für deine Rückmeldung. Ich habe es gerade ausprobiert und kann leider keine Änderung zum bereits geschilderten Verhalten feststellen… `
              Hi,

              neuer Vorschlag. Ich habe festgestellt, dass die Subscription gar nicht gemacht ist.

              Evt. erübrigt sich damit der vorherige

              kannst du bitte folgendes testen und diese Änderung einfügen

              ändern von:

                          if (UseEventsGlobalParameter === true) {
                              subscribeIdList.push(ICALPath + "."+ EventG_Party);
                              subscribeIdList.push(ICALPath + "."+ EventG_UrlaubAbwesend);
                              subscribeIdList.push(ICALPath + "."+ EventG_UrlaubAnwesend);
                              subscribeIdList.push(ICALPath + "."+ EventG_Gaeste);
                          }
              
              

              auf:

                     if (UseEventsGlobalParameter === true) {
                              subscribeIdList.push(ICALPath + "."+ EventG_Party);
                              subscribeIdList.push(ICALPath + "."+ EventG_UrlaubAbwesend);
                              subscribeIdList.push(ICALPath + "."+ EventG_UrlaubAnwesend);
                              subscribeIdList.push(ICALPath + "."+ EventG_Gaeste);
                              subscribeIdList.push(ICALPath + "."+ UseEventG_Profil); 
                              subscribeIdList.push(ICALPath + "."+ UseEventR_Profil ); 
                              }
              
              

              vG Looxer

              1 Antwort Letzte Antwort
              0
              • K Offline
                K Offline
                Kugelkopf
                schrieb am zuletzt editiert von
                #707

                @looxer01:

                @Kugelkopf:

                Ich hätte da noch eine Frage:

                Wenn ich in VIS ein 2. Profil auswähle, dann Fehlen die Einstellmöglichkeiten der Uhrzeit und Temperatur im unteren Feld.

                Anscheinend ist es nicht vorgesehen, dass es diese so ohne weiteres gibt. Sehe ich das richtig? `
                Hi,

                die Datenpunkte aus Profil-1 müssen im View angeplasst werden.

                Das kann mit Hilfe eines geeigneten Editors gemacht werden (ich empfehle immer notepad++) und durch suchen und Ersetzen

                • Suche Profil-1

                • Ersetze mit: Profil-2

                Das heisst auch, dass du dazu eine zweite View brauchst.

                Werde ich in die FAQs aufnehmen.

                vG Looxer `

                Ja…

                Naja, ich hab das nun anders gelöst. Habe alles in einem View erstellt und dementsprechend die Knöpfe je nach Profil ein und ausgeblendet. Vielleicht ist das ja noch was für euch. Dann muss man zumindest nicht 3 Views anlegen für 3 verschiedene Profile sondern hat alles in einem View. Anbei also mein View der 3 Profile zur Verfügung stellt. Profil_1 Profil_2 und Profil_3.

                Der Vollständigkeitshalber: der Raum heißt bei mir: SchlafzimmerOG 5370_view_3profile.txt.zip

                1 Antwort Letzte Antwort
                0
                • L Offline
                  L Offline
                  looxer01
                  schrieb am zuletzt editiert von
                  #708

                  @Kugelkopf:

                  aja, ich hab das nun anders gelöst. Habe alles in einem View erstellt und dementsprechend die Knöpfe je nach Profil ein und ausgeblendet. Vielleicht ist das ja noch was für euch. Dann muss man zumindest nicht 3 Views anlegen für 3 verschiedene Profile sondern hat alles in einem View. Anbei also mein View der 3 Profile zur Verfügung stellt. Profil_1 Profil_2 und Profil_3.

                  Der Vollständigkeitshalber: der Raum heißt bei mir: SchlafzimmerOG `
                  Hi,

                  Ja, danke dir. Das ist nicht besonders intelligent gelöst im bereitgestellten View. Das liegt aber daran, dass die Profile nicht so oft verwendet werden. Ich schau mir deinen View an. Wenns passt und du einverstanden bist, könnte ich den Standardview entsprechend erweitern..)

                  vG Looxer

                  1 Antwort Letzte Antwort
                  0
                  • AxelF1977A Offline
                    AxelF1977A Offline
                    AxelF1977
                    schrieb am zuletzt editiert von
                    #709

                    @looxer01:

                    @Kugelkopf:

                    aja, ich hab das nun anders gelöst. Habe alles in einem View erstellt und dementsprechend die Knöpfe je nach Profil ein und ausgeblendet. Vielleicht ist das ja noch was für euch. Dann muss man zumindest nicht 3 Views anlegen für 3 verschiedene Profile sondern hat alles in einem View. Anbei also mein View der 3 Profile zur Verfügung stellt. Profil_1 Profil_2 und Profil_3.

                    Der Vollständigkeitshalber: der Raum heißt bei mir: SchlafzimmerOG `
                    Hi,

                    Ja, danke dir. Das ist nicht besonders intelligent gelöst im bereitgestellten View. Das liegt aber daran, dass die Profile nicht so oft verwendet werden. Ich schau mir deinen View an. Wenns passt und du einverstanden bist, könnte ich den Standardview entsprechend erweitern..)

                    vG Looxer `

                    Wo wir bei dem Thema sind, Du kannst für neue Versionen auch gerne auf meine Version des Views zurück greifen, stelle es gerne zur Verfügung. gerade das Thema Responsive Design ist ja bei Hausautomation ein Thema, durch die vielen verschiedenen Auflösungen der verschiedenen Geräte.

                    ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

                    1 Antwort Letzte Antwort
                    0
                    • K Offline
                      K Offline
                      Kugelkopf
                      schrieb am zuletzt editiert von
                      #710

                      @looxer01:

                      @Kugelkopf:

                      aja, ich hab das nun anders gelöst. Habe alles in einem View erstellt und dementsprechend die Knöpfe je nach Profil ein und ausgeblendet. Vielleicht ist das ja noch was für euch. Dann muss man zumindest nicht 3 Views anlegen für 3 verschiedene Profile sondern hat alles in einem View. Anbei also mein View der 3 Profile zur Verfügung stellt. Profil_1 Profil_2 und Profil_3.

                      Der Vollständigkeitshalber: der Raum heißt bei mir: SchlafzimmerOG `
                      Hi,

                      Ja, danke dir. Das ist nicht besonders intelligent gelöst im bereitgestellten View. Das liegt aber daran, dass die Profile nicht so oft verwendet werden. Ich schau mir deinen View an. Wenns passt und du einverstanden bist, könnte ich den Standardview entsprechend erweitern..)

                      vG Looxer `
                      Kein Problem! Dafür habe ich es ja bereitgestellt! Schau es dir einfach mal an und teste es.

                      1 Antwort Letzte Antwort
                      0
                      • L Offline
                        L Offline
                        looxer01
                        schrieb am zuletzt editiert von
                        #711

                        @AxelF1977:

                        Du kannst für neue Versionen auch gerne auf meine Version des Views zurück greifen, stelle es gerne zur Verfügung. gerade das Thema Responsive Design ist ja bei Hausautomation ein Thema, durch die vielen verschiedenen Auflösungen der verschiedenen Geräte. `
                        Hi Axel,

                        super, danke dir. Das schaue ich mir gerne an. Kannst du mir deine Version zusenden ?

                        vG Looxer

                        1 Antwort Letzte Antwort
                        0
                        • AxelF1977A Offline
                          AxelF1977A Offline
                          AxelF1977
                          schrieb am zuletzt editiert von
                          #712

                          @looxer01:

                          @AxelF1977:

                          Du kannst für neue Versionen auch gerne auf meine Version des Views zurück greifen, stelle es gerne zur Verfügung. gerade das Thema Responsive Design ist ja bei Hausautomation ein Thema, durch die vielen verschiedenen Auflösungen der verschiedenen Geräte. `
                          Hi Axel,

                          super, danke dir. Das schaue ich mir gerne an. Kannst du mir deine Version zusenden ?

                          vG Looxer `

                          kannst Du hier runterladen viewtopic.php?f=21&t=10096&start=640#p190132 steht dem Forum ja schon offiziell zur Verfügung

                          ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

                          1 Antwort Letzte Antwort
                          0
                          • F Offline
                            F Offline
                            frostnatt
                            schrieb am zuletzt editiert von
                            #713

                            @looxer01:

                            @frostnatt:

                            vielen Dank für deine Rückmeldung. Ich habe es gerade ausprobiert und kann leider keine Änderung zum bereits geschilderten Verhalten feststellen… `
                            Hi,

                            neuer Vorschlag. Ich habe festgestellt, dass die Subscription gar nicht gemacht ist.

                            Evt. erübrigt sich damit der vorherige

                            kannst du bitte folgendes testen und diese Änderung einfügen

                            ändern von:

                                        if (UseEventsGlobalParameter === true) {
                                            subscribeIdList.push(ICALPath + "."+ EventG_Party);
                                            subscribeIdList.push(ICALPath + "."+ EventG_UrlaubAbwesend);
                                            subscribeIdList.push(ICALPath + "."+ EventG_UrlaubAnwesend);
                                            subscribeIdList.push(ICALPath + "."+ EventG_Gaeste);
                                        }
                            
                            

                            auf:

                                   if (UseEventsGlobalParameter === true) {
                                            subscribeIdList.push(ICALPath + "."+ EventG_Party);
                                            subscribeIdList.push(ICALPath + "."+ EventG_UrlaubAbwesend);
                                            subscribeIdList.push(ICALPath + "."+ EventG_UrlaubAnwesend);
                                            subscribeIdList.push(ICALPath + "."+ EventG_Gaeste);
                                            subscribeIdList.push(ICALPath + "."+ UseEventG_Profil); 
                                            subscribeIdList.push(ICALPath + "."+ UseEventR_Profil ); 
                                            }
                            
                            

                            vG Looxer `

                            Hi Looxer,

                            danke für den Vorschlag.

                            Es haben tatsächlich die Subscriptions gefehlt.

                            Leider geht es so nicht, da UseEventG_Profil mit dem folgenden Inhalt initialisiert ist.

                            var UseEventG_Profil     = "Global_Profil_<profilnummer>";</profilnummer> 
                            

                            Ich habe nun für meinen Spezialfall, also wenn nun Globale Profile Umgeschaltet werden sollen, folgendes Workaround bei mir eingebaut.

                                        if (UseEventsGlobalParameter === true) {
                                            subscribeIdList.push(ICALPath + "."+ EventG_Party);
                                            subscribeIdList.push(ICALPath + "."+ EventG_UrlaubAbwesend);
                                            subscribeIdList.push(ICALPath + "."+ EventG_UrlaubAnwesend);
                                            subscribeIdList.push(ICALPath + "."+ EventG_Gaeste);
                                        }
                                        if (UseEventsGlobalProfilSelect === true) {
                                            for (i = 1; i <= MaxProfile; i++) {
                                                var ProfilName = UseEventG_Profil.replace("<profilnummer>", i);
                                                subscribeIdList.push(ICALPath + "." + ProfilName);
                                            }
                                        }</profilnummer> 
                            

                            Nun funktioniert es wie gewünscht.

                            Grüße,

                            Max

                            1 Antwort Letzte Antwort
                            0
                            • L Offline
                              L Offline
                              looxer01
                              schrieb am zuletzt editiert von
                              #714

                              @frostnatt:

                              Es haben tatsächlich die Subscriptions gefehlt.

                              Leider geht es so nicht, da UseEventG_Profil mit dem folgenden Inhalt initialisiert ist `
                              ups, sorry. War wie gesagt eine Trockenübung.

                              Ich glaube, dass ich deinen Code übernehmen kann :D

                              plus noch für die Raumprofile.

                              Danke dir.

                              vG Looxer

                              1 Antwort Letzte Antwort
                              0
                              • F Offline
                                F Offline
                                frostnatt
                                schrieb am zuletzt editiert von
                                #715

                                @looxer01:

                                @frostnatt:

                                Es haben tatsächlich die Subscriptions gefehlt.

                                Leider geht es so nicht, da UseEventG_Profil mit dem folgenden Inhalt initialisiert ist `
                                ups, sorry. War wie gesagt eine Trockenübung.

                                Ich glaube, dass ich deinen Code übernehmen kann :D

                                plus noch für die Raumprofile.

                                Danke dir.

                                vG Looxer `

                                Gerne! Ist übrigens ein Copy-Paste von deinem Code + ein bisschen Anpassung. :roll:

                                An die Subscriptions für die Raumprofile habe ich mich nicht getraut, da es hier darauf geachtet werden muss, ob Raumliste benutzt wird oder Räume von Enums ausgelesen werden etc…

                                Ne andere Frage:

                                Kann man die Globalen Profile irgendwie priorisieren? Macht das Sinn aus deiner Sicht?

                                Ich habe Folgendes vor:

                                Global_Profil_1 soll als Standartprofil benutzt werden. Es wird im Kalender als ganztägiges Erreignis eingetragen.

                                Global_Profil_2 soll beispielsweise zum Vorheizen benutzt werden. Man könnte hier natürlich die Solltemperatur manuell anpassen. ich würde es aber gerne mittels Eintrag im Kalender lösen, da ich mit der App "Kurzbefehle" bequem die Ankunftszeit abfragen kann und im Kalender ein entsprechendes Zeitfenster z.B.

                                Von

                                1 Std. vor der Ankunft

                                Bis

                                30min nach der Ankunft

                                eintragen - und das nur mit einem einzigen Tastendruck.

                                Es erfolgt aber keine Umschaltung wenn beide Erreignisse im Kalender aktiv sind. In diesem Fall wäre die Sache mit der optionalen Priorisierung angebracht.

                                Grüße,

                                Max

                                1 Antwort Letzte Antwort
                                0
                                • L Offline
                                  L Offline
                                  looxer01
                                  schrieb am zuletzt editiert von
                                  #716

                                  @frostnatt:

                                  Kann man die Globalen Profile irgendwie priorisieren? Macht das Sinn aus deiner Sicht?

                                  Ich habe Folgendes vor:

                                  Global_Profil_1 soll als Standartprofil benutzt werden. Es wird im Kalender als ganztägiges Erreignis eingetragen.

                                  Global_Profil_2 soll beispielsweise zum Vorheizen benutzt werden. Man könnte hier natürlich die Solltemperatur manuell anpassen. ich würde es aber gerne mittels Eintrag im Kalender lösen, da ich mit der App "Kurzbefehle" bequem die Ankunftszeit abfragen kann und im Kalender ein entsprechendes Zeitfenster z.B.

                                  Von

                                  1 Std. vor der Ankunft

                                  Bis

                                  30min nach der Ankunft

                                  eintragen - und das nur mit einem einzigen Tastendruck.

                                  Es erfolgt aber keine Umschaltung wenn beide Erreignisse im Kalender aktiv sind. In diesem Fall wäre die Sache mit der optionalen Priorisierung angebracht. `

                                  Hi,

                                  also, es gibt eine zentrale Stelle, um das aktive Profil zu ermitteln.

                                  In dieser Funktion gib es ein StückCoding für das Globale Profil.

                                  Hast du ggf Lust dir das anzuschauen und ggf was einzubauen.

                                  Um es generell tauglich zu machen müsste aber noch eine Tabelle für die Einstellungen hinzugefügt werden

                                  irgendwie so

                                  var UseGlobalParamPrio= false; // fuer den Fall, dass es mehrere aktive ICAL GobalProfile gibt

                                  var GlobalParaPrio= [];

                                  GlobalParaPrio[0] = ['1'] = 1; // Höchste Prio =1

                                  GlobalParaPrio[1] = ['2'] = 3;

                                  GlobalParaPrio[2] = ['3'] = 2;

                                  Stelle im Coding:

                                      // Globales Profil ist prio2
                                      if (UseEventsGlobalProfilSelect === true) {
                                        for (i = 1; i <= MaxProfile; i++) {
                                          ProfilName = UseEventG_Profil;
                                          ProfilName = UseEventG_Profil.replace("<profilnummer>", i);
                                          if (getState(ICALPath + "." + ProfilName).val) {
                                              setOwnState(pathprofile+".AktivesEventProfil", i);
                                              Source_Profil = i;
                                              Source_ICALEvent = ProfilName;
                                              return i;
                                          }
                                        } // ende for i
                                      } // ende if globalProfilSelect</profilnummer> 
                                  

                                  vG Looxer

                                  1 Antwort Letzte Antwort
                                  0
                                  • F Offline
                                    F Offline
                                    frostnatt
                                    schrieb am zuletzt editiert von
                                    #717

                                    Hi Looxer,

                                    ich habe die Funktion "Finde Aktives Raumprofil" um die Priorisierung der Globalen Profile erweitert (oder besser gesagt versucht zu erweitern :? )

                                    Hier die Variable zum Aktivieren der Funktionalität und die Prio-Tabelle.

                                    var UseEventsGlobalProfilPrio = true;     //Priorisierung der globalen Profile, wenn mehrere gleichzeitig aktiv sind
                                    var GlobalProfilPrioTab = [];
                                    GlobalProfilPrioTab[0] = 2;                //höchste Prio
                                    GlobalProfilPrioTab[1] = 1;
                                    
                                    

                                    Hier die Funktion.

                                    / Funktion Finde Aktives Raumprofil
                                    //-----------------------------------------------------------------------------------------------------
                                    function ActiveProfile (room,Profil) {
                                        var pathprofile = path + "." + room;
                                        var ProfilName;
                                        var ActiveGlobalProfileList = [];	//Liste der aktiven globalen Profile
                                        var ProfileFoundFlag = false;		//Flag zum Abbrechen der weiteren Profilermittlung
                                        if (MaxProfile === 1) {
                                            Profil = 1;
                                            Source_Profil = 1;
                                            return Profil;
                                        }
                                    
                                        // Erst Raumprofil checken - prio1
                                        if (UseEventsRaumProfilSelect === true) {
                                            for (i = 1; i <= MaxProfile; i++) {
                                                ProfilName = UseEventR_Profil;
                                                ProfilName = UseEventR_Profil.replace("<raumname>", room);
                                                ProfilName = ProfilName.replace("<profilnummer>", i);
                                                if (getState(ICALPath + "." + ProfilName).val) {
                                                    setOwnState(pathprofile + ".AktivesEventProfil", i);
                                                    Source_Profil = i;
                                                    Source_ICALEvent = ProfilName;
                                                    return i;
                                                }
                                            } // ende for i
                                        } // ende if globalProfilSelect
                                    
                                        // Globales Profil ist prio2
                                        if (UseEventsGlobalProfilSelect === true) {
                                            for (i = 1; i <= MaxProfile; i++) {
                                                ProfilName = UseEventG_Profil;
                                                ProfilName = UseEventG_Profil.replace("<profilnummer>", i);
                                                if (getState(ICALPath + "." + ProfilName).val) {
                                                    if (!UseEventsGlobalProfilPrio){	//Regulärer Fall, Priorisierung nicht aktiv
                                                        ProfileFoundFlag = true;
                                                        break;
                                                    }else {
                                                        if (i === GlobalProfilPrioTab[0]){	//Priorisierung aktiv, das aktuelle Profil hat höchste Prio
                                                            ProfileFoundFlag = true;
                                                            break;
                                                        }else {
                                                            ActiveGlobalProfileList.push(i);	//Baue Liste zur späteren Ermittlung des Profils
                                                        }
                                                    } 
                                                }
                                            } // ende for (i = 1; i <= MaxProfile; i++)
                                            if (ProfileFoundFlag){		//Ermittlung des Profils ist fertig
                                                setOwnState(pathprofile+".AktivesEventProfil", i);
                                                Source_Profil = i;
                                                Source_ICALEvent = ProfilName;
                                                return i;
                                            }else {	//Suche nach dem Profil mit der höchsten Prio in der Liste
                                                for(var i_prio = 0; i_prio <= GlobalProfilPrioTab.length - 1; i_prio++){
                                                    for (var i_profile = 0;  i_profile <= ActiveGlobalProfileList.length - 1; i_profile++){
                                                        if (ActiveGlobalProfileList[i_profile] === GlobalProfilPrioTab[i_prio]){	//Das Profil ist ermittelt!
                                                            setOwnState(pathprofile+".AktivesEventProfil", ActiveGlobalProfileList[i_profile]);
                                                            Source_Profil = ActiveGlobalProfileList[i_profile];
                                                            Source_ICALEvent = UseEventG_Profil.replace("<profilnummer>", ActiveGlobalProfileList[i_profile]);
                                                            return ActiveGlobalProfileList[i_profile];
                                                        }//ende if
                                                    }//ende for i_profile
                                                }//ende for i_prio
                                            }//ende else
                                    
                                        }// ende if globalProfilSelect
                                    
                                        if (getState(pathprofile + ".AktivesEventProfil").val !== 0) {  // falls vorher ein Eventprofil aktiv war jetzt deaktivieren
                                            setOwnState(pathprofile + ".AktivesEventProfil", 0);
                                        }
                                    
                                        // Wenn kein anderes Profil vorliegt dann gilt das manuell eingstellte Profil
                                        Profil = getState(pathprofile + ".AktivesRaumProfil").val;
                                        if (Profil > 9 || Profil < 1) {
                                            Profil = 1;
                                        }
                                        Source_Profil = Profil;
                                        return Profil;
                                    }</profilnummer></profilnummer></profilnummer></raumname> 
                                    

                                    Die Logik müsste überschaubar sein, auch wenn die Lesbarkeit des Codes nicht die beste ist (ich bin kein ITler).

                                    Es passiert leider nichts, die Profile werden nicht aktiviert. Ich habe versucht zu debuggen (wie ich halt kann :oops: )und muste feststellen dass AktivesEventProfil-Datenpunkt nicht beschrieben wird.

                                    Könntest du bei Gelegenheit den Code überfliegen? Vielleich fällt dir irgendwas ein…

                                    Grüße,

                                    Max

                                    1 Antwort Letzte Antwort
                                    0
                                    • AxelF1977A Offline
                                      AxelF1977A Offline
                                      AxelF1977
                                      schrieb am zuletzt editiert von
                                      #718

                                      @looxer01,

                                      danke nochmal für Deine Hilfe heute. Das Script läuft nun, wie es soll, wie ich es mir wünsche, und wie Du es erdacht hast. Ich weiß nun auch warum die Datenpunkte leer waren, weil ich sie gelöscht hatte, im View. Ich wollte keine Daten sehen, wenn die Werte vom Vortag übernommen werden, durch den Hacken. Also war es meine Schuld. Ich wollte die cleane Optik. Ich habe jetzt aber einen Weg gefunden, das die Werte ausgeblendet werden, wenn der Hacken bei "wie Vortag" aktiv ist. Ich lasse jetzt einfach Widgets drüber legen, sobald der Hacken aktiv ist.

                                      Danke nochmal!
                                      4249_003.jpg
                                      4249_004.jpg

                                      ASROCK Deskmini Intel I3 8100 16GB mit Proxmox VM ioBroker VM DIYHue| CCU piVCCU + FHEM auf Raspberry | Maria DB mit Grafana und Prometheus auf Tinker Board

                                      1 Antwort Letzte Antwort
                                      0
                                      • K Offline
                                        K Offline
                                        Kugelkopf
                                        schrieb am zuletzt editiert von
                                        #719

                                        Kurze Info:

                                        Das Skript scheint nicht kompatibel zu sein mit der neusten Version von ioBroker Javascript in Verison 4.0.1.

                                        1 Antwort Letzte Antwort
                                        0
                                        • Beliar_666B Offline
                                          Beliar_666B Offline
                                          Beliar_666
                                          schrieb am zuletzt editiert von
                                          #720

                                          Wie bekomme ich denn zusätzliche Datenpunkte für ein weiteres Zimmer ins Java? Ich will jetzt quasi einen weiteren Raum hinzufügen, aber die Datenpunkte werden nicht erstellt.

                                          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

                                          809

                                          Online

                                          32.4k

                                          Benutzer

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