Building a weather watchdog

So I’m trying to build a weather watchdog and I have successful events from the rapid wind and observation nodes. We have an approaching storm and a few lightning strikes have been shown on the tempest website for our weather station, but I see no raw data from the lightning strike node in node red.
station URL: Tempest

My flow:

How or what am I supposed to see for raw data from the lightning strike and rain start nodes?

When listening to the Tempest you’ll have 2 payloads coming in, one every 3 seconds (when not in power save mode) and one every minute.
The 3 second one has only wind related data, the one minute has all data. You’ll have to filter for the one you need.
This page contains all the details on what is each part in the 1 minute payload

The observations data is the one that seems to come every minute. I saw these two other nodes in the weatherflow toolkit in nodered and thought they might also provide more focused data (similar to the rapid wind):
image
What are these nodes for then?

You imported palettes and those 2 seem from the help to be rain start from sky and the lightning from the Air,
guess you’ll have to go to the author of these nodes for updates to Tempest or write your own listener :wink:

lightning finally detected just now and I got a dataset from the Lightning Strike node:

{"utcDate":"2023-04-22T14:31:03.000Z","distance":27,"energy":16783581}

This is what I needed
Now just need for the Rain start - whenever it starts raining.

In case anyone else is using this listener, I didn’t end up using the rain start node, but instead took the observation data from the tempest observation node, and used the data from msg.payload.precipitationType, which indicates rain start by indicating a positive integer. This was good enough for our needs. I’ve posted the function node below in case someone is looking for a similar solution.

var lastSentTime = context.get('lastSentTime') || 0;
var currentValue = msg.payload.precipitationType;

if (currentValue >= 1 && (Date.now() - lastSentTime) > (60 * 720 * 1000)) {
    // Send the message and update the last sent time
    context.set('lastSentTime', Date.now());
    msg.payload = "Rainfall has been detected in Bridgeberry.  Please check your car windows and outdoor items.";
    msg.topic = "Rain Alert";
    return msg;
} else {
    return null;
}
1 Like

Without knowing the algorithm on that back end that displays the lightning strikes, I will say that my sensor does not detect every strike that is displayed. I’m assuming that WF fills in missed strikes by using other sensor data.

The Tempest documentation does acknowledge that it validates detected strikes against other sources to avoid false positives, so I would have to assume they do the same and display strikes they confirmed that the sensor didn’t detect.

This is very well documented in far too many threads to even bother looking up.