Use cases & Reporting
Line Monitoring
Line overview dashboard
introduction this document describes how to set up a line overview dashboard it gives a real time, at a glance overview of every production line simultaneously it shows input tank levels, mixer status, and storage tank state without the operator having to navigate between separate dashboards audience floor operators, shift leads purpose real time awareness of the full production line across multiple lines dashboard layout the dashboard is organised into three rows input tanks fill levels of all input tanks per line mixer running status, current batch step, quality pass rate and availability per mixer storage tanks input pump rpms, storage tank levels and cleaning flags per line at the top of each section, a text panel repeats per line to clearly label which line is being shown key design decisions panels repeat per $line most panels are configured to repeat horizontally by the $line variable this means the dashboard scales automatically as lines are added the $mixer variable repeats per mixer within the mixer row, panels that are specific to a single mixer (status, batch step, availability) repeat by the $mixer variable instead, so one block of panels appears per mixer value transformations filter and rename by line because asset queries return data for all lines at once, each repeating panel uses a filter fields by name transformation with the pattern ${line\ text} to keep only the fields relevant to the currently rendered line, followed by a rename by regex to strip the path prefix and leave clean display names like tank 1 or input pump 2 step by step creating variables $line , $mixer , $tank , $storage tank , $mixer input pump and $storage input pump this dashboard relies on a set of asset variables that cascade from the selected lines downward most variables are hidden from the dashboard header only $line is visible to the operator why use variables at all? rather than hardcoding asset names in each panel, variables make the dashboard dynamic if a third line or a new tank is added to the asset tree, the variables pick it up automatically without any panel edits the hidden variables ( $mixer , $tank , etc ) also enable panel repetition when a panel is set to repeat by $line , grafana renders one copy of that panel per line value without a variable, this repeat mechanism is not available why the cascade? each variable is scoped to its parent $line → $mixer / $tank / $storage tank → $mixer input pump / $storage input pump when the operator selects line 1, all child variables automatically resolve to only line 1's assets, so every panel on the dashboard stays in sync create variable $line this is the only visible variable it lets the operator filter the dashboard to one or more lines general name line label line query options query type asset parent assets no parent selection options multi value checked deselect 'allow custom values' create variable $mixer general name mixer hide variable query options query type asset filter by asset path /mixer/ parent assets $line use asset path as value checked (this makes the row title $mixer display a readable name like line 1\mixer rather than a uuid ) selection options include all option checked multi value checked deselect 'allow custom values' create variable $tank general name tank hide variable query options query type asset filter by asset path /tank/ parent assets $line selection options include all option checked deselect 'allow custom values' create variable $storage tank general name storage tank hide variable query options query type asset filter by asset path /storage/ parent assets $line selection options include all option checked deselect 'allow custom values' create variable $mixer input pump general name mixer input pump hide variable query options query type asset parent assets $mixer selection options include all option checked multi value checked deselect 'allow custom values' create variable $storage input pump general name storage input pump hide variable query options query type asset parent assets $storage tank selection options include all option checked multi value checked deselect 'allow custom values' creating the input tanks row this static row acts as a section divider for the input tank panels below it click > row and configure the row options title input tanks click update add a line label text panel a simple text panel at the top of each repeated section makes it immediately clear which line is being displayed, even when multiple lines are shown side by side click > visualisation and select the built in dashboard data source (no query needed) change visualisation to text and configure the panel options panel options title (leave empty) content (markdown mode) \<font size="6"> \<b>\<p style="text align center">${line\ text}\</p>\</b> \</font> the \ text format modifier returns the display label of the variable rather than its value, so it shows line 1 instead of an internal id configure the repeat options repeat by variable line repeat direction horizontal max per row 2 add a bar gauge visualisation for input tank levels this panel shows the current fill level of every input tank for the selected line as a vertical bar gauge, giving an instant visual read of supply levels click > visualisation and select data source factry historian datasource configure the data source tab assets assets $tank properties level aggregation mean , period $ interval include last known point checked use engineering specs checked add transformation 1 filter fields by name in the transformations tab, click + add transformation and select filter fields by name this is needed because the query returns level data for every tank across all lines at once — columns like line 1\tank 1 · level , line 2\tank 1 · level , etc since this panel repeats per $line , each copy needs to throw away the columns that don't belong to it under include , switch to filter by regex and enter ${line\ text} |time this pattern has two parts separated by | ${line\ text} — keep any column whose name starts with the current line (e g line 1 ) when grafana renders the line 1 copy of the panel, only line 1\\ columns pass through; line 2 columns are discarded time — also keep the time column, which is required by the join by field transformation below add transformation 2 rename by regex click + add transformation and select rename by regex after filtering, column names still look like line 1\tank 1 · level this transformation strips everything except the tank number regex (tank \d) rename pattern $1 the result is clean display names like tank 1 , tank 2 in the bar gauge add transformation 3 join by field click + add transformation and select join by field leave the options at their defaults this merges the individual per tank time series into one wide table so the bar gauge can display all tanks side by side in a single panel add transformation 4 organize fields click + add transformation and select organize fields under order , set order by name (ascending) this ensures the tanks always appear in a consistent left to right order ( tank 1 , tank 2 , ) regardless of the order the query returns them change visualisation to bar gauge and configure panel options panel options title (leave empty) bar gauge options orientation vertical display mode basic name placement auto value options reduce last (not null) thresholds 0 → dark red 10000 → text (default colour) (adjust the threshold value to match your tank capacity ) configure the repeat options repeat by variable line repeat direction horizontal max per row 2 creating the mixer row click > row and configure the row options title mixer click update and drag the row below the input tanks panels add a stat visualisation for input pump rpms (mixer) this panel shows the current rpm of every input pump feeding the mixer, repeated per line it gives a quick check that all pumps are spinning at expected speeds click > visualisation and select data source factry historian datasource configure the data source tab assets assets $mixer input pump properties rpm aggregation last , period $ interval include last known point checked use engineering specs checked add transformations filter fields by name include pattern ${line\ text} |time rename by regex regex (input pump \d) rename pattern $1 join by field organize fields exclude time order by name (ascending) change visualisation to stat and configure panel options value options fields all fields (/ /) reduce last (not null) stat styles color mode value graph mode none configure the repeat options repeat by variable line repeat direction horizontal max per row 2 add a stat visualisation for mixer status, recipe and cleaning flag this panel shows three properties side by side as stat cells for each mixer whether it is running, which recipe is currently active, and whether it needs cleaning it repeats once per mixer click > visualisation and select data source factry historian datasource configure the data source tab assets asset $mixer properties running , current recipe , needs cleaning aggregation last , period $ interval include last known point checked add transformation 1 join by field click + add transformation and select join by field leave the options at their defaults this joins the three separate property time series into one wide table so the stat panel can display them as individual side by side cells add transformation 2 labels to fields click + add transformation and select labels to fields keep labels assetproperty value label assetproperty this promotes the assetproperty label into a column name, giving you running , current recipe and needs cleaning as separate fields add transformation 3 organize fields click + add transformation and select organize fields hide time reorder fields running first, current recipe second, needs cleaning third change visualisation to stat and configure panel options panel options title (leave empty) transparent background checked value options fields all fields reduce last (not null) stat styles orientation vertical color mode background text mode value field overrides running value mappings — true → text running , color dark green ; false → text stopped , color dark red needs cleaning value mappings — true → text needs cleaning , color orange ; false → text , color transparent current recipe color → fixed color #8080804d (muted grey); value mapping — empty → text no recipe , color transparent configure the repeat options repeat by variable mixer repeat direction horizontal max per row 2 add a stat visualisation for current batch step this panel shows the name of the most recently started batch step (filling, mixing or emptying) for each mixer it repeats once per mixer click > visualisation and select data source factry historian datasource configure the data source tab events query type simple assets $mixer event types filling step , mixing step , emptying step limit 1 (only the most recent event is needed ) change visualisation to stat and configure panel options panel options title (leave empty) transparent background checked value options fields /^eventtype$/ reduce last (not null) stat styles color mode none graph mode none text mode value configure the repeat options repeat by variable mixer repeat direction horizontal max per row 2 add a combined stat visualisation for availability and quality pass rate this single panel combines three metrics into one stat display per mixer availability (percentage of time the mixer was running), quality pass rate (fraction of emptying steps that passed visual inspection), and finished batch count (number of completed mixing batch events) combining them in one panel saves horizontal space in the repeated mixer row click > visualisation and select data source factry historian datasource configure query a — quality pass rate (emptying step events) tab events query type simple assets $mixer event types emptying step properties visual inspection result configure query b — availability (running asset property) tab assets assets $mixer properties running aggregation mean , period 1m fill previous (forward fills the last known running state into any gap so that availability is calculated correctly ) configure query c — finished batch count (mixing batch events) tab events query type simple assets $mixer event types mixing batch add transformations (applied to query a to compute pass rate) group by field visual inspection result , operation group by , aggregation count transpose (pivots outcome values — pass , fail , needs review — into separate columns ) calculate field (leave options empty — adds a total column by summing all value columns ) calculate field — mode binary operation left pass operator / right total replace all fields checked reduce — mode reduce fields , reducers mean (collapses the pass rate series to a single value ) filter fields by name include pattern eventtype (isolates the batch count field from query c ) reduce — mode reduce fields , reducers count (counts the number of mixing batch events ) rename by regex regex (running) rename pattern running concatenate fields (brings the availability, pass rate and batch count values into a single row ) organize fields order running (availability) first, pass / total (quality) second, mixing batch · eventtype (batch count) third change visualisation to stat and configure panel options value options reduce mean standard options field override matching / ity/ (matches availability ) unit → percent (0–1) stat styles color mode value graph mode none configure the repeat options repeat by variable mixer repeat direction horizontal max per row 2 creating the storage tanks row click > row and configure the row options title storage tanks click update and drag the row below the mixer panels add a stat visualisation for storage input pump rpms this panel mirrors the mixer input pump rpm panel but targets the pumps feeding the storage tanks it repeats per line click > visualisation and select data source factry historian datasource configure the data source tab assets assets $storage input pump properties rpm aggregation last , period $ interval include last known point checked use engineering specs checked add transformations filter fields by name include pattern ${line\ text} |time rename by regex regex tank (\d) (input pump) rename pattern $2 tank $1 (produces readable names like input pump tank 1 , input pump tank 2 ) join by field organize fields exclude time order by name (ascending) change visualisation to stat and configure panel options value options fields all fields (/ /) reduce last (not null) stat styles color mode value graph mode none configure the repeat options repeat by variable line repeat direction horizontal max per row 2 add a bar gauge visualisation for storage tank levels this panel shows the current fill level of every storage tank per line, using the same layout as the input tank bar gauges above click > visualisation and select data source factry historian datasource configure the data source tab assets assets $storage tank properties level aggregation mean , period $ interval include last known point checked use engineering specs checked add transformations filter fields by name include pattern ${line\ text} |time rename by regex regex (storage tank \d) rename pattern $1 join by field organize fields order by name (ascending) change visualisation to bar gauge and configure panel options orientation vertical display mode basic value options reduce last (not null) configure the repeat options repeat by variable line repeat direction horizontal max per row 2 add a stat visualisation for storage tank cleaning flags this panel shows the needs cleaning flag for each storage tank per line, alerting operators to tanks that require attention before the next batch click > visualisation and select data source factry historian datasource configure the data source tab assets assets $storage tank properties needs cleaning aggregation last , period $ interval include last known point checked use engineering specs checked add transformations filter fields by name include pattern ${line\ text} |time rename by regex regex (storage tank \d) rename pattern $1 join by field organize fields exclude time order by name (ascending) change visualisation to stat and configure panel options value options fields all fields (/ /) reduce last (not null) value mappings true → needs cleaning , color orange false → , color transparent configure the repeat options repeat by variable line repeat direction horizontal max per row 2 end result the finished dashboard shows one column per production line, updating in real time operators can see input tank supply levels, mixer running state and batch progress, and storage tank availability on a single screen, without drilling into individual asset dashboards
