NEWS
Unterschied zwischen NodeRed und Blockly?
-
@Atifan
Ich habe vor einem Jahr angefangen und stand auch vor dieser Frage.
Mit beiden kann man jeweils alles abbilden - zumindest im Großen und Ganzen.Ich selbst kann nicht programmieren und fand Blockly einfacher. Ich konnte
damit schnelle Erfolge erzielen.Ich versuche aber auch noch in NodeRed mich einzuarbeiten, weil ich es
einfach meinen Horizont erweitert.Geräte einbinden -> iobroker
Geräte steuern (auch Technikübergreifend) -> Blockly -
@Atifan
Node-Red setzt ein wenig mehr Grundwissen voraus und ist nicht so logisch aufgebaut wie Blockly.
Blockly erklärt sich teils von alleine und führt somit für Anfänger wesentlich schneller zum ersten Erfolg. Mit Blockly kann man keine Geräte an Alexa anbinden, mit Node-Red geht das, wobei es da auch immer abhängig davon ist, was Amazon gerade wieder dreht und ob der Entwickler der entsprechenden Nodes das zeitnah anpasst. -
Ahso alles klar. Danke euch. Also ist beides ziemlich das selbe
Ich muss sagen, ich habe in Blockly noch nichts gemacht und die Geräte soweit in NodeRed drin mittlerweile nach viel hin und her funktioniert es auch so wie ich es gerne möchte, bis auf paar Kleinigkeiten -
@Atifan sagte in Unterschied zwischen NodeRed und Blockly?:
Also ist beides ziemlich das selbe
mit einem Unterschied:
Blockly IST javascript - node-red ist eine eigenständige "Sprache"Wenn du js-Lernen willst kannst du dir immer den echten js-Code ansehen, der von Blockly erzeugt wurde
-
Du kannst in Node-Red alle Funktionen in Javascript programmieren.
Node-Red hat aber in meinen Augen einen immensen Vorteil was die Visualisierung der Flows betrifft und hilft Dir in meinen Augen wesentlich besser Logikfehler in den Flows zu entdecken.
-
@mickym
Dazu muss man aber erst mal die Logik der Flows verstehen, was mir bei Blockly wesentlich leichter fällt. Bei Node-Red ist für mich die Logik nicht sofort zu erkennen. Beispie, ich hab ne Funktion und sehe erst was die macht, wenn ich sie mir anschaue (öffne). Bei Blockly fällt das Öffnen weg und ist so leichter zu lesen. -
@Jan1 sagte in Unterschied zwischen NodeRed und Blockly?:
ich hab ne Funktion und sehe erst was die macht, wenn ich sie mir anschaue (öffne)
und die enthält wiederum javascript.
Also muss man bei node red sich sowieso mit js beschäftigen
-
Ich wollte keinen Streit vom Zaun brechen.
Ich habe nur festgestellt je mehr man sich mit dem Programm beschäftigt, um so weniger Funktionen braucht man und kann alles über Nodes abbilden und dann ist es genial den Nachrichtenflow zu überwachen und brauche kein JS.
Selbst if-then geht alles über switch nodes - die Flows werden halt etwas komplexer - aber es steht ja jedem frei, wieviel er über Funktionen in node-red abbildet. Bei mir werden es immer weniger.
Und dann ist das Debuggen wesentlich einfacher - als Funktionen zu debuggen.
Ich behaupte mal - dass man die Funktionen aus Deinem Screenshot auch alle über einen Subflow abbilden kann. -
Hat beides seine Vor und Nachteile Finde beide nice
-
Hab mich mittlerweile intensiv in Blockly eingearbeitet, ist ein bisschen wie Lego spielen
Wenn ich mir dieses Node-Red Bild da oben ansehe da sträuben sich mir die Nackenhaare xD Sieht ja furchtbar unübersichtlich aus. -
@loverz
Das sage ich auch immer, wobei @mickym auch behauptet Node-Red wäre logischer. Das mag für Leute stimmen, die hier irgendwelche Vorkenntnisse in der Richtung haben, wenn ich mir so ein Flow ansehe und ich arbeite auch ein wenig mit Node-Red, dann dreht sich bei mir auch alles, weil das für mein Hirn nicht logisch ist. Mit Blockly habe ich deutlich weniger Probleme die Logik sofort zu verstehen und mir auch selber was aus dem Ärmel zu leiern, ohne vorher bei anderen abschauen zu müssen -
@loverz Bevor Du das überhaupt vergleichen kannst, versuche mal diesen Flow im Blockly abzubilden und entsprechende Baumstukturen im Blockly zu schreiben.
Du bekommst 6 Inputs und diese müssen alle im ioBroker als Baumstruktur abgebildet werden.
Wenn Du dies übersichtlich im Blockly hier auf einer Bildschirmseite abbilden kannst hast Du meinen Respekt - bevor Du diese Statements abgibst. Dieses Blockly würden gerne einige User hier im Forum nutzen und die Anerkennung vieler hier im Forum wäre Dir gewiss. Es gibt einige Threads, die JSON Strings oder Objekte gerne in Ihre einzelnen Datenpunkte zerlegt, im ioBroker nutzen würden. Musst nur mal die Suche bemühen.
Hier siehst DU meinen Input und was dann im ioBroker rauskommen soll - würde mich freuen, wenn Du Dich der Herausforderung stellst, bevor wir Deine Nackenhaare begutachten.
https://forum.iobroker.net/topic/43856/json-string-oder-java-object-in-iobroker-struktur/2
Das heißt ich gebe Dir alle 6 Stings oder Objekte als Input und Dein Blockly erstellt mir die entsprechende Baumstruktur im ioBroker.
Auch das Bild unten, bei dem sich Deine Nackenhaare sträuben - müsste ich erst mal sehen, welche Größe Dein Blockly- Rechteck hat und wieviele Farben es mit der gleichen Funktionalität in Deinem Blockly hätte, um zu beurteilen ob das dann bei mir Augenkrebs erzeugen würde. Wahrscheinlich wären es 9 Blocklies für jedes Gerät bzw. Szene.
-
@mickym
Siehst, genau das meine ich. Ich schau mir das an und verstehe überhaupt nicht was da wo und wie passiert. Richtig, es ist übersichtlich, aber was bringt mir das, wenn ich es null verstehe? Das ist aber exakt der Punkt den ich angesprochen habe, wenn man das mal verstanden hat, oder eben schon einige Grundlagen mitbringt, ist es wohl so leichter, aber auch nur dann und somit ist Blockly für die meisten zwar nicht übersichtlicher, aber von der Logik schneller zu verstehen und genau um das gehts bei dem Vergleich hier, auch wenn's mal wieder Äpfel und Birnen sind -
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