Newer posts are loading.
You are at the newest post.
Click here to check if anything new just came in.

April 21 2017

moebius
6961 e94c 500
Reposted fromKrebs Krebs viacarlandlouise carlandlouise

April 20 2017

moebius
2238 073b 500
Reposted fromqb qb viaKik4s Kik4s
moebius
6125 a760
Reposted fromMiziou Miziou viaTiffanys Tiffanys
moebius
0892 8253
Reposted fromsosna sosna

April 12 2017

moebius
4376 6fa6

April 11 2017

moebius
Reposted fromtgs tgs viatatze tatze

April 07 2017

moebius
8670 0816 500
Reposted fromswissfondue swissfondue

April 06 2017

moebius
0498 1a89 500
Reposted fromKrebs Krebs viakaesekuchen kaesekuchen
moebius
moebius
0928 0487
Reposted fromSpecies5618 Species5618 viatatze tatze
moebius
1674 e468
Reposted fromlokrund2015 lokrund2015 viatatze tatze
moebius

Node-red ideas 2

Comment group
Some kind of a frame which holds a group of nodes and who visualizes this group. A comment node acts as Label.

Switch node - output for "all rules true"

Catch node - suppress error msgs 
If the catch node is active for a certain node, the error msgs of that node should be suppressed.

Inject node with input
It should be possible to trigger the inject node also via msg.

Inject node - repeat inject x times
Option to repeat the injection x times. Usefull at startup to preload arrays or msgs.

Debug message node expanded setting
Setting to show the node always expanded (or certain properties).

Audio-in node
The brother of the audio-out node. Maybe with different compression formats.

Multi-host
run node-red distributed on multiple hosts to achieve higher performance and / or higher reliability.

Messages passed count on wires
Option to show a "msgs passed counter" on wires or node in/outputs. Instead of the counter, an option should adjust the wire color/brightness according to the message count.

Message flow visualization
An animated view (with slow-motion mode) of the journey of the messages thru a flow. The user can pause and inspect the message and node attributes. Maybe with some profiler features (time, cpu spent in a node, etc) or debugging features inside function nodes.

Chart node - add points with timestamp
Possibility to include the timestamp in the msg when adding new datapoints to the chart. 

Rbe node - topic mode
The rbe node should support a "per topic" mode, where he handles msgs separated by topic. 

April 04 2017

moebius
1566 40b7
Reposted frompastainmy pastainmy viatatze tatze
moebius

Node-red ideas 1

Trigger node enhancement: topic mode, interval dynamic

Checkbox "topic mode": all trigger node functions are handled separately for each different topic.

 

It should be possible to override the time interval and unit with msg properties (msg.timevalue, msg.timeunit) for the current msg.

To reset all topic triggers "msg.resetall" must be send to the node.

 

Sample usage: multiple mqtt devices can use the same trigger (staircase light with multiple switches/lights). 

 

Sample implementation: 

[{"id":"2a157eaf.f3ce12","type":"function","z":"81c3b40f.437c28","name":"TopicTrigger","func":"var timeout = 100 * 60000;\n\nvar timers = context.get(\"timers\")||[];\nvar tid = timers[msg.topic]||{};\nif (tid) {\n    clearTimeout(tid);\n} \ntid = setTimeout(function () {\n    node.send(msg);\n},timeout);  \ntimers[msg.topic] = tid;\ncontext.set(\"timers\",timers);\nreturn null;","outputs":1,"noerr":0,"x":858,"y":465,"wires":[["b4a1a80b.96f408"]]}]

 

***

Colored wires -> wire based multi-layer

The idea is to have wires in different "colors". Each color stands for a separate layer. The wire layer allows to differentiate messages going through the same nodes. A colored layer extends the default layer (currently color grey?). Different colored wires on an output receive all output messages. If a colored wire is connected to the input of a node, but not on the output, msgs from this color are transferred to all existing output wires. All msgs must obtain a color attribute. All context functions do not consider the wire color.

 

A layer manager filters the layers by color, adds or deletes them.

 

Usage: this feature would allow easy reuse of nodes. Many change, split and switch nodes could be saved (and the maintenance to change all if needed).

Example: Multiple split nodes to deal with the result of a database query would become one. Multiple change nodes to prepare data.

 

***

Node-red client

The node-red client should be installed on a client machine as separate program or maybe browser extension. The purpose of the client is to access the file system of the client, execute commands and so on. It has no gui (would be done via dashboard) and should be available on all node-red platforms, which would make the flow os independent. The client should have a node (or multiple) in node-red to represent its functionality. The client node should be able to address multiple client machines at once. The output msg must therefore contain the client id. The node should have the ability to send wol packages to the client.

 

Usage: the node-red client would allow one to write node-red flows who act like client side programs.

 

***

Node-red dashboard tree-view widget

The dashboard should also provide a tree-view widget.

 

***

Delay node - set delay interval via msg attribute (same as trigger node)

The delay node should be able to delay a msg for an individual amount of time, set via a msg.property (msg.timevalue = "30", msg.timeunit = "s"). This delay overrides the default delay in the settings of the node only for the specific msg.

 

***

Advanced join node - join same/different topic

This node should join msgs based on the same or different topics. In same topic mode, it can discard msgs with duplicate payloads. It can check that the joined messages are on both sides of a defined limit (only with 2 msg count) - a hysteresis setting is also available. Also there is a setting to accumulate the msgs and emit a result every time a new msg arrives or clearing the msg buffer after sending the result.  

 

A msg containing the property "reset" clears all buffers, the property "resettopic" clears only the buffer related to the msg topic. 

 

Sample implementation:   

 [{"id":"5f58ac74.e920a4","type":"function","z":"930afb5a.360d98","name":"AdvancedJoinV5","func":"var countmsg = 9;          //how many items to join?\nvar nodublicates = false;   //only join if payload unequal existing payload\nvar limit;                 //only join if payloads are on both sides of the limit\nvar hysteresis;      //hysteresis \nvar clearaftersend = false;//clear queue after sending\n//------------ different topic mode ------------------\nvar diftopics = false;      //true: join only different topics; false: join only same topics\n\nvar inmsg = msg;\nvar outmsg = { \"topic\": inmsg.topic , \"payload\": \"\"};\nvar msgs = context.get(\"aggmsgs\")||{};\nvar topicmsgs = msgs[inmsg.topic]||[];\nvar lastval = context.get(\"lastval\");\n\nif (typeof inmsg.reset != \"undefined\") {\n    msgs = {};\n    topicmsgs = [];\n    lastval = undefined;\n}\nif (typeof inmsg.resettopic != \"undefined\") {\n    topicmsgs = [];\n    lastval = undefined;\n}\nif (typeof hysteresis !== 'undefined' && typeof lastval !== 'undefined') {\n    if (Math.abs(inmsg.payload - lastval) <= hysteresis) {\n        return null;\n    }\n}\nif (typeof lastval !== 'undefined') {\n    if (nodublicates && lastval == inmsg.payload)\n        return null;\n    if (typeof limit !== 'undefined' && countmsg == 2) {\n        if (!((lastval <= limit && inmsg.payload >= limit) || (lastval >= limit && inmsg.payload <= limit)))   \n            return null;\n    }\n} \n\nif (diftopics) {\n    if (topicmsgs.length > 0) {     //msg with same topic -> replace old msg\n        topicmsgs.shift();\n    }\n    topicmsgs.push(inmsg);\n    msgs[inmsg.topic] = topicmsgs;    \n    context.set(\"aggmsgs\",msgs);\n    context.set(\"lastval\",inmsg.payload);\n    if (Object.keys(msgs).length == countmsg) {\n        var aout = {};\n        outmsg.topic = \"\";\n        for (var tmsgs in msgs) {\n            if (msgs.hasOwnProperty(tmsgs)) {\n                aout[tmsgs] = msgs[tmsgs][0];\n                outmsg.topic += tmsgs + \"_\";\n            }\n        }\n        if (clearaftersend) {\n            context.set(\"aggmsgs\",undefined);\n            context.set(\"lastval\",undefined);\n        }\n        outmsg.topic = outmsg.topic.substr(0,String(outmsg.topic).length-1);\n        outmsg.payload = aout;\n        return outmsg;\n    } else\n        return null;\n} else {\n    if (topicmsgs.length == countmsg){\n        topicmsgs.shift();\n    }\n    topicmsgs.push(inmsg);\n    outmsg.payload = topicmsgs;\n    \n    msgs[inmsg.topic] = topicmsgs;\n    context.set(\"aggmsgs\",msgs);\n    context.set(\"lastval\",inmsg.payload);\n    \n    if (topicmsgs.length == countmsg) {\n        if (clearaftersend) {\n            msgs[inmsg.topic] = undefined;\n            context.set(\"aggmsgs\",msgs);\n            context.set(\"lastval\",undefined);\n        }\n        return outmsg;\n    }\n    else\n        return null;\n}\n\n","outputs":1,"noerr":0,"x":1073,"y":822,"wires":[["129cbfd.21f334"]]}]

 

***

Setting: "Advanced user" for node-red

To keep the gui and the nodes beginner friendly, a setting "Advanced user" should hide/show the advanced functions of the nodes / gui.

April 01 2017

moebius
9549 e2fe 500
Reposted fromkaiee kaiee viaFreXxX FreXxX

March 31 2017

moebius
1146 27da
Reposted fromkelu kelu viavogel vogel

March 30 2017

4473 dc0e 500
Reposted fromtwice twice viaFreXxX FreXxX
moebius

March 27 2017

moebius
4456 f179
Reposted fromAnalnyKarambol AnalnyKarambol viaNoiza Noiza

March 26 2017

Friday evening


/* by JtR */

Older posts are this way If this message doesn't go away, click anywhere on the page to continue loading posts.
Could not load more posts
Maybe Soup is currently being updated? I'll try again automatically in a few seconds...
Just a second, loading more posts...
You've reached the end.

Don't be the product, buy the product!

Schweinderl