Node-red in workplace. What are you using it for?

Medical here: alerting, messaging, device control, data translation, automated testing, reporting

3 Likes

From Lena's pic, looks like something that would be pretty trivial in uibuilder as it now includes bootstrap-vue by default which has a very nice table handler. There are pics elsewhere in the forum of example tables from my home automation system that aren't a million miles off what you want.

Hi @seth350, I'm glad you asked that cause I've actually not implemented alarm "controls" yet -- alarms are in place but there's no way to clear them ATM :grimacing:

I actually started out with the dashboard but then dumped it -- it rose the CPU % too much and did not lend itself well to dynamically-generated content (or at least as I understand it), although I do like the dashboard. So I just have plain HTML5 interface pages and I'm using the Eclipse Paho MQTT client for communication. It's pretty slick. Ended up working out better anyway because I can point my HTML5/MQTT client page to any broker that's synced with the master broker -- cloud access.

2 Likes

Cool, there was a chap on here a while back who was trying to hook me up with some of his devs to look at how he could use Node-RED in some NHS related tools.

Hasn't quite got anywhere unfortunately but hopefully he will pop back up at some point.

1 Like

@dceejay @TotallyInformation
Not the greatest example, but this is close to what you may find in an industrial setting.

Alarms are just a log of events that have occured that the user should be aware of. The list will display alarms that are active/un-acknowledged, active/acknowledged, inactive/un-acknowledged, inactive/acknowledged. It will also display what time the alarm occured and what time it was acknowledged. This particular example allows the user to enter a comment about the alarm which is very nice.

I have wanted so bad to make this into a ui-node. I just don't have the time anymore.
Plus, to do this in a ui-node correctly, there would need to be other nodes that could be placed into parts of a flow to monitor values and then send a message containing its configured alarm message to the alarm list node. Not sure if that is possible or how to do that.

The ui_table node might be able to do this, but will lack the ability to highlight active, acknowledged, inactive alarms individually.

Sorry to derail, this just excites me lol

1 Like

Well the ui-table node can report back which cell you click... so it must be close.

It is close, correct.
What it needs is the ability to colorize individual rows based on a value in the message and highlight a row on click.

The rest of it can be done with some work.

color the lines something like this?


the 'node name and node status colors are based on the node status. I used a ui_template node to build the table and ng-if's too do the coloring

<div id="et_home">
<h2 style="text-align: center;">ET Display Home {{msg.etdh_version}}</h2>
<p style="text-align: center;">ESPeasy current release: <a href="https://github.com/letscontrolit/ESPEasy/releases/download/{{msg.esp_release}}/ESPEasy_{{msg.esp_release}}.zip" target="_blank">{{msg.esp_release}}</a> (click to download)</p>
<p style="text-align: center;">Tasmota current release: <a href="https://github.com/arendst/Sonoff-Tasmota/releases/download/v{{msg.tas_release}}/sonoff.bin" target="_blank">{{msg.tas_release}}</a> (click to download)</p>

<br/>
<table id="table" border="1">
    <tr>
        <th>Node Name</th> 
        <th>Node Status</th> 
        <th>Version</th>
        <th>RSSI</th>
        <th>Uptime</th>
        <th>Last boot cause</th>
        <th>Free RAM</th>
        <th>IP</th>
    </tr>
    <tbody style="text-align: center">
        <tr ng-repeat="row in msg.payload">
            <td ng-if='row[0] ==  1' class="device_online" >{{row[1]}}</td>
            <td ng-if='row[0] ==  0' class="device_offline">{{row[1]}}</td>
            
            <td ng-if='row[0] ==  1' class="device_online" >On Line</td>
            <td ng-if='row[0] ==  0' class="device_offline" >Off Line</td>
            
            <td ng-if="(row[8] == 'espeasy' && row[2] ==  msg.esp_release)" class="device_online"> {{row[2]}} </td>
            <td ng-if="(row[8] == 'espeasy' && row[2] !=  msg.esp_release)" class="warning_color"> {{row[2]}} </td>
            <td ng-if="(row[8] == 'tasmota' && row[2] ==  msg.tas_release)" class="device_online"> {{row[2]}} </td>
            <td ng-if="(row[8] == 'tasmota' && row[2] !=  msg.tas_release)" class="warning_color"> {{row[2]}} </td>
            
            <td ng-if='row[0] ==  1'  > {{row[7]}} </td>
            <td ng-if='row[0] ==  0'  >- - -</td>
            
            <td ng-if='row[0] ==  1'  > {{row[3]}} </td>
            <td ng-if='row[0] ==  0'  >- - - - -</td>
            
            <td ng-if='row[0] ==  1'  > {{row[4]}} </td>
            <td ng-if='row[0] ==  0'  >- - - - - - -</td>
            
            <td ng-if='row[0] ==  1'  > {{row[5]}} </td>
            <td ng-if='row[0] ==  0'  >- - - - -</td>
            <td>
                <a href="http://{{row[6]}}" target="_blank"> {{row[6]}} </a>
            </td>
        </tr>
    </tbody>
</table>

</div>

then some CSS to control the colors

    .device_offline {
        background-color: #ffa0a8;
    }
    .device_online {
        background-color: #dcffcc; 
        color: #000000;
    }
    .warning_color {
        background-color: #f3ffb8;
    }

you can see the whole flow here: 'ET Display Home' a flow to help manage your ESPeasy and Sonoff/Tasmota flashed devices (now at v0.1.13)
the dashboard tab is where to look.

1 Like

You can absolutely do this in uibuilder with bootstrap-vue:

And you can expand table rows to get details if you wish:

2 Likes

I’ve this in place in a non-uibuilder vue application. Works amazingly, from mobile type devices too (think landscape mode tablet for dashboard/reporting)

1 Like

Hi,
I used the node-red a lot at work for various prototype systems. Here is a list so far:

  1. I've used node-red in the 5G-XCAST research project ( http://5g-xcast.eu/ ). In this project I used it as middleware, integrating quite a few different platforms together. The demo we made was about multimedia public warning and we used our public warning system to generate warnings and send them to node-red (using CAP - XML over HTTP).
    Node-red would then do a bunch of interesting things:
    a) download the multimedia and store it on a linux telco box (eMBMS BM-SC) and then request the BM-SC using HTTP REST to perform a video broadcast session over 4G for the multimedia.
    b) request a spectrum management system to dynamically setup/wake-up a 4G network
    c) send a small message to Google Firebase Messaging, to alert all phones in the area to download the multimedia (using video broadcast or when not available :plain unicast - HTTP).
    *** There are on the 5G-XCAST website some video's of this demo but you won't see node-red as node-red is doing all the hard work behind the scenes :slight_smile:

  2. For the ofice 4G network, I used node-red to automate a spectrum analyzer tool - to find free gaps in LTE spectrum and with the result auto setup a lab network at the vacant spectrum (disclaimer - check your local regulatory requirements before transmitting! ).

  3. I also used node-red as a prototype multicast alert receiver, filtering out alert messages embedded into an MPEG transport stream (containing several TV channels). This worked really well and was fast to develop, also allowed some GUI to show the MPEG-TS bitrate and window with the captured text alert.

  4. Used node-red as a prototype alerting system showing KAFKA capabilities. Node-red module from step 1) would receive an alert and insert this onto the Kafka messaging bus. Then other modules build in node-red using the Kafka message bus would receive the alert and perform further processing - send alert using Twilio. This showcases the possibility to build a highly available and redundant system using Kafka - also the node-red component really benefit from that. For working with Kafka I used the node.js libraries so fair amount of programming was needed - several days :slight_smile:

Currently working on Node-red on Android but no alert related project now. This is again on video broadcasting, automating some work on Android.

Best regards and happy prototyping with node-red!

Menno Bot

5 Likes

I use node-red for :

  1. My home automation integrating Netatmo for visualizing weather and inhouse climate, controlling ventilation based on co2 and humidity, controlling lights via dashboard and amazon echo, integrating Telegram api for messaging and remote control (no vpn needed), use a lot of tasmota flashed son-offs, ...
  2. Developed a bottle filling system with nodered on a IONO-Pi instead of using PLC based system.
  3. Developed a monitoring system for koi fish ponds with NR on a IONO-Pi. Integrates twilio for alarm messages.
    Iono-pi is based on a Rpi but has robust input/outputs terminals.
10 Likes

After home automation I am now working to put control and automation in my winery's cellar.
Basically control tank temperature and wine level (need to develop right sensor) and maybe in future simple analisys of the wine itself. Anailsys problem in not of node red or electronic side, but its related to chemical sensor used in continuos mode for long time.

I am using node-red for my floor heating control using shelly HT sensors and and shelly pro 4 relays as well as one unipi /Raspberry interface board with relays and one wire sensors.

5 Likes

I am controlling my solar panels which are 120 km away from my location over the internet with node red.

6 Likes

Wow. You all got me impressed.

Do you mind sharing some details?

1 Like

Hi,

Well, it is starts with an UDP receiver node. You will have to ensure the multicast traffic is able to reach the server running node-red. After the UDP receiver node is a filter node. The alert was recognized by a unique MPEG_TS PID, so in the filter node the 99.999% of traffic was filtered out. The input was a constant data stream of roughly 20 Mbps (ATSC-1) and node-red could handle this easily.

After the PID for alert is recognized a specific protocol was used to assemble the alert together as MPEG-TS transport packets are only 188 bytes, so we need several of these packets for a complete alert text. A dedicated node was used to program this logic. The protocol used a few bytes listing the amount of packets and packet number, so some of the 188 bytes was used for protocol and the remainder real payload. This way the alert can be assembled whilst the individual packets are scattered across the MPEG-TS stream.

The alert packets were initially inserted by replacing existing stuffing / null packets which resided in the MPEG-TS stream to maintain a guaranteed bit-rate (although they could also replace lower priority content if such null packets were not there and the alert could no longer wait). All this bit requires plain coding, no drag-and-drop nodes for this but the amount of code remained small (20 lines? ).

So even using MPEG-TS for video and audio, we can also insert and extract other types of data easily.

Video encoders - TV sets do not choke on the extra alert data in MPEG-TS as they only look for PIDs containing video and audio of the channel being watched.

Greetings,
Menno


paulohlp
19 September
Wow. You all got me impressed.

Do you mind sharing some details?

4 Likes