Weiter zum Inhalt

Skripten / Logik

16.6k Themen 214.3k Beiträge

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Themen
    49k Beiträge
    KusselinK
    o.k. danke für die Info
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    HomoranH
    @Uwe-K beide Datenpunkte sind vom common.type boolean, passt von daher also. Leider sagt das nichts darüber aus, welchen Typ der Wert hat. Daher hat @paul53 mit doppeltem nicht sichergestellt, dass ein falscher Typ number in boolean konvertiert wird.
  • Hilfe für Skripterstellung mit Node-RED

    954 13k
    954 Themen
    13k Beiträge
    F
    Hallo ich habe ein Problem mit Nodered und Alexa Echo. Ich habe in Nodered die Wemo Emulation installiert und eine Wemo Steckdose emuliert um an einer Zigbeesteckdosenleiste einen Platz der Leiste zu schalten. "node-red-contrib-wemo-emulator" Das klappt auch wunderbar leider nicht länger als ein zwei Tage. Wenn ich dann den Echo der mit der emulierten Steckdose verbunden ist neu starte geht es wieder. Leider ist das sehr nervig. Hat schon mal jemand gehabt? Durch die Forumssuche habe ich leider nicht gefunden. Gruss Achim
  • ioBroker,Conbee2, xiaomi Fenster/Türkontakt protokollieren

    monitoring security
    2
    0 Stimmen
    2 Beiträge
    243 Aufrufe
    B
    Hallo, ich würde an Deiner Stelle den History Adapter verwenden. Damit kann man dann einzelne States protokollieren (kleines Zahnrad ganz rechts am Ende der Zeile in der Objektliste, dann Einstellungen vornehmen). Mit dem FLOT Adapter kannst Du dir dann ein Diagramm erstellen, das Dir die Zustandsänderungen anzeigt. Als Zustand würde ich den State für open/close verwenden.
  • Wunderground Api Service eingestellt

    javascript
    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    A
    Ist der API Service denn wirklich eingestellt worden? Denn ich habe die API noch bis vor einer Woche genutzt. Seit ein paar Tagen aktualisierte sie nicht mehr. Meldet nur noch: 2020-02-26 13:23:28.658 - info: host.NUC(NUC) instance system.adapter.weatherunderground.0 started with pid 9248 2020-02-26 13:23:30.996 - info: weatherunderground.0 (9248) starting. Version 3.1.6 in D:/ioBroker/NUC/node_modules/iobroker.weatherunderground, node: v10.17.0 2020-02-26 13:23:32.623 - info: weatherunderground.0 (9248) Key rejected, resetting webkey and trying again 2020-02-26 13:23:32.847 - info: weatherunderground.0 (9248) Key rejected, resetting webkey and trying again 2020-02-26 13:23:33.051 - info: weatherunderground.0 (9248) Key rejected, resetting webkey and trying again 2020-02-26 13:23:33.058 - error: weatherunderground.0 (9248) uncaught exception: Cannot read property 'replace' of undefined 2020-02-26 13:23:33.058 - error: weatherunderground.0 (9248) TypeError: Cannot read property 'replace' of undefined at modifyExtractedUrl (D:\ioBroker\NUC\node_modules\iobroker.weatherunderground\main.js:1537:15) at getNewWuDataDailyForcast (D:\ioBroker\NUC\node_modules\iobroker.weatherunderground\main.js:1601:19) at getNewWuDataCurrentObservations (D:\ioBroker\NUC\node_modules\iobroker.weatherunderground\main.js:228:55) at getKeysAndData (D:\ioBroker\NUC\node_modules\iobroker.weatherunderground\main.js:217:13) at Immediate.setImmediate (D:\ioBroker\NUC\node_modules\iobroker.weatherunderground\main.js:1584:32) at runCallback (timers.js:705:18) at tryOnImmediate (timers.js:676:5) at processImmediate (timers.js:658:5) 2020-02-26 13:23:33.564 - info: weatherunderground.0 (9248) terminating 2020-02-26 13:23:33.566 - info: weatherunderground.0 (9248) Terminated (NO_ERROR): Without reason 2020-02-26 13:23:34.100 - info: host.NUC(NUC) instance system.adapter.weatherunderground.0 terminated with code 0 (NO_ERROR) Ich fand die Daten sehr zuverlässig und gut. Habe bisher keinen vergleichbar guten Service gefunden. Bleibt uns jetzt nur noch "DasWetter"? Wenn ich die API Seite von DasWetter aufrufe, kommt entweder die Meldung dass der Browser keine Cookies zulässt (was er aber tut) oder 404 - Seite nciht gefunden.
  • pushover mit unterschiedlichen Empfängern

    javascript blockly
    29
    0 Stimmen
    29 Beiträge
    3k Aufrufe
    D
    Ja die ist richtig. Hmm.. evtl. lösche ich einfach alle Geräte mim Konto nochmal und richte alles von 0 ein... man weiß ja nie ;)
  • mqtt via blockly

    blockly
    1
    0 Stimmen
    1 Beiträge
    288 Aufrufe
    Niemand hat geantwortet
  • File auslesen und auf Datenpunkte legen

    javascript
    13
    0 Stimmen
    13 Beiträge
    486 Aufrufe
    paul53P
    @Homoran sagte: "undefined" gäbe, wäre das jedoch dann auch "falsch" Was der Logik von Javascript entspricht (implizite Typwandlung).
  • [gelöst] Prüfen, ob ein State existiert

    Verschoben
    11
    0 Stimmen
    11 Beiträge
    3k Aufrufe
    ScroungerS
    Wenn der state existiert aber keinen Wert hat wird trotzdem eine warn ins log geschrieben. Lösung ist existsState zu verwenden, da bekommt dann auch false zurück wenn kein Wert vorhanden ist, siehe: https://forum.iobroker.net/topic/23548/getstate-warning-log-js-dokumentation/10 Musste ich hier noch dokumentieren ;)
  • Time Of Day - Design Pattern

    template javascript
    2
    2
    3 Stimmen
    2 Beiträge
    1k Aufrufe
    ?
    @Tirador Vielen Dank für das tolle Skript, dass diverse Zeiten einfach über einen DP verfügbar macht :)
  • Befehl Komandozeile als Script

    communication
    2
    0 Stimmen
    2 Beiträge
    270 Aufrufe
    H
    Ich habe es schon selber hinbekommen. Für meinen Anwendungsfall sieht das dan so aus: var schreibeVorlauf; schreibeVorlauf = "ebusctl -s localhost w -c bai SetModeOverride '2;" + getState("hm-rega.0.3298").val +";-;-;0;0;0;0;0;0'" ; console.log(schreibeVorlauf); console.log(getState("hm-rega.0.3298").val); exec(schreibeVorlauf);
  • Auslesen von Daten einer Webseite

    monitoring
    8
    0 Stimmen
    8 Beiträge
    628 Aufrufe
    HomoranH
    @floet sagte in Auslesen von Daten einer Webseite: ch möchte allerdings auch "mittel" und "spitze" haben. Mit Num geht es jedenfalls nicht. Das stimmt, da muss dann ein anderes RegEx rein. Mache ich dir heute abend EDIT: ind[^\d\-]+(\-?\d+\.?\d+)\s\/\s(\-?\d+\.?\d+)\s\/\s(\-?\d+\.?\d+) für die drei Windgeschwindigkeiten (Num0-2)
  • Skript für DarkSky Wetterdaten

    javascript climate
    11
    1 Stimmen
    11 Beiträge
    2k Aufrufe
    J
    Hallo, deute ich das hier richtig: schedule("*/5 * * * *", function (data) { das die 5 bedeutet alle 5 Minuten werden die aktuellen Daten geholt? Weil ich mich gewundert habe in der Darksky API, das da schon über 200 Aufrufe waren, wobei das Script erst ein paar Stunden lief. Kann man hier einen kleineren Intervall einstellen? So oft muss das ja nicht sein die Daten abzurufen, auch wenn 1000 Aufrufe kostenfrei sind. Grüße JB
  • Liste aller CRON Jobs

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    4k Aufrufe
    T
    @Blackbat72 gibt noch keine Funktion in Javascript-Adapter dafür. Adapter Code in dem die Funktionen definiert sind
  • Staubsauger bei Abwesenheit 1xReinigen

    blockly
    6
    1
    0 Stimmen
    6 Beiträge
    587 Aufrufe
    L
    @paul53 Funktioniert nicht. Musste das script abändern da mein Anwesenheit Datenpunkt bei niemand zuhause falsch ist, siehe unten. Funktioniert aber nicht. [image: 1582362713335-staubsauger.png]
  • Bewegungsmelder temporär deaktivieren

    javascript blockly
    4
    1
    0 Stimmen
    4 Beiträge
    403 Aufrufe
    T
    @Berchemer In allen von dir genannten Fällen sind die Variablen leer/undefiniert. Vorteil von Variablen ist, das sie effizienter als States sind.
  • Logik-Programmierung abseits von Blockly / Szenen möglich ?

    scenes blockly
    2
    1
    0 Stimmen
    2 Beiträge
    447 Aufrufe
    HomoranH
    @Bostil sagte in Logik-Programmierung abseits von Blockly / Szenen möglich ?: einen anderen schönen Adapter, der "falls ... wenn" Blöcke einfacher & flexibel programmieren lassen kann ? einfacher als in Blockly geht es doch wirklich nicht. Was ist denn dir da zu kompliziert? [image: 1582234078531-blockly_pure.png] Die States sind willkürlich und müssen natürlich aus deinen ausgewählt werden @Bostil sagte in Logik-Programmierung abseits von Blockly / Szenen möglich ?: aber die Optionen in den Szenen sind mir wirklich nicht eindeutig das wird aber einfacher wenn du Szenen nur in "eine Richtung" nutzst. Den Haken bei setze Sollwert für falsch einfach weg lässt. Eventuell liegt es auch an deinen States.
  • Blockly Timeout in Schleife

    blockly
    3
    1
    0 Stimmen
    3 Beiträge
    824 Aufrufe
    C
    @dslraser Ok, super. Danke dass hat mir schon geholfen :) Es ging um eine einfache LED-Lampe, welche mit eigener Infrarot Fernbedienung kommt, und ich über den Harmony Hub ansteuere. Heller und Dunkler sind hier einfach jedes mal ein Tastendruck und ich wollte von einem "Normalen Dimmer" (0-100%) die entsprechende Anzahl der Tastendrücke senden. Aber mit dem Intervall klappt es. Danke!
  • IRobot Roomba Steuerung

    Verschoben
    19
    0 Stimmen
    19 Beiträge
    4k Aufrufe
    smarthomegirlS
    @eric2905 sagte in IRobot Roomba Steuerung: Am node-red-Flow für die Statusinfos habe ich noch was angepasst - die Uhrzeit der Statusabfrage wird nun auch in einen Datenpunkt geschrieben und im Widget mit angezeigt. So sieht man immer, wie alt der angezeigte Status ist. Hier der überarbeitete Flow "Roomba Status" (ist auch im Posting oben angepasst): [{"id":"a5a2adf.f5a5d5","type":"inject","name":"Full Status jede 1 Minute","topic":"","payload":"","payloadType":"date","repeat":"60","crontab":"","once":true,"x":180,"y":62,"z":"7859072e.87a6f8","wires":[["504181f6.afbe8","182e191.fe7d1e7"]]},{"id":"504181f6.afbe8","type":"http request","name":"Roomba command","method":"GET","ret":"txt","url":"http://192.168.178.55/full_status.xml","x":408,"y":63,"z":"7859072e.87a6f8","wires":[["b7123aff.48edc8","3050ead5.cfaf16","6c22b045.93dd5","c8c15059.373eb","205772fb.dfa88e","bee92f3c.4116d","f8aef704.075108","a899536.f5766b","666e081d.9991f8"]]},{"id":"b7123aff.48edc8","type":"function","name":"Name auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<name>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":658,"y":63,"z":"7859072e.87a6f8","wires":[["5f503576.a0afcc"]]},{"id":"5f503576.a0afcc","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.name","ack":"false","autoCreate":"true","x":990,"y":64,"z":"7859072e.87a6f8","wires":[]},{"id":"3050ead5.cfaf16","type":"function","name":"Strecke auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<cleaning_distance>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":664,"y":133,"z":"7859072e.87a6f8","wires":[["b475f945.4b8a08"]]},{"id":"b475f945.4b8a08","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.strecke","ack":"false","autoCreate":"true","x":996,"y":134,"z":"7859072e.87a6f8","wires":[]},{"id":"6c22b045.93dd5","type":"function","name":"Schmutzbehälter auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<bin_status>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":693,"y":191,"z":"7859072e.87a6f8","wires":[["11db5550.ee24ab"]]},{"id":"11db5550.ee24ab","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.schmutzbehaelter","ack":"false","autoCreate":"true","x":1029,"y":193,"z":"7859072e.87a6f8","wires":[]},{"id":"c8c15059.373eb","type":"function","name":"Akkuladung auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<battery_charge>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":666,"y":259,"z":"7859072e.87a6f8","wires":[["8c8c5798.7373a8"]]},{"id":"8c8c5798.7373a8","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.akkuladung","ack":"false","autoCreate":"true","x":1030,"y":260,"z":"7859072e.87a6f8","wires":[]},{"id":"205772fb.dfa88e","type":"function","name":"Akkukapazität (Soll) auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<capacity>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":688,"y":319,"z":"7859072e.87a6f8","wires":[["5c1179c1.a3ee88"]]},{"id":"5c1179c1.a3ee88","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.akkusoll","ack":"false","autoCreate":"true","x":1036,"y":319,"z":"7859072e.87a6f8","wires":[]},{"id":"bee92f3c.4116d","type":"function","name":"Akkukapazität (Ist) auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<charge>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":690,"y":378,"z":"7859072e.87a6f8","wires":[["334dc150.ccb23e"]]},{"id":"334dc150.ccb23e","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.akkuist","ack":"false","autoCreate":"true","x":1026,"y":380,"z":"7859072e.87a6f8","wires":[]},{"id":"f8aef704.075108","type":"function","name":"Temperatur auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<temperature>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":692,"y":436,"z":"7859072e.87a6f8","wires":[["2712b369.d8ed4c"]]},{"id":"2712b369.d8ed4c","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.temperatur","ack":"false","autoCreate":"true","x":1028,"y":438,"z":"7859072e.87a6f8","wires":[]},{"id":"a899536.f5766b","type":"function","name":"Status auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<cleaner_state>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\n\nif (daten == \"st_base\"){\n daten = \"Auf Basis, nicht ladend\";\n}\n\nif (daten == \"st_base_recon\"){\n daten = \"Auf Basis, Auffrischungsladung\";\n}\n\nif (daten == \"st_base_full\"){\n daten = \"Auf Basis, normal aufladend\";\n}\n\nif (daten == \"st_base_trickle\"){\n daten = \"Auf Basis, Erhaltungsladung\";\n}\n\nif (daten == \"st_base_wait\"){\n daten = \"Auf Basis, wartend\";\n}\n\nif (daten == \"st_plug\"){\n daten = \"Eingesteckt, nicht ladend\";\n}\n\nif (daten == \"st_plug_recon\"){\n daten = \"Eingesteckt, Auffrischungsladung\";\n}\n\nif (daten == \"st_plug_full\"){\n daten = \"Eingesteckt, normal aufladend\";\n}\n\nif (daten == \"st_plug_trickle\"){\n daten = \"Eingesteckt, Erhaltungsladung\";\n}\n\nif (daten == \"st_plug_wait\"){\n daten = \"Eingesteckt, wartend\";\n}\n\nif (daten == \"st_stopped\"){\n daten = \"Angehalten\";\n}\n\nif (daten == \"st_clean\"){\n daten = \"Reinigung läuft\";\n}\n\nif (daten == \"st_cleanstop\"){\n daten = \"Reinigung gestoppt\";\n}\n\nif (daten == \"st_clean_spot\"){\n daten = \"Spot-Reinigung\";\n}\n\nif (daten == \"st_clean_max\"){\n daten = \"Max-Reinigung\";\n}\n\nif (daten == \"st_delayed\"){\n daten = \"Reinigung verzögert, startet gleich\";\n}\n\nif (daten == \"st_dock\"){\n daten = \"Suche Basis\";\n}\n\nif (daten == \"st_pickup\"){\n daten = \"Roomba hochgehoben\";\n}\n\nif (daten == \"st_remote\"){\n daten = \"Ferngesteuertes fahren\";\n}\n\nif (daten == \"st_wait\"){\n daten = \"Warte auf Befehle\";\n}\n\nif (daten == \"st_off\"){\n daten = \"Aus\";\n}\n\nif (daten == \"st_error\"){\n daten = \"Fehler\";\n}\n\nif (daten == \"st_locate\"){\n daten = \"Finde mich\";\n}\n\nif (daten == \"st_unknown\"){\n daten = \"Status unbekannt\";\n}\n\n\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":692,"y":497,"z":"7859072e.87a6f8","wires":[["f6e00de3.091ff"]]},{"id":"f6e00de3.091ff","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.status","ack":"false","autoCreate":"true","x":1028,"y":499,"z":"7859072e.87a6f8","wires":[]},{"id":"666e081d.9991f8","type":"function","name":"Saugt gerade auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<cleaning>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":706,"y":556,"z":"7859072e.87a6f8","wires":[["c7157fc8.38ea8"]]},{"id":"c7157fc8.38ea8","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.saugt","ack":"false","autoCreate":"true","x":1042,"y":558,"z":"7859072e.87a6f8","wires":[]},{"id":"182e191.fe7d1e7","type":"function","name":"Status-Uhrzeit ermitteln","func":"msg = {};\n\n\nfunction addZero(i) {\n if (i < 10) {\n i = \"0\" + i;\n }\n return i;\n}\n\n\nvar currentdate = new Date(); \nvar h = addZero(currentdate.getHours());\nvar m = addZero(currentdate.getMinutes());\nvar s = addZero(currentdate.getSeconds());\n\n\nvar datetime = h + \":\" + m + \":\" + s;\n\nmsg.payload = datetime;\nreturn msg;\n","outputs":1,"noerr":0,"x":701,"y":631,"z":"7859072e.87a6f8","wires":[["57efa4f2.a8105c"]]},{"id":"57efa4f2.a8105c","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.Statusuhrzeit","ack":"false","autoCreate":"true","x":1044,"y":636,"z":"7859072e.87a6f8","wires":[]}]</cleaning></cleaner_state></temperature></charge></capacity></battery_charge></bin_status></cleaning_distance></name> Viel Spaß damit :-) Gruß, Eric Hallo @eric2905, beim Importieren des Roomba Status Flows in NodeRed kommt bei mir folgende Fehlermeldung: [image: 1582398518715-479f8357-59e7-432e-b560-48b3598a1392-image.png] Was mache ich da falsch? Wo liegt der Fehler? EDIT: Es darf </cleaning></cleaner_state></temperature></charge></capacity></battery_charge></bin_status></cleaning_distance></name> nicht enthalten sein. Ein Problem habe ich aber trotzdem noch. Ich habe wie beschrieben unter "Roomba command" meine IP Adresse des Saugroboters eingetragen, aber nach dem Deployen bekommt Node Red keine Verbindung. (siehe Bild) So wie es aussieht ist diese Verbindung nicht möglich. [image: 1582403061791-b071a54d-df05-4b8e-acfc-dd74115bef9f-image.png] Der Aufruf dieses Links http://192.168.178.253/full_status.xml ist nicht möglich. [image: 1582404315368-d5db8c82-88f5-47ce-a043-5aeab60e4d13-image.png] Im Log steht folgende Fehlermeldung: Spoiler node-red.0 2020-02-22 21:45:41.561 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:45:41.561 error (2903) 22 Feb 21:45:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:44:41.552 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:44:41.552 error (2903) 22 Feb 21:44:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:43:41.581 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:43:41.581 error (2903) 22 Feb 21:43:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:42:41.561 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:42:41.561 error (2903) 22 Feb 21:42:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:41:41.576 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:41:41.576 error (2903) 22 Feb 21:41:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:41:12.308 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:41:12.308 error (2903) 22 Feb 21:41:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:41:12.138 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:41:12.138 error (2903) 22 Feb 21:41:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:40:12.307 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:40:12.307 error (2903) 22 Feb 21:40:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:40:12.160 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:40:12.160 error (2903) 22 Feb 21:40:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:39:12.353 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:39:12.353 error (2903) 22 Feb 21:39:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:39:12.324 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:39:12.324 error (2903) 22 Feb 21:39:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 Was ist da falsch? Was muss ich da machen?
  • Objekte in Schleife füllen

    blockly
    3
    0 Stimmen
    3 Beiträge
    303 Aufrufe
    Markus K.M
    Ok. Ich habe in einem Datenpunkt einen Farbwert. Jetzt habe ich es so gelöst, wenn ich in VIS den Knopf: Speicher1 drücke, wird der Wert in den Datenpunkt Speicher1 übernommen. Knopf zwei entprechend Speicher2, usw. Kann ich mit Blockly auch, einen Wert n jeweils erhöhen und dann meine Farbe in Speicher(n) ablegen ? Und umgekehrt dann halt eine Schleife die durchzählt, und den wert Speicher1 , Speicher2 ... Speicher(n) nacheinander wieder abruft ?
  • Licht an so lange Bewegung

    blockly
    49
    1
    0 Stimmen
    49 Beiträge
    6k Aufrufe
    T
    Ist alles im Beispiel von dslraser enthalten.
  • mehrere unterschiedliche trigger auf ein Script?

    javascript blockly
    15
    1
    0 Stimmen
    15 Beiträge
    721 Aufrufe
    dslraserD
    @chrbo80 Ich erstelle Datenpunkte mit einen Script von Mic. Wenn Du in die Funktion rein klickst, dann kannst Du ab Zeile 116 den Datenpunkt ändern. So würde der DP jetzt angelegt ['Alexa.Button.Licht_dimmen', {'name': 'Licht Dimmen','type': 'boolean', 'read': true, 'write': true, 'role': 'button','def':false, "smartName": {"de": "Esstischlampe Dimmer","smartType": "SWITCH"} }], Da </> drauf klicken zum änder ab Zeile 116 [image: 1581882234721-bildschirmfoto-2020-02-16-um-20.43.12.png] Der SmartName ist da auch drinn und wird dann automatisch so wie im Script angegeben in iot eingefügt. Du mußt nur einmal anschließend iot öffnen und schauen ob der DP da ist und dann einmal über den Sprachbefehl: Alexa, suche neue Geräte diesen neuen DP suchen lassen. Anschließend kannst Du den als zweiten Trigger in Dein Blockly von oben einfügen. Dann sollte, wenn Du den so wie hier angegeben verwenden würdest, mit: Alexa, Esstischlampe Dimmer an, das Blockly ausgeführt werden. Blockly Export <xml xmlns="http://www.w3.org/1999/xhtml"> <block type="procedures_defcustomnoreturn" id="Q6*2#9#;FNeNnQsQ=FO*" x="12" y="63"> <mutation statements="false"></mutation> <field name="NAME">Datenpunkte_anlegen</field> <field name="SCRIPT">LyoqCiAqIENyZWF0ZSBzdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wIG9yIGphdmFzY3JpcHQueAogKiBDdXJyZW50IFZlcnNpb246ICAgICBodHRwczovL2dpdGh1Yi5jb20vTWljLU0vaW9icm9rZXIuY3JlYXRlVXNlclN0YXRlcwogKiBTdXBwb3J0OiAgICAgICAgICAgICBodHRwczovL2ZvcnVtLmlvYnJva2VyLm5ldC90b3BpYy8yNjgzOS8KICogQXV0b3I6ICAgICAgICAgICAgICAgTWljIChpb0Jyb2tlcikgfCBNaWMtTSAoZ2l0aHViKQogKiBWZXJzaW9uOiAgICAgICAgICAgICAxLjAgKDE3IEphbnVhcnkgMjAyMCkKICogRXhhbXBsZToKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsKICAgICAgICBbJ1Rlc3QuVGVzdDEnLCB7J25hbWUnOidUZXN0IDEnLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonaW5mbycsICdkZWYnOidIZWxsbycgfV0sCiAgICAgICAgWydUZXN0LlRlc3QyJywgeyduYW1lJzonVGVzdCAyJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J2luZm8nLCAnZGVmJzonSGVsbG8nIH1dLAogICAgXTsKICAgIGNyZWF0ZVVzZXJTdGF0ZXMoJzBfdXNlcmRhdGEuMCcsIGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSk7CiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIFBMRUFTRSBOT1RFOiBQZXIgaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCwgdGhlIHVzZWQgZnVuY3Rpb24gc2V0T2JqZWN0KCkgCiAqICAgICAgICAgICAgICBleGVjdXRlcyB0aGUgY2FsbGJhY2sgUFJJT1IgdG8gY29tcGxldGluZyB0aGUgc3RhdGUgY3JlYXRpb24uIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlci4gCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEBwYXJhbSB7c3RyaW5nfSB3aGVyZSAgICAgICAgICBXaGVyZSB0byBjcmVhdGUgdGhlIHN0YXRlOiBlLmcuICcwX3VzZXJkYXRhLjAnIG9yICdqYXZhc2NyaXB0LngnLgogKiBAcGFyYW0ge2Jvb2xlYW59IGZvcmNlICAgICAgICAgRm9yY2Ugc3RhdGUgY3JlYXRpb24gKG92ZXJ3cml0ZSksIGlmIHN0YXRlIGlzIGV4aXN0aW5nLgogKiBAcGFyYW0ge2FycmF5fSBzdGF0ZXNUb0NyZWF0ZSAgU3RhdGUocykgdG8gY3JlYXRlLiBzaW5nbGUgYXJyYXkgb3IgYXJyYXkgb2YgYXJyYXlzCiAqIEBwYXJhbSB7b2JqZWN0fSBbY2FsbGJhY2tdICAgICBPcHRpb25hbDogYSBjYWxsYmFjayBmdW5jdGlvbiAtLSBUaGlzIHByb3ZpZGVkIGZ1bmN0aW9uIHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHN0YXRlcyBhcmUgY3JlYXRlZC4KICovCmZ1bmN0aW9uIGNyZWF0ZVVzZXJTdGF0ZXMod2hlcmUsIGZvcmNlLCBzdGF0ZXNUb0NyZWF0ZSwgY2FsbGJhY2sgPSB1bmRlZmluZWQpIHsKIAogICAgY29uc3QgV0FSTiA9IGZhbHNlOyAvLyBUaHJvd3Mgd2FybmluZyBpbiBsb2csIGlmIHN0YXRlIGlzIGFscmVhZHkgZXhpc3RpbmcgYW5kIGZvcmNlPWZhbHNlLiBEZWZhdWx0IGlzIGZhbHNlLCBzbyBubyB3YXJuaW5nIGluIGxvZywgaWYgc3RhdGUgZXhpc3RzLgogICAgY29uc3QgTE9HX0RFQlVHID0gZmFsc2U7IC8vIFRvIGRlYnVnIHRoaXMgZnVuY3Rpb24sIHNldCB0byB0cnVlCiAgICAvLyBQZXIgaXNzdWUgIzQ3NCAoaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCksIHRoZSB1c2VkIGZ1bmN0aW9uIHNldE9iamVjdCgpIGV4ZWN1dGVzIHRoZSBjYWxsYmFjayAKICAgIC8vIGJlZm9yZSB0aGUgc3RhdGUgaXMgYWN0dWFsIGNyZWF0ZWQuIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlciBhcyBhIHdvcmthcm91bmQuCiAgICAvLyBJbmNyZWFzZSB0aGlzIHRvIDEwMCwgaWYgaXQgaXMgbm90IHdvcmtpbmcuCiAgICBjb25zdCBERUxBWSA9IDUwOyAvLyBEZWxheSBpbiBtaWxsaXNlY29uZHMgKG1zKQoKCiAgICAvLyBWYWxpZGF0ZSAid2hlcmUiCiAgICBpZiAod2hlcmUuZW5kc1dpdGgoJy4nKSkgd2hlcmUgPSB3aGVyZS5zbGljZSgwLCAtMSk7IC8vIFJlbW92ZSB0cmFpbGluZyBkb3QKICAgIGlmICggKHdoZXJlLm1hdGNoKC9eamF2YXNjcmlwdC4oWzAtOV18WzEtOV1bMC05XSkkLykgPT0gbnVsbCkgJiYgKHdoZXJlLm1hdGNoKC9eMF91c2VyZGF0YS4wJC8pID09IG51bGwpICkgewogICAgICAgIGxvZygnVGhpcyBzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCB0byBjcmVhdGUgc3RhdGVzIHVuZGVyIFsnICsgd2hlcmUgKyAnXScsICdlcnJvcicpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBQcmVwYXJlICJzdGF0ZXNUb0NyZWF0ZSIgc2luY2Ugd2UgYWxzbyBhbGxvdyBhIHNpbmdsZSBzdGF0ZSB0byBjcmVhdGUKICAgIGlmKCFBcnJheS5pc0FycmF5KHN0YXRlc1RvQ3JlYXRlWzBdKSkgc3RhdGVzVG9DcmVhdGUgPSBbc3RhdGVzVG9DcmVhdGVdOyAvLyB3cmFwIGludG8gYXJyYXksIGlmIGp1c3Qgb25lIGFycmF5IGFuZCBub3QgaW5zaWRlIGFuIGFycmF5CgogICAgbGV0IG51bVN0YXRlcyA9IHN0YXRlc1RvQ3JlYXRlLmxlbmd0aDsKICAgIGxldCBjb3VudGVyID0gLTE7CiAgICBzdGF0ZXNUb0NyZWF0ZS5mb3JFYWNoKGZ1bmN0aW9uKHBhcmFtKSB7CiAgICAgICAgY291bnRlciArPSAxOwogICAgICAgIGlmIChMT0dfREVCVUcpIGxvZyAoJ1tEZWJ1Z10gQ3VycmVudGx5IHByb2Nlc3NpbmcgZm9sbG93aW5nIHN0YXRlOiBbJyArIHBhcmFtWzBdICsgJ10nKTsKCiAgICAgICAgLy8gQ2xlYW4KICAgICAgICBsZXQgc3RhdGVJZCA9IHBhcmFtWzBdOwogICAgICAgIGlmICghIHN0YXRlSWQuc3RhcnRzV2l0aCh3aGVyZSkpIHN0YXRlSWQgPSB3aGVyZSArICcuJyArIHN0YXRlSWQ7IC8vIGFkZCB3aGVyZSB0byBiZWdpbm5pbmcgb2Ygc3RyaW5nCiAgICAgICAgc3RhdGVJZCA9IHN0YXRlSWQucmVwbGFjZSgvXC4qXC4vZywgJy4nKTsgLy8gcmVwbGFjZSBhbGwgbXVsdGlwbGUgZG90cyBsaWtlICcuLicsICcuLi4nIHdpdGggYSBzaW5nbGUgJy4nCiAgICAgICAgY29uc3QgRlVMTF9TVEFURV9JRCA9IHN0YXRlSWQ7CgogICAgICAgIGlmKCAoJChGVUxMX1NUQVRFX0lEKS5sZW5ndGggPiAwKSAmJiAoZXhpc3RzU3RhdGUoRlVMTF9TVEFURV9JRCkpICkgeyAvLyBXb3JrYXJvdW5kIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vaW9Ccm9rZXIvaW9Ccm9rZXIuamF2YXNjcmlwdC9pc3N1ZXMvNDc4CiAgICAgICAgICAgIC8vIFN0YXRlIGlzIGV4aXN0aW5nLgogICAgICAgICAgICBpZiAoV0FSTiAmJiAhZm9yY2UpIGxvZygnU3RhdGUgWycgKyBGVUxMX1NUQVRFX0lEICsgJ10gaXMgYWxyZWFkeSBleGlzdGluZyBhbmQgd2lsbCBubyBsb25nZXIgYmUgY3JlYXRlZC4nLCAnd2FybicpOwogICAgICAgICAgICBpZiAoIVdBUk4gJiYgTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gU3RhdGUgWycgKyBGVUxMX1NUQVRFX0lEICsgJ10gaXMgYWxyZWFkeSBleGlzdGluZy4gT3B0aW9uIGZvcmNlICg9b3ZlcndyaXRlKSBpcyBzZXQgdG8gWycgKyBmb3JjZSArICddLicpOwoKICAgICAgICAgICAgaWYoIWZvcmNlKSB7CiAgICAgICAgICAgICAgICAvLyBTdGF0ZSBleGlzdHMgYW5kIHNoYWxsIG5vdCBiZSBvdmVyd3JpdHRlbiBzaW5jZSBmb3JjZT1mYWxzZQogICAgICAgICAgICAgICAgLy8gU28sIHdlIGRvIG5vdCBwcm9jZWVkLgogICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07CiAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCEnKTsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7IC8vIGV4ZWN1dGUgaWYgYSBmdW5jdGlvbiB3YXMgcHJvdmlkZWQgdG8gcGFyYW1ldGVyIGNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbiBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB3YXMgcHJvdmlkZWQsIHdoaWNoIHdlIGFyZSBnb2luZyB0byBleGVjdXRlIG5vdy4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIG91dCBhbmQgY29udGludWUgd2l0aCBuZXh0IGVsZW1lbnQgaW4gbG9vcC4KICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE4NDUyOTIwL2NvbnRpbnVlLWluLWN1cnNvci1mb3JlYWNoCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gLy8gaWYoIWZvcmNlKQogICAgICAgIH0KCiAgICAgICAgLyoqKioqKioqKioqKgogICAgICAgICAqIFN0YXRlIGlzIG5vdCBleGlzdGluZyBvciBmb3JjZSA9IHRydWUsIHNvIHdlIGFyZSBjb250aW51aW5nIHRvIGNyZWF0ZSB0aGUgc3RhdGUgdGhyb3VnaCBzZXRPYmplY3QoKS4KICAgICAgICAgKioqKioqKioqKioqLwogICAgICAgIGxldCBvYmogPSB7fTsKICAgICAgICBvYmoudHlwZSA9ICdzdGF0ZSc7CiAgICAgICAgb2JqLm5hdGl2ZSA9IHt9OwogICAgICAgIG9iai5jb21tb24gPSBwYXJhbVsxXTsKICAgICAgICBzZXRPYmplY3QoRlVMTF9TVEFURV9JRCwgb2JqLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgIGxvZygnQ2Fubm90IHdyaXRlIG9iamVjdCBmb3Igc3RhdGUgWycgKyBGVUxMX1NUQVRFX0lEICsgJ106ICcgKyBlcnIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIE5vdyB3ZSBhcmUgY3JlYXRpbmcgbmV3IHN0YXRlIFsnICsgRlVMTF9TVEFURV9JRCArICddJykKICAgICAgICAgICAgICAgIGxldCBpbml0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGlmKHBhcmFtWzFdLmRlZiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYocGFyYW1bMV0udHlwZSA9PT0gJ251bWJlcicpIGluaXQgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmKHBhcmFtWzFdLnR5cGUgPT09ICdib29sZWFuJykgaW5pdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGlmKHBhcmFtWzFdLnR5cGUgPT09ICdzdHJpbmcnKSBpbml0ID0gJyc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGluaXQgPSBwYXJhbVsxXS5kZWY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKEZVTExfU1RBVEVfSUQsIGluaXQsIHRydWUsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gc2V0U3RhdGUgZHVyY2hnZWbDvGhydDogJyArIEZVTExfU1RBVEVfSUQpOwogICAgICAgICAgICAgICAgICAgICAgICBudW1TdGF0ZXMtLTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bVN0YXRlcyA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgcHJvY2Vzc2VkLicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBleGVjdXRlIGlmIGEgZnVuY3Rpb24gd2FzIHByb3ZpZGVkIHRvIHBhcmFtZXRlciBjYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBGdW5jdGlvbiB0byBjYWxsYmFjayBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0sIERFTEFZICsgKDIwICogY291bnRlcikgKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7Cn0KCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsKICAgIFsnQWxleGEuQnV0dG9uLkxpY2h0X2RpbW1lbicsIHsnbmFtZSc6ICdMaWNodCBEaW1tZW4nLCd0eXBlJzogJ2Jvb2xlYW4nLCAncmVhZCc6IHRydWUsICd3cml0ZSc6IHRydWUsICdyb2xlJzogJ2J1dHRvbicsJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIkVzc3Rpc2NobGFtcGUgRGltbWVyIiwic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLCAKCl07ICAgIApjcmVhdGVVc2VyU3RhdGVzKCcwX3VzZXJkYXRhLjAnLCBmYWxzZSwgc3RhdGVzVG9DcmVhdGUpOw==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_callcustomnoreturn" id=")mkV#y*GjLhBQ@,dfLM`" x="13" y="112"> <mutation name="Datenpunkte_anlegen"></mutation> </block> </xml>
  • Simple Szene mit nuki-extended als trigger

    scenes
    2
    0 Stimmen
    2 Beiträge
    158 Aufrufe
    Thomas BraunT
    Hat sich erledigt. Habe immer einen falschen Wert für den Trigger gehabt.

331

Online

32.8k

Benutzer

82.7k

Themen

1.3m

Beiträge