NEWS
Blockly vs. Node-Red vs. Javascript
-
@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. -
@djmarc75 Wichtig ist halt, das die Visualisierung weder mit Blockly, noch mit NodeRed was zu tun hat. Man muss nicht das NR Dashboard nutzen. NR, Blockly und JS sind dafür da, dass man eine Logik implementiert. Deine Karte wirst Du wahrscheinlich in Deine VIS eingebaut haben, genauso habe ich eine VIS Seite mit meinem Grundriss (könnte ich nie und nimmer im NR Dashboard erstellen) in mein NodeRed Dashboard eingebunden habe.
Ich finde es schon wichtig, dass man diese Tools als Logikmaschinen einordnet und das die zu implementierende Logik mit allen 3 Tools zu implementieren geht und es bezgl. Visualisierung, der Verwendung von History Adaptern und damit der Anbindung an Datenbanken und die Verwendung von Graph Software von Grafana oder flot - keine Einschränkungen gibt und somit auch kein Entscheidungskriterium Pro oder Contra für einen Einsteiger darstellt.
Im Prinzip ist es ein Riesenvorteil des iobroker Systems, dass alle Logikmaschinen insgesamt hervorragend in das System integriert sind und das es Möglichkeiten gibt alle Systeme gemeinsam zu nutzen und zwar genauso wie über andere Adapter, in dem man über Datenpunkte die jeweilig anderen System triggern kann.
-
@renegade-0
OK, dann gebe ich auch noch meinen Senf dazu:
Ich nutze Blockly und JS.
NodeRed gar nicht - aus einem einfachen Grund: Mit Blockly und JS habe ich alles was ich brauche.
Ich halte es genauso wie @BananaJoe : Mit Blockly baue ich mir die Prototypen. Das geht für mich schneller, da ich mit JS noch nicht so vertraut bin. Sobald das dann halbwegs läuft, kopiere ich mir den JS-Code und verwende das als Basis, um die gewünschte Funktionalität in JS abzubilden. Da sind viele Dinge dann einfach eleganter umzusetzen.
Aus vielen Blöcken werden dann ganz schnell einige wenige Zeilen JS. Damit komme ich berufsbedingt letztendlich besser zurecht. -
@liv-in-sky sagte in Blockly vs. Node-Red vs. Javascript:
@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
Das ist genau die Frage!
die (vorweg definierte) Zielgruppe für Blockly ist der Einsteiger!
Deswegen sind komplexere Möglichkeiten nicht vorgesehen (gewesen), um die Anzahl Blöcke übersichtlich zu halten und einen "Programmiernoob" nicht zu überfordern.genau diese "und was dann" hat inzwischen dazu geführt, dass neue Blöcke und Möglichkeiten hinzugefügt wurden.
Hier hätte man ggf. schon einen Expertenmodus dafür einführen sollen.
Mit diesem könnten dann sogar noch mehr Blöcke hinzugefügt werden ohne Einsteiger abzuschrecken.
Ansonsten ist es wie mit vis.