Steveorevo / node-red-flow2src

This node will write template and function node source code properties to a src sub-folder adjacent to the project's flows file; allowing for easy editing in external editors.
MIT License
3 stars 0 forks source link

Thx #2

Open garosp opened 2 weeks ago

garosp commented 2 weeks ago

Hi I test your flow in an instance with multiple function-nodes and subflows. I got only two of the subflows in my src-directory. I don't understand why only this two were exported. They are in the last tab among others. thx

Steveorevo commented 2 weeks ago

If you can reproduce the issue in a flow you can share; that'd be ideal. Note the options to include specific flows (comma separated, by name) or the default * to include all tabs.

garosp commented 2 weeks ago

I hope I use your flow the right way. I choose a tab of my flow copy flow2src, deploy and "Flow-to-Src" but there are no source-files in src. When I do this in another tab, this one contains some subflows, two of them are stored in src. As I mentioned, but only two of many. Node-red is running as docker service with nfs mounted storage. The src-directory is created in project folder. Can it be a serialization problem - nfs storage vs. local storage. I start the browser in developer-mode, I can see no errors. Enclosed my sample.

[image.png] [ { "id": "a2d739a76027584d", "type": "tab", "label": "Weather", "disabled": false, "info": "", "env": [] }, { "id": "b1fafb2a5f6a3eac", "type": "junction", "z": "a2d739a76027584d", "x": 620, "y": 160, "wires": [ [ "81975d40eb6b2568" ] ] }, { "id": "f74e6e92619c4784", "type": "junction", "z": "a2d739a76027584d", "x": 1060, "y": 160, "wires": [ [ "435503a904936e5c" ] ] }, { "id": "cd645d8ad0816f6b", "type": "function", "z": "a2d739a76027584d", "name": "Url", "func": "var lat = \"50.887672\"\nvar lon = \"7.2525857\"\nconst days = 7\nmsg.url = https://api.open-meteo.com/v1/forecast?latitude=${lat}&longitude=${lon}&hourly=temperature_2m,relativehumidity_2m,surface_pressure&temperature_unit=celsius&windspeed_unit=mph&precipitation_unit=inch&timezone=Europe%2FBerlin&past_days=${days}&forecast_days=1;\n\nreturn msg;", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 690, "y": 100, "wires": [ [ "6d7abaf088410600" ] ] }, { "id": "6d7abaf088410600", "type": "http request", "z": "a2d739a76027584d", "name": "", "method": "GET", "ret": "obj", "paytoqs": "ignore", "url": "", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 830, "y": 100, "wires": [ [ "e3c72a9e84392ebd" ] ] }, { "id": "e3c72a9e84392ebd", "type": "function", "z": "a2d739a76027584d", "name": "Result", "func": "var time = msg.payload.hourly.time;\n\nvar temp = msg.payload.hourly.temperature_2m;\nvar humidity = msg.payload.hourly.relativehumidity_2m;\nvar pressure = msg.payload.hourly.surface_pressure;\n\nvar data = [];\n\nfor (var i = 0; i < time.length; i++) {\n data.push({\n time: time[i],\n temp: temp[i],\n humidity: humidity[i],\n pressure: pressure[i],\n });\n}\n\nmsg = { \"payload\": data };\n\nreturn msg;", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 970, "y": 100, "wires": [ [ "435503a904936e5c" ] ] }, { "id": "81975d40eb6b2568", "type": "change", "z": "a2d739a76027584d", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "[]", "tot": "json" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 810, "y": 160, "wires": [ [ "f74e6e92619c4784" ] ] }, { "id": "435503a904936e5c", "type": "ui-chart", "z": "a2d739a76027584d", "group": "e71a3317c8aaa474", "name": "", "label": "Historic Temperature", "order": 1, "chartType": "line", "category": "Temperature", "categoryType": "str", "xAxisLabel": "", "xAxisProperty": "time", "xAxisPropertyType": "property", "xAxisType": "time", "xAxisFormat": "", "xAxisFormatType": "auto", "xmin": "", "xmax": "", "yAxisLabel": "", "yAxisProperty": "temp", "yAxisPropertyType": "property", "ymin": "", "ymax": "", "bins": "", "action": "replace", "stackSeries": false, "pointShape": "line", "pointRadius": "", "showLegend": true, "removeOlder": 1, "removeOlderUnit": "3600", "removeOlderPoints": "", "colors": [ "#1f77b4", "#aec7e8", "#ff7f0e", "#2ca02c", "#98df8a", "#d62728", "#ff9896", "#9467bd", "#c5b0d5" ], "textColor": [ "#666666" ], "textColorDefault": true, "gridColor": [ "#e5e5e5" ], "gridColorDefault": true, "width": "6", "height": "6", "className": "", "x": 1200, "y": 100, "wires": [ [] ] }, { "id": "aef50145bdaa960a", "type": "link in", "z": "a2d739a76027584d", "name": "Page event In", "links": [ "5159917b5a424f5a" ], "x": 95, "y": 100, "wires": [ [ "23dd059ff8c482d1" ] ] }, { "id": "23dd059ff8c482d1", "type": "switch", "z": "a2d739a76027584d", "name": "Pageview ?", "property": "topic", "propertyType": "msg", "rules": [ { "t": "eq", "v": "$pageview", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 270, "y": 100, "wires": [ [ "8ed60103781325fe" ] ] }, { "id": "8ed60103781325fe", "type": "switch", "z": "a2d739a76027584d", "name": "Weather ?", "property": "payload.page.name", "propertyType": "msg", "rules": [ { "t": "eq", "v": "Weather", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 490, "y": 100, "wires": [ [ "cd645d8ad0816f6b", "b1fafb2a5f6a3eac" ] ] }, { "id": "5c00097d322e6519", "type": "ui-event", "z": "a2d739a76027584d", "ui": "f68a4799e6be2b60", "name": "", "x": 250, "y": 320, "wires": [ [ "f15db3364ded2375" ] ] }, { "id": "f15db3364ded2375", "type": "debug", "z": "a2d739a76027584d", "name": "debug 83", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 420, "y": 320, "wires": [] }, { "id": "c00a35e630360853", "type": "inject", "z": "a2d739a76027584d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 240, "y": 40, "wires": [ [ "cd645d8ad0816f6b" ] ] }, { "id": "e494f71c9ba23da5", "type": "flow2src", "z": "a2d739a76027584d", "name": "", "incFlows": "", "incSubflows": "", "srcFolder": "src", "chkAutoFlow2Src": false, "x": 980, "y": 240, "wires": [] }, { "id": "e71a3317c8aaa474", "type": "ui-group", "name": "Sensors", "page": "e4db8a5958754a61", "width": "6", "height": "1", "order": 1, "className": "", "visible": true, "disabled": false }, { "id": "f68a4799e6be2b60", "type": "ui-base", "name": "Dashboard", "path": "/dashboard", "appIcon": "", "includeClientData": true, "acceptsClientConfig": [ "ui-control", "ui-notification" ], "showPathInSidebar": false, "showPageTitle": true, "navigationStyle": "icon", "titleBarStyle": "default" }, { "id": "e4db8a5958754a61", "type": "ui-page", "name": "Weather", "ui": "f68a4799e6be2b60", "path": "/weather", "icon": "weather-partly-snowy-rainy", "layout": "grid", "theme": "074b315414230834", "order": 4, "className": "", "visible": true, "disabled": "false" }, { "id": "074b315414230834", "type": "ui-theme", "name": "White", "colors": { "surface": "#ffffff", "primary": "#0094ce", "bgPage": "#eeeeee", "groupBg": "#ffffff", "groupOutline": "#cccccc" }, "sizes": { "pagePadding": "12px", "groupGap": "12px", "groupBorderRadius": "4px", "widgetGap": "12px" } }]

Sicher versendet mit Proton Mail.

Stephen J. Carnam @.***> schrieb am Mittwoch, 16. Oktober 2024 um 20:57:

If you can reproduce the issue in a flow you can share; that'd be ideal. Note the options to include specific flows (comma separated, by name) or the default * to include all tabs.

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

Steveorevo commented 2 weeks ago

Based on the flow you gave me, I only see two function nodes on a flow tab called "Weather"; after deploying and pressing Flow-to-Src, I get a src folder with Weather subfolder, and the two function nodes. My project name is "Scratch". Please see the screenshot below. I am using Flow2Src version 1.2.1.

Screenshot 2024-10-16 at 12 34 57 PM
garosp commented 2 weeks ago

That is what I would expect ;-) I send you a smaller flow as a sample. I can send you the one with the subflows that are exported.

[image.png]

[ { "id": "8bfb514b42039228", "type": "subflow", "name": "MQ Prepare Message", "info": "", "category": "", "in": [ { "x": 100, "y": 100, "wires": [ { "id": "736a5a0651b14f18" } ] } ], "out": [ { "x": 500, "y": 100, "wires": [ { "id": "736a5a0651b14f18", "port": 0 } ] } ], "env": [], "meta": {}, "color": "#DDAA99" }, { "id": "736a5a0651b14f18", "type": "function", "z": "8bfb514b42039228", "name": "Prepare MQ-Message", "func": "var actor = msg.topic.split(\"/\")[4];\nvar family = msg.topic.split(\"/\")[3];\n\nmsg.sensor = msg.topic;\nmsg.actor = \"/actor/\" + actor;\nmsg.value = msg.payload.value;\nmsg.type = msg.topic.split(\"/\")[5];\nmsg.content = { \"sensor\": actor, \"value\": msg.value, \"submitter\": \"nodeRED\" }\nmsg.payload = msg.value;\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 300, "y": 100, "wires": [ [] ] }, { "id": "acae54dd600a7b11", "type": "subflow", "name": "MQ Script-Eingang", "info": "", "category": "", "in": [], "out": [ { "x": 700, "y": 60, "wires": [ { "id": "9c86ca46dccbb0fa", "port": 0 } ] }, { "x": 700, "y": 120, "wires": [ { "id": "44f218de2b94592d", "port": 0 } ] } ], "env": [], "meta": {}, "color": "#DDAA99" }, { "id": "aa1c3e851b871451", "type": "mqtt in", "z": "acae54dd600a7b11", "name": "Script", "topic": "/sensor/script/SCRIPT/#", "qos": "2", "datatype": "auto-detect", "broker": "934b8dd7c4c27ee7", "nl": false, "rap": false, "inputs": 0, "x": 130, "y": 100, "wires": [ [ "5c5ea1a492c8c608" ] ] }, { "id": "5c5ea1a492c8c608", "type": "switch", "z": "acae54dd600a7b11", "name": "Skript ?", "property": "$split(topic, \"/\")[4]", "propertyType": "jsonata", "rules": [ { "t": "eq", "v": "DELETE_SENSOR", "vt": "str" }, { "t": "eq", "v": "INSERT_SENSOR", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 320, "y": 100, "wires": [ [ "9c86ca46dccbb0fa" ], [ "44f218de2b94592d" ] ] }, { "id": "9c86ca46dccbb0fa", "type": "function", "z": "acae54dd600a7b11", "name": "delete Global", "func": "global.set(\"domotics['\" + msg.payload.sensor.toLowerCase() + \"']\", undefined);\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 530, "y": 60, "wires": [ [] ] }, { "id": "44f218de2b94592d", "type": "function", "z": "acae54dd600a7b11", "name": "insert Global", "func": "global.set(\"domotics['\" + msg.payload.sensor.toLowerCase() + \"']\", msg.payload.data);\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 530, "y": 120, "wires": [ [] ] }, { "id": "934b8dd7c4c27ee7", "type": "mqtt-broker", "z": "acae54dd600a7b11", "name": "broker", "broker": "tasks.mosquitto", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" }, { "id": "d8f4d61e31c1af63", "type": "subflow", "name": "MQ Actor-Ausgang", "info": "", "category": "", "in": [ { "x": 100, "y": 100, "wires": [ { "id": "b56764c0eef27d2f" } ] } ], "out": [], "env": [], "meta": {}, "color": "#DDAA99" }, { "id": "b56764c0eef27d2f", "type": "mqtt out", "z": "d8f4d61e31c1af63", "name": "MQTT Publish", "topic": "", "qos": "", "retain": "", "respTopic": "", "contentType": "", "userProps": "", "correl": "", "expiry": "", "broker": "1e046eac681a0591", "x": 260, "y": 100, "wires": [] }, { "id": "1e046eac681a0591", "type": "mqtt-broker", "z": "d8f4d61e31c1af63", "name": "broker", "broker": "tasks.mosquitto", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" }, { "id": "a37a25765b5bec67", "type": "subflow", "name": "MQ Sensor-Eingang", "info": "", "category": "", "in": [], "out": [ { "x": 1220, "y": 80, "wires": [ { "id": "336866c291a738fc", "port": 0 } ] }, { "x": 1220, "y": 80, "wires": [ { "id": "336866c291a738fc", "port": 1 } ] }, { "x": 1220, "y": 80, "wires": [ { "id": "336866c291a738fc", "port": 2 } ] } ], "env": [], "meta": {}, "color": "#DDAA99" }, { "id": "df5a64053079f117", "type": "mqtt in", "z": "a37a25765b5bec67", "name": "Sensoren", "topic": "/sensor/+/+/+/#", "qos": "2", "datatype": "auto", "broker": "b51ff744ced1de40", "nl": false, "rap": false, "inputs": 0, "x": 200, "y": 80, "wires": [ [ "02e27cdae8216ea6" ] ] }, { "id": "02e27cdae8216ea6", "type": "switch", "z": "a37a25765b5bec67", "name": "Valid ?", "property": "payload", "propertyType": "msg", "rules": [ { "t": "istype", "v": "json", "vt": "json" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 390, "y": 80, "wires": [ [ "a22ba0eb7684f0d5" ] ] }, { "id": "a22ba0eb7684f0d5", "type": "json", "z": "a37a25765b5bec67", "name": " 2Object", "property": "payload", "action": "obj", "pretty": false, "x": 580, "y": 80, "wires": [ [ "aea4902bf6f8b1c8" ] ] }, { "id": "aea4902bf6f8b1c8", "type": "function", "z": "a37a25765b5bec67", "name": "Update domotics", "func": "var actor = msg.topic.split(\"/\")[4]; \nvar family = msg.topic.split(\"/\")[3];\n\nif (family === \"SCRIPT\") return null;\n\nmsg.sensor = msg.topic;\nmsg.actor = \"/actor/\"+actor;\nmsg.value = msg.payload.value;\nmsg.type = msg.topic.split(\"/\")[5];\nmsg.content = {\"sensor\": actor, \"value\": msg.value, \"submitter\": \"nodeRED\"}\nmsg.payload = msg.value;\n\ntry\n {\n if (global.get(\"domotics['\"+actor.toLowerCase()+\"']\")) { global.set(\"domotics['\"+actor.toLowerCase()+\"'][2]\", msg.value); }\n }\ncatch(err)\n {\n //node.error(\"Error \"+actor+\" \"+family, msg);\n }\n\nreturn [ msg ];", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 810, "y": 80, "wires": [ [ "336866c291a738fc" ] ] }, { "id": "336866c291a738fc", "type": "function", "z": "a37a25765b5bec67", "name": "Message Filter ?", "func": "//**\n// Message Filter\n//\n// Position 3 : wird immer ausgegeben\n// Position 2 : bei Normal und Zeit\n// Position 1 : nur bei Normal\n//**\n\nvar name = msg.topic.split(\"/\")[4];\nvar type = name.split(\".\")[1];\n\nswitch(type)\n {\n case \"LOWBAT\":\n case \"LOW_BAT\":\n case \"BOOT\": \n case \"ERROR\":\n case \"ERROR_CODE\":\n case \"CONFIG_PENDING\":\n case \"RSSI_DEVICE\":\n case \"DUTY_CYCLE\":\n case \"UNREACH\":\n case \"SECTION\":\n case \"SECTION_STATUS\":\n case \"PROCESS\":\n case \"STATE_NOTWORKING\":\n case \"OPERATING_VOLTAGE_STATUS\":\n case \"OPERATING_VOLTAGE\":\n case \"ENERGY_COUNTER_OVERFLOW\":\n case \"VOLTAGE_STATUS\":\n case \"FREQUENCY_STATUS\":\n case \"VOLTAGE_STATUS\":\n case \"POWER_STATUS\":\n case \"CURRENT_STATUS\":\n return [ null, null, msg ];\n }\n\nif (type === \"CLOCK\") return [ null, msg, msg ];\n\nreturn [ msg, msg, msg ];", "outputs": 3, "noerr": 0, "x": 1060, "y": 80, "wires": [ [], [], [] ] }, { "id": "b51ff744ced1de40", "type": "mqtt-broker", "z": "a37a25765b5bec67", "name": "broker", "broker": "tasks.mosquitto", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" }, { "id": "a93e4bdd4d6547c0", "type": "subflow", "name": "Get name", "info": "", "category": "", "in": [ { "x": 100, "y": 100, "wires": [ { "id": "61133e8b2834a955" } ] } ], "out": [ { "x": 1160, "y": 200, "wires": [ { "id": "50d3e15b767cac6a", "port": 1 }, { "id": "61133e8b2834a955", "port": 1 } ] } ], "env": [ { "name": "active", "type": "bool", "value": "true" } ], "meta": {}, "color": "#DDAA99", "status": { "x": 380, "y": 320, "wires": [ { "id": "14d345d95ce17d10", "port": 0 } ] } }, { "id": "14d345d95ce17d10", "type": "inject", "z": "a93e4bdd4d6547c0", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": true, "onceDelay": 0.1, "topic": "", "payload": "active", "payloadType": "env", "x": 180, "y": 320, "wires": [ [] ] }, { "id": "2b0805f649a3e51e", "type": "change", "z": "a93e4bdd4d6547c0", "name": "get name", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "name:*", "tot": "str" }, { "t": "delete", "p": "payload", "pt": "msg" }, { "t": "delete", "p": "name", "pt": "global" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 460, "y": 100, "wires": [ [ "898440f81f78516e" ] ] }, { "id": "2ba378ce42f73815", "type": "function", "z": "a93e4bdd4d6547c0", "name": "domoticsLength", "func": "//**\n// Prepare automation state from Mongo\n//**\n\nmsg.name = msg.payload.sort();\nmsg.nameLength = msg.name.length;\n\n//node.warn(msg.name.length);\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 920, "y": 100, "wires": [ [ "ef7e08c953948c58" ] ] }, { "id": "a3bdf4a9c2cc32a0", "type": "change", "z": "a93e4bdd4d6547c0", "name": "Loop = 0", "rules": [ { "t": "set", "p": "nameIndex", "pt": "msg", "to": "0", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 260, "y": 200, "wires": [ [ "93b3c026aa4e91a5" ] ] }, { "id": "93b3c026aa4e91a5", "type": "function", "z": "a93e4bdd4d6547c0", "name": "get sensor data", "func": "//**\n// Prepare automation state from Mongo\n//**\n\nvar name = msg.name[msg.nameIndex].split(\":\")[1];\n\nmsg.topic = \"name:\" + name;\nmsg.payload = [ 0, -1 ];\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 480, "y": 200, "wires": [ [ "6a716ce449141574" ] ] }, { "id": "86458c934355b248", "type": "function", "z": "a93e4bdd4d6547c0", "name": "Global name", "func": "//**\n// Get name from Redis\n//**\n\nglobal.set(\"name['\" + msg.topic.split(\":\")[1] + \"']\", msg.payload[0]);\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 830, "y": 200, "wires": [ [ "50d3e15b767cac6a" ] ] }, { "id": "50d3e15b767cac6a", "type": "function", "z": "a93e4bdd4d6547c0", "name": "Loop += 1", "func": "msg.nameIndex = msg.nameIndex + 1;\n\nif (msg.nameIndex < msg.nameLength)\n {\n return [ msg, null];\n }\nelse\n return [ null, msg];", "outputs": 2, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1000, "y": 200, "wires": [ [ "93b3c026aa4e91a5" ], [] ] }, { "id": "898440f81f78516e", "type": "redis-command", "z": "a93e4bdd4d6547c0", "server": "6dedffb0883e66bc", "command": "KEYS", "name": "", "topic": "", "params": "[]", "paramsType": "json", "payloadType": "json", "block": false, "x": 690, "y": 100, "wires": [ [ "2ba378ce42f73815" ] ] }, { "id": "6a716ce449141574", "type": "redis-command", "z": "a93e4bdd4d6547c0", "server": "6dedffb0883e66bc", "command": "LRANGE", "name": "", "topic": "", "params": " [0, -1]", "paramsType": "json", "payloadType": "json", "block": false, "x": 660, "y": 200, "wires": [ [ "86458c934355b248" ] ] }, { "id": "61133e8b2834a955", "type": "switch", "z": "a93e4bdd4d6547c0", "name": "active", "property": "active", "propertyType": "env", "rules": [ { "t": "true" }, { "t": "else" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 250, "y": 100, "wires": [ [ "2b0805f649a3e51e" ], [] ] }, { "id": "ef7e08c953948c58", "type": "link out", "z": "a93e4bdd4d6547c0", "name": "link out 9", "mode": "link", "links": [ "d80145d0026fcab9" ], "x": 1095, "y": 100, "wires": [] }, { "id": "d80145d0026fcab9", "type": "link in", "z": "a93e4bdd4d6547c0", "name": "link in 9", "links": [ "ef7e08c953948c58" ], "x": 95, "y": 200, "wires": [ [ "a3bdf4a9c2cc32a0" ] ] }, { "id": "75fde064e338f2f3", "type": "subflow", "name": "Get domotics", "info": "", "category": "", "in": [ { "x": 120, "y": 100, "wires": [ { "id": "c5ad0c48da65248d" } ] } ], "out": [ { "x": 1200, "y": 180, "wires": [ { "id": "40679884d636b98a", "port": 1 }, { "id": "c5ad0c48da65248d", "port": 1 } ] } ], "env": [ { "name": "active", "type": "bool", "value": "true" } ], "meta": {}, "color": "#DDAA99", "status": { "x": 420, "y": 320, "wires": [ { "id": "265969480903c7e9", "port": 0 } ] } }, { "id": "82740fb0ee25ba10", "type": "change", "z": "75fde064e338f2f3", "name": "get domotics", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "domotics:*", "tot": "str" }, { "t": "delete", "p": "payload", "pt": "msg" }, { "t": "delete", "p": "domotics", "pt": "global" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 490, "y": 100, "wires": [ [ "8e02ab4bb7f44f32" ] ] }, { "id": "a3a6b8713c34b593", "type": "function", "z": "75fde064e338f2f3", "name": "domoticsLength", "func": "//**\n// Prepare automation state from Mongo\n//**\n\nmsg.domotics = msg.payload.sort();\nmsg.domoticsLength = msg.domotics.length;\n\n//node.warn(msg.domotics.length);\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 940, "y": 100, "wires": [ [ "51355fa3b95d0d1d" ] ] }, { "id": "04b2c42d579d4425", "type": "change", "z": "75fde064e338f2f3", "name": "Loop = 0", "rules": [ { "t": "set", "p": "domoticsIndex", "pt": "msg", "to": "0", "tot": "num" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 280, "y": 200, "wires": [ [ "454512bcf29330f6" ] ] }, { "id": "454512bcf29330f6", "type": "function", "z": "75fde064e338f2f3", "name": "get sensor data", "func": "//**\n// Prepare automation state from Mongo\n//**\n\nvar sensor = msg.domotics[msg.domoticsIndex].split(\":\")[1];\n\nmsg.topic = \"domotics:\" + sensor;\nmsg.payload = [ 0, -1 ];\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 500, "y": 200, "wires": [ [ "cfdec4aa2eca0162" ] ] }, { "id": "b9dd08f8121ece83", "type": "function", "z": "75fde064e338f2f3", "name": "Global domotics", "func": "//**\n// Prepare automation state from Mongo\n//**\n\nif (!isNaN(msg.payload[0])) msg.payload[0] = +msg.payload[0];\nif (!isNaN(msg.payload[2])) msg.payload[2] = +msg.payload[2];\nif (msg.payload[2] === \"true\" || msg.payload[2] === \"false\") msg.payload[2] = (msg.payload[2] === \"true\");\ntry { msg.payload[3] = JSON.parse(msg.payload[3]); } catch (e) { }\n\nglobal.set(\"domotics['\" + msg.topic.split(\":\")[1] + \"']\", msg.payload);\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 860, "y": 200, "wires": [ [ "40679884d636b98a" ] ] }, { "id": "40679884d636b98a", "type": "function", "z": "75fde064e338f2f3", "name": "Loop += 1", "func": "msg.domoticsIndex = msg.domoticsIndex + 1;\n\nif (msg.domoticsIndex < msg.domoticsLength)\n {\n return [ msg, null];\n }\nelse\n return [ null, msg];", "outputs": 2, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1020, "y": 200, "wires": [ [ "454512bcf29330f6" ], [] ] }, { "id": "8e02ab4bb7f44f32", "type": "redis-command", "z": "75fde064e338f2f3", "server": "6dedffb0883e66bc", "command": "KEYS", "name": "", "topic": "", "params": "[]", "paramsType": "json", "payloadType": "json", "block": false, "x": 710, "y": 100, "wires": [ [ "a3a6b8713c34b593" ] ] }, { "id": "cfdec4aa2eca0162", "type": "redis-command", "z": "75fde064e338f2f3", "server": "6dedffb0883e66bc", "command": "LRANGE", "name": "", "topic": "", "params": " [0, -1]", "paramsType": "json", "payloadType": "json", "block": false, "x": 680, "y": 200, "wires": [ [ "b9dd08f8121ece83" ] ] }, { "id": "c5ad0c48da65248d", "type": "switch", "z": "75fde064e338f2f3", "name": "active", "property": "active", "propertyType": "env", "rules": [ { "t": "true" }, { "t": "else" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 270, "y": 100, "wires": [ [ "82740fb0ee25ba10" ], [] ] }, { "id": "51355fa3b95d0d1d", "type": "link out", "z": "75fde064e338f2f3", "name": "link out 1", "mode": "link", "links": [ "cf44fc773c7644a2" ], "x": 1115, "y": 100, "wires": [] }, { "id": "cf44fc773c7644a2", "type": "link in", "z": "75fde064e338f2f3", "name": "link in 1", "links": [ "51355fa3b95d0d1d" ], "x": 115, "y": 200, "wires": [ [ "04b2c42d579d4425" ] ] }, { "id": "265969480903c7e9", "type": "inject", "z": "75fde064e338f2f3", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": true, "onceDelay": 0.1, "topic": "", "payload": "active", "payloadType": "env", "x": 220, "y": 320, "wires": [ [] ] }, { "id": "6dedffb0883e66bc", "type": "redis-config", "name": "tasks.redis", "options": "{\"host\":\"tasks.redis\"}", "cluster": false, "optionsType": "json" }, { "id": "96dd2e3cc57742ab", "type": "subflow", "name": "Button", "info": "", "category": "", "in": [ { "x": 100, "y": 100, "wires": [ { "id": "f5aa0f408587a6cb" } ] } ], "out": [ { "x": 1360, "y": 100, "wires": [ { "id": "3943d703b4088835", "port": 0 } ] } ], "env": [], "meta": {}, "color": "#DDAA99" }, { "id": "f5aa0f408587a6cb", "type": "change", "z": "96dd2e3cc57742ab", "name": "", "rules": [ { "t": "set", "p": "switch", "pt": "msg", "to": "$split(topic, \"/\")[4]", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 270, "y": 100, "wires": [ [ "8338df0ed6c08146" ] ] }, { "id": "8338df0ed6c08146", "type": "function", "z": "96dd2e3cc57742ab", "name": "Setze Text", "func": "if (msg.switchon)\n {\n flow.set(\"button['\"+msg.switch+\"']['on']\", msg.switchon);\n flow.set(\"button['\"+msg.switch+\"']['off']\", msg.switchoff); \n }\n\nreturn msg;", "outputs": 1, "noerr": 0, "x": 510, "y": 100, "wires": [ [ "3360fd4fcedb8470" ] ] }, { "id": "3360fd4fcedb8470", "type": "switch", "z": "96dd2e3cc57742ab", "name": "", "property": "value", "propertyType": "msg", "rules": [ { "t": "eq", "v": "aus", "vt": "str" }, { "t": "eq", "v": "an", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 710, "y": 100, "wires": [ [ "ecb640788110e0d9" ], [ "7267c21d2d9f3833" ] ] }, { "id": "7267c21d2d9f3833", "type": "change", "z": "96dd2e3cc57742ab", "name": "true", "rules": [ { "t": "set", "p": "value", "pt": "msg", "to": "true", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 850, "y": 120, "wires": [ [ "0798cd7b02bdad1e" ] ] }, { "id": "ecb640788110e0d9", "type": "change", "z": "96dd2e3cc57742ab", "name": "false", "rules": [ { "t": "set", "p": "value", "pt": "msg", "to": "false", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 850, "y": 80, "wires": [ [ "0798cd7b02bdad1e" ] ] }, { "id": "0798cd7b02bdad1e", "type": "subflow:48d868d85b014c91", "z": "96dd2e3cc57742ab", "name": "", "x": 1010, "y": 100, "wires": [ [ "3943d703b4088835" ] ] }, { "id": "3943d703b4088835", "type": "function", "z": "96dd2e3cc57742ab", "name": "Setze Template", "func": "msg.switchon = flow.get(\"button['\" + msg.switch + \"']['on']\");\nmsg.switchoff = flow.get(\"button['\" + msg.switch + \"']['off']\");\n\nmsg.template = ' ' +\n'<md-button class=\"vibrate filled touched bigfont rounded\" style=\"background-color:{{msg.backcolor}}\" ng-click=\"send({value: !msg.value, name: msg.switch })\"> ' +\n' ' +\n'<svg width=\"180px\" height=\"50px\" version=\"1.1\" viewBox=\"0 0 800 200\">' +\n' <g id=\"Button_Long\">' +\n' ' +\n' <rect fill={{msg.backcolor}} width=\"800\" height=\"200\"/>' +\n' <g ng-style=\"{fill: (msg.value || 0) ? msg.strongcolor : msg.softcolor }\">' +\n' <rect width=\"800\" height=\"200\" rx=\"80\" ry=\"80\"/>' +\n'' +\n' ' +\n' <rect fill={{msg.backcolor}} x=\"11\" y=\"10\" width=\"778\" height=\"180\" rx=\"90\" ry=\"90\"/>' +\n' <g ng-style=\"{fill: (msg.value || 0) ? msg.strongcolor : msg.softcolor }\">' +\n' <text x=\"400\" y=\"125\" style=\"text-anchor:middle\" font-weight=\"bold\" font-size=\"60\" font-family=\"Arial\">{{(msg.value||0)? msg.switchon : msg.switchoff }} ' +\n' ' +\n' ' +\n'' +\n'';\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1200, "y": 100, "wires": [ [] ] }, { "id": "48d868d85b014c91", "type": "subflow", "name": "Color", "info": "", "category": "", "in": [ { "x": 120, "y": 100, "wires": [ { "id": "8da6868e0650ee40" } ] } ], "out": [ { "x": 380, "y": 100, "wires": [ { "id": "8da6868e0650ee40", "port": 0 } ] } ], "env": [], "meta": {}, "color": "#DDAA99" }, { "id": "8da6868e0650ee40", "type": "change", "z": "48d868d85b014c91", "name": "Color", "rules": [ { "t": "set", "p": "strongcolor", "pt": "msg", "to": "strongcolor", "tot": "global" }, { "t": "set", "p": "color", "pt": "msg", "to": "color", "tot": "global" }, { "t": "set", "p": "headcolor", "pt": "msg", "to": "headcolor", "tot": "global" }, { "t": "set", "p": "backcolor", "pt": "msg", "to": "backcolor", "tot": "global" }, { "t": "set", "p": "softcolor", "pt": "msg", "to": "softcolor", "tot": "global" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 250, "y": 100, "wires": [ [] ] }, { "id": "77667da07b6d7ea3", "type": "subflow", "name": "UI control", "info": "", "category": "", "in": [ { "x": 100, "y": 100, "wires": [ { "id": "53fd2a35d288875d" } ] } ], "out": [ { "x": 620, "y": 100, "wires": [ { "id": "c5f1b0a912b2bf3f", "port": 0 } ] } ], "env": [], "meta": {}, "color": "#DDAA99" }, { "id": "c5f1b0a912b2bf3f", "type": "function", "z": "77667da07b6d7ea3", "name": "ui control", "func": "var socketid = msg.socketid;\nvar func = msg.payload;\n\nif (func === \"connect\" || func === \"change\")\n {\n var message = { func: func, tab: msg.tab || 0, name: msg.name || \"\" };\n \n global.set(\"ui['\"+socketid+\"']\", message); \n }\n \nif (func === \"lost\")\n {\n var tab = global.get(\"ui\") || {};\n var keys = Object.keys(tab);\n var temp = { };\n \n for (var i = 0; i < keys.length; i++)\n {\n if (keys[i] !== socketid) { temp[keys[i]] = tab[keys[i]]; }\n }\n global.set(\"ui\", temp);\n }\n\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 460, "y": 100, "wires": [ [] ] }, { "id": "53fd2a35d288875d", "type": "ui-control", "z": "77667da07b6d7ea3", "name": "", "ui": "f68a4799e6be2b60", "events": "all", "x": 260, "y": 100, "wires": [ [ "c5f1b0a912b2bf3f" ] ] }, { "id": "f68a4799e6be2b60", "type": "ui-base", "name": "Dashboard", "path": "/dashboard", "appIcon": "", "includeClientData": true, "acceptsClientConfig": [ "ui-control", "ui-notification" ], "showPathInSidebar": false, "showPageTitle": true, "navigationStyle": "icon", "titleBarStyle": "default" }, { "id": "f3439aa892750c04", "type": "tab", "label": "Domotics (do not edit)", "disabled": false, "info": "Stand: 19.10.2022 (Start, Interface, Miscellaneous, MQ Eingang und Ausgang)" }, { "id": "b4c46c9a7adf2d56", "type": "group", "z": "f3439aa892750c04", "name": "Interface", "style": { "stroke": "#000000", "fill": "#ffff00", "label": true, "color": "#000000" }, "nodes": [ "77ebfb75b1fe1856", "6cc5e158a88c45af", "4d0bc315cb05ef0e", "209324eba972c514", "0c64e3b3b347552d", "d42dcd7ce5d6bd4d", "f27f7f970792536c", "eb05c1cf476d34a4", "f5f30670578629b5" ], "x": 94, "y": 379, "w": 292, "h": 202 }, { "id": "1fa998ef39c7b6cf", "type": "group", "z": "f3439aa892750c04", "name": "Start", "style": { "stroke": "#000000", "fill": "#ffbfbf", "label": true, "color": "#000000" }, "nodes": [ "a001d4cefd3e590e", "4867292359c61de8", "5ceb28b09ee70f3c", "b56aee4741f48f64", "9d10c17a9ee29bf6" ], "x": 94, "y": 179, "w": 722, "h": 122 }, { "id": "3b8d999a2ebe589b", "type": "group", "z": "f3439aa892750c04", "name": "MQ Eingang und Ausgang", "style": { "stroke": "#000000", "fill": "#ffefbf", "label": true, "color": "#000000" }, "nodes": [ "cee6b97080462f0b", "2ae6fe6abd284d9f", "88e59c5c14ad838e", "dec160a8a5fae346", "1d3ba51bebf1a21a", "e7e4abc4e858d971", "3451842912f53252", "3328b318e313b376", "4648be2f4c2748b2", "a7a84f9988183a2e" ], "x": 944, "y": 119, "w": 352, "h": 402 }, { "id": "77ebfb75b1fe1856", "type": "link in", "z": "f3439aa892750c04", "g": "b4c46c9a7adf2d56", "name": "UI Input", "links": [], "x": 135, "y": 420, "wires": [ [ "4d0bc315cb05ef0e" ] ], "icon": "font-awesome/fa-user-circle-o" }, { "id": "6cc5e158a88c45af", "type": "link out", "z": "f3439aa892750c04", "g": "b4c46c9a7adf2d56", "name": "UI Output", "mode": "link", "links": [ "4273fa95de6bfdd5", "d085e322ae4221c5", "039924f255f479e5", "f9b3781b1533e9f4" ], "x": 345, "y": 420, "wires": [], "icon": "font-awesome/fa-hourglass-start" }, { "id": "4d0bc315cb05ef0e", "type": "subflow:77667da07b6d7ea3", "z": "f3439aa892750c04", "g": "b4c46c9a7adf2d56", "name": "", "x": 240, "y": 420, "wires": [ [ "6cc5e158a88c45af" ] ] }, { "id": "209324eba972c514", "type": "link in", "z": "f3439aa892750c04", "g": "b4c46c9a7adf2d56", "name": "Color", "links": [], "x": 135, "y": 480, "wires": [ [ "d42dcd7ce5d6bd4d" ] ], "icon": "node-red-dashboard/ui_colour_picker.png" }, { "id": "0c64e3b3b347552d", "type": "link out", "z": "f3439aa892750c04", "g": "b4c46c9a7adf2d56", "name": "", "mode": "return", "links": [], "x": 345, "y": 480, "wires": [] }, { "id": "d42dcd7ce5d6bd4d", "type": "subflow:48d868d85b014c91", "z": "f3439aa892750c04", "g": "b4c46c9a7adf2d56", "name": "Color", "x": 230, "y": 480, "wires": [ [ "0c64e3b3b347552d" ] ], "icon": "node-red-dashboard/ui_colour_picker.png" }, { "id": "f27f7f970792536c", "type": "link in", "z": "f3439aa892750c04", "g": "b4c46c9a7adf2d56", "name": "button", "links": [], "x": 135, "y": 540, "wires": [ [ "f5f30670578629b5" ] ], "icon": "node-red-dashboard/ui_button.png" }, { "id": "eb05c1cf476d34a4", "type": "link out", "z": "f3439aa892750c04", "g": "b4c46c9a7adf2d56", "name": "", "mode": "return", "links": [], "x": 345, "y": 540, "wires": [] }, { "id": "f5f30670578629b5", "type": "subflow:96dd2e3cc57742ab", "z": "f3439aa892750c04", "g": "b4c46c9a7adf2d56", "name": "", "x": 230, "y": 540, "wires": [ [ "eb05c1cf476d34a4" ] ] }, { "id": "92365558eaaeef0a", "type": "config", "z": "f3439aa892750c04", "name": "", "properties": [ { "p": "floors", "pt": "global", "to": "null", "tot": "json" }, { "p": "url_lib", "pt": "global", "to": "https://www.familie-spitzer.de/lib/", "tot": "str" }, { "p": "url_image", "pt": "global", "to": "https://www.familie-spitzer.de/image/", "tot": "str" }, { "p": "url_doc", "pt": "global", "to": "https://www.familie-spitzer.de/doc/", "tot": "str" }, { "p": "main_svg_switch", "pt": "global", "to": "https://www.familie-spitzer.de/svg/", "tot": "str" }, { "p": "color", "pt": "global", "to": "green", "tot": "str" }, { "p": "headcolor", "pt": "global", "to": "lawngreen", "tot": "str" }, { "p": "backcolor", "pt": "global", "to": "white", "tot": "str" }, { "p": "softcolor", "pt": "global", "to": "gray", "tot": "str" }, { "p": "strongcolor", "pt": "global", "to": "red", "tot": "str" } ], "active": true, "x": 170, "y": 100, "wires": [] }, { "id": "dd92c34723f6a93f", "type": "ui-event", "z": "f3439aa892750c04", "ui": "f68a4799e6be2b60", "name": "", "x": 530, "y": 460, "wires": [ [ "5159917b5a424f5a" ] ] }, { "id": "5159917b5a424f5a", "type": "link out", "z": "f3439aa892750c04", "name": "Page event Out", "mode": "link", "links": [ "aef50145bdaa960a", "ae3dbfe31f99e8b6" ], "x": 675, "y": 460, "wires": [] }, { "id": "a001d4cefd3e590e", "type": "inject", "z": "f3439aa892750c04", "g": "1fa998ef39c7b6cf", "name": "Started !", "props": [ { "p": "payload", "v": "", "vt": "str" }, { "p": "topic", "v": "", "vt": "str" } ], "repeat": "", "crontab": "", "once": true, "onceDelay": "", "topic": "", "payload": "", "payloadType": "str", "x": 200, "y": 220, "wires": [ [ "b56aee4741f48f64" ] ] }, { "id": "4867292359c61de8", "type": "link out", "z": "f3439aa892750c04", "g": "1fa998ef39c7b6cf", "name": "Start Init", "mode": "link", "links": [ "e916ff94b8ba2a66" ], "x": 775, "y": 220, "wires": [], "icon": "font-awesome/fa-hourglass-start" }, { "id": "5ceb28b09ee70f3c", "type": "link in", "z": "f3439aa892750c04", "g": "1fa998ef39c7b6cf", "name": "Init", "links": [ "1d3ba51bebf1a21a", "4648be2f4c2748b2" ], "x": 245, "y": 260, "wires": [ [ "b56aee4741f48f64" ] ], "icon": "font-awesome/fa-subscript" }, { "id": "b56aee4741f48f64", "type": "subflow:75fde064e338f2f3", "z": "f3439aa892750c04", "g": "1fa998ef39c7b6cf", "name": "", "x": 410, "y": 220, "wires": [ [ "9d10c17a9ee29bf6" ] ], "icon": "node-red-contrib-redis/redis.png" }, { "id": "9d10c17a9ee29bf6", "type": "subflow:a93e4bdd4d6547c0", "z": "f3439aa892750c04", "g": "1fa998ef39c7b6cf", "name": "", "env": [ { "name": "active", "value": "false", "type": "bool" } ], "x": 620, "y": 220, "wires": [ [ "4867292359c61de8" ] ], "icon": "node-red-contrib-redis/redis.png" }, { "id": "cee6b97080462f0b", "type": "link out", "z": "f3439aa892750c04", "g": "3b8d999a2ebe589b", "name": "Subscribe ohne Uhr", "mode": "link", "links": [], "x": 1255, "y": 160, "wires": [], "icon": "font-awesome/fa-envelope" }, { "id": "2ae6fe6abd284d9f", "type": "link out", "z": "f3439aa892750c04", "g": "3b8d999a2ebe589b", "name": "Subscribe mit Uhr", "mode": "link", "links": [], "x": 1255, "y": 200, "wires": [], "icon": "font-awesome/fa-envelope" }, { "id": "88e59c5c14ad838e", "type": "link out", "z": "f3439aa892750c04", "g": "3b8d999a2ebe589b", "name": "Subscribe All", "mode": "link", "links": [], "x": 1255, "y": 240, "wires": [], "icon": "font-awesome/fa-envelope" }, { "id": "dec160a8a5fae346", "type": "link in", "z": "f3439aa892750c04", "g": "3b8d999a2ebe589b", "name": "Publish", "links": [ "318a1f5388d899c4" ], "x": 995, "y": 400, "wires": [ [ "3451842912f53252" ] ], "icon": "font-awesome/fa-send" }, { "id": "1d3ba51bebf1a21a", "type": "link out", "z": "f3439aa892750c04", "g": "3b8d999a2ebe589b", "name": "Skript delete sensor", "mode": "link", "links": [ "5ceb28b09ee70f3c" ], "x": 1255, "y": 300, "wires": [], "icon": "font-awesome/fa-subscript" }, { "id": "e7e4abc4e858d971", "type": "subflow:a37a25765b5bec67", "z": "f3439aa892750c04", "g": "3b8d999a2ebe589b", "name": "MQ Sensor-Eingang", "x": 1070, "y": 200, "wires": [ [ "cee6b97080462f0b" ], [ "2ae6fe6abd284d9f" ], [ "88e59c5c14ad838e" ] ], "icon": "font-awesome/fa-arrow-left" }, { "id": "3451842912f53252", "type": "subflow:d8f4d61e31c1af63", "z": "f3439aa892750c04", "g": "3b8d999a2ebe589b", "name": "", "x": 1180, "y": 400, "wires": [], "icon": "font-awesome/fa-arrow-right" }, { "id": "3328b318e313b376", "type": "subflow:acae54dd600a7b11", "z": "f3439aa892750c04", "g": "3b8d999a2ebe589b", "name": "", "x": 1060, "y": 320, "wires": [ [ "1d3ba51bebf1a21a" ], [ "4648be2f4c2748b2" ] ], "icon": "font-awesome/fa-arrow-left" }, { "id": "4648be2f4c2748b2", "type": "link out", "z": "f3439aa892750c04", "g": "3b8d999a2ebe589b", "name": "Skript insert sensor", "mode": "link", "links": [ "5ceb28b09ee70f3c" ], "x": 1255, "y": 340, "wires": [], "icon": "font-awesome/fa-subscript" }, { "id": "a7a84f9988183a2e", "type": "subflow:8bfb514b42039228", "z": "f3439aa892750c04", "g": "3b8d999a2ebe589b", "name": "MQ Prepare Message", "x": 1090, "y": 480, "wires": [ [] ] }, { "id": "fae1679d18344cfe", "type": "flow2src", "z": "f3439aa892750c04", "name": "", "incFlows": "", "incSubflows": "", "srcFolder": "src", "chkAutoFlow2Src": false, "x": 540, "y": 80, "wires": [] }]

Sicher versendet mit Proton Mail.

Stephen J. Carnam @.***> schrieb am Mittwoch, 16. Oktober 2024 um 21:44:

Based on the flow you gave me, I only see two function nodes on a flow tab called "Weather"; after deploying and pressing Flow-to-Src, I get a src folder with Weather subfolder, and the two function nodes. My project name is "Scratch". Please see the screenshot below. I am using Flow2Src version 1.2.1.

Screenshot.2024-10-16.at.12.34.57.PM.png (view on web)

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

Steveorevo commented 2 weeks ago

Hi, thank you for the flow; I do see an issue and it is reproducible. I'm not sure why it is falling short of all sub flows. I will need to investigate the code further.