Usecase: Loco Speed Dashboard

Internet of Things, MQTT, Node-RED

Usecase: Loco Speed Dashboard

Postby peter&basti » 17.01.2018, 16:14

Hallo Freunde,

ich mal versucht, ein Dashboard unter Anderem für Loktachos zu bauen. Im Endausbau soll hier die reale Geschwindigkeit, die vom Railcom Decoder (ZIMO) ausgegeben wird, angezeigt werden. Das geht natürlich nicht in der virtuellen Simulation.

Ich verwende nun "V" das ist der Prozentwert (weil ich Prozent mit km/h Umrechnung in Rocview benutze), der richtige Wert wäre "V_realkmh"

Rein technisch funktioniert der Flow:

dashboard.png


Ich habe aber bis jetzt keine Möglichkeit gefunden, das Dashboard dynamisch zu gestalten. Derzeit sind alle 4 "gauges" hart mit einer Lok verdrahtet.
Ideal wäre:

- dass ein Tacho nur angezeigt wird, wenn zB eine Lok ungleich idle ist.
- dass die Überschrift aus der Lok id kommt
- etc

Soweit ich mich bisher eingearbeitet habe, ist das beim Gauge-Node nicht machbar.
Falls jemand einen Tipp hat, wird dankbar entgegengenommen :idea:
You do not have the required permissions to view the files attached to this post.
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail 64bit auf Win10 Pro 64
Traktion: OpenDCC GBM
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Decoder: 99% Zimo
Experimentell: MQTT & Node-Red
peter&basti
 

Re: Usecase: Loco Speed Dashboard

Postby peter&basti » 17.01.2018, 16:28

Hallo Freunde,

noch eine Frage: wo finde ich eine Anleitung, wie die einzelnen vorgefertigten Anzeige-Objekte im Dashboard individuell angeordnet/positioniert werden können?
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail 64bit auf Win10 Pro 64
Traktion: OpenDCC GBM
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Decoder: 99% Zimo
Experimentell: MQTT & Node-Red
peter&basti
 

Re: Usecase: Loco Speed Dashboard

Postby rjversluis » 17.01.2018, 17:02

Hi Peter,

super Usecase. ;)
Ideen sind immer am beste um neue Möglichkeiten zu forschen. :)
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: Usecase: Loco Speed Dashboard

Postby peter&basti » 17.01.2018, 17:25

Hi Rob,

hast Du vielleicht auch ein paar Tipps zu meinen Fragen?
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail 64bit auf Win10 Pro 64
Traktion: OpenDCC GBM
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Decoder: 99% Zimo
Experimentell: MQTT & Node-Red
peter&basti
 

Re: Usecase: Loco Speed Dashboard

Postby rjversluis » 17.01.2018, 17:40

Abend Peter,

ich entwickle nicht im Team Nod-RED, so fragen über Dashboard kann ich nicht beantworten.
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Re: Usecase: Loco Speed Dashboard

Postby nice2have » 17.01.2018, 20:03

Hallo Peter,
tolle Sache und Hut ab, daß Du Dich da einarbeitest :thumb_up:
noch eine Frage: wo finde ich eine Anleitung, wie die einzelnen vorgefertigten Anzeige-Objekte im Dashboard individuell angeordnet/positioniert werden können?

Wenn Du die Infos dazu nicht direkt unter Node-Red Dashboard findest, sieht es schlecht aus. Ich habe mir in den letzten Tagen auch einen "Wolf" gesucht. Google war da noch mein bester Freund :wink: Die Widget-Größe ist auf jedenfalls einstellbar. Ich nehme mal an, daß bei Site-Größe 100% die Widgets der Reihe nach angeordnet werden.
Ich habe aber bis jetzt keine Möglichkeit gefunden, das Dashboard dynamisch zu gestalten. Derzeit sind alle 4 "gauges" hart mit einer Lok verdrahtet.
Ideal wäre:

- dass ein Tacho nur angezeigt wird, wenn zB eine Lok ungleich idle ist.
- dass die Überschrift aus der Lok id kommt
- etc

Das geht nur über einen Function-Node und einlesen in javascript Programmierung. Denn die angezeigten Widgets sind festgelegt, in dem Moment wo sie angelegt werden. Da ist keine Dynamik machbar (mir nicht bekannt). Du mußt also den umgekehrten Weg gehen und festlegen, wie viele Loks gleichzeitig angezeigt werden sollen und dann nur die, die keinen Status "idle" haben (<if>). Das Ganze wird dann über <msg.payload> an das entsprechende Widget übertragen.

Da hast Du Dir eine große Aufgabe gestellt :wink:

Ich bin aber auch noch nicht fertig. Dynamische Tabellen haben es genauso in sich :roll:
MfG
Gerrit
[bekennender Unterstützer der Software Rocrail]
nice2have
 

Re: Usecase: Loco Speed Dashboard

Postby peter&basti » 17.01.2018, 23:04

Hallo Gerrit,

Danke für Deine Rückmeldung, deine Ausführungen haben mich auf ein mögliches Design gebracht:

tachodesign.PNG


Zuerst (in der obersten Reihe) Textfelder, welche die Loco ID anzeigen
Danach die Tachos...

Für das Layout habe ich auch schon einen Plan. Wenn alle Elemente zB mit 6 Einheiten breit definiert werden und der Rahmen mit 24 EInheiten definiert ist, dann sortiert sich alles schön ein...

Für die Function (bis jetzt hatte ich eine je Tacho, welches hardcoded die Lokgeschwindigkeit liest) oder auch mehrere, habe ich allerdings noch keinen Plan...

Was ich noch nicht durchblickt habe, jede Ausgabe heisst msg.payload, da gibt es offenbar keine Variation..

Kann man eigentlich zwei Function Nodes hintereinander hängen, d.h. der erste macht das Auslesen und aufteilen auf Variable und der zweite dann die Ausgabe?

Ich werde das jedenfalls versuchen....
You do not have the required permissions to view the files attached to this post.
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail 64bit auf Win10 Pro 64
Traktion: OpenDCC GBM
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Decoder: 99% Zimo
Experimentell: MQTT & Node-Red
peter&basti
 

Re: Usecase: Loco Speed Dashboard

Postby peter&basti » 17.01.2018, 23:24

Hallo Gerrit,

Kann man eigentlich zwei Function Nodes hintereinander hängen, d.h. der erste macht das Auslesen und aufteilen auf Variable und der zweite dann die Ausgabe?

Ich werde das jedenfalls versuchen....


Also der 2. Function Node bekommt nichts mit von den Variablen des ersten.

Oder ich habe das Konzept von msg.payload noch nicht verstanden.
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail 64bit auf Win10 Pro 64
Traktion: OpenDCC GBM
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Decoder: 99% Zimo
Experimentell: MQTT & Node-Red
peter&basti
 

Re: Usecase: Loco Speed Dashboard

Postby nice2have » 18.01.2018, 07:52

Moin Peter,
Was ich noch nicht durchblickt habe, jede Ausgabe heisst msg.payload, da gibt es offenbar keine Variation..

Doch, Du kannst es auch msg.xyz nennen, dann mußt Du es nur im nächsten Node so abfragen.
Kann man eigentlich zwei Function Nodes hintereinander hängen, d.h. der erste macht das Auslesen und aufteilen auf Variable und der zweite dann die Ausgabe?

Ja sicher, warum nicht ?
Also der 2. Function Node bekommt nichts mit von den Variablen des ersten.

versuch es mal mit flow.set() und flow.get(). Damit werden Variablen in einem Flow auch anderen Nodes zur Verfügung gestellt (ähnlich globalen Variablen).
https://nodered.org/docs/writing-functions#flow-context
https://nodered.org/docs/writing-functions#multiple-messages
MfG
Gerrit
[bekennender Unterstützer der Software Rocrail]
nice2have
 


Return to IoT (DE)