NEWS
ForEach mit Blockly
-
Hallo,
ich möchte gerne in ein Skript welches mit Blockly gebaut wurde folgendes einfügen:
var Array = ["hm-rpc.0.XXXXXXXXXX.1.STATE","hm-rpc.0.XXXXXXXXXY.1.STATE"]; Array.forEach(function(i, index, array){ setState(i,true); );
Wie kann ich das umsetzen?
So habe ich es versucht, aber leider habe ich jetzt keine Ahnung, was ich als Objekt auswählen muss.
Da müsste jetzt ja ein "i" rein.
Kann mir da jemand weiterhelfen?
-
Hallo Pumbadinho
Schau mal unter Variablen.
Da hast Du jetzt eine Variable "i".
Du must nur bei "steuere Objekt-ID" nicht "wahr" einsetzen sondern die Variable.
Tipp: Wenn die auf das kleine Pfeilchen, bei "i", klickst, kannst Du die Variable umbenennen oder eine Neue erstellen.
Grüße
-
Ne, dann würde ich ja ein Objekt mit dem Objekt oben gleichsetzen. Das i muss ja als gesteuertes Objekt verwendet werden. Der soll ja i auf wahr setzen.
Gesendet von meinem Nexus 6P mit Tapatalk
-
Na klar. Wie soll ich wissen was Du machen willst.
In Deinem Beispiel wird das Array durchlaufen und i bekommt den Inhalt von Array(x).
Was willst Du denn erreichen?
Grüße
-
Na klar. Wie soll ich wissen was Du machen willst.
In Deinem Beispiel wird das Array durchlaufen und i bekommt den Inhalt von Array(x).
Was willst Du denn erreichen?
Grüße `
var Array = ["hm-rpc.0.XXXXXXXXXX.1.STATE","hm-rpc.0.XXXXXXXXXY.1.STATE"]; Array.forEach(function(i, index, array){ setState(i,true); );
Ich dachte das wird hieraus deutlich. Ich habe ein Array mit Aktoren, die alle auf true gesetzt werden sollen.
-
"Array" ist bei Dir eine lokale Variable.
Die kannst Du nicht bei "Objekt ID" einsetzen.
Du musst in ioBroker/Objekte ein Objekt anlegen und dies benutzen.
Grüße
-
"Array" ist bei Dir eine lokale Variable.
Die kannst Du nicht bei "Objekt ID" einsetzen.
Du musst in ioBroker/Objekte ein Objekt anlegen und dies benutzen.
Grüße `
Also, ich habe jetzt bereits Objekte und der Code so wie er oben steht funktioniert bei mir in einem anderen Skript.
Genau das will ich nachbauen.
Das kann dich nciht so schwer sein…
-
Also das ist vielleicht etwas unglücklich gewählt, aber Array hieß vorher anders. Nur dummerweise habe ich den Namen für das Array in blockly so gewählt um schnell den Screen zu machen. blockly hat die danach automatisch umbenannt, da Array ja ein definierter Begriff ist.
Gesendet von meinem Nexus 6P mit Tapatalk
-
Hi Pumbadinho
Blockly ist immer noch Beta.
Somit ist noch nicht alles möglich und Bugs können auch noch vorkommen.
Ich wollte Dir ein Beispiel zusammen bauen und bin da wohl auf einen Bug gestoßen.
Muss ich aber noch validieren. (das aber erst nach den Feiertagen)
Wenn Du schnell eine Lösungs braucht, setze doch einfach ein paar "steuere…" untereinander.
Dein Array war ja nicht dynamisch geplant. Der Arbeitsaufwand ist also ähnlich aber einfacher.
Grüße und Frohe Festtage
-
Eine schnelle Lösung brauche ich da nicht. Habe das so wie du gelöst. Nur wenn man intelligente Skripte bauen will, dann wäre das schon eine wünschenswerte Funktion.
Ist auch nichts ohne das ich nicht leben kann…
Gesendet von meinem Nexus 6P mit Tapatalk
-
Gibt es hier ein Update?
Gesendet von meinem Nexus 6P mit Tapatalk
-
Hallo,
ich möchte gerne in ein Skript welches mit Blockly gebaut wurde folgendes einfügen:
var Array = ["hm-rpc.0.XXXXXXXXXX.1.STATE","hm-rpc.0.XXXXXXXXXY.1.STATE"]; Array.forEach(function(i, index, array){ setState(i,true); );
Wie kann ich das umsetzen?
So habe ich es versucht, aber leider habe ich jetzt keine Ahnung, was ich als Objekt auswählen muss.
Da müsste jetzt ja ein "i" rein.
Blockly.JPG
Kann mir da jemand weiterhelfen? `
So?
var myIDs, i; myIDs = ['default', 'default', 'default']; for (var i_index in myIDs) { i = myIDs[i_index]; setStateDelayed(i, true, false, parseInt(0, 10), false); }
Array is vordefiniertes Wort. Bitte nicht benutzen.
-
Oh, das Update ist mir wohl irgendwie durchgegangen, werde ich Mal versuchen.
Gesendet von meinem Nexus 6P mit Tapatalk
-
Ich finde leider das Blockly äquivalent für getState der Object ID nicht.
Man müsste im Blockly die Object ID, also Variable i, einfügen können.
…
for (var i_index in BatteryArray) {
i = BatteryArray[i_index];
var value = getState(i).val;
…
Übersehe ich da was?
oder gibts es nur Schreiben?