NEWS
Arduino messen steuern Visualisierung
-
Hallo zusammen und ein frohes Fest!
Ich kenne mich mit dem ioBroker und VIS recht gut aus und habe damit schon viel umgesetzt.
Nun kam mir die Idee ein bestehendes Projekt bestehend aus einem Arduino + Raspberry PI + Java neu aufszusetzen.
Der Arduino misst mehrere analoge Eingänge, die Messdaten werden dann im Arduino aufbereitet und per serieller Schnittstelle an den Raspberry gesendet.
Ein Java Programm ist dann die GUI welche die Daten anzeigt.
Dazu gibt es noch die digitalen IO die zum Schalten genutzt werden, einiges davon passiert im Arduino, einiges im Java Programm.
Es gibt auch Buttons in der GUI die IO's auf dem Arduino schalten.Mit gefällt das mit den Java nicht mehr so richtig, da ich kein Java Profi bin, fällt mir die Visualisierung / GUI nicht so einfach.
Neue Funktionen implementieren finde ich im ioBroker deutlich einfacher.Bevor ich nun loslege möchte ich versuchen gleich einen "sinnvollen" Weg einzuschlagen, deshalb vorab ein paar Fragen.
Die Analogen Daten hätte ich gerne mit kleinster Verzögerung in einer GUI dargestellt, eine 2 Sekunden Aktualisierung wäre zu langsam, bis zu 100ms wäre gut.
Im Node Red gibt es die wohl die Möglichkeit direkt auf die AD Eingänge zuzugreifen, schaffe ich es damit die Daten so schnell an die ioBroker zu senden
und in einem VIS View darzustellen?
Kann ich in Node Red auch mathematische Berechnungen mit den Werten durchführen wie zB. Wurzel ziehen, Quadrat, PI etc. ?
Oder nehme ich besser nur die Werte und sende diese zum ioBroker und schreibe dann im JS die Berechnung?Entstehen soll eine GUI mit der Darstellung der Daten (Spannungen, Ströme, Temperaturen etc) teils als einfache Zahlen, teils Diagramme.
Dazu einige Button um Ausgänge auf dem Arduino zu schalten, Datenbank Anbindung.
Halt ein komplexes Bedienfeld mit mehreren Seiten (Views) zum Navigieren etc.Schöne Feiertage noch!
-
@bavarian Hi, das kannst du eigentlich alles komplett in Node Red umsetzen. Du brauchst die Daten auch nicht weiter im Iobroker verarbeiten. Berechnen kann man eigentlich alles in NodeRed. Man kann sogar JS per Funktion Node in Node Red verwenden. Auch hat Node Red eine eigene Visu, nennt sich Dashboard, wo du theoretisch alles darstellen und auch steuern könntest. Werte ausgeben ist dabei kein Problem, Diagramme/Charts gibts auch.
Zur Erstellung von Diagramm, würde ich eventuell den Umweg über History oder Float Datenbanken verwenden, aber die lassen sich auch ins NodeRed Dashboard integrieren.
Zu dem Thema hat @mickym mal einen tollen Threat erstellt.
https://forum.iobroker.net/topic/43506/flot-diagramme-im-nodered-dashboard
Zu dem Thema, wie schnell und ob überhaupt deine Werte vom Arduino direkt in Node Red verfügbar sind, kann ich leider nichts sagen, damit habe ich mich noch nicht beschäftigt.
Nur aus Neugier, wieso brauchst du die Ausgaben innerhalb von 100ms auf dem VIS? -
@bavarian said in Arduino messen steuern Visualisierung:
Nun kam mir die Idee ein bestehendes Projekt bestehend aus einem Arduino + Raspberry PI + Java neu aufszusetzen.
Der Arduino misst mehrere analoge Eingänge, die Messdaten werden dann im Arduino aufbereitet und per serieller Schnittstelle an den Raspberry gesendet.Mein Vorschlag hier wäre, dem Arduino eine Netzwerkschnittstelle zu spendieren und die Daten per MQTT-Protokoll an einen MQTT-Server (Es muss nicht der ioBroker sein!) zu senden.
Im ioBroker werden dann die MQTT-Daten abonniert.Ein Java Programm ist dann die GUI welche die Daten anzeigt.
Das macht dann die Vis des ioBroker.
Dazu gibt es noch die digitalen IO die zum Schalten genutzt werden, einiges davon passiert im Arduino, einiges im Java Programm.
Es gibt auch Buttons in der GUI die IO's auf dem Arduino schalten.Ich habe da für die Kommunikation über MQTT 2 Pfade, get und set, die immer von der Visu aus zu sehen sind. Der Arduino schreibt also Werte in den get-Pfad und reagiert zum Schalten auf Werte im set-Pfad.
Die Analogen Daten hätte ich gerne mit kleinster Verzögerung in einer GUI dargestellt, eine 2 Sekunden Aktualisierung wäre zu langsam, bis zu 100ms wäre gut.
Ob das auf Dauer über MQTT läuft, vor Allem wenn es mehr Daten werden, kann ich nicht sagen.
Entstehen soll eine GUI mit der Darstellung der Daten (Spannungen, Ströme, Temperaturen etc) teils als einfache Zahlen, teils Diagramme.
Daten darstellen ist kein Problem.
Die Datenpunkte, von denen ich Verlaufsdaten sehen will, speichere ich in einer SQL-Datenbank und kann stelle sie in ioBroker aktuell in Flot-Diagrammen dar. -
Vielen Dank für eure Rückmeldung!
Ich werde mir das Dashboard ansehen vielleicht passt das ja schon.
Thema Datenpunkte oder SQL muss mich mir auch ansehen.
Da wäre es wichtig, dass der DP nicht nach einem Boot weg ist, also nicht nur Variable im RAM.@frankyboy73
100ms weil ich eine sich ständig wechselnde Spannung mit einem Bar Graph oder Instrument (Gauge) darstellen möchte.
Um genung Daten für eine Smoothing Funktion zu haben oder Peakhold.
Kommen die Daten zu langsam sieht es sehr ruckelig aus.@Andreas-5
Das mit der Netzwerkschnittstelle ist im Projekt nicht möglich da der Arduino auf einem anderen PCB steckt.
Eine Änderung ist leider nicht möglich da das Projekt oft schon nachgebaut wurde, müssten also alle dann ändern.
Einfacher ich gebe mit mit der Software mühe und beglücke die anderen mit einem Software Update in Form eines
Images. Das ist dann auch für die reinen Benutzer entspannt. -
Kannst doch über i2c einen ESP8266 dranhängen und dann mittels mqtt teilen
-
Ich spreche Arduinos über usriot RS232 auf TCP Adapter an. Die lassen sich einfach als serielle Schnittstelle in Node Red einbinden.
-
Eine Änderung ist leider nicht möglich da das Projekt oft schon nachgebaut wurde, müssten also alle dann ändern.
Einfacher ich gebe mit mit der Software mühe und beglücke die anderen mit einem Software Update in Form eines
Images. Das ist dann auch für die reinen Benutzer entspannt. -
@bavarian
Da ist ja noch ein Raspi im Spiel. Der kann doch prima die Daten zum ioBroker liefern. Entweder aktiv senden, oder passiv zur Verfügung stellen. Oder, je nach Datum, teils teils.Rest dann wie gewohnt per Vis. Für Diagramme kann ioBroker alles in eine Datenbank speichern. Flot oder Grafana Zeichen dann die Kurven.
10 Mal pro Sekunde kann, je nach Hardware, sportlich werden.
-
@peterfido der RPi ist ja für die GUI da. Den Schritt will er ja überspringen. Entweder haut er IOB direkt auf diesen RPI oder er spart sich den RPI mit einer Komponente die die seriellen Daten einliest und per MQTT verteilt. Ist ja auch alles eine Kostenfrage.
-
Klar läuft auf dem RPI der IOB.
Das mit dem lesen der Werte über die Serial per Node Red habe ich auch hinbekommen.
Somit steht ein großer Teil des Projektes schon und sieht auch noch gut ausProbleme bereitet das senden per Serial, dazu dann ein neuer Thread.