NEWS
Blockly vs. Node-Red vs. Javascript
-
@mickym
ich möchte hier einen sachlichen und konstruktiven Diskurs. Negative Kritik oder gar persönliche Angriffe verbitte ich mir. (Sollte eigentlich selbstverständlich sein)
Klar kann man anderer Meinung sein und das ist ja auch gut so. Nur dann bitte argumentativ, sonst wird es ebenfalls ignoriert.Am We werde ich dann das, was bisher als pro bzw. kontra jeweils aufgelaufen ist erst einmal zusammenfassen. Kann ja dann noch ergänzt werden. Allerdings sollte es auch nicht zu Detailspezifisch sein, sondern eher ein grober Überblick.
-
Sollte man den thread Titel nicht erweitern um JS:
Blockly vs. Node-Red vs. Javascript
Ich bin da eher auf JS unterwegs. Bedingt von früher (C64 Zeiten und basic (hieß das glaub ich)).
Das andere ist mir zu bunt !
Ist jetzt keine fundierte pro/contra Aufstellung.
Aber ich versuche halt alles mit JS hin zu bekommen. -
@bahnuhr sagte in Blockly vs. Node-Red:
Sollte man den thread Titel
nichterweitern um JSNOCH wäre korrekt !
Aber ich halte mich jetzt wieder raus -
@djmarc75 sagte in Blockly vs. Node-Red:
NOCH wäre korrekt !
du bist der beste.
@djmarc75 sagte in Blockly vs. Node-Red:
Aber ich halte mich jetzt wieder raus
Ne, mach das nicht.
Bin doch jetzt da. -
@bahnuhr sagte in Blockly vs. Node-Red:
Sollte man den thread Titel nicht erweitern um JS:
Guter Einwand.
p.s.: Wie geht das?^^
-
-
@bahnuhr
danke -
Ich hab nochmal ein paar Beiträge oder Argumente aus Diskussionen, an die ich mich noch so dunkel erinneren kann, zusammengetragen.
Hier sind ja dann auch oft die Folgebeiträge interessant, die man dann ggf. in eine Gesamtbetrachtung fließen lassen kann:
https://forum.iobroker.net/post/610657
https://forum.iobroker.net/post/714741
https://forum.iobroker.net/post/611966 -
@bahnuhr sagte in Blockly vs. Node-Red vs. Javascript:
Sollte man den thread Titel nicht erweitern um JS:
nicht unbedingt, wenn es hier um verschiedene grafische Programmieroberflächen im Vergleich geht
-
In diesem Beitrag (https://forum.iobroker.net/post/611966) hab ich ja schon mal angeregt, wenn man die gleiche Frage- oder Problemstellung einfach mal mit beiden oder von mir aus auch mit 3 Tools implementiert, dann kann man sich vielleicht auch als Anwender ein Bild zu machen. War ja mal ein Vorschlag. Vielleicht kann man das ja mal anhand von oft wiederkehrenden Problemstellungen mal durchexerzieren. (Beispiel von einfachen Steuerungen, in Abhängigkeit von Bedingungen usw.)-
-
@mickym sagte in Blockly vs. Node-Red vs. Javascript:
In diesem Beitrag (https://forum.iobroker.net/post/611966) hab ich ja schon mal angeregt, wenn man die gleiche Frage- oder Problemstellung einfach mal mit beiden oder von mir aus auch mit 3 Tools implementiert, dann kann man sich vielleicht auch als Anwender ein Bild zu machen. War ja mal ein Vorschlag. Vielleicht kann man das ja mal anhand von oft wiederkehrenden Problemstellungen mal durchexerzieren. (Beispiel von einfachen Steuerungen, in Abhängigkeit von Bedingungen usw.)-
Finde ich gut.
Sowas wie Datenpunkt a+b holen und wenn die gleich sind, dann schalte Datenpunkt c.
-
weiß nicht ob das geht mit nodered?
braucht man früher oder später beim fortgeschrittenen programmieren in iob
- selektoren über datenpunkte und für aufzählungen (enums/functions)
- kann man in den script blöcken (oder functions in nodered) auf die objekt-daten der datenpunkte zugeifen (common.name)
- kann man auf ein array von datenpunkten triggern
als anfänger fand ich das system mit payload eher unverständlich - lag daran , dass das json-verständnis für mich etwas dauerte - ich fand mich mit al den beispielen im forum sehr schnell zurecht mit blockly - node red nutzte ich nur für komplexe stringverarbeitungen, da ich javascript nicht konnte - nachdem ich javascript etwas beherrschte, verschwand nodered bei mir fast vollständig
neagtiv bei blockly - json erstellung
-
@renegade-0 sagte in Blockly vs. Node-Red vs. Javascript:
Sowas wie Datenpunkt a+b holen und wenn die gleich sind, dann schalte Datenpunkt c.
Genau - dann muss man halt noch Rahmenbedingungen - trigger usw. festlegen. Sollten halt möglichst viele mitmachen.
-
Hi,
ein Punkt den ich über node-red gute gelöst finde, ist die Interaktion mit anderen Umgebungen,
z.B. nutze ich die alexa Integration und webhooks für IFTTT. Da gibt es fertige Knoten. -
@liv-in-sky sagte in Blockly vs. Node-Red vs. Javascript:
weiß nicht ob das geht mit nodered?
braucht man früher oder später beim fortgeschrittenen programmieren in iob
- selektoren über datenpunkte und für aufzählungen (enums/functions)
- kann man in den script blöcken (oder functions in nodered) auf die objekt-daten der datenpunkte zugeifen (common.name)
- kann man auf ein array von datenpunkten triggern
als anfänger fand ich das system mit payload eher unverständlich - lag daran , dass das json-verständnis für mich etwas dauerte - ich fand mich mit al den beispielen im forum sehr schnell zurecht mit blockly - node red nutzte ich nur für komplexe stringverarbeitungen, da ich javascript nicht konnte - nachdem ich javascript etwas beherrschte, verschwand nodered bei mir fast vollständig
neagtiv bei blockly - json erstellung
Nun da sprichst Du halt genau die Schwächen an, das liegt aber nicht an NodeRed selbst, sondern dass hier die Integration der iobroker Javascript-Bibliothek halt nicht vollständig abgebildet ist.
Habe ich versucht damit zu beschreiben:
- wird leider nicht so vollständig wie bei Blockly unterstützt, da iobroker JS Bibliotheken nicht direkt verwendet werden können (s. SendTo, Räume, Funktionen)
Also im Prinzip beschreibst Du hier richtig die Limitierungen des NodeRed Adapters.
selektoren über datenpunkte und für aufzählungen (enums/functions)
Also hier klares NEIN.
Die enum Datenpunkte scheinen sogar bewusst für NodeRed gesperrt zu sein. Für einzelne Datenpunkte kann man aber auslesen, welchen enums die zugehören. Dabei ist die getObject Node eher überflüssig, die listObjects Node liefert mehr.
Da bekommst dann wenigstens zu einem Datenpunkt mit, ob dieser einer Funktion oder Raum zugeordnet ist:- kann man in den script blöcken (oder functions in nodered) auf die objekt-daten der datenpunkte zugeifen (common.name)
Kann wie gesagt mittels der list Node ausgelesen werden.(s.oben)
kann man auf ein array von datenpunkten triggern
Nein. Man kann zumindest Wildcards nutzen und kann damit auch auf mehrere Datenpunkte mittels Wildcards triggern. Aber Arrays gehen nicht.
Mit den Node Red Mqtt Nodes - die auch MQTT-V5 können (was der iobroker Adapter noch nicht kann), kannst Du aber verschiedene Topics subscriben und die werden intern auch als Array geführt und triggern. Auch hier ist alles ein Problem des NodeRed Adapters.
Wie gesagt, Du hast die Schwachstellen oder die Limitierung genau identifiziert.
Trotzdem kann man über Datenpunkte ja eine Verbindung zwischen NodeRed und Javascript schaffen. Ich hab sowas ja mal für die SendTo Funktionalität implementiert (die es im NodeRed auch nicht gibt). Sind alles offene Issues im NR Adapter.
https://forum.iobroker.net/topic/57210/nodered-sendto-proxy-mit-js?_=1670961730662
Solche ProxyScipts kann man natürlich basteln und hab ich ja auch mit JS gemacht, um die fehlende Funktionalität über Umwege auch für NodeRed verfügbar zu machen.
Am im Prinzip ist die Integration in den iob Broker halt so gut oder schlecht, wie der Adapter es erlaubt.
-
@renegade-0 also, ich habe hier mal die Diskussion überflogen.
Ich nutze Blockly und JavaScript.
Blockly für die "schnelle Nummer", die kleinen Aufgaben - und für "Prototypen".
Wenn ich was komplexeres mache schnappe ich mir gerne einzelne Probleme davon und baue die in einem separaten Skript zu etwas funktionierenden. Das sind meine "Prototypen" - und die mache ich gerne mit Blockly.Denn ein Blockly kann man dann einfach in JavaScript umwandeln bzw. sich das was man braucht aus der JavaScript Ansicht heraus kopieren / abschauen.
Wenn es komplexer wird ist es halt JavaScript. Viele Dinge die in Blockly dann komplex wären sind in JavaScript ganz einfach. Zum Beispiel Suchen & Ersetzen von Text. Aber man kann in Blockly auch JavaScript-Code nutzen, ergo auch das einfachere Suchen und Ersetzen.
Zum Thema NodeJS Bibliotheken nutzen. Die man ja in den JavaScript Adapter eintragen kann und dann installiert werden und genutzt werden können. Oder in NodeRed via function Nodes on the fly verwendet werden können
Da fang mal gar nicht erst mit an mit dieser Abhängigkeitshölle. Da baust du dir ein Skript was eine bestimmte Bibliothek braucht ... die irgendein anderer Pflegt ... oder auch nicht ... die dann bei jedem Update mit gepflegt werden muss oder Probleme machen kann.
Ich mag meine Skripte "Allein bzw. auf dem Grundsystem lauffähig" - da kann ich das einfach auf ein anderes System kopieren und das Ding läuft. Wenn ich den mal etwas aus so einer Bibliothek brauche mache ich mir die Mühe den Quellcode dazu anzusehen. Und oft ist es erschreckend wenig was da drin steht bzw. was man eigentlich aus der Bibliothek braucht, die paar Zeilen kopiere ich in meinen Code mit einem Hinweis auf die Herkunft - und das Skript wird immer so selbstständig funktionieren.NodeRed hab ich mir mal angesehen. ist toll. Brauchte ich aber nicht weil ich halt schon mit JavaScript alles hinbekomme und wenn ich Faul bin reicht Blockly.
-
@liv-in-sky sagte in Blockly vs. Node-Red vs. Javascript:
braucht man früher oder später beim fortgeschrittenen programmieren in iob
jetzt sind wir aber schon fast beim Thread zu den 3 (4) Varianten des js-Adapters!
Die Zielgruppe fpr Blockly ist nicht unbedingt der fortschrittliche Programmierer!
Das sollte man beim Vergleich nicht außer acht lassen. -
@homoran sagte in Blockly vs. Node-Red vs. Javascript:
Die Zielgruppe fpr Blockly ist nicht unbedingt der fortschrittliche Programmierer!
denke schon - nach einen jahr ist man das - und was dann - bei den momentanen einschränkungen von nodered, bedeutet das umlernen !
ich sehe es so - meine persönliche meinung !!!!
gäbe es kein nodered in iobroker, würde ich das nicht merken - es gäbe keine einschränkungen für mich
ohne blockly wäre ich wahrscheinlich nicht hier, weil ich das einfache konzept von blockly als anfänger gut fand - wahrscheinlich hätte ich nodered angeschaut und mein smarthome nur damit realisiert - es würde dann aber mir einiges fehlenmit blockly einfach einsteigen - wenn's besser wird, etwas javascript abschreiben und lernen und man hat alles, was man braucht. will man dann noch in der vis "rum-coden" hilft einem das javascript-wissen - mit nodered kann man keine solche vis wie bei iobroker aufbauen
aus anfängern werden irgendwann fortgeschrittene - über blockly geht das relativ schnell
mit blockly lernt man programmieren - miit nodered lernt man prozessverarbeitung
-
@liv-in-sky sagte in Blockly vs. Node-Red vs. Javascript:
mit blockly einfach einsteigen - wenn's besser wird, etwas javascript abschreiben und lernen und man hat alles, was man braucht. will man dann noch in der vis "rum-coden" hilft einem das javascript-wissen - mit nodered kann man keine solche vis wie bei iobroker aufbauen
Na ja.
- Das ist missverständlich in meinen Augen. In NodeRed kannst du genauso mit javascript codieren, wie mit dem JS Adapter (mal von den iob Bibliotheken abgesehen). Inzwischen hast Du auch einen sehr leistungsfähigen Code-Editor mit Auto-vervollständigen und Code Analyse. Bzgl. vis gibt es keine Nachteile mit Node-Red. Iobroker-Vis und die Widgets greifen auf Datenpunkte zurück und die können genauso mit NodeRed modifiziert werden. Das gleiche gilt für die anderen Visualisierungsadapter wie Jarvis etc.- Zusätzlich hat kann man weitere Dashboards nutzen oder beides sogar kombinieren.
-
Guten Morgen.
Jetzt muss ich mich da doch nochmals zu äußern.Ich nutze ja, wie schon geschrieben, beide "Systeme" und werde da auch keine Nachteile pro System schreiben - da ich keine sehe.
Fange ich mal mit Blockly an:Ich nutze zu 95% Blockly da ich dieses System sehr einfach finde.
Für reines skripten und um evtl. Javascript zu "lernen" recht easy.Der größte Unterschied zu Node-Red ist aber der dass man in Node-Red ein System hat welches wirklich ALLES vereint.
Sei es skripten, visualisieren und vieles mehr. Ja, man kann sich sogar die meisten Adapter in ioBroker "sparen" da es dafür die Nodes gibt. Zugegeben sind nicht alle Nodes geeignet und funktionell aber das liegt nicht am System sondern an der "Pflege" der Nodes seitens der Developer - ähnlich den Adaptern in ioBroker !
Ein Beispiel wofür ich Node-Red nutze ist mein GPS-System:In Verbindung mit der Tankerkönig-Node habe ich quasi fast schon ein Navi welches mir, je nach GPS-Standort, die 5 naheliegendsten Tankstellen inkl. Preise und Adressen anzeigt.
Sowas ist mit Blockly nicht machbar da im ioB einfach der Adapter Tankerkönig solche Auswertungen (Radius, Adressen, usw) nicht hergibt.
Zugegeben nutze ich die VIS in Node-Red garnicht da ich bei der ioB-VIS einfach mehr Möglichkeiten zum optischen Spielen sehe. Das ist aber Geschmackssache.Mein Fazit:
Blockly zum Skripten - mehr halt nicht.
Node-Red - all-inclusive.