NEWS
[geloest] While Schleife mit mehreren Objekten?
-
@oberfragger sagte:
Iteriert einfach über alle Adapter/ objekte "activity_value".
Nein, "adapter.0" ist ein Platzhalter für den uns unbekannten, tatsächlichen Adapternamen.
-
@paul53
@Asgothian
Sorry für die späte Rückmeldung. Habe das Theam leider aufgrund von privaten Herausforderungen pausieren müssen.Ich habe das Script von @Asgothian importiert und angepasst. Läuft natürlich nicht bzw. wirft Fehler bei Start und Ende der Bewässerung.
Das bedeutet aus meiner Sicht das der Start&Stop funktioniert.
Zur zusätzlichen Erklärung (und leider wird das Problem nicht kleiner).
Ich habe 6 zu steuernde Gardena/ smartgarden.0 Ventile. Diese kann ich natürlich genau benennen.
Das 7. Ventil soll die Zisterne dann füllen, wenn eins der 6 Ventile geöffnet wird und der Füllstand der Zisterne >105 ist.
Es soll erst schließen, wenn alle 6 Ventile wieder auf "CLOSED" stehen.Der Fehler den ich bekomme:
javascript.0 2021-06-11 22:33:40.480 error at processImmediate (internal/timers.js:461:21) javascript.0 2021-06-11 22:33:40.480 error at Immediate.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5555:41) javascript.0 2021-06-11 22:33:40.479 error at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:502:29) javascript.0 2021-06-11 22:33:40.479 error at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1075:38) javascript.0 2021-06-11 22:33:40.479 error at Object.<anonymous> (script.js.common.Gardena_Zisterne_fuellen:18:21) javascript.0 2021-06-11 22:33:40.479 error script.js.common.Gardena_Zisterne_fuellen: TypeError: Cannot set property '3' of undefined
Sorry, so richtig weiss ich nicht wie ich richtig mit dem bugfixen starten kann. In Zeile 18 steht "<value name="B">"... bzw. in JavaScript ist es die Zeile:
list[(Index - 1)] = (obj.state ? obj.state.val : "");
Wenn ich auf den "Käfer" klicke, bleibt er hier hängen- Zeile 21:
for (var i_index in ValueList) {
-
@oberfragger
Die Variable ValueList enthält den Wert undefined. Wie sieht die ID-Struktur der 6 Ventile aus? -
@oberfragger sagte in While Schleife mit mehreren Objekten?:
Ich habe das Script von @Asgothian importiert und angepasst. Läuft natürlich nicht bzw. wirft Fehler bei Start und Ende der Bewässerung.
- Warum "Natürlich" ?
- Wie sieht das gesamte Skript aus ?
Die Fehlermeldung deutet darauf hin das du die Variablen nicht sauber (garnicht) initialisierst.
A.
-
@asgothian
ich bekomme den gleichen Fehler.
Ich habe debug Bausteine ausserhalb des Triggers gesetzt. Da werden die Ventile gefunden.einmal ein Ventil eingeschaltet und dann wieder ausgeschaltet.
11:17:46.409 error javascript.0 (1404) script.js.09_Gardena.Test_2021: TypeError: Cannot set property '2' of undefined 11:17:46.409 error javascript.0 (1404) at Object.<anonymous> (script.js.09_Gardena.Test_2021:20:21) 11:17:50.617 error javascript.0 (1404) script.js.09_Gardena.Test_2021: TypeError: Cannot set property '2' of undefined 11:17:50.617 error javascript.0 (1404) at Object.<anonymous> (script.js.09_Gardena.Test_2021:20:21)
-
@paul53 sagte in While Schleife mit mehreren Objekten?:
@oberfragger
Die Variable ValueList enthält den Wert undefined. Wie sieht die ID-Struktur der 6 Ventile aus?EDIT: Das muss schon mal groß geschrieben sein
MANUAL_WATERING
Fehler bleibt aber.
-
Der Fehler ist gelb umrahmt.
An Stelle einer Variable "List" die du nicht definiert hast muss "ValueList" gewählt werden.
A.
-
@dslraser sagte: Fehler bleibt aber.
Versuche es mal so:
-
@asgothian Natürlich wegen- das war mir klar dass ich nicht einfach copy&paste machen kann - auf deutsch "Asche auf mein Haupt und ist mir gerade voll peinlich".
Bin ja echt dankbar für die Hilfe. Falls etwas anderes angekommen ist - sorry.
-
Ich habe das jetzt wie folgt gemacht
Bekomme leider direkt bei Scriptstart einen Fehler:23:49:18.580 info javascript.0 (1050) Start javascript script.js.common.Gardena_Zisterne_fuellen 23:49:18.584 error javascript.0 (1050) script.js.common.Gardena_Zisterne_fuellen: script.js.common.Gardena_Zisterne_fuellen:15 23:49:18.585 error javascript.0 (1050) at script.js.common.Gardena_Zisterne_fuellen:21:3
Hier ist mein Script:
Objekt der Zisternenbefüllung:
"_id": "smartgarden.0.LOCATION_09fda3bb-2Dddb4-2D468b-2Dab8a-2Dbdb83b0f1c9f.DEVICE_2be886f7-2D6553-2D4308-2D80f8-2D0c504c0d1227.SERVICE_VALVE_2be886f7-2D6553-2D4308-2D80f8-2D0c504c0d1227.activity_value"Beispielobjekt eines Ventils:
"_id": "smartgarden.0.LOCATION_09fda3bb-2Dddb4-2D468b-2Dab8a-2Dbdb83b0f1c9f.DEVICE_e8990271-2D7615-2D4807-2D864b-2D2505dc75699a.SERVICE_VALVE_e8990271-2D7615-2D4807-2D864b-2D2505dc75699a-3A1.activity_value",Wo liegt mein Fehler?
-
@oberfragger sagte in While Schleife mit mehreren Objekten?:
"_id": "smartgarden.0.LOCATION_09fda3bb-2Dddb4-2D468b-2Dab8a-2Dbdb83b0f1c9f.DEVICE_2be886f7-2D6553-2D4308-2D80f8-2D0c504c0d1227.SERVICE_VALVE_2be886f7-2D6553-2D4308-2D80f8-2D0c504c0d1227.activity_value"
Dieser DP ist read only. Was willst Du steuern ?
Willst Du die Bewässerung starten ? Das geht anders....https://github.com/jpgorganizer/ioBroker.smartgarden#for-service_valve_set
-
@dslraser Wow.
Ich Depp. Stimmt. Ganz vergessen. Das muss man über die Zeit machen.
Ich habe 1 Gardena-Ventil (so ein Teil mit Batterien) direkt am Wasserhahn. Der befüllt mir die Zisterne, wenn diese zu leer ist (> 105 cm Wasserhöhe). Die Bewässerung zieht das Wasser immer aus der Zisterne und ich brauch nichts manuell umstellen.Ich mache morgen mal weiter. Jetzt Bett. Ich melde mich.
-
@asgothian Habs geändert und richtige Liste eingesetzt. Hatte mich bei Import auch gewundert, welche Liste das ist...
Da das Ventil welches die Zisterne befüllen soll, Teil der Liste geworden ist, bin ich nun in einer Schleife. Der ioBroker mag das garnicht:
Ich teste morgen mal weiter. Denke der Weg ist der richtige und ich bin nicht weit weg von einer vollautomatischen Bewässerung, inkl. Befüllung der Zisterne wenn leer.
-
@dslraser und
@AsgothianIch habe jetzt mal mein Script etwas angepasst. Leider wirds nun nicht mehr getriggert (der Debu´g-Outpunkt kommt nicht und das Ventil zur Befüllung springt nicht an)... AARGH!
- Die Werte aller 6 Ventile direkt in die Liste geschrieben. Damit möchte ich vermeiden, dass das Scipt auf das Gardena Smart Water Control reagiert. Dieser schreibt den Wert ja auch unter Activity_Value rein
- Vor Eintritt in die Schleife wird auf den Füllstand der Zisterne geachtet
- In der Schleife wird nun gezählt, wie oft "CLOSED" vorkommt. Wenn 6 Ventile geschlossen sind, dann soll auch kein Wasser mehr in die Zisterne laufen. Wenn mindestens 1Mal KEIN "CLOSED" steht, dann soll Wasser in die Zisterne geleitet werden.
Aber warum triggert das nicht, die Liste verändert sich doch, sobald ich die Bewässerung starte...?
-
Ok, Korrektur.
Habs hinbekommen.Jetzt muss ich nur noch rausfinden, wie ich die Bewässerung stoppen kann. Die GardenaAPI mag irgendwie die EIngabe(n) nicht. Das sollte ich auch noch rausbekommen.JUHU! Gute Doku ist doch alles!
Dank an Euch! WIeder was dazugelernt.
-
@oberfragger sagte: Habs hinbekommen.
Nicht ganz: Der Zähler muss vor der Schleife auf 0 initialisiert werden.
-
@paul53 Verdammt! Und danke für den Hinweis. Dachte der ist bei Scriptstart immer auf 0.
Ich änder das mal lieber sonst läuft die Zisterne über -
@oberfragger sagte: Dachte der ist bei Scriptstart immer auf 0.
Nach Skriptstart schon, aber nicht, nachdem die Schleife einmal durchlaufen wurde (nächster Trigger).
-
@paul53 said in [geloest] While Schleife mit mehreren Objekten?:
Nach Skriptstart schon, aber nicht, nachdem die Schleife einmal durchlaufen wurde (nächster Trigger).
Okay. Den Fall hatte ich glatt wieder verdrängt.