NEWS
[Frage] Wie Variablen Inhalte in Schleife auswerten
-
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
-
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?
-
genau das wars
Tausend Dank!