Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. MAX! Cube Blockly Abwesenheit

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    MAX! Cube Blockly Abwesenheit

    This topic has been deleted. Only users with topic management privileges can see it.
    • Marko1974
      Marko1974 @mickym last edited by Marko1974

      @mickym said in MAX! Cube Blockly Abwesenheit:

      @marko1974 sagte in MAX! Cube Blockly Abwesenheit:

      Wenn ich das nicht hätte selbst machen wollen, wäre ich nicht jeden und jeden Tag dran es zu perfektionieren.
      Dann hätte ich mir auch homekit fertige Dinge kaufen können und hätte keinen Stress. Die Möglichkeiten sind immens und so schön individualisierbar.
      Waschmaschine....ein ganz schlechtes Thema

      Vielleicht machen wir es bei den nächsten Flows - der Telegrammausgabe so, dass ich Dir sage, wie man es implementiert - ggf. auch mit Screenshots - aber ich exportiere keine Flows mehr, sondern schau mir nur an, was Du gemacht hast.

      Also bitte ergänze bitte die beiden Objekte aus den beiden Change Nodes mit den zugehörigen Thermostaten und stelle mir hier die JSON Strings zur Verfügung - das wäre mal ein guter Anfang.

      Ich mache das morgen....jetzt ist wieder Bettzeit.
      Bin schon wieder arg drüber.

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @Marko1974 last edited by

        @marko1974 Ok dann schlaf gut - ich werde versuchen den restlichen Flow zu erläutern. Bin auch morgen abend erst so wieder zwischen 21 und 22 Uhr wieder da. 😉 Ansonsten am Nachmittag falls was ist.

        Marko1974 mickym 2 Replies Last reply Reply Quote 0
        • Marko1974
          Marko1974 @mickym last edited by

          @mickym said in MAX! Cube Blockly Abwesenheit:

          @marko1974 Ok dann schlaf gut - ich werde versuchen den restlichen Flow zu erläutern. Bin auch morgen abend erst so wieder zwischen 21 und 22 Uhr wieder da. 😉 Ansonsten am Nachmittag falls was ist.

          😍

          1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @mickym last edited by mickym

            @mickym

            @marko1974 So also die Heizung Switch Node verteilt die Nachrichten auf die einzelnen Heizungen, in dem

            71a2adb5-10ec-478c-a378-9ea01b1eea36-image.png

            die room Eigenschaft des msg. Objektes analysieren.

            In den einzelnen Heizungen switch Nodes wird nun der aktuelle Modus analysiert:

            274133f5-9be4-41e2-bfc4-f516dc3309f3-image.png

            Je nachdem was für ein Modus aktiv ist wird das Nachrichtenobjekt an die verschiedenen Ausgänge geleitet und ausser der AUTO Modus Node. Dieser AUTO Mode hat zu den manuellen Modi 2 zustätzliche Aufgaben:

            1. Die Temperatur soll nach einem Zeitschema geändert werden
            2. Der Auto-Mode soll aktiv übernehmen, auch wenn aus einem anderen Mode nach AUTO gewechselt wurde.

            Punkt 2 hat gestern nicht funktioniert, da die AUTO Node (also die Subflow Node) überhaupt nicht mitbekommen hat, wenn wieder auf AUTO gewechselt wurde. Das erste Mal hat der AUTO Node funktioniert, dann wurde auf OFF umgestellt, hat auch funktioniert dann wieder auf AUTO zurückgestellt und es kam nichts mehr raus. 😞 - Nun war mir zwar klar warum, aber am Anfang war die Lösung, wie die AUTO Node den Modewechsel mitbekommt trotzdem nicht so einfach.
            Im Prinzip hätte AUTO erst wieder übernommen, wenn eine neue Zeitperiode aktiv wird. Sprich wenn man von OFF auf AUTO gewechselt hat und die aktuelle Zeitperiode von 9-22 Uhr anhält, wäre nach Anwesenheit von OFF auf AUTO erst um 22 Uhr wieder ein Wechsel stattgefunden. Da am Anfang nur jede Node, die Nachrichten empfing für dessen Mode sie bestimmt war hat die AUTO Node nie mitbekommen, dass zwischenzeitlich ein anderen Mode eingestellt war und deshalb kein Temperatur verschickt, weil sich ja nichts geändert hat und generell ja nur Änderungen verschickt werden.

            Stellt man hingegen einen der anderen 3 Modes ein - ist das weniger tragisch. Hier wird nur dann weitergeleitet, wenn sich eine andere Temperatur ergibt. Wenn aber HEAT und ECO beispielsweise die gleiche Temperatur aufweist ist das egal, weil nichts geschickt werden muss, weil wenn nichts gesendet wird es auch egal ist, wenn sich der Modus geändert hat - in beiden Fällen wird nichts gesendet. Es wird also keine Temperatur verschickt, wenn sich diese durch den Modus nicht ändert. Also wenn man den Modus von HEAT auf ECO und umgekehrt wechselt und beide auf die gleiche Temperatur eingestellt sind, wird keine Nachricht an den setpoint des Thermostats verschickt.

            Die Auto Node hat aber nicht die unterschiedliche Temperatur als Kriterium für das Versenden von Nachrichten, sondern nur ein Wechsel der Zeitperiode.

            Deswegen stand ich gestern vor der Herausforderung, wie ich es bewerkstellige, dass die AUTO Nodes ein Wechsel des Modus mitbekommen. Da das aber in einem Subflow ist - funktioniert das auch mit den Kontextvariablen nicht so einfach. Nach einer Stunde hatte ich dann den Geistesblitz erst mal alle Nachrichten - nicht nur die mit der Eigenschaft mode=AUTO an die Subflow Node also an die AUTO Node weiterzureichen.
            Das heisst auch alle Nachrichten im mode=HEAT,ECO oder OFF gehen auch an die AUTO node. Deswegen wird beim ersten Ausgang der Heizungsnode einfach nur gepüft, ob das Nachrichtenobjekt nicht leer ist und das trifft ja auf alle Nachrichten zu. (Vorher stand eben für den ersten Ausgang für den mode = AUTO drin analog zu den anderen Modi).

            d6fcb57d-2b05-4bef-9be6-1bca178df198-image.png

            So nun schauen wir erst mal die Subflows - also die AUTO Nodes an - und war erst mal im Hinblick auf die Behandlung des Moduswechsels.

            Hier nochmal in der Subflow in ganzer Ansicht:

            67468164-7178-4101-87e1-13ee391435f6-image.png

            Wichtig sind die beiden switch Nodes - die als Filter dienen und die parallel angeordnet sind und somit wie bei einem Schaltplan (deswegen wieder eine Stärke dieses Tools) auch grafisch einer ODER Verknüpfung gleich zu setzen ist.

            Die payload wird über die Temperatur gesetzt - ansonsten bleibt das originale Nachrichten aber erhalten. 🙂 🙂 und das ist in diesem Fall genial .

            Eine rbe Node scheidet auf, weil hier nur auf Werteänderung der payload geprüft wird.

            Schauen wir uns also als nächstes das Nachrichtenobjekt an, dass aus so einer Temperaturnode herauskommt, die ja wie folgt definiert ist:

            Sie definiert ein payload Objekt mit der zur jeweiligen Periode zugrhörigen Temperatur:

            2c35c705-c8f1-4969-b082-be6ae68cdeff-image.png

            WIchtig ist also - wie das Nachrichtenobjekt der Temperatur-Nodes aussieht:

            143cdd7b-6149-4d6e-a091-31bfbc164049-image.png

            8a4e53c6-0e73-46df-9b1d-7fafa7d5ae98-image.png

            Unten sieht man das payload object, die als Zahl die aktuelle Periode enthält.

            Ursprünglich war also nur die switch Node da - die geprüft hat, ob sich die Periode geändert hat, das hätte auch eine rbe Node gekonnt. Nun musste ich einen Umgehungsweg finde, wie trotzdem eine Nachricht weitergeleitet wenn sich der modus geändert hat.

            Deshalb werden 2 unterschiedliche Bereiche des Nachrichtenobjektes untersucht und das konnte mit 2 parallel geschalteten Switch Node erreicht werden, die auf Werteänderung einmal der Periode

            6699cfdd-b713-430c-82ec-01bc060f2af5-image.png

            und einmal des modes prüfen:

            1cde09a2-2971-441a-bc6b-e75cb6fa8dd5-image.png

            Wird eine der beiden Bedingungen erfüllt - wird nun die Nachricht weitergeleitet. Nun da ja alle Nachrichten dort ankommen, werden nun ja auch Nachrichten durchgelassen, die beim Moduswechsel zwischen 2 anderen mode's
            erfolgen (also ECO und OFF). Um diese Nachrichten nicht durchzulassen, werden diese dann am Ende ausgefiltert, sodass die AUTO Nodes nichts ausspuken:

            bb76de01-0ce2-4321-b163-1e64d0d98c0f-image.png

            7039cdcb-0712-428c-a81d-79bdb164d481-image.png

            Dieses Mal muss die 2. switch Node in Serie geschaltet werden - um eine UND Verknüpfung zu implementieren. Es muss also ein Moduswechsel stattgefunden haben und die mode Eigenschaft AUTO aufweisen, damit der untere Weg die Nachricht durchlässt.

            So zum Schluss noch eine kurze Erklärung der restlichen Nodes damit die Nachricht bzw. das msg.Objekt an der richtigen Temperaturnode ausggeben wird - hier gibts ein paar Tricks - die ich selbst erst mal rausgefunden habe, um den Flow einigermaßen übersichtlich zu halten:

            Als erstes wird ein neues payload Objekt generiert und zwar mit einer sehr mächtigen JSONATA Funktion:
            Die erste Change Node erzeugt folgendes payload Objekt der aktuellen Uhrzeit und des aktuellen Wochentags - wenn ein Nachricht in die AUTO Node kommt.

            7734d1d4-bb54-4cbe-bf52-9a5c5da01088-image.png b203b43e-da6e-4f18-9cdf-d1944abf1af0-image.png

            Die Change Node ist wie folgt aufgebaut:

            131f40ae-0094-45c9-9c57-8f88d476ec07-image.png

            Über die beiden unteren Regel werden 2 Datumsobjekte des aktuellen Zeitpunkts generiert und im ersten Objekt der Wochentag extrahiert mit dem Format "dddd" und der payload Eigenschaft weekday zugewiesen und mit dem Format "HH:mm" der payload Eigenschaft time zugewiesen.

            Wenn man in der Change Mode bei dem JSONATA auf die 3 Punkte klickt - dann kann man den Befehl editieren und sieht auch die ganzen JSONATA Funktionien, die hier genutzt werden können:

            In diesem Fall ist die Beschreibung der $moment Funktion eher spärlich:

            0575154f-1f26-4cc7-b070-6f4fd6b4a23c-image.png

            Hier eine Webseite - welche Funktionen die Moment Library beschreibt:

            https://momentjs.com/docs/#/displaying/format/
            Hier die verwendeten Formate kurz hervorgehoben:

            8aeb8e0b-27f5-45d9-8885-46056aa3fd3c-image.png

            So nun noch die nächste switch Node - um mal zu zeigen, wie man reguläre Ausdrücke in switch Nodes auch anders nutzen kann. 😉

            Anstelle von 7 Ausgängen für jeden Wochentag und Verkabelung mit einem Zeitschema - kann man auch nur die Anzahl der benötigten Ausdrücke definieren und regEX nutzen indem man einfach die zu match (enden) Wörter mit ODER verknüpft:

            3a44fe27-a2dd-4bee-9e65-d50d6854d9ae-image.png

            die richtige Temperatur mit dem richtige Ausgang wird über die folgende Switch Node gesetzt wobei hier String Vergleiche aber mit Bereichen sehr einfach implementiert werden können:

            b5a23ebc-26ad-4f75-a2d7-0df8e61bc0e6-image.png

            So wir nähern uns dem Ende. 😉

            Bei den anderen Modi wird die Temperatur einfach auf die eingelesenen Werte oder einen konstanten Wert für OFF gesetzt:

            OFF wird einfach auf einen konstanten Zahlenwert, also auf 4.5 gesetzt:

            0b64557d-b60f-4ee3-b9d8-622d4bad58cb-image.png

            Bei eingelesenen Werten wird die payload auf die eingelesenen Werte und somit auf die im Nachrichtenobjekt mitgeführten Eigenschaften ausserhalb des payload Objektes gesetzt:

            392c3e47-f092-4041-bfb8-03f8c7a185ac-image.png

            So nun der Ausgänge des Hauptflows je Heizung:

            78beac16-922c-4975-aa72-76138e3b3429-image.png

            Aus allen 4 Nodes kommt also ein Zahlenwert raus, der die Temperatur darstellt, der für den setpoint des DP des MAXCube Adapters geschickt werden soll. Allerdings nur wenn die Temperatur verändert ist, sonst würde alle Minute ein Temperaturwert für jedes Thermostat geschickt und spätesten nach 10 Minuten ist der DutyCycle vor - deswegen oberste Prio bei diesem Flow war - nur wirklich notwendige Nachrichten zu verschicken.

            Die rbe Node lässt grundsätzlich nur veränderte Werte durch und enthält den letzten gesetzten Temperaturwert.
            Wie oben schon erwähnt, wenn zwischen den manuellen Modi gewechselt wird und die Temperatur nicht geändert wird muss auch kein Nachricht gesendet wird.

            Setzt man also die ECO Temperatur im Datenpunkt unter userdata auf 4,5°C und wechselt zwischen ECO und OFF - wird keine Nachricht gesendet usw. .

            Die AUTO Node hat zum einen Bypass - da ja der Zeitplan weiter aktiv bleiben muss. Wenn man die Temperatur des AUTO Nodes nur in die rbe Node fließen lassen wurde, dann würde das auch beim Wechsel der Periode geblockt, wenn die nächste Temperaturänderung der letzten Temperatur eines AUTO Modus übereinstimmt. Sprich war der letzte manuelle Modus als HEAT 22°C und die aktuelle Periode im AUTO Modus ist auch 22°C würde keine Nachricht weiter geleitet.

            Wir wollten ja, dass wenn man mit ALEXA einen neue Temperatur setzen als 24°C, dass das AUTO Programm weiter aktiv wird und wir nicht den manuellen Modus ausschalten müssen, da der MAX Cube Adapter immer auf den manuellen Modus umschaltet, sobald eine Temperatur gesetzt wird. Dies ist und war ja der Hauptgrund warum wir den ganzen Aufwand betreiben - weil es nicht gewünscht war, dass man aktiv wieder vom manuellen Modus wieder in den AUTO Modus schalten muss.
            Da ALEXA ja direkt den setpoint des Thermostates setzt, soll ja bei nächsten Wechsel der Zeitperiode die Temperatur des AUTO Plans aktiv sein und das geht nur, wenn die AUTO Node senden kann, egal welchen Wert die letzte Temperatur eines manuellen Modus war.

            So das war die Begründung warum ein Kabel aus der AUTO Node die rbe Node umgeht. Warum muss man trotzdem die AUTO Node mit der rbe Node verbinden?

            In der rbe steht ja immer ein Temperaturwert und der muss sich ändern, um die Nachricht weiterzuleiten. Wenn man die Nachricht aus der AUTO Node einfach direkt weiterschickt - war ja im ursprünglichen Flow so und die rbe die gesetzte Temperatur des AUTO Nodes nicht mitbekommt, dann passiert folgendes.
            Es wird auf Modus OFF gesetzt, rbe Node enthält 4.5°C - Nachricht wird geschickt, weil die rbe Node ja noch nicht initialisiert war und es noch keinen Vorgängerwert gibt. Nun wird auf AUTO umgeschaltet - es wird direkt 17°C an den setpoint des Thermostats geschickt. Nun schaltet man wieder auf OFF. Es wird keine Nachricht geschickt, da dort ja immer noch 4,5°C steht. Also wird die rbe Node auch mit der Temperatur der AUTO Nodes versorgt. Damit wird beim Zurückschalten auf OFF die NAchricht wieder weitergeleitet, weil nun in der rbe Node ja die 17°C der Auto Node stehen und die 4,5°C ja nun wieder eine Wertänderung darstellt.

            So und nun die Entprell-Node - eine Trigger Node - die genialste Node im gesamten NodeRed System - weil die für so viele Anwendungsfälle verwendet werden kann.
            Nun in diesem Fall werden ja aus dem AutoNode ein NAchrichtenobjekt beim Wechsel in den AUTO Mode einmal in die rbe Node geschickt und einmal direkt an die Verzögerungsnode. Es würden also 2 mal die gleichen Nachrichten mit der gleichen Temperatur geschickt. Das kann man zwar eigentlich vernachlässigen, aber um halt sicherzustellen, dass nur eine Nachricht verschickt wird - prüft man einfach, dass wenn innerhalb eines bestimmten Zeitraums nur 1 Nachricht verschickt wird.

            Deshalb ist die Trigger Node (also die Entprellen Node) wie folgt konfiguriert.

            3a8d7295-9697-431c-9139-10b77269db67-image.png

            So als erstes kommt die Nachricht von der AUTO Node direkt in die Trigger Node und kurz darauf von der rbe Node. Die trigger Node wartet also 1 Sekunde und innerhalb dieser Sekunde 2 Nachrichten reinkommen, wird nur die letzte Nachricht geschickt.

            Eigentlich ist das ein unnötige Verzögerung. Im Prinzip kann man die Trigger Node umgekehrt konfigurieren:

            442f9283-3205-438f-b935-f33c6f825da7-image.png

            In diesem Fall wird die Nachricht aus der AUTO Node sofort und ohne Zeitverzögerung weitergeleitet. Die Nachricht der rbe Node die innerhalb einer Sekunde kommt, wird weggeschmissen. Das Intervall wird ausgedehnt wenn immer weitere Nachrichten kommen - das heißt jedes Dauerfeuer wird unterbrochen.

            Zum Schluss werden alle Nachrichten mit einer halben Sekunde Verzögerung verschickt. Da die Heizungen ja parallel arbeiten - laufen die also in einer Node zusammen und werden dort in einer Queue gespeichert und dann mit gebremster Geschwindigkeit weitergeleitet.

            So nun habe ich den Flow erklärt. Ich habe versucht sowohl die Funktion der Nodes zu erklären, aber auch die Logik, die in dem Flow steckt. Wichtig dafür ist aber wirklich, dass man sich voll auf diese Logik konzentriert, wenn sich da ablenken lässt - dann gibt es zuviele Logikfehler. Ich hoffe das wurde deutlich in dem ich versucht habe diverse Szenarien logisch in dem Flow durchzuspielen.

            So nun habe ich fertig. 😅 😅 😅 😅

            Und nochmal ein Tipp - wenn ich mir Eure Waschmaschinen- Blocklies anschaue. Überleg Dir mal wieviel Komfort so eine TriggerNode oder eine Aggregator Node für Dich bieten würde. 😉 Lies Dir mal die Hilfe zu diesen Nodes durch.

            1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active @Marko1974 last edited by

              @marko1974 Nach dem Du ja beim Thema Waschmaschine schon wieder mit Blocklies unterwegs bist, scheinen Dich ja meine Tipps am Ende meiner Flow Beschreibung weniger zu interessieren.

              Um Dir die Möglichkeiten der Split Node auch in Zusammenhang mit einer JOIN Node zu demonstrieren - habe ich im folgendem Flow mal ein paar Beispiele zusammen gefasst:

              [
                 {
                     "id": "c8872a87.997ae8",
                     "type": "inject",
                     "z": "f51578d8.868868",
                     "name": "All OFF -JS Objekt(JSON)",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "{\"Kinderzimmer\":{\"mode\":\"OFF\"},\"Schlafzimmer\":{\"mode\":\"OFF\"},\"Wohnzimmer\":{\"mode\":\"OFF\"},\"Flur\":{\"mode\":\"OFF\"},\"Küche\":{\"mode\":\"OFF\"},\"Badezimmer\":{\"mode\":\"OFF\"}}",
                     "payloadType": "json",
                     "x": 990,
                     "y": 780,
                     "wires": [
                         [
                             "f3062735.80d058",
                             "125e1468.8fbd0c",
                             "4d20e55f.3e7b0c"
                         ]
                     ]
                 },
                 {
                     "id": "3c719b28.ea0e14",
                     "type": "inject",
                     "z": "f51578d8.868868",
                     "name": "Array",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "[\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\",\"Sonntag\"]",
                     "payloadType": "json",
                     "x": 1050,
                     "y": 860,
                     "wires": [
                         [
                             "f3062735.80d058",
                             "125e1468.8fbd0c",
                             "4d20e55f.3e7b0c"
                         ]
                     ]
                 },
                 {
                     "id": "f7725813.8a2f28",
                     "type": "inject",
                     "z": "f51578d8.868868",
                     "name": "JS Objekt (JSON)",
                     "props": [
                         {
                             "p": "heizung",
                             "v": "{\"name\":\"Schlafzimmerthermo xyz\",\"mode\":\"AUTO\",\"setpointtemperature\":20}",
                             "vt": "json"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payloadType": "str",
                     "x": 1010,
                     "y": 720,
                     "wires": [
                         [
                             "f3062735.80d058",
                             "125e1468.8fbd0c",
                             "4d20e55f.3e7b0c"
                         ]
                     ]
                 },
                 {
                     "id": "f3062735.80d058",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "Originaler Input",
                     "active": false,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "true",
                     "targetType": "full",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1260,
                     "y": 760,
                     "wires": []
                 },
                 {
                     "id": "b9decd2d.f55e",
                     "type": "inject",
                     "z": "f51578d8.868868",
                     "name": "string - also Text",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "Die Heizung im Kinderzimmer ist auf 17°C eingestellt - Die Heizung im Wohnzimmer ist auf 22°C eingestellt - Die Heizung im Schlafzimmer ist auf 17°C eingestellt - Im Flur wir nie geheizt - In der Küche ist es immer warm",
                     "payloadType": "str",
                     "x": 1020,
                     "y": 920,
                     "wires": [
                         [
                             "f3062735.80d058",
                             "125e1468.8fbd0c",
                             "4d20e55f.3e7b0c"
                         ]
                     ]
                 },
                 {
                     "id": "7d86d57b.46709c",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "Aufgeteilter Input ",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "true",
                     "targetType": "full",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1450,
                     "y": 940,
                     "wires": []
                 },
                 {
                     "id": "125e1468.8fbd0c",
                     "type": "split",
                     "z": "f51578d8.868868",
                     "name": "",
                     "splt": "- ",
                     "spltType": "str",
                     "arraySplt": 1,
                     "arraySpltType": "len",
                     "stream": false,
                     "addname": "",
                     "x": 1240,
                     "y": 1020,
                     "wires": [
                         [
                             "7d86d57b.46709c",
                             "44a7b809.4203c8",
                             "32b92a90.0878d6"
                         ]
                     ]
                 },
                 {
                     "id": "44a7b809.4203c8",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "Aufgeteilter Input ",
                     "active": false,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1450,
                     "y": 980,
                     "wires": []
                 },
                 {
                     "id": "4d20e55f.3e7b0c",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "Originaler Input",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1260,
                     "y": 800,
                     "wires": []
                 },
                 {
                     "id": "32b92a90.0878d6",
                     "type": "join",
                     "z": "f51578d8.868868",
                     "name": "",
                     "mode": "auto",
                     "build": "string",
                     "property": "payload",
                     "propertyType": "msg",
                     "key": "topic",
                     "joiner": "\\n",
                     "joinerType": "str",
                     "accumulate": "false",
                     "timeout": "",
                     "count": "",
                     "reduceRight": false,
                     "x": 1410,
                     "y": 1060,
                     "wires": [
                         [
                             "353ca7c0.fc6f78",
                             "a394b548.7ee2d8"
                         ]
                     ]
                 },
                 {
                     "id": "353ca7c0.fc6f78",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "Wieder zusammengesetzer Input ",
                     "active": false,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "true",
                     "targetType": "full",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1660,
                     "y": 1060,
                     "wires": []
                 },
                 {
                     "id": "a394b548.7ee2d8",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "Wieder zusammengesetzer Input ",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1660,
                     "y": 1100,
                     "wires": []
                 },
                 {
                     "id": "42a3c2d7.6305ac",
                     "type": "inject",
                     "z": "f51578d8.868868",
                     "name": "Array",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "[\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\",\"Sonntag\"]",
                     "payloadType": "json",
                     "x": 1030,
                     "y": 1240,
                     "wires": [
                         [
                             "135a2676.aa76fa"
                         ]
                     ]
                 },
                 {
                     "id": "135a2676.aa76fa",
                     "type": "split",
                     "z": "f51578d8.868868",
                     "name": "",
                     "splt": "- ",
                     "spltType": "str",
                     "arraySplt": 1,
                     "arraySpltType": "len",
                     "stream": false,
                     "addname": "",
                     "x": 1170,
                     "y": 1240,
                     "wires": [
                         [
                             "855a4de2.cdf7a",
                             "686ea273.c66dac"
                         ]
                     ]
                 },
                 {
                     "id": "686ea273.c66dac",
                     "type": "join",
                     "z": "f51578d8.868868",
                     "name": "",
                     "mode": "reduce",
                     "build": "string",
                     "property": "payload",
                     "propertyType": "msg",
                     "key": "topic",
                     "joiner": "\\n",
                     "joinerType": "str",
                     "accumulate": false,
                     "timeout": "",
                     "count": "",
                     "reduceRight": false,
                     "reduceExp": "$A & payload & \" - \"",
                     "reduceInit": "",
                     "reduceInitType": "str",
                     "reduceFixup": "$substring($A,0,$length($A)-3)\t",
                     "x": 1470,
                     "y": 1240,
                     "wires": [
                         [
                             "18140ac7.295275"
                         ]
                     ]
                 },
                 {
                     "id": "18140ac7.295275",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "Wieder zusammengesetzer Input ",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1700,
                     "y": 1240,
                     "wires": []
                 },
                 {
                     "id": "855a4de2.cdf7a",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "Aufgeteilter Input ",
                     "active": false,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1350,
                     "y": 1180,
                     "wires": []
                 },
                 {
                     "id": "f4ba6b18.c94338",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "false",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 830,
                     "y": 1040,
                     "wires": []
                 },
                 {
                     "id": "aeeb109c.d84fe",
                     "type": "inject",
                     "z": "f51578d8.868868",
                     "name": "Array",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "[1,2,3]",
                     "payloadType": "json",
                     "x": 1010,
                     "y": 1580,
                     "wires": [
                         [
                             "8c6e0a94.c66b58"
                         ]
                     ]
                 },
                 {
                     "id": "8c6e0a94.c66b58",
                     "type": "split",
                     "z": "f51578d8.868868",
                     "name": "",
                     "splt": "- ",
                     "spltType": "str",
                     "arraySplt": 1,
                     "arraySpltType": "len",
                     "stream": false,
                     "addname": "",
                     "x": 1150,
                     "y": 1580,
                     "wires": [
                         [
                             "7550a747.916db8",
                             "f29be1a0.4b39b"
                         ]
                     ]
                 },
                 {
                     "id": "f29be1a0.4b39b",
                     "type": "join",
                     "z": "f51578d8.868868",
                     "name": "",
                     "mode": "reduce",
                     "build": "string",
                     "property": "payload",
                     "propertyType": "msg",
                     "key": "topic",
                     "joiner": "\\n",
                     "joinerType": "str",
                     "accumulate": false,
                     "timeout": "",
                     "count": "",
                     "reduceRight": false,
                     "reduceExp": "$A + payload",
                     "reduceInit": "0",
                     "reduceInitType": "num",
                     "reduceFixup": "",
                     "x": 1450,
                     "y": 1580,
                     "wires": [
                         [
                             "244872b6.57050e"
                         ]
                     ]
                 },
                 {
                     "id": "244872b6.57050e",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "Wieder zusammengesetzer Input ",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1680,
                     "y": 1580,
                     "wires": []
                 },
                 {
                     "id": "7550a747.916db8",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "Aufgeteilter Input ",
                     "active": false,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1330,
                     "y": 1520,
                     "wires": []
                 },
                 {
                     "id": "d236e710.7db608",
                     "type": "inject",
                     "z": "f51578d8.868868",
                     "name": "Array",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "[\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\",\"Sonntag\"]",
                     "payloadType": "json",
                     "x": 1010,
                     "y": 1400,
                     "wires": [
                         [
                             "f3df0c37.b2496"
                         ]
                     ]
                 },
                 {
                     "id": "f3df0c37.b2496",
                     "type": "split",
                     "z": "f51578d8.868868",
                     "name": "",
                     "splt": "- ",
                     "spltType": "str",
                     "arraySplt": 1,
                     "arraySpltType": "len",
                     "stream": false,
                     "addname": "",
                     "x": 1150,
                     "y": 1400,
                     "wires": [
                         [
                             "8d977bbd.932998",
                             "46f88853.8d5f18"
                         ]
                     ]
                 },
                 {
                     "id": "ca8a83d6.fc65f",
                     "type": "join",
                     "z": "f51578d8.868868",
                     "name": "",
                     "mode": "auto",
                     "build": "string",
                     "property": "payload",
                     "propertyType": "msg",
                     "key": "topic",
                     "joiner": "\\n",
                     "joinerType": "str",
                     "accumulate": false,
                     "timeout": "",
                     "count": "",
                     "reduceRight": false,
                     "reduceExp": "$A & payload & \" - \"",
                     "reduceInit": "",
                     "reduceInitType": "str",
                     "reduceFixup": "$substring($A,0,$length($A)-3)\t",
                     "x": 1450,
                     "y": 1400,
                     "wires": [
                         [
                             "998db142.16b6c"
                         ]
                     ]
                 },
                 {
                     "id": "998db142.16b6c",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "Wieder zusammengesetzer Input ",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1680,
                     "y": 1400,
                     "wires": []
                 },
                 {
                     "id": "8d977bbd.932998",
                     "type": "debug",
                     "z": "f51578d8.868868",
                     "name": "Aufgeteilter Input ",
                     "active": false,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1330,
                     "y": 1340,
                     "wires": []
                 },
                 {
                     "id": "46f88853.8d5f18",
                     "type": "change",
                     "z": "f51578d8.868868",
                     "name": "translate",
                     "rules": [
                         {
                             "t": "change",
                             "p": "payload",
                             "pt": "msg",
                             "from": "Montag",
                             "fromt": "str",
                             "to": "Monday",
                             "tot": "str"
                         },
                         {
                             "t": "change",
                             "p": "payload",
                             "pt": "msg",
                             "from": "Dienstag",
                             "fromt": "str",
                             "to": "Tuesday",
                             "tot": "str"
                         },
                         {
                             "t": "change",
                             "p": "payload",
                             "pt": "msg",
                             "from": "Mittwoch",
                             "fromt": "str",
                             "to": "Wednesday",
                             "tot": "str"
                         },
                         {
                             "t": "change",
                             "p": "payload",
                             "pt": "msg",
                             "from": "Donnerstag",
                             "fromt": "str",
                             "to": "Thursday",
                             "tot": "str"
                         },
                         {
                             "t": "change",
                             "p": "payload",
                             "pt": "msg",
                             "from": "Freitag",
                             "fromt": "str",
                             "to": "Friday",
                             "tot": "str"
                         },
                         {
                             "t": "change",
                             "p": "payload",
                             "pt": "msg",
                             "from": "Samstag",
                             "fromt": "str",
                             "to": "Saturday",
                             "tot": "str"
                         },
                         {
                             "t": "change",
                             "p": "payload",
                             "pt": "msg",
                             "from": "Sonntag",
                             "fromt": "str",
                             "to": "Sunday",
                             "tot": "str"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 1300,
                     "y": 1400,
                     "wires": [
                         [
                             "ca8a83d6.fc65f"
                         ]
                     ]
                 },
                 {
                     "id": "62fa32cf.d5b37c",
                     "type": "comment",
                     "z": "f51578d8.868868",
                     "name": "Lies mich",
                     "info": "Warum das Ganze - erst splitten dann wieder zusammensetzen. Nun damit kann man die einzelnen Werte bearbeiten und wieder zusammensetzen. Jedoch muss Anzahl identisch bleiben - das heißt die parts müssen gleich bleiben",
                     "x": 880,
                     "y": 1320,
                     "wires": []
                 },
                 {
                     "id": "a57f4164.a432",
                     "type": "comment",
                     "z": "f51578d8.868868",
                     "name": "Lies mich",
                     "info": "msg.parts anschauen - die split Node generiert hat:\n\nschau Dir an:\n\nmsg.parts.count\nmsg.parts.index",
                     "x": 1420,
                     "y": 880,
                     "wires": []
                 }
              ]
              

              Ansonsten dann bis später am Abend.

              Marko1974 1 Reply Last reply Reply Quote 0
              • Marko1974
                Marko1974 @mickym last edited by

                @mickym said in MAX! Cube Blockly Abwesenheit:

                @marko1974 Nach dem Du ja beim Thema Waschmaschine schon wieder mit Blocklies unterwegs bist, scheinen Dich ja meine Tipps am Ende meiner Flow Beschreibung weniger zu interessieren.

                Um Dir die Möglichkeiten der Split Node auch in Zusammenhang mit einer JOIN Node zu demonstrieren - habe ich im folgendem Flow mal ein paar Beispiele zusammen gefasst:

                [
                   {
                       "id": "c8872a87.997ae8",
                       "type": "inject",
                       "z": "f51578d8.868868",
                       "name": "All OFF -JS Objekt(JSON)",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "{\"Kinderzimmer\":{\"mode\":\"OFF\"},\"Schlafzimmer\":{\"mode\":\"OFF\"},\"Wohnzimmer\":{\"mode\":\"OFF\"},\"Flur\":{\"mode\":\"OFF\"},\"Küche\":{\"mode\":\"OFF\"},\"Badezimmer\":{\"mode\":\"OFF\"}}",
                       "payloadType": "json",
                       "x": 990,
                       "y": 780,
                       "wires": [
                           [
                               "f3062735.80d058",
                               "125e1468.8fbd0c",
                               "4d20e55f.3e7b0c"
                           ]
                       ]
                   },
                   {
                       "id": "3c719b28.ea0e14",
                       "type": "inject",
                       "z": "f51578d8.868868",
                       "name": "Array",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "[\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\",\"Sonntag\"]",
                       "payloadType": "json",
                       "x": 1050,
                       "y": 860,
                       "wires": [
                           [
                               "f3062735.80d058",
                               "125e1468.8fbd0c",
                               "4d20e55f.3e7b0c"
                           ]
                       ]
                   },
                   {
                       "id": "f7725813.8a2f28",
                       "type": "inject",
                       "z": "f51578d8.868868",
                       "name": "JS Objekt (JSON)",
                       "props": [
                           {
                               "p": "heizung",
                               "v": "{\"name\":\"Schlafzimmerthermo xyz\",\"mode\":\"AUTO\",\"setpointtemperature\":20}",
                               "vt": "json"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payloadType": "str",
                       "x": 1010,
                       "y": 720,
                       "wires": [
                           [
                               "f3062735.80d058",
                               "125e1468.8fbd0c",
                               "4d20e55f.3e7b0c"
                           ]
                       ]
                   },
                   {
                       "id": "f3062735.80d058",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "Originaler Input",
                       "active": false,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "true",
                       "targetType": "full",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1260,
                       "y": 760,
                       "wires": []
                   },
                   {
                       "id": "b9decd2d.f55e",
                       "type": "inject",
                       "z": "f51578d8.868868",
                       "name": "string - also Text",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "Die Heizung im Kinderzimmer ist auf 17°C eingestellt - Die Heizung im Wohnzimmer ist auf 22°C eingestellt - Die Heizung im Schlafzimmer ist auf 17°C eingestellt - Im Flur wir nie geheizt - In der Küche ist es immer warm",
                       "payloadType": "str",
                       "x": 1020,
                       "y": 920,
                       "wires": [
                           [
                               "f3062735.80d058",
                               "125e1468.8fbd0c",
                               "4d20e55f.3e7b0c"
                           ]
                       ]
                   },
                   {
                       "id": "7d86d57b.46709c",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "Aufgeteilter Input ",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "true",
                       "targetType": "full",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1450,
                       "y": 940,
                       "wires": []
                   },
                   {
                       "id": "125e1468.8fbd0c",
                       "type": "split",
                       "z": "f51578d8.868868",
                       "name": "",
                       "splt": "- ",
                       "spltType": "str",
                       "arraySplt": 1,
                       "arraySpltType": "len",
                       "stream": false,
                       "addname": "",
                       "x": 1240,
                       "y": 1020,
                       "wires": [
                           [
                               "7d86d57b.46709c",
                               "44a7b809.4203c8",
                               "32b92a90.0878d6"
                           ]
                       ]
                   },
                   {
                       "id": "44a7b809.4203c8",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "Aufgeteilter Input ",
                       "active": false,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1450,
                       "y": 980,
                       "wires": []
                   },
                   {
                       "id": "4d20e55f.3e7b0c",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "Originaler Input",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1260,
                       "y": 800,
                       "wires": []
                   },
                   {
                       "id": "32b92a90.0878d6",
                       "type": "join",
                       "z": "f51578d8.868868",
                       "name": "",
                       "mode": "auto",
                       "build": "string",
                       "property": "payload",
                       "propertyType": "msg",
                       "key": "topic",
                       "joiner": "\\n",
                       "joinerType": "str",
                       "accumulate": "false",
                       "timeout": "",
                       "count": "",
                       "reduceRight": false,
                       "x": 1410,
                       "y": 1060,
                       "wires": [
                           [
                               "353ca7c0.fc6f78",
                               "a394b548.7ee2d8"
                           ]
                       ]
                   },
                   {
                       "id": "353ca7c0.fc6f78",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "Wieder zusammengesetzer Input ",
                       "active": false,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "true",
                       "targetType": "full",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1660,
                       "y": 1060,
                       "wires": []
                   },
                   {
                       "id": "a394b548.7ee2d8",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "Wieder zusammengesetzer Input ",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1660,
                       "y": 1100,
                       "wires": []
                   },
                   {
                       "id": "42a3c2d7.6305ac",
                       "type": "inject",
                       "z": "f51578d8.868868",
                       "name": "Array",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "[\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\",\"Sonntag\"]",
                       "payloadType": "json",
                       "x": 1030,
                       "y": 1240,
                       "wires": [
                           [
                               "135a2676.aa76fa"
                           ]
                       ]
                   },
                   {
                       "id": "135a2676.aa76fa",
                       "type": "split",
                       "z": "f51578d8.868868",
                       "name": "",
                       "splt": "- ",
                       "spltType": "str",
                       "arraySplt": 1,
                       "arraySpltType": "len",
                       "stream": false,
                       "addname": "",
                       "x": 1170,
                       "y": 1240,
                       "wires": [
                           [
                               "855a4de2.cdf7a",
                               "686ea273.c66dac"
                           ]
                       ]
                   },
                   {
                       "id": "686ea273.c66dac",
                       "type": "join",
                       "z": "f51578d8.868868",
                       "name": "",
                       "mode": "reduce",
                       "build": "string",
                       "property": "payload",
                       "propertyType": "msg",
                       "key": "topic",
                       "joiner": "\\n",
                       "joinerType": "str",
                       "accumulate": false,
                       "timeout": "",
                       "count": "",
                       "reduceRight": false,
                       "reduceExp": "$A & payload & \" - \"",
                       "reduceInit": "",
                       "reduceInitType": "str",
                       "reduceFixup": "$substring($A,0,$length($A)-3)\t",
                       "x": 1470,
                       "y": 1240,
                       "wires": [
                           [
                               "18140ac7.295275"
                           ]
                       ]
                   },
                   {
                       "id": "18140ac7.295275",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "Wieder zusammengesetzer Input ",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1700,
                       "y": 1240,
                       "wires": []
                   },
                   {
                       "id": "855a4de2.cdf7a",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "Aufgeteilter Input ",
                       "active": false,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1350,
                       "y": 1180,
                       "wires": []
                   },
                   {
                       "id": "f4ba6b18.c94338",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "false",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 830,
                       "y": 1040,
                       "wires": []
                   },
                   {
                       "id": "aeeb109c.d84fe",
                       "type": "inject",
                       "z": "f51578d8.868868",
                       "name": "Array",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "[1,2,3]",
                       "payloadType": "json",
                       "x": 1010,
                       "y": 1580,
                       "wires": [
                           [
                               "8c6e0a94.c66b58"
                           ]
                       ]
                   },
                   {
                       "id": "8c6e0a94.c66b58",
                       "type": "split",
                       "z": "f51578d8.868868",
                       "name": "",
                       "splt": "- ",
                       "spltType": "str",
                       "arraySplt": 1,
                       "arraySpltType": "len",
                       "stream": false,
                       "addname": "",
                       "x": 1150,
                       "y": 1580,
                       "wires": [
                           [
                               "7550a747.916db8",
                               "f29be1a0.4b39b"
                           ]
                       ]
                   },
                   {
                       "id": "f29be1a0.4b39b",
                       "type": "join",
                       "z": "f51578d8.868868",
                       "name": "",
                       "mode": "reduce",
                       "build": "string",
                       "property": "payload",
                       "propertyType": "msg",
                       "key": "topic",
                       "joiner": "\\n",
                       "joinerType": "str",
                       "accumulate": false,
                       "timeout": "",
                       "count": "",
                       "reduceRight": false,
                       "reduceExp": "$A + payload",
                       "reduceInit": "0",
                       "reduceInitType": "num",
                       "reduceFixup": "",
                       "x": 1450,
                       "y": 1580,
                       "wires": [
                           [
                               "244872b6.57050e"
                           ]
                       ]
                   },
                   {
                       "id": "244872b6.57050e",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "Wieder zusammengesetzer Input ",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1680,
                       "y": 1580,
                       "wires": []
                   },
                   {
                       "id": "7550a747.916db8",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "Aufgeteilter Input ",
                       "active": false,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1330,
                       "y": 1520,
                       "wires": []
                   },
                   {
                       "id": "d236e710.7db608",
                       "type": "inject",
                       "z": "f51578d8.868868",
                       "name": "Array",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "[\"Montag\",\"Dienstag\",\"Mittwoch\",\"Donnerstag\",\"Freitag\",\"Samstag\",\"Sonntag\"]",
                       "payloadType": "json",
                       "x": 1010,
                       "y": 1400,
                       "wires": [
                           [
                               "f3df0c37.b2496"
                           ]
                       ]
                   },
                   {
                       "id": "f3df0c37.b2496",
                       "type": "split",
                       "z": "f51578d8.868868",
                       "name": "",
                       "splt": "- ",
                       "spltType": "str",
                       "arraySplt": 1,
                       "arraySpltType": "len",
                       "stream": false,
                       "addname": "",
                       "x": 1150,
                       "y": 1400,
                       "wires": [
                           [
                               "8d977bbd.932998",
                               "46f88853.8d5f18"
                           ]
                       ]
                   },
                   {
                       "id": "ca8a83d6.fc65f",
                       "type": "join",
                       "z": "f51578d8.868868",
                       "name": "",
                       "mode": "auto",
                       "build": "string",
                       "property": "payload",
                       "propertyType": "msg",
                       "key": "topic",
                       "joiner": "\\n",
                       "joinerType": "str",
                       "accumulate": false,
                       "timeout": "",
                       "count": "",
                       "reduceRight": false,
                       "reduceExp": "$A & payload & \" - \"",
                       "reduceInit": "",
                       "reduceInitType": "str",
                       "reduceFixup": "$substring($A,0,$length($A)-3)\t",
                       "x": 1450,
                       "y": 1400,
                       "wires": [
                           [
                               "998db142.16b6c"
                           ]
                       ]
                   },
                   {
                       "id": "998db142.16b6c",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "Wieder zusammengesetzer Input ",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1680,
                       "y": 1400,
                       "wires": []
                   },
                   {
                       "id": "8d977bbd.932998",
                       "type": "debug",
                       "z": "f51578d8.868868",
                       "name": "Aufgeteilter Input ",
                       "active": false,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1330,
                       "y": 1340,
                       "wires": []
                   },
                   {
                       "id": "46f88853.8d5f18",
                       "type": "change",
                       "z": "f51578d8.868868",
                       "name": "translate",
                       "rules": [
                           {
                               "t": "change",
                               "p": "payload",
                               "pt": "msg",
                               "from": "Montag",
                               "fromt": "str",
                               "to": "Monday",
                               "tot": "str"
                           },
                           {
                               "t": "change",
                               "p": "payload",
                               "pt": "msg",
                               "from": "Dienstag",
                               "fromt": "str",
                               "to": "Tuesday",
                               "tot": "str"
                           },
                           {
                               "t": "change",
                               "p": "payload",
                               "pt": "msg",
                               "from": "Mittwoch",
                               "fromt": "str",
                               "to": "Wednesday",
                               "tot": "str"
                           },
                           {
                               "t": "change",
                               "p": "payload",
                               "pt": "msg",
                               "from": "Donnerstag",
                               "fromt": "str",
                               "to": "Thursday",
                               "tot": "str"
                           },
                           {
                               "t": "change",
                               "p": "payload",
                               "pt": "msg",
                               "from": "Freitag",
                               "fromt": "str",
                               "to": "Friday",
                               "tot": "str"
                           },
                           {
                               "t": "change",
                               "p": "payload",
                               "pt": "msg",
                               "from": "Samstag",
                               "fromt": "str",
                               "to": "Saturday",
                               "tot": "str"
                           },
                           {
                               "t": "change",
                               "p": "payload",
                               "pt": "msg",
                               "from": "Sonntag",
                               "fromt": "str",
                               "to": "Sunday",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 1300,
                       "y": 1400,
                       "wires": [
                           [
                               "ca8a83d6.fc65f"
                           ]
                       ]
                   },
                   {
                       "id": "62fa32cf.d5b37c",
                       "type": "comment",
                       "z": "f51578d8.868868",
                       "name": "Lies mich",
                       "info": "Warum das Ganze - erst splitten dann wieder zusammensetzen. Nun damit kann man die einzelnen Werte bearbeiten und wieder zusammensetzen. Jedoch muss Anzahl identisch bleiben - das heißt die parts müssen gleich bleiben",
                       "x": 880,
                       "y": 1320,
                       "wires": []
                   },
                   {
                       "id": "a57f4164.a432",
                       "type": "comment",
                       "z": "f51578d8.868868",
                       "name": "Lies mich",
                       "info": "msg.parts anschauen - die split Node generiert hat:\n\nschau Dir an:\n\nmsg.parts.count\nmsg.parts.index",
                       "x": 1420,
                       "y": 880,
                       "wires": []
                   }
                ]
                

                Ansonsten dann bis später am Abend.

                Ich hab da halt schon fertige Sachen gehabt und passe die nur an. Was komplett neu machen wollte ich da eigentlich nicht. Das blockly war ja schon fertig.

                mickym 1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @Marko1974 last edited by

                  @marko1974 sagte in MAX! Cube Blockly Abwesenheit:

                  Ich hab da halt schon fertige Sachen gehabt und passe die nur an. Was komplett neu machen wollte ich da eigentlich nicht. Das blockly war ja schon fertig.

                  Na wenn es funktioniert ist ja gut - ich hab ja nur den Eindruck - noch nicht so wie gewünscht. 😉

                  Marko1974 1 Reply Last reply Reply Quote 0
                  • Marko1974
                    Marko1974 @mickym last edited by

                    @mickym said in MAX! Cube Blockly Abwesenheit:

                    @marko1974 sagte in MAX! Cube Blockly Abwesenheit:

                    Ich hab da halt schon fertige Sachen gehabt und passe die nur an. Was komplett neu machen wollte ich da eigentlich nicht. Das blockly war ja schon fertig.

                    Na wenn es funktioniert ist ja gut - ich hab ja nur den Eindruck - noch nicht so wie gewünscht. 😉

                    Der Eindruck könnte stimmen 😵

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Marko1974 last edited by

                      @marko1974 sagte in MAX! Cube Blockly Abwesenheit:

                      @mickym said in MAX! Cube Blockly Abwesenheit:

                      @marko1974 sagte in MAX! Cube Blockly Abwesenheit:

                      Ich hab da halt schon fertige Sachen gehabt und passe die nur an. Was komplett neu machen wollte ich da eigentlich nicht. Das blockly war ja schon fertig.

                      Na wenn es funktioniert ist ja gut - ich hab ja nur den Eindruck - noch nicht so wie gewünscht. 😉

                      Der Eindruck könnte stimmen 😵

                      Na nachdem Ausschalten des Knitterschutzes jetzt sicher kein Problem mehr. 😉

                      Marko1974 1 Reply Last reply Reply Quote 0
                      • Marko1974
                        Marko1974 @mickym last edited by

                        @mickym said in MAX! Cube Blockly Abwesenheit:

                        @marko1974 sagte in MAX! Cube Blockly Abwesenheit:

                        @mickym said in MAX! Cube Blockly Abwesenheit:

                        @marko1974 sagte in MAX! Cube Blockly Abwesenheit:

                        Ich hab da halt schon fertige Sachen gehabt und passe die nur an. Was komplett neu machen wollte ich da eigentlich nicht. Das blockly war ja schon fertig.

                        Na wenn es funktioniert ist ja gut - ich hab ja nur den Eindruck - noch nicht so wie gewünscht. 😉

                        Der Eindruck könnte stimmen 😵

                        Na nachdem Ausschalten des Knitterschutzes jetzt sicher kein Problem mehr. 😉

                        Wäscht gerade zum 4 Mal 🙂

                        Marko1974 1 Reply Last reply Reply Quote 0
                        • Marko1974
                          Marko1974 @Marko1974 last edited by

                          @mickym
                          habs jetzt hinbekommen

                          1 Reply Last reply Reply Quote 0
                          • Marko1974
                            Marko1974 @mickym last edited by Marko1974

                            @mickym said in MAX! Cube Blockly Abwesenheit:

                            @mickym Wohlfühltemperaturen habe ich nun anhand des AutoTemplates verstanden.
                            Wenn Du diese Telegramm Ausgabe mti den setpoint Temperaturen auslesen möchtest - solltest Du diese Info das auszulesende Topic - mit vollständigem Pfad einfügen:

                            Ich würde am Besten fallst Du das mit dem Auslesen der originalen setpoint Temperaturen übernehmen willst - die Objekte um diese Eigenschaft ergänzen. Das würde ich aber dann bei beiden Change Nodes machen.

                            d53d980b-f4fd-4749-8e72-cdfbb5f6563f-image.png

                            Hab die Pfade mal eingetragen:

                            fdf.JPG
                            dsfsdf.JPG

                            irgendwie ist das ja nicht alles....entweder muss ich jetzt auch noch so ne Art Topic haben....oder der Pfad muss doch zumindest das .setpoint am Ende haben?!

                            mickym 2 Replies Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @Marko1974 last edited by mickym

                              @marko1974 Ja - aber den setpoint können wir doch an den String anhängen. Mit dem Thermostat Pfad haben wir nun aber schon mal den Basispfad und können damit auch noch andere Punkte als setpoint ansprechen, wenn dafür später Bedarf ist.

                              Wenn Du mir die beiden JSONs bitte hier in CodeTags zur Verfügung stellst - kann ich die in meinem Testflow nutzen - auch wenn Du jetzt die Nodes alle selbst erstellst.

                              Marko1974 1 Reply Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @Marko1974 last edited by

                                @marko1974 sagte in MAX! Cube Blockly Abwesenheit:

                                irgendwie ist das ja nicht alles....entweder muss ich jetzt auch noch so ne Art Topic haben....oder der Pfad muss doch zumindest das .setpoint am Ende haben?!

                                Nein das ist noch lange nicht alles - aber nachdem Du anderen Flow und die Split Node verstanden hast, wirst Du den Flow selbst entwicklen und ich gebe Dir die Anleitung dazu.

                                1 Reply Last reply Reply Quote 0
                                • Marko1974
                                  Marko1974 @mickym last edited by

                                  @mickym said in MAX! Cube Blockly Abwesenheit:

                                  @marko1974 Ja - aber den setpoint können wir doch an den String anhängen. Mit dem Thermostat Pfad haben wir nun aber schon mal den Basispfad und können damit auch noch andere Punkte als setpoint ansprechen, wenn dafür später Bedarf ist.

                                  Wenn Du mir die beiden JSONs bitte hier in CodeTags zur Verfügung stellst - kann ich die in meinem Testflow nutzen - auch wenn Du jetzt die Nodes alle selbst erstellst.

                                  für ECO

                                  {
                                      "Kinderzimmer": {
                                          "mode": "ECO",
                                          "thermostat": "maxcube.0.devices.thermostat_0dbe6c"
                                      },
                                      "Schlafzimmer": {
                                          "mode": "ECO",
                                          "thermostat": "maxcube.0.devices.thermostat_0b39f5"
                                      },
                                      "Wohnzimmer": {
                                          "mode": "ECO",
                                          "thermostat": "maxcube.0.devices.thermostat_0d1718"
                                      },
                                      "Flur": {
                                          "mode": "ECO",
                                          "thermostat": "maxcube.0.devices.thermostat_0dc05e"
                                      },
                                      "Küche": {
                                          "mode": "ECO",
                                          "thermostat": "maxcube.0.devices.thermostat_0df97e"
                                      },
                                      "Badezimmer": {
                                          "mode": "ECO",
                                          "thermostat": "maxcube.0.devices.thermostat_0dfa5c"
                                      }
                                  }
                                  
                                  

                                  für Auto

                                  {
                                      "Kinderzimmer": {
                                          "mode": "AUTO",
                                          "thermostat": "maxcube.0.devices.thermostat_0dbe6c"
                                      },
                                      "Schlafzimmer": {
                                          "mode": "AUTO",
                                          "thermostat": "maxcube.0.devices.thermostat_0b39f5"
                                      },
                                      "Wohnzimmer": {
                                          "mode": "AUTO",
                                          "thermostat": "maxcube.0.devices.thermostat_0d1718"
                                      },
                                      "Flur": {
                                          "mode": "AUTO",
                                          "thermostat": "maxcube.0.devices.thermostat_0dc05e"
                                      },
                                      "Küche": {
                                          "mode": "AUTO",
                                          "thermostat": "maxcube.0.devices.thermostat_0df97e"
                                      },
                                      "Badezimmer": {
                                          "mode": "AUTO",
                                          "thermostat": "maxcube.0.devices.thermostat_0dfa5c"
                                      }
                                  }
                                  
                                  mickym 1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @Marko1974 last edited by mickym

                                    @marko1974 OK - dann setzt Du nun eine weitere Change Node hinter die split Node und setzt den topic String so zusammen, dass das topic den vollständigen Pfad zum setpoint Datenpunkt enthält. Am besten immer ein Debug Node mit dem vollständigen Objekt ausgeben lassen.

                                    Der Output der Nachricht für jeden Thermostat muss dann so aussehen, dass im room der Raum und im topic der Pfad zu dem zugrhöhrigenen setpoint des koorespondierenden Thermostats im setpoint zeigt:

                                    b451bd13-8a3b-4a61-98e5-05b1e2b85d3f-image.png

                                    Marko1974 1 Reply Last reply Reply Quote 0
                                    • Marko1974
                                      Marko1974 @mickym last edited by

                                      @mickym said in MAX! Cube Blockly Abwesenheit:

                                      @marko1974 OK - dann setzt Du nun eine weitere Change Node hinter die split Node und setzt den topic String so zusammen, dass das topic den vollständigen Pfad zum setpoint Datenpunkt enthält. Am besten immer ein Debug Node mit dem vollständigen Objekt ausgeben lassen.

                                      Der Output der Nachricht für jeden Thermostat muss dann so aussehen, dass im room der Raum und im topic der Pfad zu dem zugrhöhrigenen setpoint des koorespondierenden Thermostats im setpoint zeigt:

                                      b451bd13-8a3b-4a61-98e5-05b1e2b85d3f-image.png

                                      Verstehe ich nicht. die eine change node bleibt stehen und ich setze ne neue zusammen?

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @Marko1974 last edited by mickym

                                        @marko1974 Ja - wo ist das Problem - wir wollen doch eine Telegram Nachricht erzeugen, wenn Abwesenheit eintritt? - Wenn Du Dir nicht sicher bist schicke einen Screenshot - aber der output schaut doch gut aus - die bisherigen Nodes darfst Du natürlich nicht anfassen.

                                        screen.png

                                        Marko1974 1 Reply Last reply Reply Quote 0
                                        • Marko1974
                                          Marko1974 @mickym last edited by Marko1974

                                          @mickym ja so hab ich das...bin beim topic ich will ja alle auslesen

                                          mickym 1 Reply Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active @Marko1974 last edited by mickym

                                            @marko1974 sagte in MAX! Cube Blockly Abwesenheit:

                                            @mickym ja so hab ich das...bin beim topic ich will ja alle auslesen

                                            Genau nun ein iobroker get Node und damit liest Du alle setpoints aus. Die payload sollte nun alle Themperaturen der setpoints aus den verschiedenen Topics enthalten.

                                            Marko1974 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            423
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            867
                                            160161
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo