Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage] Wie Variablen Inhalte in Schleife auswerten

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Frage] Wie Variablen Inhalte in Schleife auswerten

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

      Hi Leute,

      ich steh mal wieder vor einem Problem:

      Ich versuche gerade meinen eingentlich simplen Abfallkalender den ich in Homematic-Script erstellt habe in den iOBroker zu "portieren" doch leider ohne Erfolg.

      Mir fehlen teilweise Befehle, Alternativen für diese oder einfach das Wissen.

      Ich habe 4 Variablen (Bio, Gelber Sack, Rest und Biomüll) in welchen durch Komma getrennt jedes Abholdatum hinterlegt ist.

      Mir gelingt es nicht die einzelnen Datumswerte welche ich durch split trennen wollte in einer for Schleife weiter zu verwenden.

      Hier der Code-Teil

      ...
      abfall_kalender_liste = ["1.Abfallkalender_Bio","3.Abfallkalender_Gelb","5.Abfallkalender_Papier","9.Abfallkalender_Rest"];
      for (var i_index in abfall_kalender_liste) {
          	i = abfall_kalender_liste[i_index];
          	kalender_name = i.split('.')[1];
          	abfall_typ = i.split('.')[0];  
      
      // Hier setzte ich nun den Javascript Variablen Namen zusammen um 
      // die Inhalte auszulesen  
      	 datumsliste = getState(instanz + pfad + kalender_name).val   
      
      }
      

      So weit klappt das auch aber wie kann ich diese Werte nun weiter auswerten?

      ich wollte nun in einer weiteren "for each" Schleife die es wohl nicht gibt, die "datumsliste" durch split auf die einzelnen Datumsangaben herrunter aufteilen und diese dann mit dem heutigen Datum vergleichen. Bei einem Treffer würde dann eine andere Variable gesetzt.

      Nur leider klappt kein Weg den ich bisher probiert habe.

      Der Erklärung halber hier noch mein Homematic - Script

      ! ````
      ! !Liste der vorhandenen Abfallkalender Systemvariablen die abgefragt werden sollen.
      string tmpA = "1Abfallkalender_Bio,3Abfallkalender_Gelb,5Abfallkalender_Papier,9Abfallkalender_Rest";
      ! string tmpB;
      ! !Variable für Mülltyp (papier - Gelb usw)
      integer tmpC = 0;
      var tmpD = dom.GetObject("Abfallkalender_heute");
      ! !Datum des morgigen Tages berechnen
      integer tmpE = 1;
      integer tmpF = system.Date("%F %X").ToTime().ToInteger();
      integer tmpG = tmpF + (86400 + tmpE);
      string tmpH = tmpG.ToTime().Format("%d.%m.%Y");
      ! !Alle ersteinmal auf 0 setzen
      tmpD.State(tmpC);
      !Jeden einzelnen Kalender abprüfen
      foreach(tmpB, tmpA.Split(",")){

      	!Zahl vor dem Abfalltyp separieren
      	integer drop_type_value = tmpB.Substr(0, 1);
      	integer calendar_name_length = tmpB.Length();
      	var calendar = tmpB.Substr(1, calendar_name_length);
      
      	var datelist = dom.GetObject(calendar);
      	!Alle Werte zählen
      	var _count = web.webGetValueListCount(datelist.ValueList());
      	integer i = 0;
      
      	!Alle Werte abarbeiten
      	while (i < _count) { 
      		!Wenn das hinterlegte Datum dem Morgigen entspricht auf true setzen
      		if(web.webGetValueFromList(datelist.ValueList(), i) == tmpH){
      			!Variable setzen
                  tmpC = tmpC + drop_type_value;
      		}
      		i = i + 1; 
      	}
      

      }
      tmpD.State(tmpC);

      ! ````

      Ich wäre sehr dankbar wenn mir jemand auf die Sprünge helfen könnte.

      Danke

      Peoples

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

        Wie wär's damit?

        datumsliste = "01.06.2017,02.06.2017,03.06.2017,04.06.2017,05.06.2017";
        var splitted =datumsliste.split(",");
        for (var _i in splitted){
            log(splitted[_i]);
            //mach was du willst
        }
        

        Oder hab ich Dein Problem falsch verstanden?

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

          genau das wars

          Tausend Dank!

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          820
          Online

          31.7k
          Users

          79.8k
          Topics

          1.3m
          Posts

          2
          3
          890
          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