- Home
- Deutsch
- Skripten / Logik
- Blockly
- [Vorlage] Gartenbewässerung mit 4 Ventilen
[Vorlage] Gartenbewässerung mit 4 Ventilen
-
@Kuddel Ich habe gerade noch etwas mit der Steuerung experimentriert und musste feststellen, das nicht immer alle Ventile ausgeschaltet werden wenn sie in der Automatik/Halbautomatik in Reihe geschaltet sind.
Hast du da schon Erfahrungen gemacht? Aktiviere und Starte ich sie einzeln, wird sauber abgeschaltet nach der vorgegebenen Zeit. -
@darkiop bei mir hat immer alles sauber funktioniert.
alle ventile wurden nacheinander eingeschaltet und wieder ausgeschaltet.das ausschalten der soll ja der Aktor eigenständig machen.
vllt. funktioniert das bei dir nicht richtig
-
@Kuddel sagte in [Vorlage] Gartenbewässerung mit 4 Ventilen:
das ausschalten der soll ja der Aktor eigenständig machen
Ja, das läuft ja über ON_TIME ... seltsam, muss ich mir morgen nochmal genauer anschauen.
-
@Kuddel
falls Du von dem Blockly noch was brauchst, ich habe noch etwas angepasst und es hier abgeändert. Ich habe die Namen der DP "verallgemeinert" -
@darkiop zum Thema abschalten ist mir vorhin aufgefallen, das die Steuerung der VIS unterschiedlich auf unterschiedlichen Endgeräten läuft. Auf dem PC und Fire 10 HD Tablet mit Chrome Beta läuft alles normal. Auf dem Nexus 7 2012 UMTS mit Chrome Beta kommt es mal vor, daß sich Ventile mal nicht an, dann mal nicht aus schalten lassen. Mal als Hinweis. Keine Ahnung wie das zusammen hängt. Vielleicht ist das Nexus 7 einfach nur zu langsam.
-
@AtomicIX hatte das am PC getestet, Leistung satt. Aber ich teste auch mal die Browser durch. Ich werd morgen mal ein ausführliches Loging auf die States des Aktors legen und schauen was da passiert.
-
@darkiop aus deiner VIS sehe ich, dass du Regenmenge und Max-Temp auch angeben kannst.
Soll ich diese Werte mit als DP angeben, so dass sie nicht fest im Skript eingetragen sind ?
-
@Kuddel sagte in [Vorlage] Gartenbewässerung mit 4 Ventilen:
aus deiner VIS sehe ich, dass du Regenmenge und Max-Temp auch angeben kannst.
Soll ich diese Werte mit als DP angeben, so dass sie nicht fest im Skript eingetragen sind ?Hi und guten Morgen,
ich hatte vor das ebenfalls als DP abzubilden und auch aktiv/inaktiv Schaltbar zu machen. Wenn du möchtest kannst das gerne in dein Ursprungsskript packen - das macht es mir dann leichter die beiden Versionen (deine Originale und meine für mich angepasste) anzupassen -
@darkiop alles klar, nehme ich mit auf die to-do liste
-
@Kuddel sagte in [Vorlage] Gartenbewässerung mit 4 Ventilen:
alles klar, nehme ich mit auf die to-do liste
Perfekt. Ich werde mir heute nochmal die Automatik anschauen müssen.
Was mir gestern noch in den Kopf kam - evtl. wäre eine Notfall-Funktion die sicherstellt das die Aktoren auch abgeschaltet haben noch Sinnvoll. Es könnte ja sein, das ein Funkbefehlt mal nicht den Aktor erreicht - dann wäre ein zweiter Hilfreich
Hast du bereits einen Bodenfeuchte-Sensor im Einsatz? Ich überlegen gerade in Richtung dem mit HM modifizierten von Gardena.
-
@darkiop das mit der Notallfunktion könnte man am Ende der Ventillaufzeit einbauen.
Einen Feuchtigkeitssensor habe ich nocht nicht, soll aber auch Teil für die Automatik werden.
Hab den gleiche wie dun ins Auge gefasst.
https://homematic-guru.de/homematic-bodenfeuchtesensor-mit-gardena
-
@dslraser vielen dank für dein Skript.
Scheint zu klappen. Ich habe alle meine DPs eingebaut und noch zwei Variablen definiert.
Man kann sowohl den Ort, als auch den Pfad im Skript eingeben:
/** * Hier bitte den Speicherort und denPfad eintragen * Beispiele: speicherort = '0_userdata.0.' speicherort = 'javascript.0' pfad = 'bewasserung.' pfad = 'Gardena.Bewaesserung.' */ speicherort = 'javascript.0' pfad = 'bewaesserung.
Hier Einmal der Blockly Export, falls jemand testen möchte:
<block xmlns="http://www.w3.org/1999/xhtml" type="procedures_defcustomnoreturn" id="D:0E=~0D8*EFnn8f|sd." x="88" y="-1613"> <mutation statements="false"></mutation> <field name="NAME">Datenpunkte_erstellen</field> <field name="SCRIPT">LyoqCiAqIENyZWF0ZSBzdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wIG9yIGphdmFzY3JpcHQueAogKiBDdXJyZW50IFZlcnNpb246ICAgICBodHRwczovL2dpdGh1Yi5jb20vTWljLU0vaW9icm9rZXIuY3JlYXRlVXNlclN0YXRlcwogKiBTdXBwb3J0OiAgICAgICAgICAgICBodHRwczovL2ZvcnVtLmlvYnJva2VyLm5ldC90b3BpYy8yNjgzOS8KICogQXV0b3I6ICAgICAgICAgICAgICAgTWljIChpb0Jyb2tlcikgfCBNaWMtTSAoZ2l0aHViKQogKiBWZXJzaW9uOiAgICAgICAgICAgICAxLjEgKDI2IEphbnVhcnkgMjAyMCkKICogRXhhbXBsZTogICAgICAgICAgICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWMtTS9pb2Jyb2tlci5jcmVhdGVVc2VyU3RhdGVzI2JlaXNwaWVsCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIFBMRUFTRSBOT1RFOiBQZXIgaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCwgdGhlIHVzZWQgZnVuY3Rpb24gc2V0T2JqZWN0KCkgCiAqICAgICAgICAgICAgICBleGVjdXRlcyB0aGUgY2FsbGJhY2sgUFJJT1IgdG8gY29tcGxldGluZyB0aGUgc3RhdGUgY3JlYXRpb24uIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlci4gCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEBwYXJhbSB7c3RyaW5nfSB3aGVyZSAgICAgICAgICBXaGVyZSB0byBjcmVhdGUgdGhlIHN0YXRlOiAnMF91c2VyZGF0YS4wJyBvciAnamF2YXNjcmlwdC54Jy4KICogQHBhcmFtIHtib29sZWFufSBmb3JjZSAgICAgICAgIEZvcmNlIHN0YXRlIGNyZWF0aW9uIChvdmVyd3JpdGUpLCBpZiBzdGF0ZSBpcyBleGlzdGluZy4KICogQHBhcmFtIHthcnJheX0gc3RhdGVzVG9DcmVhdGUgIFN0YXRlKHMpIHRvIGNyZWF0ZS4gc2luZ2xlIGFycmF5IG9yIGFycmF5IG9mIGFycmF5cwogKiBAcGFyYW0ge29iamVjdH0gW2NhbGxiYWNrXSAgICAgT3B0aW9uYWw6IGEgY2FsbGJhY2sgZnVuY3Rpb24gLS0gVGhpcyBwcm92aWRlZCBmdW5jdGlvbiB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCBzdGF0ZXMgYXJlIGNyZWF0ZWQuCiAqLwoKLyoqCiogSGllciBiaXR0ZSBkZW4gU3BlaWNoZXJvcnQgdW5kIGRlblBmYWQgZWludHJhZ2VuCiogQmVpc3BpZWxlOiAKCglzcGVpY2hlcm9ydCA9ICcwX3VzZXJkYXRhLjAuJwoJc3BlaWNoZXJvcnQgPSAnamF2YXNjcmlwdC4wJwoJCglwZmFkID0gJ2Jld2Fzc2VydW5nLicKCXBmYWQgPSAnR2FyZGVuYS5CZXdhZXNzZXJ1bmcuJwoKKi8Kc3BlaWNoZXJvcnQgPSAnamF2YXNjcmlwdC4wJwpwZmFkID0gJ2Jld2Flc3NlcnVuZy4nCgoKZnVuY3Rpb24gY3JlYXRlVXNlclN0YXRlcyh3aGVyZSwgZm9yY2UsIHN0YXRlc1RvQ3JlYXRlLCBjYWxsYmFjayA9IHVuZGVmaW5lZCkgewogICAgCiAgICBjb25zdCBXQVJOID0gZmFsc2U7IC8vIE9ubHkgZm9yIDBfdXNlcmRhdGEuMDogVGhyb3dzIHdhcm5pbmcgaW4gbG9nLCBpZiBzdGF0ZSBpcyBhbHJlYWR5IGV4aXN0aW5nIGFuZCBmb3JjZT1mYWxzZS4gRGVmYXVsdCBpcyBmYWxzZSwgc28gbm8gd2FybmluZyBpbiBsb2csIGlmIHN0YXRlIGV4aXN0cy4KICAgIGNvbnN0IExPR19ERUJVRyA9IGZhbHNlOyAvLyBUbyBkZWJ1ZyB0aGlzIGZ1bmN0aW9uLCBzZXQgdG8gdHJ1ZQogICAgLy8gUGVyIGlzc3VlICM0NzQgKGh0dHBzOi8vZ2l0aHViLmNvbS9pb0Jyb2tlci9pb0Jyb2tlci5qYXZhc2NyaXB0L2lzc3Vlcy80NzQpLCB0aGUgdXNlZCBmdW5jdGlvbiBzZXRPYmplY3QoKSBleGVjdXRlcyB0aGUgY2FsbGJhY2sgCiAgICAvLyBiZWZvcmUgdGhlIHN0YXRlIGlzIGFjdHVhbCBjcmVhdGVkLiBUaGVyZWZvcmUsIHdlIHVzZSBhIHNldFRpbWVvdXQgYW5kIGNvdW50ZXIgYXMgYSB3b3JrYXJvdW5kLgogICAgY29uc3QgREVMQVkgPSA1MDsgLy8gRGVsYXkgaW4gbWlsbGlzZWNvbmRzIChtcykuIEluY3JlYXNlIHRoaXMgdG8gMTAwLCBpZiBpdCBpcyBub3Qgd29ya2luZy4KCiAgICAvLyBWYWxpZGF0ZSAid2hlcmUiCiAgICBpZiAod2hlcmUuZW5kc1dpdGgoJy4nKSkgd2hlcmUgPSB3aGVyZS5zbGljZSgwLCAtMSk7IC8vIFJlbW92ZSB0cmFpbGluZyBkb3QKICAgIGlmICggKHdoZXJlLm1hdGNoKC9eKChqYXZhc2NyaXB0XC4oWzEtOV1bMC05XXxbMC05XSkpJHwwX3VzZXJkYXRhXC4wJCkvKSA9PSBudWxsKSApIHsKICAgICAgICBsb2coJ1RoaXMgc2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgdG8gY3JlYXRlIHN0YXRlcyB1bmRlciBbJyArIHdoZXJlICsgJ10nLCAnZXJyb3InKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgLy8gUHJlcGFyZSAic3RhdGVzVG9DcmVhdGUiIHNpbmNlIHdlIGFsc28gYWxsb3cgYSBzaW5nbGUgc3RhdGUgdG8gY3JlYXRlCiAgICBpZighQXJyYXkuaXNBcnJheShzdGF0ZXNUb0NyZWF0ZVswXSkpIHN0YXRlc1RvQ3JlYXRlID0gW3N0YXRlc1RvQ3JlYXRlXTsgLy8gd3JhcCBpbnRvIGFycmF5LCBpZiBqdXN0IG9uZSBhcnJheSBhbmQgbm90IGluc2lkZSBhbiBhcnJheQoKICAgIC8vIEFkZCAid2hlcmUiIHRvIFNUQVRFU19UT19DUkVBVEUKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhdGVzVG9DcmVhdGUubGVuZ3RoOyBpKyspIHsKICAgICAgICBsZXQgbHBQYXRoID0gc3RhdGVzVG9DcmVhdGVbaV1bMF0ucmVwbGFjZSgvXC4qXC4vZywgJy4nKTsgLy8gcmVwbGFjZSBhbGwgbXVsdGlwbGUgZG90cyBsaWtlICcuLicsICcuLi4nIHdpdGggYSBzaW5nbGUgJy4nCiAgICAgICAgbHBQYXRoID0gbHBQYXRoLnJlcGxhY2UoL14oKGphdmFzY3JpcHRcLihbMS05XVswLTldfFswLTldKVwuKXwwX3VzZXJkYXRhXC4wXC4pLywnJykgLy8gcmVtb3ZlIGFueSBqYXZhc2NyaXB0LnguIC8gMF91c2VyZGF0YS4wLiBmcm9tIGJlZ2lubmluZwogICAgICAgIGxwUGF0aCA9IHdoZXJlICsgJy4nICsgbHBQYXRoOyAvLyBhZGQgd2hlcmUgdG8gYmVnaW5uaW5nIG9mIHN0cmluZwogICAgICAgIHN0YXRlc1RvQ3JlYXRlW2ldWzBdID0gbHBQYXRoOwogICAgfQoKICAgIGlmICh3aGVyZSAhPSAnMF91c2VyZGF0YS4wJykgewogICAgICAgIC8vIENyZWF0ZSBTdGF0ZXMgdW5kZXIgamF2YXNjcmlwdC54CiAgICAgICAgbGV0IG51bVN0YXRlcyA9IHN0YXRlc1RvQ3JlYXRlLmxlbmd0aDsKICAgICAgICBzdGF0ZXNUb0NyZWF0ZS5mb3JFYWNoKGZ1bmN0aW9uKGxvb3BQYXJhbSkgewogICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gTm93IHdlIGFyZSBjcmVhdGluZyBuZXcgc3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXScpOwogICAgICAgICAgICBsZXQgbG9vcEluaXQgPSAobG9vcFBhcmFtWzFdWydkZWYnXSA9PSB1bmRlZmluZWQpID8gbnVsbCA6IGxvb3BQYXJhbVsxXVsnZGVmJ107IC8vIG1pbWljIHNhbWUgYmVoYXZpb3IgYXMgY3JlYXRlU3RhdGUgaWYgbm8gaW5pdCB2YWx1ZSBpcyBwcm92aWRlZAogICAgICAgICAgICBjcmVhdGVTdGF0ZShsb29wUGFyYW1bMF0sIGxvb3BJbml0LCBmb3JjZSwgbG9vcFBhcmFtWzFdLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG51bVN0YXRlcy0tOwogICAgICAgICAgICAgICAgaWYgKG51bVN0YXRlcyA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbGwgc3RhdGVzIHByb2Nlc3NlZC4nKTsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7IC8vIGV4ZWN1dGUgaWYgYSBmdW5jdGlvbiB3YXMgcHJvdmlkZWQgdG8gcGFyYW1ldGVyIGNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBGdW5jdGlvbiB0byBjYWxsYmFjayBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBDcmVhdGUgU3RhdGVzIHVuZGVyIDBfdXNlcmRhdGEuMAogICAgICAgIGxldCBudW1TdGF0ZXMgPSBzdGF0ZXNUb0NyZWF0ZS5sZW5ndGg7CiAgICAgICAgbGV0IGNvdW50ZXIgPSAtMTsKICAgICAgICBzdGF0ZXNUb0NyZWF0ZS5mb3JFYWNoKGZ1bmN0aW9uKGxvb3BQYXJhbSkgewogICAgICAgICAgICBjb3VudGVyICs9IDE7CiAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZyAoJ1tEZWJ1Z10gQ3VycmVudGx5IHByb2Nlc3NpbmcgZm9sbG93aW5nIHN0YXRlOiBbJyArIGxvb3BQYXJhbVswXSArICddJyk7CiAgICAgICAgICAgIGlmKCAoJChsb29wUGFyYW1bMF0pLmxlbmd0aCA+IDApICYmIChleGlzdHNTdGF0ZShsb29wUGFyYW1bMF0pKSApIHsgLy8gV29ya2Fyb3VuZCBkdWUgdG8gaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3OAogICAgICAgICAgICAgICAgLy8gU3RhdGUgaXMgZXhpc3RpbmcuCiAgICAgICAgICAgICAgICBpZiAoV0FSTiAmJiAhZm9yY2UpIGxvZygnU3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXSBpcyBhbHJlYWR5IGV4aXN0aW5nIGFuZCB3aWxsIG5vIGxvbmdlciBiZSBjcmVhdGVkLicsICd3YXJuJyk7CiAgICAgICAgICAgICAgICBpZiAoIVdBUk4gJiYgTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gU3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXSBpcyBhbHJlYWR5IGV4aXN0aW5nLiBPcHRpb24gZm9yY2UgKD1vdmVyd3JpdGUpIGlzIHNldCB0byBbJyArIGZvcmNlICsgJ10uJyk7CiAgICAgICAgICAgICAgICBpZighZm9yY2UpIHsKICAgICAgICAgICAgICAgICAgICAvLyBTdGF0ZSBleGlzdHMgYW5kIHNoYWxsIG5vdCBiZSBvdmVyd3JpdHRlbiBzaW5jZSBmb3JjZT1mYWxzZQogICAgICAgICAgICAgICAgICAgIC8vIFNvLCB3ZSBkbyBub3QgcHJvY2VlZC4KICAgICAgICAgICAgICAgICAgICBudW1TdGF0ZXMtLTsKICAgICAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbGwgc3RhdGVzIHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQhJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhlY3V0ZSBpZiBhIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCB0byBwYXJhbWV0ZXIgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbiBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB3YXMgcHJvdmlkZWQsIHdoaWNoIHdlIGFyZSBnb2luZyB0byBleGVjdXRlIG5vdy4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBnbyBvdXQgYW5kIGNvbnRpbnVlIHdpdGggbmV4dCBlbGVtZW50IGluIGxvb3AuCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTg0NTI5MjAvY29udGludWUtaW4tY3Vyc29yLWZvcmVhY2gKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IC8vIGlmKCFmb3JjZSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gU3RhdGUgaXMgbm90IGV4aXN0aW5nIG9yIGZvcmNlID0gdHJ1ZSwgc28gd2UgYXJlIGNvbnRpbnVpbmcgdG8gY3JlYXRlIHRoZSBzdGF0ZSB0aHJvdWdoIHNldE9iamVjdCgpLgogICAgICAgICAgICBsZXQgb2JqID0ge307CiAgICAgICAgICAgIG9iai50eXBlID0gJ3N0YXRlJzsKICAgICAgICAgICAgb2JqLm5hdGl2ZSA9IHt9OwogICAgICAgICAgICBvYmouY29tbW9uID0gbG9vcFBhcmFtWzFdOwogICAgICAgICAgICBzZXRPYmplY3QobG9vcFBhcmFtWzBdLCBvYmosIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICBsb2coJ0Nhbm5vdCB3cml0ZSBvYmplY3QgZm9yIHN0YXRlIFsnICsgbG9vcFBhcmFtWzBdICsgJ106ICcgKyBlcnIpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gTm93IHdlIGFyZSBjcmVhdGluZyBuZXcgc3RhdGUgWycgKyBsb29wUGFyYW1bMF0gKyAnXScpCiAgICAgICAgICAgICAgICAgICAgbGV0IGluaXQgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmKGxvb3BQYXJhbVsxXS5kZWYgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZihsb29wUGFyYW1bMV0udHlwZSA9PT0gJ251bWJlcicpIGluaXQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZihsb29wUGFyYW1bMV0udHlwZSA9PT0gJ2Jvb2xlYW4nKSBpbml0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxvb3BQYXJhbVsxXS50eXBlID09PSAnc3RyaW5nJykgaW5pdCA9ICcnOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluaXQgPSBsb29wUGFyYW1bMV0uZGVmOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZShsb29wUGFyYW1bMF0sIGluaXQsIHRydWUsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIHNldFN0YXRlIGR1cmNoZ2Vmw7xocnQ6ICcgKyBsb29wUGFyYW1bMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgcHJvY2Vzc2VkLicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhlY3V0ZSBpZiBhIGZ1bmN0aW9uIHdhcyBwcm92aWRlZCB0byBwYXJhbWV0ZXIgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEZ1bmN0aW9uIHRvIGNhbGxiYWNrIHBhcmFtZXRlciB3YXMgcHJvdmlkZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9LCBERUxBWSArICgyMCAqIGNvdW50ZXIpICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfQp9CgpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbCgkvL0Jld8Okc3NlcnVuZwoJW3BmYWQrJ2Jld2Flc3NlcnVuZ19ha3RpdicsIHsnbmFtZSc6J2Jld2Flc3NlcnVuZ19ha3RpdicsICd0eXBlJzonYm9vbGVhbid9IF0sCglbcGZhZCsnYmV3YWVzc2VydW5nX2F1dG9tYXRpaycsIHsndHlwZSc6ICdib29sZWFuJywnbmFtZSc6ICdiZXdhZXNzZXJ1bmdfYXV0b21hdGlrJ30gXSwKCS8vICBUaW1lcgoJW3BmYWQrJ2xhdXR6ZWl0X2dlc2FtdF9pbl9zZWsnLCB7J3R5cGUnOiAnbnVtYmVyJywnbmFtZSc6ICdsYXV0emVpdF9nZXNhbXRfaW5fc2VrJywgJ3VuaXQnOiAnU2VrdW5kZW4nfSBdLAoJW3BmYWQrJ2xhdXR6ZWl0X2VuZGVfdWhyemVpdCcsIHsndHlwZSc6ICdzdHJpbmcnLCduYW1lJzogJ2xhdXR6ZWl0X2VuZGVfdWhyemVpdCcsICd1bml0JzogJ1Vocid9IF0sCglbcGZhZCsncmVzdGxhdXR6ZWl0Jywgeyd0eXBlJzogJ3N0cmluZycsJ25hbWUnOiAncmVzdGxhdXR6ZWl0JywgJ3VuaXQnOiAiTWludXRlbiJ9IF0sCglbcGZhZCsncmVzdGxhdXR6ZWl0X2luX3NlaycsIHsndHlwZSc6ICdudW1iZXInLCduYW1lJzogJ3Jlc3RsYXV0emVpdF9pbl9zZWsnLCAndW5pdCc6ICdTZWt1bmRlbid9IF0sCgkvLyAgVmVudGlsZQoJW3BmYWQrJ3ZlbnRpbGUuYWt0aXZlc192ZW50aWwnLCB7J3R5cGUnOiAnc3RyaW5nJywnbmFtZSc6ICdha3RpdmVzX3ZlbnRpbCd9IF0sCglbcGZhZCsndmVudGlsZS5hbnphaGxfYWt0aXZlX3ZlbnRpbGUnLCB7J3R5cGUnOiAnbnVtYmVyJywnbmFtZSc6ICdhbnphaGxfYWt0aXZlX3ZlbnRpbGUnfSBdLAoJLy8gICAgVmVudGlsIDEKCVtwZmFkKyd2ZW50aWxlLnZlbnRpbF8xLnZlbnRpbF8xJywgeyd0eXBlJzogJ2Jvb2xlYW4nLCduYW1lJzogJ3ZlbnRpbF8xJ30gXSwKCVtwZmFkKyd2ZW50aWxlLnZlbnRpbF8xLnZlbnRpbF8xX2RhdWVyJywgeyd0eXBlJzogJ251bWJlcicsJ25hbWUnOiAndmVudGlsXzFfZGF1ZXInLCd1bml0JzogJ1Nla3VuZGVuJ30gXSwKCVtwZmFkKyd2ZW50aWxlLnZlbnRpbF8xLnZlbnRpbF8xX2VuZGUnLCB7J3R5cGUnOiAnc3RyaW5nJywnbmFtZSc6ICd2ZW50aWxfMV9lbmRlJywndW5pdCc6ICdVaHInfSBdLAoJW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzEudmVudGlsXzFfbmFtZScsICdIZWNrZScsIHsndHlwZSc6ICdzdHJpbmcnLCduYW1lJzogJ3ZlbnRpbF8xX25hbWUnfSBdLAoJW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzEudmVudGlsXzFfcmVzdHplaXQnLCB7J3R5cGUnOiAnc3RyaW5nJywnbmFtZSc6ICd2ZW50aWxfMV9yZXN0emVpdCcsJ3VuaXQnOiAnTWludXRlbid9IF0sCglbcGZhZCsndmVudGlsZS52ZW50aWxfMS52ZW50aWxfMV9yZXN0emVpdF9pbl9zZWsnLCB7J3R5cGUnOiAnbnVtYmVyJywnbmFtZSc6ICd2ZW50aWxfMV9yZXN0emVpdF9pbl9zZWsnLCd1bml0JzogJ1Nla3VuZGVuJ30gXSwKCS8vICAgIFZlbnRpbCAyCglbcGZhZCsndmVudGlsZS52ZW50aWxfMi52ZW50aWxfMicsIHsndHlwZSc6ICdib29sZWFuJywnbmFtZSc6ICd2ZW50aWxfMid9IF0sCglbcGZhZCsndmVudGlsZS52ZW50aWxfMi52ZW50aWxfMl9kYXVlcicsIHsndHlwZSc6ICdudW1iZXInLCduYW1lJzogJ3ZlbnRpbF8yX2RhdWVyJywndW5pdCc6ICdTZWt1bmRlbid9IF0sCglbcGZhZCsndmVudGlsZS52ZW50aWxfMi52ZW50aWxfMl9lbmRlJywgeyd0eXBlJzogJ3N0cmluZycsJ25hbWUnOiAndmVudGlsXzJfZW5kZScsJ3VuaXQnOiAnVWhyJ30gXSwKCVtwZmFkKyd2ZW50aWxlLnZlbnRpbF8yLnZlbnRpbF8yX25hbWUnLCAnUmFzZW4nLCB7J3R5cGUnOiAnc3RyaW5nJywnbmFtZSc6ICd2ZW50aWxfMl9uYW1lJ30gXSwKCVtwZmFkKyd2ZW50aWxlLnZlbnRpbF8yLnZlbnRpbF8yX3Jlc3R6ZWl0Jywgeyd0eXBlJzogJ3N0cmluZycsJ25hbWUnOiAndmVudGlsXzJfcmVzdHplaXQnLCd1bml0JzogJ01pbnV0ZW4nfSBdLAoJW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzIudmVudGlsXzJfcmVzdHplaXRfaW5fc2VrJywgeyd0eXBlJzogJ251bWJlcicsJ25hbWUnOiAndmVudGlsXzJfcmVzdHplaXRfaW5fc2VrJywndW5pdCc6ICdTZWt1bmRlbid9IF0sCgkvLyAgICBWZW50aWwgMwoJW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzMudmVudGlsXzMnLCB7J3R5cGUnOiAnYm9vbGVhbicsJ25hbWUnOiAndmVudGlsXzMnfSBdLAoJW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzMudmVudGlsXzNfZGF1ZXInLCB7J3R5cGUnOiAnbnVtYmVyJywnbmFtZSc6ICd2ZW50aWxfM19kYXVlcicsJ3VuaXQnOiAnU2VrdW5kZW4nfSBdLAoJW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzMudmVudGlsXzNfZW5kZScsIHsndHlwZSc6ICdzdHJpbmcnLCduYW1lJzogJ3ZlbnRpbF8zX2VuZGUnLCd1bml0JzogJ1Vocid9IF0sCglbcGZhZCsndmVudGlsZS52ZW50aWxfMy52ZW50aWxfM19uYW1lJywgJ0JlZXQnLCB7J3R5cGUnOiAnc3RyaW5nJywnbmFtZSc6ICd2ZW50aWxfNF9uYW1lJ30gXSwKCVtwZmFkKyd2ZW50aWxlLnZlbnRpbF8zLnZlbnRpbF8zX3Jlc3R6ZWl0Jywgeyd0eXBlJzogJ3N0cmluZycsJ25hbWUnOiAndmVudGlsXzNfcmVzdHplaXQnLCd1bml0JzogJ01pbnV0ZW4nfSBdLAoJW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzMudmVudGlsXzNfcmVzdHplaXRfaW5fc2VrJywgeyd0eXBlJzogJ251bWJlcicsJ25hbWUnOiAndmVudGlsXzNfcmVzdHplaXRfaW5fc2VrJywndW5pdCc6ICdTZWt1bmRlbid9IF0sCgkvLyAgICBWZW50aWwgNAoJW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzQudmVudGlsXzQnLCB7J3R5cGUnOiAnYm9vbGVhbicsJ25hbWUnOiAndmVudGlsXzQnfSBdLAoJW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzQudmVudGlsXzRfZGF1ZXInLCB7J3R5cGUnOiAnbnVtYmVyJywnbmFtZSc6ICd2ZW50aWxfNF9kYXVlcicsJ3VuaXQnOiAnU2VrdW5kZW4nfSBdLAoJW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzQudmVudGlsXzRfZW5kZScsIHsndHlwZSc6ICdzdHJpbmcnLCduYW1lJzogJ3ZlbnRpbF80X2VuZGUnLCd1bml0JzogJ1Vocid9IF0sCglbcGZhZCsndmVudGlsZS52ZW50aWxfNC52ZW50aWxfNF9uYW1lJywgJ2tsLiBSYXNlbicsIHsndHlwZSc6ICdzdHJpbmcnLCduYW1lJzogJ3ZlbnRpbF80X25hbWUnfSBdLAoJW3BmYWQrJ3ZlbnRpbGUudmVudGlsXzQudmVudGlsXzRfcmVzdHplaXQnLCB7J3R5cGUnOiAnc3RyaW5nJywnbmFtZSc6ICd2ZW50aWxfNF9yZXN0emVpdCcsJ3VuaXQnOiAnTWludXRlbid9IF0sCglbcGZhZCsndmVudGlsZS52ZW50aWxfNC52ZW50aWxfNF9yZXN0emVpdF9pbl9zZWsnLCB7J3R5cGUnOiAnbnVtYmVyJywnbmFtZSc6ICd2ZW50aWxfNF9yZXN0emVpdF9pbl9zZWsnLCd1bml0JzogJ1Nla3VuZGVuJ30gXSwKCS8vICBaZWl0cGxhbgoJLy8gICAgTW9yZ2VucwoJW3BmYWQrJ3plaXRwbGFuLm1vcmdlbnNfYWt0aXYnLCB7J3R5cGUnOiAnYm9vbGVhbicsJ25hbWUnOiAnbW9yZ2Vuc19ha3Rpdid9IF0sCglbcGZhZCsnemVpdHBsYW4ubW9yZ2Vuc191aHJ6ZWl0X3N0YXJ0Jywgeyd0eXBlJzogJ3N0cmluZycsJ25hbWUnOiAnbW9yZ2Vuc191aHJ6ZWl0X3N0YXJ0JywndW5pdCc6ICdVaHInfSBdLAoJW3BmYWQrJ3plaXRwbGFuLm1vcmdlbnNfdWhyemVpdF9zdGFydF9zdHVuZGUnLCB7J3R5cGUnOiAnc3RyaW5nJywnbmFtZSc6ICdtb3JnZW5zX3VocnplaXRfc3RhcnRfc3R1bmRlJ30gXSwKCVtwZmFkKyd6ZWl0cGxhbi5tb3JnZW5zX3VocnplaXRfc3RhcnRfbWludXRlJywgeyd0eXBlJzogJ3N0cmluZycsJ25hbWUnOiAnbW9yZ2Vuc191aHJ6ZWl0X3N0YXJ0X21pbnV0ZSd9IF0sCglbcGZhZCsnemVpdHBsYW4ubW9yZ2Vuc192ZXJ6b2VnZXJ1bmdfc29ubmVuYXVmZ2FuZycsIHsndHlwZSc6ICdzdHJpbmcnLCduYW1lJzogJ21vcmdlbnNfdmVyem9lZ2VydW5nX3Nvbm5lbmF1ZmdhbmcnLCd1bml0JzogJ01pbnV0ZW4nfSBdLAoJLy8gICAgQWJlbmRzCglbcGZhZCsnemVpdHBsYW4uYWJlbmRzX2FrdGl2Jywgeyd0eXBlJzogJ2Jvb2xlYW4nLCduYW1lJzogJ2FiZW5kc19ha3Rpdid9IF0sCglbcGZhZCsnemVpdHBsYW4uYWJlbmRzX3VocnplaXRfc3RhcnQnLCB7J3R5cGUnOiAnc3RyaW5nJywnbmFtZSc6ICdhYmVuZHNfdWhyemVpdF9zdGFydCcsJ3VuaXQnOiAnVWhyJ30gXSwKCVtwZmFkKyd6ZWl0cGxhbi5hYmVuZHNfdWhyemVpdF9zdGFydF9zdHVuZGUnLCB7J3R5cGUnOiAnc3RyaW5nJywnbmFtZSc6ICdhYmVuZHNfdWhyemVpdF9zdGFydF9zdHVuZGUnfSBdLAoJW3BmYWQrJ3plaXRwbGFuLmFiZW5kc191aHJ6ZWl0X3N0YXJ0X21pbnV0ZScsIHsndHlwZSc6ICdzdHJpbmcnLCduYW1lJzogJ2FiZW5kc191aHJ6ZWl0X3N0YXJ0X21pbnV0ZSd9IF0sCglbcGZhZCsnemVpdHBsYW4uYWJlbmRzX3ZlcnpvZWdlcnVuZ19zb25uZW51bnRlcmdhbmcnLCB7J3R5cGUnOiAnc3RyaW5nJywnbmFtZSc6ICdhYmVuZHNfdmVyem9lZ2VydW5nX3Nvbm5lbnVudGVyZ2FuZycsJ3VuaXQnOiAnTWludXRlbid9IF0sCgkvLyAgICBGZXN0ZSBTdGFydHplaXQKCVtwZmFkKyd6ZWl0cGxhbi5mZXN0ZV9zdGFydHplaXRfYWt0aXYnLCB7J3R5cGUnOiAnYm9vbGVhbicsJ25hbWUnOiAnZmVzdGVfc3RhcnR6ZWl0X2FrdGl2J30gXSwKCVtwZmFkKyd6ZWl0cGxhbi5mZXN0ZV9zdGFydHplaXRfdWhyemVpdF9zdGFydCcsIHsndHlwZSc6ICdzdHJpbmcnLCduYW1lJzogJ2Zlc3RlX3N0YXJ0emVpdF91aHJ6ZWl0X3N0YXJ0JywndW5pdCc6ICdVaHInfSBdLAoJW3BmYWQrJ3plaXRwbGFuLmZlc3RlX3N0YXJ0emVpdF91aHJ6ZWl0X3N0YXJ0X3N0dW5kZScsIHsndHlwZSc6ICdzdHJpbmcnLCduYW1lJzogJ2Zlc3RlX3N0YXJ0emVpdF91aHJ6ZWl0X3N0YXJ0X3N0dW5kZSd9IF0sCglbcGZhZCsnemVpdHBsYW4uZmVzdGVfc3RhcnR6ZWl0X3VocnplaXRfc3RhcnRfbWludXRlJywgeyd0eXBlJzogJ3N0cmluZycsJ25hbWUnOiAnZmVzdGVfc3RhcnR6ZWl0X3VocnplaXRfc3RhcnRfbWludXRlJ30gXSwJCQpdOyAgICAKICAgIGNyZWF0ZVVzZXJTdGF0ZXMoc3BlaWNoZXJvcnQsIGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSk7</field> <comment pinned="false" h="80" w="160">Datenpunkte erstellen</comment> </block>
Und hier einmal das Javascript:
/** * Create states under 0_userdata.0 or javascript.x * Current Version: https://github.com/Mic-M/iobroker.createUserStates * Support: https://forum.iobroker.net/topic/26839/ * Autor: Mic (ioBroker) | Mic-M (github) * Version: 1.1 (26 January 2020) * Example: see https://github.com/Mic-M/iobroker.createUserStates#beispiel * ----------------------------------------------- * PLEASE NOTE: Per https://github.com/ioBroker/ioBroker.javascript/issues/474, the used function setObject() * executes the callback PRIOR to completing the state creation. Therefore, we use a setTimeout and counter. * ----------------------------------------------- * @param {string} where Where to create the state: '0_userdata.0' or 'javascript.x'. * @param {boolean} force Force state creation (overwrite), if state is existing. * @param {array} statesToCreate State(s) to create. single array or array of arrays * @param {object} [callback] Optional: a callback function -- This provided function will be executed after all states are created. */ /** * Hier bitte den Speicherort und denPfad eintragen * Beispiele: speicherort = '0_userdata.0.' speicherort = 'javascript.0' pfad = 'bewasserung.' pfad = 'Gardena.Bewaesserung.' */ speicherort = 'javascript.0' pfad = 'bewaesserung.' function createUserStates(where, force, statesToCreate, callback = undefined) { const WARN = false; // Only for 0_userdata.0: Throws warning in log, if state is already existing and force=false. Default is false, so no warning in log, if state exists. const LOG_DEBUG = false; // To debug this function, set to true // Per issue #474 (https://github.com/ioBroker/ioBroker.javascript/issues/474), the used function setObject() executes the callback // before the state is actual created. Therefore, we use a setTimeout and counter as a workaround. const DELAY = 50; // Delay in milliseconds (ms). Increase this to 100, if it is not working. // Validate "where" if (where.endsWith('.')) where = where.slice(0, -1); // Remove trailing dot if ( (where.match(/^((javascript\.([1-9][0-9]|[0-9]))$|0_userdata\.0$)/) == null) ) { log('This script does not support to create states under [' + where + ']', 'error'); return; } // Prepare "statesToCreate" since we also allow a single state to create if(!Array.isArray(statesToCreate[0])) statesToCreate = [statesToCreate]; // wrap into array, if just one array and not inside an array // Add "where" to STATES_TO_CREATE for (let i = 0; i < statesToCreate.length; i++) { let lpPath = statesToCreate[i][0].replace(/\.*\./g, '.'); // replace all multiple dots like '..', '...' with a single '.' lpPath = lpPath.replace(/^((javascript\.([1-9][0-9]|[0-9])\.)|0_userdata\.0\.)/,'') // remove any javascript.x. / 0_userdata.0. from beginning lpPath = where + '.' + lpPath; // add where to beginning of string statesToCreate[i][0] = lpPath; } if (where != '0_userdata.0') { // Create States under javascript.x let numStates = statesToCreate.length; statesToCreate.forEach(function(loopParam) { if (LOG_DEBUG) log('[Debug] Now we are creating new state [' + loopParam[0] + ']'); let loopInit = (loopParam[1]['def'] == undefined) ? null : loopParam[1]['def']; // mimic same behavior as createState if no init value is provided createState(loopParam[0], loopInit, force, loopParam[1], function() { numStates--; if (numStates === 0) { if (LOG_DEBUG) log('[Debug] All states processed.'); if (typeof callback === 'function') { // execute if a function was provided to parameter callback if (LOG_DEBUG) log('[Debug] Function to callback parameter was provided'); return callback(); } else { return; } } }); }); } else { // Create States under 0_userdata.0 let numStates = statesToCreate.length; let counter = -1; statesToCreate.forEach(function(loopParam) { counter += 1; if (LOG_DEBUG) log ('[Debug] Currently processing following state: [' + loopParam[0] + ']'); if( ($(loopParam[0]).length > 0) && (existsState(loopParam[0])) ) { // Workaround due to https://github.com/ioBroker/ioBroker.javascript/issues/478 // State is existing. if (WARN && !force) log('State [' + loopParam[0] + '] is already existing and will no longer be created.', 'warn'); if (!WARN && LOG_DEBUG) log('[Debug] State [' + loopParam[0] + '] is already existing. Option force (=overwrite) is set to [' + force + '].'); if(!force) { // State exists and shall not be overwritten since force=false // So, we do not proceed. numStates--; if (numStates === 0) { if (LOG_DEBUG) log('[Debug] All states successfully processed!'); if (typeof callback === 'function') { // execute if a function was provided to parameter callback if (LOG_DEBUG) log('[Debug] An optional callback function was provided, which we are going to execute now.'); return callback(); } } else { // We need to go out and continue with next element in loop. return; // https://stackoverflow.com/questions/18452920/continue-in-cursor-foreach } } // if(!force) } // State is not existing or force = true, so we are continuing to create the state through setObject(). let obj = {}; obj.type = 'state'; obj.native = {}; obj.common = loopParam[1]; setObject(loopParam[0], obj, function (err) { if (err) { log('Cannot write object for state [' + loopParam[0] + ']: ' + err); } else { if (LOG_DEBUG) log('[Debug] Now we are creating new state [' + loopParam[0] + ']') let init = null; if(loopParam[1].def === undefined) { if(loopParam[1].type === 'number') init = 0; if(loopParam[1].type === 'boolean') init = false; if(loopParam[1].type === 'string') init = ''; } else { init = loopParam[1].def; } setTimeout(function() { setState(loopParam[0], init, true, function() { if (LOG_DEBUG) log('[Debug] setState durchgeführt: ' + loopParam[0]); numStates--; if (numStates === 0) { if (LOG_DEBUG) log('[Debug] All states processed.'); if (typeof callback === 'function') { // execute if a function was provided to parameter callback if (LOG_DEBUG) log('[Debug] Function to callback parameter was provided'); return callback(); } } }); }, DELAY + (20 * counter) ); } }); }); } } let statesToCreate = [ //Bewässerung [pfad+'bewaesserung_aktiv', {'name':'bewaesserung_aktiv', 'type':'boolean'} ], [pfad+'bewaesserung_automatik', {'type': 'boolean','name': 'bewaesserung_automatik'} ], // Timer [pfad+'lautzeit_gesamt_in_sek', {'type': 'number','name': 'lautzeit_gesamt_in_sek', 'unit': 'Sekunden'} ], [pfad+'lautzeit_ende_uhrzeit', {'type': 'string','name': 'lautzeit_ende_uhrzeit', 'unit': 'Uhr'} ], [pfad+'restlautzeit', {'type': 'string','name': 'restlautzeit', 'unit': "Minuten"} ], [pfad+'restlautzeit_in_sek', {'type': 'number','name': 'restlautzeit_in_sek', 'unit': 'Sekunden'} ], // Ventile [pfad+'ventile.aktives_ventil', {'type': 'string','name': 'aktives_ventil'} ], [pfad+'ventile.anzahl_aktive_ventile', {'type': 'number','name': 'anzahl_aktive_ventile'} ], // Ventil 1 [pfad+'ventile.ventil_1.ventil_1', {'type': 'boolean','name': 'ventil_1'} ], [pfad+'ventile.ventil_1.ventil_1_dauer', {'type': 'number','name': 'ventil_1_dauer','unit': 'Sekunden'} ], [pfad+'ventile.ventil_1.ventil_1_ende', {'type': 'string','name': 'ventil_1_ende','unit': 'Uhr'} ], [pfad+'ventile.ventil_1.ventil_1_name', 'Hecke', {'type': 'string','name': 'ventil_1_name'} ], [pfad+'ventile.ventil_1.ventil_1_restzeit', {'type': 'string','name': 'ventil_1_restzeit','unit': 'Minuten'} ], [pfad+'ventile.ventil_1.ventil_1_restzeit_in_sek', {'type': 'number','name': 'ventil_1_restzeit_in_sek','unit': 'Sekunden'} ], // Ventil 2 [pfad+'ventile.ventil_2.ventil_2', {'type': 'boolean','name': 'ventil_2'} ], [pfad+'ventile.ventil_2.ventil_2_dauer', {'type': 'number','name': 'ventil_2_dauer','unit': 'Sekunden'} ], [pfad+'ventile.ventil_2.ventil_2_ende', {'type': 'string','name': 'ventil_2_ende','unit': 'Uhr'} ], [pfad+'ventile.ventil_2.ventil_2_name', 'Rasen', {'type': 'string','name': 'ventil_2_name'} ], [pfad+'ventile.ventil_2.ventil_2_restzeit', {'type': 'string','name': 'ventil_2_restzeit','unit': 'Minuten'} ], [pfad+'ventile.ventil_2.ventil_2_restzeit_in_sek', {'type': 'number','name': 'ventil_2_restzeit_in_sek','unit': 'Sekunden'} ], // Ventil 3 [pfad+'ventile.ventil_3.ventil_3', {'type': 'boolean','name': 'ventil_3'} ], [pfad+'ventile.ventil_3.ventil_3_dauer', {'type': 'number','name': 'ventil_3_dauer','unit': 'Sekunden'} ], [pfad+'ventile.ventil_3.ventil_3_ende', {'type': 'string','name': 'ventil_3_ende','unit': 'Uhr'} ], [pfad+'ventile.ventil_3.ventil_3_name', 'Beet', {'type': 'string','name': 'ventil_4_name'} ], [pfad+'ventile.ventil_3.ventil_3_restzeit', {'type': 'string','name': 'ventil_3_restzeit','unit': 'Minuten'} ], [pfad+'ventile.ventil_3.ventil_3_restzeit_in_sek', {'type': 'number','name': 'ventil_3_restzeit_in_sek','unit': 'Sekunden'} ], // Ventil 4 [pfad+'ventile.ventil_4.ventil_4', {'type': 'boolean','name': 'ventil_4'} ], [pfad+'ventile.ventil_4.ventil_4_dauer', {'type': 'number','name': 'ventil_4_dauer','unit': 'Sekunden'} ], [pfad+'ventile.ventil_4.ventil_4_ende', {'type': 'string','name': 'ventil_4_ende','unit': 'Uhr'} ], [pfad+'ventile.ventil_4.ventil_4_name', 'kl. Rasen', {'type': 'string','name': 'ventil_4_name'} ], [pfad+'ventile.ventil_4.ventil_4_restzeit', {'type': 'string','name': 'ventil_4_restzeit','unit': 'Minuten'} ], [pfad+'ventile.ventil_4.ventil_4_restzeit_in_sek', {'type': 'number','name': 'ventil_4_restzeit_in_sek','unit': 'Sekunden'} ], // Zeitplan // Morgens [pfad+'zeitplan.morgens_aktiv', {'type': 'boolean','name': 'morgens_aktiv'} ], [pfad+'zeitplan.morgens_uhrzeit_start', {'type': 'string','name': 'morgens_uhrzeit_start','unit': 'Uhr'} ], [pfad+'zeitplan.morgens_uhrzeit_start_stunde', {'type': 'string','name': 'morgens_uhrzeit_start_stunde'} ], [pfad+'zeitplan.morgens_uhrzeit_start_minute', {'type': 'string','name': 'morgens_uhrzeit_start_minute'} ], [pfad+'zeitplan.morgens_verzoegerung_sonnenaufgang', {'type': 'string','name': 'morgens_verzoegerung_sonnenaufgang','unit': 'Minuten'} ], // Abends [pfad+'zeitplan.abends_aktiv', {'type': 'boolean','name': 'abends_aktiv'} ], [pfad+'zeitplan.abends_uhrzeit_start', {'type': 'string','name': 'abends_uhrzeit_start','unit': 'Uhr'} ], [pfad+'zeitplan.abends_uhrzeit_start_stunde', {'type': 'string','name': 'abends_uhrzeit_start_stunde'} ], [pfad+'zeitplan.abends_uhrzeit_start_minute', {'type': 'string','name': 'abends_uhrzeit_start_minute'} ], [pfad+'zeitplan.abends_verzoegerung_sonnenuntergang', {'type': 'string','name': 'abends_verzoegerung_sonnenuntergang','unit': 'Minuten'} ], // Feste Startzeit [pfad+'zeitplan.feste_startzeit_aktiv', {'type': 'boolean','name': 'feste_startzeit_aktiv'} ], [pfad+'zeitplan.feste_startzeit_uhrzeit_start', {'type': 'string','name': 'feste_startzeit_uhrzeit_start','unit': 'Uhr'} ], [pfad+'zeitplan.feste_startzeit_uhrzeit_start_stunde', {'type': 'string','name': 'feste_startzeit_uhrzeit_start_stunde'} ], [pfad+'zeitplan.feste_startzeit_uhrzeit_start_minute', {'type': 'string','name': 'feste_startzeit_uhrzeit_start_minute'} ], ]; createUserStates(speicherort, false, statesToCreate);
Mic-M created this issue in ioBroker/ioBroker.javascriptclosed setObject() function: callback not working as intended. #474
Mic-M created this issue in ioBroker/ioBroker.javascriptclosed setObject() function: callback not working as intended. #474
Mic-M created this issue in ioBroker/ioBroker.javascriptclosed 0_userdata.0: existsState() vs. $-Selector $().length after state deletion #478
-
@Kuddel sagte in [Vorlage] Gartenbewässerung mit 4 Ventilen:
Scheint zu klappen.
wirklich ?
Ich glaube das geht so nicht... -
@dslraser habe es gerade nochmal gestetet und alle DPs korrekt unter 0_userdata angelegt.
Vllt. habe ich beim Export einen Fehler gemacht...
-
-
@Kuddel sagte in [Vorlage] Gartenbewässerung mit 4 Ventilen:
Vllt. habt ihr Bock zu testen ?
ja, schaus mir später an - bin gerade noch am debuggen der Automatik
-
@Kuddel
Was möchtest Du hier machen ? (das geht so nicht und wird angemeckert) Sollen das die Namen vom Ventil sein ? Also Hecke, Rasen, Beet usw... -
@dslraser ja genau, die Bezeichnugen der einzelnen Kreise.
bei mir wird das komischerweise nicht angemeckert
EDIT: okay, jetzt doch. habs in der Test-VM nochmal probiert
-
@Kuddel ich guck es mir heute abend mal an. Danke
-
@Kuddel sagte in [Vorlage] Gartenbewässerung mit 4 Ventilen:
Ventil 4 startet leider nicht.
Schau mal ob du hiermit was erkennen kannst. Damit kannst die DPs subscripen und die einzelnen Werte vom DP beobachten. Hab ich heut Morgen für meine Tests mit der Automatik zusammengeklickt.
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="pIay;;)7~Cs@HxnMh[%B">objectID_1</variable> <variable type="" id="r?C3GwKf]$).t1P,PO`h">oid</variable> <variable type="" id="7tcJOjj[bGR_[Q5koxNA">objectID_2</variable> <variable type="" id="z24$A}L)IdGOWDHl|s@Y">objectID_val</variable> <variable type="" id="??/Z|X!WTK3pdtkMxRtN">objectID_3</variable> <variable type="" id="I9FS^5?Fc.mWsisn=z,n">objectID_5</variable> <variable type="" id="W;6~2.QFR;kxwI:Jni/2">objectID_ack</variable> <variable type="" id="Eatwppv0f11iBwd,uVGn">objectID_4</variable> <variable type="" id="(yhXEH$,_L37m,=PdKU[">objectID_6</variable> <variable type="" id="o`K]4Fft5bYb99@(#$r.">objectID_ts</variable> <variable type="" id="88~;^mCbyiOD.?s^jKi-">objectID_lc</variable> <variable type="" id="I}GFHXKg4T#[:)#Xgox6">objectID_quality</variable> <variable type="" id="7Mwo)h)O(Xj88r34@|%N">objectID_from</variable> <variable type="" id="!GFq`Fg/M-XdtwRhqyM`">debuggedObjectID</variable> </variables> <block type="variables_set" id="?3(0UaCYoI+a2N6vfX|[" x="13" y="188"> <field name="VAR" id="pIay;;)7~Cs@HxnMh[%B" variabletype="">objectID_1</field> <value name="VALUE"> <block type="text" id="`ICn.%BFnBX2,;.mQ9}h"> <field name="TEXT">hm-rpc.1.OEQ0044740.1.ON_TIME</field> </block> </value> <next> <block type="variables_set" id="X+X/_[Jn:x?IDt6K[]l^"> <field name="VAR" id="7tcJOjj[bGR_[Q5koxNA" variabletype="">objectID_2</field> <value name="VALUE"> <block type="text" id="x=e0s2^AU=4=Erv!APzI"> <field name="TEXT">hm-rpc.1.OEQ0044740.1.STATE</field> </block> </value> <next> <block type="variables_set" id="K^~_{9^gYF}E/}wIF{?s"> <field name="VAR" id="??/Z|X!WTK3pdtkMxRtN" variabletype="">objectID_3</field> <value name="VALUE"> <block type="text" id=";K=Ez_IVwAmY=;CWq%5("> <field name="TEXT">hm-rpc.1.OEQ0044740.2.ON_TIME</field> </block> </value> <next> <block type="variables_set" id="/Cl1:a9(-z7X8xJ|}yd)"> <field name="VAR" id="Eatwppv0f11iBwd,uVGn" variabletype="">objectID_4</field> <value name="VALUE"> <block type="text" id="ISS=8o=f/rT_8u!xCWU7"> <field name="TEXT">hm-rpc.1.OEQ0044740.2.STATE</field> </block> </value> <next> <block type="variables_set" id=":8~?Xm]-D6sMhCeXSCsX"> <field name="VAR" id="I9FS^5?Fc.mWsisn=z,n" variabletype="">objectID_5</field> <value name="VALUE"> <block type="text" id="k#RBk@5U;mvQUp6@SF40"> <field name="TEXT">hm-rpc.1.OEQ0044740.3.ON_TIME</field> </block> </value> <next> <block type="variables_set" id=",zY+4+t_#N-Y;LIWPh9-"> <field name="VAR" id="(yhXEH$,_L37m,=PdKU[" variabletype="">objectID_6</field> <value name="VALUE"> <block type="text" id="S,*wssU7lL=kQ`gAyT`l"> <field name="TEXT">hm-rpc.1.OEQ0044740.3.STATE</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defnoreturn" id="PHk=-:*kr_}}aE@tBwkM" x="613" y="187"> <mutation> <arg name="oid" varid="r?C3GwKf]$).t1P,PO`h"></arg> </mutation> <field name="NAME">debugObject</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="variables_set" id="8}RZidatnAws$00{%,8L"> <field name="VAR" id="z24$A}L)IdGOWDHl|s@Y" variabletype="">objectID_val</field> <value name="VALUE"> <block type="get_value_var" id="}K`+UqB0Hh!;p/p8=vyX"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="0C#A,};yov4)hJ%3b*a;"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="fD=T2Y-+Qyb=qzX`?!z/"> <field name="VAR" id="r?C3GwKf]$).t1P,PO`h" variabletype="">oid</field> </block> </value> </block> </value> <next> <block type="variables_set" id="}^EEnhSJ]Es@PCj2XsqB"> <field name="VAR" id="W;6~2.QFR;kxwI:Jni/2" variabletype="">objectID_ack</field> <value name="VALUE"> <block type="get_value_var" id="58oyy/#{nW)*RcGPG1j]"> <field name="ATTR">ack</field> <value name="OID"> <shadow type="text" id="0C#A,};yov4)hJ%3b*a;"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="kFZbnNajUd#[dTVm}%|k"> <field name="VAR" id="r?C3GwKf]$).t1P,PO`h" variabletype="">oid</field> </block> </value> </block> </value> <next> <block type="variables_set" id="X(U)ReIJ][Z4SGncZBB?"> <field name="VAR" id="o`K]4Fft5bYb99@(#$r." variabletype="">objectID_ts</field> <value name="VALUE"> <block type="convert_from_date" id="}pbfxJ%WGK3tfs(UBVt}"> <mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">JJJJ.MM.TT SS:mm:ss.sss</field> <value name="VALUE"> <block type="get_value_var" id="oEbG{om_5V_LuYrt+m#y"> <field name="ATTR">ts</field> <value name="OID"> <shadow type="text" id="0C#A,};yov4)hJ%3b*a;"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="=jo6Y{:f7+rk!%yB.3g2"> <field name="VAR" id="r?C3GwKf]$).t1P,PO`h" variabletype="">oid</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="]g,_pT+;;E$|Vkj|l83U"> <field name="VAR" id="88~;^mCbyiOD.?s^jKi-" variabletype="">objectID_lc</field> <value name="VALUE"> <block type="convert_from_date" id="PgOu(x#nu}3ao^{sN@rH"> <mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">JJJJ.MM.TT SS:mm:ss.sss</field> <value name="VALUE"> <block type="get_value_var" id="RiTlkJGnVWB=r_1e%4LN"> <field name="ATTR">lc</field> <value name="OID"> <shadow type="text" id=",C0Uu^N]anjX=]D=Qiq|"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="[IS:]J!Sg)M7A6G*:;~:"> <field name="VAR" id="r?C3GwKf]$).t1P,PO`h" variabletype="">oid</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="Gfkry3O/w^,Z}Sh_nmso"> <field name="VAR" id="I}GFHXKg4T#[:)#Xgox6" variabletype="">objectID_quality</field> <value name="VALUE"> <block type="get_value_var" id="3Iz#aZ/oUZF5B%YYk*?z"> <field name="ATTR">q</field> <value name="OID"> <shadow type="text" id="0C#A,};yov4)hJ%3b*a;"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="^K{jA!67=JGG|})jR*np"> <field name="VAR" id="r?C3GwKf]$).t1P,PO`h" variabletype="">oid</field> </block> </value> </block> </value> <next> <block type="variables_set" id="E=(yL]k$NFy$|]F5*@:;"> <field name="VAR" id="7Mwo)h)O(Xj88r34@|%N" variabletype="">objectID_from</field> <value name="VALUE"> <block type="get_value_var" id="y,z~a]oh[@Fb/U(^183n"> <field name="ATTR">from</field> <value name="OID"> <shadow type="text" id="quF~P*ktXV:f=K=#a}g1"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="7OhGdI95j,Sq1n,qP!nI"> <field name="VAR" id="r?C3GwKf]$).t1P,PO`h" variabletype="">oid</field> </block> </value> </block> </value> <next> <block type="variables_set" id="1(0{pOnQ3R:;5VY!*hpF"> <field name="VAR" id="!GFq`Fg/M-XdtwRhqyM`" variabletype="">debuggedObjectID</field> <value name="VALUE"> <block type="text_join" id="%=b+5aYtPHq6q!wM`U#,"> <mutation items="13"></mutation> <value name="ADD0"> <block type="text_join" id="#ThSty_d0r_avD.X{6wz"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="HHe+iY!|`Fj16W:iz]{k"> <field name="TEXT">oid: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="0G!LO?HK?RnCf-*R/S@9"> <field name="VAR" id="r?C3GwKf]$).t1P,PO`h" variabletype="">oid</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id="gUP?IQoyvO4[owxBAF,Z"> <field name="TEXT"> | </field> </block> </value> <value name="ADD2"> <block type="text_join" id="f9D.;U=)O,AnUT}3f.P/"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="[rfpH()|Zcz*_*X;@_Lh"> <field name="TEXT">val: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="vpj]@tlSC@p`0k-O]6qx"> <field name="VAR" id="z24$A}L)IdGOWDHl|s@Y" variabletype="">objectID_val</field> </block> </value> </block> </value> <value name="ADD3"> <block type="text" id="oai#6hBZgSBtJ#|Kbipi"> <field name="TEXT"> | </field> </block> </value> <value name="ADD4"> <block type="text_join" id="f~(`Yzv-/^qXwVP@3oH."> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="!1oRXcRU(gLluh%BQpzg"> <field name="TEXT">ack: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="s3-9D.rHXGwYlMS,Avhe"> <field name="VAR" id="W;6~2.QFR;kxwI:Jni/2" variabletype="">objectID_ack</field> </block> </value> </block> </value> <value name="ADD5"> <block type="text" id=".)I]jK7ine.)@Z40Lbbh"> <field name="TEXT"> | </field> </block> </value> <value name="ADD6"> <block type="text_join" id=")r%D|?O,vHlK2hAv=?RT"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="5i}@6h$Wi#!_x3l@yEf_"> <field name="TEXT">ts: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="H.ikYY_h_0ekLH%[J0?X"> <field name="VAR" id="o`K]4Fft5bYb99@(#$r." variabletype="">objectID_ts</field> </block> </value> </block> </value> <value name="ADD7"> <block type="text" id="?uV!?yMZk4^*]wW,tDMt"> <field name="TEXT"> | </field> </block> </value> <value name="ADD8"> <block type="text_join" id="$*h-bG-Px0{:xMMzS%w8"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="j`jA@Uca6eLCCEbwsb@z"> <field name="TEXT">lc: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="s[,CnfTQ9V{S;}VUQ,HH"> <field name="VAR" id="88~;^mCbyiOD.?s^jKi-" variabletype="">objectID_lc</field> </block> </value> </block> </value> <value name="ADD9"> <block type="text" id="`LYrSzptqEBj}MvUQXgk"> <field name="TEXT"> | </field> </block> </value> <value name="ADD10"> <block type="text_join" id="TwE*+;~PKTr3Y-NZ,W6e"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="[0=|=1QNg]wR34VE_64B"> <field name="TEXT">quality: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="KDZ!pSdC8$_5DsINApON"> <field name="VAR" id="I}GFHXKg4T#[:)#Xgox6" variabletype="">objectID_quality</field> </block> </value> </block> </value> <value name="ADD11"> <block type="text" id="C6)F}h6Tqh%RKLda~tGt"> <field name="TEXT"> | </field> </block> </value> <value name="ADD12"> <block type="text_join" id="^dR_LN^|-3yslENv=Wc1"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="TT}Y.D5`VX~ArYud0-Lt"> <field name="TEXT">from: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="m}uOiCv,S/ZYz,Tu2@:$"> <field name="VAR" id="7Mwo)h)O(Xj88r34@|%N" variabletype="">objectID_from</field> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="^5M-8`;hS^!@zT#w7TPp"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="P0)38%YEoA-tS1,cn!L^"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id=";kcjsB;IB~bf5%]5vi.R"> <field name="VAR" id="!GFq`Fg/M-XdtwRhqyM`" variabletype="">debuggedObjectID</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> <block type="on_ext" id="pjEBbboC7Hi@(yQ4T$dn" x="13" y="412"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="t6!4Gn$C@W0Dfo1]T0nL"> <field name="oid">default</field> </shadow> <block type="variables_get" id="[-VvV(PZi0HOK5K`#]Sj"> <field name="VAR" id="pIay;;)7~Cs@HxnMh[%B" variabletype="">objectID_1</field> </block> </value> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="6_Wv-j?5iBqx_._@ZVTz" inline="true"> <mutation name="debugObject"> <arg name="oid"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="zmB*)H`PhWSI*[gUPj;;"> <field name="VAR" id="pIay;;)7~Cs@HxnMh[%B" variabletype="">objectID_1</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="q%G6_k5LHa^XKMivMw4a"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="t6!4Gn$C@W0Dfo1]T0nL"> <field name="oid">default</field> </shadow> <block type="variables_get" id="nPb|n%*Bde~mWvKq{F}T"> <field name="VAR" id="7tcJOjj[bGR_[Q5koxNA" variabletype="">objectID_2</field> </block> </value> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="%/EgZ]9|1p2x=oPShKUP" inline="true"> <mutation name="debugObject"> <arg name="oid"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="Y*M9;FjqZ808mdyh8th7"> <field name="VAR" id="7tcJOjj[bGR_[Q5koxNA" variabletype="">objectID_2</field> </block> </value> </block> </statement> </block> </next> </block> <block type="on_ext" id="$JXvjguh-VLZ5*wU4AkW" x="13" y="713"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="t6!4Gn$C@W0Dfo1]T0nL"> <field name="oid">default</field> </shadow> <block type="variables_get" id="}BG71024BkA2Q$rtlZS|"> <field name="VAR" id="??/Z|X!WTK3pdtkMxRtN" variabletype="">objectID_3</field> </block> </value> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="uu%.IJ~H}0f3|8-2vc~|" inline="true"> <mutation name="debugObject"> <arg name="oid"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="!Joh2~8P;U{D0~_5qztJ"> <field name="VAR" id="??/Z|X!WTK3pdtkMxRtN" variabletype="">objectID_3</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="MNOU_{2~=kw:r*=XOFyl"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="t6!4Gn$C@W0Dfo1]T0nL"> <field name="oid">default</field> </shadow> <block type="variables_get" id="}-v1nXC6nN87vraOpcfL"> <field name="VAR" id="Eatwppv0f11iBwd,uVGn" variabletype="">objectID_4</field> </block> </value> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id=":/ZkVHkP-.Pz!THj-lA~" inline="true"> <mutation name="debugObject"> <arg name="oid"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="g3yCmxGPSO,LmR;.`2V#"> <field name="VAR" id="Eatwppv0f11iBwd,uVGn" variabletype="">objectID_4</field> </block> </value> </block> </statement> </block> </next> </block> <block type="on_ext" id="8^@Ja7Ly[Q*qjwtlxRYQ" x="13" y="1013"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="t6!4Gn$C@W0Dfo1]T0nL"> <field name="oid">default</field> </shadow> <block type="variables_get" id="2dZ|PeyZZl#+Q1H6PMyO"> <field name="VAR" id="I9FS^5?Fc.mWsisn=z,n" variabletype="">objectID_5</field> </block> </value> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="rMG(zi(D@+a!|0cTz:P4" inline="true"> <mutation name="debugObject"> <arg name="oid"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="+E?EAwYE+hu(KH9z!~+d"> <field name="VAR" id="I9FS^5?Fc.mWsisn=z,n" variabletype="">objectID_5</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="b-CfFQ02oeMw41Uv@OsA"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="t6!4Gn$C@W0Dfo1]T0nL"> <field name="oid">default</field> </shadow> <block type="variables_get" id="QF6i!c-U*6u2|R,h]oVF"> <field name="VAR" id="(yhXEH$,_L37m,=PdKU[" variabletype="">objectID_6</field> </block> </value> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="wtr`Rh:x1_@r[:.q-7~2" inline="true"> <mutation name="debugObject"> <arg name="oid"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="CC6u?4|+Dne*LZo8@8h4"> <field name="VAR" id="(yhXEH$,_L37m,=PdKU[" variabletype="">objectID_6</field> </block> </value> </block> </statement> </block> </next> </block> </xml>