NEWS
Unterschied zwischen NodeRed und Blockly?
-
Unübersichtlich kann man in jeder Sprache schreiben.
Übersichtlich aber auch
Liegt i.d.R. nicht an der SpracheUnterschiede lassen sich schlecht festmachen, weil man fast alles auch in jeder Sprache programmieren kann.
Vergleichen kann ich nicht, das wäre unfair. Dazu mache ich zuwenig (fast nichts) mit Blockly.
Was sicher ein Argument für NR ist, ist die schier endlose Zahl an Nodes für alle möglichen und unmöglichen Anwendungsfälle. (manchmal auch ein Fluch)Also i.d.R. überlege ich, was ich eigentlich erreichen will und danach suche ich mir ein Werkzeug (Sprache) das möglichst schnell zum Ziel führt. Und da ist "schnell" höchst individuell. Wer NR kann, kommt damit sicher schnelleres Ziel. Wem aber Blockly von der Hand geht, wird damit schneller sein.
-
@jan1 Das ist doch der Punkt - ich habe in dem Fall auch nicht Dich angesprochen, sondern @loverz. Der sieht einen Screenshot und meint aufgrund dessen eine Einschätzung geben zu können basierend auf den Threadtitel.
Entweder lasse ich mich auf den Threadtitel ein, dann gehört aber etwas mehr dazu, als über seine Nackenhaare und Lego zu schreiben.
Wenn ich schon über Optik oder Übersichtlichkeit schreiben will, dann muss ich mir ein Ziel vornehmen und es dann mal auf beide Arten umsetzen und dann kann man anschließend darüber diskutieren.
Ggf. sollte man auch noch den gleichen Lösungsweg versuchen, um die Darstellung miteinander zu vergleichen.Das wäre dann halbwegs objektiv. Ob es einem was gefällt oder nicht - ist dann immer noch subjektiv.
Das Blockly versucht halt durch die Form der Puzzleteilchen den Anwender dazu zu zwingen, immer ein bestimmtes Vorgehen- der Programmierlogik entsprechend - zu erzwingen. Das finde ich, der vielleicht schon mal programmiert hat eher lästig.
Blockly hat auch Vorteile, die Node Red nicht hat. Man kann zum Beispiel in einem Stück eine Variable umbenennen und es wird überall umbenannt usw.NodeRed hat nicht nur eine wesentlich größere Auswahl an Nodes, die Du sonst halt erst Programmieren musst, die Vorgehensweise ergibt sich halt aus dem Programm-/Nachrichtenfluß und man muss nicht nach passenden Puzzleteilchen suchen.
Wie gesagt:
Ich tu mir halt schwer die richtigen Puzzlestückchen zu finden -
Du weißt halt nicht, welche Nodes Du verwenden sollst.Nur das Aussehen und den persönlichen Geschmack alleine als Grundlage zu nehmen, um eine "objektive" Meinung abzugeben, das hat noch nie funktioniert. Dann bleibt noch wieviel Wert man auf das Verhalten der Nackenhaare einzelner legt.
Ich habe mal zum Spaß eine Endlosschleife gebastelt, die eine payload immer um 1 erhöht. Ist natürlich nicht sinnvoll und legt das System nur lahm - aber es geht ja darum nicht Äpfel mit Birnen, sondern möglichst gleiches mit Gleichem zu vergleichen.
In Blockly würde das nach meiner bescheidenen Meinung so aussehen:
In NodeRed so:
Die Nodes sind nur so groß, weil ich die Namen so lange gewählt habe.
Nun sieht man eher einen Nachteil/Vorteil von NodeRed - es verbirgt nämlich das was programmtechnisch passiert. Lasse ich die Namen weg sieht es so aus:Der Nachteil gegenüber dem Blockly ist, dass man nicht sieht was in den Nodes passiert. Anhand der Symbole und Farben bekommt man mit, dass es sich um Inject, Change und Switch Nodes handelt, wenn man mit Node-Red schon länger arbeitet, ansonsten musst Du halt immer erst in die Nodes reinschauen, um zu sehen, was die macht.
Der Vorteil in komplexen Strukturen ist aber, dass dies die Übersichtlichkeit eher erhöht. Wenn ich also eine Change Node so benenne, dass dort die payload um 1 erhöht wird, dann interessiert es mich nicht mehr, wie die payload um 1 erhöht wird.
Im Prinzip kann man sich jede Node wie ein Unterprogramm vorstellen.Die Übersichtlichkeit kann aber im Übrigen so weit getrieben werden kann, dass ich im Prinzip nach dem Trigger sämtliche Flows in EINER function Node verstecken kann. Damit schaut das Übersichtlich aus, aber ich erkenne erst recht nicht mehr, was wo passiert. Und das geht natürlich ebenfalls komplett am Sinn von Node Red vorbei, um mich auf die Logik zu konzentrieren und nicht auf das, wie diese umgesetzt wird. Deswegen bin ich auch ein Verfechter dafür function-Nodes, so sparsam wie möglich einzusetzen. Dazu brauche ich NodeRed nicht.
Wenn ich eine Logik komplett in Javascript umsetzen will, dann mache ich das im Javascript Adapter und schreibe keine function Nodes.Der Riesenvorteil von NodeRed ist eben aufgrund der Riesencommunity die schier endlose Zahl an Nodes die es gibt (wie @rewenode schreibt) und gleichzeitig ein Fluch - aber man muss nicht alles nutzen. Letztlich sind diese Nodes etwas, was Dir Funktionen liefert, die dem Nachrichtenfluß verändert oder sie bilden eine Schnittstelle zu anderer Hardware und können deshalb mit Adaptern im iobroker gleich gesetzt werden. Gerade wenn man einen Adapter im iobroker vermisst, ist es doch toll, wenn man eine Node findet und dann im iobroker weiterverarbeiten kann.
Viele nutzen NodeRed - sowie Du - weil vielleicht der passende Adapter in iobroker nicht verfügbar ist (bestimmte Alexa Funktionen - keine Ahnung oder wie ich nun weil ich mit SNMP was machen will und der Adapter im iobroker halt nicht so funktioniert, wie ich es brauche und seit 2 Jahren nicht mehr gepflegt wird).
Und wie ich auch schon mal gesagt habe - man kann auch alles kombinieren. Das was Du aus Deinen Alexa Nodes rausholst - kannst ja alles in eigene Datenpunkte wegschreiben, musst Dir NULL Gedanken über einen Node Red Flow machen und bearbeitest dann mit Blockly weiter.Es ist einfach im ioBroker Umfeld so unsinnig, NodeRed und Blockly gegeneinander auszuspielen - anstelle beides zu nutzen und hier sich wieder an der Integrationsfähigkeit des ioBrokers zu erfreuen. Ich bin NodeRed und ioBroker Fan - aber nicht Blockly Fan, weil ich ioBroker Fan bin.
Deshalb, um zum Schluss zu kommen, habe ich angeregt, das Beispiel, was ich kürzlich in Node-Red umgesetzt habe, im Blockly zu machen. Das wäre für viele ein nützlicher Baustein, die sich scheuen auf Node-Red einzulassen und man vergleicht eben das Gleiche. Sprich ich bekomme das gleiche Ergebnis mit unterschiedlichen Mitteln und dann kann man sich mE ein Urteil erlauben.
-
@mickym Was für mich und sicher auch für Anfänger schwierig ist, sind so Sachen im Flow wie:
setze msg.payload ??? was ist msg.payload und auf was setzen? Klar kann man in die nodes gucken, aber das weis der Anfänger nicht unbedingt. Switch ?? was ist das und was macht das?Aber es geht auch so:
Und dann gibt es ja immer noch das Kommentar-node
-
@rewenode Du bist von uns beiden der Entwickler-Guru - Ich erinnere mich nur zu gerne an Deine function Node - mit der Du die socket.io Schnittstelle bestückst, auch wenn ich da erst mal nicht weitergemacht habe.
Natürlich muss man als Anfänger - aber das gilt in meinen Augen sowohl für Blockly - als auch für NodeRed ein paar Anfangskenntnisse erwerben.
Für die, die mit NodeRed arbeiten wollen und sich vor englisch-sprachigen Videos nicht fürchten, kann ich nur die Videos von Steve empfehlen - zumindest spricht der für mich auch ein Englisch, dass auch nicht "native speakers" verstehen.
https://www.youtube.com/playlist?list=PLk0D2S-fqJ7YvR1wrpl8A4mhtBbYOlsE4
Für die, die sich damit eher schwer tun - finde ich gibt Matthias Kleine eigentlich eine tolle Einführung:
https://haus-automatisierung.com/nodered-tutorial-reihe/
Und klar mir hilft auch immer wieder zum Nachschlagen: https://www.w3schools.com/js/default.asp
Und klar ich muss verstehen, was ein JAVA Objekt ist.
Dann verstehe ich, dass in Node-Red keine Autos, also car objecte, durch die Leitungen flutschen, sondern Nachrichten - also msg.objekte.
Dann schaue ich mir mal ein so ein msg Objekt mal an und verstehe, dass
es meist im Mimumum 2 Eigenschaften besitzt:
- eine _msgid
- eine payload
Dann weiß ich ggf. noch, dass ich auf Objekteigenschaften über einen "." zugreife - und dass ich deshalb um auf die Eigenschaft 'payload' eines Nachrichtenobjekts zuzugreifen msg.payload schreiben muss.
Wenn man mit dem Begriff payload nichts anfangen kann, der gibt ihn in den Google Translator ein und findet als deutsche Übersetzung "Nutzlast". Mit etwas Fantasie schafft man es dann sich vorzustellen, dass also in der payload die Nutzdaten durch die Flows geschickt werden.
Und ich bin ehrlich gesagt schon froh, dass die deutsche Übersetzung nun "setze msg.payload" heißt und nicht mehr wie früher "festlegen msg.payload" - im Englischen heißt es halt "set msg.payload"
Dann gibt es wie gesagt noch die Kommentar-Nodes um den Flow zu strukturieren und was auch viel zu wenig genutzt wird, ich kann jede einzelne Node ausführlich kommentieren und dokumentieren.
Und um zu wissen, was die Nodes können oder nicht, finde ich zumindest für die Standardnodes diese ordentlich in der Hilfe und auch auf Deutsch beschrieben.
Diese Beschreibung taucht dann in der Info des einzelnen Nodes auf - so dass man auch hier für sich oder andere, das was die Node macht oder warum man sie einsetzt super dokumentieren kann.
Ach und wer behauptet Blockly=JavaScript und NodeRed ist es nicht, den muss ich enttäuschen. Jede einzelne Node ist genauso Javascript, wie so ein Puzzleteil im Blockly. Man muss sich nur mal den SourceCode einer einzelnen Node anschauen. Es gibt nur keine Möglichkeit einen Node-Red Flow in Javascript auszugeben, da das viel zu komplex wäre. Im Prinzip ist jede Node ein JS function, deren Verhalten über das Interface noch verändert werden kann.
-
@mickym Ja Einführungstutorials gibt es genug für Blockly und für NR
Allerdings erwecken fatalerweise Beide erstmal den Eindruck, als könne man sich damit mal eben schnell und ohne Vorkenntnisse ein Programm zusammenklicken.
Und genau das ist selten möglich;-) -
@rewenode Stimmt - aber nachdem wir ja in der ioBroker Umgebung sind - gibts für diese Leute ja den Szene-Adapter.
-
Um beides miteinander zu verheiraten, würde es ja auch noch folgenden Node geben, mit dessen du Blockly in Node-red verwenden kannst
-
@_r_a_l_f_ sagte in Unterschied zwischen NodeRed und Blockly?:
Um beides miteinander zu verheiraten, würde es ja auch noch folgenden Node geben, mit dessen du Blockly in Node-red verwenden kannst
coool
Ganz am Anfang von ioBroker und lange bevor es Blockly gab hatte Bluefox mir ganz stolz node-red vorgestellt und gemeint, dass sei auch was für mich als absoluter javascript Legastheniker.
Da habe ich dann tatsächlich auch vieles mit ans laufen gebracht. Bis ich dann an die Stelle kam, an der einiges nur noch mit function-nodes ging.
Dort war dann wieder natives js gefragt, was ich immer noch nicht beherrsche.Diese nodes würden dann die Lücke schließen, aber dann kann ich doch auch bei Blockly bleiben
-
@homoran sagte in Unterschied zwischen NodeRed und Blockly?:
@_r_a_l_f_ sagte in Unterschied zwischen NodeRed und Blockly?:
Um beides miteinander zu verheiraten, würde es ja auch noch folgenden Node geben, mit dessen du Blockly in Node-red verwenden kannst
coool
Ganz am Anfang von ioBroker und lange bevor es Blockly gab hatte Bluefox mir ganz stolz node-red vorgestellt und gemeint, dass sei auch was für mich als absoluter javascript Legastheniker.
Da habe ich dann tatsächlich auch vieles mit ans laufen gebracht. Bis ich dann an die Stelle kam, an der einiges nur noch mit function-nodes ging.Na ja - dann hast Du mE Node-Red nie richtig verinnerlicht. Man braucht in der Regel gar keine Function Nodes - aber ich hab das ja schon oft gesagt - deswegen keine neue Diskussion.
@_R_A_L_F_
Ich finde die Blockly Nodes nur dann interessant - wenn man Node-Red als Standalone Produkt nutzt. Im iobroker umfeld sind diese Nodes aber aufgrund des Node-Red Adapters völlig überflüssig, da man über die iobroker Datenpunkte Blockly automatisch mit NodeRed verheiraten kann. Blockly schreibt was in DP und triggert ein NR Flow oder umgekehrt. Dafür brauche ich diese Nodes nicht. -
@mickym sagte in Unterschied zwischen NodeRed und Blockly?:
Man braucht in der Regel gar keine Function Nodes
vielleicht inzwischen!
ich rede von etwa 2015/2016