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. [Gelöst] - Kann man eine On-Abfrage in einer Schleife generieren?

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    21
    1
    832

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

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

[Gelöst] - Kann man eine On-Abfrage in einer Schleife generieren?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
14 Beiträge 2 Kommentatoren 799 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.
  • PeoplesP Offline
    PeoplesP Offline
    Peoples
    schrieb am zuletzt editiert von
    #1

    Hi Leute,

    ich bastel mir gerade einen Wecker dessen Weckzeiten in Datenpunkten hinterlegt sind, was auch eigentlich alles klappt nur muss ich ja meinen Schedule Befehl jedesmal neu "einlesen" wenn sich die Weckzeit oder eben der Wecktag ändert. Nun meine Frage, ist es möglich die "on"Abfrage auch in einer Schleife zu generieren, dass praktisch alle generierten Datenpunkte "beobachtet" werden? Oder muss ich wirklich jeden einzelnen auflisten?

    ! Hier das Script:````
    // *****************************************************************************
    //
    // Wecker
    //
    //
    // V 1.0 -
    // *****************************************************************************
    ! // -----------------------------------------------------------------------------
    // allgemeine Variablen
    // -----------------------------------------------------------------------------
    var logging = true; // Logging on/off
    var instanz = 'javascript.0.'; // Javascript Instanz

    var pfad0 = 'Wecker.'; // Pfad innerhalb der Instanz - Status allgemien
    //var datum_morgen = formatDate(new Date().setDate(new Date().getDate()+1), 'DD.MM.YYYY');

    !
    var RaumListe = []; // Zimmmer für die ein Wecker vorhanden ist
    RaumListe[0] = 'Kinderzimmer1';
    RaumListe[1] = 'Kinderzimmer2';
    ! var Wochentage = ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag']; //Wochentage für die Weckeistellungen angelegt werden (Mit Sonntag beginnen wegen Schedule)
    var WKZeit_Schedule = [];
    ! function WeckerStellen() {
    RaumListe.forEach(function(Raum) {

        Wochentage.forEach(function(Wochentag){
            // -----------------------------------------------------------------------------
            // Objekte
            // -----------------------------------------------------------------------------
            // Objekte für Wecker Ein/Aus
            createState(instanz + pfad0 + Raum +'.WeckerAktiv_'+Wochentag,  {def: 'false',type: 'boolean',name: 'Wecker Aktiv '+Wochentag});
    
            // Objekte für WeckZeiten
            createState(instanz + pfad0 + Raum +'.WeckZeit_'+Wochentag,  {def: '07:00',type: 'string',name: 'Weckzeit am '+Wochentag});
            if(getState(instanz + pfad0 + Raum + '.WeckZeit_'+Wochentag).val){
                var WKZeit = getState(instanz + pfad0 + Raum + '.WeckZeit_'+Wochentag).val.split(':');
                //log(WKZeit[1] + ' ' + WKZeit[0] + ' * * 1');
                log(getState(instanz + pfad0 + Raum+ '.WeckerAktiv_'+Wochentag).val);
    
                if(getState(instanz + pfad0 + Raum+ '.WeckerAktiv_'+Wochentag).val === true){
                    clearSchedule(WKZeit_Schedule[Raum+'.'+Wochentag]);
                    WKZeit_Schedule[Raum+'.'+Wochentag] = schedule(WKZeit[1] + ' ' + WKZeit[0] + ' * * '+ Wochentage.indexOf(Wochentag), function (){WeckerEin(Raum);});
                    if(logging) log('Wecker für '+Raum+' am '+Wochentag+' wurde auf '+WKZeit[0]+': '+WKZeit[1]+' Uhr gestellt');
                }
                else{                                                               
                     clearSchedule(WKZeit_Schedule[Raum+'.'+Wochentag]);
                    if(logging) log('Wecker für'+Raum+' am '+Wochentag+' wurde gelöscht');
                }
    
                //log(Raum+':'+WKZeit[1] + ' ' + WKZeit[0] + ' * * '+Wochentage.indexOf(Wochentag));
    
            }
    
        });
    });
    

    }//Wecker stellen Ende

    ! function WeckerEin(Raum) {
    log('Wecker im Zimmer:'+Raum+' hat ausgelößt');
    }
    ! ````
    und hier mal zwei Beispieldatenpunkte:

    on({id: instanz + pfad0 + "Kinderzimmer1.WeckerAktiv_Montag", change: 'any'}, function (dp) {
        WeckerStellen();
    });
    on({id: instanz + pfad0 + "Kinderzimmer2.WeckerAktiv_Dienstag", change: 'any'}, function (dp) {
        WeckerStellen();
    });
    ````Welche ich eben gerne nicht jedesmal einzeln auflisten würde.
    
    Vielleicht hat ja jemand eine Idee wie ich "Gruppen" beobachten kann oder so.
    
    Gruß
    
    Steffen

    Ich beantworte keine Fragen zu Themen via PN

    1 Antwort Letzte Antwort
    0
    • DutchmanD Offline
      DutchmanD Offline
      Dutchman
      Developer Most Active Administrators
      schrieb am zuletzt editiert von
      #2

      @peoples:

      Vielleicht hat ja jemand eine Idee wie ich "Gruppen" beobachten kann oder so. `

      das geht sogar sehr einfach indem man trigger auf "enum" macht, hier mal ein beispiel was ich fuer die enum "rolladen" gemacht hatte.

      Aendert sich ein wert in dieser gruppe wird das script aufgerufen:

      on({enumName: 'rolladen', change: "ne"}, function (obj) {
      
      });
      
      

      due musst rolladen halt nur ergaenzen mit deiner eigenen gruppe

      1 Antwort Letzte Antwort
      0
      • PeoplesP Offline
        PeoplesP Offline
        Peoples
        schrieb am zuletzt editiert von
        #3

        Hi,

        die Gruppen definiere ich dann in Homematic oder in Iobroker?

        Gruß

        Steffen

        Ich beantworte keine Fragen zu Themen via PN

        1 Antwort Letzte Antwort
        0
        • DutchmanD Offline
          DutchmanD Offline
          Dutchman
          Developer Most Active Administrators
          schrieb am zuletzt editiert von
          #4

          @peoples:

          Hi,

          die Gruppen definiere ich dann in Homematic oder in Iobroker?

          Gruß

          Steffen `

          Egal, du kannst sie in homematic erstellen und dann mit ioBroker mittels des hm-rega synchronisieren oder Manuel in ioBroker erstellen

          –-----------------------

          Send from mobile device

          1 Antwort Letzte Antwort
          0
          • PeoplesP Offline
            PeoplesP Offline
            Peoples
            schrieb am zuletzt editiert von
            #5

            @Dutchman:

            … oder Manuel in ioBroker erstellen `

            Also entweder ich bin zu doof oder ich verstehe da was falsch. Ich bin in die Aufzählungen und dort kann ich auch eine neue erstellen. Aber wie weise ich dann einen Javascript Datenpunkt dieser Aufzählung zu?

            Ich beantworte keine Fragen zu Themen via PN

            1 Antwort Letzte Antwort
            0
            • DutchmanD Offline
              DutchmanD Offline
              Dutchman
              Developer Most Active Administrators
              schrieb am zuletzt editiert von
              #6

              @peoples:

              Aber wie weise ich dann einen Javascript Datenpunkt dieser Aufzählung zu? `

              Diese Datenpunkte sind doch einfach als objecte im JavaScript Baum hinterlegt?

              Mach Mal bitte eine Screenshot wo du genau bist und was du versucht das macht es leichter [emoji6]

              Hier Mal einen Post von mir in den knx thread : http://forum.iobroker.net/viewtopic.php … =20#p94365


              Send from mobile device

              1 Antwort Letzte Antwort
              0
              • PeoplesP Offline
                PeoplesP Offline
                Peoples
                schrieb am zuletzt editiert von
                #7

                Ok dann bin ich definiv falsch.

                Hier der Screenshot des Javascript Datenpunktes:

                2417_wecker.jpg

                Ich beantworte keine Fragen zu Themen via PN

                1 Antwort Letzte Antwort
                0
                • DutchmanD Offline
                  DutchmanD Offline
                  Dutchman
                  Developer Most Active Administrators
                  schrieb am zuletzt editiert von
                  #8

                  @peoples:

                  Ok dann bin ich definiv falsch.

                  Hier der Screenshot des Javascript Datenpunktes:

                  filename="wecker.JPG" index="0">~~ `

                  Und diese Datenpunkte möchtest du gruppieren?

                  Das geht doch wie hier beschrieben ?

                  http://forum.iobroker.net/viewtopic.php … =20#p94365


                  Send from mobile device

                  1 Antwort Letzte Antwort
                  0
                  • PeoplesP Offline
                    PeoplesP Offline
                    Peoples
                    schrieb am zuletzt editiert von
                    #9

                    Hatte den Link nicht gesehen nur dass ich einen Screenshot machen soll :oops:

                    Hat geklappt! Was mich gleich zur nächsten Frage bringt, kann ich die via Script erstellten Datenpunkte auch via script der Gruppe zuweisen? Oder noch schöner eine Gruppe via script erstellen.

                    So könnte man einfach im Script einen neuen "Raum" anlegen und der Rest ginge automatisch.

                    Tausend Dank schonmal

                    Ich beantworte keine Fragen zu Themen via PN

                    1 Antwort Letzte Antwort
                    0
                    • DutchmanD Offline
                      DutchmanD Offline
                      Dutchman
                      Developer Most Active Administrators
                      schrieb am zuletzt editiert von
                      #10

                      @peoples:

                      Hatte den Link nicht gesehen nur dass ich einen Screenshot machen soll [emoji15] `

                      Das ist meine schuld ich hatte meinen älteren Post erst später gefunden und nachträglich rein editiert [emoji6]

                      @peoples:

                      Hat geklappt! Was mich gleich zur nächsten Frage bringt, kann ich die via Script erstellten Datenpunkte auch via script der Gruppe zuweisen? Oder noch schöner eine Gruppe via script erstellen.

                      So könnte man einfach im Script einen neuen "Raum" anlegen und der Rest ginge automatisch. `

                      Super freut mich!

                      Enum zuweisen ja, dazu könnte man den Wert "enumNames" beim erstellen mitgeben z.b. mit setObject (siehe JavaScript docu)

                      Ob das erstellen einer enum auch geht bin ich über fragt.

                      Finde dazu nichts in der docu

                      –-----------------------

                      Send from mobile device

                      1 Antwort Letzte Antwort
                      0
                      • PeoplesP Offline
                        PeoplesP Offline
                        Peoples
                        schrieb am zuletzt editiert von
                        #11

                        So,

                        nun habe ich alles so angelegt und auch zugewiesen. Den JavascriptAdapter neu gestartet wie beschrieben, wenn ich jedoch jetzt:

                        on({enumName:'weckerdatenpunkte', change: "ne"}, function (obj) {
                            log('Änderung festgestellt');
                        });
                        

                        mache und dann einen Datenpunkt ändere kommt im log folgendes:````
                        javascript.0 2017-12-09 22:53:48.911 warn unsubscribe: empty name

                        
                        der Name stimmt aber

                        Ich beantworte keine Fragen zu Themen via PN

                        1 Antwort Letzte Antwort
                        0
                        • DutchmanD Offline
                          DutchmanD Offline
                          Dutchman
                          Developer Most Active Administrators
                          schrieb am zuletzt editiert von
                          #12

                          Mach Mal bitte eine Screenshot deiner enum mit den Datenpunkten drinne.

                          Nur zur Sicherheit, Adapter hast du neu gestartet nachdem du die enum erstellt und gefüllt hast?

                          –-----------------------

                          Send from mobile device

                          1 Antwort Letzte Antwort
                          0
                          • PeoplesP Offline
                            PeoplesP Offline
                            Peoples
                            schrieb am zuletzt editiert von
                            #13

                            Hab den Fehler gefunden!

                            Rechts unter den functions stehen die "Namen" in "kleinschrift" wenn man jedoch richtig schaut, sieht man dass unter "NAME" der Anfangsbuchstabe groß geschrieben war und schon gehts.

                            Tausend Dank!

                            Gruß

                            Steffen

                            Ich beantworte keine Fragen zu Themen via PN

                            1 Antwort Letzte Antwort
                            0
                            • DutchmanD Offline
                              DutchmanD Offline
                              Dutchman
                              Developer Most Active Administrators
                              schrieb am zuletzt editiert von
                              #14

                              Super! Have Fun damit

                              –-----------------------

                              Send from mobile device

                              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

                              594

                              Online

                              32.5k

                              Benutzer

                              81.6k

                              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